From 0354b697feb874030e4322733dc22c47a2ed0f2c Mon Sep 17 00:00:00 2001 From: Cata Date: Thu, 23 May 2024 16:11:56 +0200 Subject: [PATCH 01/44] Updated github url --- CHANGELOG.md | 800 ++++++++++++++++++++-------------------- package.json | 2 +- src/struct/Constants.ts | 4 +- 3 files changed, 403 insertions(+), 403 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94206077..aa17714a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,897 +7,897 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.15](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.14...v6.1.15) +## [v6.1.15](https://github.com/cataclym/KaikiBot/compare/v6.1.14...v6.1.15) ### Commits -- Added vote text and changed import of KaikiCommandOptions [`b0721fc`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b0721fce0dbf3a14e6bc91f2a6b7249f33c7f585) -- Cooked up a new command: +flip a coin [`104acf7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/104acf714a5672b5ba07305519a6b2926fa54067) -- Vote text [`f778db7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f778db72887cf121b4e2b9e83431c4da455ad228) +- Added vote text and changed import of KaikiCommandOptions [`b0721fc`](https://github.com/cataclym/KaikiBot/commit/b0721fce0dbf3a14e6bc91f2a6b7249f33c7f585) +- Cooked up a new command: +flip a coin [`104acf7`](https://github.com/cataclym/KaikiBot/commit/104acf714a5672b5ba07305519a6b2926fa54067) +- Vote text [`f778db7`](https://github.com/cataclym/KaikiBot/commit/f778db72887cf121b4e2b9e83431c4da455ad228) -## [v6.1.14](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.13...v6.1.14) - 2024-05-14 +## [v6.1.14](https://github.com/cataclym/KaikiBot/compare/v6.1.13...v6.1.14) - 2024-05-14 ### Commits -- Updated dbl dependency [`5ad6379`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/5ad63794e5b3ad6fa18117418a08905ef2cf111f) -- Fix missing resettimer [`68b5a32`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/68b5a327cfa605ac9d4d2e57f212a3effe4dccd5) +- Updated dbl dependency [`5ad6379`](https://github.com/cataclym/KaikiBot/commit/5ad63794e5b3ad6fa18117418a08905ef2cf111f) +- Fix missing resettimer [`68b5a32`](https://github.com/cataclym/KaikiBot/commit/68b5a327cfa605ac9d4d2e57f212a3effe4dccd5) -## [v6.1.13](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.12...v6.1.13) - 2024-05-13 +## [v6.1.13](https://github.com/cataclym/KaikiBot/compare/v6.1.12...v6.1.13) - 2024-05-13 ### Commits -- Change daily->12h and amount; Linting; Update pagination; [`f479f4f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f479f4fcfc3be95886263ea7dec52c5133a91ce7) -- Utility changes, logging changes [`578a3b3`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/578a3b36019f185bae036d848d8026623c1ca8ad) +- Change daily->12h and amount; Linting; Update pagination; [`f479f4f`](https://github.com/cataclym/KaikiBot/commit/f479f4fcfc3be95886263ea7dec52c5133a91ce7) +- Utility changes, logging changes [`578a3b3`](https://github.com/cataclym/KaikiBot/commit/578a3b36019f185bae036d848d8026623c1ca8ad) -## [v6.1.12](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.11...v6.1.12) - 2024-05-11 +## [v6.1.12](https://github.com/cataclym/KaikiBot/compare/v6.1.11...v6.1.12) - 2024-05-11 ### Commits -- Re-add counting to dadbot; Linting; [`0188c04`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/0188c04f68b06dc21f2b092cba7aeac922a111e3) -- Missing embed color [`fb9a3b6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/fb9a3b66a2520c1d38958cfeb136892a905cd47c) +- Re-add counting to dadbot; Linting; [`0188c04`](https://github.com/cataclym/KaikiBot/commit/0188c04f68b06dc21f2b092cba7aeac922a111e3) +- Missing embed color [`fb9a3b6`](https://github.com/cataclym/KaikiBot/commit/fb9a3b66a2520c1d38958cfeb136892a905cd47c) -## [v6.1.11](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.9...v6.1.11) - 2024-05-07 +## [v6.1.11](https://github.com/cataclym/KaikiBot/compare/v6.1.9...v6.1.11) - 2024-05-07 ### Commits -- Added DiscordBotList stuff, what could go wrong [`31e2350`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/31e23508c44c495fe275b8a8163c47fcde76ba6a) -- Minor improvements [`f0fe301`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f0fe301657432c9deb35c94273e0775c2a6c050c) -- Fixed dbl vote rewards; Improved argument missing error! [`9663872`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/966387275874d67d74281eeb3f25ac8cfbb9b57b) +- Added DiscordBotList stuff, what could go wrong [`31e2350`](https://github.com/cataclym/KaikiBot/commit/31e23508c44c495fe275b8a8163c47fcde76ba6a) +- Minor improvements [`f0fe301`](https://github.com/cataclym/KaikiBot/commit/f0fe301657432c9deb35c94273e0775c2a6c050c) +- Fixed dbl vote rewards; Improved argument missing error! [`9663872`](https://github.com/cataclym/KaikiBot/commit/966387275874d67d74281eeb3f25ac8cfbb9b57b) -## [v6.1.9](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.8...v6.1.9) - 2024-04-30 +## [v6.1.9](https://github.com/cataclym/KaikiBot/compare/v6.1.8...v6.1.9) - 2024-04-30 ### Commits -- Minor refactor [`b5e87be`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b5e87bef739549d2ec0e5c7acf8493b057047743) -- Chore: Update mysql to solve RCE [`05655ba`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/05655ba73e88d8d7e24f77c102a0c35e14901f92) -- Chore: Update deps [`125124a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/125124a4da69bcbc92c53a8c70bad31d10188eea) +- Minor refactor [`b5e87be`](https://github.com/cataclym/KaikiBot/commit/b5e87bef739549d2ec0e5c7acf8493b057047743) +- Chore: Update mysql to solve RCE [`05655ba`](https://github.com/cataclym/KaikiBot/commit/05655ba73e88d8d7e24f77c102a0c35e14901f92) +- Chore: Update deps [`125124a`](https://github.com/cataclym/KaikiBot/commit/125124a4da69bcbc92c53a8c70bad31d10188eea) -## [v6.1.8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.7...v6.1.8) - 2024-03-30 +## [v6.1.8](https://github.com/cataclym/KaikiBot/compare/v6.1.7...v6.1.8) - 2024-03-30 ### Commits -- linting and formatting [`8cbb093`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8cbb09321c5519ac298853a9b4a16c44b5cc760f) -- Improved: startup, setav+setbanner, utils [`dee7cf8`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/dee7cf8fdbdbdebcad25ddc2810f7fe2b3da18e6) -- Update docker-image.yml [`fd2f8db`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/fd2f8db343b67b617dca831ed819f55ef8748333) +- linting and formatting [`8cbb093`](https://github.com/cataclym/KaikiBot/commit/8cbb09321c5519ac298853a9b4a16c44b5cc760f) +- Improved: startup, setav+setbanner, utils [`dee7cf8`](https://github.com/cataclym/KaikiBot/commit/dee7cf8fdbdbdebcad25ddc2810f7fe2b3da18e6) +- Update docker-image.yml [`fd2f8db`](https://github.com/cataclym/KaikiBot/commit/fd2f8db343b67b617dca831ed819f55ef8748333) -## [v6.1.7](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.6...v6.1.7) - 2024-03-25 +## [v6.1.7](https://github.com/cataclym/KaikiBot/compare/v6.1.6...v6.1.7) - 2024-03-25 ### Commits -- Create CODE_OF_CONDUCT.md [`755cbc3`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/755cbc3c995dd92feb765ada9a61ddcdcb13ccab) -- Added preliminary softban command. [`71336f5`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/71336f5fba8b9ccf9c7948954949f1c550783ddc) +- Create CODE_OF_CONDUCT.md [`755cbc3`](https://github.com/cataclym/KaikiBot/commit/755cbc3c995dd92feb765ada9a61ddcdcb13ccab) +- Added preliminary softban command. [`71336f5`](https://github.com/cataclym/KaikiBot/commit/71336f5fba8b9ccf9c7948954949f1c550783ddc) -## [v6.1.6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.5...v6.1.6) - 2024-03-17 +## [v6.1.6](https://github.com/cataclym/KaikiBot/compare/v6.1.5...v6.1.6) - 2024-03-17 ### Fixed -- hotfix #2 [`#2`](https://github.com/cataclym/Kaiki-Deishu-Bot/issues/2) +- hotfix #2 [`#2`](https://github.com/cataclym/KaikiBot/issues/2) -## [v6.1.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.4...v6.1.5) - 2024-03-17 +## [v6.1.5](https://github.com/cataclym/KaikiBot/compare/v6.1.4...v6.1.5) - 2024-03-17 ### Commits -- Hotfix for setbanner cmd [`805bee9`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/805bee9c61bdae66cc67798c03efd28d854c2a6b) +- Hotfix for setbanner cmd [`805bee9`](https://github.com/cataclym/KaikiBot/commit/805bee9c61bdae66cc67798c03efd28d854c2a6b) -## [v6.1.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.1...v6.1.4) - 2024-03-17 +## [v6.1.4](https://github.com/cataclym/KaikiBot/compare/v6.1.1...v6.1.4) - 2024-03-17 ### Commits -- hotfix for node-fetch issues [`681863d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/681863d3ab65beedf9febbe4d8c41920d33b3808) -- Fixed: emotecount.ts filter [`15ea317`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/15ea3175c353a7c9cf59d9fedf7d0437b5c484fb) -- Just a small change to emotecount formatting...! Fixes formatting errors [`2ee5d6e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2ee5d6e2da2567647a452add7b63b95cb5f30083) +- hotfix for node-fetch issues [`681863d`](https://github.com/cataclym/KaikiBot/commit/681863d3ab65beedf9febbe4d8c41920d33b3808) +- Fixed: emotecount.ts filter [`15ea317`](https://github.com/cataclym/KaikiBot/commit/15ea3175c353a7c9cf59d9fedf7d0437b5c484fb) +- Just a small change to emotecount formatting...! Fixes formatting errors [`2ee5d6e`](https://github.com/cataclym/KaikiBot/commit/2ee5d6e2da2567647a452add7b63b95cb5f30083) -## [v6.1.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.0...v6.1.1) - 2024-03-01 +## [v6.1.1](https://github.com/cataclym/KaikiBot/compare/v6.1.0...v6.1.1) - 2024-03-01 ### Commits -- #WIP: Support adding multiple todos. Re-added src files to root dir [`f6cd865`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f6cd8654ec24d307a7f792a219e73c69975a9612) -- WIP concept for todo [`aad9e52`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/aad9e52c794986ff7cd155388d8507b86ff7b388) -- Feat: Able to remove todos continuously! [`931ad4b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/931ad4b7a3c56f83968ca66157b2a1fa71934778) +- #WIP: Support adding multiple todos. Re-added src files to root dir [`f6cd865`](https://github.com/cataclym/KaikiBot/commit/f6cd8654ec24d307a7f792a219e73c69975a9612) +- WIP concept for todo [`aad9e52`](https://github.com/cataclym/KaikiBot/commit/aad9e52c794986ff7cd155388d8507b86ff7b388) +- Feat: Able to remove todos continuously! [`931ad4b`](https://github.com/cataclym/KaikiBot/commit/931ad4b7a3c56f83968ca66157b2a1fa71934778) -## [v6.1.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.103...v6.1.0) - 2024-02-27 +## [v6.1.0](https://github.com/cataclym/KaikiBot/compare/v6.0.103...v6.1.0) - 2024-02-27 ### Commits -- moved bot files for docker prep [`2566a97`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2566a9754bbdc6a5ed989cfe949f2a72418f85b3) -- nsfw rework (danbooru, e621); dadbot security; minor tweaks [`a55f9e8`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a55f9e81c90033ee1b90ac58bcfcb6e1a34ab19d) -- docker prep [`edf1014`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/edf10144ed5daebac1fd97b4fdb9a3ae80871887) +- moved bot files for docker prep [`2566a97`](https://github.com/cataclym/KaikiBot/commit/2566a9754bbdc6a5ed989cfe949f2a72418f85b3) +- nsfw rework (danbooru, e621); dadbot security; minor tweaks [`a55f9e8`](https://github.com/cataclym/KaikiBot/commit/a55f9e81c90033ee1b90ac58bcfcb6e1a34ab19d) +- docker prep [`edf1014`](https://github.com/cataclym/KaikiBot/commit/edf10144ed5daebac1fd97b4fdb9a3ae80871887) -## [v6.0.103](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.102...v6.0.103) - 2023-12-14 +## [v6.0.103](https://github.com/cataclym/KaikiBot/compare/v6.0.102...v6.0.103) - 2023-12-14 ### Commits -- QOL; Minor updates; Fixes pagination cmds; [`3970b71`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/3970b710cd4c48929e64cbd617489a26ed3d1f17) +- QOL; Minor updates; Fixes pagination cmds; [`3970b71`](https://github.com/cataclym/KaikiBot/commit/3970b710cd4c48929e64cbd617489a26ed3d1f17) -## [v6.0.102](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.101...v6.0.102) - 2023-12-13 +## [v6.0.102](https://github.com/cataclym/KaikiBot/compare/v6.0.101...v6.0.102) - 2023-12-13 ### Commits -- Since when did stats not have name property? [`2f71c3f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2f71c3f3df36f24750b1736d7f3a237590f8090c) +- Since when did stats not have name property? [`2f71c3f`](https://github.com/cataclym/KaikiBot/commit/2f71c3f3df36f24750b1736d7f3a237590f8090c) -## [v6.0.101](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.10...v6.0.101) - 2023-12-13 +## [v6.0.101](https://github.com/cataclym/KaikiBot/compare/v6.0.10...v6.0.101) - 2023-12-13 ### Commits -- Updated deps; Updated tsconfig; [`e6d1daf`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e6d1daf7f5abe19e31fca614d2dbe95ac44a7ad9) -- Fix for gecmdlist; [`1c73c64`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/1c73c649ecca26d55325d2df8b6a79af14004932) +- Updated deps; Updated tsconfig; [`e6d1daf`](https://github.com/cataclym/KaikiBot/commit/e6d1daf7f5abe19e31fca614d2dbe95ac44a7ad9) +- Fix for gecmdlist; [`1c73c64`](https://github.com/cataclym/KaikiBot/commit/1c73c649ecca26d55325d2df8b6a79af14004932) -## [v6.0.10](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.9...v6.0.10) - 2023-11-18 +## [v6.0.10](https://github.com/cataclym/KaikiBot/compare/v6.0.9...v6.0.10) - 2023-11-18 ### Commits -- Updated issue templates; Updated deps; [`1ef8901`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/1ef89017239e0461d2f0497902bd01f1b624cff9) -- Fixes: Info & togglecategory cmds; [`9d7fb1e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9d7fb1e4a6486ca18e2e48a3903cd38d4011d5a5) +- Updated issue templates; Updated deps; [`1ef8901`](https://github.com/cataclym/KaikiBot/commit/1ef89017239e0461d2f0497902bd01f1b624cff9) +- Fixes: Info & togglecategory cmds; [`9d7fb1e`](https://github.com/cataclym/KaikiBot/commit/9d7fb1e4a6486ca18e2e48a3903cd38d4011d5a5) -## [v6.0.9](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.8...v6.0.9) - 2023-11-18 +## [v6.0.9](https://github.com/cataclym/KaikiBot/compare/v6.0.8...v6.0.9) - 2023-11-18 ### Commits -- Removed google command and related dependencies; Fixed mcping and random commands. [`70bad8f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/70bad8f6376780979aab98966515ce931cc4e416) -- Updated deps [`e45baa0`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e45baa05a1752268e2d80b683f46388aad49a1b8) -- Added girl cmd; Updated NekosAPI(v3) endpoint for catgirl [`cdc71ba`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/cdc71ba839e88dd63ee3505c248b84d6d844c218) +- Removed google command and related dependencies; Fixed mcping and random commands. [`70bad8f`](https://github.com/cataclym/KaikiBot/commit/70bad8f6376780979aab98966515ce931cc4e416) +- Updated deps [`e45baa0`](https://github.com/cataclym/KaikiBot/commit/e45baa05a1752268e2d80b683f46388aad49a1b8) +- Added girl cmd; Updated NekosAPI(v3) endpoint for catgirl [`cdc71ba`](https://github.com/cataclym/KaikiBot/commit/cdc71ba839e88dd63ee3505c248b84d6d844c218) -## [v6.0.8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.7...v6.0.8) - 2023-10-13 +## [v6.0.8](https://github.com/cataclym/KaikiBot/compare/v6.0.7...v6.0.8) - 2023-10-13 ### Commits -- Turns out I need node-fetch types [`da7a08b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/da7a08b5f7852336ca65dd10cf92f179daec2229) +- Turns out I need node-fetch types [`da7a08b`](https://github.com/cataclym/KaikiBot/commit/da7a08b5f7852336ca65dd10cf92f179daec2229) -## [v6.0.7](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.6...v6.0.7) - 2023-10-13 +## [v6.0.7](https://github.com/cataclym/KaikiBot/compare/v6.0.6...v6.0.7) - 2023-10-13 ### Commits -- fix for nekosapi endpoint [`82fc923`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/82fc923a4c7cec62cf49ddca15b3037d9d4bb2af) -- Minor updates: removed node-fetch, added exit msgs, added cmdstats [`8728245`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/87282457b138060f2f342bdf41b44063268f834b) -- Feature update: help shows flags if applicable [`5f1b2cb`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/5f1b2cb886a2ed6c912e71e60878cda742b718cd) +- fix for nekosapi endpoint [`82fc923`](https://github.com/cataclym/KaikiBot/commit/82fc923a4c7cec62cf49ddca15b3037d9d4bb2af) +- Minor updates: removed node-fetch, added exit msgs, added cmdstats [`8728245`](https://github.com/cataclym/KaikiBot/commit/87282457b138060f2f342bdf41b44063268f834b) +- Feature update: help shows flags if applicable [`5f1b2cb`](https://github.com/cataclym/KaikiBot/commit/5f1b2cb886a2ed6c912e71e60878cda742b718cd) -## [v6.0.6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.5...v6.0.6) - 2023-08-29 +## [v6.0.6](https://github.com/cataclym/KaikiBot/compare/v6.0.5...v6.0.6) - 2023-08-29 ### Commits -- Feature update: color can show up to 10 colors [`3669aa3`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/3669aa388997320035c8653b53e931d2844c3e04) +- Feature update: color can show up to 10 colors [`3669aa3`](https://github.com/cataclym/KaikiBot/commit/3669aa388997320035c8653b53e931d2844c3e04) -## [v6.0.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.4...v6.0.5) - 2023-08-27 +## [v6.0.5](https://github.com/cataclym/KaikiBot/compare/v6.0.4...v6.0.5) - 2023-08-27 ### Commits -- Updated deps, stringified botconfig values [`0cf12b3`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/0cf12b3f3bae5c3c595383a1383b10897949939c) -- this wasn't finished yet [`e309724`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e309724d061a06ba9edefa8a4d3a1b3dd127c2e9) -- Fixed emote react triggers with space not working [`175813c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/175813c4e471cf3c9e4197f84cf16c71026dd6d6) +- Updated deps, stringified botconfig values [`0cf12b3`](https://github.com/cataclym/KaikiBot/commit/0cf12b3f3bae5c3c595383a1383b10897949939c) +- this wasn't finished yet [`e309724`](https://github.com/cataclym/KaikiBot/commit/e309724d061a06ba9edefa8a4d3a1b3dd127c2e9) +- Fixed emote react triggers with space not working [`175813c`](https://github.com/cataclym/KaikiBot/commit/175813c4e471cf3c9e4197f84cf16c71026dd6d6) -## [v6.0.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.3...v6.0.4) - 2023-07-24 +## [v6.0.4](https://github.com/cataclym/KaikiBot/compare/v6.0.3...v6.0.4) - 2023-07-24 ### Commits -- Added placeholders to say cmd + Fixes for pagination [`e67383b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e67383b1302942395fa55324e537cfb174622daf) -- Added color to cmd logging [`1a7e5e3`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/1a7e5e395d8480ce3515b87fadf331ee93aa3a8c) -- Fix todo page argument always being 0. [`9e48dfe`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9e48dfe05c4a2d0fe9e09fa446a64fe168edfb06) +- Added placeholders to say cmd + Fixes for pagination [`e67383b`](https://github.com/cataclym/KaikiBot/commit/e67383b1302942395fa55324e537cfb174622daf) +- Added color to cmd logging [`1a7e5e3`](https://github.com/cataclym/KaikiBot/commit/1a7e5e395d8480ce3515b87fadf331ee93aa3a8c) +- Fix todo page argument always being 0. [`9e48dfe`](https://github.com/cataclym/KaikiBot/commit/9e48dfe05c4a2d0fe9e09fa446a64fe168edfb06) -## [v6.0.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.2...v6.0.3) - 2023-07-24 +## [v6.0.3](https://github.com/cataclym/KaikiBot/compare/v6.0.2...v6.0.3) - 2023-07-24 ### Commits -- Fixed dadbot excluded channels not working. Cleaned internal functions. [`d9c09ec`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d9c09ec385e7c40e4a7c23bd94e1ecad92ff044d) -- Fix for error in logging. Import correctly [`d04f3a4`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d04f3a453354500c086dc9dded3c617846d8847c) -- Fix for error in logging. Import correctly [`2b80eff`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2b80eff1afdb5993ac251feb8c93dcc919572822) +- Fixed dadbot excluded channels not working. Cleaned internal functions. [`d9c09ec`](https://github.com/cataclym/KaikiBot/commit/d9c09ec385e7c40e4a7c23bd94e1ecad92ff044d) +- Fix for error in logging. Import correctly [`d04f3a4`](https://github.com/cataclym/KaikiBot/commit/d04f3a453354500c086dc9dded3c617846d8847c) +- Fix for error in logging. Import correctly [`2b80eff`](https://github.com/cataclym/KaikiBot/commit/2b80eff1afdb5993ac251feb8c93dcc919572822) -## [v6.0.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.1...v6.0.2) - 2023-07-23 +## [v6.0.2](https://github.com/cataclym/KaikiBot/compare/v6.0.1...v6.0.2) - 2023-07-23 ### Commits -- Moved KaikiUtil. Fixed error in stickyroles logging [`c720032`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c720032694c00816678e0e729a41f7a667efd404) +- Moved KaikiUtil. Fixed error in stickyroles logging [`c720032`](https://github.com/cataclym/KaikiBot/commit/c720032694c00816678e0e729a41f7a667efd404) -## [v6.0.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.0...v6.0.1) - 2023-07-22 +## [v6.0.1](https://github.com/cataclym/KaikiBot/compare/v6.0.0...v6.0.1) - 2023-07-22 ### Commits -- Updated dependencies. Fixes interactions. [`6d03e02`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6d03e02c2c33bb1c5ff0177eba38f6a7128f0fe0) -- Added default greet/bye messages. Listeners use event literals [`156d981`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/156d981556e53ca4ae986d21bb68b1b3da593a89) -- Fixed a CRUD error with todo [`c0c7358`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c0c73586a701e2b5d252aba604e4cc9dac862b6e) +- Updated dependencies. Fixes interactions. [`6d03e02`](https://github.com/cataclym/KaikiBot/commit/6d03e02c2c33bb1c5ff0177eba38f6a7128f0fe0) +- Added default greet/bye messages. Listeners use event literals [`156d981`](https://github.com/cataclym/KaikiBot/commit/156d981556e53ca4ae986d21bb68b1b3da593a89) +- Fixed a CRUD error with todo [`c0c7358`](https://github.com/cataclym/KaikiBot/commit/c0c73586a701e2b5d252aba604e4cc9dac862b6e) -## [v6.0.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.6.5...v6.0.0) - 2023-07-22 +## [v6.0.0](https://github.com/cataclym/KaikiBot/compare/v5.6.5...v6.0.0) - 2023-07-22 ### Commits -- Update deps [`cfbdec2`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/cfbdec2d16d4ed75ca5551304081bdf72df100c6) -- sapphire commands +++ [`dd0009e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/dd0009e91c8985599363a4b640f18bb608281591) -- Sapphire commands ++++ [`b00189b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b00189b4f7675c60c8d34428e8dfdfa3bbf62a88) +- Update deps [`cfbdec2`](https://github.com/cataclym/KaikiBot/commit/cfbdec2d16d4ed75ca5551304081bdf72df100c6) +- sapphire commands +++ [`dd0009e`](https://github.com/cataclym/KaikiBot/commit/dd0009e91c8985599363a4b640f18bb608281591) +- Sapphire commands ++++ [`b00189b`](https://github.com/cataclym/KaikiBot/commit/b00189b4f7675c60c8d34428e8dfdfa3bbf62a88) -## [v5.6.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.6.4...v5.6.5) - 2023-04-29 +## [v5.6.5](https://github.com/cataclym/KaikiBot/compare/v5.6.4...v5.6.5) - 2023-04-29 ### Commits -- Fixed a CRUD error with todo [`c0c7358`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c0c73586a701e2b5d252aba604e4cc9dac862b6e) -- Disabled remove button when list is empty [`a6658f6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a6658f6c97d5fcd7965066f83349e8cb3aaec7a3) +- Fixed a CRUD error with todo [`c0c7358`](https://github.com/cataclym/KaikiBot/commit/c0c73586a701e2b5d252aba604e4cc9dac862b6e) +- Disabled remove button when list is empty [`a6658f6`](https://github.com/cataclym/KaikiBot/commit/a6658f6c97d5fcd7965066f83349e8cb3aaec7a3) -## [v5.6.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.6.3...v5.6.4) - 2023-04-15 +## [v5.6.4](https://github.com/cataclym/KaikiBot/compare/v5.6.3...v5.6.4) - 2023-04-15 ### Commits -- Updated dependencies. Fixes interactions. [`6d03e02`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6d03e02c2c33bb1c5ff0177eba38f6a7128f0fe0) -- Added cache for image APIs [`b871682`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b871682e9d4fb9b59c12ae2ef417a7bffdb6fa9a) -- Added ascii logo on boot [`9befd03`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9befd0321e27ef7f82370dc09073c08f1f05db60) +- Updated dependencies. Fixes interactions. [`6d03e02`](https://github.com/cataclym/KaikiBot/commit/6d03e02c2c33bb1c5ff0177eba38f6a7128f0fe0) +- Added cache for image APIs [`b871682`](https://github.com/cataclym/KaikiBot/commit/b871682e9d4fb9b59c12ae2ef417a7bffdb6fa9a) +- Added ascii logo on boot [`9befd03`](https://github.com/cataclym/KaikiBot/commit/9befd0321e27ef7f82370dc09073c08f1f05db60) -## [v5.6.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.6.2...v5.6.3) - 2023-02-25 +## [v5.6.3](https://github.com/cataclym/KaikiBot/compare/v5.6.2...v5.6.3) - 2023-02-25 ### Commits -- Fix: Daily will work on users who arent in db. [`5e3683c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/5e3683c36076c9d1d3ea4f2ccdad8fd9ebbacad3) -- Update: lb will now display # position [`83772a1`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/83772a14440fbe196664291cd71572ce7b76c07c) +- Fix: Daily will work on users who arent in db. [`5e3683c`](https://github.com/cataclym/KaikiBot/commit/5e3683c36076c9d1d3ea4f2ccdad8fd9ebbacad3) +- Update: lb will now display # position [`83772a1`](https://github.com/cataclym/KaikiBot/commit/83772a14440fbe196664291cd71572ce7b76c07c) -## [v5.6.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.6.1...v5.6.2) - 2023-02-21 +## [v5.6.2](https://github.com/cataclym/KaikiBot/compare/v5.6.1...v5.6.2) - 2023-02-21 ### Commits -- work on adding components [`901429c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/901429c56467b71f99655933e8abd5e160a16033) -- Finished cmdlist interaction code [`90410aa`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/90410aa0a2afbe3704acaf5ca093cd55ad121d70) -- Removed deprecated guild features [`98ff85c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/98ff85c77d4e5a9fc03c33bf3d19ab8b1168c593) +- work on adding components [`901429c`](https://github.com/cataclym/KaikiBot/commit/901429c56467b71f99655933e8abd5e160a16033) +- Finished cmdlist interaction code [`90410aa`](https://github.com/cataclym/KaikiBot/commit/90410aa0a2afbe3704acaf5ca093cd55ad121d70) +- Removed deprecated guild features [`98ff85c`](https://github.com/cataclym/KaikiBot/commit/98ff85c77d4e5a9fc03c33bf3d19ab8b1168c593) -## [v5.6.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.6.0...v5.6.1) - 2023-02-19 +## [v5.6.1](https://github.com/cataclym/KaikiBot/compare/v5.6.0...v5.6.1) - 2023-02-19 ### Commits -- Added autocomplete to neofetch [`e2c7e60`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e2c7e60ff7a1e28e57de782f413a95d19f354782) -- Chore: eslint sort imports [`ba07dcb`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/ba07dcb474386ef1b4b0136cad91352cddaa6e79) -- Fixed: gencmdlist including subcommands [`da554de`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/da554def8f98466c173175511233cd471e25891d) +- Added autocomplete to neofetch [`e2c7e60`](https://github.com/cataclym/KaikiBot/commit/e2c7e60ff7a1e28e57de782f413a95d19f354782) +- Chore: eslint sort imports [`ba07dcb`](https://github.com/cataclym/KaikiBot/commit/ba07dcb474386ef1b4b0136cad91352cddaa6e79) +- Fixed: gencmdlist including subcommands [`da554de`](https://github.com/cataclym/KaikiBot/commit/da554def8f98466c173175511233cd471e25891d) -## [v5.6.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.5.2...v5.6.0) - 2023-02-17 +## [v5.6.0](https://github.com/cataclym/KaikiBot/compare/v5.5.2...v5.6.0) - 2023-02-17 ### Commits -- Fixed error on missing permissions for greetings [`a2f5529`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a2f5529456de9060a02b29d1846278803cd8bf31) -- Fixed a vulnerability [`43bb9f4`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/43bb9f4d2f77a7d8b77812a056aed4fca5cfa7be) -- Fixed Anime command not loading + Added Images category description [`5e1e524`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/5e1e524e15ffe8ca87ea23437c2a47ea696d3114) +- Fixed error on missing permissions for greetings [`a2f5529`](https://github.com/cataclym/KaikiBot/commit/a2f5529456de9060a02b29d1846278803cd8bf31) +- Fixed a vulnerability [`43bb9f4`](https://github.com/cataclym/KaikiBot/commit/43bb9f4d2f77a7d8b77812a056aed4fca5cfa7be) +- Fixed Anime command not loading + Added Images category description [`5e1e524`](https://github.com/cataclym/KaikiBot/commit/5e1e524e15ffe8ca87ea23437c2a47ea696d3114) -## [v5.5.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.5.1...v5.5.2) - 2023-02-16 +## [v5.5.2](https://github.com/cataclym/KaikiBot/compare/v5.5.1...v5.5.2) - 2023-02-16 ### Fixed -- setcolor hotfix #1 [`#1`](https://github.com/cataclym/Kaiki-Deishu-Bot/issues/1) +- setcolor hotfix #1 [`#1`](https://github.com/cataclym/KaikiBot/issues/1) -## [v5.5.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.5.0...v5.5.1) - 2023-02-09 +## [v5.5.1](https://github.com/cataclym/KaikiBot/compare/v5.5.0...v5.5.1) - 2023-02-09 ### Commits -- Minor cleanup and edits to emote internals [`ab6b7fd`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/ab6b7fd606d9d22cde965ec9f981caba860a8388) -- Moved Anilist GrapQL variables to its own class [`09b0345`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/09b0345f539c5c4198dc8cacb79abd9d2e66c45c) -- Added support button [`b12e63e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b12e63e53b8e7c50449b446c773c6e1ad2717d2a) +- Minor cleanup and edits to emote internals [`ab6b7fd`](https://github.com/cataclym/KaikiBot/commit/ab6b7fd606d9d22cde965ec9f981caba860a8388) +- Moved Anilist GrapQL variables to its own class [`09b0345`](https://github.com/cataclym/KaikiBot/commit/09b0345f539c5c4198dc8cacb79abd9d2e66c45c) +- Added support button [`b12e63e`](https://github.com/cataclym/KaikiBot/commit/b12e63e53b8e7c50449b446c773c6e1ad2717d2a) -## [v5.5.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.6...v5.5.0) - 2023-02-07 +## [v5.5.0](https://github.com/cataclym/KaikiBot/compare/v5.4.6...v5.5.0) - 2023-02-07 ### Commits -- Removed unnecessary type packages and bloat [`c4c25bd`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c4c25bd42f953f2b545194f9457de2c753f3cfc7) -- Updated dependencies [`d9e2790`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d9e2790f80b5a479de705c6340145f62e72c1216) -- Changed: how addEmote works internally [`c75c2d2`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c75c2d20e614b17814099cbb0e9a9f8e702fa377) +- Removed unnecessary type packages and bloat [`c4c25bd`](https://github.com/cataclym/KaikiBot/commit/c4c25bd42f953f2b545194f9457de2c753f3cfc7) +- Updated dependencies [`d9e2790`](https://github.com/cataclym/KaikiBot/commit/d9e2790f80b5a479de705c6340145f62e72c1216) +- Changed: how addEmote works internally [`c75c2d2`](https://github.com/cataclym/KaikiBot/commit/c75c2d20e614b17814099cbb0e9a9f8e702fa377) -## [v5.4.6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.5...v5.4.6) - 2023-01-28 +## [v5.4.6](https://github.com/cataclym/KaikiBot/compare/v5.4.5...v5.4.6) - 2023-01-28 ### Merged -- Add some new shit [`#56`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/56) -- Master [`#55`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/55) +- Add some new shit [`#56`](https://github.com/cataclym/KaikiBot/pull/56) +- Master [`#55`](https://github.com/cataclym/KaikiBot/pull/55) ### Commits -- Updated discord.js v14.7.1 [`879f8b9`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/879f8b93250a4c071833cde7993dabb76dd48d14) -- Removed unnecessary check in dadbot [`6123045`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/61230459a1c42a3dbba661630808f5e5449d32fd) +- Updated discord.js v14.7.1 [`879f8b9`](https://github.com/cataclym/KaikiBot/commit/879f8b93250a4c071833cde7993dabb76dd48d14) +- Removed unnecessary check in dadbot [`6123045`](https://github.com/cataclym/KaikiBot/commit/61230459a1c42a3dbba661630808f5e5449d32fd) -## [v5.4.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.4...v5.4.5) - 2023-01-08 +## [v5.4.5](https://github.com/cataclym/KaikiBot/compare/v5.4.4...v5.4.5) - 2023-01-08 ### Commits -- Fix: AddEmote error not finding 'execFile' [`b06c77d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b06c77da7c64234c9404d6f15a2a48a6342abda7) -- Changed package.json [`c29de4d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c29de4dce5fdbe15d19701eda18ebc90b7da70f2) +- Fix: AddEmote error not finding 'execFile' [`b06c77d`](https://github.com/cataclym/KaikiBot/commit/b06c77da7c64234c9404d6f15a2a48a6342abda7) +- Changed package.json [`c29de4d`](https://github.com/cataclym/KaikiBot/commit/c29de4dce5fdbe15d19701eda18ebc90b7da70f2) -## [v5.4.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.3...v5.4.4) - 2023-01-07 +## [v5.4.4](https://github.com/cataclym/KaikiBot/compare/v5.4.3...v5.4.4) - 2023-01-07 ### Commits -- Fix: catgirl command works again [`b59de8d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b59de8d858a34e7d1d39f8080f9e1cdd9d462904) +- Fix: catgirl command works again [`b59de8d`](https://github.com/cataclym/KaikiBot/commit/b59de8d858a34e7d1d39f8080f9e1cdd9d462904) -## [v5.4.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.2...v5.4.3) - 2023-01-07 +## [v5.4.3](https://github.com/cataclym/KaikiBot/compare/v5.4.2...v5.4.3) - 2023-01-07 ### Commits -- Added: deregisrer - command to disable commands [`c239fa6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c239fa6b553bbba73f276bb16e0a8b9c58e7815e) +- Added: deregisrer - command to disable commands [`c239fa6`](https://github.com/cataclym/KaikiBot/commit/c239fa6b553bbba73f276bb16e0a8b9c58e7815e) -## [v5.4.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.1...v5.4.2) - 2023-01-06 +## [v5.4.2](https://github.com/cataclym/KaikiBot/compare/v5.4.1...v5.4.2) - 2023-01-06 ### Commits -- Hotfix: hex color arguments failed to parse [`5878e19`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/5878e19abd97921657f01483862e30c5e6376012) +- Hotfix: hex color arguments failed to parse [`5878e19`](https://github.com/cataclym/KaikiBot/commit/5878e19abd97921657f01483862e30c5e6376012) -## [v5.4.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.0...v5.4.1) - 2023-01-06 +## [v5.4.1](https://github.com/cataclym/KaikiBot/compare/v5.4.0...v5.4.1) - 2023-01-06 -## [v5.4.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.8...v5.4.0) - 2023-01-06 +## [v5.4.0](https://github.com/cataclym/KaikiBot/compare/v5.3.8...v5.4.0) - 2023-01-06 ### Commits -- Try to make generic imageapi class check endpoint aliases... [`b18ecb3`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b18ecb3af2b582ed915f3eba034b4042ad8a36f7) -- Fixes non secure string argument [`6c16d3e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6c16d3ed933ef45da13a9630f5f09892bb278eef) -- More type safe ImageAPIs [`9a09f2c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9a09f2cedc5c5f5c0c21408adffe5611d648cc62) +- Try to make generic imageapi class check endpoint aliases... [`b18ecb3`](https://github.com/cataclym/KaikiBot/commit/b18ecb3af2b582ed915f3eba034b4042ad8a36f7) +- Fixes non secure string argument [`6c16d3e`](https://github.com/cataclym/KaikiBot/commit/6c16d3ed933ef45da13a9630f5f09892bb278eef) +- More type safe ImageAPIs [`9a09f2c`](https://github.com/cataclym/KaikiBot/commit/9a09f2cedc5c5f5c0c21408adffe5611d648cc62) -## [v5.3.8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.7...v5.3.8) - 2022-12-23 +## [v5.3.8](https://github.com/cataclym/KaikiBot/compare/v5.3.7...v5.3.8) - 2022-12-23 ### Commits -- Added: Serverlist command [`304dda7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/304dda747c340e3e11602d7c659a5d4141187958) -- Moved slash cmd functions to dedicated class. [`bcb7a34`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/bcb7a34bfe89aac788747d25f7c180c90a0567b9) -- Changed: Makes permission error ephemeral if its triggered by slash cmd [`956fcd1`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/956fcd1f3ccb6e3c1b47c5ba60800e3f36d0ced8) +- Added: Serverlist command [`304dda7`](https://github.com/cataclym/KaikiBot/commit/304dda747c340e3e11602d7c659a5d4141187958) +- Moved slash cmd functions to dedicated class. [`bcb7a34`](https://github.com/cataclym/KaikiBot/commit/bcb7a34bfe89aac788747d25f7c180c90a0567b9) +- Changed: Makes permission error ephemeral if its triggered by slash cmd [`956fcd1`](https://github.com/cataclym/KaikiBot/commit/956fcd1f3ccb6e3c1b47c5ba60800e3f36d0ced8) -## [v5.3.7](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.6...v5.3.7) - 2022-12-22 +## [v5.3.7](https://github.com/cataclym/KaikiBot/compare/v5.3.6...v5.3.7) - 2022-12-22 ### Commits -- Minor changes [`eb0944f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/eb0944fd66c4c99dc90ccf07e0362460b4c6a88d) -- Changed: rolelist more readable [`cdc73a6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/cdc73a6da082a6657390558a174330aef1583fed) -- renamed some functions [`ca9df9d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/ca9df9dbab629601762514e73fdca27f3535b36f) +- Minor changes [`eb0944f`](https://github.com/cataclym/KaikiBot/commit/eb0944fd66c4c99dc90ccf07e0362460b4c6a88d) +- Changed: rolelist more readable [`cdc73a6`](https://github.com/cataclym/KaikiBot/commit/cdc73a6da082a6657390558a174330aef1583fed) +- renamed some functions [`ca9df9d`](https://github.com/cataclym/KaikiBot/commit/ca9df9dbab629601762514e73fdca27f3535b36f) -## [v5.3.6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.5...v5.3.6) - 2022-12-21 +## [v5.3.6](https://github.com/cataclym/KaikiBot/compare/v5.3.5...v5.3.6) - 2022-12-21 ### Commits -- Removed redundant dependencies. [`06e1217`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/06e121792f39ec4f778ab6cede565cf7f06282fd) -- Renamed Interfaces/files [`bf640cd`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/bf640cda18136142550703c573ef0926e451b4c7) -- Forced Ready state on client [`95421e5`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/95421e55e9e7c2a0b5fc015fb99475d0eb8a5db2) +- Removed redundant dependencies. [`06e1217`](https://github.com/cataclym/KaikiBot/commit/06e121792f39ec4f778ab6cede565cf7f06282fd) +- Renamed Interfaces/files [`bf640cd`](https://github.com/cataclym/KaikiBot/commit/bf640cda18136142550703c573ef0926e451b4c7) +- Forced Ready state on client [`95421e5`](https://github.com/cataclym/KaikiBot/commit/95421e55e9e7c2a0b5fc015fb99475d0eb8a5db2) -## [v5.3.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.4...v5.3.5) - 2022-12-19 +## [v5.3.5](https://github.com/cataclym/KaikiBot/compare/v5.3.4...v5.3.5) - 2022-12-19 ### Commits -- Changed: update build time is allowed to be 5 minutes - Extended timeout [`6eddcad`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6eddcadb7f352722e6d5f39910663c67f7d0318d) -- I am blind. [`a82a1de`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a82a1de09db54d16f248900f2244652d760b4a2c) +- Changed: update build time is allowed to be 5 minutes - Extended timeout [`6eddcad`](https://github.com/cataclym/KaikiBot/commit/6eddcadb7f352722e6d5f39910663c67f7d0318d) +- I am blind. [`a82a1de`](https://github.com/cataclym/KaikiBot/commit/a82a1de09db54d16f248900f2244652d760b4a2c) -## [v5.3.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.3...v5.3.4) - 2022-12-19 +## [v5.3.4](https://github.com/cataclym/KaikiBot/compare/v5.3.3...v5.3.4) - 2022-12-19 ### Commits -- Removed functions.ts file - Moved them to their respective files. [`cecee68`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/cecee6837d90379034a1fad803106ec50d2ae8b8) -- Set no required permissions for exclude command [`6bd3159`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6bd3159aa6f714f5fb901a6d03bf1245f43270f3) +- Removed functions.ts file - Moved them to their respective files. [`cecee68`](https://github.com/cataclym/KaikiBot/commit/cecee6837d90379034a1fad803106ec50d2ae8b8) +- Set no required permissions for exclude command [`6bd3159`](https://github.com/cataclym/KaikiBot/commit/6bd3159aa6f714f5fb901a6d03bf1245f43270f3) -## [v5.3.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.2...v5.3.3) - 2022-12-18 +## [v5.3.3](https://github.com/cataclym/KaikiBot/compare/v5.3.2...v5.3.3) - 2022-12-18 ### Commits -- Locked to guild and no userperms [`5beb47d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/5beb47de7f00fb831d63bf166bee619a10c9103c) +- Locked to guild and no userperms [`5beb47d`](https://github.com/cataclym/KaikiBot/commit/5beb47de7f00fb831d63bf166bee619a10c9103c) -## [v5.3.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.1...v5.3.2) - 2022-12-18 +## [v5.3.2](https://github.com/cataclym/KaikiBot/compare/v5.3.1...v5.3.2) - 2022-12-18 ### Commits -- ooops [`64d95ce`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/64d95ce3bacabe0c58709a0987e3c886db693945) +- ooops [`64d95ce`](https://github.com/cataclym/KaikiBot/commit/64d95ce3bacabe0c58709a0987e3c886db693945) -## [v5.3.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.0...v5.3.1) - 2022-12-18 +## [v5.3.1](https://github.com/cataclym/KaikiBot/compare/v5.3.0...v5.3.1) - 2022-12-18 ### Commits -- Test global command register [`368dbf7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/368dbf790f6a72868b3bf77a0d66dc9b4ee128f1) +- Test global command register [`368dbf7`](https://github.com/cataclym/KaikiBot/commit/368dbf790f6a72868b3bf77a0d66dc9b4ee128f1) -## [v5.3.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.2.0...v5.3.0) - 2022-12-18 +## [v5.3.0](https://github.com/cataclym/KaikiBot/compare/v5.2.0...v5.3.0) - 2022-12-18 ### Commits -- Chore: Code quality. Updated naming conv. and removed unused imports [`9461a7e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9461a7e4352ba016a5bf110a4baf75885f275069) -- Fixed: info no longer returning empty map. Also added discord time. [`6b47b5c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6b47b5c40de03002e1514705aa411e07ed82c56b) +- Chore: Code quality. Updated naming conv. and removed unused imports [`9461a7e`](https://github.com/cataclym/KaikiBot/commit/9461a7e4352ba016a5bf110a4baf75885f275069) +- Fixed: info no longer returning empty map. Also added discord time. [`6b47b5c`](https://github.com/cataclym/KaikiBot/commit/6b47b5c40de03002e1514705aa411e07ed82c56b) -## [v5.2.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.19...v5.2.0) - 2022-12-14 +## [v5.2.0](https://github.com/cataclym/KaikiBot/compare/v5.1.19...v5.2.0) - 2022-12-14 ### Merged -- Merge magic_numbers into master branch [`#54`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/54) +- Merge magic_numbers into master branch [`#54`](https://github.com/cataclym/KaikiBot/pull/54) -## [v5.1.19](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.18...v5.1.19) - 2022-12-07 +## [v5.1.19](https://github.com/cataclym/KaikiBot/compare/v5.1.18...v5.1.19) - 2022-12-07 ### Commits -- Fix: presence will no longer reset randomly [`9beccb4`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9beccb43ff34af34a48201c6931d658dfbc6bc6f) -- Correctly reference scope to set presence [`a220459`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a220459e0ea8db5beccefb3c0a765eae31136b5a) +- Fix: presence will no longer reset randomly [`9beccb4`](https://github.com/cataclym/KaikiBot/commit/9beccb43ff34af34a48201c6931d658dfbc6bc6f) +- Correctly reference scope to set presence [`a220459`](https://github.com/cataclym/KaikiBot/commit/a220459e0ea8db5beccefb3c0a765eae31136b5a) -## [v5.1.18](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.17...v5.1.18) - 2022-12-05 +## [v5.1.18](https://github.com/cataclym/KaikiBot/compare/v5.1.17...v5.1.18) - 2022-12-05 ### Commits -- Fix: presence correctly set at launch [`fe444ce`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/fe444cea7f20f965f133cab80c2a270d07701c21) +- Fix: presence correctly set at launch [`fe444ce`](https://github.com/cataclym/KaikiBot/commit/fe444cea7f20f965f133cab80c2a270d07701c21) -## [v5.1.17](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.16...v5.1.17) - 2022-12-05 +## [v5.1.17](https://github.com/cataclym/KaikiBot/compare/v5.1.16...v5.1.17) - 2022-12-05 ### Commits -- Its supposed to be stdout... [`c33e705`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c33e70583e32d42fb912ce71857a42cf51609126) +- Its supposed to be stdout... [`c33e705`](https://github.com/cataclym/KaikiBot/commit/c33e70583e32d42fb912ce71857a42cf51609126) -## [v5.1.16](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.15...v5.1.16) - 2022-12-05 +## [v5.1.16](https://github.com/cataclym/KaikiBot/compare/v5.1.15...v5.1.16) - 2022-12-05 ### Commits -- Added: Update command - dedicated message for up to date [`678d3fb`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/678d3fbc1ca7ff55bcff1504b7014df27feab8d9) +- Added: Update command - dedicated message for up to date [`678d3fb`](https://github.com/cataclym/KaikiBot/commit/678d3fbc1ca7ff55bcff1504b7014df27feab8d9) -## [v5.1.15](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.14...v5.1.15) - 2022-12-05 +## [v5.1.15](https://github.com/cataclym/KaikiBot/compare/v5.1.14...v5.1.15) - 2022-12-05 ### Commits -- It was this easy??? [`d0460dc`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d0460dc5b8285cdfb884c7fb8856942647469d93) +- It was this easy??? [`d0460dc`](https://github.com/cataclym/KaikiBot/commit/d0460dc5b8285cdfb884c7fb8856942647469d93) -## [v5.1.14](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.13...v5.1.14) - 2022-12-05 +## [v5.1.14](https://github.com/cataclym/KaikiBot/compare/v5.1.13...v5.1.14) - 2022-12-05 ### Commits -- Added: economy command. Show overall currency stats [`27971fc`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/27971fc025056ff91b7d5fc44ee7054663ceb6b7) -- Fixed: empty message error when no currency in db [`43f06b8`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/43f06b80bb9abe201d15f6f6b49fb12d00b97cc4) +- Added: economy command. Show overall currency stats [`27971fc`](https://github.com/cataclym/KaikiBot/commit/27971fc025056ff91b7d5fc44ee7054663ceb6b7) +- Fixed: empty message error when no currency in db [`43f06b8`](https://github.com/cataclym/KaikiBot/commit/43f06b80bb9abe201d15f6f6b49fb12d00b97cc4) -## [v5.1.13](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.12...v5.1.13) - 2022-12-05 +## [v5.1.13](https://github.com/cataclym/KaikiBot/compare/v5.1.12...v5.1.13) - 2022-12-05 ### Commits -- ITS ALL STDOUT NOW [`71b0078`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/71b007886d0a107886313316f49be9232e17a206) +- ITS ALL STDOUT NOW [`71b0078`](https://github.com/cataclym/KaikiBot/commit/71b007886d0a107886313316f49be9232e17a206) -## [v5.1.12](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.11...v5.1.12) - 2022-12-05 +## [v5.1.12](https://github.com/cataclym/KaikiBot/compare/v5.1.11...v5.1.12) - 2022-12-05 -## [v5.1.11](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.10...v5.1.11) - 2022-12-05 +## [v5.1.11](https://github.com/cataclym/KaikiBot/compare/v5.1.10...v5.1.11) - 2022-12-05 ### Commits -- Updated prisma ^4.7.1 [`bb81dbf`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/bb81dbfd4c423efb8de7c2a0e7f8f6e30e680319) -- Oh yeah, stderr was always gonna be empty [`f6298e0`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f6298e01614c1e070ff8c62a381761d8c5d94ceb) +- Updated prisma ^4.7.1 [`bb81dbf`](https://github.com/cataclym/KaikiBot/commit/bb81dbfd4c423efb8de7c2a0e7f8f6e30e680319) +- Oh yeah, stderr was always gonna be empty [`f6298e0`](https://github.com/cataclym/KaikiBot/commit/f6298e01614c1e070ff8c62a381761d8c5d94ceb) -## [v5.1.10](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.9...v5.1.10) - 2022-12-05 +## [v5.1.10](https://github.com/cataclym/KaikiBot/compare/v5.1.9...v5.1.10) - 2022-12-05 ### Commits -- QOL [`1f8daec`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/1f8daec3a3bf90549fe436d19a4960600513fd66) +- QOL [`1f8daec`](https://github.com/cataclym/KaikiBot/commit/1f8daec3a3bf90549fe436d19a4960600513fd66) -## [v5.1.9](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.8...v5.1.9) - 2022-12-05 +## [v5.1.9](https://github.com/cataclym/KaikiBot/compare/v5.1.8...v5.1.9) - 2022-12-05 ### Commits -- Trim that output plz [`8e68df0`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8e68df0a07673b87063dff999e152e63abcfd221) +- Trim that output plz [`8e68df0`](https://github.com/cataclym/KaikiBot/commit/8e68df0a07673b87063dff999e152e63abcfd221) -## [v5.1.8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.7...v5.1.8) - 2022-12-05 +## [v5.1.8](https://github.com/cataclym/KaikiBot/compare/v5.1.7...v5.1.8) - 2022-12-05 ### Commits -- Added: missing guildfeatures [`62494bf`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/62494bfa2007113f0e3905dfb523e94afcfe8cee) +- Added: missing guildfeatures [`62494bf`](https://github.com/cataclym/KaikiBot/commit/62494bfa2007113f0e3905dfb523e94afcfe8cee) -## [v5.1.7](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.6...v5.1.7) - 2022-12-05 +## [v5.1.7](https://github.com/cataclym/KaikiBot/compare/v5.1.6...v5.1.7) - 2022-12-05 ### Commits -- Who knew git checkout outputted to stderr [`a20e1b6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a20e1b60aa78021990a5dc1de3c2ea6255ca0457) +- Who knew git checkout outputted to stderr [`a20e1b6`](https://github.com/cataclym/KaikiBot/commit/a20e1b60aa78021990a5dc1de3c2ea6255ca0457) -## [v5.1.6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.5...v5.1.6) - 2022-12-05 +## [v5.1.6](https://github.com/cataclym/KaikiBot/compare/v5.1.5...v5.1.6) - 2022-12-05 ### Commits -- more update bash [`8fe4939`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8fe493927f532e03605526c7838a1130e532e6c6) +- more update bash [`8fe4939`](https://github.com/cataclym/KaikiBot/commit/8fe493927f532e03605526c7838a1130e532e6c6) -## [v5.1.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.4...v5.1.5) - 2022-12-05 +## [v5.1.5](https://github.com/cataclym/KaikiBot/compare/v5.1.4...v5.1.5) - 2022-12-05 ### Commits -- more bash [`7e5a716`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/7e5a7168285a43d422404c433cefe5b679696de5) +- more bash [`7e5a716`](https://github.com/cataclym/KaikiBot/commit/7e5a7168285a43d422404c433cefe5b679696de5) -## [v5.1.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.3...v5.1.4) - 2022-12-05 +## [v5.1.4](https://github.com/cataclym/KaikiBot/compare/v5.1.3...v5.1.4) - 2022-12-05 ### Commits -- Remove redundant docs [`445eed9`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/445eed921ea321f42b5d3a08836168696eea4e4b) +- Remove redundant docs [`445eed9`](https://github.com/cataclym/KaikiBot/commit/445eed921ea321f42b5d3a08836168696eea4e4b) -## [v5.1.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.2...v5.1.3) - 2022-12-05 +## [v5.1.3](https://github.com/cataclym/KaikiBot/compare/v5.1.2...v5.1.3) - 2022-12-05 ### Commits -- Handle bash different to fit async [`f8f6330`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f8f63308e8d8bf8d8af8387da1068ba2d525da84) +- Handle bash different to fit async [`f8f6330`](https://github.com/cataclym/KaikiBot/commit/f8f63308e8d8bf8d8af8387da1068ba2d525da84) -## [v5.1.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.1...v5.1.2) - 2022-12-05 +## [v5.1.2](https://github.com/cataclym/KaikiBot/compare/v5.1.1...v5.1.2) - 2022-12-05 ### Commits -- Changed: Redirect error to stderr, and quote all methods [`43e5086`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/43e508696c2090d37023c7a1faa62b8dc1fa2dea) +- Changed: Redirect error to stderr, and quote all methods [`43e5086`](https://github.com/cataclym/KaikiBot/commit/43e508696c2090d37023c7a1faa62b8dc1fa2dea) -## [v5.1.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.0...v5.1.1) - 2022-12-05 +## [v5.1.1](https://github.com/cataclym/KaikiBot/compare/v5.1.0...v5.1.1) - 2022-12-05 -## [v5.1.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.24...v5.1.0) - 2022-12-05 +## [v5.1.0](https://github.com/cataclym/KaikiBot/compare/v5.0.24...v5.1.0) - 2022-12-05 ### Commits -- Changed: a loadfilter will now filter neofetch and kawaii commands [`d3f532a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d3f532a2b0a5b16cf647884781e5104320e288ae) +- Changed: a loadfilter will now filter neofetch and kawaii commands [`d3f532a`](https://github.com/cataclym/KaikiBot/commit/d3f532a2b0a5b16cf647884781e5104320e288ae) -## [v5.0.24](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.23...v5.0.24) - 2022-12-04 +## [v5.0.24](https://github.com/cataclym/KaikiBot/compare/v5.0.23...v5.0.24) - 2022-12-04 ### Commits -- Changed: rewritten update to be async [`d27e606`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d27e606aac7c750af547ea9012d426c2a8d4c961) +- Changed: rewritten update to be async [`d27e606`](https://github.com/cataclym/KaikiBot/commit/d27e606aac7c750af547ea9012d426c2a8d4c961) -## [v5.0.23](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.22...v5.0.23) - 2022-12-04 +## [v5.0.23](https://github.com/cataclym/KaikiBot/compare/v5.0.22...v5.0.23) - 2022-12-04 ### Commits -- Hotfix: Moved dependencies around to install properly in production. [`2a7be1e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2a7be1ee7e1d54efa50b6458ad7cb815e6938ff0) +- Hotfix: Moved dependencies around to install properly in production. [`2a7be1e`](https://github.com/cataclym/KaikiBot/commit/2a7be1ee7e1d54efa50b6458ad7cb815e6938ff0) -## [v5.0.22](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.21...v5.0.22) - 2022-12-04 +## [v5.0.22](https://github.com/cataclym/KaikiBot/compare/v5.0.21...v5.0.22) - 2022-12-04 ### Commits -- Fix: Made npm ci run build in foreground - Fixing update procedure [`8ac638f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8ac638f96c37adf3cdcf2b7d7cb80227aa9f0110) +- Fix: Made npm ci run build in foreground - Fixing update procedure [`8ac638f`](https://github.com/cataclym/KaikiBot/commit/8ac638f96c37adf3cdcf2b7d7cb80227aa9f0110) -## [v5.0.21](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.20...v5.0.21) - 2022-12-04 +## [v5.0.21](https://github.com/cataclym/KaikiBot/compare/v5.0.20...v5.0.21) - 2022-12-04 -## [v5.0.20](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.19...v5.0.20) - 2022-12-04 +## [v5.0.20](https://github.com/cataclym/KaikiBot/compare/v5.0.19...v5.0.20) - 2022-12-04 ### Commits -- More update patches... [`52a9166`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/52a91669a455719461da84fe09dbadf7619470a4) +- More update patches... [`52a9166`](https://github.com/cataclym/KaikiBot/commit/52a91669a455719461da84fe09dbadf7619470a4) -## [v5.0.19](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.18...v5.0.19) - 2022-12-04 +## [v5.0.19](https://github.com/cataclym/KaikiBot/compare/v5.0.18...v5.0.19) - 2022-12-04 -## [v5.0.18](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.17...v5.0.18) - 2022-12-04 +## [v5.0.18](https://github.com/cataclym/KaikiBot/compare/v5.0.17...v5.0.18) - 2022-12-04 ### Commits -- Initial migration commit [`9a3de6e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9a3de6e8abb7b0605a595f40b2ae0957d5506620) -- Minor code quality fixes [`6c3ad7c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6c3ad7c27f8b88d0cf4ea0a2f0b93bca526ee008) -- Added: Migration for defaultprefix, fixes for setting activity [`b1b4cc4`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b1b4cc411e8f92721f4d04a90155a86d3f968d68) +- Initial migration commit [`9a3de6e`](https://github.com/cataclym/KaikiBot/commit/9a3de6e8abb7b0605a595f40b2ae0957d5506620) +- Minor code quality fixes [`6c3ad7c`](https://github.com/cataclym/KaikiBot/commit/6c3ad7c27f8b88d0cf4ea0a2f0b93bca526ee008) +- Added: Migration for defaultprefix, fixes for setting activity [`b1b4cc4`](https://github.com/cataclym/KaikiBot/commit/b1b4cc411e8f92721f4d04a90155a86d3f968d68) -## [v5.0.17](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.16...v5.0.17) - 2022-11-30 +## [v5.0.17](https://github.com/cataclym/KaikiBot/compare/v5.0.16...v5.0.17) - 2022-11-30 ### Commits -- huh [`40581b1`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/40581b1f4ed381405a313fe08088ef53ad3d79f2) +- huh [`40581b1`](https://github.com/cataclym/KaikiBot/commit/40581b1f4ed381405a313fe08088ef53ad3d79f2) -## [v5.0.16](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.15...v5.0.16) - 2022-11-28 +## [v5.0.16](https://github.com/cataclym/KaikiBot/compare/v5.0.15...v5.0.16) - 2022-11-28 ### Commits -- Wrote a solid fix for stupid password error, pls work [`8a3f6ff`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8a3f6ff15361e94af21c0e921c8614b2efa7497b) +- Wrote a solid fix for stupid password error, pls work [`8a3f6ff`](https://github.com/cataclym/KaikiBot/commit/8a3f6ff15361e94af21c0e921c8614b2efa7497b) -## [v5.0.15](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.14...v5.0.15) - 2022-11-28 +## [v5.0.15](https://github.com/cataclym/KaikiBot/compare/v5.0.14...v5.0.15) - 2022-11-28 ### Commits -- Meh. [`9c47f2d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9c47f2dfa5ba1383ccff52b09f9190773d71df20) +- Meh. [`9c47f2d`](https://github.com/cataclym/KaikiBot/commit/9c47f2dfa5ba1383ccff52b09f9190773d71df20) -## [v5.0.14](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.13...v5.0.14) - 2022-11-28 +## [v5.0.14](https://github.com/cataclym/KaikiBot/compare/v5.0.13...v5.0.14) - 2022-11-28 ### Commits -- might work... [`80cee93`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/80cee93a30f53c29c7a17ae0a9d4fce0865db6ee) +- might work... [`80cee93`](https://github.com/cataclym/KaikiBot/commit/80cee93a30f53c29c7a17ae0a9d4fce0865db6ee) -## [v5.0.13](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.12...v5.0.13) - 2022-11-28 +## [v5.0.13](https://github.com/cataclym/KaikiBot/compare/v5.0.12...v5.0.13) - 2022-11-28 ### Commits -- Forgot to update a type [`426bfab`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/426bfab1918391e40d8066227363d2d9443439d7) +- Forgot to update a type [`426bfab`](https://github.com/cataclym/KaikiBot/commit/426bfab1918391e40d8066227363d2d9443439d7) -## [v5.0.12](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.11...v5.0.12) - 2022-11-28 +## [v5.0.12](https://github.com/cataclym/KaikiBot/compare/v5.0.11...v5.0.12) - 2022-11-28 ### Commits -- Hotfix to maybe fix build issue? [`2d655f2`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2d655f2142a1a053781b32046ea61b379a411eaf) +- Hotfix to maybe fix build issue? [`2d655f2`](https://github.com/cataclym/KaikiBot/commit/2d655f2142a1a053781b32046ea61b379a411eaf) -## [v5.0.11](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.10...v5.0.11) - 2022-11-28 +## [v5.0.11](https://github.com/cataclym/KaikiBot/compare/v5.0.10...v5.0.11) - 2022-11-28 ### Commits -- Hotfixes: embed color conversion re-worked and remove dist in install [`c89d45d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c89d45d52978deee83c4665a049107991610fbc3) -- Chore: code quality [`9b177be`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9b177bec945b949028da82d88611ff9166274cf7) +- Hotfixes: embed color conversion re-worked and remove dist in install [`c89d45d`](https://github.com/cataclym/KaikiBot/commit/c89d45d52978deee83c4665a049107991610fbc3) +- Chore: code quality [`9b177be`](https://github.com/cataclym/KaikiBot/commit/9b177bec945b949028da82d88611ff9166274cf7) -## [v5.0.10](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.9...v5.0.10) - 2022-11-20 +## [v5.0.10](https://github.com/cataclym/KaikiBot/compare/v5.0.9...v5.0.10) - 2022-11-20 ### Commits -- Updated pagination fixes timeout issue. Updated dtchnl internals [`e1be6df`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e1be6df28273154cffaf2d33337fe76ee5accdf2) +- Updated pagination fixes timeout issue. Updated dtchnl internals [`e1be6df`](https://github.com/cataclym/KaikiBot/commit/e1be6df28273154cffaf2d33337fe76ee5accdf2) -## [v5.0.9](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.8...v5.0.9) - 2022-11-19 +## [v5.0.9](https://github.com/cataclym/KaikiBot/compare/v5.0.8...v5.0.9) - 2022-11-19 -## [v5.0.8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.7...v5.0.8) - 2022-11-19 +## [v5.0.8](https://github.com/cataclym/KaikiBot/compare/v5.0.7...v5.0.8) - 2022-11-19 ### Commits -- Further update edits [`869978b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/869978b4b333d8dd0908b9362497ba2b2f29129f) +- Further update edits [`869978b`](https://github.com/cataclym/KaikiBot/commit/869978b4b333d8dd0908b9362497ba2b2f29129f) -## [v5.0.7](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.6...v5.0.7) - 2022-11-19 +## [v5.0.7](https://github.com/cataclym/KaikiBot/compare/v5.0.6...v5.0.7) - 2022-11-19 -## [v5.0.6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.5...v5.0.6) - 2022-11-19 +## [v5.0.6](https://github.com/cataclym/KaikiBot/compare/v5.0.5...v5.0.6) - 2022-11-19 ### Commits -- Fetch new tags [`3b8e7eb`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/3b8e7ebb184b948cfafa9b6252a4a88bf0567931) +- Fetch new tags [`3b8e7eb`](https://github.com/cataclym/KaikiBot/commit/3b8e7ebb184b948cfafa9b6252a4a88bf0567931) -## [v5.0.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.4...v5.0.5) - 2022-11-19 +## [v5.0.5](https://github.com/cataclym/KaikiBot/compare/v5.0.4...v5.0.5) - 2022-11-19 ### Commits -- Updated pagination dependency [`8b97b23`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8b97b231ed54405897bfc34e9fd3b7c944b5bb4f) -- Use EmbedBuilder.from instead of creating a new EmbedBuilder [`8cc4182`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8cc418271407329b9a38bb94fb01a6547b804b5e) +- Updated pagination dependency [`8b97b23`](https://github.com/cataclym/KaikiBot/commit/8b97b231ed54405897bfc34e9fd3b7c944b5bb4f) +- Use EmbedBuilder.from instead of creating a new EmbedBuilder [`8cc4182`](https://github.com/cataclym/KaikiBot/commit/8cc418271407329b9a38bb94fb01a6547b804b5e) -## [v5.0.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.3...v5.0.4) - 2022-11-14 +## [v5.0.4](https://github.com/cataclym/KaikiBot/compare/v5.0.3...v5.0.4) - 2022-11-14 ### Commits -- Fix: error when running exclude [`14a2ee5`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/14a2ee5f9fd9985143a9aaff136b01a041b3783c) -- Changed build to also install dependencies as it runs build after. [`f81f291`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f81f2914785ac8485eb9d06182444905b3699b1f) +- Fix: error when running exclude [`14a2ee5`](https://github.com/cataclym/KaikiBot/commit/14a2ee5f9fd9985143a9aaff136b01a041b3783c) +- Changed build to also install dependencies as it runs build after. [`f81f291`](https://github.com/cataclym/KaikiBot/commit/f81f2914785ac8485eb9d06182444905b3699b1f) -## [v5.0.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.2...v5.0.3) - 2022-11-14 +## [v5.0.3](https://github.com/cataclym/KaikiBot/compare/v5.0.2...v5.0.3) - 2022-11-14 ### Commits -- Somehow fixed dadbot (I think) [`6357672`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6357672a31dda2b5cc3ddb5519b5d0003b3233c2) +- Somehow fixed dadbot (I think) [`6357672`](https://github.com/cataclym/KaikiBot/commit/6357672a31dda2b5cc3ddb5519b5d0003b3233c2) -## [v5.0.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.1...v5.0.2) - 2022-11-14 +## [v5.0.2](https://github.com/cataclym/KaikiBot/compare/v5.0.1...v5.0.2) - 2022-11-14 ### Commits -- Fixed: enum causing errors, category commands and inhibitor fixed. [`84a60d2`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/84a60d271a1b15b6936b5f57b227c1c1fd48d0c0) +- Fixed: enum causing errors, category commands and inhibitor fixed. [`84a60d2`](https://github.com/cataclym/KaikiBot/commit/84a60d271a1b15b6936b5f57b227c1c1fd48d0c0) -## [v5.0.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-16...v5.0.1) - 2022-11-14 +## [v5.0.1](https://github.com/cataclym/KaikiBot/compare/v5.0.0-16...v5.0.1) - 2022-11-14 ### Merged -- Release v5 [`#53`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/53) +- Release v5 [`#53`](https://github.com/cataclym/KaikiBot/pull/53) ### Commits -- Removed release job. Will manually push tags instead. [`7c0190a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/7c0190adc4a5fe6abbaaa8d3ace57f3fbe9b1b62) +- Removed release job. Will manually push tags instead. [`7c0190a`](https://github.com/cataclym/KaikiBot/commit/7c0190adc4a5fe6abbaaa8d3ace57f3fbe9b1b62) -## [v5.0.0-16](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-15...v5.0.0-16) - 2022-11-14 +## [v5.0.0-16](https://github.com/cataclym/KaikiBot/compare/v5.0.0-15...v5.0.0-16) - 2022-11-14 -## [v5.0.0-15](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-13...v5.0.0-15) - 2022-11-14 +## [v5.0.0-15](https://github.com/cataclym/KaikiBot/compare/v5.0.0-13...v5.0.0-15) - 2022-11-14 ### Commits -- ignore, im dumb [`f5a2cad`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f5a2cadb42857767beda2cf0ad26cc6aef056c68) -- build.sh set to executable [`26a1ad2`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/26a1ad23a65c5f9e64769e007bf508c806de4295) +- ignore, im dumb [`f5a2cad`](https://github.com/cataclym/KaikiBot/commit/f5a2cadb42857767beda2cf0ad26cc6aef056c68) +- build.sh set to executable [`26a1ad2`](https://github.com/cataclym/KaikiBot/commit/26a1ad23a65c5f9e64769e007bf508c806de4295) -## [v5.0.0-13](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-12...v5.0.0-13) - 2022-11-14 +## [v5.0.0-13](https://github.com/cataclym/KaikiBot/compare/v5.0.0-12...v5.0.0-13) - 2022-11-14 -## [v5.0.0-12](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-11...v5.0.0-12) - 2022-11-14 +## [v5.0.0-12](https://github.com/cataclym/KaikiBot/compare/v5.0.0-11...v5.0.0-12) - 2022-11-14 ### Commits -- Sort git tags by ACTUAL version number [`48fc122`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/48fc122adeded77162d10d6e1dfdbb66f48170f9) +- Sort git tags by ACTUAL version number [`48fc122`](https://github.com/cataclym/KaikiBot/commit/48fc122adeded77162d10d6e1dfdbb66f48170f9) -## [v5.0.0-11](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-10...v5.0.0-11) - 2022-11-14 +## [v5.0.0-11](https://github.com/cataclym/KaikiBot/compare/v5.0.0-10...v5.0.0-11) - 2022-11-14 -## [v5.0.0-10](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-9...v5.0.0-10) - 2022-11-14 +## [v5.0.0-10](https://github.com/cataclym/KaikiBot/compare/v5.0.0-9...v5.0.0-10) - 2022-11-14 ### Commits -- Changed checks "hash" to "command" for POSIX compliance. [`7362fe4`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/7362fe4de3df5d703151aa275d6edfa5ec2b4379) +- Changed checks "hash" to "command" for POSIX compliance. [`7362fe4`](https://github.com/cataclym/KaikiBot/commit/7362fe4de3df5d703151aa275d6edfa5ec2b4379) -## [v5.0.0-9](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-8...v5.0.0-9) - 2022-11-14 +## [v5.0.0-9](https://github.com/cataclym/KaikiBot/compare/v5.0.0-8...v5.0.0-9) - 2022-11-14 ### Commits -- Exit with code 1 when no update is available [`21259cd`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/21259cd75ce9a11a0788bff6fbd316dd37842cf0) +- Exit with code 1 when no update is available [`21259cd`](https://github.com/cataclym/KaikiBot/commit/21259cd75ce9a11a0788bff6fbd316dd37842cf0) -## [v5.0.0-8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-7...v5.0.0-8) - 2022-11-14 +## [v5.0.0-8](https://github.com/cataclym/KaikiBot/compare/v5.0.0-7...v5.0.0-8) - 2022-11-14 ### Commits -- Added build script and button update cmd for building [`330c827`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/330c8273214136040415a22cd8e592ba91e7ae7a) -- Fix: Update needs to use __dirname instead of resolve() [`337dde0`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/337dde0c9b91bfed825b9634db7154e60ef32420) +- Added build script and button update cmd for building [`330c827`](https://github.com/cataclym/KaikiBot/commit/330c8273214136040415a22cd8e592ba91e7ae7a) +- Fix: Update needs to use __dirname instead of resolve() [`337dde0`](https://github.com/cataclym/KaikiBot/commit/337dde0c9b91bfed825b9634db7154e60ef32420) -## [v5.0.0-7](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-6...v5.0.0-7) - 2022-11-14 +## [v5.0.0-7](https://github.com/cataclym/KaikiBot/compare/v5.0.0-6...v5.0.0-7) - 2022-11-14 -## [v5.0.0-6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-5...v5.0.0-6) - 2022-11-14 +## [v5.0.0-6](https://github.com/cataclym/KaikiBot/compare/v5.0.0-5...v5.0.0-6) - 2022-11-14 ### Commits -- Added: Update cmd. (Needs to be tested) [`6d1e22d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6d1e22de1e4728db3c15c7c44b0fa91653191908) -- Update script (probably) works [`89a86e9`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/89a86e90e2b2872346fc6910ac9d39f24021afbb) +- Added: Update cmd. (Needs to be tested) [`6d1e22d`](https://github.com/cataclym/KaikiBot/commit/6d1e22de1e4728db3c15c7c44b0fa91653191908) +- Update script (probably) works [`89a86e9`](https://github.com/cataclym/KaikiBot/commit/89a86e90e2b2872346fc6910ac9d39f24021afbb) -## [v5.0.0-5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v4.0.10...v5.0.0-5) - 2022-11-09 +## [v5.0.0-5](https://github.com/cataclym/KaikiBot/compare/v4.0.10...v5.0.0-5) - 2022-11-09 ### Commits -- Code compatbility with djs14 [`2b1401b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2b1401ba4a0df994eaea7cb4a746fec10fb205ad) -- Updated dependencies for prisma and pagination [`fb24a15`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/fb24a1520215355e890f0a6b1f5bd7378870d5fd) -- Renamed embed [`b80aa55`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b80aa554cd2c13bbab1d04c20e5f7b5d8c74a513) +- Code compatbility with djs14 [`2b1401b`](https://github.com/cataclym/KaikiBot/commit/2b1401ba4a0df994eaea7cb4a746fec10fb205ad) +- Updated dependencies for prisma and pagination [`fb24a15`](https://github.com/cataclym/KaikiBot/commit/fb24a1520215355e890f0a6b1f5bd7378870d5fd) +- Renamed embed [`b80aa55`](https://github.com/cataclym/KaikiBot/commit/b80aa554cd2c13bbab1d04c20e5f7b5d8c74a513) -## [v4.0.10](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v4.0.9...v4.0.10) - 2022-06-21 +## [v4.0.10](https://github.com/cataclym/KaikiBot/compare/v4.0.9...v4.0.10) - 2022-06-21 ### Commits -- Fixed cmdslist. [`f43b32d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f43b32d82056e5a7989df60da281a393387ce52e) +- Fixed cmdslist. [`f43b32d`](https://github.com/cataclym/KaikiBot/commit/f43b32d82056e5a7989df60da281a393387ce52e) -## [v4.0.9](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v4.0.8...v4.0.9) - 2022-06-21 +## [v4.0.9](https://github.com/cataclym/KaikiBot/compare/v4.0.8...v4.0.9) - 2022-06-21 ### Commits -- updated pagination [`7ab9076`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/7ab90768d61179d2c210cf9723b3c67d0324c64a) +- updated pagination [`7ab9076`](https://github.com/cataclym/KaikiBot/commit/7ab90768d61179d2c210cf9723b3c67d0324c64a) -## [v4.0.8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/4.0.0-Gainsboro-Alpha...v4.0.8) - 2022-06-21 +## [v4.0.8](https://github.com/cataclym/KaikiBot/compare/4.0.0-Gainsboro-Alpha...v4.0.8) - 2022-06-21 ### Commits -- Updated Discord.js - Supports text channels in voice channels! [`bf96607`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/bf96607dd7c7f0973ecc38bdc6c933136b8d1481) -- Slightly changed slots interals [`aea4703`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/aea470374c36cf6c0eb5d87b6e8e27c33966b37e) -- Changed access to MySQL DB variable to a getter. [`45f3cda`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/45f3cda19501c15115fdd63b1f1dbbb4ba1a22a3) +- Updated Discord.js - Supports text channels in voice channels! [`bf96607`](https://github.com/cataclym/KaikiBot/commit/bf96607dd7c7f0973ecc38bdc6c933136b8d1481) +- Slightly changed slots interals [`aea4703`](https://github.com/cataclym/KaikiBot/commit/aea470374c36cf6c0eb5d87b6e8e27c33966b37e) +- Changed access to MySQL DB variable to a getter. [`45f3cda`](https://github.com/cataclym/KaikiBot/commit/45f3cda19501c15115fdd63b1f1dbbb4ba1a22a3) -## [4.0.0-Gainsboro-Alpha](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/4.0.0-Gainsboro...4.0.0-Gainsboro-Alpha) - 2022-04-19 +## [4.0.0-Gainsboro-Alpha](https://github.com/cataclym/KaikiBot/compare/4.0.0-Gainsboro...4.0.0-Gainsboro-Alpha) - 2022-04-19 -## [4.0.0-Gainsboro](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.7.0...4.0.0-Gainsboro) - 2022-04-26 +## [4.0.0-Gainsboro](https://github.com/cataclym/KaikiBot/compare/3.7.0...4.0.0-Gainsboro) - 2022-04-26 ### Commits -- Integrated MySQL into command inhibitor + Migration fixes [`9c16b8f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9c16b8fa9173ccf7ff47a0e65ec59a57caa5e5bd) -- linting and mikro-orm [`0f8ec39`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/0f8ec39c3254b32b4fb82e56033ee02945d7e084) -- kms [`d2bedac`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d2bedac06f0808f7f2ebcfe02c6d57cc06df6113) +- Integrated MySQL into command inhibitor + Migration fixes [`9c16b8f`](https://github.com/cataclym/KaikiBot/commit/9c16b8fa9173ccf7ff47a0e65ec59a57caa5e5bd) +- linting and mikro-orm [`0f8ec39`](https://github.com/cataclym/KaikiBot/commit/0f8ec39c3254b32b4fb82e56033ee02945d7e084) +- kms [`d2bedac`](https://github.com/cataclym/KaikiBot/commit/d2bedac06f0808f7f2ebcfe02c6d57cc06df6113) -## [3.7.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.6.0...3.7.0) - 2022-01-12 +## [3.7.0](https://github.com/cataclym/KaikiBot/compare/3.6.0...3.7.0) - 2022-01-12 ### Commits -- Untested changes. [`4b239f6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/4b239f612b0d09a34246a67da1ca211b7e8b71db) -- Slightly changed slots interals [`aea4703`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/aea470374c36cf6c0eb5d87b6e8e27c33966b37e) -- new emote category, new short date time formatting, added guildfeatures [`c7bae7a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c7bae7a6ba169131c5bdac3e612087331086a0a6) +- Untested changes. [`4b239f6`](https://github.com/cataclym/KaikiBot/commit/4b239f612b0d09a34246a67da1ca211b7e8b71db) +- Slightly changed slots interals [`aea4703`](https://github.com/cataclym/KaikiBot/commit/aea470374c36cf6c0eb5d87b6e8e27c33966b37e) +- new emote category, new short date time formatting, added guildfeatures [`c7bae7a`](https://github.com/cataclym/KaikiBot/commit/c7bae7a6ba169131c5bdac3e612087331086a0a6) -## [3.6.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.5.37-Fuchsia...3.6.0) - 2021-11-11 +## [3.6.0](https://github.com/cataclym/KaikiBot/compare/3.5.37-Fuchsia...3.6.0) - 2021-11-11 ### Commits -- Fix addemote: "gifsicle is not defined" [`c265711`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c265711894ea22b101a04fdaa5215b6bf3d82814) -- Re-added Tic-Tac-Toe for now. Featuring some minor improvements. [`b9ad9d7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b9ad9d79ef0547597ff73cf363f19d683333be6f) -- Update doc, version, removed Kaori dependency (again) [`c14f62e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c14f62e82230105629969fb25531811e6dab329d) +- Fix addemote: "gifsicle is not defined" [`c265711`](https://github.com/cataclym/KaikiBot/commit/c265711894ea22b101a04fdaa5215b6bf3d82814) +- Re-added Tic-Tac-Toe for now. Featuring some minor improvements. [`b9ad9d7`](https://github.com/cataclym/KaikiBot/commit/b9ad9d79ef0547597ff73cf363f19d683333be6f) +- Update doc, version, removed Kaori dependency (again) [`c14f62e`](https://github.com/cataclym/KaikiBot/commit/c14f62e82230105629969fb25531811e6dab329d) -## [3.5.37-Fuchsia](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.5.35-Fuchsia...3.5.37-Fuchsia) - 2021-10-09 +## [3.5.37-Fuchsia](https://github.com/cataclym/KaikiBot/compare/3.5.35-Fuchsia...3.5.37-Fuchsia) - 2021-10-09 ### Commits -- Added: custom role support for role-icon. [`3b1ea9b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/3b1ea9b9a3068d359c14f8df88587626aa131d44) -- Added DB Migration-handler and first migration script [`b34a6ab`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b34a6abecb9a486aef1d0e503a7bfbbea34707c6) -- Minor string edits [`24a297a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/24a297aef2fe0a3373c8349993f4ab213cfd8b05) +- Added: custom role support for role-icon. [`3b1ea9b`](https://github.com/cataclym/KaikiBot/commit/3b1ea9b9a3068d359c14f8df88587626aa131d44) +- Added DB Migration-handler and first migration script [`b34a6ab`](https://github.com/cataclym/KaikiBot/commit/b34a6abecb9a486aef1d0e503a7bfbbea34707c6) +- Minor string edits [`24a297a`](https://github.com/cataclym/KaikiBot/commit/24a297aef2fe0a3373c8349993f4ab213cfd8b05) -## [3.5.35-Fuchsia](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.5.23-Emerald...3.5.35-Fuchsia) - 2021-08-26 +## [3.5.35-Fuchsia](https://github.com/cataclym/KaikiBot/compare/3.5.23-Emerald...3.5.35-Fuchsia) - 2021-08-26 ### Commits -- Supports d.js v13 official release [`86ac9ac`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/86ac9acf3a1cd8c383e16117a6f23c6ef9c5a99e) -- Added daily, user's can now claim their daily allowance [`e251f7a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e251f7ab15bdc67d95a9198900ac5aae83ee8567) -- Added: manga, gencmdlist command [`e936bbf`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e936bbffbe4dcbb90644c987e08cd78c9ce2c05c) +- Supports d.js v13 official release [`86ac9ac`](https://github.com/cataclym/KaikiBot/commit/86ac9acf3a1cd8c383e16117a6f23c6ef9c5a99e) +- Added daily, user's can now claim their daily allowance [`e251f7a`](https://github.com/cataclym/KaikiBot/commit/e251f7ab15bdc67d95a9198900ac5aae83ee8567) +- Added: manga, gencmdlist command [`e936bbf`](https://github.com/cataclym/KaikiBot/commit/e936bbffbe4dcbb90644c987e08cd78c9ce2c05c) -## [3.5.23-Emerald](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.5.22-Emerald...3.5.23-Emerald) - 2021-07-27 +## [3.5.23-Emerald](https://github.com/cataclym/KaikiBot/compare/3.5.22-Emerald...3.5.23-Emerald) - 2021-07-27 ### Commits -- Updated to current development version of discord.js / akiro [`b0b1300`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b0b130009af98e3e57d5ff63cb91dc6e12975488) -- Updated dependencies [`69be49e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/69be49e69ec48594b4c44ae8e76ca98a472c93e7) -- Added KaikiCommand as a local module [`86ed3f5`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/86ed3f585b5b0495abb5aff6b2051f593c5d81ae) +- Updated to current development version of discord.js / akiro [`b0b1300`](https://github.com/cataclym/KaikiBot/commit/b0b130009af98e3e57d5ff63cb91dc6e12975488) +- Updated dependencies [`69be49e`](https://github.com/cataclym/KaikiBot/commit/69be49e69ec48594b4c44ae8e76ca98a472c93e7) +- Added KaikiCommand as a local module [`86ed3f5`](https://github.com/cataclym/KaikiBot/commit/86ed3f585b5b0495abb5aff6b2051f593c5d81ae) -## [3.5.22-Emerald](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.5.3-Fuchsia...3.5.22-Emerald) - 2021-07-11 +## [3.5.22-Emerald](https://github.com/cataclym/KaikiBot/compare/3.5.3-Fuchsia...3.5.22-Emerald) - 2021-07-11 -## [3.5.3-Fuchsia](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.5.0-Emerald...3.5.3-Fuchsia) - 2021-08-07 +## [3.5.3-Fuchsia](https://github.com/cataclym/KaikiBot/compare/3.5.0-Emerald...3.5.3-Fuchsia) - 2021-08-07 ### Merged -- Configure SAST in `.gitlab-ci.yml`, creating this file if it does not already exist [`#51`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/51) +- Configure SAST in `.gitlab-ci.yml`, creating this file if it does not already exist [`#51`](https://github.com/cataclym/KaikiBot/pull/51) ### Commits -- Updated to current development version of discord.js / akiro [`b0b1300`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b0b130009af98e3e57d5ff63cb91dc6e12975488) -- Supports d.js v13 official release [`86ac9ac`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/86ac9acf3a1cd8c383e16117a6f23c6ef9c5a99e) -- Updated dependencies [`69be49e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/69be49e69ec48594b4c44ae8e76ca98a472c93e7) +- Updated to current development version of discord.js / akiro [`b0b1300`](https://github.com/cataclym/KaikiBot/commit/b0b130009af98e3e57d5ff63cb91dc6e12975488) +- Supports d.js v13 official release [`86ac9ac`](https://github.com/cataclym/KaikiBot/commit/86ac9acf3a1cd8c383e16117a6f23c6ef9c5a99e) +- Updated dependencies [`69be49e`](https://github.com/cataclym/KaikiBot/commit/69be49e69ec48594b4c44ae8e76ca98a472c93e7) -## [3.5.0-Emerald](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.4.3-Desire...3.5.0-Emerald) - 2021-07-04 +## [3.5.0-Emerald](https://github.com/cataclym/KaikiBot/compare/3.4.3-Desire...3.5.0-Emerald) - 2021-07-04 ### Merged -- Money service implementation [`#50`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/50) +- Money service implementation [`#50`](https://github.com/cataclym/KaikiBot/pull/50) ### Commits -- Fix send() embed methods for 100 files. Casued by djs 13 [`0a60eb6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/0a60eb605ac7d7367e83a0529c81831ca4549b35) -- Added (KaikiCommand): Custom command class to support usage [`4fc2d31`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/4fc2d31f5042043c19789ce5819a440e5bc3ef20) -- update package [`55d593f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/55d593f2aef6b3af4697d088cf5b9958ad2c55b7) +- Fix send() embed methods for 100 files. Casued by djs 13 [`0a60eb6`](https://github.com/cataclym/KaikiBot/commit/0a60eb605ac7d7367e83a0529c81831ca4549b35) +- Added (KaikiCommand): Custom command class to support usage [`4fc2d31`](https://github.com/cataclym/KaikiBot/commit/4fc2d31f5042043c19789ce5819a440e5bc3ef20) +- update package [`55d593f`](https://github.com/cataclym/KaikiBot/commit/55d593f2aef6b3af4697d088cf5b9958ad2c55b7) -## [3.4.3-Desire](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.4.2-Cherry...3.4.3-Desire) - 2021-05-29 +## [3.4.3-Desire](https://github.com/cataclym/KaikiBot/compare/3.4.2-Cherry...3.4.3-Desire) - 2021-05-29 ### Commits -- Various minor edits: QoL improvements, no .js imports, API link fix [`069bfaa`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/069bfaa420da441c584f619ec99dfa3c54085203) -- removed some NPM scripts, updated TS [`ee3ad82`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/ee3ad82f7b347bcde8d72bd6d0ee0a25b46359a9) -- The final part of yeeting cache [`6be8db0`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6be8db0a171f6d2d1ce72458c699bbf06b6fd5a5) +- Various minor edits: QoL improvements, no .js imports, API link fix [`069bfaa`](https://github.com/cataclym/KaikiBot/commit/069bfaa420da441c584f619ec99dfa3c54085203) +- removed some NPM scripts, updated TS [`ee3ad82`](https://github.com/cataclym/KaikiBot/commit/ee3ad82f7b347bcde8d72bd6d0ee0a25b46359a9) +- The final part of yeeting cache [`6be8db0`](https://github.com/cataclym/KaikiBot/commit/6be8db0a171f6d2d1ce72458c699bbf06b6fd5a5) -## [3.4.2-Cherry](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.4.1-aqua...3.4.2-Cherry) - 2021-05-19 +## [3.4.2-Cherry](https://github.com/cataclym/KaikiBot/compare/3.4.1-aqua...3.4.2-Cherry) - 2021-05-19 ### Commits -- more color support [`6134f99`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6134f99d49bcdc7ef7cfad79b21e47b4bea2389e) -- v3.4.2-Cherry - Updated dependencies [`9e936f7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9e936f7a2a9a6fc0c2b9afe3c6ff7d0f18549ef2) -- package.json edits to workaround "Conflicting definitions" [`4aad7d8`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/4aad7d8feeed9fef04456edbfc53df5ccbac61f2) +- more color support [`6134f99`](https://github.com/cataclym/KaikiBot/commit/6134f99d49bcdc7ef7cfad79b21e47b4bea2389e) +- v3.4.2-Cherry - Updated dependencies [`9e936f7`](https://github.com/cataclym/KaikiBot/commit/9e936f7a2a9a6fc0c2b9afe3c6ff7d0f18549ef2) +- package.json edits to workaround "Conflicting definitions" [`4aad7d8`](https://github.com/cataclym/KaikiBot/commit/4aad7d8feeed9fef04456edbfc53df5ccbac61f2) -## [3.4.1-aqua](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.4.1-Blueberry...3.4.1-aqua) - 2021-04-06 +## [3.4.1-aqua](https://github.com/cataclym/KaikiBot/compare/3.4.1-Blueberry...3.4.1-aqua) - 2021-04-06 -## [3.4.1-Blueberry](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.3.47-r18...3.4.1-Blueberry) - 2021-05-01 +## [3.4.1-Blueberry](https://github.com/cataclym/KaikiBot/compare/3.3.47-r18...3.4.1-Blueberry) - 2021-05-01 ### Commits -- garbage p1 [`827903a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/827903ab26fff9c319176d405660a722bd02f2ea) -- Reddit Interface/model moved [`358cc84`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/358cc84ccf8057373247b1b691bf86162c8bf4bc) -- nsb [`21a6a01`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/21a6a0109ad170a4f8ce7a7cfe39d22924fff8f3) +- garbage p1 [`827903a`](https://github.com/cataclym/KaikiBot/commit/827903ab26fff9c319176d405660a722bd02f2ea) +- Reddit Interface/model moved [`358cc84`](https://github.com/cataclym/KaikiBot/commit/358cc84ccf8057373247b1b691bf86162c8bf4bc) +- nsb [`21a6a01`](https://github.com/cataclym/KaikiBot/commit/21a6a0109ad170a4f8ce7a7cfe39d22924fff8f3) -## [3.3.47-r18](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.3.46-colors...3.3.47-r18) - 2021-01-10 +## [3.3.47-r18](https://github.com/cataclym/KaikiBot/compare/3.3.46-colors...3.3.47-r18) - 2021-01-10 ### Commits -- Added: waifu.pics api commands and hex color table [`b5b4516`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b5b4516c38202c6d192b8cec0004172847bfffc3) -- Edit: distro file cleaned, sorted [`df2b39e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/df2b39efcd459a2631ac3b005e719db2cc96d656) -- Added: More waifu.pics reactions commands. [`32ca8cb`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/32ca8cba9ee4b8e4880cfae5a9653b62bcad775c) +- Added: waifu.pics api commands and hex color table [`b5b4516`](https://github.com/cataclym/KaikiBot/commit/b5b4516c38202c6d192b8cec0004172847bfffc3) +- Edit: distro file cleaned, sorted [`df2b39e`](https://github.com/cataclym/KaikiBot/commit/df2b39efcd459a2631ac3b005e719db2cc96d656) +- Added: More waifu.pics reactions commands. [`32ca8cb`](https://github.com/cataclym/KaikiBot/commit/32ca8cba9ee4b8e4880cfae5a9653b62bcad775c) -## [3.3.46-colors](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.3.43-clr...3.3.46-colors) - 2021-01-02 +## [3.3.46-colors](https://github.com/cataclym/KaikiBot/compare/3.3.43-clr...3.3.46-colors) - 2021-01-02 ### Commits -- Edit (big): Moved to own akairo fork [`279ccce`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/279cccefb230d9e5f0988a770c26e714961c8f57) -- Folder renamed, color added. [`e6a1fe0`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e6a1fe0509259eb953b8dafffb0e5291a28b08b8) -- Chore: update tscript/eslint/types [`a9e7132`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a9e713298ecb47839d35f0c044d1a18bd5410e37) +- Edit (big): Moved to own akairo fork [`279ccce`](https://github.com/cataclym/KaikiBot/commit/279cccefb230d9e5f0988a770c26e714961c8f57) +- Folder renamed, color added. [`e6a1fe0`](https://github.com/cataclym/KaikiBot/commit/e6a1fe0509259eb953b8dafffb0e5291a28b08b8) +- Chore: update tscript/eslint/types [`a9e7132`](https://github.com/cataclym/KaikiBot/commit/a9e713298ecb47839d35f0c044d1a18bd5410e37) -## [3.3.43-clr](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.3.3...3.3.43-clr) - 2020-12-09 +## [3.3.43-clr](https://github.com/cataclym/KaikiBot/compare/3.3.3...3.3.43-clr) - 2020-12-09 ### Commits -- Edit: Changed all remaining getMemberColorAsync methods + cleaned up. [`7eb1c03`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/7eb1c03d7f1a33622702b28cfbc99ada67b26811) -- Edit: A logger has been implemented. Id like to improve it. Maybe more [`0e25a8d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/0e25a8d95d42f2ddfec1a15b2500666970ad24f4) -- Added: dadBot as command [`b81e789`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b81e789ca50a077b4d1c678f91d87ea0d101fbce) +- Edit: Changed all remaining getMemberColorAsync methods + cleaned up. [`7eb1c03`](https://github.com/cataclym/KaikiBot/commit/7eb1c03d7f1a33622702b28cfbc99ada67b26811) +- Edit: A logger has been implemented. Id like to improve it. Maybe more [`0e25a8d`](https://github.com/cataclym/KaikiBot/commit/0e25a8d95d42f2ddfec1a15b2500666970ad24f4) +- Added: dadBot as command [`b81e789`](https://github.com/cataclym/KaikiBot/commit/b81e789ca50a077b4d1c678f91d87ea0d101fbce) -## [3.3.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.3.2...3.3.3) - 2020-11-27 +## [3.3.3](https://github.com/cataclym/KaikiBot/compare/3.3.2...3.3.3) - 2020-11-27 ### Commits -- Added: Changelog. [`d6cf0f1`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d6cf0f184be1646976dbdf7b7a2cd53037a050ee) -- Edit: functions => util [`2e9c4e5`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2e9c4e5062fbd622aafb572241c29e1f33237357) -- WIP: Miyano roles [`618285e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/618285e8270532713870af5fca14bb878c1b2da7) +- Added: Changelog. [`d6cf0f1`](https://github.com/cataclym/KaikiBot/commit/d6cf0f184be1646976dbdf7b7a2cd53037a050ee) +- Edit: functions => util [`2e9c4e5`](https://github.com/cataclym/KaikiBot/commit/2e9c4e5062fbd622aafb572241c29e1f33237357) +- WIP: Miyano roles [`618285e`](https://github.com/cataclym/KaikiBot/commit/618285e8270532713870af5fca14bb878c1b2da7) -## [3.3.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.0.2...3.3.2) - 2020-11-22 +## [3.3.2](https://github.com/cataclym/KaikiBot/compare/3.0.2...3.3.2) - 2020-11-22 ### Commits -- emote p2 [`10d639e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/10d639ec40ed8f052c70f366557b5d5916e84ec5) -- postgres and jimp [`831729d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/831729dc16e924e6e82fe2c8bc8701123c7255dd) -- 3.2.1: fixes to reddit / remove useless cmds / interface for reddit json [`bc14e66`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/bc14e66884c8afec41f5c930a1c96efe1b665486) +- emote p2 [`10d639e`](https://github.com/cataclym/KaikiBot/commit/10d639ec40ed8f052c70f366557b5d5916e84ec5) +- postgres and jimp [`831729d`](https://github.com/cataclym/KaikiBot/commit/831729dc16e924e6e82fe2c8bc8701123c7255dd) +- 3.2.1: fixes to reddit / remove useless cmds / interface for reddit json [`bc14e66`](https://github.com/cataclym/KaikiBot/commit/bc14e66884c8afec41f5c930a1c96efe1b665486) ## 3.0.2 - 2020-10-15 ### Merged -- Dev merger Akairo 💥 [`#46`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/46) -- 1.3.4 update, fixes and renaming [`#43`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/43) -- updated deps [`#42`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/42) -- Emotecount hotfix [`#40`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/40) -- minor Tinder list edit [`#39`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/39) -- 1.3.2 - No more bots in Tinder [`#38`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/38) -- Merge frem dev with pagination and more [`#37`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/37) -- From dev branch [`#36`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/36) -- actual ping [`#35`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/35) -- tiny fix to tiny issue [`#34`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/34) -- I wrote a big message earlier, but had to revert. This update is kind… [`#33`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/33) -- Tinder fixes, implemented lists and dislike removal [`#32`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/32) -- Fix to marry() Rolls upped to 15 [`#31`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/31) -- Added TinderDBService [`#30`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/30) -- Fix to Tinder reset time and Emotecount [`#29`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/29) -- Added time left for rolls/likes [`#28`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/28) -- Dev [`#27`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/27) -- hotfix [`#26`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/26) -- Adds tinder, holiday, emote count and much more +++ [`#25`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/25) -- oh yeah mr crabs [`#22`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/22) -- Embeds++ [`#19`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/19) -- Fixes to help and names [`#18`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/18) -- help/names ++ [`#17`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/17) -- disable command breaking help [`#16`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/16) -- Fixes to cmd and help [`#15`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/15) -- quick admin only [`#14`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/14) -- from dev [`#13`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/13) -- Updates from Dev +todo and more [`#12`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/12) -- Just checking // Seems fine [`#11`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/11) -- fixes +new commands [`#7`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/7) -- new cmd, minor fixes tweaks [`#6`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/6) -- this should work x2 [`#5`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/5) -- Pretty embeds ++ [`#4`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/4) -- From dev [`#3`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/3) -- Export func + emotereact [`#1`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/1) - -### Commits - -- Time to celebrate 🎊 [`c14bf45`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c14bf453adb42d8ecacb581aa2c366f7352c36ab) -- indents+fix for names.js [`bb1548d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/bb1548df6dab5ca1b13fdf7b5b29e31f150e1fe3) -- Converting to Akairo Update1 [`107ce41`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/107ce419f1ca0ccd9f524993c9f52eb71abd1a0e) +- Dev merger Akairo 💥 [`#46`](https://github.com/cataclym/KaikiBot/pull/46) +- 1.3.4 update, fixes and renaming [`#43`](https://github.com/cataclym/KaikiBot/pull/43) +- updated deps [`#42`](https://github.com/cataclym/KaikiBot/pull/42) +- Emotecount hotfix [`#40`](https://github.com/cataclym/KaikiBot/pull/40) +- minor Tinder list edit [`#39`](https://github.com/cataclym/KaikiBot/pull/39) +- 1.3.2 - No more bots in Tinder [`#38`](https://github.com/cataclym/KaikiBot/pull/38) +- Merge frem dev with pagination and more [`#37`](https://github.com/cataclym/KaikiBot/pull/37) +- From dev branch [`#36`](https://github.com/cataclym/KaikiBot/pull/36) +- actual ping [`#35`](https://github.com/cataclym/KaikiBot/pull/35) +- tiny fix to tiny issue [`#34`](https://github.com/cataclym/KaikiBot/pull/34) +- I wrote a big message earlier, but had to revert. This update is kind… [`#33`](https://github.com/cataclym/KaikiBot/pull/33) +- Tinder fixes, implemented lists and dislike removal [`#32`](https://github.com/cataclym/KaikiBot/pull/32) +- Fix to marry() Rolls upped to 15 [`#31`](https://github.com/cataclym/KaikiBot/pull/31) +- Added TinderDBService [`#30`](https://github.com/cataclym/KaikiBot/pull/30) +- Fix to Tinder reset time and Emotecount [`#29`](https://github.com/cataclym/KaikiBot/pull/29) +- Added time left for rolls/likes [`#28`](https://github.com/cataclym/KaikiBot/pull/28) +- Dev [`#27`](https://github.com/cataclym/KaikiBot/pull/27) +- hotfix [`#26`](https://github.com/cataclym/KaikiBot/pull/26) +- Adds tinder, holiday, emote count and much more +++ [`#25`](https://github.com/cataclym/KaikiBot/pull/25) +- oh yeah mr crabs [`#22`](https://github.com/cataclym/KaikiBot/pull/22) +- Embeds++ [`#19`](https://github.com/cataclym/KaikiBot/pull/19) +- Fixes to help and names [`#18`](https://github.com/cataclym/KaikiBot/pull/18) +- help/names ++ [`#17`](https://github.com/cataclym/KaikiBot/pull/17) +- disable command breaking help [`#16`](https://github.com/cataclym/KaikiBot/pull/16) +- Fixes to cmd and help [`#15`](https://github.com/cataclym/KaikiBot/pull/15) +- quick admin only [`#14`](https://github.com/cataclym/KaikiBot/pull/14) +- from dev [`#13`](https://github.com/cataclym/KaikiBot/pull/13) +- Updates from Dev +todo and more [`#12`](https://github.com/cataclym/KaikiBot/pull/12) +- Just checking // Seems fine [`#11`](https://github.com/cataclym/KaikiBot/pull/11) +- fixes +new commands [`#7`](https://github.com/cataclym/KaikiBot/pull/7) +- new cmd, minor fixes tweaks [`#6`](https://github.com/cataclym/KaikiBot/pull/6) +- this should work x2 [`#5`](https://github.com/cataclym/KaikiBot/pull/5) +- Pretty embeds ++ [`#4`](https://github.com/cataclym/KaikiBot/pull/4) +- From dev [`#3`](https://github.com/cataclym/KaikiBot/pull/3) +- Export func + emotereact [`#1`](https://github.com/cataclym/KaikiBot/pull/1) + +### Commits + +- Time to celebrate 🎊 [`c14bf45`](https://github.com/cataclym/KaikiBot/commit/c14bf453adb42d8ecacb581aa2c366f7352c36ab) +- indents+fix for names.js [`bb1548d`](https://github.com/cataclym/KaikiBot/commit/bb1548df6dab5ca1b13fdf7b5b29e31f150e1fe3) +- Converting to Akairo Update1 [`107ce41`](https://github.com/cataclym/KaikiBot/commit/107ce419f1ca0ccd9f524993c9f52eb71abd1a0e) diff --git a/package.json b/package.json index 0e9caaea..32cd68e7 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "description": "Discord bot built with Sapphire, Prisma and MySQL2", "repository": { "type": "git", - "url": "https://github.com/cataclym/Kaiki-Deishu-Bot.git" + "url": "https://github.com/cataclym/KaikiBot.git" }, "engines": { "node": ">=18.0.0", diff --git a/src/struct/Constants.ts b/src/struct/Constants.ts index 88789368..9af5ca01 100644 --- a/src/struct/Constants.ts +++ b/src/struct/Constants.ts @@ -851,7 +851,7 @@ export default class Constants { }); static readonly LINKS = Object.freeze({ - REPO_URL: "https://github.com/cataclym/Kaiki-Deishu-Bot.git", - GUIDE: "https://github.com/cataclym/Kaiki-Deishu-Bot/blob/master/docs/GUIDE.md", + REPO_URL: "https://github.com/cataclym/KaikiBot.git", + GUIDE: "https://github.com/cataclym/KaikiBot/blob/master/docs/GUIDE.md", }); } From 7a4716083435c290d18da016cce55ca52ade0323 Mon Sep 17 00:00:00 2001 From: Cata Date: Thu, 23 May 2024 16:53:32 +0200 Subject: [PATCH 02/44] Updated more docs --- .eslintrc.yml | 2 +- .prettierignore | 2 +- CHANGELOG.md | 9 ++++++++- README.md | 2 +- docs/ENV.md | 1 + docs/GUIDE.md | 3 ++- docs/PLACEHOLDERS.md | 1 + 7 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index 5829fd99..c2e6c05e 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -25,4 +25,4 @@ rules: "@typescript-eslint/no-explicit-any": "off" ignorePatterns: - dist - - "./CHANGELOG.md" + - "*.md" diff --git a/.prettierignore b/.prettierignore index 4063db34..d8e170c3 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,2 @@ **/dist -CHANGELOG.md \ No newline at end of file +*.md diff --git a/CHANGELOG.md b/CHANGELOG.md index aa17714a..b876f0fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.15](https://github.com/cataclym/KaikiBot/compare/v6.1.14...v6.1.15) +## [v6.1.15](https://github.com/cataclym/KaikiBot/compare/v6.1.15...v6.1.15) + +### Commits + +- Updated github url [`0354b69`](https://github.com/cataclym/KaikiBot/commit/0354b697feb874030e4322733dc22c47a2ed0f2c) +- Updated docs and configs [`288d016`](https://github.com/cataclym/KaikiBot/commit/288d0163e08bfa202c55af591632879c40f4ba4d) + +## [v6.1.15](https://github.com/cataclym/KaikiBot/compare/v6.1.14...v6.1.15) - 2024-05-23 ### Commits diff --git a/README.md b/README.md index 1d392cf0..ff67eaf7 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ### Kaiki is a unique Discord bot, written in Typescript. | [Website](https://kaikibot.xyz) | [Add Kaiki to your server](https://discord.com/oauth2/authorize?client_id=714695773534814238&scope=bot) | -| :------------------------------ | :-----------------------------------------------------------------------------------------------------: | +|:--------------------------------|:-------------------------------------------------------------------------------------------------------:|

Economy

Gambling commands, daily currency claims, currency transactions diff --git a/docs/ENV.md b/docs/ENV.md index 74bf7439..26159f14 100644 --- a/docs/ENV.md +++ b/docs/ENV.md @@ -3,6 +3,7 @@ - [Readme](../README.md) - Docs - [Guide](GUIDE.md) + - [Placeholders](docs/PLACEHOLDERS.md) # .env setup guide diff --git a/docs/GUIDE.md b/docs/GUIDE.md index e83bcba1..391623a3 100644 --- a/docs/GUIDE.md +++ b/docs/GUIDE.md @@ -3,6 +3,7 @@ - [Readme](../README.md) - Docs - [.env setup](ENV.md) + - [Placeholders](docs/PLACEHOLDERS.md) ## Requirements @@ -12,7 +13,7 @@ ## Instructions -1. Clone repo: `git clone https://gitlab.com/cataclym/KaikiDeishuBot.git && cd KaikiDeishuBot` +1. Clone repo: `git clone https://github.com/cataclym/KaikiBot.git && cd KaikiDeishuBot` 2. Create .env file: `cp .env.example .env`. 3. Edit .env to add your token and owner id. Using nano or your editor of choice: `nano .env` then follow the [full instructions](ENV.md)! 4. Install dependencies: `npm i` diff --git a/docs/PLACEHOLDERS.md b/docs/PLACEHOLDERS.md index e1c5bf0a..c6dfe61d 100644 --- a/docs/PLACEHOLDERS.md +++ b/docs/PLACEHOLDERS.md @@ -4,6 +4,7 @@ - Docs - [Guide](GUIDE.md) + - [.env setup](ENV.md) ## Placeholders From 280f2b8ed560dbf41bb4838cf2580d018809d02f Mon Sep 17 00:00:00 2001 From: Cata Date: Thu, 23 May 2024 16:56:21 +0200 Subject: [PATCH 03/44] Docs: Fix path --- docs/ENV.md | 2 +- docs/GUIDE.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ENV.md b/docs/ENV.md index 26159f14..d765e3a8 100644 --- a/docs/ENV.md +++ b/docs/ENV.md @@ -3,7 +3,7 @@ - [Readme](../README.md) - Docs - [Guide](GUIDE.md) - - [Placeholders](docs/PLACEHOLDERS.md) + - [Placeholders](PLACEHOLDERS.md) # .env setup guide diff --git a/docs/GUIDE.md b/docs/GUIDE.md index 391623a3..5137b7ca 100644 --- a/docs/GUIDE.md +++ b/docs/GUIDE.md @@ -3,7 +3,7 @@ - [Readme](../README.md) - Docs - [.env setup](ENV.md) - - [Placeholders](docs/PLACEHOLDERS.md) + - [Placeholders](PLACEHOLDERS.md) ## Requirements From b94b1b5113057ae33cfbd50b2d5b61d73344b605 Mon Sep 17 00:00:00 2001 From: Cata Date: Thu, 23 May 2024 17:23:13 +0200 Subject: [PATCH 04/44] Fix minor vulnerability --- package-lock.json | 30 +++++------------------------- package.json | 2 +- 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index bcf50788..6fec5739 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "bufferutil": "^4.0.8", "discord-js-button-pagination-ts": "^4.2.0", "discord.js": "^14.15.2", - "discordbotlist-djs": "^0.0.2", + "discordbotlist-djs": "^0.0.3", "dotenv": "^16.4.5", "mysql2": "^3.9.7", "prisma": "^5.10.2", @@ -243,14 +243,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@fastify/busboy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", - "engines": { - "node": ">=14" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -1985,15 +1977,14 @@ } }, "node_modules/discordbotlist-djs": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/discordbotlist-djs/-/discordbotlist-djs-0.0.2.tgz", - "integrity": "sha512-pZn5mAqNrJVWF6Pks1R3Cjrie9L9E+jl6RhOgvC8Y4Qob5xCF4THyd7Zmqg1aOlc0UPoAvHxWTegMaMJZNJG+A==", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/discordbotlist-djs/-/discordbotlist-djs-0.0.3.tgz", + "integrity": "sha512-tCq0PTrcKY+SEMwArGLWa3RGmEHE0WtwA0uzVtlmusCM5A/8ptF7gbI/JH+7kpEvWhUC7OD1kuZBkzSnlfXixw==", "dependencies": { "@types/express": "^4.17.21", "express": "^4.18.2", "tiny-typed-emitter": "^2.1.0", - "tslib": "^2.5.0", - "undici": "^5.22.0" + "tslib": "^2.5.0" } }, "node_modules/dlv": { @@ -5012,17 +5003,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/undici": { - "version": "5.27.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.27.2.tgz", - "integrity": "sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", diff --git a/package.json b/package.json index 32cd68e7..63864cc9 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "bufferutil": "^4.0.8", "discord-js-button-pagination-ts": "^4.2.0", "discord.js": "^14.15.2", - "discordbotlist-djs": "^0.0.2", + "discordbotlist-djs": "^0.0.3", "dotenv": "^16.4.5", "mysql2": "^3.9.7", "prisma": "^5.10.2", From aae2c6a5770098de71b901e920dc5b49eabb8834 Mon Sep 17 00:00:00 2001 From: Cata Date: Thu, 23 May 2024 17:23:20 +0200 Subject: [PATCH 05/44] 6.1.16 --- CHANGELOG.md | 3 ++- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b876f0fe..25d22871 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,12 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.15](https://github.com/cataclym/KaikiBot/compare/v6.1.15...v6.1.15) +## [v6.1.16](https://github.com/cataclym/KaikiBot/compare/v6.1.15...v6.1.16) ### Commits - Updated github url [`0354b69`](https://github.com/cataclym/KaikiBot/commit/0354b697feb874030e4322733dc22c47a2ed0f2c) - Updated docs and configs [`288d016`](https://github.com/cataclym/KaikiBot/commit/288d0163e08bfa202c55af591632879c40f4ba4d) +- Fix minor vulnerability [`b94b1b5`](https://github.com/cataclym/KaikiBot/commit/b94b1b5113057ae33cfbd50b2d5b61d73344b605) ## [v6.1.15](https://github.com/cataclym/KaikiBot/compare/v6.1.14...v6.1.15) - 2024-05-23 diff --git a/package-lock.json b/package-lock.json index 6fec5739..a98014ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kaikideishubot", - "version": "6.1.15", + "version": "6.1.16", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kaikideishubot", - "version": "6.1.15", + "version": "6.1.16", "license": "MIT", "dependencies": { "@prisma/client": "^5.10.2", diff --git a/package.json b/package.json index 63864cc9..2c729212 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kaikideishubot", - "version": "6.1.15", + "version": "6.1.16", "main": "./dist/index.js", "scripts": { "start_docker": "npx prisma db push && npm run start", From 40d9177793abc58d16dbfd0d9ff9ced14f2ec40e Mon Sep 17 00:00:00 2001 From: Cata Date: Sat, 25 May 2024 01:09:50 +0200 Subject: [PATCH 06/44] Docs: Fixed some inconsistencies --- README.md | 21 +++++++++++---------- docs/ENV.md | 20 ++++++++++---------- docs/GUIDE.md | 27 +++++++++++++++++++++------ 3 files changed, 42 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index ff67eaf7..8977b2a5 100644 --- a/README.md +++ b/README.md @@ -11,13 +11,13 @@ | [Website](https://kaikibot.xyz) | [Add Kaiki to your server](https://discord.com/oauth2/authorize?client_id=714695773534814238&scope=bot) | |:--------------------------------|:-------------------------------------------------------------------------------------------------------:| -

Economy

+#### Economy Gambling commands, daily currency claims, currency transactions -

Interactions

+### Interactions Anime reaction gifs for most situations, always +pat your homies -

Unique

+### Unique - See how many times each emote has been used in the server - Ping your minecraft server to check it's status @@ -26,18 +26,19 @@ Anime reaction gifs for most situations, always +pat your homies ... and much more. -Feel free to selfhost and/or contribute! - ## Documentation -- Docs - - [Selfhosting guide](docs/GUIDE.md) - - [Placeholders](docs/PLACEHOLDERS.md) for greet and bye messages - - [.env setup](docs/ENV.md) +- [Selfhosting guide](docs/GUIDE.md) +- [Placeholders](docs/PLACEHOLDERS.md) for greet and bye messages +- [.env setup](docs/ENV.md) ## Contributing -Consider contributing. I appreciate all the help I can get! +Consider contributing! I appreciate all the help I can get. + +### Upcoming plans +* Rework todo (TodoRework branch) +* Serve/Update commandlist to website automatically --- diff --git a/docs/ENV.md b/docs/ENV.md index d765e3a8..9088e5d6 100644 --- a/docs/ENV.md +++ b/docs/ENV.md @@ -35,16 +35,6 @@ Example Prefix is `+` -## KAWAIIKEY - -- Login to https://kawaii.red/dashboard/ with your Discord account -- Reveal and copy the token -- Paste the token in the .env file. Make sure it looks like the example below. - -Example - - KAWAIIKEY=142788173885276162.DspDpD0isjuXAKD73vWs - ## MySQL Replace `yourUsername` and `yourPassword` with your MySQL user and password credentials @@ -60,6 +50,16 @@ Example DB_ROOT_PASSWORD=yourRootPassword DB_NAME=kaikidb +## KAWAIIKEY (Optional) + +- Login to https://kawaii.red/dashboard/ with your Discord account +- Reveal and copy the token +- Paste the token in the .env file. Make sure it looks like the example below. + +Example + + KAWAIIKEY=142788173885276162.DspDpD0isjuXAKD73vWs + ## The rest of the file Please leave this as is, unless you know what you're doing diff --git a/docs/GUIDE.md b/docs/GUIDE.md index 5137b7ca..990535cc 100644 --- a/docs/GUIDE.md +++ b/docs/GUIDE.md @@ -13,12 +13,27 @@ ## Instructions -1. Clone repo: `git clone https://github.com/cataclym/KaikiBot.git && cd KaikiDeishuBot` -2. Create .env file: `cp .env.example .env`. -3. Edit .env to add your token and owner id. Using nano or your editor of choice: `nano .env` then follow the [full instructions](ENV.md)! -4. Install dependencies: `npm i` -5. Run the compiler: `npm run build` -6. Run the program: `npm run start` +1. Clone repo +``` +git clone https://github.com/cataclym/KaikiBot.git && cd KaikiBot +``` +2. Create .env file +``` +cp .env.example .env +``` +3. [Setup .env file](ENV.md) +4. Install dependencies: +``` +npm i +``` +5. Run the compiler +``` +npm run build +``` +6. Run the program +``` +npm run start +``` 7. ? 8. Profit From 719d94970729579b092f660dd06ccb41c24f1242 Mon Sep 17 00:00:00 2001 From: Cata Date: Tue, 28 May 2024 21:07:26 +0200 Subject: [PATCH 07/44] Added: Ability to upload commandlist to specific endpoint. --- .env.example | 4 +- src/commands/Interactions/hug.ts | 8 ++ src/commands/Owner only/gencmdlist.ts | 115 ++++++++++++++++++-------- 3 files changed, 90 insertions(+), 37 deletions(-) diff --git a/.env.example b/.env.example index d5ec950a..aaecccf1 100644 --- a/.env.example +++ b/.env.example @@ -18,4 +18,6 @@ NODE_ENV=production # Bot settings DADBOT_MAX_LENGTH=256 DADBOT_NICKNAME_LENGTH=32 -DADBOT_DEFAULT_ROLENAME=Dadbot-excluded \ No newline at end of file +DADBOT_DEFAULT_ROLENAME=Dadbot-excluded +#SELF_API= +#SELF_API_TOKEN= \ No newline at end of file diff --git a/src/commands/Interactions/hug.ts b/src/commands/Interactions/hug.ts index c9f337a9..31a8d34c 100644 --- a/src/commands/Interactions/hug.ts +++ b/src/commands/Interactions/hug.ts @@ -1,7 +1,15 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { ApplyOptions } from "@sapphire/decorators"; +import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; +@ApplyOptions({ + name: "hug", + description: "Hug a homie", + usage: ["", "@drev"], + typing: true, +}) export default class HugCommand extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( diff --git a/src/commands/Owner only/gencmdlist.ts b/src/commands/Owner only/gencmdlist.ts index 5f543915..46e937f3 100644 --- a/src/commands/Owner only/gencmdlist.ts +++ b/src/commands/Owner only/gencmdlist.ts @@ -1,54 +1,97 @@ import { ApplyOptions } from "@sapphire/decorators"; import { PreconditionEntryResolvable } from "@sapphire/framework"; -import { AttachmentBuilder, Message, PermissionsBitField } from "discord.js"; +import { AttachmentBuilder, EmbedBuilder, Message, PermissionsBitField } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import Constants from "../../struct/Constants"; +import process from "process"; @ApplyOptions({ name: "gencmdlist", - aliases: ["gencmdlst"], + aliases: ["gencmdlst", "gencmds"], usage: "", - description: "Uploads a JSON file containing all commands.", + description: "Uploads a JSON file containing all commands. Supports uploading to a specific endpoint.", preconditions: ["OwnerOnly"], }) export default class GenCmdListCommand extends KaikiCommand { - public async messageRun(message: Message): Promise { + public async messageRun(message: Message) { + + if (!process.env.SELF_API || !process.env.SELF_API_TOKEN) { + return message.channel.send({ + files: [ + new AttachmentBuilder(Buffer.from(this.generateCommmandlist(), "utf-8"), + { name: "cmdlist.json" } + ), + ], + }); + } + + const pendingMsg = await message.channel.send({ + embeds: [ + new EmbedBuilder() + .setDescription("Uploading commandslist...") + .setColor(Constants.kaikiOrange) + ] + }) + + const list = this.generateCommmandlist(); + + const uri = new URL(process.env.SELF_API) + uri.searchParams.append("token", process.env.SELF_API_TOKEN) + + const res = await fetch(uri, { + method: "POST", + body: JSON.stringify({ + list: list, + }), + headers: { + "content-type": "application/json" + } + }) + + if (res.status === 201) { + await pendingMsg.edit({ + embeds: [ + new EmbedBuilder() + .setDescription("Successfully uploaded commands") + .withOkColor(message), + ], + files: [ + new AttachmentBuilder(Buffer.from(list, "utf-8"), + { name: "cmdlist.json" } + ), + ], + }) + } + } + + private generateCommmandlist() { const commands = Array.from(this.store.values()); const { categories } = this.store; - return message.channel.send({ - files: [ - new AttachmentBuilder( - Buffer.from( - JSON.stringify( - categories.map((category) => { - // Akairo: Category ID, Command[] - return [ - category, - commands - .filter( - (command) => - command.category === category - ) - .map( - (command: KaikiCommand) => - new GeneratedCommand(command) - ), - ]; - }), - (key, value) => - typeof value === "bigint" - ? value.toString() - : value, - 4 + return JSON.stringify( + categories.map((category) => { + // Akairo: Category ID, Command[] + return [ + category, + commands + .filter( + (command) => + command.category === category + ) + .map( + (command: KaikiCommand) => + new GeneratedCommand(command) ), - "utf-8" - ), - { name: "cmdlist.json" } - ), - ], - }); + ]; + }), + (key, value) => + typeof value === "bigint" + ? value.toString() + : value, + 4 + ); } } @@ -57,7 +100,7 @@ class GeneratedCommand { aliases: string[]; channel?: string | undefined | PreconditionEntryResolvable; ownerOnly?: boolean; - usage?: string | string[] | undefined; + usage?: string | string[]; userPermissions?: string; description?: string; From 437e9cd8a19b8b79d0d27ce5b101677bf72a7a70 Mon Sep 17 00:00:00 2001 From: Cata Date: Tue, 28 May 2024 21:57:18 +0200 Subject: [PATCH 08/44] Changed: glb is no longer guild-only; Added: unban description text --- src/commands/Administration/unban.ts | 2 +- src/commands/Gambling/globalLeaderboard.ts | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/commands/Administration/unban.ts b/src/commands/Administration/unban.ts index 2c540aed..7cf930c5 100644 --- a/src/commands/Administration/unban.ts +++ b/src/commands/Administration/unban.ts @@ -7,7 +7,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; @ApplyOptions({ name: "unban", aliases: ["ub"], - description: "", + description: "Unbans a given user by ID", usage: "103020509395056", requiredUserPermissions: ["BanMembers"], requiredClientPermissions: ["BanMembers"], diff --git a/src/commands/Gambling/globalLeaderboard.ts b/src/commands/Gambling/globalLeaderboard.ts index 23798eed..95beb52e 100644 --- a/src/commands/Gambling/globalLeaderboard.ts +++ b/src/commands/Gambling/globalLeaderboard.ts @@ -8,8 +8,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "globalleaderboard", aliases: ["glb"], usage: "", - description: "Shows global currency leaderboard for the current server.", - preconditions: ["GuildOnly"], + description: "Shows global currency leaderboard for the current server." }) export default class GlobalLeaderboard extends KaikiCommand { public async messageRun(message: Message): Promise { From b48f5125566bbb16d97c38f3e1f8b3c3f79d6505 Mon Sep 17 00:00:00 2001 From: Cata Date: Tue, 28 May 2024 21:58:17 +0200 Subject: [PATCH 09/44] 6.1.17 --- CHANGELOG.md | 10 +++++++++- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25d22871..3e20057e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.16](https://github.com/cataclym/KaikiBot/compare/v6.1.15...v6.1.16) +## [v6.1.17](https://github.com/cataclym/KaikiBot/compare/v6.1.16...v6.1.17) + +### Commits + +- Added: Ability to upload commandlist to specific endpoint. [`719d949`](https://github.com/cataclym/KaikiBot/commit/719d94970729579b092f660dd06ccb41c24f1242) +- Docs: Fixed some inconsistencies [`40d9177`](https://github.com/cataclym/KaikiBot/commit/40d9177793abc58d16dbfd0d9ff9ced14f2ec40e) +- Changed: glb is no longer guild-only; Added: unban description text [`437e9cd`](https://github.com/cataclym/KaikiBot/commit/437e9cd8a19b8b79d0d27ce5b101677bf72a7a70) + +## [v6.1.16](https://github.com/cataclym/KaikiBot/compare/v6.1.15...v6.1.16) - 2024-05-23 ### Commits diff --git a/package-lock.json b/package-lock.json index a98014ab..f091d2c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kaikideishubot", - "version": "6.1.16", + "version": "6.1.17", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kaikideishubot", - "version": "6.1.16", + "version": "6.1.17", "license": "MIT", "dependencies": { "@prisma/client": "^5.10.2", diff --git a/package.json b/package.json index 2c729212..d3d7aba8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kaikideishubot", - "version": "6.1.16", + "version": "6.1.17", "main": "./dist/index.js", "scripts": { "start_docker": "npx prisma db push && npm run start", From c6db5c7ab734bc223c2e9f9560c0a161a05bd409 Mon Sep 17 00:00:00 2001 From: Cata Date: Sat, 1 Jun 2024 13:31:56 +0200 Subject: [PATCH 10/44] Addresses CVE-2024-21512 --- package-lock.json | 51 ++++++++++++++------------- package.json | 4 +-- src/commands/Owner only/gencmdlist.ts | 7 ++-- src/struct/ErrorHandler.ts | 8 ++--- 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index f091d2c6..a42a0d39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,9 +18,9 @@ "bufferutil": "^4.0.8", "discord-js-button-pagination-ts": "^4.2.0", "discord.js": "^14.15.2", - "discordbotlist-djs": "^0.0.3", + "discordbotlist-djs": "^0.0.4", "dotenv": "^16.4.5", - "mysql2": "^3.9.7", + "mysql2": "^3.10.0", "prisma": "^5.10.2", "sharp": "^0.33.3", "utf-8-validate": "^6.0.3", @@ -126,14 +126,6 @@ "url": "https://github.com/discordjs/discord.js?sponsor" } }, - "node_modules/@discordjs/rest/node_modules/undici": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.13.0.tgz", - "integrity": "sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==", - "engines": { - "node": ">=18.0" - } - }, "node_modules/@discordjs/util": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.0.tgz", @@ -1968,23 +1960,24 @@ "url": "https://github.com/discordjs/discord.js?sponsor" } }, - "node_modules/discord.js/node_modules/undici": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.13.0.tgz", - "integrity": "sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==", - "engines": { - "node": ">=18.0" - } - }, "node_modules/discordbotlist-djs": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/discordbotlist-djs/-/discordbotlist-djs-0.0.3.tgz", - "integrity": "sha512-tCq0PTrcKY+SEMwArGLWa3RGmEHE0WtwA0uzVtlmusCM5A/8ptF7gbI/JH+7kpEvWhUC7OD1kuZBkzSnlfXixw==", + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/discordbotlist-djs/-/discordbotlist-djs-0.0.4.tgz", + "integrity": "sha512-Z/FdpQmV33pCSUGgq6YXWHPZXHtjXh0pjGWTyAw05GxBnNHahKbmos1TMaX807FYwDNXcE3q0fN4+uv9BtSRIQ==", "dependencies": { "@types/express": "^4.17.21", "express": "^4.18.2", "tiny-typed-emitter": "^2.1.0", - "tslib": "^2.5.0" + "tslib": "^2.5.0", + "undici": "^6.18.2" + } + }, + "node_modules/discordbotlist-djs/node_modules/undici": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.18.2.tgz", + "integrity": "sha512-o/MQLTwRm9IVhOqhZ0NQ9oXax1ygPjw6Vs+Vq/4QRjbOAC3B1GCHy7TYxxbExKlb7bzDRzt9vBWU6BDz0RFfYg==", + "engines": { + "node": ">=18.17" } }, "node_modules/dlv": { @@ -3633,9 +3626,9 @@ "dev": true }, "node_modules/mysql2": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.7.tgz", - "integrity": "sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.0.tgz", + "integrity": "sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==", "dependencies": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -5003,6 +4996,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.13.0.tgz", + "integrity": "sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==", + "engines": { + "node": ">=18.0" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", diff --git a/package.json b/package.json index d3d7aba8..e3a996c1 100644 --- a/package.json +++ b/package.json @@ -34,9 +34,9 @@ "bufferutil": "^4.0.8", "discord-js-button-pagination-ts": "^4.2.0", "discord.js": "^14.15.2", - "discordbotlist-djs": "^0.0.3", + "discordbotlist-djs": "^0.0.4", "dotenv": "^16.4.5", - "mysql2": "^3.9.7", + "mysql2": "^3.10.0", "prisma": "^5.10.2", "sharp": "^0.33.3", "utf-8-validate": "^6.0.3", diff --git a/src/commands/Owner only/gencmdlist.ts b/src/commands/Owner only/gencmdlist.ts index 46e937f3..d9efb996 100644 --- a/src/commands/Owner only/gencmdlist.ts +++ b/src/commands/Owner only/gencmdlist.ts @@ -1,6 +1,6 @@ import { ApplyOptions } from "@sapphire/decorators"; import { PreconditionEntryResolvable } from "@sapphire/framework"; -import { AttachmentBuilder, EmbedBuilder, Message, PermissionsBitField } from "discord.js"; +import { AttachmentBuilder, EmbedBuilder, Message, PermissionsBitField, PermissionsString } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; import Constants from "../../struct/Constants"; @@ -101,7 +101,7 @@ class GeneratedCommand { channel?: string | undefined | PreconditionEntryResolvable; ownerOnly?: boolean; usage?: string | string[]; - userPermissions?: string; + userPermissions?: PermissionsString[]; description?: string; constructor(command: KaikiCommand) { @@ -117,8 +117,7 @@ class GeneratedCommand { this.userPermissions = new PermissionsBitField( command.options.requiredUserPermissions ) - .toArray() - .join(); + .toArray(); this.description = command.description; } } diff --git a/src/struct/ErrorHandler.ts b/src/struct/ErrorHandler.ts index 1ffe176b..71857cce 100644 --- a/src/struct/ErrorHandler.ts +++ b/src/struct/ErrorHandler.ts @@ -1,10 +1,10 @@ import { container } from "@sapphire/framework"; import process from "process"; -process.on("unhandledRejection", async (reason: Error, promise) => - container.logger.warn(reason, promise) +process.on("unhandledRejection", (reason: Error, promise) => + console.warn(reason, promise) ); -process.on("uncaughtException", async (reason: Error, promise) => - container.logger.warn(reason, promise) +process.on("uncaughtException", (reason: Error, promise) => + console.warn(reason, promise) ); From 7077c0b3c2c61e46e8d6d9eaf0bc9bcb5653ac3c Mon Sep 17 00:00:00 2001 From: Ole Date: Sat, 22 Jun 2024 02:14:18 +0800 Subject: [PATCH 11/44] Add bettest (#56) * WIP * Added and formatted all output bettest strings * Removed prettier * Added source-map support for dev errors; Finished bettest command --- .eslintrc.yml | 4 + .prettierignore | 2 - .prettierrc.yml | 5 - package-lock.json | 11000 ++++++++-------- package.json | 125 +- src/arguments/activityType.ts | 2 +- src/arguments/category.ts | 2 +- src/arguments/command.ts | 6 +- src/arguments/guild.ts | 2 +- src/arguments/kaikiCoin.ts | 2 +- src/arguments/kaikiHentai.ts | 8 +- src/arguments/kaikiMoney.ts | 32 +- src/commands/Administration/ban.ts | 12 +- src/commands/Administration/deleteChannel.ts | 2 +- src/commands/Administration/softban.ts | 16 +- src/commands/Anime/anime.ts | 2 +- src/commands/Anime/manga.ts | 10 +- src/commands/Emotes/addEmote.ts | 4 +- src/commands/Emotes/deleteEmote.ts | 10 +- src/commands/Emotes/emotecount.ts | 32 +- src/commands/Fun/names.ts | 4 +- src/commands/Fun/neofetch.ts | 26 +- src/commands/Fun/ttt.ts | 8 +- src/commands/Gambling/betflip.ts | 37 +- src/commands/Gambling/betroll.ts | 130 +- src/commands/Gambling/cash.ts | 2 +- src/commands/Gambling/currencyTransactions.ts | 18 +- src/commands/Gambling/globalLeaderboard.ts | 2 +- src/commands/Gambling/slots.ts | 88 +- src/commands/Moderation/clear.ts | 4 +- src/commands/Moderation/kick.ts | 10 +- src/commands/NSFW/e621.ts | 6 +- src/commands/NSFW/hentai.ts | 10 +- src/commands/NSFW/hentaibomb.ts | 10 +- src/commands/NSFW/hentainuke.ts | 6 +- src/commands/Owner only/bettest.ts | 135 + src/commands/Owner only/botConfig.ts | 18 +- src/commands/Owner only/die.ts | 2 +- src/commands/Owner only/exec.ts | 2 +- src/commands/Owner only/gencmdlist.ts | 55 +- src/commands/Owner only/setActivity.ts | 10 +- src/commands/Owner only/setBanner.ts | 4 +- src/commands/Owner only/setDaily.ts | 2 +- src/commands/Owner only/sqlexec.ts | 2 +- src/commands/Owner only/sqlselect.ts | 2 +- src/commands/Roles/roleColor.ts | 2 +- src/commands/Roles/roleInfo.ts | 2 +- src/commands/Roles/roleInrole.ts | 4 +- src/commands/Roles/roleListUserRoles.ts | 2 +- src/commands/Roles/roleMyRole.ts | 6 +- src/commands/Roles/roleRemove.ts | 2 +- src/commands/Roles/roleRename.ts | 2 +- src/commands/Roles/roleRestore.ts | 2 +- src/commands/Roles/roleSetRole.ts | 2 +- src/commands/Roles/roleSetUserRole.ts | 6 +- src/commands/Server settings/addEmoteReact.ts | 2 +- src/commands/Server settings/config.ts | 2 +- .../Server settings/excludeChannel.ts | 30 +- .../Server settings/excludeStickyRoles.ts | 26 +- src/commands/Server settings/goodbye.ts | 4 +- src/commands/Server settings/goodbyedelete.ts | 2 +- .../Server settings/goodbyemessage.ts | 2 +- .../Server settings/listEmoteReacts.ts | 14 +- src/commands/Server settings/stickyRoles.ts | 2 +- .../Server settings/toggleCategory.ts | 8 +- src/commands/Server settings/welcome.ts | 4 +- src/commands/Server settings/welcomedelete.ts | 2 +- .../Server settings/welcomemessage.ts | 2 +- src/commands/Server settings/welcometest.ts | 8 +- src/commands/Utility/cmdlist.ts | 64 +- src/commands/Utility/color.ts | 22 +- src/commands/Utility/exclude.ts | 2 +- src/commands/Utility/fetch.ts | 4 +- src/commands/Utility/forgetMe.ts | 10 +- src/commands/Utility/help.ts | 24 +- src/commands/Utility/info.ts | 54 +- src/commands/Utility/mcping.ts | 26 +- src/commands/Utility/ping.ts | 8 +- src/commands/Utility/say.ts | 2 +- src/commands/Utility/serverinfo.ts | 16 +- src/commands/Utility/serverlist.ts | 2 +- src/commands/Utility/shardstats.ts | 12 +- src/commands/Utility/stats.ts | 8 +- src/commands/Utility/todo.ts | 2 +- src/extensions/Discord.ts | 46 +- src/extensions/Sapphire.ts | 34 +- src/index.ts | 1 + src/lib/APIs/AnilistGraphQL.ts | 6 +- src/lib/APIs/Common/Types.ts | 126 +- src/lib/APIs/WaifuPics.ts | 28 +- src/lib/APIs/waifu.im.ts | 10 +- src/lib/AnniversaryRolesService.ts | 14 +- src/lib/Cache/KaikiCache.ts | 20 +- src/lib/DadBot.ts | 46 +- src/lib/Emotes/Emotes.ts | 4 +- src/lib/Enums/categoriesEnum.ts | 26 +- src/lib/Errors/ArgumentErrorRun.ts | 6 +- src/lib/Gambling/Gambling.ts | 11 +- src/lib/Games/TTT.ts | 12 +- src/lib/GreetHandler.ts | 39 +- src/lib/Hentai/HentaiService.ts | 46 +- src/lib/Interfaces/Common/AnimeData.ts | 80 +- src/lib/Interfaces/Common/DanbooruData.ts | 130 +- src/lib/Interfaces/Common/E261APIData.ts | 138 +- .../Common/InteractionsImageData.ts | 8 +- src/lib/Interfaces/Common/MangaData.ts | 70 +- src/lib/Interfaces/Common/PackageJSON.ts | 38 +- src/lib/Interfaces/Common/RedditAPIData.ts | 438 +- src/lib/Interfaces/Common/UrbanResponse.ts | 24 +- src/lib/Interfaces/Common/mcsrvstatAPIData.ts | 116 +- src/lib/Interfaces/Kaiki/KaikiCache.ts | 4 +- .../Interfaces/Kaiki/KaikiCommandOptions.ts | 4 +- .../Kaiki/KaikiSubCommandOptions.ts | 4 +- src/lib/Kaiki/KaikiArgumentsTypes.ts | 35 + src/lib/Kaiki/KaikiClientInterface.ts | 24 +- src/lib/Kaiki/KaikiEmbeds.ts | 2 +- src/lib/Kaiki/KaikiSapphireClient.ts | 12 +- src/lib/KaikiUtil.ts | 58 +- src/lib/Roles.ts | 12 +- src/lib/ServerConfig/Config.ts | 12 +- src/lib/SlashCommands/SlashCommandsLib.ts | 10 +- src/lib/Todo/Todo.ts | 198 +- src/lib/Types/KaikiColor.ts | 304 +- src/lib/Types/Miscellaneous.ts | 32 +- src/listeners/shardResume.ts | 2 +- src/preconditions/OwnerOnly.ts | 4 +- .../blockedCategoriesPrecondition.ts | 8 +- src/struct/Constants.ts | 882 +- src/struct/ErrorHandler.ts | 1 - src/struct/db/Provider.ts | 96 +- tsconfig.json | 36 +- 131 files changed, 8161 insertions(+), 7361 deletions(-) delete mode 100644 .prettierignore delete mode 100644 .prettierrc.yml create mode 100644 src/commands/Owner only/bettest.ts diff --git a/.eslintrc.yml b/.eslintrc.yml index c2e6c05e..cedacf2a 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -22,6 +22,10 @@ rules: object-curly-spacing: - error - always + indent: + - error + - 4 + no-mixed-spaces-and-tabs: off "@typescript-eslint/no-explicit-any": "off" ignorePatterns: - dist diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index d8e170c3..00000000 --- a/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -**/dist -*.md diff --git a/.prettierrc.yml b/.prettierrc.yml deleted file mode 100644 index 8104b273..00000000 --- a/.prettierrc.yml +++ /dev/null @@ -1,5 +0,0 @@ -# .prettierrc or .prettierrc.yaml -trailingComma: "es5" -tabWidth: 4 -semi: true -singleQuote: false diff --git a/package-lock.json b/package-lock.json index a42a0d39..d679b72c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5206 +1,5798 @@ { - "name": "kaikideishubot", - "version": "6.1.17", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "kaikideishubot", - "version": "6.1.17", - "license": "MIT", - "dependencies": { - "@prisma/client": "^5.10.2", - "@sapphire/decorators": "^6.1.0", - "@sapphire/framework": "^5.2.1", - "@sapphire/plugin-logger": "^4.0.2", - "@sapphire/plugin-subcommands": "^6.0.3", - "@sapphire/shapeshift": "^3.9.7", - "bufferutil": "^4.0.8", - "discord-js-button-pagination-ts": "^4.2.0", - "discord.js": "^14.15.2", - "discordbotlist-djs": "^0.0.4", - "dotenv": "^16.4.5", - "mysql2": "^3.10.0", - "prisma": "^5.10.2", - "sharp": "^0.33.3", - "utf-8-validate": "^6.0.3", - "zlib-sync": "^0.1.9" - }, - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.7.1", - "@typescript-eslint/parser": "^7.7.1", - "auto-changelog": "^2.4.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "prettier": "^3.2.5", - "prettier-eslint": "^16.3.0", - "typescript": "^5.4.5" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=9.0.0" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@discordjs/builders": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.8.1.tgz", - "integrity": "sha512-GkF+HM01FHy+NSoTaUPR8z44otfQgJ1AIsRxclYGUZDyUbdZEFyD/5QVv2Y1Flx6M+B0bQLzg2M9CJv5lGTqpA==", - "dependencies": { - "@discordjs/formatters": "^0.4.0", - "@discordjs/util": "^1.1.0", - "@sapphire/shapeshift": "^3.9.7", - "discord-api-types": "0.37.83", - "fast-deep-equal": "^3.1.3", - "ts-mixer": "^6.0.4", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.11.0" - }, - "funding": { - "url": "https://github.com/discordjs/discord.js?sponsor" - } - }, - "node_modules/@discordjs/collection": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz", - "integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==", - "engines": { - "node": ">=16.11.0" - } - }, - "node_modules/@discordjs/formatters": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.4.0.tgz", - "integrity": "sha512-fJ06TLC1NiruF35470q3Nr1bi95BdvKFAF+T5bNfZJ4bNdqZ3VZ+Ttg6SThqTxm6qumSG3choxLBHMC69WXNXQ==", - "dependencies": { - "discord-api-types": "0.37.83" - }, - "engines": { - "node": ">=16.11.0" - }, - "funding": { - "url": "https://github.com/discordjs/discord.js?sponsor" - } - }, - "node_modules/@discordjs/rest": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.3.0.tgz", - "integrity": "sha512-C1kAJK8aSYRv3ZwMG8cvrrW4GN0g5eMdP8AuN8ODH5DyOCbHgJspze1my3xHOAgwLJdKUbWNVyAeJ9cEdduqIg==", - "dependencies": { - "@discordjs/collection": "^2.1.0", - "@discordjs/util": "^1.1.0", - "@sapphire/async-queue": "^1.5.2", - "@sapphire/snowflake": "^3.5.3", - "@vladfrangu/async_event_emitter": "^2.2.4", - "discord-api-types": "0.37.83", - "magic-bytes.js": "^1.10.0", - "tslib": "^2.6.2", - "undici": "6.13.0" - }, - "engines": { - "node": ">=16.11.0" - }, - "funding": { - "url": "https://github.com/discordjs/discord.js?sponsor" - } - }, - "node_modules/@discordjs/rest/node_modules/@discordjs/collection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.0.tgz", - "integrity": "sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/discordjs/discord.js?sponsor" - } - }, - "node_modules/@discordjs/util": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.0.tgz", - "integrity": "sha512-IndcI5hzlNZ7GS96RV3Xw1R2kaDuXEp7tRIy/KlhidpN/BQ1qh1NZt3377dMLTa44xDUNKT7hnXkA/oUAzD/lg==", - "engines": { - "node": ">=16.11.0" - }, - "funding": { - "url": "https://github.com/discordjs/discord.js?sponsor" - } - }, - "node_modules/@discordjs/ws": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.1.0.tgz", - "integrity": "sha512-O97DIeSvfNTn5wz5vaER6ciyUsr7nOqSEtsLoMhhIgeFkhnxLRqSr00/Fpq2/ppLgjDGLbQCDzIK7ilGoB/M7A==", - "dependencies": { - "@discordjs/collection": "^2.1.0", - "@discordjs/rest": "^2.3.0", - "@discordjs/util": "^1.1.0", - "@sapphire/async-queue": "^1.5.2", - "@types/ws": "^8.5.10", - "@vladfrangu/async_event_emitter": "^2.2.4", - "discord-api-types": "0.37.83", - "tslib": "^2.6.2", - "ws": "^8.16.0" - }, - "engines": { - "node": ">=16.11.0" - }, - "funding": { - "url": "https://github.com/discordjs/discord.js?sponsor" - } - }, - "node_modules/@discordjs/ws/node_modules/@discordjs/collection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.0.tgz", - "integrity": "sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/discordjs/discord.js?sponsor" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.1.1.tgz", - "integrity": "sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.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": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "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/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.3.tgz", - "integrity": "sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.3.tgz", - "integrity": "sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", - "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "macos": ">=11", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz", - "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "macos": ">=10.13", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz", - "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz", - "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz", - "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz", - "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz", - "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz", - "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.3.tgz", - "integrity": "sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.3.tgz", - "integrity": "sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.3.tgz", - "integrity": "sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.3.tgz", - "integrity": "sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.3.tgz", - "integrity": "sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.3.tgz", - "integrity": "sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.3.tgz", - "integrity": "sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==", - "cpu": [ - "wasm32" - ], - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.1.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.3.tgz", - "integrity": "sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.3.tgz", - "integrity": "sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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/@prisma/client": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.10.2.tgz", - "integrity": "sha512-ef49hzB2yJZCvM5gFHMxSFL9KYrIP9udpT5rYo0CsHD4P9IKj473MbhU1gjKKftiwWBTIyrt9jukprzZXazyag==", - "hasInstallScript": true, - "engines": { - "node": ">=16.13" - }, - "peerDependencies": { - "prisma": "*" - }, - "peerDependenciesMeta": { - "prisma": { - "optional": true - } - } - }, - "node_modules/@prisma/debug": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.10.2.tgz", - "integrity": "sha512-bkBOmH9dpEBbMKFJj8V+Zp8IZHIBjy3fSyhLhxj4FmKGb/UBSt9doyfA6k1UeUREsMJft7xgPYBbHSOYBr8XCA==" - }, - "node_modules/@prisma/engines": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.10.2.tgz", - "integrity": "sha512-HkSJvix6PW8YqEEt3zHfCYYJY69CXsNdhU+wna+4Y7EZ+AwzeupMnUThmvaDA7uqswiHkgm5/SZ6/4CStjaGmw==", - "hasInstallScript": true, - "dependencies": { - "@prisma/debug": "5.10.2", - "@prisma/engines-version": "5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9", - "@prisma/fetch-engine": "5.10.2", - "@prisma/get-platform": "5.10.2" - } - }, - "node_modules/@prisma/engines-version": { - "version": "5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9.tgz", - "integrity": "sha512-uCy/++3Jx/O3ufM+qv2H1L4tOemTNqcP/gyEVOlZqTpBvYJUe0tWtW0y3o2Ueq04mll4aM5X3f6ugQftOSLdFQ==" - }, - "node_modules/@prisma/fetch-engine": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.10.2.tgz", - "integrity": "sha512-dSmXcqSt6DpTmMaLQ9K8ZKzVAMH3qwGCmYEZr/uVnzVhxRJ1EbT/w2MMwIdBNq1zT69Rvh0h75WMIi0mrIw7Hg==", - "dependencies": { - "@prisma/debug": "5.10.2", - "@prisma/engines-version": "5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9", - "@prisma/get-platform": "5.10.2" - } - }, - "node_modules/@prisma/get-platform": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.10.2.tgz", - "integrity": "sha512-nqXP6vHiY2PIsebBAuDeWiUYg8h8mfjBckHh6Jezuwej0QJNnjDiOq30uesmg+JXxGk99nqyG3B7wpcOODzXvg==", - "dependencies": { - "@prisma/debug": "5.10.2" - } - }, - "node_modules/@sapphire/async-queue": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.2.tgz", - "integrity": "sha512-7X7FFAA4DngXUl95+hYbUF19bp1LGiffjJtu7ygrZrbdCSsdDDBaSjB7Akw0ZbOu6k0xpXyljnJ6/RZUvLfRdg==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/decorators": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@sapphire/decorators/-/decorators-6.1.0.tgz", - "integrity": "sha512-LAml5F/JN1PMm0krKsuZQ7R32DboQZE1A1ULyEK/m1hkxRt/ympYWSBKVwnurDb+kyPD2CaHMOgKgDW2Gt6mwA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/discord-utilities": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@sapphire/discord-utilities/-/discord-utilities-3.2.3.tgz", - "integrity": "sha512-tGR1gp7djEEFuIFcj4fa0kaaJ/+sfm9UHHav6hSCvwytP33tUAIiH7hJhgbM/B7/WWCiwDIZXGBdKg9Wwc0TdA==", - "dependencies": { - "discord-api-types": "^0.37.73" - }, - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/discord.js-utilities": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@sapphire/discord.js-utilities/-/discord.js-utilities-7.2.1.tgz", - "integrity": "sha512-Yq9mml/QhH/1GWylo4XyjrIZRo1KVkX5r4e1Vo14cR6Ce2eI9TJLqyFKl/0ZFQiLPr0YDLxfrqxd2WSXA6uUyw==", - "dependencies": { - "@sapphire/discord-utilities": "^3.2.3", - "@sapphire/duration": "^1.1.2", - "@sapphire/utilities": "^3.15.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.6.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/duration": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@sapphire/duration/-/duration-1.1.2.tgz", - "integrity": "sha512-m+DpXedUHdnH3rM6P9Hiyb9dpdXKb8WeTAVIug0QuN8tarQedbymbOor+UFmBfCbKOkoW9HvGK10xDwDvSfKrw==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/framework": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@sapphire/framework/-/framework-5.2.1.tgz", - "integrity": "sha512-47V3BPe3On3SB+Mbdb4eWPnKfNKV5Js1rLUyt+74WUY+MsS2Utja6Y26gswqk+GW3jqiX67tWTnIK3els+PVsw==", - "dependencies": { - "@discordjs/builders": "^1.8.1", - "@sapphire/discord-utilities": "^3.2.3", - "@sapphire/discord.js-utilities": "^7.2.0", - "@sapphire/lexure": "^1.1.7", - "@sapphire/pieces": "^4.2.2", - "@sapphire/ratelimits": "^2.4.9", - "@sapphire/result": "^2.6.6", - "@sapphire/stopwatch": "^1.5.2", - "@sapphire/utilities": "^3.15.3" - }, - "engines": { - "node": ">=v18", - "npm": ">=7" - } - }, - "node_modules/@sapphire/lexure": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@sapphire/lexure/-/lexure-1.1.7.tgz", - "integrity": "sha512-6PqU2/V+w1k4DHbZ8erIH+iaT/kAmLfReiWNUURt1akfrPTWqlVYWfuxkHXF0JMPk53r4NIkZoitiWwGUtPF+Q==", - "dependencies": { - "@sapphire/result": "^2.6.6" - }, - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/pieces": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@sapphire/pieces/-/pieces-4.2.2.tgz", - "integrity": "sha512-DvAC+zTgm5o41D6iX+jBjMp+rRmoHPKNYnav6v6vQLTxBJb+iFMmup9ZREiuXdrh1ejrmVRZojnnI59xQgezwQ==", - "dependencies": { - "@discordjs/collection": "^1.5.3", - "@sapphire/utilities": "^3.15.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/plugin-logger": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@sapphire/plugin-logger/-/plugin-logger-4.0.2.tgz", - "integrity": "sha512-5Nr++u+fA3/jZwj1aL9Z16RgyJZRE1gyUftfWjrzdndE5FkcbnLiVCKvnI8WzSupVhdn6kMaCWAteOSgAaq3lQ==", - "dependencies": { - "@sapphire/timestamp": "^1.0.3", - "colorette": "^2.0.20" - }, - "engines": { - "node": ">=v18", - "npm": ">=7" - } - }, - "node_modules/@sapphire/plugin-subcommands": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@sapphire/plugin-subcommands/-/plugin-subcommands-6.0.3.tgz", - "integrity": "sha512-SLDlTjMrMpb3s89ZjrBvVbMWsXfNNciO6SnNQdKLKTUQwktaYxIdj+k3MmEWpN19i8W9ogRvIrLl0Hw20pPUng==", - "dependencies": { - "@sapphire/utilities": "^3.15.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=v18", - "npm": ">=7" - } - }, - "node_modules/@sapphire/ratelimits": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/@sapphire/ratelimits/-/ratelimits-2.4.9.tgz", - "integrity": "sha512-eEE385IrFsD90gg696MWNqbeDjo1ZgtBvL66BezIwJEwDguhLP5AVsBsT4uCacX/92aeHl8i2nVvtusIBXZNSg==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/result": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@sapphire/result/-/result-2.6.6.tgz", - "integrity": "sha512-QCjj7X/QlY0QUCeAaZQmnrsMH/b2BMQYee3F1Y5iF17JagUQqO3KZlG7vfXWQU3SRAJX5OgZZynBjixUH+nNGg==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/shapeshift": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.7.tgz", - "integrity": "sha512-4It2mxPSr4OGn4HSQWGmhFMsNFGfFVhWeRPCRwbH972Ek2pzfGRZtb0pJ4Ze6oIzcyh2jw7nUDa6qGlWofgd9g==", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=v16" - } - }, - "node_modules/@sapphire/snowflake": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.3.tgz", - "integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/stopwatch": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@sapphire/stopwatch/-/stopwatch-1.5.2.tgz", - "integrity": "sha512-FrR1GnaEIuXpEfnaz7DjNgoN/Cp8dJ5XFgb8CxXTCAJi8LYk0YsyGSdmmcs9R3ZNZrA1vOSv0dFVLitgiVA36Q==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/timestamp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@sapphire/timestamp/-/timestamp-1.0.3.tgz", - "integrity": "sha512-I2TwqlLDA2Uu576VUgyBaT1gP1WSWPxeW3NqFxsSJfwFyvzXkTzyQiYce0eWMpM6BdBCq7Dddg+Yayls/5K1RA==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/utilities": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/@sapphire/utilities/-/utilities-3.15.3.tgz", - "integrity": "sha512-K5dFGOB5XvblXFN+Av+Tch/dVBAifmxtZ9/2mFo8VqzbiaFJIRUuoPAoNsp8pWYaU423yV8bfD8WsCSNd9w1YQ==", - "engines": { - "node": ">=v14.0.0" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", - "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" - }, - "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/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" - }, - "node_modules/@types/node": { - "version": "20.12.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.10.tgz", - "integrity": "sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz", - "integrity": "sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.7.1", - "@typescript-eslint/type-utils": "7.7.1", - "@typescript-eslint/utils": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.1.tgz", - "integrity": "sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.7.1", - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/typescript-estree": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz", - "integrity": "sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz", - "integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "7.7.1", - "@typescript-eslint/utils": "7.7.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz", - "integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz", - "integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "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/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "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/utils": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", - "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.15", - "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.7.1", - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/typescript-estree": "7.7.1", - "semver": "^7.6.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz", - "integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.7.1", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@vladfrangu/async_event_emitter": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.4.tgz", - "integrity": "sha512-ButUPz9E9cXMLgvAW8aLAKKJJsPu1dY1/l/E8xzLFuysowXygs6GBcyunK9rnGC4zTsnIc2mQo71rGw9U+Ykug==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "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", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "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": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/auto-changelog": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.4.0.tgz", - "integrity": "sha512-vh17hko1c0ItsEcw6m7qPRf3m45u+XK5QyCrrBFViElZ8jnKrPC1roSznrd1fIB/0vR/zawdECCRJtTuqIXaJw==", - "dev": true, - "dependencies": { - "commander": "^7.2.0", - "handlebars": "^4.7.7", - "node-fetch": "^2.6.1", - "parse-github-url": "^1.0.2", - "semver": "^7.3.5" - }, - "bin": { - "auto-changelog": "src/index.js" - }, - "engines": { - "node": ">=8.3" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/bufferutil": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", - "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" - }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "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==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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/denque": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", - "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/discord-api-types": { - "version": "0.37.83", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.83.tgz", - "integrity": "sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==" - }, - "node_modules/discord-js-button-pagination-ts": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/discord-js-button-pagination-ts/-/discord-js-button-pagination-ts-4.2.0.tgz", - "integrity": "sha512-z19Mv6dYQPVXKZZ5h1nRpncU34Gt5e801OOoGGjJF3DrWPMjF5L649Y0YsTEvNZnoQ/oZ9nwAC3rsRocw16YWg==", - "dependencies": { - "discord.js": "^14.14.1 - ^14.15.0" - } - }, - "node_modules/discord.js": { - "version": "14.15.2", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.15.2.tgz", - "integrity": "sha512-wGD37YCaTUNprtpqMIRuNiswwsvSWXrHykBSm2SAosoTYut0VUDj9yo9t4iLtMKvuhI49zYkvKc2TNdzdvpJhg==", - "dependencies": { - "@discordjs/builders": "^1.8.1", - "@discordjs/collection": "1.5.3", - "@discordjs/formatters": "^0.4.0", - "@discordjs/rest": "^2.3.0", - "@discordjs/util": "^1.1.0", - "@discordjs/ws": "^1.1.0", - "@sapphire/snowflake": "3.5.3", - "discord-api-types": "0.37.83", - "fast-deep-equal": "3.1.3", - "lodash.snakecase": "4.1.1", - "tslib": "2.6.2", - "undici": "6.13.0" - }, - "engines": { - "node": ">=16.11.0" - }, - "funding": { - "url": "https://github.com/discordjs/discord.js?sponsor" - } - }, - "node_modules/discordbotlist-djs": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/discordbotlist-djs/-/discordbotlist-djs-0.0.4.tgz", - "integrity": "sha512-Z/FdpQmV33pCSUGgq6YXWHPZXHtjXh0pjGWTyAw05GxBnNHahKbmos1TMaX807FYwDNXcE3q0fN4+uv9BtSRIQ==", - "dependencies": { - "@types/express": "^4.17.21", - "express": "^4.18.2", - "tiny-typed-emitter": "^2.1.0", - "tslib": "^2.5.0", - "undici": "^6.18.2" - } - }, - "node_modules/discordbotlist-djs/node_modules/undici": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.18.2.tgz", - "integrity": "sha512-o/MQLTwRm9IVhOqhZ0NQ9oXax1ygPjw6Vs+Vq/4QRjbOAC3B1GCHy7TYxxbExKlb7bzDRzt9vBWU6BDz0RFfYg==", - "engines": { - "node": ">=18.17" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" - }, - "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.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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-typescript": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", - "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "fast-glob": "^3.3.1", - "get-tsconfig": "^4.5.0", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "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-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "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.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "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/doctrine": { - "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": ">=0.10.0" - } - }, - "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": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "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" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "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.4" - }, - "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", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "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==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "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": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/function-bind": { - "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/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "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/generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dependencies": { - "is-property": "^1.0.2" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", - "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", - "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.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "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.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "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/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "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==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "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" - }, - "engines": { - "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==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "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.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" - }, - "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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "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==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "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/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "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/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" - }, - "node_modules/loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loglevel-colored-level-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", - "integrity": "sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "loglevel": "^1.4.1" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, - "node_modules/lru-cache": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", - "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", - "engines": { - "node": ">=16.14" - } - }, - "node_modules/magic-bytes.js": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.10.0.tgz", - "integrity": "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "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", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/mysql2": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.0.tgz", - "integrity": "sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==", - "dependencies": { - "denque": "^2.1.0", - "generate-function": "^2.3.1", - "iconv-lite": "^0.6.3", - "long": "^5.2.1", - "lru-cache": "^8.0.0", - "named-placeholders": "^1.1.3", - "seq-queue": "^0.0.5", - "sqlstring": "^2.3.2" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/named-placeholders": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", - "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", - "dependencies": { - "lru-cache": "^7.14.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/named-placeholders/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", - "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "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.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" - } - }, - "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-github-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", - "dev": true, - "bin": { - "parse-github-url": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "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", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-eslint": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.3.0.tgz", - "integrity": "sha512-Lh102TIFCr11PJKUMQ2kwNmxGhTsv/KzUg9QYF2Gkw259g/kPgndZDWavk7/ycbRvj2oz4BPZ1gCU8bhfZH/Xg==", - "dev": true, - "dependencies": { - "@typescript-eslint/parser": "^6.7.5", - "common-tags": "^1.4.0", - "dlv": "^1.1.0", - "eslint": "^8.7.0", - "indent-string": "^4.0.0", - "lodash.merge": "^4.6.0", - "loglevel-colored-level-prefix": "^1.0.0", - "prettier": "^3.0.1", - "pretty-format": "^29.7.0", - "require-relative": "^0.8.7", - "typescript": "^5.2.2", - "vue-eslint-parser": "^9.1.0" - }, - "engines": { - "node": ">=16.10.0" - }, - "peerDependencies": { - "prettier-plugin-svelte": "^3.0.0", - "svelte-eslint-parser": "*" - }, - "peerDependenciesMeta": { - "prettier-plugin-svelte": { - "optional": true - }, - "svelte-eslint-parser": { - "optional": true - } - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/prettier-eslint/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/prettier-eslint/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prisma": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.10.2.tgz", - "integrity": "sha512-hqb/JMz9/kymRE25pMWCxkdyhbnIWrq+h7S6WysJpdnCvhstbJSNP/S6mScEcqiB8Qv2F+0R3yG+osRaWqZacQ==", - "hasInstallScript": true, - "dependencies": { - "@prisma/engines": "5.10.2" - }, - "bin": { - "prisma": "build/index.js" - }, - "engines": { - "node": ">=16.13" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "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/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.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==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.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", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/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==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/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==" - }, - "node_modules/seq-queue": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", - "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^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", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/sharp": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.3.tgz", - "integrity": "sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.6.0" - }, - "engines": { - "libvips": ">=8.15.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.3", - "@img/sharp-darwin-x64": "0.33.3", - "@img/sharp-libvips-darwin-arm64": "1.0.2", - "@img/sharp-libvips-darwin-x64": "1.0.2", - "@img/sharp-libvips-linux-arm": "1.0.2", - "@img/sharp-libvips-linux-arm64": "1.0.2", - "@img/sharp-libvips-linux-s390x": "1.0.2", - "@img/sharp-libvips-linux-x64": "1.0.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", - "@img/sharp-libvips-linuxmusl-x64": "1.0.2", - "@img/sharp-linux-arm": "0.33.3", - "@img/sharp-linux-arm64": "0.33.3", - "@img/sharp-linux-s390x": "0.33.3", - "@img/sharp-linux-x64": "0.33.3", - "@img/sharp-linuxmusl-arm64": "0.33.3", - "@img/sharp-linuxmusl-x64": "0.33.3", - "@img/sharp-wasm32": "0.33.3", - "@img/sharp-win32-ia32": "0.33.3", - "@img/sharp-win32-x64": "0.33.3" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sqlstring": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", - "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "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==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/tiny-typed-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", - "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" - }, - "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", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", - "dev": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/ts-mixer": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", - "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==" - }, - "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", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "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", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.13.0.tgz", - "integrity": "sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==", - "engines": { - "node": ">=18.0" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utf-8-validate": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.3.tgz", - "integrity": "sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vue-eslint-parser": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz", - "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.6" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "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==", - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "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" - } - }, - "node_modules/zlib-sync": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/zlib-sync/-/zlib-sync-0.1.9.tgz", - "integrity": "sha512-DinB43xCjVwIBDpaIvQqHbmDsnYnSt6HJ/yiB2MZQGTqgPcwBSZqLkimXwK8BvdjQ/MaZysb5uEenImncqvCqQ==", - "hasInstallScript": true, - "dependencies": { - "nan": "^2.18.0" - } - } - } + "name": "kaikideishubot", + "version": "6.1.17", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "kaikideishubot", + "version": "6.1.17", + "license": "MIT", + "dependencies": { + "@prisma/client": "^5.10.2", + "@sapphire/decorators": "^6.1.0", + "@sapphire/framework": "^5.2.1", + "@sapphire/plugin-logger": "^4.0.2", + "@sapphire/plugin-subcommands": "^6.0.3", + "@sapphire/shapeshift": "^3.9.7", + "bufferutil": "^4.0.8", + "discord-js-button-pagination-ts": "^4.2.0", + "discord.js": "^14.15.2", + "discordbotlist-djs": "^0.0.4", + "dotenv": "^16.4.5", + "mysql2": "^3.10.0", + "node-gyp": "^10.1.0", + "prisma": "^5.10.2", + "sharp": "^0.33.3", + "utf-8-validate": "^6.0.3", + "zlib-sync": "^0.1.9" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^7.7.1", + "@typescript-eslint/parser": "^7.7.1", + "auto-changelog": "^2.4.0", + "eslint": "^8.57.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", + "source-map-support": "^0.5.21", + "typescript": "^5.4.5" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=9.0.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@discordjs/builders": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.8.1.tgz", + "integrity": "sha512-GkF+HM01FHy+NSoTaUPR8z44otfQgJ1AIsRxclYGUZDyUbdZEFyD/5QVv2Y1Flx6M+B0bQLzg2M9CJv5lGTqpA==", + "dependencies": { + "@discordjs/formatters": "^0.4.0", + "@discordjs/util": "^1.1.0", + "@sapphire/shapeshift": "^3.9.7", + "discord-api-types": "0.37.83", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.11.0" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@discordjs/collection": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz", + "integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==", + "engines": { + "node": ">=16.11.0" + } + }, + "node_modules/@discordjs/formatters": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.4.0.tgz", + "integrity": "sha512-fJ06TLC1NiruF35470q3Nr1bi95BdvKFAF+T5bNfZJ4bNdqZ3VZ+Ttg6SThqTxm6qumSG3choxLBHMC69WXNXQ==", + "dependencies": { + "discord-api-types": "0.37.83" + }, + "engines": { + "node": ">=16.11.0" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@discordjs/rest": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.3.0.tgz", + "integrity": "sha512-C1kAJK8aSYRv3ZwMG8cvrrW4GN0g5eMdP8AuN8ODH5DyOCbHgJspze1my3xHOAgwLJdKUbWNVyAeJ9cEdduqIg==", + "dependencies": { + "@discordjs/collection": "^2.1.0", + "@discordjs/util": "^1.1.0", + "@sapphire/async-queue": "^1.5.2", + "@sapphire/snowflake": "^3.5.3", + "@vladfrangu/async_event_emitter": "^2.2.4", + "discord-api-types": "0.37.83", + "magic-bytes.js": "^1.10.0", + "tslib": "^2.6.2", + "undici": "6.13.0" + }, + "engines": { + "node": ">=16.11.0" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@discordjs/rest/node_modules/@discordjs/collection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.0.tgz", + "integrity": "sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@discordjs/util": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.0.tgz", + "integrity": "sha512-IndcI5hzlNZ7GS96RV3Xw1R2kaDuXEp7tRIy/KlhidpN/BQ1qh1NZt3377dMLTa44xDUNKT7hnXkA/oUAzD/lg==", + "engines": { + "node": ">=16.11.0" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@discordjs/ws": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.1.0.tgz", + "integrity": "sha512-O97DIeSvfNTn5wz5vaER6ciyUsr7nOqSEtsLoMhhIgeFkhnxLRqSr00/Fpq2/ppLgjDGLbQCDzIK7ilGoB/M7A==", + "dependencies": { + "@discordjs/collection": "^2.1.0", + "@discordjs/rest": "^2.3.0", + "@discordjs/util": "^1.1.0", + "@sapphire/async-queue": "^1.5.2", + "@types/ws": "^8.5.10", + "@vladfrangu/async_event_emitter": "^2.2.4", + "discord-api-types": "0.37.83", + "tslib": "^2.6.2", + "ws": "^8.16.0" + }, + "engines": { + "node": ">=16.11.0" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@discordjs/ws/node_modules/@discordjs/collection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.0.tgz", + "integrity": "sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.1.1.tgz", + "integrity": "sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.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": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "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/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.3.tgz", + "integrity": "sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.2" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.3.tgz", + "integrity": "sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.2" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", + "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "macos": ">=11", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz", + "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "macos": ">=10.13", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz", + "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz", + "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz", + "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz", + "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz", + "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz", + "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.3.tgz", + "integrity": "sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.2" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.3.tgz", + "integrity": "sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.2" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.3.tgz", + "integrity": "sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.2" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.3.tgz", + "integrity": "sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.2" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.3.tgz", + "integrity": "sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.2" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.3.tgz", + "integrity": "sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.2" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.3.tgz", + "integrity": "sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.1.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.3.tgz", + "integrity": "sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.3.tgz", + "integrity": "sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@prisma/client": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.10.2.tgz", + "integrity": "sha512-ef49hzB2yJZCvM5gFHMxSFL9KYrIP9udpT5rYo0CsHD4P9IKj473MbhU1gjKKftiwWBTIyrt9jukprzZXazyag==", + "hasInstallScript": true, + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, + "node_modules/@prisma/debug": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.10.2.tgz", + "integrity": "sha512-bkBOmH9dpEBbMKFJj8V+Zp8IZHIBjy3fSyhLhxj4FmKGb/UBSt9doyfA6k1UeUREsMJft7xgPYBbHSOYBr8XCA==" + }, + "node_modules/@prisma/engines": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.10.2.tgz", + "integrity": "sha512-HkSJvix6PW8YqEEt3zHfCYYJY69CXsNdhU+wna+4Y7EZ+AwzeupMnUThmvaDA7uqswiHkgm5/SZ6/4CStjaGmw==", + "hasInstallScript": true, + "dependencies": { + "@prisma/debug": "5.10.2", + "@prisma/engines-version": "5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9", + "@prisma/fetch-engine": "5.10.2", + "@prisma/get-platform": "5.10.2" + } + }, + "node_modules/@prisma/engines-version": { + "version": "5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9.tgz", + "integrity": "sha512-uCy/++3Jx/O3ufM+qv2H1L4tOemTNqcP/gyEVOlZqTpBvYJUe0tWtW0y3o2Ueq04mll4aM5X3f6ugQftOSLdFQ==" + }, + "node_modules/@prisma/fetch-engine": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.10.2.tgz", + "integrity": "sha512-dSmXcqSt6DpTmMaLQ9K8ZKzVAMH3qwGCmYEZr/uVnzVhxRJ1EbT/w2MMwIdBNq1zT69Rvh0h75WMIi0mrIw7Hg==", + "dependencies": { + "@prisma/debug": "5.10.2", + "@prisma/engines-version": "5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9", + "@prisma/get-platform": "5.10.2" + } + }, + "node_modules/@prisma/get-platform": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.10.2.tgz", + "integrity": "sha512-nqXP6vHiY2PIsebBAuDeWiUYg8h8mfjBckHh6Jezuwej0QJNnjDiOq30uesmg+JXxGk99nqyG3B7wpcOODzXvg==", + "dependencies": { + "@prisma/debug": "5.10.2" + } + }, + "node_modules/@sapphire/async-queue": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.2.tgz", + "integrity": "sha512-7X7FFAA4DngXUl95+hYbUF19bp1LGiffjJtu7ygrZrbdCSsdDDBaSjB7Akw0ZbOu6k0xpXyljnJ6/RZUvLfRdg==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/decorators": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@sapphire/decorators/-/decorators-6.1.0.tgz", + "integrity": "sha512-LAml5F/JN1PMm0krKsuZQ7R32DboQZE1A1ULyEK/m1hkxRt/ympYWSBKVwnurDb+kyPD2CaHMOgKgDW2Gt6mwA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/discord-utilities": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@sapphire/discord-utilities/-/discord-utilities-3.2.3.tgz", + "integrity": "sha512-tGR1gp7djEEFuIFcj4fa0kaaJ/+sfm9UHHav6hSCvwytP33tUAIiH7hJhgbM/B7/WWCiwDIZXGBdKg9Wwc0TdA==", + "dependencies": { + "discord-api-types": "^0.37.73" + }, + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/discord.js-utilities": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@sapphire/discord.js-utilities/-/discord.js-utilities-7.2.1.tgz", + "integrity": "sha512-Yq9mml/QhH/1GWylo4XyjrIZRo1KVkX5r4e1Vo14cR6Ce2eI9TJLqyFKl/0ZFQiLPr0YDLxfrqxd2WSXA6uUyw==", + "dependencies": { + "@sapphire/discord-utilities": "^3.2.3", + "@sapphire/duration": "^1.1.2", + "@sapphire/utilities": "^3.15.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.6.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/duration": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@sapphire/duration/-/duration-1.1.2.tgz", + "integrity": "sha512-m+DpXedUHdnH3rM6P9Hiyb9dpdXKb8WeTAVIug0QuN8tarQedbymbOor+UFmBfCbKOkoW9HvGK10xDwDvSfKrw==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/framework": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@sapphire/framework/-/framework-5.2.1.tgz", + "integrity": "sha512-47V3BPe3On3SB+Mbdb4eWPnKfNKV5Js1rLUyt+74WUY+MsS2Utja6Y26gswqk+GW3jqiX67tWTnIK3els+PVsw==", + "dependencies": { + "@discordjs/builders": "^1.8.1", + "@sapphire/discord-utilities": "^3.2.3", + "@sapphire/discord.js-utilities": "^7.2.0", + "@sapphire/lexure": "^1.1.7", + "@sapphire/pieces": "^4.2.2", + "@sapphire/ratelimits": "^2.4.9", + "@sapphire/result": "^2.6.6", + "@sapphire/stopwatch": "^1.5.2", + "@sapphire/utilities": "^3.15.3" + }, + "engines": { + "node": ">=v18", + "npm": ">=7" + } + }, + "node_modules/@sapphire/lexure": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@sapphire/lexure/-/lexure-1.1.7.tgz", + "integrity": "sha512-6PqU2/V+w1k4DHbZ8erIH+iaT/kAmLfReiWNUURt1akfrPTWqlVYWfuxkHXF0JMPk53r4NIkZoitiWwGUtPF+Q==", + "dependencies": { + "@sapphire/result": "^2.6.6" + }, + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/pieces": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@sapphire/pieces/-/pieces-4.2.2.tgz", + "integrity": "sha512-DvAC+zTgm5o41D6iX+jBjMp+rRmoHPKNYnav6v6vQLTxBJb+iFMmup9ZREiuXdrh1ejrmVRZojnnI59xQgezwQ==", + "dependencies": { + "@discordjs/collection": "^1.5.3", + "@sapphire/utilities": "^3.15.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/plugin-logger": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@sapphire/plugin-logger/-/plugin-logger-4.0.2.tgz", + "integrity": "sha512-5Nr++u+fA3/jZwj1aL9Z16RgyJZRE1gyUftfWjrzdndE5FkcbnLiVCKvnI8WzSupVhdn6kMaCWAteOSgAaq3lQ==", + "dependencies": { + "@sapphire/timestamp": "^1.0.3", + "colorette": "^2.0.20" + }, + "engines": { + "node": ">=v18", + "npm": ">=7" + } + }, + "node_modules/@sapphire/plugin-subcommands": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@sapphire/plugin-subcommands/-/plugin-subcommands-6.0.3.tgz", + "integrity": "sha512-SLDlTjMrMpb3s89ZjrBvVbMWsXfNNciO6SnNQdKLKTUQwktaYxIdj+k3MmEWpN19i8W9ogRvIrLl0Hw20pPUng==", + "dependencies": { + "@sapphire/utilities": "^3.15.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=v18", + "npm": ">=7" + } + }, + "node_modules/@sapphire/ratelimits": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/@sapphire/ratelimits/-/ratelimits-2.4.9.tgz", + "integrity": "sha512-eEE385IrFsD90gg696MWNqbeDjo1ZgtBvL66BezIwJEwDguhLP5AVsBsT4uCacX/92aeHl8i2nVvtusIBXZNSg==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/result": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/@sapphire/result/-/result-2.6.6.tgz", + "integrity": "sha512-QCjj7X/QlY0QUCeAaZQmnrsMH/b2BMQYee3F1Y5iF17JagUQqO3KZlG7vfXWQU3SRAJX5OgZZynBjixUH+nNGg==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/shapeshift": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.7.tgz", + "integrity": "sha512-4It2mxPSr4OGn4HSQWGmhFMsNFGfFVhWeRPCRwbH972Ek2pzfGRZtb0pJ4Ze6oIzcyh2jw7nUDa6qGlWofgd9g==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=v16" + } + }, + "node_modules/@sapphire/snowflake": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.3.tgz", + "integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/stopwatch": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@sapphire/stopwatch/-/stopwatch-1.5.2.tgz", + "integrity": "sha512-FrR1GnaEIuXpEfnaz7DjNgoN/Cp8dJ5XFgb8CxXTCAJi8LYk0YsyGSdmmcs9R3ZNZrA1vOSv0dFVLitgiVA36Q==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/timestamp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sapphire/timestamp/-/timestamp-1.0.3.tgz", + "integrity": "sha512-I2TwqlLDA2Uu576VUgyBaT1gP1WSWPxeW3NqFxsSJfwFyvzXkTzyQiYce0eWMpM6BdBCq7Dddg+Yayls/5K1RA==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/utilities": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/@sapphire/utilities/-/utilities-3.15.3.tgz", + "integrity": "sha512-K5dFGOB5XvblXFN+Av+Tch/dVBAifmxtZ9/2mFo8VqzbiaFJIRUuoPAoNsp8pWYaU423yV8bfD8WsCSNd9w1YQ==", + "engines": { + "node": ">=v14.0.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "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/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "node_modules/@types/node": { + "version": "20.12.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.10.tgz", + "integrity": "sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz", + "integrity": "sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/type-utils": "7.7.1", + "@typescript-eslint/utils": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.1.tgz", + "integrity": "sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz", + "integrity": "sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz", + "integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/utils": "7.7.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz", + "integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz", + "integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "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/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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/utils": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", + "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", + "semver": "^7.6.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz", + "integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.7.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vladfrangu/async_event_emitter": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.4.tgz", + "integrity": "sha512-ButUPz9E9cXMLgvAW8aLAKKJJsPu1dY1/l/E8xzLFuysowXygs6GBcyunK9rnGC4zTsnIc2mQo71rGw9U+Ykug==", + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "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": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/auto-changelog": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.4.0.tgz", + "integrity": "sha512-vh17hko1c0ItsEcw6m7qPRf3m45u+XK5QyCrrBFViElZ8jnKrPC1roSznrd1fIB/0vR/zawdECCRJtTuqIXaJw==", + "dev": true, + "dependencies": { + "commander": "^7.2.0", + "handlebars": "^4.7.7", + "node-fetch": "^2.6.1", + "parse-github-url": "^1.0.2", + "semver": "^7.3.5" + }, + "bin": { + "auto-changelog": "src/index.js" + }, + "engines": { + "node": ">=8.3" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "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/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bufferutil": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "18.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz", + "integrity": "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/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==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "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==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/discord-api-types": { + "version": "0.37.83", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.83.tgz", + "integrity": "sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==" + }, + "node_modules/discord-js-button-pagination-ts": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/discord-js-button-pagination-ts/-/discord-js-button-pagination-ts-4.2.0.tgz", + "integrity": "sha512-z19Mv6dYQPVXKZZ5h1nRpncU34Gt5e801OOoGGjJF3DrWPMjF5L649Y0YsTEvNZnoQ/oZ9nwAC3rsRocw16YWg==", + "dependencies": { + "discord.js": "^14.14.1 - ^14.15.0" + } + }, + "node_modules/discord.js": { + "version": "14.15.2", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.15.2.tgz", + "integrity": "sha512-wGD37YCaTUNprtpqMIRuNiswwsvSWXrHykBSm2SAosoTYut0VUDj9yo9t4iLtMKvuhI49zYkvKc2TNdzdvpJhg==", + "dependencies": { + "@discordjs/builders": "^1.8.1", + "@discordjs/collection": "1.5.3", + "@discordjs/formatters": "^0.4.0", + "@discordjs/rest": "^2.3.0", + "@discordjs/util": "^1.1.0", + "@discordjs/ws": "^1.1.0", + "@sapphire/snowflake": "3.5.3", + "discord-api-types": "0.37.83", + "fast-deep-equal": "3.1.3", + "lodash.snakecase": "4.1.1", + "tslib": "2.6.2", + "undici": "6.13.0" + }, + "engines": { + "node": ">=16.11.0" + }, + "funding": { + "url": "https://github.com/discordjs/discord.js?sponsor" + } + }, + "node_modules/discordbotlist-djs": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/discordbotlist-djs/-/discordbotlist-djs-0.0.4.tgz", + "integrity": "sha512-Z/FdpQmV33pCSUGgq6YXWHPZXHtjXh0pjGWTyAw05GxBnNHahKbmos1TMaX807FYwDNXcE3q0fN4+uv9BtSRIQ==", + "dependencies": { + "@types/express": "^4.17.21", + "express": "^4.18.2", + "tiny-typed-emitter": "^2.1.0", + "tslib": "^2.5.0", + "undici": "^6.18.2" + } + }, + "node_modules/discordbotlist-djs/node_modules/undici": { + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.18.2.tgz", + "integrity": "sha512-o/MQLTwRm9IVhOqhZ0NQ9oXax1ygPjw6Vs+Vq/4QRjbOAC3B1GCHy7TYxxbExKlb7bzDRzt9vBWU6BDz0RFfYg==", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "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.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "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-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "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.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "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/doctrine": { + "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": ">=0.10.0" + } + }, + "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": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "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" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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.4" + }, + "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", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "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==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.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": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "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/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "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/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "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.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "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.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "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/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "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==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "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.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" + }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "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==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/jackspeak": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "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/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "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/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "engines": { + "node": ">=16.14" + } + }, + "node_modules/magic-bytes.js": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.10.0.tgz", + "integrity": "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==" + }, + "node_modules/make-fetch-happen": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "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", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/mysql2": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.0.tgz", + "integrity": "sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==", + "dependencies": { + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.6.3", + "long": "^5.2.1", + "lru-cache": "^8.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", + "dependencies": { + "lru-cache": "^7.14.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/named-placeholders/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", + "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", + "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/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==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "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.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "dev": true, + "bin": { + "parse-github-url": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "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", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prisma": { + "version": "5.10.2", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.10.2.tgz", + "integrity": "sha512-hqb/JMz9/kymRE25pMWCxkdyhbnIWrq+h7S6WysJpdnCvhstbJSNP/S6mScEcqiB8Qv2F+0R3yG+osRaWqZacQ==", + "hasInstallScript": true, + "dependencies": { + "@prisma/engines": "5.10.2" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "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/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "engines": { + "node": ">= 4" + } + }, + "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, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.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==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.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", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/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==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/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==" + }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^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", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/sharp": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.3.tgz", + "integrity": "sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==", + "hasInstallScript": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.0" + }, + "engines": { + "libvips": ">=8.15.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.3", + "@img/sharp-darwin-x64": "0.33.3", + "@img/sharp-libvips-darwin-arm64": "1.0.2", + "@img/sharp-libvips-darwin-x64": "1.0.2", + "@img/sharp-libvips-linux-arm": "1.0.2", + "@img/sharp-libvips-linux-arm64": "1.0.2", + "@img/sharp-libvips-linux-s390x": "1.0.2", + "@img/sharp-libvips-linux-x64": "1.0.2", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", + "@img/sharp-libvips-linuxmusl-x64": "1.0.2", + "@img/sharp-linux-arm": "0.33.3", + "@img/sharp-linux-arm64": "0.33.3", + "@img/sharp-linux-s390x": "0.33.3", + "@img/sharp-linux-x64": "0.33.3", + "@img/sharp-linuxmusl-arm64": "0.33.3", + "@img/sharp-linuxmusl-x64": "0.33.3", + "@img/sharp-wasm32": "0.33.3", + "@img/sharp-win32-ia32": "0.33.3", + "@img/sharp-win32-x64": "0.33.3" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/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==" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tiny-typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", + "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" + }, + "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", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-mixer": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", + "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==" + }, + "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", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "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", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.13.0.tgz", + "integrity": "sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==", + "engines": { + "node": ">=18.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf-8-validate": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.3.tgz", + "integrity": "sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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==" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "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" + } + }, + "node_modules/zlib-sync": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/zlib-sync/-/zlib-sync-0.1.9.tgz", + "integrity": "sha512-DinB43xCjVwIBDpaIvQqHbmDsnYnSt6HJ/yiB2MZQGTqgPcwBSZqLkimXwK8BvdjQ/MaZysb5uEenImncqvCqQ==", + "hasInstallScript": true, + "dependencies": { + "nan": "^2.18.0" + } + } + } } diff --git a/package.json b/package.json index e3a996c1..066afe88 100644 --- a/package.json +++ b/package.json @@ -1,65 +1,64 @@ { - "name": "kaikideishubot", - "version": "6.1.17", - "main": "./dist/index.js", - "scripts": { - "start_docker": "npx prisma db push && npm run start", - "start": "node dist/index.js --color", - "build": "rm -rf dist/ && tsc -p tsconfig.json", - "version": "auto-changelog -p -u -o CHANGELOG.md -t keepachangelog && git add CHANGELOG.md", - "watch": "tsc -p tsconfig.json -w", - "dev": "npm run watch & npm run start_docker", - "format": "prettier --write .", - "lint": "prettier --check . && eslint ." - }, - "keywords": [ - "Community", - "Customizable", - "Discord", - "Typescript", - "Prisma", - "MySQL", - "Multipurpose", - "Docker" - ], - "author": "Cata ", - "license": "MIT", - "dependencies": { - "@prisma/client": "^5.10.2", - "@sapphire/decorators": "^6.1.0", - "@sapphire/framework": "^5.2.1", - "@sapphire/plugin-logger": "^4.0.2", - "@sapphire/plugin-subcommands": "^6.0.3", - "@sapphire/shapeshift": "^3.9.7", - "bufferutil": "^4.0.8", - "discord-js-button-pagination-ts": "^4.2.0", - "discord.js": "^14.15.2", - "discordbotlist-djs": "^0.0.4", - "dotenv": "^16.4.5", - "mysql2": "^3.10.0", - "prisma": "^5.10.2", - "sharp": "^0.33.3", - "utf-8-validate": "^6.0.3", - "zlib-sync": "^0.1.9" - }, - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.7.1", - "@typescript-eslint/parser": "^7.7.1", - "auto-changelog": "^2.4.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "prettier": "^3.2.5", - "prettier-eslint": "^16.3.0", - "typescript": "^5.4.5" - }, - "description": "Discord bot built with Sapphire, Prisma and MySQL2", - "repository": { - "type": "git", - "url": "https://github.com/cataclym/KaikiBot.git" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=9.0.0" - } + "name": "kaikideishubot", + "version": "6.1.17", + "main": "./dist/index.js", + "scripts": { + "start_docker": "npx prisma db push && npm run start", + "start": "node dist/index.js --color", + "build": "rm -rf dist/ && tsc -p tsconfig.json", + "version": "auto-changelog -p -u -o CHANGELOG.md -t keepachangelog && git add CHANGELOG.md", + "watch": "tsc -p tsconfig.json -w", + "dev": "npm run watch & npm run start_docker", + "lint": "eslint ." + }, + "keywords": [ + "Community", + "Customizable", + "Discord", + "Typescript", + "Prisma", + "MySQL", + "Multipurpose", + "Docker" + ], + "author": "Cata ", + "license": "MIT", + "dependencies": { + "@prisma/client": "^5.10.2", + "@sapphire/decorators": "^6.1.0", + "@sapphire/framework": "^5.2.1", + "@sapphire/plugin-logger": "^4.0.2", + "@sapphire/plugin-subcommands": "^6.0.3", + "@sapphire/shapeshift": "^3.9.7", + "bufferutil": "^4.0.8", + "discord-js-button-pagination-ts": "^4.2.0", + "discord.js": "^14.15.2", + "discordbotlist-djs": "^0.0.4", + "dotenv": "^16.4.5", + "mysql2": "^3.10.0", + "node-gyp": "^10.1.0", + "prisma": "^5.10.2", + "sharp": "^0.33.3", + "utf-8-validate": "^6.0.3", + "zlib-sync": "^0.1.9" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^7.7.1", + "@typescript-eslint/parser": "^7.7.1", + "auto-changelog": "^2.4.0", + "eslint": "^8.57.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", + "typescript": "^5.4.5", + "source-map-support": "^0.5.21" + }, + "description": "Discord bot built with Sapphire, Prisma and MySQL2", + "repository": { + "type": "git", + "url": "https://github.com/cataclym/KaikiBot.git" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=9.0.0" + } } diff --git a/src/arguments/activityType.ts b/src/arguments/activityType.ts index bb2f90cf..56a4dbcc 100644 --- a/src/arguments/activityType.ts +++ b/src/arguments/activityType.ts @@ -26,7 +26,7 @@ Valid types are: \`${ActivityTypeArgument.validActivities.join("`, `")}\``, private assertType(str: string): str is ValidActivities { return ActivityTypeArgument.validActivities.includes( - str as ValidActivities + str as ValidActivities ); } } diff --git a/src/arguments/category.ts b/src/arguments/category.ts index 170045d1..f7365021 100644 --- a/src/arguments/category.ts +++ b/src/arguments/category.ts @@ -18,7 +18,7 @@ export class CategoryArgument extends Argument { parameter, context, message: - "The provided argument could not be resolved to a category.", + "The provided argument could not be resolved to a category.", }); } diff --git a/src/arguments/command.ts b/src/arguments/command.ts index fd67e6a1..1e8ae2d2 100644 --- a/src/arguments/command.ts +++ b/src/arguments/command.ts @@ -16,8 +16,8 @@ export class CommandArgument extends Argument { }); const aliasResult = ( - container.stores.get("commands").aliases.get(parameter) - ); + container.stores.get("commands").aliases.get(parameter) + ); const partialResult = cmds .sort( @@ -36,7 +36,7 @@ export class CommandArgument extends Argument { if (!aliasResult && !fullNameResult && !partialResult) { return this.error({ message: - "The provided argument could not be resolved to a command.", + "The provided argument could not be resolved to a command.", parameter, context, }); diff --git a/src/arguments/guild.ts b/src/arguments/guild.ts index 508fbfc2..e4019f00 100644 --- a/src/arguments/guild.ts +++ b/src/arguments/guild.ts @@ -6,7 +6,7 @@ export class GuildArgument extends Argument { const guild = context.message.client.guilds.cache.find( (g) => g.name.toLowerCase() === parameter.toLowerCase() || - g.id === parameter + g.id === parameter ); if (guild) return this.ok(guild); diff --git a/src/arguments/kaikiCoin.ts b/src/arguments/kaikiCoin.ts index bcd3c2ae..0f710a49 100644 --- a/src/arguments/kaikiCoin.ts +++ b/src/arguments/kaikiCoin.ts @@ -18,7 +18,7 @@ export class KaikiCoinFlipArgument extends Argument { return this.error({ parameter, message: - "The provided argument could not be resolved to a coin side.", + "The provided argument could not be resolved to a coin side.", }); } } diff --git a/src/arguments/kaikiHentai.ts b/src/arguments/kaikiHentai.ts index 9bdf3634..363b6dff 100644 --- a/src/arguments/kaikiHentai.ts +++ b/src/arguments/kaikiHentai.ts @@ -7,9 +7,9 @@ export class KaikiHentaiArgument extends Argument { return KaikiHentaiArgument.hentaiArray.includes(parameter.toLowerCase()) ? this.ok(parameter) : this.error({ - parameter, - message: - "The provided argument could not be resolved to a hentai category.", - }); + parameter, + message: + "The provided argument could not be resolved to a hentai category.", + }); } } diff --git a/src/arguments/kaikiMoney.ts b/src/arguments/kaikiMoney.ts index 3e038f61..8fb230b2 100644 --- a/src/arguments/kaikiMoney.ts +++ b/src/arguments/kaikiMoney.ts @@ -10,24 +10,24 @@ export class KaikiMoneyArgument extends Argument { if (!int) { switch (input) { - case "ALL": - return this.ok( - await KaikiArgumentsTypes.getCurrency(context.message) - ); + case "ALL": + return this.ok( + await KaikiArgumentsTypes.getCurrency(context.message) + ); - case "HALF": - return this.ok( - (await KaikiArgumentsTypes.getCurrency( - context.message - )) / BigInt(2) - ); + case "HALF": + return this.ok( + (await KaikiArgumentsTypes.getCurrency( + context.message + )) / BigInt(2) + ); - case "MAX": - return this.ok( - BigInt( - Constants.MAGIC_NUMBERS.LIB.KAIKI.KAIKI_ARGS.MAX_INT - ) - ); + case "MAX": + return this.ok( + BigInt( + Constants.MAGIC_NUMBERS.LIB.KAIKI.KAIKI_ARGS.MAX_INT + ) + ); } return this.error({ context, diff --git a/src/commands/Administration/ban.ts b/src/commands/Administration/ban.ts index 002c7337..8a96edfa 100644 --- a/src/commands/Administration/ban.ts +++ b/src/commands/Administration/ban.ts @@ -29,7 +29,7 @@ export default class BanCommand extends KaikiCommand { ); const username = - user instanceof User ? user.username : user.user.username; + user instanceof User ? user.username : user.user.username; const guild = message.guild, guildClientMember = guild.members.me; @@ -54,8 +54,8 @@ export default class BanCommand extends KaikiCommand { // Check if member is ban-able if ( message.author.id !== message.guild?.ownerId && - (message.member as GuildMember).roles.highest.position <= - guildMember.roles.highest.position + (message.member as GuildMember).roles.highest.position <= + guildMember.roles.highest.position ) { return message.channel.send({ embeds: [ @@ -69,14 +69,14 @@ export default class BanCommand extends KaikiCommand { // x2 else if ( guildClientMember && - guildClientMember.roles.highest.position <= - guildMember.roles.highest.position + guildClientMember.roles.highest.position <= + guildMember.roles.highest.position ) { return message.channel.send({ embeds: [ new EmbedBuilder({ description: - "Sorry, I don't have permissions to ban this member.", + "Sorry, I don't have permissions to ban this member.", }).withErrorColor(message), ], }); diff --git a/src/commands/Administration/deleteChannel.ts b/src/commands/Administration/deleteChannel.ts index 633d28a7..c8ca1f6c 100644 --- a/src/commands/Administration/deleteChannel.ts +++ b/src/commands/Administration/deleteChannel.ts @@ -8,7 +8,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "deletechannel", aliases: ["dtchnl", "delchan"], description: - "Deletes one or more channels. Also deletes categories, threads and voice channels.", + "Deletes one or more channels. Also deletes categories, threads and voice channels.", usage: "#channel1 #channel2 #channel3", requiredUserPermissions: ["ManageChannels"], requiredClientPermissions: ["ManageChannels"], diff --git a/src/commands/Administration/softban.ts b/src/commands/Administration/softban.ts index fc34f84b..0066e05b 100644 --- a/src/commands/Administration/softban.ts +++ b/src/commands/Administration/softban.ts @@ -9,7 +9,7 @@ import Constants from "../../struct/Constants"; name: "softban", aliases: ["sb"], description: - "Bans and unbans a user by ID or name, with an optional message. Also removes all the users messages.", + "Bans and unbans a user by ID or name, with an optional message. Also removes all the users messages.", usage: "@notdreb Your behaviour is harmful", requiredUserPermissions: ["KickMembers", "ManageMessages"], requiredClientPermissions: ["BanMembers", "ManageMessages"], @@ -31,7 +31,7 @@ export default class BanCommand extends KaikiCommand { ); const username = - user instanceof User ? user.username : user.user.username; + user instanceof User ? user.username : user.user.username; const guild = message.guild, guildClientMember = guild.members.me; @@ -56,8 +56,8 @@ export default class BanCommand extends KaikiCommand { // Check if member is ban-able if ( message.author.id !== message.guild?.ownerId && - (message.member as GuildMember).roles.highest.position <= - guildMember.roles.highest.position + (message.member as GuildMember).roles.highest.position <= + guildMember.roles.highest.position ) { return message.channel.send({ embeds: [ @@ -71,14 +71,14 @@ export default class BanCommand extends KaikiCommand { // x2 else if ( guildClientMember && - guildClientMember.roles.highest.position <= - guildMember.roles.highest.position + guildClientMember.roles.highest.position <= + guildMember.roles.highest.position ) { return message.channel.send({ embeds: [ new EmbedBuilder({ description: - "Sorry, I don't have permissions to ban this member.", + "Sorry, I don't have permissions to ban this member.", }).withErrorColor(message), ], }); @@ -88,7 +88,7 @@ export default class BanCommand extends KaikiCommand { const m = await message.guild?.members.ban(user, { reason: reason, deleteMessageSeconds: - Constants.MAGIC_NUMBERS.CMDS.ADMIN.SB_MSG_DEL_SECONDS, + Constants.MAGIC_NUMBERS.CMDS.ADMIN.SB_MSG_DEL_SECONDS, }); try { diff --git a/src/commands/Anime/anime.ts b/src/commands/Anime/anime.ts index 64fe9b79..ef9f180b 100644 --- a/src/commands/Anime/anime.ts +++ b/src/commands/Anime/anime.ts @@ -59,7 +59,7 @@ export default class AnimeCommand extends KaikiCommand { const started = `${monthFormat.format(startDate.month)} ${startDate.day}, ${startDate.year}`; const ended = `${monthFormat.format(endDate.month)} ${endDate.day}, ${endDate.year}`; const aired = - started === ended ? started : `${started} to ${ended}`; + started === ended ? started : `${started} to ${ended}`; return message.channel.send({ embeds: [ diff --git a/src/commands/Anime/manga.ts b/src/commands/Anime/manga.ts index 84c46fec..bb28d935 100644 --- a/src/commands/Anime/manga.ts +++ b/src/commands/Anime/manga.ts @@ -65,11 +65,11 @@ export default class MangaCommand extends KaikiCommand { ? `${monthFormat.format(endDate.month)} ${endDate.day}, ${endDate.year}` : null; const aired = - started && ended - ? started === ended - ? started - : `${started} to ${ended}` - : started || "N/A"; + started && ended + ? started === ended + ? started + : `${started} to ${ended}` + : started || "N/A"; return message.channel.send({ embeds: [ diff --git a/src/commands/Emotes/addEmote.ts b/src/commands/Emotes/addEmote.ts index c85d73a2..e54d83bd 100644 --- a/src/commands/Emotes/addEmote.ts +++ b/src/commands/Emotes/addEmote.ts @@ -12,7 +12,7 @@ import Constants from "../../struct/Constants"; name: "addemote", aliases: ["ae"], description: - "Adds an emote from an image link or attached image, with an optional name.", + "Adds an emote from an image link or attached image, with an optional name.", usage: "image-link Emotename", requiredUserPermissions: ["ManageEmojisAndStickers"], requiredClientPermissions: ["ManageEmojisAndStickers"], @@ -28,7 +28,7 @@ export default class AddEmoteCommand extends KaikiCommand { ); let name = - message.attachments.first()?.name || (await args.rest("string")); + message.attachments.first()?.name || (await args.rest("string")); if (!url || !name) return; diff --git a/src/commands/Emotes/deleteEmote.ts b/src/commands/Emotes/deleteEmote.ts index 6b5a6615..5b72640a 100644 --- a/src/commands/Emotes/deleteEmote.ts +++ b/src/commands/Emotes/deleteEmote.ts @@ -12,7 +12,7 @@ const timer = (ms: number) => new Promise((res) => setTimeout(res, ms)); name: "deleteemote", aliases: ["de"], description: - "Deletes one or multiple emotes/emoji. Multiple emotes take longer, to avoid ratelimits. Keep a space between all emotes you wish to delete.", + "Deletes one or multiple emotes/emoji. Multiple emotes take longer, to avoid ratelimits. Keep a space between all emotes you wish to delete.", usage: ":NadekoSip:", requiredUserPermissions: ["ManageEmojisAndStickers"], requiredClientPermissions: ["ManageEmojisAndStickers"], @@ -33,9 +33,9 @@ export default class DeleteEmoteCommand extends KaikiCommand { if (emoji) { i > 0 ? (await timer( - Constants.MAGIC_NUMBERS.CMDS.EMOTES.DELETE_EMOTE - .DELETE_DELAY - )) && i++ + Constants.MAGIC_NUMBERS.CMDS.EMOTES.DELETE_EMOTE + .DELETE_DELAY + )) && i++ : i++; const deleted = await emoji.delete(); @@ -46,7 +46,7 @@ export default class DeleteEmoteCommand extends KaikiCommand { new EmbedBuilder({ title: "Error occurred", description: - "Some or all emotes could not be deleted.", + "Some or all emotes could not be deleted.", }).withErrorColor(message), ], }); diff --git a/src/commands/Emotes/emotecount.ts b/src/commands/Emotes/emotecount.ts index d5d44663..11aa3d53 100644 --- a/src/commands/Emotes/emotecount.ts +++ b/src/commands/Emotes/emotecount.ts @@ -8,9 +8,9 @@ import KaikiUtil from "../../lib/KaikiUtil"; import Constants from "../../struct/Constants"; type cleanGuildEmote = GuildEmoji & { - EmojiId: bigint; - Count: bigint; - GuildId: bigint; + EmojiId: bigint; + Count: bigint; + GuildId: bigint; }; type customGuildEmote = cleanGuildEmote | { Count: bigint }; @@ -19,7 +19,7 @@ type customGuildEmote = cleanGuildEmote | { Count: bigint }; name: "emotecount", aliases: ["emojicount", "ec"], description: - "Shows amount of times each emote has been used.\nUse --small for a more compact display.\nUse --clean to display *only* available emotes.", + "Shows amount of times each emote has been used.\nUse --small for a more compact display.\nUse --clean to display *only* available emotes.", usage: ["", "--small", "--clean"], preconditions: ["GuildOnly"], flags: ["small", "clean"], @@ -106,15 +106,15 @@ export default class EmoteCount extends KaikiCommand { if (isSmall) { for ( let i = - Constants.MAGIC_NUMBERS.CMDS.EMOTES.EMOTE_COUNT - .MAX_PR_PAGE, + Constants.MAGIC_NUMBERS.CMDS.EMOTES.EMOTE_COUNT + .MAX_PR_PAGE, p = 0; p < data.length; i += - Constants.MAGIC_NUMBERS.CMDS.EMOTES.EMOTE_COUNT.MAX_PR_PAGE, - p += - Constants.MAGIC_NUMBERS.CMDS.EMOTES.EMOTE_COUNT - .MAX_PR_PAGE + Constants.MAGIC_NUMBERS.CMDS.EMOTES.EMOTE_COUNT.MAX_PR_PAGE, + p += + Constants.MAGIC_NUMBERS.CMDS.EMOTES.EMOTE_COUNT + .MAX_PR_PAGE ) { pages.push( EmbedBuilder.from(baseEmbed).setDescription( @@ -128,15 +128,15 @@ export default class EmoteCount extends KaikiCommand { } else { for ( let i = - Constants.MAGIC_NUMBERS.CMDS.EMOTES.EMOTE_COUNT - .MIN_PR_PAGE, + Constants.MAGIC_NUMBERS.CMDS.EMOTES.EMOTE_COUNT + .MIN_PR_PAGE, p = 0; p < data.length; i += - Constants.MAGIC_NUMBERS.CMDS.EMOTES.EMOTE_COUNT.MIN_PR_PAGE, - p += - Constants.MAGIC_NUMBERS.CMDS.EMOTES.EMOTE_COUNT - .MIN_PR_PAGE + Constants.MAGIC_NUMBERS.CMDS.EMOTES.EMOTE_COUNT.MIN_PR_PAGE, + p += + Constants.MAGIC_NUMBERS.CMDS.EMOTES.EMOTE_COUNT + .MIN_PR_PAGE ) { pages.push( EmbedBuilder.from(baseEmbed).setDescription( diff --git a/src/commands/Fun/names.ts b/src/commands/Fun/names.ts index 05275d30..1aea6c4e 100644 --- a/src/commands/Fun/names.ts +++ b/src/commands/Fun/names.ts @@ -10,7 +10,7 @@ import Constants from "../../struct/Constants"; name: "names", aliases: ["name"], description: - "Returns yours or mentioned user's daddy nicknames. Delete your nicknames with 'delete' argument.", + "Returns yours or mentioned user's daddy nicknames. Delete your nicknames with 'delete' argument.", usage: ["@dreb", "delete"], preconditions: ["GuildOnly"], }) @@ -111,7 +111,7 @@ export default class NamesCommand extends KaikiCommand { let i = Constants.MAGIC_NUMBERS.CMDS.FUN.NAMES.NAMES_PR_PAGE, p = 0; p < nicknames.length; i += Constants.MAGIC_NUMBERS.CMDS.FUN.NAMES.NAMES_PR_PAGE, - p += Constants.MAGIC_NUMBERS.CMDS.FUN.NAMES.NAMES_PR_PAGE + p += Constants.MAGIC_NUMBERS.CMDS.FUN.NAMES.NAMES_PR_PAGE ) { pages.push( NamesCommand.baseEmbed(message, member).setDescription( diff --git a/src/commands/Fun/neofetch.ts b/src/commands/Fun/neofetch.ts index 3501b599..8c732701 100644 --- a/src/commands/Fun/neofetch.ts +++ b/src/commands/Fun/neofetch.ts @@ -14,7 +14,7 @@ import Constants from "../../struct/Constants"; name: "neofetch", aliases: ["neo", "fastfetch"], description: - "Displays neofetch/fastfetch ascii art. Provide argument '--list' to get a list of all supported distros.", + "Displays neofetch/fastfetch ascii art. Provide argument '--list' to get a list of all supported distros.", usage: ["", "opensuse", "--list"], cooldownDelay: 2000, typing: true, @@ -48,17 +48,17 @@ export default class NeofetchCommand extends KaikiCommand { const pages: EmbedBuilder[] = []; for ( let i = - Constants.MAGIC_NUMBERS.CMDS.FUN.NEOFETCH - .DISTROS_PR_PAGE, + Constants.MAGIC_NUMBERS.CMDS.FUN.NEOFETCH + .DISTROS_PR_PAGE, p = 0; p < distros.length; i = - i + - Constants.MAGIC_NUMBERS.CMDS.FUN.NEOFETCH.DISTROS_PR_PAGE, - p = - p + - Constants.MAGIC_NUMBERS.CMDS.FUN.NEOFETCH - .DISTROS_PR_PAGE + i + + Constants.MAGIC_NUMBERS.CMDS.FUN.NEOFETCH.DISTROS_PR_PAGE, + p = + p + + Constants.MAGIC_NUMBERS.CMDS.FUN.NEOFETCH + .DISTROS_PR_PAGE ) { pages.push( new EmbedBuilder() @@ -89,10 +89,10 @@ export default class NeofetchCommand extends KaikiCommand { return message.channel.send( await KaikiUtil.codeblock( "\u00AD" + - stdout.replace( - /```/g, - "\u0300`\u0300`\u0300`\u0300" - ) + stdout.replace( + /```/g, + "\u0300`\u0300`\u0300`\u0300" + ) ) ); }); diff --git a/src/commands/Fun/ttt.ts b/src/commands/Fun/ttt.ts index a6caa378..0798fec1 100644 --- a/src/commands/Fun/ttt.ts +++ b/src/commands/Fun/ttt.ts @@ -18,7 +18,7 @@ import KaikiEmbeds from "../../lib/Kaiki/KaikiEmbeds"; name: "tictactoe", aliases: ["ttt"], description: - "Starts a TicTacToe game, where you play against an @mentioned person.", + "Starts a TicTacToe game, where you play against an @mentioned person.", usage: ["@Dreb"], preconditions: ["GuildOnly"], }) @@ -77,9 +77,9 @@ export default class TicTacToeCommand extends KaikiCommand { .then(async (interaction) => { if (interaction.customId === "1") { new TicTacToe( - message.member as GuildMember, - playerTwo, - message + message.member as GuildMember, + playerTwo, + message ); await acceptMessage.delete(); } else { diff --git a/src/commands/Gambling/betflip.ts b/src/commands/Gambling/betflip.ts index cc79dbc0..28ef56cf 100644 --- a/src/commands/Gambling/betflip.ts +++ b/src/commands/Gambling/betflip.ts @@ -5,16 +5,38 @@ import images from "../../data/images.json"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; -type Sides = "tails" | "heads"; +export enum Sides { + tails = "tails", + heads = "heads", +} @ApplyOptions({ name: "betflip", aliases: ["bf"], description: - "Bet on tails or heads. Guessing correct awards you 1.95x the currency you've bet.", + "Bet on tails or heads. Guessing correct awards you 1.95x the currency you've bet.", usage: ["5 heads", "10 t"], }) -export default class BetflipCommands extends KaikiCommand { +export default class BetflipCommand extends KaikiCommand { + static RandomFlip = (): Sides => + Math.random() < 0.5 ? Sides.tails : Sides.heads; + + static async flip( + side = BetflipCommand.RandomFlip(), + amount = 100n + ): Promise<[Sides, bigint]> { + const coinFlipped: Sides = BetflipCommand.RandomFlip(); + + if (side === coinFlipped) { + return [ + coinFlipped, + BigInt(Math.round(parseInt(amount.toString()) * 1.95)), + ]; + } + + return [coinFlipped, 0n]; + } + public async messageRun(message: Message, args: Args): Promise { const number = await args.pick("kaikiMoney"); const coin = await args.rest("kaikiCoin"); @@ -37,19 +59,16 @@ export default class BetflipCommands extends KaikiCommand { }); } - const coinFlipped: Sides = Math.random() < 0.5 ? "tails" : "heads"; + const [coinFlipped, winnings] = await BetflipCommand.flip(); const emb = new EmbedBuilder({ image: { url: images.gambling.coin[coinFlipped] }, }).setTitle(`Flipped ${coinFlipped}!`); if (coin === coinFlipped) { - const amountWon = BigInt( - Math.round(parseInt(number.toString()) * 1.95) - ); await this.client.money.add( message.author.id, - amountWon, + winnings, "Betflip won x1.95" ); @@ -57,7 +76,7 @@ export default class BetflipCommands extends KaikiCommand { embeds: [ emb .setDescription( - `You won **${amountWon}** ${this.client.money.currencySymbol}!!` + `You won **${winnings}** ${this.client.money.currencySymbol}!!` ) .withOkColor(message), ], diff --git a/src/commands/Gambling/betroll.ts b/src/commands/Gambling/betroll.ts index 412b0fd5..ed2c6762 100644 --- a/src/commands/Gambling/betroll.ts +++ b/src/commands/Gambling/betroll.ts @@ -9,10 +9,40 @@ import Constants from "../../struct/Constants"; name: "betroll", aliases: ["br"], description: - "Bet an amount of currency and roll the dice. Rolling above 66 yields x2 the amount bet. Above 90 - x4 and 100 gives x10!", + "Bet an amount of currency and roll the dice. Rolling above 66 yields x2 the amount bet. Above 90 - x4 and 100 gives x10!", usage: ["69"], }) export default class BetRollCommand extends KaikiCommand { + public static async roll( + number = 100n + ): Promise<[BetRoll, number, bigint]> { + // Gives a random number between 0-100 + const roll = Math.round(Math.random() * 100); + + if ( + roll < Constants.MAGIC_NUMBERS.CMDS.GAMBLING.BET_ROLL.TWO_TIMES_ROLL + ) { + return [BetRoll.None, roll, 0n]; + } else if ( + roll < + Constants.MAGIC_NUMBERS.CMDS.GAMBLING.BET_ROLL.FOUR_TIMES_ROLL + ) { + const winnings = number * 2n; + + return [BetRoll.Double, roll, winnings]; + } else if ( + roll < Constants.MAGIC_NUMBERS.CMDS.GAMBLING.BET_ROLL.TEN_TIMES_ROLL + ) { + const winnings = number * 4n; + + return [BetRoll.Quadruple, roll, winnings]; + } else { + const winnings = number * 10n; + + return [BetRoll.Ten, roll, winnings]; + } + } + public async messageRun(message: Message, args: Args): Promise { const number = await args.rest("kaikiMoney"); @@ -34,80 +64,62 @@ export default class BetRollCommand extends KaikiCommand { }); } - // Gives a random number between 0-100 - const roll = Math.round(Math.random() * 100); - - if ( - roll < Constants.MAGIC_NUMBERS.CMDS.GAMBLING.BET_ROLL.TWO_TIMES_ROLL - ) { - return message.channel.send({ - embeds: [ - new EmbedBuilder() - .setDescription( - `🎲 You rolled \`${roll}\`. Better luck next time!` - ) - .withOkColor(message), - ], - }); - } else if ( - roll < - Constants.MAGIC_NUMBERS.CMDS.GAMBLING.BET_ROLL.FOUR_TIMES_ROLL - ) { - const winnings = number * 2n; + const [bet, roll, winnings] = await BetRollCommand.roll(number); + let msg: EmbedBuilder; + switch (bet) { + case BetRoll.None: + msg = new EmbedBuilder() + .setDescription( + `🎲 You rolled \`${roll}\`. Better luck next time!` + ) + .withOkColor(message); + break; + case BetRoll.Double: await this.client.money.add( message.author.id, winnings, "Betroll won x2" ); - - return message.channel.send({ - embeds: [ - new EmbedBuilder() - .setDescription( - `🎲 You rolled \`${roll}\`, and won **${winnings}** ${this.client.money.currencySymbol}, for rolling above 66` - ) - .withOkColor(message), - ], - }); - } else if ( - roll < Constants.MAGIC_NUMBERS.CMDS.GAMBLING.BET_ROLL.TEN_TIMES_ROLL - ) { - const winnings = number * 4n; - + msg = new EmbedBuilder() + .setDescription( + `🎲 You rolled \`${roll}\`, and won **${winnings}** ${this.client.money.currencySymbol}, for rolling above 66` + ) + .withOkColor(message); + break; + case BetRoll.Quadruple: await this.client.money.add( message.author.id, winnings, "Betroll won x4" ); - - return message.channel.send({ - embeds: [ - new EmbedBuilder() - .setDescription( - `🎲 You rolled \`${roll}\`, and won ${winnings} ${this.client.money.currencySymbol}, for rolling above 90` - ) - .withOkColor(message), - ], - }); - } else { - const winnings = number * 10n; - + msg = new EmbedBuilder() + .setDescription( + `🎲 You rolled \`${roll}\`, and won ${winnings} ${this.client.money.currencySymbol}, for rolling above 90` + ) + .withOkColor(message); + break; + case BetRoll.Ten: await this.client.money.add( message.author.id, winnings, "Betroll won x10" ); - - return message.channel.send({ - embeds: [ - new EmbedBuilder() - .setDescription( - `🎲 You rolled \`${roll}\`!!! You won ${winnings} ${this.client.money.currencySymbol}, for rolling above 99` - ) - .withOkColor(message), - ], - }); + msg = new EmbedBuilder() + .setDescription( + `🎲 You rolled \`${roll}\`!!! You won ${winnings} ${this.client.money.currencySymbol}, for rolling above 99` + ) + .withOkColor(message); + break; } + + return message.channel.send({ embeds: [msg] }); } } + +export enum BetRoll { + None, + Double, + Quadruple, + Ten, +} diff --git a/src/commands/Gambling/cash.ts b/src/commands/Gambling/cash.ts index 4061219d..dbaf5cc0 100644 --- a/src/commands/Gambling/cash.ts +++ b/src/commands/Gambling/cash.ts @@ -9,7 +9,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; aliases: ["currency", "cur", "$", "£", "¥", "€"], usage: "", description: - "Shows specified user's current balance. If no user is specified, shows your balance", + "Shows specified user's current balance. If no user is specified, shows your balance", }) export default class Cash extends KaikiCommand { public async messageRun(msg: Message, args: Args): Promise { diff --git a/src/commands/Gambling/currencyTransactions.ts b/src/commands/Gambling/currencyTransactions.ts index a6bdc642..840e8b4d 100644 --- a/src/commands/Gambling/currencyTransactions.ts +++ b/src/commands/Gambling/currencyTransactions.ts @@ -12,7 +12,7 @@ import Constants from "../../struct/Constants"; name: "currencytransactions", aliases: ["curtrs"], description: - "Shows your currency transactions. Bot owner can see other people's transactions.", + "Shows your currency transactions. Bot owner can see other people's transactions.", usage: ["", "7", "10 @drev"], }) export default class CurrencyTransactionsCommand extends KaikiCommand { @@ -30,7 +30,7 @@ export default class CurrencyTransactionsCommand extends KaikiCommand { throw new UserError({ identifier: "IncorrectArgs", message: - "Your arguments didn't resolve to a number or a member.", + "Your arguments didn't resolve to a number or a member.", }); }) ); @@ -71,10 +71,10 @@ export default class CurrencyTransactionsCommand extends KaikiCommand { await this.client.orm.currencyTransactions.findMany({ where: { UserId: - user.id !== message.author.id && - message.author.id === message.client.owner.id - ? BigInt(user.id) - : BigInt(message.author.id), + user.id !== message.author.id && + message.author.id === message.client.owner.id + ? BigInt(user.id) + : BigInt(message.author.id), }, }) ).sort((a, b) => b.DateAdded.getTime() - a.DateAdded.getTime()); @@ -97,7 +97,7 @@ export default class CurrencyTransactionsCommand extends KaikiCommand { p = 0; p < db.length; i += Constants.MAGIC_NUMBERS.CMDS.GAMBLING.CUR_TRS.TRANS_PR_PAGE, - p += Constants.MAGIC_NUMBERS.CMDS.GAMBLING.CUR_TRS.TRANS_PR_PAGE + p += Constants.MAGIC_NUMBERS.CMDS.GAMBLING.CUR_TRS.TRANS_PR_PAGE ) { pages.push( CurrencyTransactionsCommand.baseEmbed(message) @@ -111,8 +111,8 @@ export default class CurrencyTransactionsCommand extends KaikiCommand { (row) => `${ row.Amount > - Constants.MAGIC_NUMBERS.CMDS.GAMBLING - .CUR_TRS.BIGINT_ZERO + Constants.MAGIC_NUMBERS.CMDS.GAMBLING + .CUR_TRS.BIGINT_ZERO ? "🟩" : "🟥" } ${time(row.DateAdded)} ${this.client.money.currencySymbol} ${row.Amount}\nNote: \`${row.Reason}\`` diff --git a/src/commands/Gambling/globalLeaderboard.ts b/src/commands/Gambling/globalLeaderboard.ts index 95beb52e..98f3cce0 100644 --- a/src/commands/Gambling/globalLeaderboard.ts +++ b/src/commands/Gambling/globalLeaderboard.ts @@ -8,7 +8,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "globalleaderboard", aliases: ["glb"], usage: "", - description: "Shows global currency leaderboard for the current server." + description: "Shows global currency leaderboard for the current server.", }) export default class GlobalLeaderboard extends KaikiCommand { public async messageRun(message: Message): Promise { diff --git a/src/commands/Gambling/slots.ts b/src/commands/Gambling/slots.ts index cd027a0d..4e2a7e85 100644 --- a/src/commands/Gambling/slots.ts +++ b/src/commands/Gambling/slots.ts @@ -5,6 +5,15 @@ import Gambling from "../../lib/Gambling/Gambling"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; import Constants from "../../struct/Constants"; +import { container } from "@sapphire/pieces"; + +export enum Slots { + x0, + x10, + x30, +} + +export type SlotResult = { string: string; numbers: string[] }; @ApplyOptions({ name: "Slots", @@ -13,6 +22,27 @@ import Constants from "../../struct/Constants"; usage: ["69"], }) export default class SlotsCommand extends KaikiCommand { + static async run(amount = 100n): Promise<[Slots, SlotResult, bigint]> { + const result = await Gambling.playSlots( + container.client.money.currencySymbol + ); + // Check if all three indexes are the same before we check if there are 2 similar ones + if (result.numbers.every((val, _i, arr) => val === arr[0])) { + const winAmount = amount * 30n; + return [Slots.x30, result, winAmount]; + } else if ( + result.numbers.some((r, i, arr) => { + arr.splice(i, 1); + return arr.includes(r); + }) + ) { + const winAmount = amount * 10n; + return [Slots.x10, result, winAmount]; + } + + return [Slots.x0, result, 0n]; + } + public async messageRun(message: Message, args: Args): Promise { const amount = await args.rest("kaikiMoney"); @@ -21,7 +51,7 @@ export default class SlotsCommand extends KaikiCommand { embeds: [ new EmbedBuilder() .setDescription( - `You need to bet more than 2 ${this.client.money.currencySymbol}` + `You need to bet at least 2 ${this.client.money.currencySymbol}` ) .withErrorColor(message), ], @@ -48,58 +78,36 @@ export default class SlotsCommand extends KaikiCommand { return; } - const result = await Gambling.playSlots( - this.client.money.currencySymbol - ); + const [slots, result, winAmount] = await SlotsCommand.run(amount); - // Check if all three indexes are the same before we check if there are 2 similar ones - if (result.numbers.every((val, i, arr) => val === arr[0])) { - const winAmount = amount * 30n; + switch (slots) { + case Slots.x0: + result.string += "\n\nYou won nothing\ntry again ^_^"; + break; + case Slots.x10: await this.client.money.add( message.author.id, winAmount, - "Slots won x30" + "Slots won x10" ); - result.string += `\n\nYou won ${winAmount} ${this.client.money.currencySymbol}!`; - } - - // check for two similar indexes - else if ( - result.numbers.some((r, i, arr) => { - arr.splice(i, 1); - if (arr.includes(r)) return true; - }) - ) { - const winAmount = amount * 10n; + result.string += `\n\nYou won **${winAmount}** ${this.client.money.currencySymbol}!`; + break; + case Slots.x30: await this.client.money.add( message.author.id, winAmount, - "Slots won x10" - ); - result.string += `\n\nYou won **${winAmount}** ${this.client.money.currencySymbol}!`; - } else { - result.string += "\n\nYou won nothing\ntry again ^_^"; + "Slots won x30" + ) + result.string += `\n\nYou won ${winAmount} ${this.client.money.currencySymbol}!`; + break; } - await message.channel - .send( - (await Gambling.playSlots(this.client.money.currencySymbol)) - .string - ) + await message.channel.send((await Gambling.playSlots(this.client.money.currencySymbol)).string) .then(async (m) => { - setTimeout( - async () => - m.edit( - ( - await Gambling.playSlots( - this.client.money.currencySymbol - ) - ).string - ), + setTimeout(async () => m.edit((await Gambling.playSlots(this.client.money.currencySymbol)).string), Constants.MAGIC_NUMBERS.CMDS.GAMBLING.SLOTS.EDIT_AFTER_1_SEC ); - setTimeout( - async () => m.edit(result.string), + setTimeout(async () => m.edit(result.string), Constants.MAGIC_NUMBERS.CMDS.GAMBLING.SLOTS.EDIT_AFTER_2_SEC ); }); diff --git a/src/commands/Moderation/clear.ts b/src/commands/Moderation/clear.ts index b8d0d4e5..ce47f711 100644 --- a/src/commands/Moderation/clear.ts +++ b/src/commands/Moderation/clear.ts @@ -50,8 +50,8 @@ export default class ClearCommand extends KaikiCommand { setTimeout( () => m.delete(), manualDelete.size * - Constants.MAGIC_NUMBERS.CMDS.MODERATION.CLEAR - .DELETE_TIMEOUT + Constants.MAGIC_NUMBERS.CMDS.MODERATION.CLEAR + .DELETE_TIMEOUT ) ); diff --git a/src/commands/Moderation/kick.ts b/src/commands/Moderation/kick.ts index 7f27616e..97af030f 100644 --- a/src/commands/Moderation/kick.ts +++ b/src/commands/Moderation/kick.ts @@ -23,26 +23,26 @@ export default class KickCommand extends KaikiCommand { if ( message.author.id !== message.guild?.ownerId && - (message.member as GuildMember).roles.highest.position <= - member.roles.highest.position + (message.member as GuildMember).roles.highest.position <= + member.roles.highest.position ) { return message.channel.send({ embeds: [ new EmbedBuilder({ description: - "You don't have permissions to kick this member.", + "You don't have permissions to kick this member.", }).withErrorColor(message), ], }); } else if ( guildClientMember.roles.highest.position <= - member.roles.highest.position + member.roles.highest.position ) { return message.channel.send({ embeds: [ new EmbedBuilder({ description: - "Sorry, I don't have permissions to kick this member.", + "Sorry, I don't have permissions to kick this member.", }).withErrorColor(message), ], }); diff --git a/src/commands/NSFW/e621.ts b/src/commands/NSFW/e621.ts index c4bd98ae..e51ef26c 100644 --- a/src/commands/NSFW/e621.ts +++ b/src/commands/NSFW/e621.ts @@ -29,9 +29,9 @@ export default class EAPICommand extends KaikiCommand { ) .setImage( post.file.url || - post.preview.url || - post.sample.url || - post.sources[0] + post.preview.url || + post.sample.url || + post.sources[0] ) .withOkColor(message); diff --git a/src/commands/NSFW/hentai.ts b/src/commands/NSFW/hentai.ts index 63e5d032..5f1b22b9 100644 --- a/src/commands/NSFW/hentai.ts +++ b/src/commands/NSFW/hentai.ts @@ -30,11 +30,11 @@ export default class HentaiCommand extends KaikiCommand { return message.channel.send( await this.client.hentaiService.grabHentai( category || - HentaiService.hentaiArray[ - Math.floor( - Math.random() * HentaiService.hentaiArray.length - ) - ], + HentaiService.hentaiArray[ + Math.floor( + Math.random() * HentaiService.hentaiArray.length + ) + ], "single" ) ); diff --git a/src/commands/NSFW/hentaibomb.ts b/src/commands/NSFW/hentaibomb.ts index 6c910bbf..661743e3 100644 --- a/src/commands/NSFW/hentaibomb.ts +++ b/src/commands/NSFW/hentaibomb.ts @@ -30,11 +30,11 @@ export default class HentaiBombCommand extends KaikiCommand { const megaResponse = ( await this.client.hentaiService.grabHentai( category ?? - HentaiService.hentaiArray[ - Math.floor( - Math.random() * HentaiService.hentaiArray.length - ) - ], + HentaiService.hentaiArray[ + Math.floor( + Math.random() * HentaiService.hentaiArray.length + ) + ], "bomb" ) ).splice(0, 5); diff --git a/src/commands/NSFW/hentainuke.ts b/src/commands/NSFW/hentainuke.ts index 5cf29f16..8fafcc01 100644 --- a/src/commands/NSFW/hentainuke.ts +++ b/src/commands/NSFW/hentainuke.ts @@ -25,9 +25,9 @@ export default class HentaiNukeCommand extends KaikiCommand { }); const megaResponse = await this.client.hentaiService.grabHentai( category ?? - HentaiService.hentaiArray[ - Math.floor(Math.random() * HentaiService.hentaiArray.length) - ], + HentaiService.hentaiArray[ + Math.floor(Math.random() * HentaiService.hentaiArray.length) + ], "bomb" ); diff --git a/src/commands/Owner only/bettest.ts b/src/commands/Owner only/bettest.ts new file mode 100644 index 00000000..76c492fe --- /dev/null +++ b/src/commands/Owner only/bettest.ts @@ -0,0 +1,135 @@ +import { ApplyOptions } from "@sapphire/decorators"; +import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; +import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { Args } from "@sapphire/framework"; +import { EmbedBuilder, Message } from "discord.js"; +import KaikiArgumentsTypes, { + GamblingCommands, +} from "../../lib/Kaiki/KaikiArgumentsTypes"; +import BetRollCommand, { BetRoll } from "../Gambling/betroll"; +import BetflipCommand, { Sides } from "../Gambling/betflip"; +import SlotsCommand, { SlotResult, Slots } from "../Gambling/slots"; + +@ApplyOptions({ + name: "bettest", + usage: ["br 100", "bf 2000"], + description: + "Tests gambling commands by running them specified amounts of times.", + preconditions: ["OwnerOnly"], +}) +export default class BetTest extends KaikiCommand { + public async messageRun(message: Message, args: Args) { + const gambling = await args.pick( + KaikiArgumentsTypes.gamblingCommandsArgument + ); + const executions = await args.pick("integer"); + + let str: string; + + switch (gambling) { + case GamblingCommands.br: + case GamblingCommands.betroll: + str = BetTest.betRollStr( + await Promise.all( + new Array(executions) + .fill(async () => BetRollCommand.roll()) + .map((x) => x()) + ) + ); + break; + case GamblingCommands.bf: + case GamblingCommands.betflip: + str = BetTest.betFlipStr( + await Promise.all( + new Array(executions) + .fill(async () => BetflipCommand.flip()) + .map((x) => x()) + ) + ); + break; + case GamblingCommands.slot: + case GamblingCommands.slots: + str = BetTest.SlotsStr( + await Promise.all( + new Array(executions) + .fill(async () => SlotsCommand.run()) + .map((x) => x()) + ) + ); + break; + } + + return message.channel.send({ + embeds: [ + new EmbedBuilder() + .setTitle("Betting Test") + .setDescription(str) + .withOkColor(message), + ], + }); + } + + static SlotsStr(results: Array<[Slots, SlotResult, bigint]>): string { + const collectionSize = results.length; + + const totalSpent = BigInt(collectionSize * 100); + const winnings = BigInt(results.map((x) => x[2]).reduce((a, b) => a + b)); + + const none = results.filter((x) => x[0] === Slots.x0).length, + ten = results.filter((x) => x[0] === Slots.x10).length, + thirty = results.filter((x) => x[0] === Slots.x30).length; + + return `x**0** - ${none} ${BetTest.calcPercentage(none, collectionSize)} +x**10** - ${ten} ${BetTest.calcPercentage(ten, collectionSize)} +x**30** - ${thirty} ${BetTest.calcPercentage(thirty, collectionSize)} + +Total bet: **${totalSpent}** +Payout: **${winnings}** \`${Number((winnings * 100n) / totalSpent).toFixed(2)}%\` +Difference: **${winnings - totalSpent}** +`; + } + + static betRollStr(results: Array<[BetRoll, number, bigint]>): string { + const collectionSize = results.length; + + const loss = results + .map((x) => x[0]) + .filter((x) => x === BetRoll.None).length, + double = results.filter((x) => x[0] === BetRoll.Double).length, + quadruple = results.filter( + (x) => x[0] === BetRoll.Quadruple + ).length, + ten = results.filter((x) => x[0] === BetRoll.Ten).length; + + const winnings = results.map((x) => x[2]).reduce((a, b) => a + b); + // 100 is the fixed amount set in bettests + const totalSpent = BigInt(collectionSize * 100); + + return `* x**10** - ${ten} ${BetTest.calcPercentage(ten, collectionSize)} +* x**4** - ${quadruple} ${BetTest.calcPercentage(quadruple, collectionSize)} +* x**2** - ${double} ${BetTest.calcPercentage(double, collectionSize)} +* **Loss** - ${loss} ${BetTest.calcPercentage(loss, collectionSize)} + +Total bet: **${totalSpent}** +Payout: **${winnings}** \`${Number((winnings * 100n) / totalSpent).toFixed(2)}%\` +Difference: **${winnings - totalSpent}** +`; + } + + static betFlipStr(results: Array<[Sides, bigint]>) { + const collectionSize = results.length, heads = results.filter(([sides]) => sides === Sides.heads).length, + tails = results.length - heads, winnings = results.map((x) => x[1]).reduce((a, b) => a + b), + totalSpent = BigInt(collectionSize * 100); + return `* Tails - ${tails} ${BetTest.calcPercentage(tails, collectionSize)} +* Heads - ${heads} ${BetTest.calcPercentage(heads, collectionSize)} + +Total bet: **${totalSpent}** +Payout: **${winnings}** \`${Number((winnings * 100n) / totalSpent).toFixed(2)}%\` +Difference: **${winnings - totalSpent}** +`; + } + + private static calcPercentage(part: number, collectionSize: number) { + return `\`${((part / collectionSize) * 100).toFixed(2)}%\``; + } +} diff --git a/src/commands/Owner only/botConfig.ts b/src/commands/Owner only/botConfig.ts index 9cb71963..b0a90e04 100644 --- a/src/commands/Owner only/botConfig.ts +++ b/src/commands/Owner only/botConfig.ts @@ -12,7 +12,7 @@ import { BotConfig } from "../../struct/db/Database"; name: "botconfig", aliases: ["bc"], description: - "Change various bot configurations. Run without arguments to see current settings.", + "Change various bot configurations. Run without arguments to see current settings.", usage: [" ", "currencyname Europe Dollars"], preconditions: ["OwnerOnly"], subcommands: [ @@ -145,8 +145,8 @@ export default class BotConfigCommand extends Subcommand { const value = await args.rest("boolean"); const oldValue = ( - await this.client.botSettings.get("1", "DailyEnabled", false) - ); + await this.client.botSettings.get("1", "DailyEnabled", false) + ); await this.client.botSettings.set("1", "DailyEnabled", value); return BotConfigCommand.sendEmbed( @@ -160,12 +160,12 @@ export default class BotConfigCommand extends Subcommand { const value = await args.rest("number"); const oldValue = ( - await this.client.botSettings.get( - "1", - "DailyAmount", - Constants.MAGIC_NUMBERS.CMDS.OWNER_ONLY.BOT_CONFIG.DAILY_AMOUNT - ) - ); + await this.client.botSettings.get( + "1", + "DailyAmount", + Constants.MAGIC_NUMBERS.CMDS.OWNER_ONLY.BOT_CONFIG.DAILY_AMOUNT + ) + ); await this.client.botSettings.set("1", "DailyAmount", value); return BotConfigCommand.sendEmbed( diff --git a/src/commands/Owner only/die.ts b/src/commands/Owner only/die.ts index 927baf6b..c5677f65 100644 --- a/src/commands/Owner only/die.ts +++ b/src/commands/Owner only/die.ts @@ -59,7 +59,7 @@ export default class KillBotProcess extends KaikiCommand { .setAuthor({ name: "Dying", iconURL: - message.client.user?.displayAvatarURL(), + message.client.user?.displayAvatarURL(), }) .addFields([ { diff --git a/src/commands/Owner only/exec.ts b/src/commands/Owner only/exec.ts index d74e56f8..7576b26d 100644 --- a/src/commands/Owner only/exec.ts +++ b/src/commands/Owner only/exec.ts @@ -26,7 +26,7 @@ export default class ExecCommand extends KaikiCommand { .setAuthor({ name: "Command errored", iconURL: - message.client.user?.displayAvatarURL(), + message.client.user?.displayAvatarURL(), }) .setDescription( await KaikiUtil.codeblock( diff --git a/src/commands/Owner only/gencmdlist.ts b/src/commands/Owner only/gencmdlist.ts index d9efb996..c26c46ff 100644 --- a/src/commands/Owner only/gencmdlist.ts +++ b/src/commands/Owner only/gencmdlist.ts @@ -1,6 +1,12 @@ import { ApplyOptions } from "@sapphire/decorators"; import { PreconditionEntryResolvable } from "@sapphire/framework"; -import { AttachmentBuilder, EmbedBuilder, Message, PermissionsBitField, PermissionsString } from "discord.js"; +import { + AttachmentBuilder, + EmbedBuilder, + Message, + PermissionsBitField, + PermissionsString, +} from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; import Constants from "../../struct/Constants"; @@ -10,16 +16,17 @@ import process from "process"; name: "gencmdlist", aliases: ["gencmdlst", "gencmds"], usage: "", - description: "Uploads a JSON file containing all commands. Supports uploading to a specific endpoint.", + description: + "Uploads a JSON file containing all commands. Supports uploading to a specific endpoint.", preconditions: ["OwnerOnly"], }) export default class GenCmdListCommand extends KaikiCommand { public async messageRun(message: Message) { - if (!process.env.SELF_API || !process.env.SELF_API_TOKEN) { return message.channel.send({ files: [ - new AttachmentBuilder(Buffer.from(this.generateCommmandlist(), "utf-8"), + new AttachmentBuilder( + Buffer.from(this.generateCommmandlist(), "utf-8"), { name: "cmdlist.json" } ), ], @@ -30,14 +37,14 @@ export default class GenCmdListCommand extends KaikiCommand { embeds: [ new EmbedBuilder() .setDescription("Uploading commandslist...") - .setColor(Constants.kaikiOrange) - ] - }) + .setColor(Constants.kaikiOrange), + ], + }); const list = this.generateCommmandlist(); - const uri = new URL(process.env.SELF_API) - uri.searchParams.append("token", process.env.SELF_API_TOKEN) + const uri = new URL(process.env.SELF_API); + uri.searchParams.append("token", process.env.SELF_API_TOKEN); const res = await fetch(uri, { method: "POST", @@ -45,9 +52,9 @@ export default class GenCmdListCommand extends KaikiCommand { list: list, }), headers: { - "content-type": "application/json" - } - }) + "content-type": "application/json", + }, + }); if (res.status === 201) { await pendingMsg.edit({ @@ -57,11 +64,11 @@ export default class GenCmdListCommand extends KaikiCommand { .withOkColor(message), ], files: [ - new AttachmentBuilder(Buffer.from(list, "utf-8"), - { name: "cmdlist.json" } - ), + new AttachmentBuilder(Buffer.from(list, "utf-8"), { + name: "cmdlist.json", + }), ], - }) + }); } } @@ -76,10 +83,7 @@ export default class GenCmdListCommand extends KaikiCommand { return [ category, commands - .filter( - (command) => - command.category === category - ) + .filter((command) => command.category === category) .map( (command: KaikiCommand) => new GeneratedCommand(command) @@ -87,9 +91,7 @@ export default class GenCmdListCommand extends KaikiCommand { ]; }), (key, value) => - typeof value === "bigint" - ? value.toString() - : value, + typeof value === "bigint" ? value.toString() : value, 4 ); } @@ -109,15 +111,14 @@ class GeneratedCommand { this.aliases = Array.from(command.aliases); this.channel = command.options.preconditions?.includes("GuildOnly") ? command.options.preconditions[ - command.options.preconditions.indexOf("GuildOnly") - ] + command.options.preconditions.indexOf("GuildOnly") + ] : undefined; this.ownerOnly = !!command.options.preconditions?.includes("OwnerOnly"); this.usage = command.usage; this.userPermissions = new PermissionsBitField( command.options.requiredUserPermissions - ) - .toArray(); + ).toArray(); this.description = command.description; } } diff --git a/src/commands/Owner only/setActivity.ts b/src/commands/Owner only/setActivity.ts index a7817712..9fe3e778 100644 --- a/src/commands/Owner only/setActivity.ts +++ b/src/commands/Owner only/setActivity.ts @@ -6,11 +6,11 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; import Constants from "../../struct/Constants"; export type ValidActivities = - | "PLAYING" - | "STREAMING" - | "LISTENING" - | "WATCHING" - | "COMPETING"; + | "PLAYING" + | "STREAMING" + | "LISTENING" + | "WATCHING" + | "COMPETING"; @ApplyOptions({ name: "setactivity", diff --git a/src/commands/Owner only/setBanner.ts b/src/commands/Owner only/setBanner.ts index 41e18a1e..cad30036 100644 --- a/src/commands/Owner only/setBanner.ts +++ b/src/commands/Owner only/setBanner.ts @@ -41,8 +41,8 @@ export default class SetAvatarCommand extends KaikiCommand { const attachment = new AttachmentBuilder(imgBuffer, { name: - "bannerFile" + - url.pathname.substring(url.pathname.lastIndexOf(".")), + "bannerFile" + + url.pathname.substring(url.pathname.lastIndexOf(".")), }); return message.channel.send({ diff --git a/src/commands/Owner only/setDaily.ts b/src/commands/Owner only/setDaily.ts index 20e6b4ce..1e73d069 100644 --- a/src/commands/Owner only/setDaily.ts +++ b/src/commands/Owner only/setDaily.ts @@ -9,7 +9,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; aliases: ["dailyset"], usage: "120", description: - "Sets the daily currency allowance amount. Set to 0 to disable.", + "Sets the daily currency allowance amount. Set to 0 to disable.", preconditions: ["OwnerOnly"], }) export default class SetDailyCommand extends KaikiCommand { diff --git a/src/commands/Owner only/sqlexec.ts b/src/commands/Owner only/sqlexec.ts index 2c159bed..8352f523 100644 --- a/src/commands/Owner only/sqlexec.ts +++ b/src/commands/Owner only/sqlexec.ts @@ -10,7 +10,7 @@ import Constants from "../../struct/Constants"; @ApplyOptions({ name: "sqlexec", description: - "Executes sql queries and returns the number of affected rows. Dangerous.", + "Executes sql queries and returns the number of affected rows. Dangerous.", usage: ["UPDATE DiscordUsers SET amount=amount+69420"], preconditions: ["OwnerOnly"], }) diff --git a/src/commands/Owner only/sqlselect.ts b/src/commands/Owner only/sqlselect.ts index c5178a91..c4f56acc 100644 --- a/src/commands/Owner only/sqlselect.ts +++ b/src/commands/Owner only/sqlselect.ts @@ -10,7 +10,7 @@ import Constants from "../../struct/Constants"; @ApplyOptions({ name: "sqlselect", description: - "Executes sql queries and returns the number of affected rows. Dangerous.", + "Executes sql queries and returns the number of affected rows. Dangerous.", usage: ["SELECT * FROM DiscordUsers LIMIT 5"], preconditions: ["OwnerOnly"], }) diff --git a/src/commands/Roles/roleColor.ts b/src/commands/Roles/roleColor.ts index 05bee5b4..ae79f0b2 100644 --- a/src/commands/Roles/roleColor.ts +++ b/src/commands/Roles/roleColor.ts @@ -18,7 +18,7 @@ import Roles from "../../lib/Roles"; name: "rolecolor", aliases: ["roleclr", "rclr"], description: - "Sets or displays the color of a given role, or your highest role.", + "Sets or displays the color of a given role, or your highest role.", usage: ["@Gamer ff00ff"], preconditions: ["GuildOnly"], }) diff --git a/src/commands/Roles/roleInfo.ts b/src/commands/Roles/roleInfo.ts index bcf510ca..00c94055 100644 --- a/src/commands/Roles/roleInfo.ts +++ b/src/commands/Roles/roleInfo.ts @@ -8,7 +8,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "roleinfo", aliases: ["role", "rinfo"], description: - "Shows info about a given role. If no role is supplied, it defaults to current one.", + "Shows info about a given role. If no role is supplied, it defaults to current one.", usage: ["@Gamers"], preconditions: ["GuildOnly"], }) diff --git a/src/commands/Roles/roleInrole.ts b/src/commands/Roles/roleInrole.ts index 744e1e0b..0fcefad3 100644 --- a/src/commands/Roles/roleInrole.ts +++ b/src/commands/Roles/roleInrole.ts @@ -27,7 +27,7 @@ export default class RoleInRoleCommand extends KaikiCommand { .sort( (a: GuildMember, b: GuildMember) => b.roles.highest.position - a.roles.highest.position || - (a.id as unknown as number) - (b.id as unknown as number) + (a.id as unknown as number) - (b.id as unknown as number) ) .slice(0, 400); @@ -35,7 +35,7 @@ export default class RoleInRoleCommand extends KaikiCommand { if (data && data.length) { const { ROLES_PR_PAGE } = - Constants.MAGIC_NUMBERS.CMDS.ROLES.IN_ROLE; + Constants.MAGIC_NUMBERS.CMDS.ROLES.IN_ROLE; for ( let i = ROLES_PR_PAGE, p = 0; diff --git a/src/commands/Roles/roleListUserRoles.ts b/src/commands/Roles/roleListUserRoles.ts index 235d9b66..06931176 100644 --- a/src/commands/Roles/roleListUserRoles.ts +++ b/src/commands/Roles/roleListUserRoles.ts @@ -29,7 +29,7 @@ export default class ListUserRoles extends KaikiCommand { if (db.length) { const { ROLE_PR_PAGE } = - Constants.MAGIC_NUMBERS.CMDS.ROLES.USER_ROLES; + Constants.MAGIC_NUMBERS.CMDS.ROLES.USER_ROLES; const mapped = db .map( diff --git a/src/commands/Roles/roleMyRole.ts b/src/commands/Roles/roleMyRole.ts index 11df1b76..3b4fefb5 100644 --- a/src/commands/Roles/roleMyRole.ts +++ b/src/commands/Roles/roleMyRole.ts @@ -13,7 +13,7 @@ import Constants from "../../struct/Constants"; name: "myrole", aliases: ["mr"], description: - "Checks your assigned user role. Can set role color, name and icon.", + "Checks your assigned user role. Can set role color, name and icon.", usage: ["color FF0000", "name Dreb", "icon :someEmoji:", "icon reset"], requiredClientPermissions: ["ManageRoles"], preconditions: ["GuildOnly"], @@ -64,8 +64,8 @@ export default class MyRoleCommand extends Subcommand { .setAuthor({ name: `Current role assigned to ${message.author.username}`, iconURL: - message.guild.iconURL({ size: 2048 }) || - message.author.displayAvatarURL({ size: 2048 }), + message.guild.iconURL({ size: 2048 }) || + message.author.displayAvatarURL({ size: 2048 }), }) .setColor(myRole.hexColor) .addFields( diff --git a/src/commands/Roles/roleRemove.ts b/src/commands/Roles/roleRemove.ts index 853da5b3..8d91f712 100644 --- a/src/commands/Roles/roleRemove.ts +++ b/src/commands/Roles/roleRemove.ts @@ -10,7 +10,7 @@ import Roles from "../../lib/Roles"; name: "roleremove", aliases: ["removerole", "rr"], description: - "Takes away a user's role. The role you specify has to be lower in the role hierarchy than your highest role.", + "Takes away a user's role. The role you specify has to be lower in the role hierarchy than your highest role.", usage: ["@Dreb Gamer"], requiredUserPermissions: ["ManageRoles"], requiredClientPermissions: ["ManageRoles"], diff --git a/src/commands/Roles/roleRename.ts b/src/commands/Roles/roleRename.ts index a05ee7a8..325c62e7 100644 --- a/src/commands/Roles/roleRename.ts +++ b/src/commands/Roles/roleRename.ts @@ -12,7 +12,7 @@ import Constants from "../../struct/Constants"; name: "rolerename", aliases: ["rolename", "rn"], description: - "Renames a given role. The role you specify has to be lower in the role hierarchy than your highest role. Use 'quotes around rolename with spaces'.", + "Renames a given role. The role you specify has to be lower in the role hierarchy than your highest role. Use 'quotes around rolename with spaces'.", usage: ["@Gamer weeb"], requiredUserPermissions: ["ManageRoles"], requiredClientPermissions: ["ManageRoles"], diff --git a/src/commands/Roles/roleRestore.ts b/src/commands/Roles/roleRestore.ts index bc4c4de8..1b8589bc 100644 --- a/src/commands/Roles/roleRestore.ts +++ b/src/commands/Roles/roleRestore.ts @@ -10,7 +10,7 @@ import Constants from "../../struct/Constants"; @ApplyOptions({ name: "restore", description: - "Restores roles for a user who has previously left the server.", + "Restores roles for a user who has previously left the server.", usage: ["@dreb"], requiredUserPermissions: ["Administrator"], requiredClientPermissions: ["ManageRoles"], diff --git a/src/commands/Roles/roleSetRole.ts b/src/commands/Roles/roleSetRole.ts index f72a7458..f8d26db6 100644 --- a/src/commands/Roles/roleSetRole.ts +++ b/src/commands/Roles/roleSetRole.ts @@ -10,7 +10,7 @@ import Roles from "../../lib/Roles"; name: "setrole", aliases: ["sr"], description: - "Gives a role to a user. The role you specify has to be lower in the role hierarchy than your highest role.", + "Gives a role to a user. The role you specify has to be lower in the role hierarchy than your highest role.", usage: ["@Dreb Gamer"], requiredUserPermissions: ["ManageRoles"], requiredClientPermissions: ["ManageRoles"], diff --git a/src/commands/Roles/roleSetUserRole.ts b/src/commands/Roles/roleSetUserRole.ts index 4916c51f..be2907e1 100644 --- a/src/commands/Roles/roleSetUserRole.ts +++ b/src/commands/Roles/roleSetUserRole.ts @@ -12,7 +12,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "setuserrole", aliases: ["sur"], description: - "Assigns a role to a user. Provide the command again to remove the role.", + "Assigns a role to a user. Provide the command again to remove the role.", usage: ["@Platinum [role]"], requiredUserPermissions: ["ManageRoles"], requiredClientPermissions: ["ManageRoles"], @@ -46,8 +46,8 @@ export default class SetUserRoleCommand extends KaikiCommand { }); } else if ( message.author.id !== message.guild?.ownerId && - (message.member as GuildMember).roles.highest.position < - role.position + (message.member as GuildMember).roles.highest.position < + role.position ) { return message.channel.send({ embeds: [ diff --git a/src/commands/Server settings/addEmoteReact.ts b/src/commands/Server settings/addEmoteReact.ts index c6bcde22..78303504 100644 --- a/src/commands/Server settings/addEmoteReact.ts +++ b/src/commands/Server settings/addEmoteReact.ts @@ -9,7 +9,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "addemotereact", aliases: ["emotereact", "aer"], description: - "Add triggers for the bot to react with emojis/emotes to. Use quotes for triggers with spaces.", + "Add triggers for the bot to react with emojis/emotes to. Use quotes for triggers with spaces.", usage: ["red :red:", "anime :weeaboosgetout:"], requiredUserPermissions: ["ManageEmojisAndStickers"], requiredClientPermissions: ["AddReactions"], diff --git a/src/commands/Server settings/config.ts b/src/commands/Server settings/config.ts index cb652fc7..6c990577 100644 --- a/src/commands/Server settings/config.ts +++ b/src/commands/Server settings/config.ts @@ -9,7 +9,7 @@ import Config from "../../lib/ServerConfig/Config"; name: "config", aliases: ["configure", "conf"], description: - "Configure or display guild specific settings.\nYou can use any of the following\n`'1', 'true', '+', 't', 'yes', 'y'` to enable configs or \n`'0', 'false', '-', 'f', 'no', 'n'` to disable them.", + "Configure or display guild specific settings.\nYou can use any of the following\n`'1', 'true', '+', 't', 'yes', 'y'` to enable configs or \n`'0', 'false', '-', 'f', 'no', 'n'` to disable them.", usage: [ "", "dadbot enable", diff --git a/src/commands/Server settings/excludeChannel.ts b/src/commands/Server settings/excludeChannel.ts index 81d873c5..b452e3ab 100644 --- a/src/commands/Server settings/excludeChannel.ts +++ b/src/commands/Server settings/excludeChannel.ts @@ -9,7 +9,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "excludechannel", aliases: ["excludechnl", "echnl"], description: - "Exclude or include, one or more, channels from dadbot. Provide no parameter to show a list of excluded channels. ", + "Exclude or include, one or more, channels from dadbot. Provide no parameter to show a list of excluded channels. ", usage: ["", "#channel"], requiredUserPermissions: ["ManageChannels"], preconditions: ["GuildOnly"], @@ -37,8 +37,8 @@ export default class ExcludeDadbotChannelCommand extends KaikiCommand { guildDb = (await this.client.db.getOrCreateGuild( bigIntGuildId )) as Guilds & { - DadBotChannels: DadBotChannels[]; - }; + DadBotChannels: DadBotChannels[]; + }; guildDb["DadBotChannels"] = []; } @@ -53,18 +53,18 @@ export default class ExcludeDadbotChannelCommand extends KaikiCommand { .setDescription( guildDb.DadBotChannels.length ? guildDb.DadBotChannels.map((k) => { - const channel = - message.guild.channels.cache.get( - String(k.ChannelId) - ); - - return channel - ? `${channel.name} [${channel.id}]` - : String(k.ChannelId); - }) - .sort((a, b) => (a < b ? -1 : 1)) - .join("\n") - .trim() + const channel = + message.guild.channels.cache.get( + String(k.ChannelId) + ); + + return channel + ? `${channel.name} [${channel.id}]` + : String(k.ChannelId); + }) + .sort((a, b) => (a < b ? -1 : 1)) + .join("\n") + .trim() : "No channels excluded" ) .withOkColor(message), diff --git a/src/commands/Server settings/excludeStickyRoles.ts b/src/commands/Server settings/excludeStickyRoles.ts index e4e4a9ef..e99a86a5 100644 --- a/src/commands/Server settings/excludeStickyRoles.ts +++ b/src/commands/Server settings/excludeStickyRoles.ts @@ -32,8 +32,8 @@ export default class ExcludeStickyRolesCommand extends KaikiCommand { guildDb = (await this.client.db.getOrCreateGuild( bigIntGuildId )) as Guilds & { - ExcludedStickyRoles: ExcludedStickyRoles[]; - }; + ExcludedStickyRoles: ExcludedStickyRoles[]; + }; guildDb["ExcludedStickyRoles"] = []; } @@ -48,18 +48,18 @@ export default class ExcludeStickyRolesCommand extends KaikiCommand { .setDescription( guildDb?.ExcludedStickyRoles.length ? guildDb.ExcludedStickyRoles.map((k) => { - const role = - message.guild.roles.cache.get( - String(k.RoleId) - ); + const role = + message.guild.roles.cache.get( + String(k.RoleId) + ); - return role - ? `${role.name} [${role.id}]` - : String(k.RoleId); - }) - .sort((a, b) => (a < b ? -1 : 1)) - .join("\n") - .trim() + return role + ? `${role.name} [${role.id}]` + : String(k.RoleId); + }) + .sort((a, b) => (a < b ? -1 : 1)) + .join("\n") + .trim() : "No roles excluded" ) .withOkColor(message), diff --git a/src/commands/Server settings/goodbye.ts b/src/commands/Server settings/goodbye.ts index 4c2877f0..12426b5a 100644 --- a/src/commands/Server settings/goodbye.ts +++ b/src/commands/Server settings/goodbye.ts @@ -8,7 +8,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "goodbye", aliases: ["goodbyetoggle", "byetoggle", "bye"], description: - "Toggles leave messages. Bot defaults to current channel if no channel is provided.", + "Toggles leave messages. Bot defaults to current channel if no channel is provided.", usage: ["", "#leave-channel"], requiredUserPermissions: ["ManageGuild"], preconditions: ["GuildOnly"], @@ -33,7 +33,7 @@ export default class GoodbyeConfigCommand extends KaikiCommand { if ( guildTable.ByeChannel === undefined || - guildTable.ByeChannel === null + guildTable.ByeChannel === null ) { await this.client.orm.guilds.update({ where: { diff --git a/src/commands/Server settings/goodbyedelete.ts b/src/commands/Server settings/goodbyedelete.ts index 7ad62aea..e77e2d4f 100644 --- a/src/commands/Server settings/goodbyedelete.ts +++ b/src/commands/Server settings/goodbyedelete.ts @@ -8,7 +8,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "goodbyedelete", aliases: ["goodbyedel", "byedel"], description: - "Set the time, in seconds, it takes for goodbye messages to be deleted by the bot. Set to 0 to disable.", + "Set the time, in seconds, it takes for goodbye messages to be deleted by the bot. Set to 0 to disable.", usage: ["10"], requiredUserPermissions: ["ManageGuild"], preconditions: ["GuildOnly"], diff --git a/src/commands/Server settings/goodbyemessage.ts b/src/commands/Server settings/goodbyemessage.ts index 444f05b2..9b29ba7c 100644 --- a/src/commands/Server settings/goodbyemessage.ts +++ b/src/commands/Server settings/goodbyemessage.ts @@ -9,7 +9,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; aliases: ["goodbyemsg", "byemessage", "byemsg"], usage: ["Bye, %member.name%!", "{ embed data }"], description: - "Set message to display when someone leaves the guild. Provide either text, or valid JSON from the [embed creator](https://embed.kaikibot.xyz)", + "Set message to display when someone leaves the guild. Provide either text, or valid JSON from the [embed creator](https://embed.kaikibot.xyz)", requiredUserPermissions: ["ManageGuild"], preconditions: ["GuildOnly"], minorCategory: "Goodbye", diff --git a/src/commands/Server settings/listEmoteReacts.ts b/src/commands/Server settings/listEmoteReacts.ts index e98f3b66..24f834f1 100644 --- a/src/commands/Server settings/listEmoteReacts.ts +++ b/src/commands/Server settings/listEmoteReacts.ts @@ -34,16 +34,16 @@ export default class RemoveEmoteReactCommand extends KaikiCommand { for ( let index = - Constants.MAGIC_NUMBERS.CMDS.SERVER_SETTINGS.EMOTES - .EMOTE_TRIGGERS_PR_PAGE, + Constants.MAGIC_NUMBERS.CMDS.SERVER_SETTINGS.EMOTES + .EMOTE_TRIGGERS_PR_PAGE, p = 0; p < db.length; index += - Constants.MAGIC_NUMBERS.CMDS.SERVER_SETTINGS.EMOTES - .EMOTE_TRIGGERS_PR_PAGE, - p += - Constants.MAGIC_NUMBERS.CMDS.SERVER_SETTINGS.EMOTES - .EMOTE_TRIGGERS_PR_PAGE + Constants.MAGIC_NUMBERS.CMDS.SERVER_SETTINGS.EMOTES + .EMOTE_TRIGGERS_PR_PAGE, + p += + Constants.MAGIC_NUMBERS.CMDS.SERVER_SETTINGS.EMOTES + .EMOTE_TRIGGERS_PR_PAGE ) { pages.push( new EmbedBuilder() diff --git a/src/commands/Server settings/stickyRoles.ts b/src/commands/Server settings/stickyRoles.ts index b98fd9e6..b68ced71 100644 --- a/src/commands/Server settings/stickyRoles.ts +++ b/src/commands/Server settings/stickyRoles.ts @@ -8,7 +8,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; aliases: ["sticky"], usage: "", description: - "Toggles whether bot will give all roles back when someone re-joins the server", + "Toggles whether bot will give all roles back when someone re-joins the server", requiredUserPermissions: ["Administrator"], preconditions: ["GuildOnly"], }) diff --git a/src/commands/Server settings/toggleCategory.ts b/src/commands/Server settings/toggleCategory.ts index 4a9c9bfa..f306ba4d 100644 --- a/src/commands/Server settings/toggleCategory.ts +++ b/src/commands/Server settings/toggleCategory.ts @@ -10,7 +10,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "togglecategory", aliases: ["tc"], description: - "Toggles a category. Provide no parameter to see a list of disabled categories.", + "Toggles a category. Provide no parameter to see a list of disabled categories.", usage: ["Anime", ""], requiredUserPermissions: ["Administrator"], preconditions: ["GuildOnly"], @@ -22,9 +22,9 @@ export default class ToggleCategoryCommand extends KaikiCommand { ): Promise { if (args.finished) { const blockedCategories = - await message.client.orm.blockedCategories.findMany({ - where: { GuildId: BigInt(message.guildId) }, - }); + await message.client.orm.blockedCategories.findMany({ + where: { GuildId: BigInt(message.guildId) }, + }); if (!blockedCategories.length) { throw new UserError({ diff --git a/src/commands/Server settings/welcome.ts b/src/commands/Server settings/welcome.ts index 54732ab1..033061e2 100644 --- a/src/commands/Server settings/welcome.ts +++ b/src/commands/Server settings/welcome.ts @@ -8,7 +8,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "welcometoggle", aliases: ["welcome"], description: - "Toggles welcome messages. Bot defaults to current channel if no channel is provided.", + "Toggles welcome messages. Bot defaults to current channel if no channel is provided.", usage: ["", "#welcome-channel"], requiredUserPermissions: ["ManageGuild"], preconditions: ["GuildOnly"], @@ -33,7 +33,7 @@ export default class WelcomeToggleCommand extends KaikiCommand { if ( guildTable.WelcomeChannel === undefined || - guildTable.WelcomeChannel === null + guildTable.WelcomeChannel === null ) { await this.client.orm.guilds.update({ where: { diff --git a/src/commands/Server settings/welcomedelete.ts b/src/commands/Server settings/welcomedelete.ts index 262cc5d4..85709073 100644 --- a/src/commands/Server settings/welcomedelete.ts +++ b/src/commands/Server settings/welcomedelete.ts @@ -8,7 +8,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "welcomedelete", aliases: ["welcomedel"], description: - "Set the time it takes for welcome messages to be deleted by the bot", + "Set the time it takes for welcome messages to be deleted by the bot", usage: ["10"], requiredUserPermissions: ["ManageGuild"], preconditions: ["GuildOnly"], diff --git a/src/commands/Server settings/welcomemessage.ts b/src/commands/Server settings/welcomemessage.ts index 9c83dfff..604983ae 100644 --- a/src/commands/Server settings/welcomemessage.ts +++ b/src/commands/Server settings/welcomemessage.ts @@ -9,7 +9,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; aliases: ["welcomemsg"], usage: ["Hii welcome, %member.name%!", "{ embed data }"], description: - "Set message to display when someone joins the guild. Provide either text, or valid JSON from the [embed creator](https://embed.kaikibot.xyz)", + "Set message to display when someone joins the guild. Provide either text, or valid JSON from the [embed creator](https://embed.kaikibot.xyz)", requiredUserPermissions: ["ManageGuild"], preconditions: ["GuildOnly"], minorCategory: "Welcome", diff --git a/src/commands/Server settings/welcometest.ts b/src/commands/Server settings/welcometest.ts index 15614683..e719bc2a 100644 --- a/src/commands/Server settings/welcometest.ts +++ b/src/commands/Server settings/welcometest.ts @@ -33,11 +33,11 @@ export default class WelcomeTestCommand extends KaikiCommand { embeds: [ result ? new EmbedBuilder() - .setTitle("Message sent successfully!") - .withOkColor(message) + .setTitle("Message sent successfully!") + .withOkColor(message) : new EmbedBuilder() - .setTitle("Message was not sent successfully!") - .withErrorColor(message), + .setTitle("Message was not sent successfully!") + .withErrorColor(message), ], }); } diff --git a/src/commands/Utility/cmdlist.ts b/src/commands/Utility/cmdlist.ts index 333a672e..13e741ee 100644 --- a/src/commands/Utility/cmdlist.ts +++ b/src/commands/Utility/cmdlist.ts @@ -34,20 +34,20 @@ export default class CommandsList extends KaikiCommand { const timestamp = Date.now().toString(); const component = - new ActionRowBuilder().setComponents( - new StringSelectMenuBuilder() - .setCustomId(timestamp) - .setOptions( - filteredCategories.sort().map( - (cat) => - new StringSelectMenuOptionBuilder({ - value: cat, - label: cat, - description: cat, - }) - ) - ) - ); + new ActionRowBuilder().setComponents( + new StringSelectMenuBuilder() + .setCustomId(timestamp) + .setOptions( + filteredCategories.sort().map( + (cat) => + new StringSelectMenuOptionBuilder({ + value: cat, + label: cat, + description: cat, + }) + ) + ) + ); const embed = await this.categoriesEmbed( message, @@ -96,11 +96,11 @@ export default class CommandsList extends KaikiCommand { return arr.length === 1 ? `[\`${arr.join()}\`]` : `[\`${arr - .sort( - (a, b) => - b.length - a.length || a.localeCompare(b) - ) - .join("`, `")}\`]`; + .sort( + (a, b) => + b.length - a.length || a.localeCompare(b) + ) + .join("`, `")}\`]`; }) .join("\n"); @@ -128,11 +128,11 @@ export default class CommandsList extends KaikiCommand { { name: cmd, value: - this.mapCommands( - filtered - .filter((c) => c.minorCategory === cmd) - .sort() - ) || "Empty", + this.mapCommands( + filtered + .filter((c) => c.minorCategory === cmd) + .sort() + ) || "Empty", inline: true, }, ]); @@ -218,14 +218,14 @@ export default class CommandsList extends KaikiCommand { { name: cmd, value: - this.mapCommands( - filtered - .filter( - (c: KaikiCommand) => - c.minorCategory === cmd - ) - .sort() - ) || "Empty", + this.mapCommands( + filtered + .filter( + (c: KaikiCommand) => + c.minorCategory === cmd + ) + .sort() + ) || "Empty", inline: true, }, ]); diff --git a/src/commands/Utility/color.ts b/src/commands/Utility/color.ts index 54e7fea0..12531442 100644 --- a/src/commands/Utility/color.ts +++ b/src/commands/Utility/color.ts @@ -13,7 +13,7 @@ import Constants from "../../struct/Constants"; name: "color", aliases: ["clr"], description: - "Returns up to 10 representations the inputted color, or shows list of available color names to use.", + "Returns up to 10 representations the inputted color, or shows list of available color names to use.", usage: ["#ff00ff #dc143c", "--list"], typing: true, flags: ["list"], @@ -26,11 +26,11 @@ export default class ColorCommand extends KaikiCommand { if (list) { const colorList = Object.keys(Constants.hexColorTable), embedColor = - Constants.hexColorTable[ - colorList[ - Math.floor(Math.random() * colorList.length) - ] as keyof ColorNames - ], + Constants.hexColorTable[ + colorList[ + Math.floor(Math.random() * colorList.length) + ] as keyof ColorNames + ], pages: EmbedBuilder[] = []; for ( @@ -41,11 +41,11 @@ export default class ColorCommand extends KaikiCommand { p = 0; p < colorList.length; index += - Constants.MAGIC_NUMBERS.CMDS.UTILITY.COLOR - .CLR_NAMES_PR_PAGE, - p += - Constants.MAGIC_NUMBERS.CMDS.UTILITY.COLOR - .CLR_NAMES_PR_PAGE + Constants.MAGIC_NUMBERS.CMDS.UTILITY.COLOR + .CLR_NAMES_PR_PAGE, + p += + Constants.MAGIC_NUMBERS.CMDS.UTILITY.COLOR + .CLR_NAMES_PR_PAGE ) { pages.push( new EmbedBuilder({ diff --git a/src/commands/Utility/exclude.ts b/src/commands/Utility/exclude.ts index 27b4e15d..956652f3 100644 --- a/src/commands/Utility/exclude.ts +++ b/src/commands/Utility/exclude.ts @@ -10,7 +10,7 @@ import SlashCommandsLib from "../../lib/SlashCommands/SlashCommandsLib"; aliases: ["excl", "e"], usage: "", description: - "Excludes you from being targeted by dad-bot. Execute command again to reverse this action.", + "Excludes you from being targeted by dad-bot. Execute command again to reverse this action.", requiredClientPermissions: ["ManageRoles"], preconditions: ["GuildOnly"], }) diff --git a/src/commands/Utility/fetch.ts b/src/commands/Utility/fetch.ts index 87744979..30c85347 100644 --- a/src/commands/Utility/fetch.ts +++ b/src/commands/Utility/fetch.ts @@ -13,7 +13,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; name: "fetch", aliases: ["fu"], description: - "Fetches a discord user, shows relevant information. 30sec cooldown.", + "Fetches a discord user, shows relevant information. 30sec cooldown.", usage: [""], cooldownDelay: 30000, }) @@ -35,7 +35,7 @@ export default class FetchUserCommand extends KaikiCommand { return new UserError({ identifier: "fetchNoUserFound", message: - "Provided argument doesn't seem to be a valid user ID.", + "Provided argument doesn't seem to be a valid user ID.", context: ctx, }); } diff --git a/src/commands/Utility/forgetMe.ts b/src/commands/Utility/forgetMe.ts index 6fc45d64..3fe41e2b 100644 --- a/src/commands/Utility/forgetMe.ts +++ b/src/commands/Utility/forgetMe.ts @@ -64,11 +64,11 @@ export default class ForgetMeCommand extends KaikiCommand { }); const guildData = - await this.client.orm.guildUsers.deleteMany({ - where: { - UserId: BigInt(message.author.id), - }, - }); + await this.client.orm.guildUsers.deleteMany({ + where: { + UserId: BigInt(message.author.id), + }, + }); message.channel.send({ embeds: [ diff --git a/src/commands/Utility/help.ts b/src/commands/Utility/help.ts index 990f944d..c9b14145 100644 --- a/src/commands/Utility/help.ts +++ b/src/commands/Utility/help.ts @@ -62,26 +62,26 @@ export default class HelpCommand extends KaikiCommand { .join("`, `"); const extractedCommandUsage = - command instanceof Subcommand - ? command.options.usage - : command.usage; + command instanceof Subcommand + ? command.options.usage + : command.usage; const commandUsage = extractedCommandUsage ? Array.isArray(extractedCommandUsage) ? extractedCommandUsage - .sort( - (a, b) => - b.length - a.length || a.localeCompare(b) - ) - .map((u) => `${prefix}${command.name} ${u}`) - .join("\n") + .sort( + (a, b) => + b.length - a.length || a.localeCompare(b) + ) + .map((u) => `${prefix}${command.name} ${u}`) + .join("\n") : `${prefix}${command.name} ${command.usage}` : `${prefix}${command.name}`; const cooldown = - command.options.cooldownDelay || - this.client.options.defaultCooldown?.delay || - 0; + command.options.cooldownDelay || + this.client.options.defaultCooldown?.delay || + 0; if (aliases.length) { embed.addFields([ diff --git a/src/commands/Utility/info.ts b/src/commands/Utility/info.ts index 5c6f1507..ed70e537 100644 --- a/src/commands/Utility/info.ts +++ b/src/commands/Utility/info.ts @@ -32,24 +32,24 @@ export default class InfoCommand extends KaikiCommand { private NoArgumentFoundError = new UserError({ identifier: "NoArgumentFound", message: - "I couldn't find any relevant information for the argument you provided. Please check your input and try again.", + "I couldn't find any relevant information for the argument you provided. Please check your input and try again.", }); public async messageRun(message: Message, args: Args) { const obj = args.finished ? message.member || message.author : await Promise.resolve( - args - .pick("member") - .catch(async () => args.pick("user")) - .catch(async () => args.pick("guildChannel")) - .catch(async () => args.pick("role")) - .catch(async () => args.pick("message")) - .catch(async () => args.pick("emoji")) - .catch(async () => { - throw this.NoArgumentFoundError; - }) - ); + args + .pick("member") + .catch(async () => args.pick("user")) + .catch(async () => args.pick("guildChannel")) + .catch(async () => args.pick("role")) + .catch(async () => args.pick("message")) + .catch(async () => args.pick("emoji")) + .catch(async () => { + throw this.NoArgumentFoundError; + }) + ); let emb: EmbedBuilder[] = []; @@ -179,15 +179,15 @@ export default class InfoCommand extends KaikiCommand { { name: "Type", value: Constants.channelTypes[ - ChannelType[obj.type] as keyof typeof ChannelType + ChannelType[obj.type] as keyof typeof ChannelType ], }, { name: "User limit", value: - obj.userLimit === 0 - ? "No limit" - : String(obj.userLimit), + obj.userLimit === 0 + ? "No limit" + : String(obj.userLimit), }, { name: "Created at", @@ -217,7 +217,7 @@ export default class InfoCommand extends KaikiCommand { { name: "Type", value: Constants.channelTypes[ - ChannelType[obj.type] as keyof typeof ChannelType + ChannelType[obj.type] as keyof typeof ChannelType ], }, { @@ -239,8 +239,8 @@ export default class InfoCommand extends KaikiCommand { { name: "Author", value: - message.guild.members.cache.get(obj.ownerId) - ?.user.username || obj.ownerId, + message.guild.members.cache.get(obj.ownerId) + ?.user.username || obj.ownerId, }, ]); } @@ -255,9 +255,9 @@ export default class InfoCommand extends KaikiCommand { { name: "Type", value: Constants.channelTypes[ - ChannelType[ - obj.type - ] as keyof typeof ChannelType + ChannelType[ + obj.type + ] as keyof typeof ChannelType ], }, { @@ -294,7 +294,7 @@ export default class InfoCommand extends KaikiCommand { { name: "Type", value: Constants.channelTypes[ - ChannelType[obj.type] as keyof typeof ChannelType + ChannelType[obj.type] as keyof typeof ChannelType ], }, { @@ -322,7 +322,7 @@ export default class InfoCommand extends KaikiCommand { { name: "Type", value: Constants.channelTypes[ - ChannelType[obj.type] as keyof typeof ChannelType + ChannelType[obj.type] as keyof typeof ChannelType ], }, { @@ -493,9 +493,9 @@ export default class InfoCommand extends KaikiCommand { { name: "Type", value: - sticker.type === 1 - ? "Official" - : "Guild" || "N/A", + sticker.type === 1 + ? "Official" + : "Guild" || "N/A", inline: true, } ) diff --git a/src/commands/Utility/mcping.ts b/src/commands/Utility/mcping.ts index 2d14b8ef..9fc97915 100644 --- a/src/commands/Utility/mcping.ts +++ b/src/commands/Utility/mcping.ts @@ -26,18 +26,18 @@ export default class MinecraftPingCommand extends KaikiCommand { `https://api.mcsrvstat.us/2/${term}` ).then( (response) => - response.json() as Promise + response.json() as Promise ); if (result.online) { const attachment = result?.icon?.length ? new AttachmentBuilder( - Buffer.from( - result.icon.slice(result.icon.indexOf(",")), - "base64" - ), - { name: "icon.png" } - ) + Buffer.from( + result.icon.slice(result.icon.indexOf(",")), + "base64" + ), + { name: "icon.png" } + ) : undefined; const embed = new EmbedBuilder() @@ -65,9 +65,9 @@ export default class MinecraftPingCommand extends KaikiCommand { name: "Plugins", value: result.plugins?.names.length ? KaikiUtil.trim( - result.plugins?.names.join(", "), - 1024 - ) + result.plugins?.names.join(", "), + 1024 + ) : "None", inline: true, }, @@ -80,9 +80,9 @@ export default class MinecraftPingCommand extends KaikiCommand { name: "Mods", value: result.mods?.names.length ? KaikiUtil.trim( - result.mods?.names.join(", "), - 1024 - ) + result.mods?.names.join(", "), + 1024 + ) : "None", inline: true, }, diff --git a/src/commands/Utility/ping.ts b/src/commands/Utility/ping.ts index 6fd77be6..a312fdf4 100644 --- a/src/commands/Utility/ping.ts +++ b/src/commands/Utility/ping.ts @@ -15,7 +15,7 @@ import { ApplicationCommandRegistry } from "@sapphire/framework"; aliases: ["p"], usage: "", description: - "Ping the bot and websocket to see if there are latency issues.", + "Ping the bot and websocket to see if there are latency issues.", }) export default class PingCommand extends KaikiCommand { public async messageRun(message: Message) { @@ -61,9 +61,9 @@ export default class PingCommand extends KaikiCommand { { name: "Client ping", value: - initialMsg.createdTimestamp - - interaction.createdTimestamp + - " ms", + initialMsg.createdTimestamp - + interaction.createdTimestamp + + " ms", inline: true, }, ]) diff --git a/src/commands/Utility/say.ts b/src/commands/Utility/say.ts index aee3e236..c08b5e41 100644 --- a/src/commands/Utility/say.ts +++ b/src/commands/Utility/say.ts @@ -9,7 +9,7 @@ import KaikiEmbeds from "../../lib/Kaiki/KaikiEmbeds"; @ApplyOptions({ name: "say", description: - "Bot will send the message you typed in the specified channel. It also takes embeds", + "Bot will send the message you typed in the specified channel. It also takes embeds", usage: ["#general hello from another channel", ""], requiredUserPermissions: ["ManageMessages"], preconditions: ["GuildOnly"], diff --git a/src/commands/Utility/serverinfo.ts b/src/commands/Utility/serverinfo.ts index c66650a6..a147fd41 100644 --- a/src/commands/Utility/serverinfo.ts +++ b/src/commands/Utility/serverinfo.ts @@ -29,8 +29,8 @@ export default class ServerInfoCommand extends KaikiCommand { { name: "Owner", value: - message.client.users.cache.get(guild.ownerId) - ?.username ?? guild.ownerId, + message.client.users.cache.get(guild.ownerId) + ?.username ?? guild.ownerId, inline: true, }, { @@ -74,12 +74,12 @@ News: **${guild.channels.cache.filter((channel) => channel.type === ChannelType. name: "Features", value: guild.features.length ? guild.features - .map( - (f: GuildFeature & UndocumentedFeatures) => - `* ${Constants.guildFeatures[f] || f}` - ) - .sort() - .join("\n") + .map( + (f: GuildFeature & UndocumentedFeatures) => + `* ${Constants.guildFeatures[f] || f}` + ) + .sort() + .join("\n") : "None", inline: false, }, diff --git a/src/commands/Utility/serverlist.ts b/src/commands/Utility/serverlist.ts index 53ad2240..c56e66d4 100644 --- a/src/commands/Utility/serverlist.ts +++ b/src/commands/Utility/serverlist.ts @@ -18,7 +18,7 @@ export default class ServerList extends KaikiCommand { const startPage = await args.pick("number").catch(() => 0); const { GUILDS_PER_PAGE } = - Constants.MAGIC_NUMBERS.CMDS.UTILITY.SERVER_LIST; + Constants.MAGIC_NUMBERS.CMDS.UTILITY.SERVER_LIST; const pages = []; const embed = new EmbedBuilder() .setDescription("Server list") diff --git a/src/commands/Utility/shardstats.ts b/src/commands/Utility/shardstats.ts index f6bbd463..a15f101e 100644 --- a/src/commands/Utility/shardstats.ts +++ b/src/commands/Utility/shardstats.ts @@ -5,12 +5,12 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; import KaikiUtil from "../../lib/KaikiUtil"; enum ShardStats { - "READY", - "CONNECTING", - "RECONNECTING", - "IDLE", - "NEARLY", - "DISCONNECTED", + "READY", + "CONNECTING", + "RECONNECTING", + "IDLE", + "NEARLY", + "DISCONNECTED", } @ApplyOptions({ diff --git a/src/commands/Utility/stats.ts b/src/commands/Utility/stats.ts index cd103dc5..aa2acb3f 100644 --- a/src/commands/Utility/stats.ts +++ b/src/commands/Utility/stats.ts @@ -54,9 +54,9 @@ export default class StatsCommand extends KaikiCommand { g.channels.cache.filter( (channel) => channel.type !== - ChannelType.GuildVoice && - channel.type !== - ChannelType.GuildCategory + ChannelType.GuildVoice && + channel.type !== + ChannelType.GuildCategory ).size ) .reduce( @@ -68,7 +68,7 @@ export default class StatsCommand extends KaikiCommand { g.channels.cache.filter( (channel) => channel.type === - ChannelType.GuildVoice + ChannelType.GuildVoice ).size ) .reduce((a, b) => a + b, 0)}**`, diff --git a/src/commands/Utility/todo.ts b/src/commands/Utility/todo.ts index cd1be174..cb0529a1 100644 --- a/src/commands/Utility/todo.ts +++ b/src/commands/Utility/todo.ts @@ -10,7 +10,7 @@ import { Todo } from "../../lib/Todo/Todo"; aliases: ["note"], usage: ["", "2"], description: - "A personal todo list. The items are limited to 204 characters. Intended for small notes.", + "A personal todo list. The items are limited to 204 characters. Intended for small notes.", }) export default class TodoCommand extends KaikiCommand { public async messageRun(message: Message, args: Args) { diff --git a/src/extensions/Discord.ts b/src/extensions/Discord.ts index 2eb454db..ab57d5a5 100644 --- a/src/extensions/Discord.ts +++ b/src/extensions/Discord.ts @@ -10,39 +10,39 @@ import KaikiSapphireClient from "../lib/Kaiki/KaikiSapphireClient"; import Constants from "../struct/Constants"; declare module "discord.js" { - interface Client extends KaikiClientInterface { - id: string | null; - } + interface Client extends KaikiClientInterface { + id: string | null; + } - export interface Guild { - isDadBotEnabledInGuildOnly(): boolean; + export interface Guild { + isDadBotEnabledInGuildOnly(): boolean; - client: KaikiSapphireClient; - } + client: KaikiSapphireClient; + } - export interface GuildMember { - hasExcludedRole(): boolean; + export interface GuildMember { + hasExcludedRole(): boolean; - client: KaikiSapphireClient; - } + client: KaikiSapphireClient; + } - export interface Message { - getMemberColorAsync(member?: GuildMember): Promise; + export interface Message { + getMemberColorAsync(member?: GuildMember): Promise; - isDadBotEnabledInGuildAndChannel(): boolean; + isDadBotEnabledInGuildAndChannel(): boolean; - client: KaikiSapphireClient; - } + client: KaikiSapphireClient; + } - export interface EmbedBuilder { - withOkColor(m?: Message | Guild): this; + export interface EmbedBuilder { + withOkColor(m?: Message | Guild): this; - withErrorColor(m?: Message | Guild): this; - } + withErrorColor(m?: Message | Guild): this; + } - export interface ButtonInteraction { - client: KaikiSapphireClient; - } + export interface ButtonInteraction { + client: KaikiSapphireClient; + } } GuildMember.prototype.hasExcludedRole = function () { diff --git a/src/extensions/Sapphire.ts b/src/extensions/Sapphire.ts index e32c627a..8ecae5c0 100644 --- a/src/extensions/Sapphire.ts +++ b/src/extensions/Sapphire.ts @@ -7,23 +7,23 @@ import { KaikiColor } from "../lib/Types/KaikiColor"; import { Categories } from "../lib/Types/Miscellaneous"; declare module "@sapphire/framework" { - interface Preconditions { - OwnerOnly: never; - } + interface Preconditions { + OwnerOnly: never; + } - interface ArgType { - activityType: ValidActivities; - category: Categories; - command: KaikiCommand; - guild: Guild; - kaikiCoin: string; - kaikiColor: KaikiColor; - kaikiHentai: HentaiTypes; - kaikiMoney: bigint; - welcomeGoodbyeMessage: JSONToMessageOptions; - } + interface ArgType { + activityType: ValidActivities; + category: Categories; + command: KaikiCommand; + guild: Guild; + kaikiCoin: string; + kaikiColor: KaikiColor; + kaikiHentai: HentaiTypes; + kaikiMoney: bigint; + welcomeGoodbyeMessage: JSONToMessageOptions; + } - interface SapphireClient { - initializeServices(): Promise; - } + interface SapphireClient { + initializeServices(): Promise; + } } diff --git a/src/index.ts b/src/index.ts index b30c85b9..14cc8acd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,6 +5,7 @@ import "./extensions/Discord"; import "./extensions/Sapphire"; import "./struct/ErrorHandler"; import KaikiSapphireClient from "./lib/Kaiki/KaikiSapphireClient"; +import "source-map-support/register" import { config } from "dotenv"; // Load .env diff --git a/src/lib/APIs/AnilistGraphQL.ts b/src/lib/APIs/AnilistGraphQL.ts index 2fac01cb..a201282e 100644 --- a/src/lib/APIs/AnilistGraphQL.ts +++ b/src/lib/APIs/AnilistGraphQL.ts @@ -120,9 +120,9 @@ query ($page: Int, $perPage: Int, $search: String, $type: MediaType) { `; static async handleResponse(response: { - json: () => Promise; - ok: any; - }) { + json: () => Promise; + ok: any; + }) { const json = await response.json(); return await (response.ok ? json : Promise.reject(json)); } diff --git a/src/lib/APIs/Common/Types.ts b/src/lib/APIs/Common/Types.ts index 87f23a62..b94b0f6a 100644 --- a/src/lib/APIs/Common/Types.ts +++ b/src/lib/APIs/Common/Types.ts @@ -7,78 +7,78 @@ import WaifuIm from "../waifu.im"; import WaifuPics from "../WaifuPics"; export type ImageAPIEndPointTypes = { - [index in T]: InteractionsImageData; + [index in T]: InteractionsImageData; }; export interface ImageAPIOptions { - endPointData: ImageAPIEndPointTypes; - url: (endPoint: T) => string; - objectIndex: string | string[]; - token?: string | undefined; + endPointData: ImageAPIEndPointTypes; + url: (endPoint: T) => string; + objectIndex: string | string[]; + token?: string | undefined; } export type ClientImageAPIs = { - KawaiiAPI: KawaiiAPI; - NekosLife: NekosLife; - NekosAPI: NekosAPI; - PurrBot: PurrBot; - WaifuIm: WaifuIm; - WaifuPics: WaifuPics; + KawaiiAPI: KawaiiAPI; + NekosLife: NekosLife; + NekosAPI: NekosAPI; + PurrBot: PurrBot; + WaifuIm: WaifuIm; + WaifuPics: WaifuPics; }; export type APIs = keyof ClientImageAPIs; export enum NekosAPITags { - Illustration = 1, - Girl = 2, - "Black hair" = 3, - Sportswear = 4, - Sword = 5, - Kemonomimi = 6, - Flowers = 7, - Catgirl = 8, - "White hair" = 9, - Loli = 10, - Plants = 11, - "Blue Hair" = 12, - "Pink hair" = 13, - "Purple hair" = 14, - "Exposed girl breasts" = 15, - "Exposed anus" = 16, - Pussy = 17, - Dick = 18, - Maid = 19, - Beach = 20, - Reading = 21, - Mountain = 22, - Night = 23, - Gloves = 24, - "Original Style" = 25, - "Brown Hair" = 26, - Sunny = 27, - Rain = 28, - Shorts = 29, - Weapon = 30, - Bikini = 31, - "Ice Cream" = 32, - Tree = 33, - "Bunny girl" = 34, - Dress = 35, - Usagimimi = 36, - "School Uniform" = 37, - Guitar = 38, - "Baggy Clothes" = 39, - Wet = 40, - Yuri = 41, - "Red hair" = 42, - Glasses = 43, - Anal = 44, - Futanari = 45, - Masturbating = 46, - Threesome = 47, - Kissing = 48, - Skirt = 49, - "Blonde hair" = 50, - Horsegirl = 51, - Boy = 52, + Illustration = 1, + Girl = 2, + "Black hair" = 3, + Sportswear = 4, + Sword = 5, + Kemonomimi = 6, + Flowers = 7, + Catgirl = 8, + "White hair" = 9, + Loli = 10, + Plants = 11, + "Blue Hair" = 12, + "Pink hair" = 13, + "Purple hair" = 14, + "Exposed girl breasts" = 15, + "Exposed anus" = 16, + Pussy = 17, + Dick = 18, + Maid = 19, + Beach = 20, + Reading = 21, + Mountain = 22, + Night = 23, + Gloves = 24, + "Original Style" = 25, + "Brown Hair" = 26, + Sunny = 27, + Rain = 28, + Shorts = 29, + Weapon = 30, + Bikini = 31, + "Ice Cream" = 32, + Tree = 33, + "Bunny girl" = 34, + Dress = 35, + Usagimimi = 36, + "School Uniform" = 37, + Guitar = 38, + "Baggy Clothes" = 39, + Wet = 40, + Yuri = 41, + "Red hair" = 42, + Glasses = 43, + Anal = 44, + Futanari = 45, + Masturbating = 46, + Threesome = 47, + Kissing = 48, + Skirt = 49, + "Blonde hair" = 50, + Horsegirl = 51, + Boy = 52, } diff --git a/src/lib/APIs/WaifuPics.ts b/src/lib/APIs/WaifuPics.ts index 6b94c949..57048514 100644 --- a/src/lib/APIs/WaifuPics.ts +++ b/src/lib/APIs/WaifuPics.ts @@ -98,17 +98,17 @@ export default class WaifuPics extends ImageAPI { } type APIs = - | "bonk" - | "cry" - | "cuddle" - | "hug" - | "kiss" - | "pat" - | "waifu" - | "yeet" - | "bully" - | "megumin" - | "neko" - | "shinobu" - | "nom" - | "slap"; + | "bonk" + | "cry" + | "cuddle" + | "hug" + | "kiss" + | "pat" + | "waifu" + | "yeet" + | "bully" + | "megumin" + | "neko" + | "shinobu" + | "nom" + | "slap"; diff --git a/src/lib/APIs/waifu.im.ts b/src/lib/APIs/waifu.im.ts index 29d53606..211c1c28 100644 --- a/src/lib/APIs/waifu.im.ts +++ b/src/lib/APIs/waifu.im.ts @@ -60,8 +60,8 @@ export default class WaifuIm extends ImageAPI { } type EndPointSignatures = - | "uniform" - | "maid" - | "selfies" - | "marin-kitagawa" - | "ero"; + | "uniform" + | "maid" + | "selfies" + | "marin-kitagawa" + | "ero"; diff --git a/src/lib/AnniversaryRolesService.ts b/src/lib/AnniversaryRolesService.ts index 44689692..b4f007f5 100644 --- a/src/lib/AnniversaryRolesService.ts +++ b/src/lib/AnniversaryRolesService.ts @@ -49,8 +49,8 @@ export default class AnniversaryRolesService { ) ) { const [anniversaryRoleCreated, anniversaryRoleJoin] = < - Role[] - >await this.handleGuildRoles(guild); + Role[] + >await this.handleGuildRoles(guild); // Get roles from the result of checking if guild has the roles at all / after creating them. await Promise.all( guild.members.cache.map(async (member) => { @@ -136,8 +136,8 @@ export default class AnniversaryRolesService { ) ) { const [anniversaryRoleCreated, anniversaryRoleJoin] = < - Role[] - >await this.handleGuildRoles(guild); + Role[] + >await this.handleGuildRoles(guild); // Get roles from the result of checking if guild has the roles at all / after creating them. await this.memberCheckAnniversary( member, @@ -174,7 +174,7 @@ export default class AnniversaryRolesService { } if ( member.joinedAt?.getMonth() === month && - member.joinedAt.getFullYear() !== new Date().getFullYear() + member.joinedAt.getFullYear() !== new Date().getFullYear() ) { if (member.joinedAt.getDate() === day) { this.listUserJoinedAt.push(member.user.username); @@ -225,8 +225,8 @@ export default class AnniversaryRolesService { ) { // Check if perms. const [anniversaryRoleCreated, anniversaryRoleJoin] = < - Role[] - >await this.handleGuildRoles(guild); + Role[] + >await this.handleGuildRoles(guild); // Get roles from the result of checking if guild has the roles at all / after creating them. await Promise.all( guild.members.cache.map(async (member) => { diff --git a/src/lib/Cache/KaikiCache.ts b/src/lib/Cache/KaikiCache.ts index f9d76349..da374067 100644 --- a/src/lib/Cache/KaikiCache.ts +++ b/src/lib/Cache/KaikiCache.ts @@ -14,8 +14,8 @@ import { } from "../Interfaces/Kaiki/KaikiCache"; export enum ERCacheType { - HAS_SPACE, - NO_SPACE, + HAS_SPACE, + NO_SPACE, } export default class KaikiCache { @@ -35,16 +35,16 @@ export default class KaikiCache { this.cmdStatsCache = new Map(); this.dailyProvider = new MySQLDailyProvider(connection); this.emoteReactCache = new Map< - GuildString, - Map> - >(); + GuildString, + Map> + >(); // API cache this.imageAPIs = imageAPIs; this.imageAPICache = new Map< - APIs, - Map> - >(); + APIs, + Map> + >(); void this.init(orm); this.populateImageAPICache(); @@ -166,8 +166,8 @@ export default class KaikiCache { ) { for (const word of matches) { const emote = - wordObj.get(ERCacheType.NO_SPACE)?.get(word) || - wordObj.get(ERCacheType.HAS_SPACE)?.get(word); + wordObj.get(ERCacheType.NO_SPACE)?.get(word) || + wordObj.get(ERCacheType.HAS_SPACE)?.get(word); if (!message.guild?.emojis.cache.has(emote as Snowflake) || !emote) continue; await message.react(emote); diff --git a/src/lib/DadBot.ts b/src/lib/DadBot.ts index 7fdb80b6..ff8747c6 100644 --- a/src/lib/DadBot.ts +++ b/src/lib/DadBot.ts @@ -3,7 +3,7 @@ import { GuildMember, Message, PermissionsBitField } from "discord.js"; import Constants from "../struct/Constants"; interface CustomMessageType extends Message { - member: GuildMember; + member: GuildMember; } export class DadBot { @@ -47,14 +47,14 @@ export class DadBot { if ( match.length && - match.length <= - parseInt( - process.env.DADBOT_NICKNAME_LENGTH || - String( - Constants.MAGIC_NUMBERS.CMDS.ETC.DAD_BOT - .DADBOT_NICK_LENGTH - ) - ) + match.length <= + parseInt( + process.env.DADBOT_NICKNAME_LENGTH || + String( + Constants.MAGIC_NUMBERS.CMDS.ETC.DAD_BOT + .DADBOT_NICK_LENGTH + ) + ) ) { return match; } @@ -74,26 +74,26 @@ export class DadBot { if ( nick.length <= - parseInt( - process.env.DADBOT_NICKNAME_LENGTH || - String( - Constants.MAGIC_NUMBERS.CMDS.ETC.DAD_BOT - .DADBOT_NICK_LENGTH - ) - ) + parseInt( + process.env.DADBOT_NICKNAME_LENGTH || + String( + Constants.MAGIC_NUMBERS.CMDS.ETC.DAD_BOT + .DADBOT_NICK_LENGTH + ) + ) ) { const user = message.author; const position = - message.guild.members.me?.roles.highest.comparePositionTo( - message.member.roles.highest - ); + message.guild.members.me?.roles.highest.comparePositionTo( + message.member.roles.highest + ); if ( user.id !== message.guild?.ownerId && - message.guild.members.me?.permissions.has( - PermissionsBitField.Flags.ManageNicknames - ) && - position + message.guild.members.me?.permissions.has( + PermissionsBitField.Flags.ManageNicknames + ) && + position ? position >= 0 : false ) { diff --git a/src/lib/Emotes/Emotes.ts b/src/lib/Emotes/Emotes.ts index 48115f21..22c074ed 100644 --- a/src/lib/Emotes/Emotes.ts +++ b/src/lib/Emotes/Emotes.ts @@ -25,9 +25,9 @@ export default class Emotes { sharpFile .resize( imgSize || - Constants.MAGIC_NUMBERS.CMDS.EMOTES.MAX_WIDTH_HEIGHT, + Constants.MAGIC_NUMBERS.CMDS.EMOTES.MAX_WIDTH_HEIGHT, imgSize || - Constants.MAGIC_NUMBERS.CMDS.EMOTES.MAX_WIDTH_HEIGHT, + Constants.MAGIC_NUMBERS.CMDS.EMOTES.MAX_WIDTH_HEIGHT, { fit: "contain", background: { r: 0, g: 0, b: 0, alpha: 0 }, diff --git a/src/lib/Enums/categoriesEnum.ts b/src/lib/Enums/categoriesEnum.ts index 68325655..af312c14 100644 --- a/src/lib/Enums/categoriesEnum.ts +++ b/src/lib/Enums/categoriesEnum.ts @@ -1,15 +1,15 @@ export enum CategoriesEnum { - Administration = 0, - Anime, - Emotes, - Fun, - Gambling, - Moderation, - NSFW, - "Owner only", - Roles, - "Server settings", - Utility, - Images, - Interactions, + Administration = 0, + Anime, + Emotes, + Fun, + Gambling, + Moderation, + NSFW, + "Owner only", + Roles, + "Server settings", + Utility, + Images, + Interactions, } diff --git a/src/lib/Errors/ArgumentErrorRun.ts b/src/lib/Errors/ArgumentErrorRun.ts index 5331b7e2..265fce67 100644 --- a/src/lib/Errors/ArgumentErrorRun.ts +++ b/src/lib/Errors/ArgumentErrorRun.ts @@ -12,9 +12,9 @@ import { import KaikiCommand from "../Kaiki/KaikiCommand"; type ErrorContext = { - message: Message; - command: KaikiCommand; - commandContext: Record; + message: Message; + command: KaikiCommand; + commandContext: Record; }; export default async ( diff --git a/src/lib/Gambling/Gambling.ts b/src/lib/Gambling/Gambling.ts index a25f70f2..950c540a 100644 --- a/src/lib/Gambling/Gambling.ts +++ b/src/lib/Gambling/Gambling.ts @@ -1,5 +1,7 @@ +import { SlotResult } from "../../commands/Gambling/slots"; + export default class Gambling { - static slotDict: { [num: number]: string } = { + static readonly slotDict: { [num: number]: string } = Object.freeze({ 0: "🥑", 1: "🍏", 2: "🍎", @@ -20,17 +22,14 @@ export default class Gambling { 17: "🥝", 18: "🍅", 19: "🍆", - }; + }); static randomEmoji = () => this.slotDict[ Math.floor(Math.random() * Object.keys(this.slotDict).length) ]; - static async playSlots(currencySymbol: string): Promise<{ - string: string; - numbers: string[]; - }> { + static async playSlots(currencySymbol: string): Promise { const arr = new Array(9); for (let i = 0; i < arr.length; i++) { await (async () => { diff --git a/src/lib/Games/TTT.ts b/src/lib/Games/TTT.ts index e0adb7f7..5112175e 100644 --- a/src/lib/Games/TTT.ts +++ b/src/lib/Games/TTT.ts @@ -30,11 +30,11 @@ export default class TicTacToe { active: boolean; /** - * Initializes a TicTacToe game. - * @param playerOne @type {GuildMember} - * @param playerTwo @type {GuildMember} - * @param message @type {Message} - */ + * Initializes a TicTacToe game. + * @param playerOne @type {GuildMember} + * @param playerTwo @type {GuildMember} + * @param message @type {Message} + */ constructor( playerOne: GuildMember, @@ -134,7 +134,7 @@ export default class TicTacToe { this.stateDict[int] = sign; this.currentPlayer = - player.id !== this.pOne.player.id ? this.pOne : this.pTwo; + player.id !== this.pOne.player.id ? this.pOne : this.pTwo; await this.updateEmbed(this.currentPlayer); diff --git a/src/lib/GreetHandler.ts b/src/lib/GreetHandler.ts index 8d0c14aa..680aa888 100644 --- a/src/lib/GreetHandler.ts +++ b/src/lib/GreetHandler.ts @@ -12,13 +12,13 @@ import { } from "discord.js"; interface MemberMessage extends Message { - member: GuildMember; + member: GuildMember; } interface SendMessageData { - channel: bigint | null; - message: string | null; - timeout: number | null; + channel: bigint | null; + message: string | null; + timeout: number | null; } export default class GreetHandler { @@ -140,17 +140,17 @@ export default class GreetHandler { if (!data.channel) return false; const channel = - this.guildMember.guild.channels.cache.get(String(data.channel)) ?? - (await this.guildMember.guild.client.channels.fetch( - String(data.channel), - { cache: true } - )); + this.guildMember.guild.channels.cache.get(String(data.channel)) ?? + (await this.guildMember.guild.client.channels.fetch( + String(data.channel), + { cache: true } + )); if (!channel) return false; if ( channel.type !== ChannelType.GuildText && - channel.type !== ChannelType.GuildAnnouncement + channel.type !== ChannelType.GuildAnnouncement ) return false; @@ -162,7 +162,7 @@ export default class GreetHandler { return false; const parsedMessageOptions = await this.createAndParseGreetMsg( - data + data ); return channel.send(parsedMessageOptions).then((m) => { @@ -194,7 +194,7 @@ export default class GreetHandler { } export type IJSONToMessageOptions = MessageCreateOptions & { - embeds?: APIEmbed[] | undefined; + embeds?: APIEmbed[] | undefined; }; export class JSONToMessageOptions implements MessageCreateOptions { @@ -208,12 +208,15 @@ export class JSONToMessageOptions implements MessageCreateOptions { this.embeds = any.embeds ? any.embeds.map((e: APIEmbed) => { - if (e.color && !Number.isInteger(e.color)) { - e.color = parseInt(String(e.color).replace(/#/g, ""), 16); - } - - return EmbedBuilder.from(e); - }) + if (e.color && !Number.isInteger(e.color)) { + e.color = parseInt( + String(e.color).replace(/#/g, ""), + 16 + ); + } + + return EmbedBuilder.from(e); + }) : undefined; } } diff --git a/src/lib/Hentai/HentaiService.ts b/src/lib/Hentai/HentaiService.ts index dccff79a..907c8128 100644 --- a/src/lib/Hentai/HentaiService.ts +++ b/src/lib/Hentai/HentaiService.ts @@ -5,8 +5,8 @@ import { DanbooruData, DanbooruPost } from "../Interfaces/Common/DanbooruData"; import { UserError } from "@sapphire/framework"; export enum DAPI { - E621, - Danbooru, + E621, + Danbooru, } export type HentaiTypes = "waifu" | "neko" | "femboy" | "trap" | "blowjob"; @@ -28,13 +28,13 @@ export default class HentaiService { ]; public async grabHentai( - type: HentaiTypes, - format: "single" - ): Promise; + type: HentaiTypes, + format: "single" + ): Promise; public async grabHentai( - type: HentaiTypes, - format: "bomb" - ): Promise; + type: HentaiTypes, + format: "bomb" + ): Promise; public async grabHentai( type: HentaiTypes, format: "single" | "bomb" @@ -63,13 +63,13 @@ export default class HentaiService { } async makeRequest( - tags: string[] | null, - type: DAPI.E621 - ): Promise; + tags: string[] | null, + type: DAPI.E621 + ): Promise; async makeRequest( - tags: string[] | null, - type: DAPI.Danbooru - ): Promise; + tags: string[] | null, + type: DAPI.Danbooru + ): Promise; async makeRequest( tags: string[] | null, type: DAPI @@ -77,15 +77,15 @@ export default class HentaiService { const tag = tags?.join("+").toLowerCase() || ""; switch (type) { - case DAPI.E621: - return this.e621( - `https://e621.net/posts.json?limit=5&tags=${tag}` - ); - - case DAPI.Danbooru: - return this.danbooru( - `https://danbooru.donmai.us/posts.json?limit=5&tags=${tag}` - ); + case DAPI.E621: + return this.e621( + `https://e621.net/posts.json?limit=5&tags=${tag}` + ); + + case DAPI.Danbooru: + return this.danbooru( + `https://danbooru.donmai.us/posts.json?limit=5&tags=${tag}` + ); } } diff --git a/src/lib/Interfaces/Common/AnimeData.ts b/src/lib/Interfaces/Common/AnimeData.ts index 29dc2d4a..6da50ed4 100644 --- a/src/lib/Interfaces/Common/AnimeData.ts +++ b/src/lib/Interfaces/Common/AnimeData.ts @@ -1,72 +1,72 @@ export default interface AnimeData { - data: Data; + data: Data; } export interface Data { - Page: Page; + Page: Page; } export interface Page { - media: Media[]; + media: Media[]; } export interface Media { - idMal: number; - title: Title; - coverImage: CoverImage; - description: string; - bannerImage: string; - format: string; - status: string; - type: string; - meanScore: number; - startDate: EndDateClass; - endDate: EndDateClass; - duration: number; - source: string; - episodes: number; - chapters: null; - volumes: null; - studios: Studios; - synonyms: string[]; - genres: string[]; - trailer: Trailer; - externalLinks: ExternalLink[]; - siteUrl: string; - isAdult: boolean; - nextAiringEpisode: null; + idMal: number; + title: Title; + coverImage: CoverImage; + description: string; + bannerImage: string; + format: string; + status: string; + type: string; + meanScore: number; + startDate: EndDateClass; + endDate: EndDateClass; + duration: number; + source: string; + episodes: number; + chapters: null; + volumes: null; + studios: Studios; + synonyms: string[]; + genres: string[]; + trailer: Trailer; + externalLinks: ExternalLink[]; + siteUrl: string; + isAdult: boolean; + nextAiringEpisode: null; } export interface CoverImage { - large: string; - color: null | string; + large: string; + color: null | string; } export interface EndDateClass { - year: number; - month: number; - day: number; + year: number; + month: number; + day: number; } export interface ExternalLink { - site: string; - url: string; + site: string; + url: string; } export interface Studios { - nodes: Node[]; + nodes: Node[]; } export interface Node { - name: string; + name: string; } export interface Title { - romaji: string; - english: null | string; + romaji: string; + english: null | string; } export interface Trailer { - id: string; - site: string; + id: string; + site: string; } diff --git a/src/lib/Interfaces/Common/DanbooruData.ts b/src/lib/Interfaces/Common/DanbooruData.ts index c6ed9c07..506fb5c7 100644 --- a/src/lib/Interfaces/Common/DanbooruData.ts +++ b/src/lib/Interfaces/Common/DanbooruData.ts @@ -1,75 +1,75 @@ export type DanbooruData = DanbooruPost[]; export interface DanbooruPost { - id: number; - created_at: string; - uploader_id: number; - score: number; - source: string; - md5?: string; - last_comment_bumped_at?: string; - rating: string; - image_width: number; - image_height: number; - tag_string: string; - fav_count: number; - file_ext: string; - last_noted_at: any; - parent_id?: number; - has_children: boolean; - approver_id?: number; - tag_count_general: number; - tag_count_artist: number; - tag_count_character: number; - tag_count_copyright: number; - file_size: number; - up_score: number; - down_score: number; - is_pending: boolean; - is_flagged: boolean; - is_deleted: boolean; - tag_count: number; - updated_at: string; - is_banned: boolean; - pixiv_id?: number; - last_commented_at?: string; - has_active_children: boolean; - bit_flags: number; - tag_count_meta: number; - has_large: boolean; - has_visible_children: boolean; - media_asset: MediaAsset; - tag_string_general: string; - tag_string_character: string; - tag_string_copyright: string; - tag_string_artist: string; - tag_string_meta: string; - file_url?: string; - large_file_url?: string; - preview_file_url?: string; + id: number; + created_at: string; + uploader_id: number; + score: number; + source: string; + md5?: string; + last_comment_bumped_at?: string; + rating: string; + image_width: number; + image_height: number; + tag_string: string; + fav_count: number; + file_ext: string; + last_noted_at: any; + parent_id?: number; + has_children: boolean; + approver_id?: number; + tag_count_general: number; + tag_count_artist: number; + tag_count_character: number; + tag_count_copyright: number; + file_size: number; + up_score: number; + down_score: number; + is_pending: boolean; + is_flagged: boolean; + is_deleted: boolean; + tag_count: number; + updated_at: string; + is_banned: boolean; + pixiv_id?: number; + last_commented_at?: string; + has_active_children: boolean; + bit_flags: number; + tag_count_meta: number; + has_large: boolean; + has_visible_children: boolean; + media_asset: MediaAsset; + tag_string_general: string; + tag_string_character: string; + tag_string_copyright: string; + tag_string_artist: string; + tag_string_meta: string; + file_url?: string; + large_file_url?: string; + preview_file_url?: string; } export interface MediaAsset { - id: number; - created_at: string; - updated_at: string; - md5?: string; - file_ext: string; - file_size: number; - image_width: number; - image_height: number; - duration?: number; - status: string; - file_key?: string; - is_public: boolean; - pixel_hash: string; - variants?: Variant[]; + id: number; + created_at: string; + updated_at: string; + md5?: string; + file_ext: string; + file_size: number; + image_width: number; + image_height: number; + duration?: number; + status: string; + file_key?: string; + is_public: boolean; + pixel_hash: string; + variants?: Variant[]; } export interface Variant { - type: string; - url: string; - width: number; - height: number; - file_ext: string; + type: string; + url: string; + width: number; + height: number; + file_ext: string; } diff --git a/src/lib/Interfaces/Common/E261APIData.ts b/src/lib/Interfaces/Common/E261APIData.ts index 63b34adb..689632f7 100644 --- a/src/lib/Interfaces/Common/E261APIData.ts +++ b/src/lib/Interfaces/Common/E261APIData.ts @@ -1,107 +1,107 @@ export interface E621Post { - id: number; - created_at: Date; - updated_at: Date; - file: File; - preview: Preview; - sample: Sample; - score: Score; - tags: Tags; - locked_tags: string[]; - change_seq: number; - flags: Flags; - rating: Rating; - fav_count: number; - sources: string[]; - pools: number[]; - relationships: Relationships; - approver_id: number | null; - uploader_id: number; - description: string; - comment_count: number; - is_favorited: boolean; - has_notes: boolean; - duration: number | null; + id: number; + created_at: Date; + updated_at: Date; + file: File; + preview: Preview; + sample: Sample; + score: Score; + tags: Tags; + locked_tags: string[]; + change_seq: number; + flags: Flags; + rating: Rating; + fav_count: number; + sources: string[]; + pools: number[]; + relationships: Relationships; + approver_id: number | null; + uploader_id: number; + description: string; + comment_count: number; + is_favorited: boolean; + has_notes: boolean; + duration: number | null; } export interface File { - width: number; - height: number; - ext: Extension; - size: number; - md5: string; - url: null | string; + width: number; + height: number; + ext: Extension; + size: number; + md5: string; + url: null | string; } export enum Extension { - GIF = "gif", - Jpg = "jpg", - PNG = "png", - Webm = "webm", + GIF = "gif", + Jpg = "jpg", + PNG = "png", + Webm = "webm", } export interface Flags { - pending: boolean; - flagged: boolean; - note_locked: boolean; - status_locked: boolean; - rating_locked: boolean; - deleted: boolean; + pending: boolean; + flagged: boolean; + note_locked: boolean; + status_locked: boolean; + rating_locked: boolean; + deleted: boolean; } export interface Preview { - width: number; - height: number; - url: null | string; + width: number; + height: number; + url: null | string; } export enum Rating { - E = "e", + E = "e", } export interface Relationships { - parent_id: number | null; - has_children: boolean; - has_active_children: boolean; - children: number[]; + parent_id: number | null; + has_children: boolean; + has_active_children: boolean; + children: number[]; } export interface Sample { - has: boolean; - height: number; - width: number; - url: null | string; - alternates: { [key: string]: Alternate }; + has: boolean; + height: number; + width: number; + url: null | string; + alternates: { [key: string]: Alternate }; } export interface Alternate { - type: Type; - height: number; - width: number; - urls: Array; + type: Type; + height: number; + width: number; + urls: Array; } export enum Type { - Video = "video", + Video = "video", } export interface Score { - up: number; - down: number; - total: number; + up: number; + down: number; + total: number; } export interface Tags { - general: string[]; - species: string[]; - character: string[]; - copyright: string[]; - artist: string[]; - invalid: string[]; - lore: string[]; - meta: string[]; + general: string[]; + species: string[]; + character: string[]; + copyright: string[]; + artist: string[]; + invalid: string[]; + lore: string[]; + meta: string[]; } export default interface E261APIData { - posts: E621Post[]; + posts: E621Post[]; } diff --git a/src/lib/Interfaces/Common/InteractionsImageData.ts b/src/lib/Interfaces/Common/InteractionsImageData.ts index f6da26cf..7356cf2a 100644 --- a/src/lib/Interfaces/Common/InteractionsImageData.ts +++ b/src/lib/Interfaces/Common/InteractionsImageData.ts @@ -1,8 +1,8 @@ import { ColorResolvable } from "discord.js"; export default interface InteractionsImageData { - action: string | boolean; - color: ColorResolvable; - append?: string; - appendable?: boolean; + action: string | boolean; + color: ColorResolvable; + append?: string; + appendable?: boolean; } diff --git a/src/lib/Interfaces/Common/MangaData.ts b/src/lib/Interfaces/Common/MangaData.ts index 39cf5219..bf8f44fe 100644 --- a/src/lib/Interfaces/Common/MangaData.ts +++ b/src/lib/Interfaces/Common/MangaData.ts @@ -1,58 +1,58 @@ export default interface MangaData { - data: Data; + data: Data; } export interface Data { - Page: Page; + Page: Page; } export interface Page { - media: Media[]; + media: Media[]; } export interface Media { - idMal: number; - title: Title; - coverImage: CoverImage; - description: string; - bannerImage: null | string; - format: string; - status: string; - type: string; - meanScore: number; - startDate: EndDateClass; - endDate: EndDateClass; - duration: null; - source: string; - episodes: null; - chapters: number | null; - volumes: number | null; - synonyms: string[]; - genres: string[]; - trailer: null; - externalLinks: ExternalLink[]; - siteUrl: string; - isAdult: boolean; - nextAiringEpisode: null; + idMal: number; + title: Title; + coverImage: CoverImage; + description: string; + bannerImage: null | string; + format: string; + status: string; + type: string; + meanScore: number; + startDate: EndDateClass; + endDate: EndDateClass; + duration: null; + source: string; + episodes: null; + chapters: number | null; + volumes: number | null; + synonyms: string[]; + genres: string[]; + trailer: null; + externalLinks: ExternalLink[]; + siteUrl: string; + isAdult: boolean; + nextAiringEpisode: null; } export interface CoverImage { - large: string; - color: null | string; + large: string; + color: null | string; } export interface EndDateClass { - year: number | null; - month: number | null; - day: number | null; + year: number | null; + month: number | null; + day: number | null; } export interface ExternalLink { - site: string; - url: string; + site: string; + url: string; } export interface Title { - romaji: string; - english: null | string; + romaji: string; + english: null | string; } diff --git a/src/lib/Interfaces/Common/PackageJSON.ts b/src/lib/Interfaces/Common/PackageJSON.ts index 29fb3216..ca7360ce 100644 --- a/src/lib/Interfaces/Common/PackageJSON.ts +++ b/src/lib/Interfaces/Common/PackageJSON.ts @@ -1,32 +1,32 @@ export interface Scripts { - start: string; - build: string; - version: string; - watch: string; + start: string; + build: string; + version: string; + watch: string; } export interface Repository { - type: string; - url: string; + type: string; + url: string; } export interface Engines { - node: string; - npm: string; + node: string; + npm: string; } export default interface PackageJSON { - name: string; - version: string; - main: string; - scripts: Scripts; - keywords: string[]; - author: string; - license: string; - description: string; - repository: Repository; - engines: Engines; - optionalDependencies: Dependencies; + name: string; + version: string; + main: string; + scripts: Scripts; + keywords: string[]; + author: string; + license: string; + description: string; + repository: Repository; + engines: Engines; + optionalDependencies: Dependencies; } export type Dependencies = { [module: string]: number }; diff --git a/src/lib/Interfaces/Common/RedditAPIData.ts b/src/lib/Interfaces/Common/RedditAPIData.ts index b4f9a38d..eb362143 100644 --- a/src/lib/Interfaces/Common/RedditAPIData.ts +++ b/src/lib/Interfaces/Common/RedditAPIData.ts @@ -3,259 +3,259 @@ // INB4 this changes randomly export default interface RedditAPIData { - kind: string; - data: RedditDatumData; + kind: string; + data: RedditDatumData; } export interface RedditDatumData { - modhash: string; - dist: number | null; - children: PurpleChild[]; - after: null; - before: null; + modhash: string; + dist: number | null; + children: PurpleChild[]; + after: null; + before: null; } export interface PurpleChild { - kind: string; - data: PurpleData; + kind: string; + data: PurpleData; } export interface PurpleData { - approved_at_utc: null; - subreddit: string; - selftext?: string; - user_reports: any[]; - saved: boolean; - mod_reason_title: null; - gilded: number; - clicked?: boolean; - title?: string; - link_flair_richtext?: FlairRichtext[]; - subreddit_name_prefixed: string; - hidden?: boolean; - pwls?: number; - link_flair_css_class?: string; - downs: number; - thumbnail_height?: null; - top_awarded_type: null; - parent_whitelist_status?: string; - hide_score?: boolean; - name: string; - quarantine?: boolean; - link_flair_text_color?: string; - upvote_ratio?: number; - author_flair_background_color: null | string; - subreddit_type: string; - ups: number; - total_awards_received: number; - media_embed?: Gildings; - thumbnail_width?: null; - author_flair_template_id: null | string; - is_original_content?: boolean; - author_fullname: string; - secure_media?: null; - is_reddit_media_domain?: boolean; - is_meta?: boolean; - category?: null; - secure_media_embed?: Gildings; - link_flair_text?: string; - can_mod_post: boolean; - score: number; - approved_by: null; - author_premium: boolean; - thumbnail?: string; - edited: boolean | number; - author_flair_css_class: null | string; - author_flair_richtext: FlairRichtext[]; - gildings: Gildings; - post_hint?: string; - content_categories?: null; - is_self?: boolean; - mod_note: null; - created: number; - link_flair_type?: string; - wls?: number; - removed_by_category?: null; - banned_by: null; - author_flair_type: string; - domain?: string; - allow_live_comments?: boolean; - selftext_html?: string; - likes: null; - suggested_sort?: null; - banned_at_utc: null; - view_count?: null; - archived: boolean; - no_follow: boolean; - is_crosspostable?: boolean; - pinned?: boolean; - over_18?: boolean; - preview?: Preview; - all_awardings: any[]; - awarders: any[]; - media_only?: boolean; - link_flair_template_id?: string; - can_gild: boolean; - spoiler?: boolean; - locked: boolean; - author_flair_text: null | string; - treatment_tags: any[]; - visited?: boolean; - removed_by?: null; - num_reports: null; - distinguished: null; - subreddit_id: string; - mod_reason_by: null; - removal_reason: null; - link_flair_background_color?: string; - id: string; - is_robot_indexable?: boolean; - num_duplicates?: number; - report_reasons: null; - author: string; - discussion_type?: null; - num_comments?: number; - send_replies: boolean; - media?: null; - contest_mode?: boolean; - author_patreon_flair: boolean; - author_flair_text_color: null | string; - permalink: string; - whitelist_status?: string; - stickied: boolean; - url?: string; - subreddit_subscribers?: number; - created_utc: number; - num_crossposts?: number; - mod_reports: any[]; - is_video?: boolean; - comment_type?: null; - link_id?: string; - replies?: Replies; - parent_id?: string; - body?: string; - is_submitter?: boolean; - collapsed?: boolean; - body_html?: string; - collapsed_reason?: null; - associated_award?: null; - score_hidden?: boolean; - controversiality?: number; - depth?: number; - collapsed_because_crowd_control?: null; + approved_at_utc: null; + subreddit: string; + selftext?: string; + user_reports: any[]; + saved: boolean; + mod_reason_title: null; + gilded: number; + clicked?: boolean; + title?: string; + link_flair_richtext?: FlairRichtext[]; + subreddit_name_prefixed: string; + hidden?: boolean; + pwls?: number; + link_flair_css_class?: string; + downs: number; + thumbnail_height?: null; + top_awarded_type: null; + parent_whitelist_status?: string; + hide_score?: boolean; + name: string; + quarantine?: boolean; + link_flair_text_color?: string; + upvote_ratio?: number; + author_flair_background_color: null | string; + subreddit_type: string; + ups: number; + total_awards_received: number; + media_embed?: Gildings; + thumbnail_width?: null; + author_flair_template_id: null | string; + is_original_content?: boolean; + author_fullname: string; + secure_media?: null; + is_reddit_media_domain?: boolean; + is_meta?: boolean; + category?: null; + secure_media_embed?: Gildings; + link_flair_text?: string; + can_mod_post: boolean; + score: number; + approved_by: null; + author_premium: boolean; + thumbnail?: string; + edited: boolean | number; + author_flair_css_class: null | string; + author_flair_richtext: FlairRichtext[]; + gildings: Gildings; + post_hint?: string; + content_categories?: null; + is_self?: boolean; + mod_note: null; + created: number; + link_flair_type?: string; + wls?: number; + removed_by_category?: null; + banned_by: null; + author_flair_type: string; + domain?: string; + allow_live_comments?: boolean; + selftext_html?: string; + likes: null; + suggested_sort?: null; + banned_at_utc: null; + view_count?: null; + archived: boolean; + no_follow: boolean; + is_crosspostable?: boolean; + pinned?: boolean; + over_18?: boolean; + preview?: Preview; + all_awardings: any[]; + awarders: any[]; + media_only?: boolean; + link_flair_template_id?: string; + can_gild: boolean; + spoiler?: boolean; + locked: boolean; + author_flair_text: null | string; + treatment_tags: any[]; + visited?: boolean; + removed_by?: null; + num_reports: null; + distinguished: null; + subreddit_id: string; + mod_reason_by: null; + removal_reason: null; + link_flair_background_color?: string; + id: string; + is_robot_indexable?: boolean; + num_duplicates?: number; + report_reasons: null; + author: string; + discussion_type?: null; + num_comments?: number; + send_replies: boolean; + media?: null; + contest_mode?: boolean; + author_patreon_flair: boolean; + author_flair_text_color: null | string; + permalink: string; + whitelist_status?: string; + stickied: boolean; + url?: string; + subreddit_subscribers?: number; + created_utc: number; + num_crossposts?: number; + mod_reports: any[]; + is_video?: boolean; + comment_type?: null; + link_id?: string; + replies?: Replies; + parent_id?: string; + body?: string; + is_submitter?: boolean; + collapsed?: boolean; + body_html?: string; + collapsed_reason?: null; + associated_award?: null; + score_hidden?: boolean; + controversiality?: number; + depth?: number; + collapsed_because_crowd_control?: null; } export interface FlairRichtext { - e: string; - t: string; + e: string; + t: string; } export interface Gildings { - [index: string]: any; + [index: string]: any; } export interface Preview { - images: Image[]; - enabled: boolean; + images: Image[]; + enabled: boolean; } export interface Image { - source: Source; - resolutions: Source[]; - variants: Gildings; - id: string; + source: Source; + resolutions: Source[]; + variants: Gildings; + id: string; } export interface Source { - url: string; - width: number; - height: number; + url: string; + width: number; + height: number; } export interface Replies { - kind: string; - data: RepliesData; + kind: string; + data: RepliesData; } export interface RepliesData { - modhash: string; - dist: null; - children: FluffyChild[]; - after: null; - before: null; + modhash: string; + dist: null; + children: FluffyChild[]; + after: null; + before: null; } export interface FluffyChild { - kind: string; - data: FluffyData; + kind: string; + data: FluffyData; } export interface FluffyData { - total_awards_received: number; - approved_at_utc: null; - comment_type: null; - awarders: any[]; - mod_reason_by: null; - banned_by: null; - ups: number; - author_flair_type: string; - removal_reason: null; - link_id: string; - author_flair_template_id: null; - likes: null; - replies: string; - user_reports: any[]; - saved: boolean; - id: string; - banned_at_utc: null; - mod_reason_title: null; - gilded: number; - archived: boolean; - no_follow: boolean; - author: string; - can_mod_post: boolean; - send_replies: boolean; - parent_id: string; - score: number; - author_fullname: string; - report_reasons: null; - approved_by: null; - all_awardings: any[]; - subreddit_id: string; - collapsed: boolean; - body: string; - edited: boolean; - author_flair_css_class: null; - is_submitter: boolean; - downs: number; - author_flair_richtext: any[]; - author_patreon_flair: boolean; - body_html: string; - gildings: Gildings; - collapsed_reason: null; - associated_award: null; - stickied: boolean; - author_premium: boolean; - subreddit_type: string; - can_gild: boolean; - top_awarded_type: null; - author_flair_text_color: null; - score_hidden: boolean; - permalink: string; - num_reports: null; - locked: boolean; - name: string; - created: number; - subreddit: string; - author_flair_text: null; - treatment_tags: any[]; - created_utc: number; - subreddit_name_prefixed: string; - controversiality: number; - depth: number; - author_flair_background_color: null; - collapsed_because_crowd_control: null; - mod_reports: any[]; - mod_note: null; - distinguished: null; + total_awards_received: number; + approved_at_utc: null; + comment_type: null; + awarders: any[]; + mod_reason_by: null; + banned_by: null; + ups: number; + author_flair_type: string; + removal_reason: null; + link_id: string; + author_flair_template_id: null; + likes: null; + replies: string; + user_reports: any[]; + saved: boolean; + id: string; + banned_at_utc: null; + mod_reason_title: null; + gilded: number; + archived: boolean; + no_follow: boolean; + author: string; + can_mod_post: boolean; + send_replies: boolean; + parent_id: string; + score: number; + author_fullname: string; + report_reasons: null; + approved_by: null; + all_awardings: any[]; + subreddit_id: string; + collapsed: boolean; + body: string; + edited: boolean; + author_flair_css_class: null; + is_submitter: boolean; + downs: number; + author_flair_richtext: any[]; + author_patreon_flair: boolean; + body_html: string; + gildings: Gildings; + collapsed_reason: null; + associated_award: null; + stickied: boolean; + author_premium: boolean; + subreddit_type: string; + can_gild: boolean; + top_awarded_type: null; + author_flair_text_color: null; + score_hidden: boolean; + permalink: string; + num_reports: null; + locked: boolean; + name: string; + created: number; + subreddit: string; + author_flair_text: null; + treatment_tags: any[]; + created_utc: number; + subreddit_name_prefixed: string; + controversiality: number; + depth: number; + author_flair_background_color: null; + collapsed_because_crowd_control: null; + mod_reports: any[]; + mod_note: null; + distinguished: null; } diff --git a/src/lib/Interfaces/Common/UrbanResponse.ts b/src/lib/Interfaces/Common/UrbanResponse.ts index 776cfe90..0f6e8e8a 100644 --- a/src/lib/Interfaces/Common/UrbanResponse.ts +++ b/src/lib/Interfaces/Common/UrbanResponse.ts @@ -1,17 +1,17 @@ export interface UrbanResponse { - definition: string; - permalink: string; - thumbs_up: number; - sound_urls: string[]; - author: string; - word: string; - defid: number; - current_vote: string; - written_on: Date; - example: string; - thumbs_down: number; + definition: string; + permalink: string; + thumbs_up: number; + sound_urls: string[]; + author: string; + word: string; + defid: number; + current_vote: string; + written_on: Date; + example: string; + thumbs_down: number; } export interface RootObject { - list: UrbanResponse[]; + list: UrbanResponse[]; } diff --git a/src/lib/Interfaces/Common/mcsrvstatAPIData.ts b/src/lib/Interfaces/Common/mcsrvstatAPIData.ts index d92b73e9..43064242 100644 --- a/src/lib/Interfaces/Common/mcsrvstatAPIData.ts +++ b/src/lib/Interfaces/Common/mcsrvstatAPIData.ts @@ -1,90 +1,90 @@ export interface Motd { - raw: string[]; - clean: string[]; - html: string[]; + raw: string[]; + clean: string[]; + html: string[]; } export interface Players { - online: number; - max: number; - list: string[]; - uuid: { [id: string]: string }; + online: number; + max: number; + list: string[]; + uuid: { [id: string]: string }; } export interface Plugins { - names: string[]; - raw: string[]; + names: string[]; + raw: string[]; } export interface Mods { - names: string[]; - raw: string[]; + names: string[]; + raw: string[]; } export interface Info { - raw: string[]; - clean: string[]; - html: string[]; + raw: string[]; + clean: string[]; + html: string[]; } export interface ServerOnlineInterfaces { - Debug: { - ping: boolean; - query: boolean; - srv: boolean; - querymismatch: boolean; - ipinsrv: boolean; - cnameinsrv: boolean; - animatedmotd: boolean; - cachetime: number; - }; + Debug: { + ping: boolean; + query: boolean; + srv: boolean; + querymismatch: boolean; + ipinsrv: boolean; + cnameinsrv: boolean; + animatedmotd: boolean; + cachetime: number; + }; - Motd: Motd; + Motd: Motd; - Uuid: { [id: string]: string }; + Uuid: { [id: string]: string }; - Players: Players; + Players: Players; - Plugins: Plugins; + Plugins: Plugins; - Mods: Mods; + Mods: Mods; - Info: Info; + Info: Info; } export interface ServerOnline { - online: true; - ip: string; - port: number; - debug: Debug; - motd: Motd; - players: Players; - version: string; - protocol: number; - hostname: string; - icon: string; - software: string; - map: string; - plugins: Plugins; - mods: Mods; - info: Info; + online: true; + ip: string; + port: number; + debug: Debug; + motd: Motd; + players: Players; + version: string; + protocol: number; + hostname: string; + icon: string; + software: string; + map: string; + plugins: Plugins; + mods: Mods; + info: Info; } export interface ServerOffline { - online: false; - ip: string; - port: number; - debug: Debug; - hostname: string; + online: false; + ip: string; + port: number; + debug: Debug; + hostname: string; } export interface Debug { - ping: boolean; - query: boolean; - srv: boolean; - querymismatch: boolean; - ipinsrv: boolean; - cnameinsrv: boolean; - animatedmotd: boolean; - cachetime: number; + ping: boolean; + query: boolean; + srv: boolean; + querymismatch: boolean; + ipinsrv: boolean; + cnameinsrv: boolean; + animatedmotd: boolean; + cachetime: number; } diff --git a/src/lib/Interfaces/Kaiki/KaikiCache.ts b/src/lib/Interfaces/Kaiki/KaikiCache.ts index 20d72adb..088d1379 100644 --- a/src/lib/Interfaces/Kaiki/KaikiCache.ts +++ b/src/lib/Interfaces/Kaiki/KaikiCache.ts @@ -5,8 +5,8 @@ export type EmoteTrigger = string; export type GuildString = Snowflake; export type TriggerString = string; export type EmoteReactCache = Map< - GuildString, - Map> + GuildString, + Map> >; export type PartitionResult = [[string, bigint][], [string, bigint][]]; diff --git a/src/lib/Interfaces/Kaiki/KaikiCommandOptions.ts b/src/lib/Interfaces/Kaiki/KaikiCommandOptions.ts index 1c43e947..92e6f743 100644 --- a/src/lib/Interfaces/Kaiki/KaikiCommandOptions.ts +++ b/src/lib/Interfaces/Kaiki/KaikiCommandOptions.ts @@ -1,6 +1,6 @@ import { CommandOptions } from "@sapphire/framework"; export default interface KaikiCommandOptions extends CommandOptions { - usage: string | string[]; - minorCategory?: string; + usage: string | string[]; + minorCategory?: string; } diff --git a/src/lib/Interfaces/Kaiki/KaikiSubCommandOptions.ts b/src/lib/Interfaces/Kaiki/KaikiSubCommandOptions.ts index d79a0591..7cd082d8 100644 --- a/src/lib/Interfaces/Kaiki/KaikiSubCommandOptions.ts +++ b/src/lib/Interfaces/Kaiki/KaikiSubCommandOptions.ts @@ -1,6 +1,6 @@ import { SubcommandOptions } from "@sapphire/plugin-subcommands"; export interface KaikiSubCommandOptions extends SubcommandOptions { - usage?: string | string[]; - minorCategory?: string; + usage?: string | string[]; + minorCategory?: string; } diff --git a/src/lib/Kaiki/KaikiArgumentsTypes.ts b/src/lib/Kaiki/KaikiArgumentsTypes.ts index 2d254fcb..62018a7a 100644 --- a/src/lib/Kaiki/KaikiArgumentsTypes.ts +++ b/src/lib/Kaiki/KaikiArgumentsTypes.ts @@ -2,7 +2,21 @@ import { Args, Argument, Identifiers } from "@sapphire/framework"; import { Message } from "discord.js"; import Constants from "../../struct/Constants"; +export enum GamblingCommands { + br, + betroll = 0, + bf, + betflip = 1, + slot, + slots = 2, +} + export default class KaikiArgumentsTypes { + static entries = Object.entries(GamblingCommands) as [ + string, + GamblingCommands, + ][]; + // These are only for specific use cases, whereas arguments in ../../arguments are more general. public static urlEmoteAttachmentIArgument = Args.make( async (parameter, context) => { @@ -94,6 +108,27 @@ export default class KaikiArgumentsTypes { } ); + public static gamblingCommandsArgument = Args.make( + async ( + parameter: string, + context: Argument.Context + ) => { + const argument = parameter.toLowerCase(); + const command = KaikiArgumentsTypes.entries.find( + (entry) => entry[0] === argument + ); + if (command) { + return Args.ok(command[1]); + } + return Args.error({ + parameter, + argument: context.argument, + message: + "The provided argument could not be resolved to a gambling command.", + }); + } + ); + static checkInt = (phrase: string) => { const int = parseInt(phrase); diff --git a/src/lib/Kaiki/KaikiClientInterface.ts b/src/lib/Kaiki/KaikiClientInterface.ts index 7b964bed..b7d19eef 100644 --- a/src/lib/Kaiki/KaikiClientInterface.ts +++ b/src/lib/Kaiki/KaikiClientInterface.ts @@ -10,16 +10,16 @@ import PackageJSON from "../Interfaces/Common/PackageJSON"; import { MoneyService } from "../Money/MoneyService"; export default interface KaikiClientInterface { - anniversaryService: AnniversaryRolesService; - botSettings: DatabaseProvider; - cache: KaikiCache; - connection: Pool; - dadBotChannels: DatabaseProvider; - guildsDb: DatabaseProvider; - money: MoneyService; - orm: PrismaClient; - db: Database; - owner: User; - package: PackageJSON; - hentaiService: HentaiService; + anniversaryService: AnniversaryRolesService; + botSettings: DatabaseProvider; + cache: KaikiCache; + connection: Pool; + dadBotChannels: DatabaseProvider; + guildsDb: DatabaseProvider; + money: MoneyService; + orm: PrismaClient; + db: Database; + owner: User; + package: PackageJSON; + hentaiService: HentaiService; } diff --git a/src/lib/Kaiki/KaikiEmbeds.ts b/src/lib/Kaiki/KaikiEmbeds.ts index 9201175d..49b1c7e0 100644 --- a/src/lib/Kaiki/KaikiEmbeds.ts +++ b/src/lib/Kaiki/KaikiEmbeds.ts @@ -26,7 +26,7 @@ export default class KaikiEmbeds { new EmbedBuilder({ title: "Error", description: - "No data received. Double check the subreddit's name and try again.", + "No data received. Double check the subreddit's name and try again.", }).withErrorColor(m); static embedFail = async ( diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index b637d5bf..d0596fa0 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -121,7 +121,7 @@ export default class KaikiSapphireClient if ( process.env.DBL_API_TOKEN && - process.env.NODE_ENV === "production" + process.env.NODE_ENV === "production" ) { this.dblService(); } @@ -132,9 +132,9 @@ export default class KaikiSapphireClient } const owner = - client.application.owner instanceof Team - ? client.application.owner.owner?.user - : client.application.owner; + client.application.owner instanceof Team + ? client.application.owner.owner?.user + : client.application.owner; if (!owner) { return KaikiSapphireClient.noBotOwner(); @@ -341,7 +341,7 @@ export default class KaikiSapphireClient if ( !process.env.KAWAIIKEY || - process.env.KAWAIIKEY === "[YOUR_OPTIONAL_KAWAII_KEY]" + process.env.KAWAIIKEY === "[YOUR_OPTIONAL_KAWAII_KEY]" ) { for (const entry of ["run", "peek", "pout", "lick"]) { await commandStore.unload(entry); @@ -391,7 +391,7 @@ export default class KaikiSapphireClient .setColor(Constants.kaikiOrange), ], }) - // Ignore failed DMs + // Ignore failed DMs .catch(() => undefined), this.money.add( vote.id, diff --git a/src/lib/KaikiUtil.ts b/src/lib/KaikiUtil.ts index 978c320b..297251ae 100644 --- a/src/lib/KaikiUtil.ts +++ b/src/lib/KaikiUtil.ts @@ -11,7 +11,7 @@ export default class KaikiUtil { const d = new Date(); return ( -d + - d.setHours(Constants.MAGIC_NUMBERS.LIB.UTILITY.HRS_DAY, 0, 0, 0) + d.setHours(Constants.MAGIC_NUMBERS.LIB.UTILITY.HRS_DAY, 0, 0, 0) ); } @@ -57,29 +57,29 @@ export default class KaikiUtil { static async codeblock( code: string, language?: - | "ansi" - | "asciidoc" - | "autohotkey" - | "bash" - | "coffeescript" - | "cpp" - | "cs" - | "css" - | "diff" - | "fix" - | "glsl" - | "ini" - | "js" - | "json" - | "md" - | "ml" - | "prolog" - | "py" - | "sql" - | "tex" - | "ts" - | "xl" - | "xml" + | "ansi" + | "asciidoc" + | "autohotkey" + | "bash" + | "coffeescript" + | "cpp" + | "cs" + | "css" + | "diff" + | "fix" + | "glsl" + | "ini" + | "js" + | "json" + | "md" + | "ml" + | "prolog" + | "py" + | "sql" + | "tex" + | "ts" + | "xl" + | "xml" ): Promise { return `\`\`\`${language ?? ""}\n${code}\`\`\``; } @@ -134,9 +134,9 @@ export default class KaikiUtil { } const presence = - activities.find((psnc) => psnc.assets) || - activities.find((psnc) => psnc.type !== ActivityType.Custom) || - activities.shift(); + activities.find((psnc) => psnc.assets) || + activities.find((psnc) => psnc.type !== ActivityType.Custom) || + activities.shift(); if (!presence) { return null; @@ -145,8 +145,8 @@ export default class KaikiUtil { const type = ActivityType[presence.type]; const image = - presence.assets?.largeImageURL() || - presence.assets?.smallImageURL(); + presence.assets?.largeImageURL() || + presence.assets?.smallImageURL(); return { name: presence.name, diff --git a/src/lib/Roles.ts b/src/lib/Roles.ts index b5bfbd7a..32a99aea 100644 --- a/src/lib/Roles.ts +++ b/src/lib/Roles.ts @@ -99,9 +99,9 @@ export default class Roles { .filter( (r) => r.position !== 0 && - !member.roles.cache.has(r.id) && - r.position < - (guild.members.me?.roles.highest.position || 0) + !member.roles.cache.has(r.id) && + r.position < + (guild.members.me?.roles.highest.position || 0) ); if (!rolesToAdd.length) { @@ -126,8 +126,8 @@ export default class Roles { static async rolePermissionCheck(message: Message, role: Role) { if ( (role.position < (message.member?.roles.highest.position || 0) || - message.guild.ownerId === message.member?.id) && - !role.managed + message.guild.ownerId === message.member?.id) && + !role.managed ) { return Roles.botRolePermissionCheck(message, role); } @@ -137,7 +137,7 @@ export default class Roles { static async botRolePermissionCheck(message: Message, role: Role) { return ( role.position < - (message.guild.members.me?.roles.highest.position || 0) + (message.guild.members.me?.roles.highest.position || 0) ); } } diff --git a/src/lib/ServerConfig/Config.ts b/src/lib/ServerConfig/Config.ts index ab2fa78c..7b5cbd63 100644 --- a/src/lib/ServerConfig/Config.ts +++ b/src/lib/ServerConfig/Config.ts @@ -117,7 +117,7 @@ export default class Config { if (booleanArgument) { if (!anniversaryEnabled) { await message.client.anniversaryService.checkBirthdayOnAdd( - message.guild as Guild + message.guild as Guild ); await message.client.guildsDb.set( message.guildId, @@ -239,8 +239,8 @@ export default class Config { BigInt(message.guildId) ); const blockedCategoriesObj: { - BlockedCategories: BlockedCategories[]; - } = { BlockedCategories: [] }; + BlockedCategories: BlockedCategories[]; + } = { BlockedCategories: [] }; Object.assign(g, blockedCategoriesObj); db = g as Guilds & { BlockedCategories: BlockedCategories[] }; } @@ -298,9 +298,9 @@ export default class Config { { name: "Guild prefix", value: - Prefix === process.env.PREFIX - ? `\`${process.env.PREFIX}\` (Default)` - : `\`${Prefix}\``, + Prefix === process.env.PREFIX + ? `\`${process.env.PREFIX}\` (Default)` + : `\`${Prefix}\``, inline: true, }, { diff --git a/src/lib/SlashCommands/SlashCommandsLib.ts b/src/lib/SlashCommands/SlashCommandsLib.ts index a6cc2732..21fda37c 100644 --- a/src/lib/SlashCommands/SlashCommandsLib.ts +++ b/src/lib/SlashCommands/SlashCommandsLib.ts @@ -12,7 +12,7 @@ export default class SlashCommandsLib { static excludeData: ApplicationCommandDataResolvable = { name: "exclude", description: - "Excludes you from being targeted by dad-bot. Execute command again to reverse this action.", + "Excludes you from being targeted by dad-bot. Execute command again to reverse this action.", }; public static async getOrCreateDadbotRole( @@ -25,15 +25,15 @@ export default class SlashCommandsLib { public static async excludeCommand( messageOrInteraction: - | Message - | Command.ChatInputCommandInteraction<"cached"> + | Message + | Command.ChatInputCommandInteraction<"cached"> ) { const { guild } = messageOrInteraction; const embeds = []; let excludedRole = await SlashCommandsLib.getOrCreateDadbotRole( guild, - messageOrInteraction.client as KaikiSapphireClient + messageOrInteraction.client as KaikiSapphireClient ); if (!excludedRole) { @@ -61,7 +61,7 @@ export default class SlashCommandsLib { new EmbedBuilder({ title: "Creating dad-bot role!", description: - "There doesn't seem to be a default dad-bot role in this server. Creating one...", + "There doesn't seem to be a default dad-bot role in this server. Creating one...", footer: { text: "Beep boop..." }, }).withErrorColor(guild) ); diff --git a/src/lib/Todo/Todo.ts b/src/lib/Todo/Todo.ts index d3139a7e..44c6b890 100644 --- a/src/lib/Todo/Todo.ts +++ b/src/lib/Todo/Todo.ts @@ -75,66 +75,66 @@ export class Todo { react: () => Promise ) { const buttonIdentityStrings = - Todo.createButtonIdentityStrings(currentTime); + Todo.createButtonIdentityStrings(currentTime); const messageComponentCollector = - sentMsg.createMessageComponentCollector({ - filter: (i) => - Object.values(buttonIdentityStrings).includes(i.customId) && - author.id === i.user.id, - time: 120000, - }); + sentMsg.createMessageComponentCollector({ + filter: (i) => + Object.values(buttonIdentityStrings).includes(i.customId) && + author.id === i.user.id, + time: 120000, + }); messageComponentCollector.on( "collect", async (buttonInteraction: ButtonInteraction) => { switch (buttonInteraction.customId) { - case buttonIdentityStrings.add: - messageComponentCollector.stop(); - await Promise.all([ - ButtonAdd.add( - buttonInteraction, - currentTime, - todoArray, - sentMsg - ), - react(), - ]); - break; - - case buttonIdentityStrings.remove: - messageComponentCollector.stop(); - await Promise.all([ - ButtonRemove.Remove( - buttonInteraction, - currentTime, - todoArray - ), - react(), - ]); - break; - - case buttonIdentityStrings.forward: - await buttonInteraction.deferUpdate(); - page = page + 1 < pages.length ? ++page : 0; - await updateMsg(); - break; - - case buttonIdentityStrings.backward: - await buttonInteraction.deferUpdate(); - page = page > 0 ? --page : pages.length - 1; - await updateMsg(); - break; - - case buttonIdentityStrings.clear: - await sentMsg.edit({ - components: [], - }); - messageComponentCollector.stop(); - break; - - default: - break; + case buttonIdentityStrings.add: + messageComponentCollector.stop(); + await Promise.all([ + ButtonAdd.add( + buttonInteraction, + currentTime, + todoArray, + sentMsg + ), + react(), + ]); + break; + + case buttonIdentityStrings.remove: + messageComponentCollector.stop(); + await Promise.all([ + ButtonRemove.Remove( + buttonInteraction, + currentTime, + todoArray + ), + react(), + ]); + break; + + case buttonIdentityStrings.forward: + await buttonInteraction.deferUpdate(); + page = page + 1 < pages.length ? ++page : 0; + await updateMsg(); + break; + + case buttonIdentityStrings.backward: + await buttonInteraction.deferUpdate(); + page = page > 0 ? --page : pages.length - 1; + await updateMsg(); + break; + + case buttonIdentityStrings.clear: + await sentMsg.edit({ + components: [], + }); + messageComponentCollector.stop(); + break; + + default: + break; } } ); @@ -162,59 +162,59 @@ export class Todo { todoArray: Todos[] ) { const buttonIdentityStrings = - Todo.createButtonIdentityStrings(currentTime); + Todo.createButtonIdentityStrings(currentTime); const messageComponentCollector = - message.createMessageComponentCollector({ - filter: (i) => - Object.values(buttonIdentityStrings).includes(i.customId) && - interaction.user.id === i.user.id, - time: 120000, - }); + message.createMessageComponentCollector({ + filter: (i) => + Object.values(buttonIdentityStrings).includes(i.customId) && + interaction.user.id === i.user.id, + time: 120000, + }); messageComponentCollector.on( "collect", async (buttonInteraction: ButtonInteraction) => { switch (buttonInteraction.customId) { - case buttonIdentityStrings.add: - messageComponentCollector.stop(); - await ButtonAdd.furtherAdd( - buttonInteraction, - currentTime, - todoArray - ); - break; - - case buttonIdentityStrings.remove: - messageComponentCollector.stop(); - await ButtonRemove.Remove( - buttonInteraction, - currentTime, - todoArray - ); - break; - - case buttonIdentityStrings.forward: - await buttonInteraction.deferUpdate(); - page = page + 1 < pages.length ? ++page : 0; - await updateMsg(); - break; - - case buttonIdentityStrings.backward: - await buttonInteraction.deferUpdate(); - page = page > 0 ? --page : pages.length - 1; - await updateMsg(); - break; - - case buttonIdentityStrings.clear: - await interaction.editReply({ - components: [], - }); - messageComponentCollector.stop(); - break; - - default: - break; + case buttonIdentityStrings.add: + messageComponentCollector.stop(); + await ButtonAdd.furtherAdd( + buttonInteraction, + currentTime, + todoArray + ); + break; + + case buttonIdentityStrings.remove: + messageComponentCollector.stop(); + await ButtonRemove.Remove( + buttonInteraction, + currentTime, + todoArray + ); + break; + + case buttonIdentityStrings.forward: + await buttonInteraction.deferUpdate(); + page = page + 1 < pages.length ? ++page : 0; + await updateMsg(); + break; + + case buttonIdentityStrings.backward: + await buttonInteraction.deferUpdate(); + page = page > 0 ? --page : pages.length - 1; + await updateMsg(); + break; + + case buttonIdentityStrings.clear: + await interaction.editReply({ + components: [], + }); + messageComponentCollector.stop(); + break; + + default: + break; } } ); diff --git a/src/lib/Types/KaikiColor.ts b/src/lib/Types/KaikiColor.ts index d2ba73c7..7a34f227 100644 --- a/src/lib/Types/KaikiColor.ts +++ b/src/lib/Types/KaikiColor.ts @@ -1,159 +1,159 @@ export type KaikiColor = { - r: number; - g: number; - b: number; + r: number; + g: number; + b: number; }; export type KaikiRGBA = `rgba(${string})`; export type ColorNames = { - aliceblue: string; - antiquewhite: string; - aqua: string; - aquamarine: string; - azure: string; - beige: string; - bisque: string; - black: string; - blanchedalmond: string; - blue: string; - blueviolet: string; - brown: string; - burlywood: string; - cadetblue: string; - chartreuse: string; - chocolate: string; - coral: string; - cornflowerblue: string; - cornsilk: string; - crimson: string; - cyan: string; - darkblue: string; - darkcyan: string; - darkgoldenrod: string; - darkgray: string; - darkgreen: string; - darkgrey: string; - darkkhaki: string; - darkmagenta: string; - darkolivegreen: string; - darkorange: string; - darkorchid: string; - darkred: string; - darksalmon: string; - darkseagreen: string; - darkslateblue: string; - darkslategray: string; - darkslategrey: string; - darkturquoise: string; - darkviolet: string; - deeppink: string; - deepskyblue: string; - dimgray: string; - dimgrey: string; - dodgerblue: string; - firebrick: string; - floralwhite: string; - forestgreen: string; - fuchsia: string; - gainsboro: string; - ghostwhite: string; - gold: string; - goldenrod: string; - gray: string; - green: string; - greenyellow: string; - grey: string; - honeydew: string; - hotpink: string; - indianred: string; - indigo: string; - ivory: string; - khaki: string; - lavender: string; - lavenderblush: string; - lawngreen: string; - lemonchiffon: string; - lightblue: string; - lightcoral: string; - lightcyan: string; - lightgoldenrodyellow: string; - lightgray: string; - lightgreen: string; - lightgrey: string; - lightpink: string; - lightsalmon: string; - lightseagreen: string; - lightskyblue: string; - lightslategray: string; - lightslategrey: string; - lightsteelblue: string; - lightyellow: string; - lime: string; - limegreen: string; - linen: string; - magenta: string; - maroon: string; - mediumaquamarine: string; - mediumblue: string; - mediumorchid: string; - mediumpurple: string; - mediumseagreen: string; - mediumslateblue: string; - mediumspringgreen: string; - mediumturquoise: string; - mediumvioletred: string; - midnightblue: string; - mintcream: string; - mistyrose: string; - moccasin: string; - navajowhite: string; - navy: string; - oldlace: string; - olive: string; - olivedrab: string; - orange: string; - orangered: string; - orchid: string; - palegoldenrod: string; - palegreen: string; - paleturquoise: string; - palevioletred: string; - papayawhip: string; - peachpuff: string; - peru: string; - pink: string; - plum: string; - powderblue: string; - purple: string; - rebeccapurple: string; - red: string; - rosybrown: string; - royalblue: string; - saddlebrown: string; - salmon: string; - sandybrown: string; - seagreen: string; - seashell: string; - sienna: string; - silver: string; - skyblue: string; - slateblue: string; - slategray: string; - slategrey: string; - snow: string; - springgreen: string; - steelblue: string; - tan: string; - teal: string; - thistle: string; - tomato: string; - transparent: string; - turquoise: string; - violet: string; - wheat: string; - white: string; - whitesmoke: string; - yellow: string; - yellowgreen: string; + aliceblue: string; + antiquewhite: string; + aqua: string; + aquamarine: string; + azure: string; + beige: string; + bisque: string; + black: string; + blanchedalmond: string; + blue: string; + blueviolet: string; + brown: string; + burlywood: string; + cadetblue: string; + chartreuse: string; + chocolate: string; + coral: string; + cornflowerblue: string; + cornsilk: string; + crimson: string; + cyan: string; + darkblue: string; + darkcyan: string; + darkgoldenrod: string; + darkgray: string; + darkgreen: string; + darkgrey: string; + darkkhaki: string; + darkmagenta: string; + darkolivegreen: string; + darkorange: string; + darkorchid: string; + darkred: string; + darksalmon: string; + darkseagreen: string; + darkslateblue: string; + darkslategray: string; + darkslategrey: string; + darkturquoise: string; + darkviolet: string; + deeppink: string; + deepskyblue: string; + dimgray: string; + dimgrey: string; + dodgerblue: string; + firebrick: string; + floralwhite: string; + forestgreen: string; + fuchsia: string; + gainsboro: string; + ghostwhite: string; + gold: string; + goldenrod: string; + gray: string; + green: string; + greenyellow: string; + grey: string; + honeydew: string; + hotpink: string; + indianred: string; + indigo: string; + ivory: string; + khaki: string; + lavender: string; + lavenderblush: string; + lawngreen: string; + lemonchiffon: string; + lightblue: string; + lightcoral: string; + lightcyan: string; + lightgoldenrodyellow: string; + lightgray: string; + lightgreen: string; + lightgrey: string; + lightpink: string; + lightsalmon: string; + lightseagreen: string; + lightskyblue: string; + lightslategray: string; + lightslategrey: string; + lightsteelblue: string; + lightyellow: string; + lime: string; + limegreen: string; + linen: string; + magenta: string; + maroon: string; + mediumaquamarine: string; + mediumblue: string; + mediumorchid: string; + mediumpurple: string; + mediumseagreen: string; + mediumslateblue: string; + mediumspringgreen: string; + mediumturquoise: string; + mediumvioletred: string; + midnightblue: string; + mintcream: string; + mistyrose: string; + moccasin: string; + navajowhite: string; + navy: string; + oldlace: string; + olive: string; + olivedrab: string; + orange: string; + orangered: string; + orchid: string; + palegoldenrod: string; + palegreen: string; + paleturquoise: string; + palevioletred: string; + papayawhip: string; + peachpuff: string; + peru: string; + pink: string; + plum: string; + powderblue: string; + purple: string; + rebeccapurple: string; + red: string; + rosybrown: string; + royalblue: string; + saddlebrown: string; + salmon: string; + sandybrown: string; + seagreen: string; + seashell: string; + sienna: string; + silver: string; + skyblue: string; + slateblue: string; + slategray: string; + slategrey: string; + snow: string; + springgreen: string; + steelblue: string; + tan: string; + teal: string; + thistle: string; + tomato: string; + transparent: string; + turquoise: string; + violet: string; + wheat: string; + white: string; + whitesmoke: string; + yellow: string; + yellowgreen: string; }; diff --git a/src/lib/Types/Miscellaneous.ts b/src/lib/Types/Miscellaneous.ts index 50d85dd6..a1d97777 100644 --- a/src/lib/Types/Miscellaneous.ts +++ b/src/lib/Types/Miscellaneous.ts @@ -1,19 +1,19 @@ export type AnimeQuoteResponse = { - anime: string; - character: string; - quote: string; + anime: string; + character: string; + quote: string; }; export type Categories = - | "Administration" - | "Anime" - | "Emotes" - | "Fun" - | "Gambling" - | "Moderation" - | "NSFW" - | "Owner only" - | "Roles" - | "Server settings" - | "Utility" - | "Images" - | "Interactions"; + | "Administration" + | "Anime" + | "Emotes" + | "Fun" + | "Gambling" + | "Moderation" + | "NSFW" + | "Owner only" + | "Roles" + | "Server settings" + | "Utility" + | "Images" + | "Interactions"; diff --git a/src/listeners/shardResume.ts b/src/listeners/shardResume.ts index 94577879..ae6575cd 100644 --- a/src/listeners/shardResume.ts +++ b/src/listeners/shardResume.ts @@ -14,7 +14,7 @@ export default class ShardResume extends Listener { ); await ( - this.container.client as KaikiSapphireClient + this.container.client as KaikiSapphireClient ).setPresence(); } } diff --git a/src/preconditions/OwnerOnly.ts b/src/preconditions/OwnerOnly.ts index 60336ad9..1666a3d0 100644 --- a/src/preconditions/OwnerOnly.ts +++ b/src/preconditions/OwnerOnly.ts @@ -22,7 +22,7 @@ export class OwnerOnly extends AllFlowsPrecondition { return this.container.client.owner.id === id ? this.ok() : this.error({ - message: "Only the bot owner can use this command!", - }); + message: "Only the bot owner can use this command!", + }); } } diff --git a/src/preconditions/blockedCategoriesPrecondition.ts b/src/preconditions/blockedCategoriesPrecondition.ts index af0d754f..fb51f09d 100644 --- a/src/preconditions/blockedCategoriesPrecondition.ts +++ b/src/preconditions/blockedCategoriesPrecondition.ts @@ -44,9 +44,9 @@ export class BlockedCategoriesPrecondition extends AllFlowsPrecondition { private async checkBlockedCategories( messageOrInteraction: - | Message - | ContextMenuCommandInteraction - | ChatInputCommandInteraction, + | Message + | ContextMenuCommandInteraction + | ChatInputCommandInteraction, cmd: Command ) { if (messageOrInteraction.guildId === null || !cmd.category) @@ -54,7 +54,7 @@ export class BlockedCategoriesPrecondition extends AllFlowsPrecondition { const isBlocked = await Result.fromAsync( ( - messageOrInteraction.client as KaikiSapphireClient + messageOrInteraction.client as KaikiSapphireClient ).orm.blockedCategories.findFirstOrThrow({ where: { GuildId: BigInt(messageOrInteraction.guildId), diff --git a/src/struct/Constants.ts b/src/struct/Constants.ts index 9af5ca01..c751ab24 100644 --- a/src/struct/Constants.ts +++ b/src/struct/Constants.ts @@ -12,88 +12,88 @@ import { import { ColorNames, KaikiRGBA } from "../lib/Types/KaikiColor"; export enum UndocumentedFeatures { - ACTIVITIES_ALPHA = "ACTIVITIES_ALPHA", - ACTIVITIES_EMPLOYEE = "ACTIVITIES_EMPLOYEE", - ACTIVITIES_INTERNAL_DEV = "ACTIVITIES_INTERNAL_DEV", - AUTOMOD_TRIGGER_KEYWORD_FILTER = "AUTOMOD_TRIGGER_KEYWORD_FILTER", - AUTOMOD_TRIGGER_ML_SPAM_FILTER = "AUTOMOD_TRIGGER_ML_SPAM_FILTER", - AUTOMOD_TRIGGER_SPAM_LINK_FILTER = "AUTOMOD_TRIGGER_SPAM_LINK_FILTER", - AUTOMOD_TRIGGER_USER_PROFILE = "AUTOMOD_TRIGGER_USER_PROFILE", - BFG = "BFG", - BOT_DEVELOPER_EARLY_ACCESS = "BOT_DEVELOPER_EARLY_ACCESS", - BOOSTING_TIERS_EXPERIMENT_MEDIUM_GUILD = "BOOSTING_TIERS_EXPERIMENT_MEDIUM_GUILD", - BOOSTING_TIERS_EXPERIMENT_SMALL_GUILD = "BOOSTING_TIERS_EXPERIMENT_SMALL_GUILD", - BURST_REACTIONS = "BURST_REACTIONS", - CHANNEL_EMOJIS_GENERATED = "CHANNEL_EMOJIS_GENERATED", - CHANNEL_ICON_EMOJIS_GENERATED = "CHANNEL_ICON_EMOJIS_GENERATED", - CHANNEL_HIGHLIGHTS = "CHANNEL_HIGHLIGHTS", - CHANNEL_HIGHLIGHTS_DISABLED = "CHANNEL_HIGHLIGHTS_DISABLED", - CLYDE_DISABLED = "CLYDE_DISABLED", - CLYDE_ENABLED = "CLYDE_ENABLED", - CLYDE_EXPERIMENT_ENABLED = "CLYDE_EXPERIMENT_ENABLED", - COMMUNITY_CANARY = "COMMUNITY_CANARY", - COMMUNITY_EXP_LARGE_GATED = "COMMUNITY_EXP_LARGE_GATED", - COMMUNITY_EXP_LARGE_UNGATED = "COMMUNITY_EXP_LARGE_UNGATED", - COMMUNITY_EXP_MEDIUM = "COMMUNITY_EXP_MEDIUM", - CREATOR_ACCEPTED_NEW_TERMS = "CREATOR_ACCEPTED_NEW_TERMS", - CREATOR_MONETIZABLE = "CREATOR_MONETIZABLE", - CREATOR_MONETIZABLE_DISABLED = "CREATOR_MONETIZABLE_DISABLED", - CREATOR_MONETIZABLE_PENDING_NEW_OWNER_ONBOARDING = "CREATOR_MONETIZABLE_PENDING_NEW_OWNER_ONBOARDING", - CREATOR_MONETIZABLE_RESTRICTED = "CREATOR_MONETIZABLE_RESTRICTED", - CREATOR_MONETIZABLE_WHITEGLOVE = "CREATOR_MONETIZABLE_WHITEGLOVE", - CREATOR_MONETIZATION_APPLICATION_ALLOWLIST = "CREATOR_MONETIZATION_APPLICATION_ALLOWLIST", - DISCOVERABLE_DISABLED = "DISCOVERABLE_DISABLED", - ENABLED_DISCOVERABLE_BEFORE = "ENABLED_DISCOVERABLE_BEFORE", - EXPOSED_TO_ACTIVITIES_WTP_EXPERIMENT = "EXPOSED_TO_ACTIVITIES_WTP_EXPERIMENT", - GUESTS_ENABLED = "GUESTS_ENABLED", - GUILD_AUTOMOD_DEFAULT_LIST = "GUILD_AUTOMOD_DEFAULT_LIST", - GUILD_COMMUNICATION_DISABLED_GUILDS = "GUILD_COMMUNICATION_DISABLED_GUILDS", - GUILD_HOME_DEPRECATION_OVERRIDE = "GUILD_HOME_DEPRECATION_OVERRIDE", - GUILD_HOME_OVERRIDE = "GUILD_HOME_OVERRIDE", - GUILD_HOME_TEST = "GUILD_HOME_TEST", - GUILD_MEMBER_VERIFICATION_EXPERIMENT = "GUILD_MEMBER_VERIFICATION_EXPERIMENT", - GUILD_ONBOARDING = "GUILD_ONBOARDING", - GUILD_ONBOARDING_ADMIN_ONLY = "GUILD_ONBOARDING_ADMIN_ONLY", - GUILD_ONBOARDING_EVER_ENABLED = "GUILD_ONBOARDING_EVER_ENABLED", - GUILD_ONBOARDING_HAS_PROMPTS = "GUILD_ONBOARDING_HAS_PROMPTS", - GUILD_ROLE_SUBSCRIPTIONS = "GUILD_ROLE_SUBSCRIPTIONS", - GUILD_ROLE_SUBSCRIPTION_PURCHASE_FEEDBACK_LOOP = "GUILD_ROLE_SUBSCRIPTION_PURCHASE_FEEDBACK_LOOP", - GUILD_ROLE_SUBSCRIPTION_TRIALS = "GUILD_ROLE_SUBSCRIPTION_TRIALS", - GUILD_SERVER_GUIDE = "GUILD_SERVER_GUIDE", - GUILD_WEB_PAGE_VANITY_URL = "GUILD_WEB_PAGE_VANITY_URL", - HAD_EARLY_ACTIVITIES_ACCESS = "HAD_EARLY_ACTIVITIES_ACCESS", - HIDE_FROM_EXPERIMENT_UI = "HIDE_FROM_EXPERIMENT_UI", - INCREASED_THREAD_LIMIT = "INCREASED_THREAD_LIMIT", - INTERNAL_EMPLOYEE_ONLY = "INTERNAL_EMPLOYEE_ONLY", - NEW_THREAD_PERMISSIONS = "NEW_THREAD_PERMISSIONS", - MARKETPLACES_CONNECTION_ROLES = "MARKETPLACES_CONNECTION_ROLES", - MEMBER_PROFILES = "MEMBER_PROFILES", - MEMBER_SAFETY_PAGE_ROLLOUT = "MEMBER_SAFETY_PAGE_ROLLOUT", - MEMBER_VERIFICATION_MANUAL_APPROVAL = "MEMBER_VERIFICATION_MANUAL_APPROVAL", - MOBILE_WEB_ROLE_SUBSCRIPTION_PURCHASE_PAGE = "MOBILE_WEB_ROLE_SUBSCRIPTION_PURCHASE_PAGE", - MORE_EMOJI = "MORE_EMOJI", - PREMIUM_TIER_3_OVERRIDE = "PREMIUM_TIER_3_OVERRIDE", - PRODUCTS_AVAILABLE_FOR_PURCHASE = "PRODUCTS_AVAILABLE_FOR_PURCHASE", - RAID_ALERTS_DISABLED = "RAID_ALERTS_DISABLED", - RESTRICT_SPAM_RISK_GUILDS = "RESTRICT_SPAM_RISK_GUILDS", - ROLE_SUBSCRIPTIONS_ENABLED_FOR_PURCHASE = "ROLE_SUBSCRIPTIONS_ENABLED_FOR_PURCHASE", - SHARD = "SHARD", - SHARED_CANVAS_FRIENDS_AND_FAMILY_TEST = "SHARED_CANVAS_FRIENDS_AND_FAMILY_TEST", - SOUNDBOARD = "SOUNDBOARD", - SUMMARIES_ENABLED = "SUMMARIES_ENABLED", - SUMMARIES_ENABLED_GA = "SUMMARIES_ENABLED_GA", - SUMMARIES_DISABLED_BY_USER = "SUMMARIES_DISABLED_BY_USER", - SUMMARIES_ENABLED_BY_USER = "SUMMARIES_ENABLED_BY_USER", - TEXT_IN_STAGE_ENABLED = "TEXT_IN_STAGE_ENABLED", - TEXT_IN_VOICE_ENABLED = "TEXT_IN_VOICE_ENABLED", - THREADS_ENABLED = "THREADS_ENABLED", - THREADS_ENABLED_TESTING = "THREADS_ENABLED_TESTING", - THREADS_ONLY_CHANNEL = "THREADS_ONLY_CHANNEL", - THREAD_DEFAULT_AUTO_ARCHIVE_DURATION = "THREAD_DEFAULT_AUTO_ARCHIVE_DURATION", - THREE_DAY_THREAD_ARCHIVE = "THREE_DAY_THREAD_ARCHIVE", - TICKETING_ENABLED = "TICKETING_ENABLED", - VOICE_CHANNEL_EFFECTS = "VOICE_CHANNEL_EFFECTS", - VOICE_IN_THREADS = "VOICE_IN_THREADS", + ACTIVITIES_ALPHA = "ACTIVITIES_ALPHA", + ACTIVITIES_EMPLOYEE = "ACTIVITIES_EMPLOYEE", + ACTIVITIES_INTERNAL_DEV = "ACTIVITIES_INTERNAL_DEV", + AUTOMOD_TRIGGER_KEYWORD_FILTER = "AUTOMOD_TRIGGER_KEYWORD_FILTER", + AUTOMOD_TRIGGER_ML_SPAM_FILTER = "AUTOMOD_TRIGGER_ML_SPAM_FILTER", + AUTOMOD_TRIGGER_SPAM_LINK_FILTER = "AUTOMOD_TRIGGER_SPAM_LINK_FILTER", + AUTOMOD_TRIGGER_USER_PROFILE = "AUTOMOD_TRIGGER_USER_PROFILE", + BFG = "BFG", + BOT_DEVELOPER_EARLY_ACCESS = "BOT_DEVELOPER_EARLY_ACCESS", + BOOSTING_TIERS_EXPERIMENT_MEDIUM_GUILD = "BOOSTING_TIERS_EXPERIMENT_MEDIUM_GUILD", + BOOSTING_TIERS_EXPERIMENT_SMALL_GUILD = "BOOSTING_TIERS_EXPERIMENT_SMALL_GUILD", + BURST_REACTIONS = "BURST_REACTIONS", + CHANNEL_EMOJIS_GENERATED = "CHANNEL_EMOJIS_GENERATED", + CHANNEL_ICON_EMOJIS_GENERATED = "CHANNEL_ICON_EMOJIS_GENERATED", + CHANNEL_HIGHLIGHTS = "CHANNEL_HIGHLIGHTS", + CHANNEL_HIGHLIGHTS_DISABLED = "CHANNEL_HIGHLIGHTS_DISABLED", + CLYDE_DISABLED = "CLYDE_DISABLED", + CLYDE_ENABLED = "CLYDE_ENABLED", + CLYDE_EXPERIMENT_ENABLED = "CLYDE_EXPERIMENT_ENABLED", + COMMUNITY_CANARY = "COMMUNITY_CANARY", + COMMUNITY_EXP_LARGE_GATED = "COMMUNITY_EXP_LARGE_GATED", + COMMUNITY_EXP_LARGE_UNGATED = "COMMUNITY_EXP_LARGE_UNGATED", + COMMUNITY_EXP_MEDIUM = "COMMUNITY_EXP_MEDIUM", + CREATOR_ACCEPTED_NEW_TERMS = "CREATOR_ACCEPTED_NEW_TERMS", + CREATOR_MONETIZABLE = "CREATOR_MONETIZABLE", + CREATOR_MONETIZABLE_DISABLED = "CREATOR_MONETIZABLE_DISABLED", + CREATOR_MONETIZABLE_PENDING_NEW_OWNER_ONBOARDING = "CREATOR_MONETIZABLE_PENDING_NEW_OWNER_ONBOARDING", + CREATOR_MONETIZABLE_RESTRICTED = "CREATOR_MONETIZABLE_RESTRICTED", + CREATOR_MONETIZABLE_WHITEGLOVE = "CREATOR_MONETIZABLE_WHITEGLOVE", + CREATOR_MONETIZATION_APPLICATION_ALLOWLIST = "CREATOR_MONETIZATION_APPLICATION_ALLOWLIST", + DISCOVERABLE_DISABLED = "DISCOVERABLE_DISABLED", + ENABLED_DISCOVERABLE_BEFORE = "ENABLED_DISCOVERABLE_BEFORE", + EXPOSED_TO_ACTIVITIES_WTP_EXPERIMENT = "EXPOSED_TO_ACTIVITIES_WTP_EXPERIMENT", + GUESTS_ENABLED = "GUESTS_ENABLED", + GUILD_AUTOMOD_DEFAULT_LIST = "GUILD_AUTOMOD_DEFAULT_LIST", + GUILD_COMMUNICATION_DISABLED_GUILDS = "GUILD_COMMUNICATION_DISABLED_GUILDS", + GUILD_HOME_DEPRECATION_OVERRIDE = "GUILD_HOME_DEPRECATION_OVERRIDE", + GUILD_HOME_OVERRIDE = "GUILD_HOME_OVERRIDE", + GUILD_HOME_TEST = "GUILD_HOME_TEST", + GUILD_MEMBER_VERIFICATION_EXPERIMENT = "GUILD_MEMBER_VERIFICATION_EXPERIMENT", + GUILD_ONBOARDING = "GUILD_ONBOARDING", + GUILD_ONBOARDING_ADMIN_ONLY = "GUILD_ONBOARDING_ADMIN_ONLY", + GUILD_ONBOARDING_EVER_ENABLED = "GUILD_ONBOARDING_EVER_ENABLED", + GUILD_ONBOARDING_HAS_PROMPTS = "GUILD_ONBOARDING_HAS_PROMPTS", + GUILD_ROLE_SUBSCRIPTIONS = "GUILD_ROLE_SUBSCRIPTIONS", + GUILD_ROLE_SUBSCRIPTION_PURCHASE_FEEDBACK_LOOP = "GUILD_ROLE_SUBSCRIPTION_PURCHASE_FEEDBACK_LOOP", + GUILD_ROLE_SUBSCRIPTION_TRIALS = "GUILD_ROLE_SUBSCRIPTION_TRIALS", + GUILD_SERVER_GUIDE = "GUILD_SERVER_GUIDE", + GUILD_WEB_PAGE_VANITY_URL = "GUILD_WEB_PAGE_VANITY_URL", + HAD_EARLY_ACTIVITIES_ACCESS = "HAD_EARLY_ACTIVITIES_ACCESS", + HIDE_FROM_EXPERIMENT_UI = "HIDE_FROM_EXPERIMENT_UI", + INCREASED_THREAD_LIMIT = "INCREASED_THREAD_LIMIT", + INTERNAL_EMPLOYEE_ONLY = "INTERNAL_EMPLOYEE_ONLY", + NEW_THREAD_PERMISSIONS = "NEW_THREAD_PERMISSIONS", + MARKETPLACES_CONNECTION_ROLES = "MARKETPLACES_CONNECTION_ROLES", + MEMBER_PROFILES = "MEMBER_PROFILES", + MEMBER_SAFETY_PAGE_ROLLOUT = "MEMBER_SAFETY_PAGE_ROLLOUT", + MEMBER_VERIFICATION_MANUAL_APPROVAL = "MEMBER_VERIFICATION_MANUAL_APPROVAL", + MOBILE_WEB_ROLE_SUBSCRIPTION_PURCHASE_PAGE = "MOBILE_WEB_ROLE_SUBSCRIPTION_PURCHASE_PAGE", + MORE_EMOJI = "MORE_EMOJI", + PREMIUM_TIER_3_OVERRIDE = "PREMIUM_TIER_3_OVERRIDE", + PRODUCTS_AVAILABLE_FOR_PURCHASE = "PRODUCTS_AVAILABLE_FOR_PURCHASE", + RAID_ALERTS_DISABLED = "RAID_ALERTS_DISABLED", + RESTRICT_SPAM_RISK_GUILDS = "RESTRICT_SPAM_RISK_GUILDS", + ROLE_SUBSCRIPTIONS_ENABLED_FOR_PURCHASE = "ROLE_SUBSCRIPTIONS_ENABLED_FOR_PURCHASE", + SHARD = "SHARD", + SHARED_CANVAS_FRIENDS_AND_FAMILY_TEST = "SHARED_CANVAS_FRIENDS_AND_FAMILY_TEST", + SOUNDBOARD = "SOUNDBOARD", + SUMMARIES_ENABLED = "SUMMARIES_ENABLED", + SUMMARIES_ENABLED_GA = "SUMMARIES_ENABLED_GA", + SUMMARIES_DISABLED_BY_USER = "SUMMARIES_DISABLED_BY_USER", + SUMMARIES_ENABLED_BY_USER = "SUMMARIES_ENABLED_BY_USER", + TEXT_IN_STAGE_ENABLED = "TEXT_IN_STAGE_ENABLED", + TEXT_IN_VOICE_ENABLED = "TEXT_IN_VOICE_ENABLED", + THREADS_ENABLED = "THREADS_ENABLED", + THREADS_ENABLED_TESTING = "THREADS_ENABLED_TESTING", + THREADS_ONLY_CHANNEL = "THREADS_ONLY_CHANNEL", + THREAD_DEFAULT_AUTO_ARCHIVE_DURATION = "THREAD_DEFAULT_AUTO_ARCHIVE_DURATION", + THREE_DAY_THREAD_ARCHIVE = "THREE_DAY_THREAD_ARCHIVE", + TICKETING_ENABLED = "TICKETING_ENABLED", + VOICE_CHANNEL_EFFECTS = "VOICE_CHANNEL_EFFECTS", + VOICE_IN_THREADS = "VOICE_IN_THREADS", } export default class Constants { @@ -116,172 +116,172 @@ export default class Constants { static readonly imgExtensionsRegex = /(?:jpg|gif|png|jpeg)/gi; static readonly guildFeatures: { - [index in UndocumentedFeatures]: string; - } & { [index in GuildFeature]: string } = Object.freeze({ - ACTIVITIES_ALPHA: "", - ACTIVITIES_EMPLOYEE: "", - ACTIVITIES_INTERNAL_DEV: "", - ANIMATED_BANNER: "Animated banner", - ANIMATED_ICON: "Animated icon", - APPLICATION_COMMAND_PERMISSIONS_V2: "Application permissions v2", - AUTOMOD_TRIGGER_KEYWORD_FILTER: "", - AUTOMOD_TRIGGER_ML_SPAM_FILTER: - "Given to guilds previously in the `2022-03_automod_trigger_ml_spam_filter` experiment overrides", - AUTOMOD_TRIGGER_SPAM_LINK_FILTER: "", - AUTOMOD_TRIGGER_USER_PROFILE: - "Server has enabled AutoMod for user profiles.", - AUTO_MODERATION: "Auto moderation", - BANNER: "Banner", - BFG: "", - BOOSTING_TIERS_EXPERIMENT_MEDIUM_GUILD: "", - BOOSTING_TIERS_EXPERIMENT_SMALL_GUILD: "", - BOT_DEVELOPER_EARLY_ACCESS: - "Early access features for bot and library developers enabled.", - BURST_REACTIONS: "Burst reactions enabled", - CHANNEL_EMOJIS_GENERATED: "Channel icon emojis populated", - CHANNEL_HIGHLIGHTS: "", - CHANNEL_HIGHLIGHTS_DISABLED: "", - CHANNEL_ICON_EMOJIS_GENERATED: "Channel icon emojis populated", - CLYDE_DISABLED: - "Given when a server administrator disables ClydeAI for the guild", - CLYDE_ENABLED: "", - CLYDE_EXPERIMENT_ENABLED: "Enables ClydeAI for the guild", - COMMUNITY: "Community", - COMMUNITY_CANARY: "", - COMMUNITY_EXP_LARGE_GATED: "", - COMMUNITY_EXP_LARGE_UNGATED: "", - COMMUNITY_EXP_MEDIUM: "", - CREATOR_ACCEPTED_NEW_TERMS: "", - CREATOR_MONETIZABLE: - "Given to guilds that enabled role subscriptions through the manual approval system", - CREATOR_MONETIZABLE_DISABLED: "", - CREATOR_MONETIZABLE_PENDING_NEW_OWNER_ONBOARDING: "", - CREATOR_MONETIZABLE_PROVISIONAL: "Creator monetization enabled", - CREATOR_MONETIZABLE_RESTRICTED: "", - CREATOR_MONETIZABLE_WHITEGLOVE: "", - CREATOR_MONETIZATION_APPLICATION_ALLOWLIST: "", - CREATOR_STORE_PAGE: "Creator store page", - DEVELOPER_SUPPORT_SERVER: "Developer support server", - DISCOVERABLE: "Visible in Server Discovery.", - DISCOVERABLE_DISABLED: - "Guild is permanently removed from Discovery by Discord.", - ENABLED_DISCOVERABLE_BEFORE: - "Given to servers that have enabled Discovery at any point.", - EXPOSED_TO_ACTIVITIES_WTP_EXPERIMENT: - "Given to guilds previously in the `2021-11_activities_baseline_engagement_bundle` experiment overrides", - FEATURABLE: "Can be featured", - GUESTS_ENABLED: "Guild has used guest invites", - GUILD_AUTOMOD_DEFAULT_LIST: - "Given to guilds in the `2022-03_guild_automod_default_list` experiment overrides", - GUILD_COMMUNICATION_DISABLED_GUILDS: - "Given to guilds previously in the `2021-11_guild_communication_disabled_guilds` experiment overrides", - GUILD_HOME_DEPRECATION_OVERRIDE: "Guild home deprecation override", - GUILD_HOME_OVERRIDE: - "Gives the guild access to the Home feature, enables Treatment 2 of the `2022-01_home_tab_guild` experiment overrides", - GUILD_HOME_TEST: - "Gives the guild access to the Home feature, enables Treatment 1 of the `2022-01_home_tab_guild` experiment", - GUILD_MEMBER_VERIFICATION_EXPERIMENT: - "Given to guilds previously in the `2021-11_member_verification_manual_approval` experiment", - GUILD_ONBOARDING: "Guild has access to the Onboarding feature", - GUILD_ONBOARDING_ADMIN_ONLY: "Onboarding only visible to guild admins", - GUILD_ONBOARDING_EVER_ENABLED: - "Guild has previously enabled the onboarding feature", - GUILD_ONBOARDING_HAS_PROMPTS: - "Guild has prompts configured in onboarding", - GUILD_ROLE_SUBSCRIPTIONS: - "Given to guilds previously in the `2021-06_guild_role_subscriptions` experiment overrides", - GUILD_ROLE_SUBSCRIPTION_PURCHASE_FEEDBACK_LOOP: - "Given to guilds previously in the `2022-05_mobile_web_role_subscription_purchase_page` experiment overrides", - GUILD_ROLE_SUBSCRIPTION_TRIALS: - "Given to guilds previously in the `2022-01_guild_role_subscription_trials` experiment overrides", - GUILD_SERVER_GUIDE: - "Guild has enabled [server guide](https://support.discord.com/hc/en-us/articles/13497665141655)", - GUILD_WEB_PAGE_VANITY_URL: "Web page vanity url", - HAD_EARLY_ACTIVITIES_ACCESS: - "Server previously had access to voice channel activities and can bypass the boost level requirement", - HAS_DIRECTORY_ENTRY: "Guild is in a directory channel.", - HIDE_FROM_EXPERIMENT_UI: "Hide from experiemtn UI", - HUB: "[Student Hubs](https://dis.gd/studenthubs) contain a directory channel that let you find school-related, student-run servers for your school or university.", - INCREASED_THREAD_LIMIT: - "Allows the server to have 1,000+ active threads", - INTERNAL_EMPLOYEE_ONLY: - "Restricts the guild so that only users with the staff flag can join.", - INVITES_DISABLED: "Disabled invites", - INVITE_SPLASH: - "Ability to set a background image that will display on all invite links.", - LINKED_TO_HUB: "Linked to student hub", - MARKETPLACES_CONNECTION_ROLES: "Marketplace connection roles", - MEMBER_PROFILES: - "Allows members to customize their avatar, banner and bio for that server.", - MEMBER_SAFETY_PAGE_ROLLOUT: - "Assigns the experiment of the `Member Safety` panel and lockdowns to the guild", - MEMBER_VERIFICATION_GATE_ENABLED: - "Has member verification gate enabled, requiring new users to pass the verification gate before interacting with the server.", - MEMBER_VERIFICATION_MANUAL_APPROVAL: - "Member verification with manual approval", - MOBILE_WEB_ROLE_SUBSCRIPTION_PURCHASE_PAGE: - "Given to guilds previously in the `2022-05_mobile_web_role_subscription_purchase_page` experiment overrides", - MONETIZATION_ENABLED: "Monetization enabled", - MORE_EMOJI: - "Adds 150 extra emoji slots to each category (normal and animated emoji). Not used in server boosting.", - MORE_STICKERS: - "Adds 60 total sticker slots no matter how many it had before. Not used in server boosting.", - NEWS: "News", - NEW_THREAD_PERMISSIONS: - "Guild has [new thread permissions](https://support.discord.com/hc/en-us/articles/4403205878423#h_01FDGC4JW2D665Y230KPKWQZPN).", - PARTNERED: - "Partner badge near the server name and in mutual server lists.", - PREMIUM_TIER_3_OVERRIDE: "Forces the server to server boosting level 3", - PREVIEW_ENABLED: - "Allows a user to view the server without passing membership gating.", - PRIVATE_THREADS: "Private threads", - PRODUCTS_AVAILABLE_FOR_PURCHASE: - "Guild has server products available for purchase", - RAID_ALERTS_DISABLED: "Guild is opt-out from raid alerts", - RELAY_ENABLED: - "Shards connections to the guild to different nodes that relay information between each other.", - RESTRICT_SPAM_RISK_GUILDS: "Restrict spam risk", - ROLE_ICONS: "Ability to set an image or emoji as a role icon.", - ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE: - "Allows servers members to purchase role subscriptions.", - ROLE_SUBSCRIPTIONS_ENABLED: "Role subscription enabled", - ROLE_SUBSCRIPTIONS_ENABLED_FOR_PURCHASE: - "Monetizable role subscriptions enabled", - SHARD: "Shard (?)", - SHARED_CANVAS_FRIENDS_AND_FAMILY_TEST: - "Given to guilds previously in the `2023-01_shared_canvas` experiment overrides", - SOUNDBOARD: - "Given to guilds previously in the `2021-12_soundboard` experiment overrides", - SUMMARIES_DISABLED_BY_USER: "Summaries disbled", - SUMMARIES_ENABLED: - "Given to guilds in the `2023-02_p13n_summarization` experiment overrides", - SUMMARIES_ENABLED_BY_USER: "Summaries enabled", - SUMMARIES_ENABLED_GA: - "Given to guilds in the `2023-02_p13n_summarization` experiment overrides", - TEXT_IN_STAGE_ENABLED: "Text in stage enabled", - TEXT_IN_VOICE_ENABLED: "Text in voice channels enabled.", - THREADS_ENABLED: "Enabled threads early access.", - THREADS_ENABLED_TESTING: - "Threads-enabled testing. Used by bot developers to test their bots with threads in guilds with 5 or less members and a bot. ~~Also gives the premium thread features.~~", - THREADS_ONLY_CHANNEL: - "Threads-only channel. Given to guilds previously in the `2021-07_threads_only_channel` experiment overrides", - THREAD_DEFAULT_AUTO_ARCHIVE_DURATION: - "Unknown, presumably used for testing changes to the thread default auto archive duration.", - THREE_DAY_THREAD_ARCHIVE: - "Ability to have threads that archive after three days", - TICKETED_EVENTS_ENABLED: "Ticketed events enabled", - TICKETING_ENABLED: "Ticketing enabled", - VANITY_URL: - "Ability to set a vanity URL (custom discord.gg invite link).", - VERIFIED: - "Verification checkmark near the server name and in mutual server lists.", - VIP_REGIONS: - "~~Ability to use special voice regions with better stability: US East VIP, US West VIP, and Amsterdam VIP.~~ Deprecated, replaced with 384kbps max bitrate", - VOICE_CHANNEL_EFFECTS: - "Given to guilds previously in the `2022-06_voice_channel_effects` experiment overrides", - VOICE_IN_THREADS: "Voice in threads", - WELCOME_SCREEN_ENABLED: "Welcome screen enabled", - }); + [index in UndocumentedFeatures]: string; + } & { [index in GuildFeature]: string } = Object.freeze({ + ACTIVITIES_ALPHA: "", + ACTIVITIES_EMPLOYEE: "", + ACTIVITIES_INTERNAL_DEV: "", + ANIMATED_BANNER: "Animated banner", + ANIMATED_ICON: "Animated icon", + APPLICATION_COMMAND_PERMISSIONS_V2: "Application permissions v2", + AUTOMOD_TRIGGER_KEYWORD_FILTER: "", + AUTOMOD_TRIGGER_ML_SPAM_FILTER: + "Given to guilds previously in the `2022-03_automod_trigger_ml_spam_filter` experiment overrides", + AUTOMOD_TRIGGER_SPAM_LINK_FILTER: "", + AUTOMOD_TRIGGER_USER_PROFILE: + "Server has enabled AutoMod for user profiles.", + AUTO_MODERATION: "Auto moderation", + BANNER: "Banner", + BFG: "", + BOOSTING_TIERS_EXPERIMENT_MEDIUM_GUILD: "", + BOOSTING_TIERS_EXPERIMENT_SMALL_GUILD: "", + BOT_DEVELOPER_EARLY_ACCESS: + "Early access features for bot and library developers enabled.", + BURST_REACTIONS: "Burst reactions enabled", + CHANNEL_EMOJIS_GENERATED: "Channel icon emojis populated", + CHANNEL_HIGHLIGHTS: "", + CHANNEL_HIGHLIGHTS_DISABLED: "", + CHANNEL_ICON_EMOJIS_GENERATED: "Channel icon emojis populated", + CLYDE_DISABLED: + "Given when a server administrator disables ClydeAI for the guild", + CLYDE_ENABLED: "", + CLYDE_EXPERIMENT_ENABLED: "Enables ClydeAI for the guild", + COMMUNITY: "Community", + COMMUNITY_CANARY: "", + COMMUNITY_EXP_LARGE_GATED: "", + COMMUNITY_EXP_LARGE_UNGATED: "", + COMMUNITY_EXP_MEDIUM: "", + CREATOR_ACCEPTED_NEW_TERMS: "", + CREATOR_MONETIZABLE: + "Given to guilds that enabled role subscriptions through the manual approval system", + CREATOR_MONETIZABLE_DISABLED: "", + CREATOR_MONETIZABLE_PENDING_NEW_OWNER_ONBOARDING: "", + CREATOR_MONETIZABLE_PROVISIONAL: "Creator monetization enabled", + CREATOR_MONETIZABLE_RESTRICTED: "", + CREATOR_MONETIZABLE_WHITEGLOVE: "", + CREATOR_MONETIZATION_APPLICATION_ALLOWLIST: "", + CREATOR_STORE_PAGE: "Creator store page", + DEVELOPER_SUPPORT_SERVER: "Developer support server", + DISCOVERABLE: "Visible in Server Discovery.", + DISCOVERABLE_DISABLED: + "Guild is permanently removed from Discovery by Discord.", + ENABLED_DISCOVERABLE_BEFORE: + "Given to servers that have enabled Discovery at any point.", + EXPOSED_TO_ACTIVITIES_WTP_EXPERIMENT: + "Given to guilds previously in the `2021-11_activities_baseline_engagement_bundle` experiment overrides", + FEATURABLE: "Can be featured", + GUESTS_ENABLED: "Guild has used guest invites", + GUILD_AUTOMOD_DEFAULT_LIST: + "Given to guilds in the `2022-03_guild_automod_default_list` experiment overrides", + GUILD_COMMUNICATION_DISABLED_GUILDS: + "Given to guilds previously in the `2021-11_guild_communication_disabled_guilds` experiment overrides", + GUILD_HOME_DEPRECATION_OVERRIDE: "Guild home deprecation override", + GUILD_HOME_OVERRIDE: + "Gives the guild access to the Home feature, enables Treatment 2 of the `2022-01_home_tab_guild` experiment overrides", + GUILD_HOME_TEST: + "Gives the guild access to the Home feature, enables Treatment 1 of the `2022-01_home_tab_guild` experiment", + GUILD_MEMBER_VERIFICATION_EXPERIMENT: + "Given to guilds previously in the `2021-11_member_verification_manual_approval` experiment", + GUILD_ONBOARDING: "Guild has access to the Onboarding feature", + GUILD_ONBOARDING_ADMIN_ONLY: "Onboarding only visible to guild admins", + GUILD_ONBOARDING_EVER_ENABLED: + "Guild has previously enabled the onboarding feature", + GUILD_ONBOARDING_HAS_PROMPTS: + "Guild has prompts configured in onboarding", + GUILD_ROLE_SUBSCRIPTIONS: + "Given to guilds previously in the `2021-06_guild_role_subscriptions` experiment overrides", + GUILD_ROLE_SUBSCRIPTION_PURCHASE_FEEDBACK_LOOP: + "Given to guilds previously in the `2022-05_mobile_web_role_subscription_purchase_page` experiment overrides", + GUILD_ROLE_SUBSCRIPTION_TRIALS: + "Given to guilds previously in the `2022-01_guild_role_subscription_trials` experiment overrides", + GUILD_SERVER_GUIDE: + "Guild has enabled [server guide](https://support.discord.com/hc/en-us/articles/13497665141655)", + GUILD_WEB_PAGE_VANITY_URL: "Web page vanity url", + HAD_EARLY_ACTIVITIES_ACCESS: + "Server previously had access to voice channel activities and can bypass the boost level requirement", + HAS_DIRECTORY_ENTRY: "Guild is in a directory channel.", + HIDE_FROM_EXPERIMENT_UI: "Hide from experiemtn UI", + HUB: "[Student Hubs](https://dis.gd/studenthubs) contain a directory channel that let you find school-related, student-run servers for your school or university.", + INCREASED_THREAD_LIMIT: + "Allows the server to have 1,000+ active threads", + INTERNAL_EMPLOYEE_ONLY: + "Restricts the guild so that only users with the staff flag can join.", + INVITES_DISABLED: "Disabled invites", + INVITE_SPLASH: + "Ability to set a background image that will display on all invite links.", + LINKED_TO_HUB: "Linked to student hub", + MARKETPLACES_CONNECTION_ROLES: "Marketplace connection roles", + MEMBER_PROFILES: + "Allows members to customize their avatar, banner and bio for that server.", + MEMBER_SAFETY_PAGE_ROLLOUT: + "Assigns the experiment of the `Member Safety` panel and lockdowns to the guild", + MEMBER_VERIFICATION_GATE_ENABLED: + "Has member verification gate enabled, requiring new users to pass the verification gate before interacting with the server.", + MEMBER_VERIFICATION_MANUAL_APPROVAL: + "Member verification with manual approval", + MOBILE_WEB_ROLE_SUBSCRIPTION_PURCHASE_PAGE: + "Given to guilds previously in the `2022-05_mobile_web_role_subscription_purchase_page` experiment overrides", + MONETIZATION_ENABLED: "Monetization enabled", + MORE_EMOJI: + "Adds 150 extra emoji slots to each category (normal and animated emoji). Not used in server boosting.", + MORE_STICKERS: + "Adds 60 total sticker slots no matter how many it had before. Not used in server boosting.", + NEWS: "News", + NEW_THREAD_PERMISSIONS: + "Guild has [new thread permissions](https://support.discord.com/hc/en-us/articles/4403205878423#h_01FDGC4JW2D665Y230KPKWQZPN).", + PARTNERED: + "Partner badge near the server name and in mutual server lists.", + PREMIUM_TIER_3_OVERRIDE: "Forces the server to server boosting level 3", + PREVIEW_ENABLED: + "Allows a user to view the server without passing membership gating.", + PRIVATE_THREADS: "Private threads", + PRODUCTS_AVAILABLE_FOR_PURCHASE: + "Guild has server products available for purchase", + RAID_ALERTS_DISABLED: "Guild is opt-out from raid alerts", + RELAY_ENABLED: + "Shards connections to the guild to different nodes that relay information between each other.", + RESTRICT_SPAM_RISK_GUILDS: "Restrict spam risk", + ROLE_ICONS: "Ability to set an image or emoji as a role icon.", + ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE: + "Allows servers members to purchase role subscriptions.", + ROLE_SUBSCRIPTIONS_ENABLED: "Role subscription enabled", + ROLE_SUBSCRIPTIONS_ENABLED_FOR_PURCHASE: + "Monetizable role subscriptions enabled", + SHARD: "Shard (?)", + SHARED_CANVAS_FRIENDS_AND_FAMILY_TEST: + "Given to guilds previously in the `2023-01_shared_canvas` experiment overrides", + SOUNDBOARD: + "Given to guilds previously in the `2021-12_soundboard` experiment overrides", + SUMMARIES_DISABLED_BY_USER: "Summaries disbled", + SUMMARIES_ENABLED: + "Given to guilds in the `2023-02_p13n_summarization` experiment overrides", + SUMMARIES_ENABLED_BY_USER: "Summaries enabled", + SUMMARIES_ENABLED_GA: + "Given to guilds in the `2023-02_p13n_summarization` experiment overrides", + TEXT_IN_STAGE_ENABLED: "Text in stage enabled", + TEXT_IN_VOICE_ENABLED: "Text in voice channels enabled.", + THREADS_ENABLED: "Enabled threads early access.", + THREADS_ENABLED_TESTING: + "Threads-enabled testing. Used by bot developers to test their bots with threads in guilds with 5 or less members and a bot. ~~Also gives the premium thread features.~~", + THREADS_ONLY_CHANNEL: + "Threads-only channel. Given to guilds previously in the `2021-07_threads_only_channel` experiment overrides", + THREAD_DEFAULT_AUTO_ARCHIVE_DURATION: + "Unknown, presumably used for testing changes to the thread default auto archive duration.", + THREE_DAY_THREAD_ARCHIVE: + "Ability to have threads that archive after three days", + TICKETED_EVENTS_ENABLED: "Ticketed events enabled", + TICKETING_ENABLED: "Ticketing enabled", + VANITY_URL: + "Ability to set a vanity URL (custom discord.gg invite link).", + VERIFIED: + "Verification checkmark near the server name and in mutual server lists.", + VIP_REGIONS: + "~~Ability to use special voice regions with better stability: US East VIP, US West VIP, and Amsterdam VIP.~~ Deprecated, replaced with 384kbps max bitrate", + VOICE_CHANNEL_EFFECTS: + "Given to guilds previously in the `2022-06_voice_channel_effects` experiment overrides", + VOICE_IN_THREADS: "Voice in threads", + WELCOME_SCREEN_ENABLED: "Welcome screen enabled", + }); static readonly categories: { [category: string]: string } = Object.freeze({ Administration: "For server admins. Manage bans and channels.", @@ -290,38 +290,38 @@ export default class Constants { Fun: "Silly commands. Has avatar manipulation, games and more", Gambling: "Try your game at betting. Gain and lose. Lose a lot", Interactions: - "Put your feelings on display with kiss, or just hug, or something else?", + "Put your feelings on display with kiss, or just hug, or something else?", Images: "Spawn cute anime waifus!", Moderation: "Moderate the chat with clear, kick and savechat", NSFW: "🔞", "Owner only": - "**Bot owner only.** Manage the bot and execute dangerous commands", + "**Bot owner only.** Manage the bot and execute dangerous commands", Roles: "Create, edit and manage server roles, personal roles and more", "Server settings": "Configure the bot for your server", Utility: "Info, color, search, ping and much more.", }); static readonly channelTypes: { - [type in keyof typeof ChannelType]: string; - } = Object.freeze({ - AnnouncementThread: "Announcement thread", - DM: "DM", - GroupDM: "GroupDM", - GuildAnnouncement: "Guild announcements", - GuildCategory: "Category", - GuildDirectory: "Guild directory", - GuildForum: "Guild forum", - GuildMedia: "Guild media", - GuildNews: "News", - GuildNewsThread: "News thread", - GuildPrivateThread: "Private thread", - GuildPublicThread: "Public thread", - GuildStageVoice: "Stage", - GuildText: "Text", - GuildVoice: "Voice", - PrivateThread: "Private thread", - PublicThread: "Public thread", - }); + [type in keyof typeof ChannelType]: string; + } = Object.freeze({ + AnnouncementThread: "Announcement thread", + DM: "DM", + GroupDM: "GroupDM", + GuildAnnouncement: "Guild announcements", + GuildCategory: "Category", + GuildDirectory: "Guild directory", + GuildForum: "Guild forum", + GuildMedia: "Guild media", + GuildNews: "News", + GuildNewsThread: "News thread", + GuildPrivateThread: "Private thread", + GuildPublicThread: "Public thread", + GuildStageVoice: "Stage", + GuildText: "Text", + GuildVoice: "Voice", + PrivateThread: "Private thread", + PublicThread: "Public thread", + }); static readonly flags: { [index in UserFlagsString]: string } = Object.freeze({ @@ -351,17 +351,17 @@ export default class Constants { }); static readonly activityTypes: { - [index in BotSettings_ActivityType]: Exclude< - ActivityType, - ActivityType.Custom - >; - } = Object.freeze({ - PLAYING: ActivityType.Playing, - STREAMING: ActivityType.Streaming, - LISTENING: ActivityType.Listening, - WATCHING: ActivityType.Watching, - COMPETING: ActivityType.Competing, - }); + [index in BotSettings_ActivityType]: Exclude< + ActivityType, + ActivityType.Custom + >; + } = Object.freeze({ + PLAYING: ActivityType.Playing, + STREAMING: ActivityType.Streaming, + LISTENING: ActivityType.Listening, + WATCHING: ActivityType.Watching, + COMPETING: ActivityType.Competing, + }); static readonly MAGIC_NUMBERS = Object.freeze({ CACHE: { @@ -534,14 +534,14 @@ export default class Constants { static readonly KaikiBotASCII = "__/\\\\\\________/\\\\\\___________________________________________/\\\\\\\\\\\\\\\\\\\\\\\\\\_______________________________ \n" + - " _\\/\\\\\\_____/\\\\\\//________________________/\\\\\\_______________\\/\\\\\\/////////\\\\\\_____________________________ \n" + - " _\\/\\\\\\__/\\\\\\//_____________________/\\\\\\_\\/\\\\\\__________/\\\\\\_\\/\\\\\\_______\\/\\\\\\___________________/\\\\\\______ \n" + - " _\\/\\\\\\\\\\\\//\\\\\\______/\\\\\\\\\\\\\\\\\\____\\///__\\/\\\\\\\\\\\\\\\\____\\///__\\/\\\\\\\\\\\\\\\\\\\\\\\\\\\\______/\\\\\\\\\\_____/\\\\\\\\\\\\\\\\\\\\\\_ \n" + - " _\\/\\\\\\//_\\//\\\\\\____\\////////\\\\\\____/\\\\\\_\\/\\\\\\////\\\\\\___/\\\\\\_\\/\\\\\\/////////\\\\\\___/\\\\\\///\\\\\\__\\////\\\\\\////__ \n" + - " _\\/\\\\\\____\\//\\\\\\_____/\\\\\\\\\\\\\\\\\\\\__\\/\\\\\\_\\/\\\\\\\\\\\\\\\\/___\\/\\\\\\_\\/\\\\\\_______\\/\\\\\\__/\\\\\\__\\//\\\\\\____\\/\\\\\\______ \n" + - " _\\/\\\\\\_____\\//\\\\\\___/\\\\\\/////\\\\\\__\\/\\\\\\_\\/\\\\\\///\\\\\\___\\/\\\\\\_\\/\\\\\\_______\\/\\\\\\_\\//\\\\\\__/\\\\\\_____\\/\\\\\\_/\\\\__ \n" + - " _\\/\\\\\\______\\//\\\\\\_\\//\\\\\\\\\\\\\\\\/\\\\_\\/\\\\\\_\\/\\\\\\_\\///\\\\\\_\\/\\\\\\_\\/\\\\\\\\\\\\\\\\\\\\\\\\\\/___\\///\\\\\\\\\\/______\\//\\\\\\\\\\___ \n" + - " _\\///________\\///___\\////////\\//__\\///__\\///____\\///__\\///__\\/////////////_______\\/////_________\\/////____"; + " _\\/\\\\\\_____/\\\\\\//________________________/\\\\\\_______________\\/\\\\\\/////////\\\\\\_____________________________ \n" + + " _\\/\\\\\\__/\\\\\\//_____________________/\\\\\\_\\/\\\\\\__________/\\\\\\_\\/\\\\\\_______\\/\\\\\\___________________/\\\\\\______ \n" + + " _\\/\\\\\\\\\\\\//\\\\\\______/\\\\\\\\\\\\\\\\\\____\\///__\\/\\\\\\\\\\\\\\\\____\\///__\\/\\\\\\\\\\\\\\\\\\\\\\\\\\\\______/\\\\\\\\\\_____/\\\\\\\\\\\\\\\\\\\\\\_ \n" + + " _\\/\\\\\\//_\\//\\\\\\____\\////////\\\\\\____/\\\\\\_\\/\\\\\\////\\\\\\___/\\\\\\_\\/\\\\\\/////////\\\\\\___/\\\\\\///\\\\\\__\\////\\\\\\////__ \n" + + " _\\/\\\\\\____\\//\\\\\\_____/\\\\\\\\\\\\\\\\\\\\__\\/\\\\\\_\\/\\\\\\\\\\\\\\\\/___\\/\\\\\\_\\/\\\\\\_______\\/\\\\\\__/\\\\\\__\\//\\\\\\____\\/\\\\\\______ \n" + + " _\\/\\\\\\_____\\//\\\\\\___/\\\\\\/////\\\\\\__\\/\\\\\\_\\/\\\\\\///\\\\\\___\\/\\\\\\_\\/\\\\\\_______\\/\\\\\\_\\//\\\\\\__/\\\\\\_____\\/\\\\\\_/\\\\__ \n" + + " _\\/\\\\\\______\\//\\\\\\_\\//\\\\\\\\\\\\\\\\/\\\\_\\/\\\\\\_\\/\\\\\\_\\///\\\\\\_\\/\\\\\\_\\/\\\\\\\\\\\\\\\\\\\\\\\\\\/___\\///\\\\\\\\\\/______\\//\\\\\\\\\\___ \n" + + " _\\///________\\///___\\////////\\//__\\///__\\///____\\///__\\///__\\/////////////_______\\/////_________\\/////____"; static readonly colorTable: { [index in keyof ColorNames]: KaikiRGBA } = Object.freeze({ @@ -697,158 +697,158 @@ export default class Constants { }); static readonly hexColorTable: { - [index in keyof ColorNames]: HexColorString; - } = Object.freeze({ - aliceblue: "#f0f8ff", - antiquewhite: "#faebd7", - aqua: "#00ffff", - aquamarine: "#7fffd4", - azure: "#f0ffff", - beige: "#f5f5dc", - bisque: "#ffe4c4", - black: "#000001", - blanchedalmond: "#ffebcd", - blue: "#0000ff", - blueviolet: "#8a2be2", - brown: "#a52a2a", - burlywood: "#deb887", - cadetblue: "#5f9ea0", - chartreuse: "#7fff00", - chocolate: "#d2691e", - coral: "#ff7f50", - cornflowerblue: "#6495ed", - cornsilk: "#fff8dc", - crimson: "#dc143c", - cyan: "#00ffff", - darkblue: "#00008b", - darkcyan: "#008b8b", - darkgoldenrod: "#b8860b", - darkgray: "#a9a9a9", - darkgreen: "#006400", - darkgrey: "#a9a9a9", - darkkhaki: "#bdb76b", - darkmagenta: "#8b008b", - darkolivegreen: "#556b2f", - darkorange: "#ff8c00", - darkorchid: "#9932cc", - darkred: "#8b0000", - darksalmon: "#e9967a", - darkseagreen: "#8fbc8f", - darkslateblue: "#483d8b", - darkslategray: "#2f4f4f", - darkslategrey: "#2f4f4f", - darkturquoise: "#00ced1", - darkviolet: "#9400d3", - deeppink: "#ff1493", - deepskyblue: "#00bfff", - dimgray: "#696969", - dimgrey: "#696969", - dodgerblue: "#1e90ff", - firebrick: "#b22222", - floralwhite: "#fffaf0", - forestgreen: "#228b22", - fuchsia: "#ff00ff", - gainsboro: "#dcdcdc", - ghostwhite: "#f8f8ff", - gold: "#ffd700", - goldenrod: "#daa520", - gray: "#808080", - green: "#008000", - greenyellow: "#adff2f", - grey: "#808080", - honeydew: "#f0fff0", - hotpink: "#ff69b4", - indianred: "#cd5c5c", - indigo: "#4b0082", - ivory: "#fffff0", - khaki: "#f0e68c", - lavender: "#e6e6fa", - lavenderblush: "#fff0f5", - lawngreen: "#7cfc00", - lemonchiffon: "#fffacd", - lightblue: "#add8e6", - lightcoral: "#f08080", - lightcyan: "#e0ffff", - lightgoldenrodyellow: "#fafad2", - lightgray: "#d3d3d3", - lightgreen: "#90ee90", - lightgrey: "#d3d3d3", - lightpink: "#ffb6c1", - lightsalmon: "#ffa07a", - lightseagreen: "#20b2aa", - lightskyblue: "#87cefa", - lightslategray: "#778899", - lightslategrey: "#778899", - lightsteelblue: "#b0c4de", - lightyellow: "#ffffe0", - lime: "#00ff00", - limegreen: "#32cd32", - linen: "#faf0e6", - magenta: "#ff00ff", - maroon: "#800000", - mediumaquamarine: "#66cdaa", - mediumblue: "#0000cd", - mediumorchid: "#ba55d3", - mediumpurple: "#9370db", - mediumseagreen: "#3cb371", - mediumslateblue: "#7b68ee", - mediumspringgreen: "#00fa9a", - mediumturquoise: "#48d1cc", - mediumvioletred: "#c71585", - midnightblue: "#191970", - mintcream: "#f5fffa", - mistyrose: "#ffe4e1", - moccasin: "#ffe4b5", - navajowhite: "#ffdead", - navy: "#000080", - oldlace: "#fdf5e6", - olive: "#808000", - olivedrab: "#6b8e23", - orange: "#ffa500", - orangered: "#ff4500", - orchid: "#da70d6", - palegoldenrod: "#eee8aa", - palegreen: "#98fb98", - paleturquoise: "#afeeee", - palevioletred: "#db7093", - papayawhip: "#ffefd5", - peachpuff: "#ffdab9", - peru: "#cd853f", - pink: "#ffc0cb", - plum: "#dda0dd", - powderblue: "#b0e0e6", - purple: "#800080", - rebeccapurple: "#663399", - red: "#ff0000", - rosybrown: "#bc8f8f", - royalblue: "#4169e1", - saddlebrown: "#8b4513", - salmon: "#fa8072", - sandybrown: "#f4a460", - seagreen: "#2e8b57", - seashell: "#fff5ee", - sienna: "#a0522d", - silver: "#c0c0c0", - skyblue: "#87ceeb", - slateblue: "#6a5acd", - slategray: "#708090", - slategrey: "#708090", - snow: "#fffafa", - springgreen: "#00ff7f", - steelblue: "#4682b4", - tan: "#d2b48c", - teal: "#008080", - thistle: "#d8bfd8", - tomato: "#ff6347", - transparent: "#000000", - turquoise: "#40e0d0", - violet: "#ee82ee", - wheat: "#f5deb3", - white: "#ffffff", - whitesmoke: "#f5f5f5", - yellow: "#ffff00", - yellowgreen: "#9acd32", - }); + [index in keyof ColorNames]: HexColorString; + } = Object.freeze({ + aliceblue: "#f0f8ff", + antiquewhite: "#faebd7", + aqua: "#00ffff", + aquamarine: "#7fffd4", + azure: "#f0ffff", + beige: "#f5f5dc", + bisque: "#ffe4c4", + black: "#000001", + blanchedalmond: "#ffebcd", + blue: "#0000ff", + blueviolet: "#8a2be2", + brown: "#a52a2a", + burlywood: "#deb887", + cadetblue: "#5f9ea0", + chartreuse: "#7fff00", + chocolate: "#d2691e", + coral: "#ff7f50", + cornflowerblue: "#6495ed", + cornsilk: "#fff8dc", + crimson: "#dc143c", + cyan: "#00ffff", + darkblue: "#00008b", + darkcyan: "#008b8b", + darkgoldenrod: "#b8860b", + darkgray: "#a9a9a9", + darkgreen: "#006400", + darkgrey: "#a9a9a9", + darkkhaki: "#bdb76b", + darkmagenta: "#8b008b", + darkolivegreen: "#556b2f", + darkorange: "#ff8c00", + darkorchid: "#9932cc", + darkred: "#8b0000", + darksalmon: "#e9967a", + darkseagreen: "#8fbc8f", + darkslateblue: "#483d8b", + darkslategray: "#2f4f4f", + darkslategrey: "#2f4f4f", + darkturquoise: "#00ced1", + darkviolet: "#9400d3", + deeppink: "#ff1493", + deepskyblue: "#00bfff", + dimgray: "#696969", + dimgrey: "#696969", + dodgerblue: "#1e90ff", + firebrick: "#b22222", + floralwhite: "#fffaf0", + forestgreen: "#228b22", + fuchsia: "#ff00ff", + gainsboro: "#dcdcdc", + ghostwhite: "#f8f8ff", + gold: "#ffd700", + goldenrod: "#daa520", + gray: "#808080", + green: "#008000", + greenyellow: "#adff2f", + grey: "#808080", + honeydew: "#f0fff0", + hotpink: "#ff69b4", + indianred: "#cd5c5c", + indigo: "#4b0082", + ivory: "#fffff0", + khaki: "#f0e68c", + lavender: "#e6e6fa", + lavenderblush: "#fff0f5", + lawngreen: "#7cfc00", + lemonchiffon: "#fffacd", + lightblue: "#add8e6", + lightcoral: "#f08080", + lightcyan: "#e0ffff", + lightgoldenrodyellow: "#fafad2", + lightgray: "#d3d3d3", + lightgreen: "#90ee90", + lightgrey: "#d3d3d3", + lightpink: "#ffb6c1", + lightsalmon: "#ffa07a", + lightseagreen: "#20b2aa", + lightskyblue: "#87cefa", + lightslategray: "#778899", + lightslategrey: "#778899", + lightsteelblue: "#b0c4de", + lightyellow: "#ffffe0", + lime: "#00ff00", + limegreen: "#32cd32", + linen: "#faf0e6", + magenta: "#ff00ff", + maroon: "#800000", + mediumaquamarine: "#66cdaa", + mediumblue: "#0000cd", + mediumorchid: "#ba55d3", + mediumpurple: "#9370db", + mediumseagreen: "#3cb371", + mediumslateblue: "#7b68ee", + mediumspringgreen: "#00fa9a", + mediumturquoise: "#48d1cc", + mediumvioletred: "#c71585", + midnightblue: "#191970", + mintcream: "#f5fffa", + mistyrose: "#ffe4e1", + moccasin: "#ffe4b5", + navajowhite: "#ffdead", + navy: "#000080", + oldlace: "#fdf5e6", + olive: "#808000", + olivedrab: "#6b8e23", + orange: "#ffa500", + orangered: "#ff4500", + orchid: "#da70d6", + palegoldenrod: "#eee8aa", + palegreen: "#98fb98", + paleturquoise: "#afeeee", + palevioletred: "#db7093", + papayawhip: "#ffefd5", + peachpuff: "#ffdab9", + peru: "#cd853f", + pink: "#ffc0cb", + plum: "#dda0dd", + powderblue: "#b0e0e6", + purple: "#800080", + rebeccapurple: "#663399", + red: "#ff0000", + rosybrown: "#bc8f8f", + royalblue: "#4169e1", + saddlebrown: "#8b4513", + salmon: "#fa8072", + sandybrown: "#f4a460", + seagreen: "#2e8b57", + seashell: "#fff5ee", + sienna: "#a0522d", + silver: "#c0c0c0", + skyblue: "#87ceeb", + slateblue: "#6a5acd", + slategray: "#708090", + slategrey: "#708090", + snow: "#fffafa", + springgreen: "#00ff7f", + steelblue: "#4682b4", + tan: "#d2b48c", + teal: "#008080", + thistle: "#d8bfd8", + tomato: "#ff6347", + transparent: "#000000", + turquoise: "#40e0d0", + violet: "#ee82ee", + wheat: "#f5deb3", + white: "#ffffff", + whitesmoke: "#f5f5f5", + yellow: "#ffff00", + yellowgreen: "#9acd32", + }); static readonly LINKS = Object.freeze({ REPO_URL: "https://github.com/cataclym/KaikiBot.git", diff --git a/src/struct/ErrorHandler.ts b/src/struct/ErrorHandler.ts index 71857cce..12f5790a 100644 --- a/src/struct/ErrorHandler.ts +++ b/src/struct/ErrorHandler.ts @@ -1,4 +1,3 @@ -import { container } from "@sapphire/framework"; import process from "process"; process.on("unhandledRejection", (reason: Error, promise) => diff --git a/src/struct/db/Provider.ts b/src/struct/db/Provider.ts index ba1064c4..2239cd1d 100644 --- a/src/struct/db/Provider.ts +++ b/src/struct/db/Provider.ts @@ -6,65 +6,65 @@ export abstract class Provider { protected constructor() { /** - * Cached entries. - * @type {Collection} - */ + * Cached entries. + * @type {Collection} + */ this.items = new Collection(); } - /** - * Initializes the provider. - * @abstract - * @returns {Promise} - */ - abstract init(): Promise; + /** + * Initializes the provider. + * @abstract + * @returns {Promise} + */ + abstract init(): Promise; - /** - * Gets a value. - * @abstract - * @param {string} id - ID of entry. - * @param {string} key - The key to get. - * @param {any} [defaultValue] - Default value if not found or null. - * @returns {any} - */ - abstract get(id: string, key: string, defaultValue?: any): T; + /** + * Gets a value. + * @abstract + * @param {string} id - ID of entry. + * @param {string} key - The key to get. + * @param {any} [defaultValue] - Default value if not found or null. + * @returns {any} + */ + abstract get(id: string, key: string, defaultValue?: any): T; - /** - * Sets a value. - * @abstract - * @param {string} id - ID of entry. - * @param {string} key - The key to set. - * @param {any} value - The value. - * @returns {any} - */ - abstract set( - id: string, - key: string, - value: any - ): Promise<[QueryResult, FieldPacket[]]>; + /** + * Sets a value. + * @abstract + * @param {string} id - ID of entry. + * @param {string} key - The key to set. + * @param {any} value - The value. + * @returns {any} + */ + abstract set( + id: string, + key: string, + value: any + ): Promise<[QueryResult, FieldPacket[]]>; - /** - * Deletes a value. - * @abstract - * @param {string} id - ID of entry. - * @param {string} key - The key to delete. - * @returns {any} - */ - abstract delete(id: string, key: string): any; + /** + * Deletes a value. + * @abstract + * @param {string} id - ID of entry. + * @param {string} key - The key to delete. + * @returns {any} + */ + abstract delete(id: string, key: string): any; - /** - * Clears an entry. - * @abstract - * @param {string} id - ID of entry. - * @returns {any} - */ - abstract clear(id: string): any; + /** + * Clears an entry. + * @abstract + * @param {string} id - ID of entry. + * @returns {any} + */ + abstract clear(id: string): any; } /** * Options to use for providers. */ export type ProviderOptions = { - idColumn: string | "Id"; - dataColumn?: string; + idColumn: string | "Id"; + dataColumn?: string; }; diff --git a/tsconfig.json b/tsconfig.json index 382aef02..3ba6d03b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,20 +1,20 @@ { - "compilerOptions": { - "rootDir": "src", - "outDir": "dist", - "baseUrl": ".", - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "module": "NodeNext", - "moduleResolution": "NodeNext", - "noImplicitAny": true, - "resolveJsonModule": true, - "sourceMap": true, - "strictNullChecks": true, - "target": "ESNext", - "types": ["node"], - "declaration": false, - "emitDecoratorMetadata": true, - "experimentalDecorators": true - } + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "baseUrl": ".", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "module": "NodeNext", + "moduleResolution": "NodeNext", + "noImplicitAny": true, + "resolveJsonModule": true, + "sourceMap": true, + "strictNullChecks": true, + "target": "ESNext", + "types": ["node"], + "declaration": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true + } } From 670b42c9e70e837696167278c2efe7286a43a5a1 Mon Sep 17 00:00:00 2001 From: Cata Date: Mon, 24 Jun 2024 10:47:13 +0800 Subject: [PATCH 12/44] Fixes: Show correct error lines + stop registering slash command twice --- package.json | 4 +-- src/commands/Owner only/bettest.ts | 57 ++++++++++++++---------------- src/data/fastfetch.jsonc | 0 src/lib/ServerConfig/Config.ts | 3 -- 4 files changed, 29 insertions(+), 35 deletions(-) create mode 100644 src/data/fastfetch.jsonc diff --git a/package.json b/package.json index 066afe88..446fa976 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "node-gyp": "^10.1.0", "prisma": "^5.10.2", "sharp": "^0.33.3", + "source-map-support": "^0.5.21", "utf-8-validate": "^6.0.3", "zlib-sync": "^0.1.9" }, @@ -49,8 +50,7 @@ "eslint": "^8.57.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", - "typescript": "^5.4.5", - "source-map-support": "^0.5.21" + "typescript": "^5.4.5" }, "description": "Discord bot built with Sapphire, Prisma and MySQL2", "repository": { diff --git a/src/commands/Owner only/bettest.ts b/src/commands/Owner only/bettest.ts index 76c492fe..789cac7c 100644 --- a/src/commands/Owner only/bettest.ts +++ b/src/commands/Owner only/bettest.ts @@ -12,9 +12,8 @@ import SlotsCommand, { SlotResult, Slots } from "../Gambling/slots"; @ApplyOptions({ name: "bettest", - usage: ["br 100", "bf 2000"], - description: - "Tests gambling commands by running them specified amounts of times.", + usage: ["br 100", "bf 2000", "slots 100000"], + description: "Tests gambling commands by running them specified amounts of times.", preconditions: ["OwnerOnly"], }) export default class BetTest extends KaikiCommand { @@ -62,7 +61,7 @@ export default class BetTest extends KaikiCommand { return message.channel.send({ embeds: [ new EmbedBuilder() - .setTitle("Betting Test") + .setTitle(`Bettest ${BetTest.bettestNames[gambling]}`) .setDescription(str) .withOkColor(message), ], @@ -70,12 +69,9 @@ export default class BetTest extends KaikiCommand { } static SlotsStr(results: Array<[Slots, SlotResult, bigint]>): string { - const collectionSize = results.length; - - const totalSpent = BigInt(collectionSize * 100); - const winnings = BigInt(results.map((x) => x[2]).reduce((a, b) => a + b)); - - const none = results.filter((x) => x[0] === Slots.x0).length, + const collectionSize = results.length, totalSpent = BigInt(collectionSize * 100), + winnings = BigInt(results.map((x) => x[2]).reduce((a, b) => a + b)), + none = results.filter((x) => x[0] === Slots.x0).length, ten = results.filter((x) => x[0] === Slots.x10).length, thirty = results.filter((x) => x[0] === Slots.x30).length; @@ -83,36 +79,32 @@ export default class BetTest extends KaikiCommand { x**10** - ${ten} ${BetTest.calcPercentage(ten, collectionSize)} x**30** - ${thirty} ${BetTest.calcPercentage(thirty, collectionSize)} -Total bet: **${totalSpent}** -Payout: **${winnings}** \`${Number((winnings * 100n) / totalSpent).toFixed(2)}%\` -Difference: **${winnings - totalSpent}** +${BetTest.betStatsStr(totalSpent, winnings)} `; } - static betRollStr(results: Array<[BetRoll, number, bigint]>): string { - const collectionSize = results.length; + private static bettestNames: { [Property in GamblingCommands]: string } = { + 0: "Betroll", + 1: "Betflip", + 2: "Slots", + } - const loss = results + static betRollStr(results: Array<[BetRoll, number, bigint]>): string { + // 100 is the fixed amount set in bettests + const collectionSize = results.length, loss = results .map((x) => x[0]) - .filter((x) => x === BetRoll.None).length, - double = results.filter((x) => x[0] === BetRoll.Double).length, + .filter((x) => x === BetRoll.None).length, double = results.filter((x) => x[0] === BetRoll.Double).length, quadruple = results.filter( (x) => x[0] === BetRoll.Quadruple - ).length, - ten = results.filter((x) => x[0] === BetRoll.Ten).length; - - const winnings = results.map((x) => x[2]).reduce((a, b) => a + b); - // 100 is the fixed amount set in bettests - const totalSpent = BigInt(collectionSize * 100); + ).length, ten = results.filter((x) => x[0] === BetRoll.Ten).length, + winnings = results.map((x) => x[2]).reduce((a, b) => a + b), totalSpent = BigInt(collectionSize * 100); return `* x**10** - ${ten} ${BetTest.calcPercentage(ten, collectionSize)} * x**4** - ${quadruple} ${BetTest.calcPercentage(quadruple, collectionSize)} * x**2** - ${double} ${BetTest.calcPercentage(double, collectionSize)} * **Loss** - ${loss} ${BetTest.calcPercentage(loss, collectionSize)} -Total bet: **${totalSpent}** -Payout: **${winnings}** \`${Number((winnings * 100n) / totalSpent).toFixed(2)}%\` -Difference: **${winnings - totalSpent}** +${BetTest.betStatsStr(totalSpent, winnings)} `; } @@ -120,16 +112,21 @@ Difference: **${winnings - totalSpent}** const collectionSize = results.length, heads = results.filter(([sides]) => sides === Sides.heads).length, tails = results.length - heads, winnings = results.map((x) => x[1]).reduce((a, b) => a + b), totalSpent = BigInt(collectionSize * 100); + return `* Tails - ${tails} ${BetTest.calcPercentage(tails, collectionSize)} * Heads - ${heads} ${BetTest.calcPercentage(heads, collectionSize)} -Total bet: **${totalSpent}** -Payout: **${winnings}** \`${Number((winnings * 100n) / totalSpent).toFixed(2)}%\` -Difference: **${winnings - totalSpent}** +${BetTest.betStatsStr(totalSpent, winnings)} `; } private static calcPercentage(part: number, collectionSize: number) { return `\`${((part / collectionSize) * 100).toFixed(2)}%\``; } + + private static betStatsStr(totalSpent: bigint, winnings: bigint) { + return `Total bet: **${totalSpent}** +Payout: **${winnings}** \`${Number((winnings * 100n) / totalSpent).toFixed(2)}%\` +Difference: **${winnings - totalSpent}**` + } } diff --git a/src/data/fastfetch.jsonc b/src/data/fastfetch.jsonc new file mode 100644 index 00000000..e69de29b diff --git a/src/lib/ServerConfig/Config.ts b/src/lib/ServerConfig/Config.ts index 7b5cbd63..a9fc9818 100644 --- a/src/lib/ServerConfig/Config.ts +++ b/src/lib/ServerConfig/Config.ts @@ -47,9 +47,6 @@ export default class Config { "DadBot", true ); - await message.guild?.commands.create( - SlashCommandsLib.excludeData - ); embed .setTitle( From fdf453c9f1f94426991dffb044d9ccf464a13002 Mon Sep 17 00:00:00 2001 From: Cata Date: Mon, 24 Jun 2024 11:53:19 +0800 Subject: [PATCH 13/44] Changed: neofetch command is compatible with fastfetch --- Dockerfile | 2 +- Dockerfile.dev | 2 +- external/fastfetch.jsonc | 5 +++++ src/commands/Fun/neofetch.ts | 14 +++++++++++--- src/data/fastfetch.jsonc | 0 src/lib/Kaiki/KaikiSapphireClient.ts | 16 ++++++++++------ src/struct/Constants.ts | 2 ++ 7 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 external/fastfetch.jsonc delete mode 100644 src/data/fastfetch.jsonc diff --git a/Dockerfile b/Dockerfile index 11485585..6475bf75 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM node:18 LABEL authors="Ole" WORKDIR /kaikibot -RUN apt update && apt install neofetch -y +RUN apt update && apt install https://github.com/fastfetch-cli/fastfetch/releases/latest/download/fastfetch-linux-amd64.deb -y COPY package*.json . RUN npm install COPY prisma . diff --git a/Dockerfile.dev b/Dockerfile.dev index ea571de9..42261315 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -2,7 +2,7 @@ FROM node:18 LABEL authors="Ole" WORKDIR /usr/app -RUN apt update && apt install neofetch -y +RUN apt update && curl -sLO https://github.com/fastfetch-cli/fastfetch/releases/latest/download/fastfetch-linux-amd64.deb && dpkg -i fastfetch-linux-amd64.deb COPY package*.json ./ RUN npm install COPY prisma . diff --git a/external/fastfetch.jsonc b/external/fastfetch.jsonc new file mode 100644 index 00000000..4b7bf09a --- /dev/null +++ b/external/fastfetch.jsonc @@ -0,0 +1,5 @@ + +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "modules": [] +} \ No newline at end of file diff --git a/src/commands/Fun/neofetch.ts b/src/commands/Fun/neofetch.ts index 8c732701..44f0eb6b 100644 --- a/src/commands/Fun/neofetch.ts +++ b/src/commands/Fun/neofetch.ts @@ -21,6 +21,9 @@ import Constants from "../../struct/Constants"; flags: ["list"], }) export default class NeofetchCommand extends KaikiCommand { + + public static usingFastFetch = true; + private static neofetchArgument = Args.make((parameter) => { const success = distros.find((str) => { const k = str.toLowerCase(); @@ -75,13 +78,15 @@ export default class NeofetchCommand extends KaikiCommand { } return sendPaginatedMessage(message, pages, {}); } else { - let cmd = `neofetch -L --ascii_distro ${os}|sed 's/\x1B\\[[0-9;?]*[a-zA-Z]//g'`; + let cmd = `neofetch -L --ascii_distro ${os}|sed 's/\x1B\\[[0-9;?]*[a-zA-Z]//g'`; const { platform } = process; if (!os && platform !== "win32") cmd = "neofetch -L | sed 's/\x1B\\[[0-9;\\?]*[a-zA-Z]//g'"; + if (NeofetchCommand.usingFastFetch) cmd = `fastfetch --config external/fastfetch.jsonc -l ${os}`; + exec(cmd, async (error, stdout, stderr) => { if (error || stderr) { return this.container.logger.error(error); @@ -89,10 +94,13 @@ export default class NeofetchCommand extends KaikiCommand { return message.channel.send( await KaikiUtil.codeblock( "\u00AD" + - stdout.replace( + stdout.replace( /```/g, "\u0300`\u0300`\u0300`\u0300" - ) + ).replace( + Constants.NeoFetchRegExp, + "" + ) ) ); }); diff --git a/src/data/fastfetch.jsonc b/src/data/fastfetch.jsonc deleted file mode 100644 index e69de29b..00000000 diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index d0596fa0..23194263 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -32,6 +32,7 @@ import KaikiClientInterface from "./KaikiClientInterface"; import fs from "fs/promises"; import { container } from "@sapphire/pieces"; import { createDjsClient } from "discordbotlist-djs"; +import NeofetchCommand from "../../commands/Fun/neofetch"; export default class KaikiSapphireClient extends SapphireClient @@ -351,14 +352,17 @@ export default class KaikiSapphireClient ); } - // Check if 'neofetch' is available + // Check if 'neofetch/fastfetch' is available try { - execSync("command -v neofetch >/dev/null 2>&1"); + execSync("command -v fastfetch >/dev/null 2>&1"); } catch { - await commandStore.unload("neofetch"); - this.logger.warn( - "Neofetch wasn't detected! Neofetch command will be disabled." - ); + try { + execSync("command -v neofetch >/dev/null 2>&1"); + } catch { + await commandStore.unload("neofetch"); + this.logger.warn("Neofetch or fastfetch wasn't detected! Neofetch command will be disabled."); + } + NeofetchCommand.usingFastFetch = false; } } diff --git a/src/struct/Constants.ts b/src/struct/Constants.ts index c751ab24..32434b38 100644 --- a/src/struct/Constants.ts +++ b/src/struct/Constants.ts @@ -854,4 +854,6 @@ export default class Constants { REPO_URL: "https://github.com/cataclym/KaikiBot.git", GUIDE: "https://github.com/cataclym/KaikiBot/blob/master/docs/GUIDE.md", }); + // eslint-disable-next-line no-control-regex + static NeoFetchRegExp = new RegExp(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g); } From 7ed70ba7bbb04a5deb582f79828c488ec6abe565 Mon Sep 17 00:00:00 2001 From: Cata Date: Mon, 24 Jun 2024 22:10:18 +0800 Subject: [PATCH 14/44] Fix: docker build --- Dockerfile | 2 +- src/lib/Games/TTT.ts | 37 ++++++++++++++++++------------------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6475bf75..11b6b639 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM node:18 LABEL authors="Ole" WORKDIR /kaikibot -RUN apt update && apt install https://github.com/fastfetch-cli/fastfetch/releases/latest/download/fastfetch-linux-amd64.deb -y +RUN apt update && curl -sLO https://github.com/fastfetch-cli/fastfetch/releases/latest/download/fastfetch-linux-amd64.deb && dpkg -i fastfetch-linux-amd64.deb COPY package*.json . RUN npm install COPY prisma . diff --git a/src/lib/Games/TTT.ts b/src/lib/Games/TTT.ts index 5112175e..9514f4cb 100644 --- a/src/lib/Games/TTT.ts +++ b/src/lib/Games/TTT.ts @@ -1,19 +1,6 @@ import { EmbedBuilder, GuildMember, Message } from "discord.js"; import Constants from "../../struct/Constants"; -const numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]; -const winningCombos = [ - [0, 1, 2], - [3, 4, 5], - [6, 7, 8], - [0, 3, 6], - [1, 4, 7], - [2, 5, 8], - [0, 4, 8], - [2, 4, 6], -]; - -const drawMessage = "Game ended in a draw!"; type PlayerType = { player: GuildMember; color: string; sign: string }; export default class TicTacToe { @@ -22,13 +9,25 @@ export default class TicTacToe { currentPlayer: PlayerType; message: Message; embed: Promise; - moves?: PlayerType[]; currentPlayerTurn: (p: GuildMember, m: Message) => Promise; winningMessage: (p: GuildMember) => string; timedWinMessage: (p: GuildMember) => string; stateDict: { [index: number]: string }; active: boolean; + static drawMessage = "Game ended in a draw!"; + static numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]; + static winningCombos = [ + [0, 1, 2], + [3, 4, 5], + [6, 7, 8], + [0, 3, 6], + [1, 4, 7], + [2, 5, 8], + [0, 4, 8], + [2, 4, 6], + ]; + /** * Initializes a TicTacToe game. * @param playerOne @type {GuildMember} @@ -98,11 +97,11 @@ export default class TicTacToe { const { player } = playerObject; const filter = (m: Message) => - numbers.includes(m.content) && m.member?.id === player.id; + TicTacToe.numbers.includes(m.content) && m.member?.id === player.id; this.message.channel .awaitMessages({ - filter: filter, + filter, max: 1, time: 20000, errors: ["time"], @@ -120,7 +119,7 @@ export default class TicTacToe { private async input(playerObject: PlayerType, m: Message) { const { player, sign } = playerObject; - if (!numbers.includes(m.content.trim())) { + if (!TicTacToe.numbers.includes(m.content.trim())) { await m.delete(); return this.awaitInput(playerObject); } @@ -168,7 +167,7 @@ export default class TicTacToe { } private checkWin(value: string) { - return winningCombos.some((arr) => { + return TicTacToe.winningCombos.some((arr) => { return arr.every((num) => this.stateDict[num] === value); }); } @@ -200,7 +199,7 @@ export default class TicTacToe { private tie() { if (this.active) { this.active = false; - return this.message.channel.send(drawMessage); + return this.message.channel.send(TicTacToe.drawMessage); } } } From 81aa556f41ac8db94646c1b45723a5d0552a2ca6 Mon Sep 17 00:00:00 2001 From: Cata Date: Sat, 29 Jun 2024 12:32:28 +0800 Subject: [PATCH 15/44] Added policies to help cmd --- README.md | 2 +- docs/ABOUT.md | 17 ----------------- package-lock.json | 7 ++----- src/commands/Utility/help.ts | 6 ++++++ src/extensions/Discord.ts | 1 - src/struct/Constants.ts | 2 ++ 6 files changed, 11 insertions(+), 24 deletions(-) delete mode 100644 docs/ABOUT.md diff --git a/README.md b/README.md index 8977b2a5..ecce190d 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Consider contributing! I appreciate all the help I can get. ### Upcoming plans * Rework todo (TodoRework branch) -* Serve/Update commandlist to website automatically +* Serve and Update commandlist to website automatically --- diff --git a/docs/ABOUT.md b/docs/ABOUT.md deleted file mode 100644 index 1e8a334c..00000000 --- a/docs/ABOUT.md +++ /dev/null @@ -1,17 +0,0 @@ -# About - -### I owe some amazing people thanks, and more! - -- Huge thanks to @Arvfitii for helping me whenever im in need! -- Thanks to @rjt-rockx on Discord for so much help and time! -- Should also mention @shivaco for help <3 -- Thanks also to @Kwoth <3 - -### A bit about this project - -This project was my first entry into FOSS and programming/coding overall. - -It has been very fun and also frustrating. - -If you do find unoptimized code and or flaws or other inherently bad code - I would be very happy to merge changes and -try to learn from my own mistakes. Commenting the code helps! I will try to do so as well. diff --git a/package-lock.json b/package-lock.json index d679b72c..b298d286 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "node-gyp": "^10.1.0", "prisma": "^5.10.2", "sharp": "^0.33.3", + "source-map-support": "^0.5.21", "utf-8-validate": "^6.0.3", "zlib-sync": "^0.1.9" }, @@ -34,7 +35,6 @@ "eslint": "^8.57.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", - "source-map-support": "^0.5.21", "typescript": "^5.4.5" }, "engines": { @@ -1751,8 +1751,7 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/bufferutil": { "version": "4.0.8", @@ -5016,7 +5015,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5025,7 +5023,6 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" diff --git a/src/commands/Utility/help.ts b/src/commands/Utility/help.ts index c9b14145..95a3b5db 100644 --- a/src/commands/Utility/help.ts +++ b/src/commands/Utility/help.ts @@ -4,6 +4,7 @@ import { EmbedBuilder, Message } from "discord.js"; import { Subcommand } from "@sapphire/plugin-subcommands"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import Constants from "../../struct/Constants"; @ApplyOptions({ name: "help", @@ -40,6 +41,11 @@ export default class HelpCommand extends KaikiCommand { value: `\`${prefix}help [command]\` to get more help. Example: \`${prefix}help ping\``, inline: false, }, + { + name: "Policies", + value: `[Privacy policy](${Constants.LINKS.PRIVACY_POLICY}) | [Terms of Use](${Constants.LINKS.TERMS_OF_USE})` + + } ]) .setAuthor({ name: `${name} v${version}`, diff --git a/src/extensions/Discord.ts b/src/extensions/Discord.ts index ab57d5a5..c2b73da5 100644 --- a/src/extensions/Discord.ts +++ b/src/extensions/Discord.ts @@ -1,5 +1,4 @@ import { - ColorResolvable, EmbedBuilder, Guild, GuildMember, diff --git a/src/struct/Constants.ts b/src/struct/Constants.ts index 32434b38..20da7f4e 100644 --- a/src/struct/Constants.ts +++ b/src/struct/Constants.ts @@ -853,6 +853,8 @@ export default class Constants { static readonly LINKS = Object.freeze({ REPO_URL: "https://github.com/cataclym/KaikiBot.git", GUIDE: "https://github.com/cataclym/KaikiBot/blob/master/docs/GUIDE.md", + PRIVACY_POLICY: "https://kaikibot.xyz/privacy", + TERMS_OF_USE: "https://kaikibot.xyz/terms" }); // eslint-disable-next-line no-control-regex static NeoFetchRegExp = new RegExp(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g); From 345d4654635633018664da56c8286255e92102ed Mon Sep 17 00:00:00 2001 From: Cata Date: Sat, 29 Jun 2024 12:33:12 +0800 Subject: [PATCH 16/44] 6.1.18 --- CHANGELOG.md | 14 +++++++++++++- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e20057e..5ed77a1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.17](https://github.com/cataclym/KaikiBot/compare/v6.1.16...v6.1.17) +## [v6.1.18](https://github.com/cataclym/KaikiBot/compare/v6.1.17...v6.1.18) + +### Merged + +- Add bettest [`#56`](https://github.com/cataclym/KaikiBot/pull/56) + +### Commits + +- Addresses CVE-2024-21512 [`c6db5c7`](https://github.com/cataclym/KaikiBot/commit/c6db5c7ab734bc223c2e9f9560c0a161a05bd409) +- Fixes: Show correct error lines + stop registering slash command twice [`670b42c`](https://github.com/cataclym/KaikiBot/commit/670b42c9e70e837696167278c2efe7286a43a5a1) +- Changed: neofetch command is compatible with fastfetch [`fdf453c`](https://github.com/cataclym/KaikiBot/commit/fdf453c9f1f94426991dffb044d9ccf464a13002) + +## [v6.1.17](https://github.com/cataclym/KaikiBot/compare/v6.1.16...v6.1.17) - 2024-05-28 ### Commits diff --git a/package-lock.json b/package-lock.json index b298d286..a42e2a3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kaikideishubot", - "version": "6.1.17", + "version": "6.1.18", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kaikideishubot", - "version": "6.1.17", + "version": "6.1.18", "license": "MIT", "dependencies": { "@prisma/client": "^5.10.2", diff --git a/package.json b/package.json index 446fa976..23f28819 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kaikideishubot", - "version": "6.1.17", + "version": "6.1.18", "main": "./dist/index.js", "scripts": { "start_docker": "npx prisma db push && npm run start", From b7059ba09a9565dd82d945938721722fbd2a23e6 Mon Sep 17 00:00:00 2001 From: Cata Date: Sat, 29 Jun 2024 23:38:01 +0800 Subject: [PATCH 17/44] Removed unused privileged intent --- src/commands/Administration/ban.ts | 2 +- src/lib/Kaiki/KaikiSapphireClient.ts | 6 +-- src/listeners/nonPrefixedMessage.ts | 63 +++++----------------------- 3 files changed, 13 insertions(+), 58 deletions(-) diff --git a/src/commands/Administration/ban.ts b/src/commands/Administration/ban.ts index 8a96edfa..c65ac46a 100644 --- a/src/commands/Administration/ban.ts +++ b/src/commands/Administration/ban.ts @@ -15,7 +15,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; }) export default class BanCommand extends KaikiCommand { public async messageRun(message: Message, args: Args) { - // Using both user and member to be able to user username as well as ids. + // Using both user and member to be able to use username as well as ids. const user = await Promise.resolve( args.pick("user").catch(async () => args.pick("member")) ); diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index 23194263..e07e0777 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -65,7 +65,6 @@ export default class KaikiSapphireClient GatewayIntentBits.GuildMembers, GatewayIntentBits.GuildMessageReactions, GatewayIntentBits.GuildMessages, - GatewayIntentBits.GuildPresences, GatewayIntentBits.GuildWebhooks, GatewayIntentBits.Guilds, GatewayIntentBits.MessageContent, @@ -340,10 +339,7 @@ export default class KaikiSapphireClient async filterOptionalCommands() { const commandStore = this.stores.get("commands"); - if ( - !process.env.KAWAIIKEY || - process.env.KAWAIIKEY === "[YOUR_OPTIONAL_KAWAII_KEY]" - ) { + if (!process.env.KAWAIIKEY || process.env.KAWAIIKEY === "[YOUR_OPTIONAL_KAWAII_KEY]") { for (const entry of ["run", "peek", "pout", "lick"]) { await commandStore.unload(entry); } diff --git a/src/listeners/nonPrefixedMessage.ts b/src/listeners/nonPrefixedMessage.ts index f8126c5d..a5819737 100644 --- a/src/listeners/nonPrefixedMessage.ts +++ b/src/listeners/nonPrefixedMessage.ts @@ -11,60 +11,19 @@ import KaikiUtil from "../lib/KaikiUtil"; }) export default class NonPrefixedMessage extends Listener { public async run(message: Message) { - if (message.inGuild()) { - let promise; + if (!message.inGuild()) return; + + let promise; - if (!message.client.cache.emoteReactCache.has(message.guildId)) { - promise = KaikiCache.populateERCache(message); - } - - await Promise.all([ - promise, - DadBot.run(message), - Emotes.countEmotes(message), - message.client.cache.emoteReact(message), - ]); - } else { - return this.sendDM(message); - } - } - - private async sendDM(message: Message): Promise { - if (message.author === message.client.owner) return; - - let attachmentLinks = ""; - message.client.logger.info( - `Message | DM from ${message.author.username} [${message.author.id}]` - ); - - const embed = new EmbedBuilder({ - author: { - name: `${message.author.username} [${message.author.id}]`, - }, - description: KaikiUtil.trim(message.content, 2048), - }).withOkColor(); - - // Attachments lol - const { attachments } = message; - - if (attachments.first()) { - const urls: string[] = attachments.map((a) => a.url); - - const restLinks = [...urls]; - restLinks.shift(); - attachmentLinks = restLinks.join("\n"); - - const firstAttachment = attachments.first()?.url as string; - - embed - .setImage(firstAttachment) - .setTitle(firstAttachment) - .setFooter({ text: urls.join("\n") }); + if (!message.client.cache.emoteReactCache.has(message.guildId)) { + promise = KaikiCache.populateERCache(message); } - return message.client.owner.send({ - content: attachmentLinks ?? undefined, - embeds: [embed], - }); + await Promise.all([ + promise, + DadBot.run(message), + Emotes.countEmotes(message), + message.client.cache.emoteReact(message), + ]); } } From a31d9dbd3019ee5cc4e563c423df3ba03b8ebf75 Mon Sep 17 00:00:00 2001 From: Cata Date: Sat, 29 Jun 2024 23:38:53 +0800 Subject: [PATCH 18/44] 6.1.19 --- CHANGELOG.md | 8 +++++++- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ed77a1d..b85bd019 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.18](https://github.com/cataclym/KaikiBot/compare/v6.1.17...v6.1.18) +## [v6.1.19](https://github.com/cataclym/KaikiBot/compare/v6.1.18...v6.1.19) + +### Commits + +- Removed unused privileged intent [`b7059ba`](https://github.com/cataclym/KaikiBot/commit/b7059ba09a9565dd82d945938721722fbd2a23e6) + +## [v6.1.18](https://github.com/cataclym/KaikiBot/compare/v6.1.17...v6.1.18) - 2024-06-29 ### Merged diff --git a/package-lock.json b/package-lock.json index a42e2a3f..db7c402f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kaikideishubot", - "version": "6.1.18", + "version": "6.1.19", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kaikideishubot", - "version": "6.1.18", + "version": "6.1.19", "license": "MIT", "dependencies": { "@prisma/client": "^5.10.2", diff --git a/package.json b/package.json index 23f28819..bb354744 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kaikideishubot", - "version": "6.1.18", + "version": "6.1.19", "main": "./dist/index.js", "scripts": { "start_docker": "npx prisma db push && npm run start", From 4148b5b6a586678c9adf0f9c0a5fe4a8625d8043 Mon Sep 17 00:00:00 2001 From: Cata Date: Sun, 30 Jun 2024 13:46:30 +0800 Subject: [PATCH 19/44] Updated user number strings; Removed broken animequote cmd --- src/commands/Anime/animeQuote.ts | 48 ---------------------------- src/commands/Gambling/daily.ts | 4 +-- src/commands/Utility/stats.ts | 2 +- src/lib/APIs/animeQuote.ts | 19 ----------- src/lib/Cache/KaikiCache.ts | 5 +-- src/lib/Kaiki/KaikiSapphireClient.ts | 16 +++++++--- src/lib/ServerConfig/Config.ts | 1 - src/lib/Types/Miscellaneous.ts | 11 ++----- src/listeners/guildCreate.ts | 8 ++--- 9 files changed, 21 insertions(+), 93 deletions(-) delete mode 100644 src/commands/Anime/animeQuote.ts delete mode 100644 src/lib/APIs/animeQuote.ts diff --git a/src/commands/Anime/animeQuote.ts b/src/commands/Anime/animeQuote.ts deleted file mode 100644 index 5281d393..00000000 --- a/src/commands/Anime/animeQuote.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { ApplyOptions } from "@sapphire/decorators"; -import { Message } from "discord.js"; -import { sendQuote } from "../../lib/APIs/animeQuote"; -import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; -import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; -import { AnimeQuoteResponse } from "../../lib/Types/Miscellaneous"; -import { UserError } from "@sapphire/framework"; - -@ApplyOptions({ - name: "animequote", - aliases: ["aq"], - usage: "", - description: "Shows a random anime quote...", - typing: true, -}) -export default class AnimeQuoteCommand extends KaikiCommand { - public async messageRun(message: Message): Promise { - const { animeQuoteCache } = this.client.cache; - - let resp = await fetch("https://animechan.xyz/api/random").catch( - (err) => this.getCachedResponse(err) - ); - - if (!resp?.ok) { - resp = this.getCachedResponse(resp); - } - const quoteData = await resp.json(); - - if (!animeQuoteCache.has(quoteData.character)) - animeQuoteCache.set(quoteData.character, quoteData); - - return sendQuote(quoteData, message); - } - - private getCachedResponse(err: Response) { - const { animeQuoteCache } = this.client.cache; - - this.container.logger.warn(`Animequote received no data: ${err}`); - - if (animeQuoteCache.size) - return new Response(JSON.stringify(animeQuoteCache.random())); - - throw new UserError({ - message: "No quotes received, try again at another time.", - identifier: "NoAnimeQuotes", - }); - } -} diff --git a/src/commands/Gambling/daily.ts b/src/commands/Gambling/daily.ts index 12b9a0c6..9edc440d 100644 --- a/src/commands/Gambling/daily.ts +++ b/src/commands/Gambling/daily.ts @@ -57,7 +57,7 @@ export default class ClaimDailyCommand extends KaikiCommand { embeds: [ new EmbedBuilder() .setDescription( - `**${message.author.username}**, You've just claimed your daily allowance!\n+**${amount}** ${this.client.money.currencyName} ${this.client.money.currencySymbol}\n\nClaim again in ${time(new Date(new Date().getTime() + KaikiUtil.timeToMidnightOrNoon()), "R")}` + `**${message.author.username}**, You've just claimed your daily allowance!\n+**${amount}** ${this.client.money.currencyName} ${this.client.money.currencySymbol}\n\nClaim again ${time(new Date(new Date().getTime() + KaikiUtil.timeToMidnightOrNoon()), "R")}` ) .withOkColor(message), ], @@ -67,7 +67,7 @@ export default class ClaimDailyCommand extends KaikiCommand { embeds: [ new EmbedBuilder() .setDescription( - `**${message.author.username}**, You've already claimed your daily allowance!!\n\nClaim again in ${time(new Date(new Date().getTime() + KaikiUtil.timeToMidnightOrNoon()), "R")}` + `**${message.author.username}**, You've already claimed your daily allowance!!\n\nClaim again ${time(new Date(new Date().getTime() + KaikiUtil.timeToMidnightOrNoon()), "R")}` ) .withErrorColor(message), ], diff --git a/src/commands/Utility/stats.ts b/src/commands/Utility/stats.ts index aa2acb3f..4b53111a 100644 --- a/src/commands/Utility/stats.ts +++ b/src/commands/Utility/stats.ts @@ -43,7 +43,7 @@ export default class StatsCommand extends KaikiCommand { }, { name: "Users", - value: String(message.client.users.cache.size), + value: `${message.client.guilds.cache.reduce((acc, guild) => acc + guild.memberCount, 0)} (${message.client.users.cache.size} cached)`, inline: true, }, { diff --git a/src/lib/APIs/animeQuote.ts b/src/lib/APIs/animeQuote.ts deleted file mode 100644 index 863874b0..00000000 --- a/src/lib/APIs/animeQuote.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { EmbedBuilder, Message } from "discord.js"; -import { AnimeQuoteResponse } from "../Types/Miscellaneous"; - -export async function sendQuote( - resp: AnimeQuoteResponse, - message: Message -): Promise { - return message.channel.send({ - embeds: [ - new EmbedBuilder() - .setDescription(`"${resp.quote}"`) - .addFields([ - { name: "Character", value: resp.character, inline: true }, - { name: "Anime", value: resp.anime, inline: true }, - ]) - .withOkColor(message), - ], - }); -} diff --git a/src/lib/Cache/KaikiCache.ts b/src/lib/Cache/KaikiCache.ts index da374067..072d821a 100644 --- a/src/lib/Cache/KaikiCache.ts +++ b/src/lib/Cache/KaikiCache.ts @@ -1,9 +1,8 @@ import pkg from "@prisma/client"; -import { Collection, Message, Snowflake } from "discord.js"; +import { Message, Snowflake } from "discord.js"; import { Pool, ResultSetHeader, RowDataPacket } from "mysql2/promise"; import { APIs, ClientImageAPIs } from "../APIs/Common/Types"; import KaikiUtil from "../KaikiUtil"; -import { AnimeQuoteResponse } from "../Types/Miscellaneous"; import Constants from "../../struct/Constants"; import { EmoteReactCache, @@ -19,7 +18,6 @@ export enum ERCacheType { } export default class KaikiCache { - public animeQuoteCache: Collection; public cmdStatsCache: Map; public emoteReactCache: EmoteReactCache; public dailyProvider: MySQLDailyProvider; @@ -31,7 +29,6 @@ export default class KaikiCache { connection: Pool, imageAPIs: ClientImageAPIs ) { - this.animeQuoteCache = new Collection(); this.cmdStatsCache = new Map(); this.dailyProvider = new MySQLDailyProvider(connection); this.emoteReactCache = new Map< diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index e07e0777..265411df 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -149,26 +149,32 @@ export default class KaikiSapphireClient `Bot owner: ${colorette.greenBright(client.owner.username)}` ); + await Promise.all([ + client.filterOptionalCommands(), + client.sendOnlineMsg(), + ]); + } + + private async sendOnlineMsg() { // Let bot owner know when bot goes online. - if (client.user && client.owner.id === process.env.OWNER) { + if (this.user && this.owner.id === process.env.OWNER) { // Inconspicuous emotes haha const emoji = ["✨", "♥️", "✅", "🇹🇼"][ Math.floor(Math.random() * 4) ]; - await client.owner.send({ + + await this.owner.send({ embeds: [ new EmbedBuilder() .setTitle(emoji) .setDescription("Bot is online!") .setFooter({ - text: `${client.package.name} - v${client.package.version}`, + text: `${this.package.name} - v${this.package.version}`, }) .withOkColor(), ], }); } - - await client.filterOptionalCommands(); } private static noBotOwner(): never { diff --git a/src/lib/ServerConfig/Config.ts b/src/lib/ServerConfig/Config.ts index a9fc9818..f972b614 100644 --- a/src/lib/ServerConfig/Config.ts +++ b/src/lib/ServerConfig/Config.ts @@ -10,7 +10,6 @@ import { PermissionsBitField, resolveColor, } from "discord.js"; -import SlashCommandsLib from "../../lib/SlashCommands/SlashCommandsLib"; import { imgFromColor } from "../Color"; import { CategoriesEnum } from "../Enums/categoriesEnum"; import GreetHandler from "../GreetHandler"; diff --git a/src/lib/Types/Miscellaneous.ts b/src/lib/Types/Miscellaneous.ts index a1d97777..837b5f37 100644 --- a/src/lib/Types/Miscellaneous.ts +++ b/src/lib/Types/Miscellaneous.ts @@ -1,19 +1,14 @@ -export type AnimeQuoteResponse = { - anime: string; - character: string; - quote: string; -}; export type Categories = | "Administration" | "Anime" | "Emotes" | "Fun" | "Gambling" + | "Images" + | "Interactions" | "Moderation" | "NSFW" | "Owner only" | "Roles" | "Server settings" - | "Utility" - | "Images" - | "Interactions"; + | "Utility"; diff --git a/src/listeners/guildCreate.ts b/src/listeners/guildCreate.ts index 596dfab7..83552b69 100644 --- a/src/listeners/guildCreate.ts +++ b/src/listeners/guildCreate.ts @@ -8,11 +8,9 @@ import { Guild } from "discord.js"; }) export default class GuildCreate extends Listener { public async run(guild: Guild) { - this.container.logger.info( - `\nBot was added to ${colorette.green(guild.name)}!! Size: ${guild.members.cache.size} members!\n` - ); - await this.container.client.anniversaryService.checkBirthdayOnAdd( - guild + guild.client.logger.info( + `\nBot was added to ${colorette.green(guild.name)} | Size: ${guild.memberCount} members!\n` ); + await guild.client.anniversaryService.checkBirthdayOnAdd(guild); } } From 51e14f85aa6dcd0abb188f5d9eab292619c446ca Mon Sep 17 00:00:00 2001 From: Cata Date: Sun, 30 Jun 2024 17:13:56 +0800 Subject: [PATCH 20/44] Hotfix bf --- src/commands/Gambling/betflip.ts | 2 +- src/extensions/Sapphire.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/commands/Gambling/betflip.ts b/src/commands/Gambling/betflip.ts index 28ef56cf..0528ec58 100644 --- a/src/commands/Gambling/betflip.ts +++ b/src/commands/Gambling/betflip.ts @@ -59,7 +59,7 @@ export default class BetflipCommand extends KaikiCommand { }); } - const [coinFlipped, winnings] = await BetflipCommand.flip(); + const [coinFlipped, winnings] = await BetflipCommand.flip(coin, number); const emb = new EmbedBuilder({ image: { url: images.gambling.coin[coinFlipped] }, diff --git a/src/extensions/Sapphire.ts b/src/extensions/Sapphire.ts index 8ecae5c0..d88f7038 100644 --- a/src/extensions/Sapphire.ts +++ b/src/extensions/Sapphire.ts @@ -5,6 +5,7 @@ import { HentaiTypes } from "../lib/Hentai/HentaiService"; import KaikiCommand from "../lib/Kaiki/KaikiCommand"; import { KaikiColor } from "../lib/Types/KaikiColor"; import { Categories } from "../lib/Types/Miscellaneous"; +import { Sides } from "../commands/Gambling/betflip"; declare module "@sapphire/framework" { interface Preconditions { @@ -16,7 +17,7 @@ declare module "@sapphire/framework" { category: Categories; command: KaikiCommand; guild: Guild; - kaikiCoin: string; + kaikiCoin: Sides; kaikiColor: KaikiColor; kaikiHentai: HentaiTypes; kaikiMoney: bigint; From c9c764d53ad8232a4990fcccdc7481f95074cce1 Mon Sep 17 00:00:00 2001 From: Cata Date: Wed, 3 Jul 2024 22:21:46 +0200 Subject: [PATCH 21/44] Change: fetching members & enum types in api endpoints --- src/commands/Images/maid.ts | 3 +- src/commands/Images/marin.ts | 3 +- src/commands/Images/megumin.ts | 3 +- src/commands/Images/neko.ts | 3 +- src/commands/Images/selfies.ts | 3 +- src/commands/Images/shinobu.ts | 3 +- src/commands/Images/uniform.ts | 3 +- src/commands/Images/waifu.ts | 3 +- src/commands/Interactions/bite.ts | 3 +- src/commands/Interactions/blush.ts | 3 +- src/commands/Interactions/bonk.ts | 3 +- src/commands/Interactions/bully.ts | 3 +- src/commands/Interactions/cuddle.ts | 3 +- src/commands/Interactions/feed.ts | 3 +- src/commands/Interactions/hug.ts | 3 +- src/commands/Interactions/kiss.ts | 3 +- src/commands/Interactions/lick.ts | 3 +- src/commands/Interactions/nom.ts | 3 +- src/commands/Interactions/pat.ts | 3 +- src/commands/Interactions/peek.ts | 3 +- src/commands/Interactions/pout.ts | 3 +- src/commands/Interactions/run.ts | 3 +- src/commands/Interactions/slap.ts | 3 +- src/commands/Interactions/spank.ts | 3 +- src/commands/Interactions/yeet.ts | 3 +- src/commands/NSFW/ero.ts | 3 +- src/commands/Owner only/die.ts | 18 +++- src/commands/Utility/stats.ts | 9 +- src/lib/APIs/KawaiiAPI.ts | 6 +- src/lib/APIs/NekosAPI.ts | 1 + src/lib/APIs/PurrBot.ts | 2 +- src/lib/APIs/WaifuPics.ts | 31 +++---- src/lib/APIs/nekos.life.ts | 2 +- src/lib/APIs/waifu.im.ts | 13 +-- src/lib/Cache/KaikiCache.ts | 36 +++++++- .../DiscordBotList/DiscordBotListService.ts | 43 ++++++++++ src/lib/Errors/ArgumentErrorRun.ts | 6 +- src/lib/Kaiki/KaikiSapphireClient.ts | 84 ++++++++----------- src/lib/Types/Miscellaneous.ts | 1 + src/listeners/guildCreate.ts | 7 +- src/listeners/nonPrefixedMessage.ts | 3 +- 41 files changed, 225 insertions(+), 115 deletions(-) create mode 100644 src/lib/DiscordBotList/DiscordBotListService.ts diff --git a/src/commands/Images/maid.ts b/src/commands/Images/maid.ts index 4c90da29..5282dc05 100644 --- a/src/commands/Images/maid.ts +++ b/src/commands/Images/maid.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { EndPointSignatures } from "../../lib/APIs/waifu.im"; @ApplyOptions({ name: "maid", @@ -13,7 +14,7 @@ export default class Maid extends KaikiCommand { public async messageRun(message: Message) { return this.client.imageAPIs.WaifuIm.sendImageAPIRequest( message, - "maid" + EndPointSignatures.maid ); } } diff --git a/src/commands/Images/marin.ts b/src/commands/Images/marin.ts index e5dd9da3..e2191aa9 100644 --- a/src/commands/Images/marin.ts +++ b/src/commands/Images/marin.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { EndPointSignatures } from "../../lib/APIs/waifu.im"; @ApplyOptions({ name: "marin", @@ -13,7 +14,7 @@ export default class Marin extends KaikiCommand { public async messageRun(message: Message): Promise { return this.client.imageAPIs.WaifuIm.sendImageAPIRequest( message, - "marin-kitagawa" + EndPointSignatures.marinKitagawa ); } } diff --git a/src/commands/Images/megumin.ts b/src/commands/Images/megumin.ts index c9fc6dfa..7e2db876 100644 --- a/src/commands/Images/megumin.ts +++ b/src/commands/Images/megumin.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "megumin", @@ -13,7 +14,7 @@ export default class megumin extends KaikiCommand { public async messageRun(message: Message): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "megumin" + APIs.megumin ); } } diff --git a/src/commands/Images/neko.ts b/src/commands/Images/neko.ts index 723d43c8..321b5d01 100644 --- a/src/commands/Images/neko.ts +++ b/src/commands/Images/neko.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "neko", @@ -13,7 +14,7 @@ export default class Neko extends KaikiCommand { public async messageRun(message: Message): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "neko" + APIs.neko ); } } diff --git a/src/commands/Images/selfies.ts b/src/commands/Images/selfies.ts index 1a93c8b7..9b9a9453 100644 --- a/src/commands/Images/selfies.ts +++ b/src/commands/Images/selfies.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { EndPointSignatures } from "../../lib/APIs/waifu.im"; @ApplyOptions({ name: "selfies", @@ -14,7 +15,7 @@ export default class Selfies extends KaikiCommand { public async messageRun(message: Message): Promise { return this.client.imageAPIs.WaifuIm.sendImageAPIRequest( message, - "selfies" + EndPointSignatures.selfies ); } } diff --git a/src/commands/Images/shinobu.ts b/src/commands/Images/shinobu.ts index 38397f9b..691b4be8 100644 --- a/src/commands/Images/shinobu.ts +++ b/src/commands/Images/shinobu.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "shinobu", @@ -13,7 +14,7 @@ export default class Shinobu extends KaikiCommand { public async messageRun(message: Message): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "shinobu" + APIs.shinobu ); } } diff --git a/src/commands/Images/uniform.ts b/src/commands/Images/uniform.ts index 3f3c0bab..d190086e 100644 --- a/src/commands/Images/uniform.ts +++ b/src/commands/Images/uniform.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { EndPointSignatures } from "../../lib/APIs/waifu.im"; @ApplyOptions({ name: "uniform", @@ -13,7 +14,7 @@ export default class Uniform extends KaikiCommand { public async messageRun(message: Message) { return this.client.imageAPIs.WaifuIm.sendImageAPIRequest( message, - "uniform" + EndPointSignatures.uniform ); } } diff --git a/src/commands/Images/waifu.ts b/src/commands/Images/waifu.ts index b03976ee..36537471 100644 --- a/src/commands/Images/waifu.ts +++ b/src/commands/Images/waifu.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "waifu", @@ -13,7 +14,7 @@ export default class Waifu extends KaikiCommand { public async messageRun(message: Message): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "waifu" + APIs.waifu ); } } diff --git a/src/commands/Interactions/bite.ts b/src/commands/Interactions/bite.ts index 7f16a09b..7e4c1eb3 100644 --- a/src/commands/Interactions/bite.ts +++ b/src/commands/Interactions/bite.ts @@ -3,6 +3,7 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { EndpointSignatures } from "../../lib/APIs/PurrBot"; @ApplyOptions({ name: "bite", @@ -14,7 +15,7 @@ export default class Bite extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.PurrBot.sendImageAPIRequest( message, - "bite", + EndpointSignatures.bite, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/Interactions/blush.ts b/src/commands/Interactions/blush.ts index fd2ce9e5..9c49a32b 100644 --- a/src/commands/Interactions/blush.ts +++ b/src/commands/Interactions/blush.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { EndpointSignatures } from "../../lib/APIs/PurrBot"; @ApplyOptions({ name: "blush", @@ -13,7 +14,7 @@ export default class Blush extends KaikiCommand { public async messageRun(message: Message): Promise { return this.client.imageAPIs.PurrBot.sendImageAPIRequest( message, - "blush" + EndpointSignatures.blush ); } } diff --git a/src/commands/Interactions/bonk.ts b/src/commands/Interactions/bonk.ts index 72bd5cf7..a45f2f61 100644 --- a/src/commands/Interactions/bonk.ts +++ b/src/commands/Interactions/bonk.ts @@ -3,6 +3,7 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "bonk", @@ -14,7 +15,7 @@ export default class Bonk extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "bonk", + APIs.bonk, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/Interactions/bully.ts b/src/commands/Interactions/bully.ts index a7a9f06d..b2529a34 100644 --- a/src/commands/Interactions/bully.ts +++ b/src/commands/Interactions/bully.ts @@ -3,6 +3,7 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "bully", @@ -15,7 +16,7 @@ export default class Bully extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "bully", + APIs.bully, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/Interactions/cuddle.ts b/src/commands/Interactions/cuddle.ts index be100b7c..29dbcfe0 100644 --- a/src/commands/Interactions/cuddle.ts +++ b/src/commands/Interactions/cuddle.ts @@ -3,6 +3,7 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "cuddle", @@ -14,7 +15,7 @@ export default class Cuddle extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "cuddle", + APIs.cuddle, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/Interactions/feed.ts b/src/commands/Interactions/feed.ts index 710af348..cc9dba2d 100644 --- a/src/commands/Interactions/feed.ts +++ b/src/commands/Interactions/feed.ts @@ -3,6 +3,7 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { EndpointSignatures } from "../../lib/APIs/PurrBot"; @ApplyOptions({ name: "feed", @@ -14,7 +15,7 @@ export default class Feed extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.PurrBot.sendImageAPIRequest( message, - "feed", + EndpointSignatures.feed, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/Interactions/hug.ts b/src/commands/Interactions/hug.ts index 31a8d34c..c01383ba 100644 --- a/src/commands/Interactions/hug.ts +++ b/src/commands/Interactions/hug.ts @@ -3,6 +3,7 @@ import { Message } from "discord.js"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; import { ApplyOptions } from "@sapphire/decorators"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "hug", @@ -14,7 +15,7 @@ export default class HugCommand extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "hug", + APIs.hug, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/Interactions/kiss.ts b/src/commands/Interactions/kiss.ts index 5192fe55..16f708b5 100644 --- a/src/commands/Interactions/kiss.ts +++ b/src/commands/Interactions/kiss.ts @@ -3,6 +3,7 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "kiss", @@ -15,7 +16,7 @@ export default class Kiss extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "kiss", + APIs.kiss, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/Interactions/lick.ts b/src/commands/Interactions/lick.ts index 06f094c8..bb115260 100644 --- a/src/commands/Interactions/lick.ts +++ b/src/commands/Interactions/lick.ts @@ -3,6 +3,7 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { EndPointSignatures } from "../../lib/APIs/KawaiiAPI"; @ApplyOptions({ name: "lick", @@ -17,7 +18,7 @@ export default class Lick extends KaikiCommand { ): Promise { return this.client.imageAPIs.KawaiiAPI.sendImageAPIRequest( message, - "lick", + EndPointSignatures.lick, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/Interactions/nom.ts b/src/commands/Interactions/nom.ts index eac12a11..82f79dd9 100644 --- a/src/commands/Interactions/nom.ts +++ b/src/commands/Interactions/nom.ts @@ -3,6 +3,7 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "nom", @@ -14,7 +15,7 @@ export default class NomCommand extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "nom", + APIs.nom, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/Interactions/pat.ts b/src/commands/Interactions/pat.ts index 78dac335..79482e2f 100644 --- a/src/commands/Interactions/pat.ts +++ b/src/commands/Interactions/pat.ts @@ -3,6 +3,7 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "pat", @@ -14,7 +15,7 @@ export default class PatCommand extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "pat", + APIs.pat, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/Interactions/peek.ts b/src/commands/Interactions/peek.ts index 7356cde9..89272ad6 100644 --- a/src/commands/Interactions/peek.ts +++ b/src/commands/Interactions/peek.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { EndPointSignatures } from "../../lib/APIs/KawaiiAPI"; @ApplyOptions({ name: "peek", @@ -13,7 +14,7 @@ export default class Peek extends KaikiCommand { public async messageRun(message: Message) { return this.client.imageAPIs.KawaiiAPI.sendImageAPIRequest( message, - "peek" + EndPointSignatures.peek ); } } diff --git a/src/commands/Interactions/pout.ts b/src/commands/Interactions/pout.ts index db96983e..6289c3a6 100644 --- a/src/commands/Interactions/pout.ts +++ b/src/commands/Interactions/pout.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { EndPointSignatures } from "../../lib/APIs/KawaiiAPI"; @ApplyOptions({ name: "pout", @@ -13,7 +14,7 @@ export default class Pout extends KaikiCommand { public async messageRun(message: Message): Promise { return this.client.imageAPIs.KawaiiAPI.sendImageAPIRequest( message, - "pout" + EndPointSignatures.pout ); } } diff --git a/src/commands/Interactions/run.ts b/src/commands/Interactions/run.ts index 45e137c2..894bf9f5 100644 --- a/src/commands/Interactions/run.ts +++ b/src/commands/Interactions/run.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { EndPointSignatures } from "../../lib/APIs/KawaiiAPI"; @ApplyOptions({ name: "run", @@ -13,7 +14,7 @@ export default class RunCommand extends KaikiCommand { public async messageRun(message: Message): Promise { return this.client.imageAPIs.KawaiiAPI.sendImageAPIRequest( message, - "run" + EndPointSignatures.run ); } } diff --git a/src/commands/Interactions/slap.ts b/src/commands/Interactions/slap.ts index 5e557138..5b0097bc 100644 --- a/src/commands/Interactions/slap.ts +++ b/src/commands/Interactions/slap.ts @@ -3,6 +3,7 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "slap", @@ -14,7 +15,7 @@ export default class Slap extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "slap", + APIs.slap, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/Interactions/spank.ts b/src/commands/Interactions/spank.ts index b355a3f6..a064a848 100644 --- a/src/commands/Interactions/spank.ts +++ b/src/commands/Interactions/spank.ts @@ -3,6 +3,7 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/nekos.life"; @ApplyOptions({ name: "spank", @@ -14,7 +15,7 @@ export default class SpankCommand extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.NekosLife.sendImageAPIRequest( message, - "spank", + APIs.spank, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/Interactions/yeet.ts b/src/commands/Interactions/yeet.ts index 8ad0d05e..7625adac 100644 --- a/src/commands/Interactions/yeet.ts +++ b/src/commands/Interactions/yeet.ts @@ -3,6 +3,7 @@ import { Args } from "@sapphire/framework"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { APIs } from "../../lib/APIs/WaifuPics"; @ApplyOptions({ name: "yeet", @@ -14,7 +15,7 @@ export default class Yeet extends KaikiCommand { public async messageRun(message: Message, args: Args): Promise { return this.client.imageAPIs.WaifuPics.sendImageAPIRequest( message, - "yeet", + APIs.yeet, await args.rest("member").catch(() => null) ); } diff --git a/src/commands/NSFW/ero.ts b/src/commands/NSFW/ero.ts index 6e283837..3d0c6c62 100644 --- a/src/commands/NSFW/ero.ts +++ b/src/commands/NSFW/ero.ts @@ -2,6 +2,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; +import { EndPointSignatures } from "../../lib/APIs/waifu.im"; @ApplyOptions({ name: "ero", @@ -14,7 +15,7 @@ export default class Ero extends KaikiCommand { public async messageRun(message: Message): Promise { return this.client.imageAPIs.WaifuIm.sendImageAPIRequest( message, - "ero", + EndPointSignatures.ero, undefined, true ); diff --git a/src/commands/Owner only/die.ts b/src/commands/Owner only/die.ts index c5677f65..47b8cd57 100644 --- a/src/commands/Owner only/die.ts +++ b/src/commands/Owner only/die.ts @@ -3,13 +3,16 @@ import { ApplyOptions } from "@sapphire/decorators"; import { ActionRowBuilder, ButtonBuilder, - EmbedBuilder, + EmbedBuilder, GuildMember, InteractionCollector, Message, + Snowflake, } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; import { Args } from "@sapphire/framework"; +import fs from "fs/promises"; +import { GuildMemberCache } from "../../lib/Cache/KaikiCache"; @ApplyOptions({ name: "die", @@ -85,7 +88,18 @@ export default class KillBotProcess extends KaikiCommand { } private async shutdown(message: Message): Promise { - await message.react("✅"); + + const guildMemberCache: GuildMemberCache = {}; + + for (const [, v] of message.client.guilds.cache) { + guildMemberCache[v.id] = v.members.cache + } + + await Promise.all([ + message.react("✅"), + fs.writeFile(`./members-${Date.now()}.cache`, JSON.stringify(guildMemberCache)) + ]); + this.container.logger.warn("Shutting down"); // Disconnects the client connection this.client.destroy().then(() => process.exit(0)); diff --git a/src/commands/Utility/stats.ts b/src/commands/Utility/stats.ts index 4b53111a..93a7d68c 100644 --- a/src/commands/Utility/stats.ts +++ b/src/commands/Utility/stats.ts @@ -4,7 +4,6 @@ import { version as sapphireVersion } from "@sapphire/framework"; import { sendPaginatedMessage } from "discord-js-button-pagination-ts"; import { ChannelType, EmbedBuilder, Message, time, version } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; - import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; import Constants from "../../struct/Constants"; @@ -12,7 +11,7 @@ import Constants from "../../struct/Constants"; aliases: ["stats"], name: "stats", usage: "", - description: "Statistics and information", + description: "Statistics and information about the bot application", minorCategory: "Info", }) export default class StatsCommand extends KaikiCommand { @@ -80,7 +79,7 @@ export default class StatsCommand extends KaikiCommand { .setDescription("**Built using**:") .addFields([ { - name: "Discord.js library", + name: "Discord.js", value: `[Discord.js](https://discord.js.org/#/ 'Discord.js website') v${version}`, inline: true, }, @@ -96,12 +95,12 @@ export default class StatsCommand extends KaikiCommand { }, { name: "Node Package Manager", - value: `[npm](https://www.npmjs.com/ 'npm website') \`${process.env.npm_config_user_agent || "N/A"}\``, + value: `[npm](https://www.npmjs.com/ 'npm website') \`${process.env.npm_config_user_agent || ""}\``, inline: true, }, ]) .setAuthor({ - name: "© 2024 @Cata#2702", + name: "© 2024 @Cata", iconURL: message.client.user.displayAvatarURL(), url: packageJSON.repository.url, }) diff --git a/src/lib/APIs/KawaiiAPI.ts b/src/lib/APIs/KawaiiAPI.ts index e541fc21..1b03821f 100644 --- a/src/lib/APIs/KawaiiAPI.ts +++ b/src/lib/APIs/KawaiiAPI.ts @@ -4,7 +4,7 @@ import APIProcessor from "./APIProcessor"; import ImageAPI from "./Common/ImageAPI"; import { ImageAPIOptions } from "./Common/Types"; -type EndPointSignatures = "run" | "peek" | "pout" | "lick"; +export enum EndPointSignatures { run = "run", peek = "peek", pout = "pout", lick = "lick" } export default class KawaiiAPI extends ImageAPI { constructor(data: ImageAPIOptions = KawaiiAPI.data) { @@ -18,9 +18,7 @@ export default class KawaiiAPI extends ImageAPI { endPoint: T, mention?: GuildMember | null ) { - if (!KawaiiAPI.token) { - return; - } + if (!KawaiiAPI.token) return return message.channel.send({ embeds: [ diff --git a/src/lib/APIs/NekosAPI.ts b/src/lib/APIs/NekosAPI.ts index 4b7164e4..83db6a84 100644 --- a/src/lib/APIs/NekosAPI.ts +++ b/src/lib/APIs/NekosAPI.ts @@ -5,6 +5,7 @@ import ImageAPI from "./Common/ImageAPI"; import { ImageAPIOptions, NekosAPITags } from "./Common/Types"; type EndPoints = keyof typeof NekosAPITags; + const notImplementedEndPointData = { action: "", color: 0, diff --git a/src/lib/APIs/PurrBot.ts b/src/lib/APIs/PurrBot.ts index dab13664..c76025e6 100644 --- a/src/lib/APIs/PurrBot.ts +++ b/src/lib/APIs/PurrBot.ts @@ -4,7 +4,7 @@ import APIProcessor from "./APIProcessor"; import ImageAPI from "./Common/ImageAPI"; import { ImageAPIOptions } from "./Common/Types"; -type EndpointSignatures = "bite" | "blush" | "feed"; +export enum EndpointSignatures { bite = "bite", blush = "blush", feed = "feed" } export default class PurrBot extends ImageAPI { constructor(data: ImageAPIOptions = PurrBot.data) { diff --git a/src/lib/APIs/WaifuPics.ts b/src/lib/APIs/WaifuPics.ts index 57048514..facb9b28 100644 --- a/src/lib/APIs/WaifuPics.ts +++ b/src/lib/APIs/WaifuPics.ts @@ -97,18 +97,19 @@ export default class WaifuPics extends ImageAPI { }; } -type APIs = - | "bonk" - | "cry" - | "cuddle" - | "hug" - | "kiss" - | "pat" - | "waifu" - | "yeet" - | "bully" - | "megumin" - | "neko" - | "shinobu" - | "nom" - | "slap"; +export enum APIs { + bonk = "bonk", + cry = "cry", + cuddle = "cuddle", + hug = "hug", + kiss = "kiss", + pat = "pat", + waifu = "waifu", + yeet = "yeet", + bully = "bully", + megumin = "megumin", + neko = "neko", + shinobu = "shinobu", + nom = "nom", + slap = "slap" +} diff --git a/src/lib/APIs/nekos.life.ts b/src/lib/APIs/nekos.life.ts index f0aa0d7b..25ec8941 100644 --- a/src/lib/APIs/nekos.life.ts +++ b/src/lib/APIs/nekos.life.ts @@ -4,7 +4,7 @@ import APIProcessor from "./APIProcessor"; import ImageAPI from "./Common/ImageAPI"; import { ImageAPIOptions } from "./Common/Types"; -type APIs = "spank"; +export enum APIs { spank = "spank" } export default class NekosLife extends ImageAPI { constructor(data: ImageAPIOptions<"spank"> = NekosLife.data) { diff --git a/src/lib/APIs/waifu.im.ts b/src/lib/APIs/waifu.im.ts index 211c1c28..ab8856a7 100644 --- a/src/lib/APIs/waifu.im.ts +++ b/src/lib/APIs/waifu.im.ts @@ -59,9 +59,10 @@ export default class WaifuIm extends ImageAPI { }; } -type EndPointSignatures = - | "uniform" - | "maid" - | "selfies" - | "marin-kitagawa" - | "ero"; +export enum EndPointSignatures { + uniform = "uniform", + maid = "maid", + selfies = "selfies", + marinKitagawa = "marin-kitagawa", + ero = "ero" +} diff --git a/src/lib/Cache/KaikiCache.ts b/src/lib/Cache/KaikiCache.ts index 072d821a..3c36f2f6 100644 --- a/src/lib/Cache/KaikiCache.ts +++ b/src/lib/Cache/KaikiCache.ts @@ -1,5 +1,5 @@ import pkg from "@prisma/client"; -import { Message, Snowflake } from "discord.js"; +import { Collection, GuildMember, Message, Snowflake } from "discord.js"; import { Pool, ResultSetHeader, RowDataPacket } from "mysql2/promise"; import { APIs, ClientImageAPIs } from "../APIs/Common/Types"; import KaikiUtil from "../KaikiUtil"; @@ -11,12 +11,16 @@ import { PartitionResult, TriggerString, } from "../Interfaces/Kaiki/KaikiCache"; +import fs from "fs/promises"; +import { container } from "@sapphire/pieces"; export enum ERCacheType { HAS_SPACE, NO_SPACE, } +export type GuildMemberCache = {[key: Snowflake]: Collection} + export default class KaikiCache { public cmdStatsCache: Map; public emoteReactCache: EmoteReactCache; @@ -179,6 +183,36 @@ export default class KaikiCache { ); }); } + + public async readSavedCache() { + const files = await fs.readdir(".") + const caches = files.filter(f => f.endsWith(".cache")); + + for (const filePath of caches) { + + const content = await fs.readFile(filePath, { encoding: "utf-8" }) + + if (!content) { + await fs.unlink(filePath) + continue; + } + + const guildMembersCache: GuildMemberCache = JSON.parse(content) + + for (const [k, v] of Object.entries(guildMembersCache)) { + + const cache = container.client.guilds.cache.get(k)?.members.cache; + const localCache = new Collection(v.entries()); + + if (!cache || !localCache?.size) continue; + + for (const [key, member] of localCache.entries()) { + cache.set(key, member); + } + } + await fs.unlink(filePath) + } + } } class MySQLDailyProvider { diff --git a/src/lib/DiscordBotList/DiscordBotListService.ts b/src/lib/DiscordBotList/DiscordBotListService.ts new file mode 100644 index 00000000..ef208c94 --- /dev/null +++ b/src/lib/DiscordBotList/DiscordBotListService.ts @@ -0,0 +1,43 @@ +import { createDjsClient } from "discordbotlist-djs"; +import process from "process"; +import { EmbedBuilder } from "discord.js"; +import Constants from "../../struct/Constants"; +import KaikiSapphireClient from "../Kaiki/KaikiSapphireClient"; + +export default class DiscordBotListService { + constructor(client: KaikiSapphireClient) { + const dblClient = createDjsClient(process.env.DBL_API_TOKEN!, client); + + dblClient.startPosting(); + dblClient.startPolling(); + + dblClient.on("vote", async (vote) => { + const amount = client.botSettings.get("1", "DailyAmount", 250); + await Promise.all([ + client.users.cache + .get(vote.id) + ?.send({ + embeds: [ + new EmbedBuilder() + .setTitle("Thank you for your support! 🎉") + .setDescription( + `You received ${amount} ${client.money.currencyName} ${client.money.currencySymbol}` + ) + .setFooter({ + text: "🧡", + }) + .setColor(Constants.kaikiOrange), + ], + }) + // Ignore failed DMs + .catch(() => undefined), + client.money.add( + vote.id, + BigInt(amount), + "Voted - DiscordBotList" + ), + ]); + }); + + } +} \ No newline at end of file diff --git a/src/lib/Errors/ArgumentErrorRun.ts b/src/lib/Errors/ArgumentErrorRun.ts index 265fce67..87f3b5a5 100644 --- a/src/lib/Errors/ArgumentErrorRun.ts +++ b/src/lib/Errors/ArgumentErrorRun.ts @@ -17,6 +17,10 @@ type ErrorContext = { commandContext: Record; }; +function isIdentifier(identifier: string): identifier is Identifiers { + return identifier in Identifiers; +} + export default async ( error: UserError, payload: MessageCommandDeniedPayload @@ -25,7 +29,7 @@ export default async ( title: "Argument error", }; - if (error.identifier === Identifiers.ArgsMissing) { + if (isIdentifier(error.identifier) && [Identifiers.ArgsMissing, Identifiers.ArgsUnavailable].includes(error.identifier)) { const errorContext = error.context as ErrorContext; const prefix = errorContext.commandContext.prefix; diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index 265411df..a5b7fea0 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -4,6 +4,7 @@ import { type PrismaClient } from "@prisma/client"; import { LogLevel, SapphireClient } from "@sapphire/framework"; import * as colorette from "colorette"; import { + Collection, EmbedBuilder, GatewayIntentBits, Guild, @@ -12,13 +13,13 @@ import { User, } from "discord.js"; import { Pool } from "mysql2/promise"; -import KaikiCache from "../Cache/KaikiCache"; +import KaikiCache, { GuildMemberCache } from "../Cache/KaikiCache"; import Constants from "../../struct/Constants"; import Database from "../../struct/db/Database"; import DatabaseProvider from "../../struct/db/DatabaseProvider"; import AnniversaryRolesService from "../AnniversaryRolesService"; import type { ClientImageAPIs } from "../APIs/Common/Types"; -import KawaiiAPI from "../APIs/KawaiiAPI"; +import KawaiiAPI, { EndPointSignatures } from "../APIs/KawaiiAPI"; import NekosLife from "../APIs/nekos.life"; import NekosAPI from "../APIs/NekosAPI"; import PurrBot from "../APIs/PurrBot"; @@ -31,8 +32,8 @@ import { MoneyService } from "../Money/MoneyService"; import KaikiClientInterface from "./KaikiClientInterface"; import fs from "fs/promises"; import { container } from "@sapphire/pieces"; -import { createDjsClient } from "discordbotlist-djs"; import NeofetchCommand from "../../commands/Fun/neofetch"; +import DiscordBotListService from "../DiscordBotList/DiscordBotListService"; export default class KaikiSapphireClient extends SapphireClient @@ -56,7 +57,6 @@ export default class KaikiSapphireClient allowedMentions: { parse: ["users"], repliedUser: true }, intents: [ GatewayIntentBits.DirectMessageReactions, - GatewayIntentBits.DirectMessageTyping, GatewayIntentBits.DirectMessages, GatewayIntentBits.GuildModeration, GatewayIntentBits.GuildEmojisAndStickers, @@ -67,7 +67,7 @@ export default class KaikiSapphireClient GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildWebhooks, GatewayIntentBits.Guilds, - GatewayIntentBits.MessageContent, + GatewayIntentBits.MessageContent ], partials: [ Partials.Reaction, @@ -119,12 +119,10 @@ export default class KaikiSapphireClient throw new Error("Missing bot client user!"); } - if ( - process.env.DBL_API_TOKEN && - process.env.NODE_ENV === "production" - ) { - this.dblService(); + if (process.env.DBL_API_TOKEN && process.env.NODE_ENV === "production") { + new DiscordBotListService(this); } + await client.application?.fetch(); if (!client.application?.owner) { @@ -152,6 +150,7 @@ export default class KaikiSapphireClient await Promise.all([ client.filterOptionalCommands(), client.sendOnlineMsg(), + client.cache.readSavedCache() ]); } @@ -238,13 +237,16 @@ export default class KaikiSapphireClient this.anniversaryService = new AnniversaryRolesService(this); // This will execute at midnight - await Promise.all([this.dailyResetTimer(), this.resetTimer()]); - this.logger.info("AnniversaryRolesService | Service initiated"); + await Promise.all([ + this.dailyResetTimer(), + this.resetTimer(), + this.fetchMembersLoop(), + this.presenceLoop() + ]); + this.logger.info("Timers and loops started"); this.hentaiService = new HentaiService(); this.logger.info("HentaiService | Service initiated"); - - void this.presenceLoop(); } private async initializeDatabase() { @@ -328,6 +330,23 @@ export default class KaikiSapphireClient } } + private async fetchMembersLoop() { + const guilds = this.guilds.cache; + const iterator = guilds.values(); + const interval = setInterval(async () => { + // Get next guild from iterator + const guild = iterator.next().value as Guild | undefined + // Stop looping interval when there are no more guilds in iterator + if (!guild) { + clearInterval(interval); + return; + } + // Fetch guild members + await guild.members.fetch(); + // Half a minute + }, 30000); + } + public async resetDailyClaims(): Promise { const updated = await this.orm.discordUsers.updateMany({ where: { @@ -346,7 +365,7 @@ export default class KaikiSapphireClient const commandStore = this.stores.get("commands"); if (!process.env.KAWAIIKEY || process.env.KAWAIIKEY === "[YOUR_OPTIONAL_KAWAII_KEY]") { - for (const entry of ["run", "peek", "pout", "lick"]) { + for (const entry in EndPointSignatures) { await commandStore.unload(entry); } this.logger.warn( @@ -372,39 +391,4 @@ export default class KaikiSapphireClient this.logger.fatal("Failed to connect to database using MySQL2.", e); process.exit(1); } - - private dblService() { - const client = createDjsClient(process.env.DBL_API_TOKEN!, this); - - client.startPosting(); - client.startPolling(); - - client.on("vote", async (vote) => { - const amount = this.botSettings.get("1", "DailyAmount", 250); - await Promise.all([ - this.users.cache - .get(vote.id) - ?.send({ - embeds: [ - new EmbedBuilder() - .setTitle("Thank you for your support! 🎉") - .setDescription( - `You received ${amount} ${this.money.currencyName} ${this.money.currencySymbol}` - ) - .setFooter({ - text: "🧡", - }) - .setColor(Constants.kaikiOrange), - ], - }) - // Ignore failed DMs - .catch(() => undefined), - this.money.add( - vote.id, - BigInt(amount), - "Voted - DiscordBotList" - ), - ]); - }); - } } diff --git a/src/lib/Types/Miscellaneous.ts b/src/lib/Types/Miscellaneous.ts index 837b5f37..a838e3ca 100644 --- a/src/lib/Types/Miscellaneous.ts +++ b/src/lib/Types/Miscellaneous.ts @@ -12,3 +12,4 @@ export type Categories = | "Roles" | "Server settings" | "Utility"; + diff --git a/src/listeners/guildCreate.ts b/src/listeners/guildCreate.ts index 83552b69..1e1a65f8 100644 --- a/src/listeners/guildCreate.ts +++ b/src/listeners/guildCreate.ts @@ -8,9 +8,14 @@ import { Guild } from "discord.js"; }) export default class GuildCreate extends Listener { public async run(guild: Guild) { + guild.client.logger.info( `\nBot was added to ${colorette.green(guild.name)} | Size: ${guild.memberCount} members!\n` ); - await guild.client.anniversaryService.checkBirthdayOnAdd(guild); + + await Promise.all([ + guild.client.anniversaryService.checkBirthdayOnAdd(guild), + guild.members.fetch() + ]) } } diff --git a/src/listeners/nonPrefixedMessage.ts b/src/listeners/nonPrefixedMessage.ts index a5819737..235a4bcb 100644 --- a/src/listeners/nonPrefixedMessage.ts +++ b/src/listeners/nonPrefixedMessage.ts @@ -1,10 +1,9 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Events, Listener, ListenerOptions } from "@sapphire/framework"; -import { EmbedBuilder, Message } from "discord.js"; +import { Message } from "discord.js"; import KaikiCache from "../lib/Cache/KaikiCache"; import { DadBot } from "../lib/DadBot"; import Emotes from "../lib/Emotes/Emotes"; -import KaikiUtil from "../lib/KaikiUtil"; @ApplyOptions({ event: Events.NonPrefixedMessage, From 308d1464bd60229bfb15ce22d1a804185d8a8a96 Mon Sep 17 00:00:00 2001 From: Cata Date: Fri, 5 Jul 2024 01:26:58 +0200 Subject: [PATCH 22/44] 6.1.20-0 --- CHANGELOG.md | 10 +++++++++- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b85bd019..e14811f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.19](https://github.com/cataclym/KaikiBot/compare/v6.1.18...v6.1.19) +## [v6.1.20-0](https://github.com/cataclym/KaikiBot/compare/v6.1.19...v6.1.20-0) + +### Commits + +- Change: fetching members & enum types in api endpoints [`c9c764d`](https://github.com/cataclym/KaikiBot/commit/c9c764d53ad8232a4990fcccdc7481f95074cce1) +- Updated user number strings; Removed broken animequote cmd [`4148b5b`](https://github.com/cataclym/KaikiBot/commit/4148b5b6a586678c9adf0f9c0a5fe4a8625d8043) +- Hotfix bf [`51e14f8`](https://github.com/cataclym/KaikiBot/commit/51e14f85aa6dcd0abb188f5d9eab292619c446ca) + +## [v6.1.19](https://github.com/cataclym/KaikiBot/compare/v6.1.18...v6.1.19) - 2024-06-29 ### Commits diff --git a/package-lock.json b/package-lock.json index db7c402f..e192dfbc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kaikideishubot", - "version": "6.1.19", + "version": "6.1.20-0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kaikideishubot", - "version": "6.1.19", + "version": "6.1.20-0", "license": "MIT", "dependencies": { "@prisma/client": "^5.10.2", diff --git a/package.json b/package.json index bb354744..a6bd30d2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kaikideishubot", - "version": "6.1.19", + "version": "6.1.20-0", "main": "./dist/index.js", "scripts": { "start_docker": "npx prisma db push && npm run start", From d6a45254aea94f74bbfe5c5e0832876fd4f62a17 Mon Sep 17 00:00:00 2001 From: Cata Date: Fri, 5 Jul 2024 23:56:06 +0200 Subject: [PATCH 23/44] Removed: locally saved cache - does not work. --- src/commands/Owner only/die.ts | 14 +--------- src/lib/Cache/KaikiCache.ts | 39 ++-------------------------- src/lib/Kaiki/KaikiSapphireClient.ts | 4 +-- 3 files changed, 4 insertions(+), 53 deletions(-) diff --git a/src/commands/Owner only/die.ts b/src/commands/Owner only/die.ts index 47b8cd57..50700544 100644 --- a/src/commands/Owner only/die.ts +++ b/src/commands/Owner only/die.ts @@ -2,17 +2,12 @@ import process from "process"; import { ApplyOptions } from "@sapphire/decorators"; import { ActionRowBuilder, - ButtonBuilder, - EmbedBuilder, GuildMember, - InteractionCollector, + ButtonBuilder, EmbedBuilder, InteractionCollector, Message, - Snowflake, } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; import { Args } from "@sapphire/framework"; -import fs from "fs/promises"; -import { GuildMemberCache } from "../../lib/Cache/KaikiCache"; @ApplyOptions({ name: "die", @@ -89,15 +84,8 @@ export default class KillBotProcess extends KaikiCommand { private async shutdown(message: Message): Promise { - const guildMemberCache: GuildMemberCache = {}; - - for (const [, v] of message.client.guilds.cache) { - guildMemberCache[v.id] = v.members.cache - } - await Promise.all([ message.react("✅"), - fs.writeFile(`./members-${Date.now()}.cache`, JSON.stringify(guildMemberCache)) ]); this.container.logger.warn("Shutting down"); diff --git a/src/lib/Cache/KaikiCache.ts b/src/lib/Cache/KaikiCache.ts index 3c36f2f6..01300727 100644 --- a/src/lib/Cache/KaikiCache.ts +++ b/src/lib/Cache/KaikiCache.ts @@ -1,5 +1,5 @@ import pkg from "@prisma/client"; -import { Collection, GuildMember, Message, Snowflake } from "discord.js"; +import { Message, Snowflake } from "discord.js"; import { Pool, ResultSetHeader, RowDataPacket } from "mysql2/promise"; import { APIs, ClientImageAPIs } from "../APIs/Common/Types"; import KaikiUtil from "../KaikiUtil"; @@ -11,16 +11,12 @@ import { PartitionResult, TriggerString, } from "../Interfaces/Kaiki/KaikiCache"; -import fs from "fs/promises"; -import { container } from "@sapphire/pieces"; export enum ERCacheType { HAS_SPACE, NO_SPACE, } -export type GuildMemberCache = {[key: Snowflake]: Collection} - export default class KaikiCache { public cmdStatsCache: Map; public emoteReactCache: EmoteReactCache; @@ -182,38 +178,7 @@ export default class KaikiCache { new Map>() ); }); - } - - public async readSavedCache() { - const files = await fs.readdir(".") - const caches = files.filter(f => f.endsWith(".cache")); - - for (const filePath of caches) { - - const content = await fs.readFile(filePath, { encoding: "utf-8" }) - - if (!content) { - await fs.unlink(filePath) - continue; - } - - const guildMembersCache: GuildMemberCache = JSON.parse(content) - - for (const [k, v] of Object.entries(guildMembersCache)) { - - const cache = container.client.guilds.cache.get(k)?.members.cache; - const localCache = new Collection(v.entries()); - - if (!cache || !localCache?.size) continue; - - for (const [key, member] of localCache.entries()) { - cache.set(key, member); - } - } - await fs.unlink(filePath) - } - } -} + }} class MySQLDailyProvider { private connection: Pool; diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index a5b7fea0..1f0a198e 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -4,7 +4,6 @@ import { type PrismaClient } from "@prisma/client"; import { LogLevel, SapphireClient } from "@sapphire/framework"; import * as colorette from "colorette"; import { - Collection, EmbedBuilder, GatewayIntentBits, Guild, @@ -13,7 +12,7 @@ import { User, } from "discord.js"; import { Pool } from "mysql2/promise"; -import KaikiCache, { GuildMemberCache } from "../Cache/KaikiCache"; +import KaikiCache from "../Cache/KaikiCache"; import Constants from "../../struct/Constants"; import Database from "../../struct/db/Database"; import DatabaseProvider from "../../struct/db/DatabaseProvider"; @@ -150,7 +149,6 @@ export default class KaikiSapphireClient await Promise.all([ client.filterOptionalCommands(), client.sendOnlineMsg(), - client.cache.readSavedCache() ]); } From 1f40272b59c0e6c6f4c843235a4f78fdaf5b0ed8 Mon Sep 17 00:00:00 2001 From: Cata Date: Sat, 6 Jul 2024 00:05:12 +0200 Subject: [PATCH 24/44] 6.1.20-1 --- CHANGELOG.md | 8 +++++++- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e14811f2..7205dc94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.20-0](https://github.com/cataclym/KaikiBot/compare/v6.1.19...v6.1.20-0) +## [v6.1.20-1](https://github.com/cataclym/KaikiBot/compare/v6.1.20-0...v6.1.20-1) + +### Commits + +- Removed: locally saved cache - does not work. [`d6a4525`](https://github.com/cataclym/KaikiBot/commit/d6a45254aea94f74bbfe5c5e0832876fd4f62a17) + +## [v6.1.20-0](https://github.com/cataclym/KaikiBot/compare/v6.1.19...v6.1.20-0) - 2024-07-05 ### Commits diff --git a/package-lock.json b/package-lock.json index e192dfbc..095a2f15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kaikideishubot", - "version": "6.1.20-0", + "version": "6.1.20-1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kaikideishubot", - "version": "6.1.20-0", + "version": "6.1.20-1", "license": "MIT", "dependencies": { "@prisma/client": "^5.10.2", diff --git a/package.json b/package.json index a6bd30d2..e444c9fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kaikideishubot", - "version": "6.1.20-0", + "version": "6.1.20-1", "main": "./dist/index.js", "scripts": { "start_docker": "npx prisma db push && npm run start", From f0a32bae59b68e92120988ab191585833c4f7638 Mon Sep 17 00:00:00 2001 From: Cata Date: Mon, 22 Jul 2024 17:34:26 +0200 Subject: [PATCH 25/44] Added: Daily reminders --- package.json | 2 +- .../migration.sql | 5 ++ prisma/schema.prisma | 11 ++-- src/commands/Gambling/daily.ts | 13 +++- src/lib/Cache/KaikiCache.ts | 17 +----- src/lib/Gambling/Gambling.ts | 61 +++++++++++++++++++ src/lib/Kaiki/KaikiSapphireClient.ts | 43 +++++++++++-- 7 files changed, 124 insertions(+), 28 deletions(-) create mode 100644 prisma/migrations/20240719160742_add_daily_reminder/migration.sql diff --git a/package.json b/package.json index e444c9fb..faef8145 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "start_docker": "npx prisma db push && npm run start", "start": "node dist/index.js --color", - "build": "rm -rf dist/ && tsc -p tsconfig.json", + "build": "rm -rf dist/ && tsc -p tsconfig.json && npx prisma migrate deploy", "version": "auto-changelog -p -u -o CHANGELOG.md -t keepachangelog && git add CHANGELOG.md", "watch": "tsc -p tsconfig.json -w", "dev": "npm run watch & npm run start_docker", diff --git a/prisma/migrations/20240719160742_add_daily_reminder/migration.sql b/prisma/migrations/20240719160742_add_daily_reminder/migration.sql new file mode 100644 index 00000000..8adb37e7 --- /dev/null +++ b/prisma/migrations/20240719160742_add_daily_reminder/migration.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE `BotSettings` MODIFY `CurrencySymbol` VARCHAR(255) NOT NULL DEFAULT '💴'; + +-- AlterTable +ALTER TABLE `DiscordUsers` ADD COLUMN `DailyReminder` DATETIME(3) NULL; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 4ca01e05..5c963562 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -57,11 +57,12 @@ model ExcludedStickyRoles { } model DiscordUsers { - UserId BigInt @id @unique(map: "UserId") - Amount BigInt @default(0) - ClaimedDaily Boolean @default(false) - CreatedAt DateTime @default(now()) @db.Timestamp(0) - Todos Todos[] + UserId BigInt @id @unique(map: "UserId") + Amount BigInt @default(0) + ClaimedDaily Boolean @default(false) + DailyReminder DateTime? + CreatedAt DateTime @default(now()) @db.Timestamp(0) + Todos Todos[] } model EmojiReactions { diff --git a/src/commands/Gambling/daily.ts b/src/commands/Gambling/daily.ts index 9edc440d..d147742b 100644 --- a/src/commands/Gambling/daily.ts +++ b/src/commands/Gambling/daily.ts @@ -1,9 +1,10 @@ import { ApplyOptions } from "@sapphire/decorators"; -import { EmbedBuilder, Message, time } from "discord.js"; +import { ActionRowBuilder, ButtonBuilder, EmbedBuilder, Message, time } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; import KaikiEmbeds from "../../lib/Kaiki/KaikiEmbeds"; import KaikiUtil from "../../lib/KaikiUtil"; +import Gambling from "../../lib/Gambling/Gambling"; @ApplyOptions({ name: "daily", @@ -41,6 +42,10 @@ export default class ClaimDailyCommand extends KaikiCommand { }); } + const gambling = new Gambling(message.author); + const button = gambling.createDailyReminder(); + const actionRow = [new ActionRowBuilder().setComponents(button)]; + if ( !(await this.client.cache.dailyProvider.hasClaimedDaily( message.author.id @@ -54,6 +59,7 @@ export default class ClaimDailyCommand extends KaikiCommand { ); return message.channel.send({ + components: actionRow, embeds: [ new EmbedBuilder() .setDescription( @@ -61,9 +67,10 @@ export default class ClaimDailyCommand extends KaikiCommand { ) .withOkColor(message), ], - }); + }).then(msg => gambling.handleReminder(msg)); } else { return message.channel.send({ + components: actionRow, embeds: [ new EmbedBuilder() .setDescription( @@ -71,7 +78,7 @@ export default class ClaimDailyCommand extends KaikiCommand { ) .withErrorColor(message), ], - }); + }).then(msg => gambling.handleReminder(msg)); } } } diff --git a/src/lib/Cache/KaikiCache.ts b/src/lib/Cache/KaikiCache.ts index 01300727..9bd96599 100644 --- a/src/lib/Cache/KaikiCache.ts +++ b/src/lib/Cache/KaikiCache.ts @@ -18,10 +18,10 @@ export enum ERCacheType { } export default class KaikiCache { - public cmdStatsCache: Map; - public emoteReactCache: EmoteReactCache; + public cmdStatsCache = new Map(); + public emoteReactCache = new Map>>(); public dailyProvider: MySQLDailyProvider; - public imageAPICache: Map>>; + public imageAPICache = new Map>>(); private imageAPIs: ClientImageAPIs; constructor( @@ -29,19 +29,8 @@ export default class KaikiCache { connection: Pool, imageAPIs: ClientImageAPIs ) { - this.cmdStatsCache = new Map(); this.dailyProvider = new MySQLDailyProvider(connection); - this.emoteReactCache = new Map< - GuildString, - Map> - >(); - - // API cache this.imageAPIs = imageAPIs; - this.imageAPICache = new Map< - APIs, - Map> - >(); void this.init(orm); this.populateImageAPICache(); diff --git a/src/lib/Gambling/Gambling.ts b/src/lib/Gambling/Gambling.ts index 950c540a..4bbdefec 100644 --- a/src/lib/Gambling/Gambling.ts +++ b/src/lib/Gambling/Gambling.ts @@ -1,4 +1,6 @@ import { SlotResult } from "../../commands/Gambling/slots"; +import { ButtonBuilder, ButtonStyle, ComponentType, EmbedBuilder, Message, Snowflake, time, User } from "discord.js"; +import KaikiUtil from "../KaikiUtil"; export default class Gambling { static readonly slotDict: { [num: number]: string } = Object.freeze({ @@ -47,4 +49,63 @@ ${arr[6]} - ${arr[7]} - ${arr[8]} numbers: [arr[3], arr[4], arr[5]], }; } + + private customIDs = new Map(); + private author: User; + + public constructor(author: User) { + this.author = author; + } + + public createDailyReminder() { + + const random = String(new Date().getSeconds() * Math.random()) + this.customIDs.set(this.author.id, random) + + return new ButtonBuilder() + .setCustomId(random) + .setLabel("⏲️ Remind me") + .setStyle(ButtonStyle.Primary) + } + + public async handleReminder(msg: Message) { + const { author, customIDs } = this; + + const messageComponent = await msg.awaitMessageComponent({ + filter: i => { + i.deferUpdate(); + return i.user === author && i.customId === customIDs.get(author.id) + }, + componentType: ComponentType.Button, + time: 60000 + }).catch(() => msg.edit({ components: [] })); + + if (messageComponent instanceof Message) return; + + const reminder = new Date(Date.now() + KaikiUtil.timeToMidnightOrNoon()); + + await Promise.all([ + msg.client.orm.discordUsers.upsert({ + where: { + UserId: BigInt(this.author.id), + }, + create: { + UserId: BigInt(this.author.id), + DailyReminder: reminder, + }, + update: { + DailyReminder: reminder, + }, + }), + msg.edit({ components: [] }), + msg.reply({ + options: { ephemeral: true }, + embeds: [ + new EmbedBuilder() + .setDescription(`I will notify you in ${time(new Date(new Date().getTime() + KaikiUtil.timeToMidnightOrNoon()), "R")}`) + .withOkColor(msg) + ] + }) + ]); + } } diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index 1f0a198e..67d5e28a 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -223,14 +223,47 @@ export default class KaikiSapphireClient private async resetTimer(): Promise { setTimeout(async () => { - // Loop this - await this.resetTimer(); - - // Reset daily currency claims - await this.resetDailyClaims(); + await Promise.all([ + // Loop this + this.resetTimer(), + // Reset daily currency claims + this.resetDailyClaims(), + this.sendDailyReminders() + ]) }, KaikiUtil.timeToMidnightOrNoon()); } + private async sendDailyReminders() { + const users = await this.orm.discordUsers.findMany({ + where: { + DailyReminder: { + not: undefined + } + } + }) + + await Promise.all(users.map(async (user) => this.users.cache.get(String(user.UserId)) + ?.send({ + embeds: [ + new EmbedBuilder() + .setTitle("Reminder") + .setDescription("Your currency claim is ready!") + .withOkColor() + ] + }))); + + await this.orm.discordUsers.updateMany({ + where: { + DailyReminder: { + not: undefined + } + }, + data: { + DailyReminder: undefined + } + }) + } + public async initializeServices() { this.anniversaryService = new AnniversaryRolesService(this); From 3938e89f07eb4e134b84b36e89b2424b66c543a7 Mon Sep 17 00:00:00 2001 From: Cata Date: Tue, 23 Jul 2024 02:40:42 +0200 Subject: [PATCH 26/44] 6.1.20-2 --- CHANGELOG.md | 8 +++++++- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7205dc94..57b3392a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.20-1](https://github.com/cataclym/KaikiBot/compare/v6.1.20-0...v6.1.20-1) +## [v6.1.20-2](https://github.com/cataclym/KaikiBot/compare/v6.1.20-1...v6.1.20-2) + +### Commits + +- Added: Daily reminders [`f0a32ba`](https://github.com/cataclym/KaikiBot/commit/f0a32bae59b68e92120988ab191585833c4f7638) + +## [v6.1.20-1](https://github.com/cataclym/KaikiBot/compare/v6.1.20-0...v6.1.20-1) - 2024-07-06 ### Commits diff --git a/package-lock.json b/package-lock.json index 095a2f15..71258d59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kaikideishubot", - "version": "6.1.20-1", + "version": "6.1.20-2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kaikideishubot", - "version": "6.1.20-1", + "version": "6.1.20-2", "license": "MIT", "dependencies": { "@prisma/client": "^5.10.2", diff --git a/package.json b/package.json index faef8145..d5ee41e2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kaikideishubot", - "version": "6.1.20-1", + "version": "6.1.20-2", "main": "./dist/index.js", "scripts": { "start_docker": "npx prisma db push && npm run start", From b203cee6ddaa3fba7386596c3413cf87e6634117 Mon Sep 17 00:00:00 2001 From: Cata Date: Sat, 3 Aug 2024 21:03:28 +0200 Subject: [PATCH 27/44] 6.1.20-3 --- CHANGELOG.md | 4 +++- package-lock.json | 4 ++-- package.json | 2 +- src/lib/Gambling/Gambling.ts | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57b3392a..09b0ddd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.20-2](https://github.com/cataclym/KaikiBot/compare/v6.1.20-1...v6.1.20-2) +## [v6.1.20-3](https://github.com/cataclym/KaikiBot/compare/v6.1.20-2...v6.1.20-3) + +## [v6.1.20-2](https://github.com/cataclym/KaikiBot/compare/v6.1.20-1...v6.1.20-2) - 2024-07-23 ### Commits diff --git a/package-lock.json b/package-lock.json index 71258d59..43390b19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kaikideishubot", - "version": "6.1.20-2", + "version": "6.1.20-3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kaikideishubot", - "version": "6.1.20-2", + "version": "6.1.20-3", "license": "MIT", "dependencies": { "@prisma/client": "^5.10.2", diff --git a/package.json b/package.json index d5ee41e2..481f614a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kaikideishubot", - "version": "6.1.20-2", + "version": "6.1.20-3", "main": "./dist/index.js", "scripts": { "start_docker": "npx prisma db push && npm run start", diff --git a/src/lib/Gambling/Gambling.ts b/src/lib/Gambling/Gambling.ts index 4bbdefec..3a83a218 100644 --- a/src/lib/Gambling/Gambling.ts +++ b/src/lib/Gambling/Gambling.ts @@ -102,7 +102,7 @@ ${arr[6]} - ${arr[7]} - ${arr[8]} options: { ephemeral: true }, embeds: [ new EmbedBuilder() - .setDescription(`I will notify you in ${time(new Date(new Date().getTime() + KaikiUtil.timeToMidnightOrNoon()), "R")}`) + .setDescription(`I will notify you ${time(new Date(new Date().getTime() + KaikiUtil.timeToMidnightOrNoon()), "R")}`) .withOkColor(msg) ] }) From ec11afe32b27bb3aa7878fe59f4b01877c2a3cce Mon Sep 17 00:00:00 2001 From: Cata Date: Sun, 4 Aug 2024 00:06:10 +0200 Subject: [PATCH 28/44] Added prisma generate to build script --- package.json | 2 +- src/lib/APIs/AnilistGraphQL.ts | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 481f614a..44a60a59 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "start_docker": "npx prisma db push && npm run start", "start": "node dist/index.js --color", - "build": "rm -rf dist/ && tsc -p tsconfig.json && npx prisma migrate deploy", + "build": "rm -rf dist/ && npx prisma generate && tsc -p tsconfig.json && npx prisma migrate deploy", "version": "auto-changelog -p -u -o CHANGELOG.md -t keepachangelog && git add CHANGELOG.md", "watch": "tsc -p tsconfig.json -w", "dev": "npm run watch & npm run start_docker", diff --git a/src/lib/APIs/AnilistGraphQL.ts b/src/lib/APIs/AnilistGraphQL.ts index a201282e..ba7834c1 100644 --- a/src/lib/APIs/AnilistGraphQL.ts +++ b/src/lib/APIs/AnilistGraphQL.ts @@ -127,7 +127,5 @@ query ($page: Int, $perPage: Int, $search: String, $type: MediaType) { return await (response.ok ? json : Promise.reject(json)); } - static handleError(error: never) { - container.logger.error(error); - } + static handleError = (error: never) => container.logger.error(error); } From 2ac79fae87d5b3cf1bdf62c9f265fabd270c068e Mon Sep 17 00:00:00 2001 From: Cata Date: Sun, 4 Aug 2024 09:52:11 +0200 Subject: [PATCH 29/44] Hotfix for bad filtering?? --- src/lib/Kaiki/KaikiSapphireClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index 67d5e28a..98d32dc6 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -237,7 +237,7 @@ export default class KaikiSapphireClient const users = await this.orm.discordUsers.findMany({ where: { DailyReminder: { - not: undefined + not: null } } }) From cbb852444e21d255b9372d40b448baf4f585880f Mon Sep 17 00:00:00 2001 From: Cata Date: Sun, 4 Aug 2024 09:52:32 +0200 Subject: [PATCH 30/44] 6.1.20-4 --- CHANGELOG.md | 9 ++++++++- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 09b0ddd1..361e1f34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.20-3](https://github.com/cataclym/KaikiBot/compare/v6.1.20-2...v6.1.20-3) +## [v6.1.20-4](https://github.com/cataclym/KaikiBot/compare/v6.1.20-3...v6.1.20-4) + +### Commits + +- Added prisma generate to build script [`ec11afe`](https://github.com/cataclym/KaikiBot/commit/ec11afe32b27bb3aa7878fe59f4b01877c2a3cce) +- Hotfix for bad filtering?? [`2ac79fa`](https://github.com/cataclym/KaikiBot/commit/2ac79fae87d5b3cf1bdf62c9f265fabd270c068e) + +## [v6.1.20-3](https://github.com/cataclym/KaikiBot/compare/v6.1.20-2...v6.1.20-3) - 2024-08-03 ## [v6.1.20-2](https://github.com/cataclym/KaikiBot/compare/v6.1.20-1...v6.1.20-2) - 2024-07-23 diff --git a/package-lock.json b/package-lock.json index 43390b19..75150d52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kaikideishubot", - "version": "6.1.20-3", + "version": "6.1.20-4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kaikideishubot", - "version": "6.1.20-3", + "version": "6.1.20-4", "license": "MIT", "dependencies": { "@prisma/client": "^5.10.2", diff --git a/package.json b/package.json index 44a60a59..cd69556e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kaikideishubot", - "version": "6.1.20-3", + "version": "6.1.20-4", "main": "./dist/index.js", "scripts": { "start_docker": "npx prisma db push && npm run start", From 415fa8b883f1ad099aa5619aa14ee30652a4443f Mon Sep 17 00:00:00 2001 From: Cata Date: Sun, 4 Aug 2024 10:01:29 +0200 Subject: [PATCH 31/44] forgot something --- src/lib/Kaiki/KaikiSapphireClient.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index 98d32dc6..ed76af5e 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -255,11 +255,11 @@ export default class KaikiSapphireClient await this.orm.discordUsers.updateMany({ where: { DailyReminder: { - not: undefined + not: null } }, data: { - DailyReminder: undefined + DailyReminder: null } }) } From 907c74334975812d7bf6e42a0346022fcd901ff5 Mon Sep 17 00:00:00 2001 From: Cata Date: Sun, 4 Aug 2024 10:01:34 +0200 Subject: [PATCH 32/44] 6.1.20-5 --- CHANGELOG.md | 8 +++++++- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 361e1f34..2201221b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.20-4](https://github.com/cataclym/KaikiBot/compare/v6.1.20-3...v6.1.20-4) +## [v6.1.20-5](https://github.com/cataclym/KaikiBot/compare/v6.1.20-4...v6.1.20-5) + +### Commits + +- forgot something [`415fa8b`](https://github.com/cataclym/KaikiBot/commit/415fa8b883f1ad099aa5619aa14ee30652a4443f) + +## [v6.1.20-4](https://github.com/cataclym/KaikiBot/compare/v6.1.20-3...v6.1.20-4) - 2024-08-04 ### Commits diff --git a/package-lock.json b/package-lock.json index 75150d52..01758b21 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kaikideishubot", - "version": "6.1.20-4", + "version": "6.1.20-5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kaikideishubot", - "version": "6.1.20-4", + "version": "6.1.20-5", "license": "MIT", "dependencies": { "@prisma/client": "^5.10.2", diff --git a/package.json b/package.json index cd69556e..37a5de95 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kaikideishubot", - "version": "6.1.20-4", + "version": "6.1.20-5", "main": "./dist/index.js", "scripts": { "start_docker": "npx prisma db push && npm run start", From 7d8ac3e90c56ba8a1e67dc6b0a0cbd64f835388f Mon Sep 17 00:00:00 2001 From: Cata Date: Tue, 6 Aug 2024 06:56:17 +0200 Subject: [PATCH 33/44] 6.1.20 --- CHANGELOG.md | 4 +++- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2201221b..f07edd6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.20-5](https://github.com/cataclym/KaikiBot/compare/v6.1.20-4...v6.1.20-5) +## [v6.1.20](https://github.com/cataclym/KaikiBot/compare/v6.1.20-5...v6.1.20) + +## [v6.1.20-5](https://github.com/cataclym/KaikiBot/compare/v6.1.20-4...v6.1.20-5) - 2024-08-04 ### Commits diff --git a/package-lock.json b/package-lock.json index 01758b21..ca2a6599 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kaikideishubot", - "version": "6.1.20-5", + "version": "6.1.20", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kaikideishubot", - "version": "6.1.20-5", + "version": "6.1.20", "license": "MIT", "dependencies": { "@prisma/client": "^5.10.2", diff --git a/package.json b/package.json index 37a5de95..c77f3bd9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kaikideishubot", - "version": "6.1.20-5", + "version": "6.1.20", "main": "./dist/index.js", "scripts": { "start_docker": "npx prisma db push && npm run start", From 95e72e56cf06a51cd6f0ea927985e08eb26cb193 Mon Sep 17 00:00:00 2001 From: Cata Date: Sat, 24 Aug 2024 01:52:41 +0200 Subject: [PATCH 34/44] Dev: communication between bot/web --- .env.example | 7 +++++-- package.json | 1 + src/commands/Owner only/gencmdlist.ts | 4 ++-- src/lib/Kaiki/KaikiSapphireClient.ts | 15 +++++++++++++++ src/lib/ServerConfig/Config.ts | 2 +- 5 files changed, 24 insertions(+), 5 deletions(-) diff --git a/.env.example b/.env.example index aaecccf1..d210db09 100644 --- a/.env.example +++ b/.env.example @@ -19,5 +19,8 @@ NODE_ENV=production DADBOT_MAX_LENGTH=256 DADBOT_NICKNAME_LENGTH=32 DADBOT_DEFAULT_ROLENAME=Dadbot-excluded -#SELF_API= -#SELF_API_TOKEN= \ No newline at end of file + +# Web API +SELF_API_PORT=3636 +SELF_API_TOKEN= +CMDLIST_URL= \ No newline at end of file diff --git a/package.json b/package.json index c77f3bd9..684a8de8 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "discord.js": "^14.15.2", "discordbotlist-djs": "^0.0.4", "dotenv": "^16.4.5", + "express": "^4.19.2", "mysql2": "^3.10.0", "node-gyp": "^10.1.0", "prisma": "^5.10.2", diff --git a/src/commands/Owner only/gencmdlist.ts b/src/commands/Owner only/gencmdlist.ts index c26c46ff..7bd06155 100644 --- a/src/commands/Owner only/gencmdlist.ts +++ b/src/commands/Owner only/gencmdlist.ts @@ -22,7 +22,7 @@ import process from "process"; }) export default class GenCmdListCommand extends KaikiCommand { public async messageRun(message: Message) { - if (!process.env.SELF_API || !process.env.SELF_API_TOKEN) { + if (!process.env.CMDLIST_URL || !process.env.SELF_API_TOKEN) { return message.channel.send({ files: [ new AttachmentBuilder( @@ -43,7 +43,7 @@ export default class GenCmdListCommand extends KaikiCommand { const list = this.generateCommmandlist(); - const uri = new URL(process.env.SELF_API); + const uri = new URL(process.env.CMDLIST_URL); uri.searchParams.append("token", process.env.SELF_API_TOKEN); const res = await fetch(uri, { diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index ed76af5e..41270a82 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -33,6 +33,8 @@ import fs from "fs/promises"; import { container } from "@sapphire/pieces"; import NeofetchCommand from "../../commands/Fun/neofetch"; import DiscordBotListService from "../DiscordBotList/DiscordBotListService"; +import express from "express"; +import * as https from "node:https"; export default class KaikiSapphireClient extends SapphireClient @@ -422,4 +424,17 @@ export default class KaikiSapphireClient this.logger.fatal("Failed to connect to database using MySQL2.", e); process.exit(1); } + + private WebListener() { + if (!process.env.SELF_API_PORT) return; + + this.logger.info(`WebListener server is listening on port: ${process.env.SELF_API_PORT}`); + + const app = express(); + app.get("/API/UserCache/:id", async (req, res) => { + res.send({ title: "hello" }) + }) + + app.listen(process.env.SELF_API_PORT) + } } diff --git a/src/lib/ServerConfig/Config.ts b/src/lib/ServerConfig/Config.ts index f972b614..022b1ef9 100644 --- a/src/lib/ServerConfig/Config.ts +++ b/src/lib/ServerConfig/Config.ts @@ -16,7 +16,7 @@ import GreetHandler from "../GreetHandler"; import KaikiUtil from "../KaikiUtil"; export default class Config { - static async dadbotRun(message: Message, args: Args) { + static async dadbotRun(message: Message, args: Args) { Config.checkSubcommandUserPermission( message, PermissionsBitField.Flags.Administrator From 1e89615424946db2e999fc5230805d072864c86e Mon Sep 17 00:00:00 2001 From: Cata Date: Mon, 26 Aug 2024 15:38:45 +0200 Subject: [PATCH 35/44] WebAPI: Run and return requested user-data --- src/lib/Kaiki/KaikiSapphireClient.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index 41270a82..1c5934a0 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -34,7 +34,6 @@ import { container } from "@sapphire/pieces"; import NeofetchCommand from "../../commands/Fun/neofetch"; import DiscordBotListService from "../DiscordBotList/DiscordBotListService"; import express from "express"; -import * as https from "node:https"; export default class KaikiSapphireClient extends SapphireClient @@ -148,6 +147,8 @@ export default class KaikiSapphireClient `Bot owner: ${colorette.greenBright(client.owner.username)}` ); + this.WebListener(); + await Promise.all([ client.filterOptionalCommands(), client.sendOnlineMsg(), @@ -431,8 +432,19 @@ export default class KaikiSapphireClient this.logger.info(`WebListener server is listening on port: ${process.env.SELF_API_PORT}`); const app = express(); - app.get("/API/UserCache/:id", async (req, res) => { - res.send({ title: "hello" }) + app.get("/API/UserCache/:id", (req, res, next) => { + if (Number.isNaN(req.params.id)) return next(new Error("Invalid format")); + + const requestedUser = this.users.cache.get(req.params.id); + + if (!requestedUser) return next(new Error("User not found")); + + return res.send({ + user: requestedUser, + guilds: this.guilds.cache + .filter(guild => guild.members.cache.has(requestedUser.id)) + .map(guild => ({ id: guild.id, name: guild.name })) + }); }) app.listen(process.env.SELF_API_PORT) From 0c2eacc1eaae67fa469f3d3ecac5bd7238775ef8 Mon Sep 17 00:00:00 2001 From: Cata Date: Wed, 28 Aug 2024 17:41:54 +0200 Subject: [PATCH 36/44] fix docker compose build --- .env.example | 2 ++ Dockerfile.dev | 4 +++- db.yml | 17 +++++++++++++++++ docker-compose.dev.yml | 24 +++++------------------- 4 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 db.yml diff --git a/.env.example b/.env.example index d210db09..cb707827 100644 --- a/.env.example +++ b/.env.example @@ -14,6 +14,8 @@ DB_NAME=kaikidb # Docker NODE_DOCKER_PORT=8080 NODE_ENV=production +# Same as DATABASE_URL but with localhost instead of db as host. +DATABASE_URL_DOCKER_BUILD= # Bot settings DADBOT_MAX_LENGTH=256 diff --git a/Dockerfile.dev b/Dockerfile.dev index 42261315..fa51cf14 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -6,7 +6,9 @@ RUN apt update && curl -sLO https://github.com/fastfetch-cli/fastfetch/releases/ COPY package*.json ./ RUN npm install COPY prisma . -RUN npx prisma generate +ARG DATABASE_URL +ENV DATABASE_URL $DATABASE_URL +RUN npx prisma db pull && npx prisma generate COPY . ./ RUN npm run build CMD ["npm", "run", "dev"] diff --git a/db.yml b/db.yml new file mode 100644 index 00000000..dd5ede88 --- /dev/null +++ b/db.yml @@ -0,0 +1,17 @@ +services: + db: + image: mariadb:latest + restart: unless-stopped + env_file: ./.env + command: --wait-timeout=28800 + ports: + - "3306:3306" + environment: + - MYSQL_ROOT_PASSWORD=$DB_ROOT_PASSWORD + - MYSQL_DATABASE=$DB_NAME + - MYSQL_USER=$DB_USER + - MYSQL_PASSWORD=$DB_PASSWORD + volumes: + - db:/var/lib/mysql +volumes: + db: diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 2b208bd5..ab7ef577 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,33 +1,19 @@ -version: "3.8" +include: + - db.yml services: - db: - image: mariadb:latest - restart: unless-stopped - env_file: ./.env - command: --wait-timeout=28800 - ports: - - "3307:3306" - environment: - - MYSQL_ROOT_PASSWORD=$DB_ROOT_PASSWORD - - MYSQL_DATABASE=$DB_NAME - - MYSQL_USER=$DB_USER - - MYSQL_PASSWORD=$DB_PASSWORD - volumes: - - db:/var/lib/mysql kaikibot: depends_on: - db build: context: . dockerfile: Dockerfile.dev + network: host args: - - DATABASE_URL=$DATABASE_URL + - DATABASE_URL=$DATABASE_URL_DOCKER_BUILD restart: unless-stopped env_file: ./.env stdin_open: true tty: true volumes: - - ./src:/usr/app/src -volumes: - db: + - ./src:/usr/app/src \ No newline at end of file From 81735ecdabd7a3105dae5d6e101cf468c59bf745 Mon Sep 17 00:00:00 2001 From: Cata Date: Wed, 28 Aug 2024 23:47:17 +0200 Subject: [PATCH 37/44] Improved formatting in anime and manga commands --- package-lock.json | 32 ++++++++++++++------- package.json | 7 ++--- src/commands/Anime/anime.ts | 19 +++++------- src/commands/Anime/manga.ts | 26 ++++------------- src/index.ts | 2 +- src/lib/Anime/{CommonEmbed.ts => Common.ts} | 15 ++++++++-- src/lib/Interfaces/Common/AnimeData.ts | 6 ++-- src/lib/WebAPI/Webserver.ts | 0 8 files changed, 53 insertions(+), 54 deletions(-) rename src/lib/Anime/{CommonEmbed.ts => Common.ts} (62%) create mode 100644 src/lib/WebAPI/Webserver.ts diff --git a/package-lock.json b/package-lock.json index ca2a6599..0b3f55c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,8 @@ "discord.js": "^14.15.2", "discordbotlist-djs": "^0.0.4", "dotenv": "^16.4.5", - "mysql2": "^3.10.0", + "express": "^4.19.2", + "mysql2": "^3.11.0", "node-gyp": "^10.1.0", "prisma": "^5.10.2", "sharp": "^0.33.3", @@ -1674,6 +1675,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.1.tgz", + "integrity": "sha512-+H+kuK34PfMaI9PNU/NSjBKL5hh/KDM9J72kwYeYEm0A8B1AC4fuCy3qsjnA7lxklgyXsB68yn8Z2xoZEjgwCQ==", + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2151,9 +2160,9 @@ } }, "node_modules/discordbotlist-djs/node_modules/undici": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.18.2.tgz", - "integrity": "sha512-o/MQLTwRm9IVhOqhZ0NQ9oXax1ygPjw6Vs+Vq/4QRjbOAC3B1GCHy7TYxxbExKlb7bzDRzt9vBWU6BDz0RFfYg==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", + "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", "engines": { "node": ">=18.17" } @@ -3785,12 +3794,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "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.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -3989,10 +3998,11 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/mysql2": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.0.tgz", - "integrity": "sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.0.tgz", + "integrity": "sha512-J9phbsXGvTOcRVPR95YedzVSxJecpW5A5+cQ57rhHIFXteTP10HCs+VBjS7DHIKfEaI1zQ5tlVrquCd64A6YvA==", "dependencies": { + "aws-ssl-profiles": "^1.1.1", "denque": "^2.1.0", "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", diff --git a/package.json b/package.json index 684a8de8..23f6a0bf 100644 --- a/package.json +++ b/package.json @@ -3,12 +3,11 @@ "version": "6.1.20", "main": "./dist/index.js", "scripts": { - "start_docker": "npx prisma db push && npm run start", "start": "node dist/index.js --color", - "build": "rm -rf dist/ && npx prisma generate && tsc -p tsconfig.json && npx prisma migrate deploy", + "build": "rm -rf dist/ && npx prisma migrate deploy && npx prisma generate && tsc -p tsconfig.json", "version": "auto-changelog -p -u -o CHANGELOG.md -t keepachangelog && git add CHANGELOG.md", "watch": "tsc -p tsconfig.json -w", - "dev": "npm run watch & npm run start_docker", + "dev": "npm run watch & npm run start", "lint": "eslint ." }, "keywords": [ @@ -36,7 +35,7 @@ "discordbotlist-djs": "^0.0.4", "dotenv": "^16.4.5", "express": "^4.19.2", - "mysql2": "^3.10.0", + "mysql2": "^3.11.0", "node-gyp": "^10.1.0", "prisma": "^5.10.2", "sharp": "^0.33.3", diff --git a/src/commands/Anime/anime.ts b/src/commands/Anime/anime.ts index ef9f180b..7524d765 100644 --- a/src/commands/Anime/anime.ts +++ b/src/commands/Anime/anime.ts @@ -1,8 +1,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Args } from "@sapphire/framework"; import { EmbedBuilder, Message } from "discord.js"; - -import CommonEmbed from "../../lib/Anime/CommonEmbed"; +import Common from "../../lib/Anime/Common"; import AnilistGraphQL from "../../lib/APIs/AnilistGraphQL"; import AnimeData from "../../lib/Interfaces/Common/AnimeData"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; @@ -53,17 +52,13 @@ export default class AnimeCommand extends KaikiCommand { endDate, siteUrl, } = response.data.Page.media[0]; - const monthFormat = new Intl.DateTimeFormat("en-US", { - month: "long", - }); - const started = `${monthFormat.format(startDate.month)} ${startDate.day}, ${startDate.year}`; - const ended = `${monthFormat.format(endDate.month)} ${endDate.day}, ${endDate.year}`; - const aired = - started === ended ? started : `${started} to ${ended}`; + + const started = Common.formatDate(startDate); + const airedText = Object.values(endDate).some(Boolean) ? `${started} to ${Common.formatDate(endDate)}` : started; return message.channel.send({ embeds: [ - CommonEmbed.createEmbed( + Common.createEmbed( coverImage, title, siteUrl, @@ -75,10 +70,10 @@ export default class AnimeCommand extends KaikiCommand { { name: "Format", value: format, inline: true }, { name: "Episodes", - value: String(episodes), + value: String(episodes || "N/A"), inline: true, }, - { name: "Aired", value: aired, inline: true }, + { name: "Aired", value: airedText, inline: true }, { name: "Status", value: status, inline: true }, { name: "Genres", diff --git a/src/commands/Anime/manga.ts b/src/commands/Anime/manga.ts index bb28d935..126ccdcd 100644 --- a/src/commands/Anime/manga.ts +++ b/src/commands/Anime/manga.ts @@ -1,9 +1,7 @@ import { ApplyOptions } from "@sapphire/decorators"; import { Args } from "@sapphire/framework"; import { EmbedBuilder, Message } from "discord.js"; - -import CommonEmbed from "../../lib/Anime/CommonEmbed"; - +import Common from "../../lib/Anime/Common"; import AnilistGraphQL from "../../lib/APIs/AnilistGraphQL"; import MangaData from "../../lib/Interfaces/Common/MangaData"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; @@ -55,25 +53,13 @@ export default class MangaCommand extends KaikiCommand { endDate, siteUrl, } = response.data.Page.media[0]; - const monthFormat = new Intl.DateTimeFormat("en-US", { - month: "long", - }); - const started = startDate.month - ? `${monthFormat.format(startDate.month)} ${startDate.day}, ${startDate.year}` - : null; - const ended = endDate.month - ? `${monthFormat.format(endDate.month)} ${endDate.day}, ${endDate.year}` - : null; - const aired = - started && ended - ? started === ended - ? started - : `${started} to ${ended}` - : started || "N/A"; + + const started = Common.formatDate(startDate); + const airedText = Object.values(endDate).some(Boolean) ? started : Common.formatDate(endDate); return message.channel.send({ embeds: [ - CommonEmbed.createEmbed( + Common.createEmbed( coverImage, title, siteUrl, @@ -89,7 +75,7 @@ export default class MangaCommand extends KaikiCommand { }, { name: "Release period", - value: aired, + value: airedText, inline: true, }, { name: "Status", value: status, inline: true }, diff --git a/src/index.ts b/src/index.ts index 14cc8acd..138df728 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,7 +5,7 @@ import "./extensions/Discord"; import "./extensions/Sapphire"; import "./struct/ErrorHandler"; import KaikiSapphireClient from "./lib/Kaiki/KaikiSapphireClient"; -import "source-map-support/register" +import "source-map-support/register"; import { config } from "dotenv"; // Load .env diff --git a/src/lib/Anime/CommonEmbed.ts b/src/lib/Anime/Common.ts similarity index 62% rename from src/lib/Anime/CommonEmbed.ts rename to src/lib/Anime/Common.ts index 9b022497..5f07ed5f 100644 --- a/src/lib/Anime/CommonEmbed.ts +++ b/src/lib/Anime/Common.ts @@ -1,9 +1,18 @@ import { EmbedBuilder, Guild, Message } from "discord.js"; import Constants from "../../struct/Constants"; -import { CoverImage, Title } from "../Interfaces/Common/AnimeData"; +import { CoverImage, EndDateClass as AnimeDateClass, Title } from "../Interfaces/Common/AnimeData"; +import { EndDateClass as MangaDateClass } from "../Interfaces/Common/MangaData"; import KaikiUtil from "../KaikiUtil"; -export default class CommonEmbed { +export default class Common { + static monthFormat = new Intl.DateTimeFormat("en-US", { + month: "long", + }); + + static formatDate(data: AnimeDateClass | MangaDateClass) { + return Object.values(data).some(Boolean) ? `${data.day} ${Common.monthFormat.format(data.month || 0)}, ${data.year}` : "N/A"; + } + static createEmbed = ( coverImage: CoverImage, title: Title, @@ -15,7 +24,7 @@ export default class CommonEmbed { .setImage(coverImage.large) .setTitle( title.english && title.romaji - ? title.english === title.romaji + ? title.english.toLowerCase() === title.romaji.toLowerCase() ? title.english : `${title.english} / ${title.romaji}` : title.english || title.romaji diff --git a/src/lib/Interfaces/Common/AnimeData.ts b/src/lib/Interfaces/Common/AnimeData.ts index 6da50ed4..3eb82352 100644 --- a/src/lib/Interfaces/Common/AnimeData.ts +++ b/src/lib/Interfaces/Common/AnimeData.ts @@ -43,9 +43,9 @@ export interface CoverImage { } export interface EndDateClass { - year: number; - month: number; - day: number; + year: number | null; + month: number | null; + day: number | null; } export interface ExternalLink { diff --git a/src/lib/WebAPI/Webserver.ts b/src/lib/WebAPI/Webserver.ts new file mode 100644 index 00000000..e69de29b From c1f7bbe6a822c995b5c85aa456766d82db92cb9a Mon Sep 17 00:00:00 2001 From: Ole Date: Mon, 2 Sep 2024 00:42:20 +0200 Subject: [PATCH 38/44] (Test) Update docker-image.yml --- .github/workflows/docker-image.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 59c3f70a..76ecbc71 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -7,8 +7,7 @@ on: jobs: build-and-publish-latest: - runs-on: self-hosted - + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v2.5.0 # Checking out the repo From e4ceea5578722e618b8ad32504cd918f1f7ad704 Mon Sep 17 00:00:00 2001 From: Cata Date: Tue, 24 Sep 2024 02:19:12 +0200 Subject: [PATCH 39/44] Reworked emote argument (UNTESTED) --- src/arguments/kaikiEmote.ts | 46 ++++++++++++++ src/commands/Emotes/addEmote.ts | 7 ++- src/commands/Owner only/gencmdlist.ts | 2 +- src/lib/Kaiki/KaikiArgumentsTypes.ts | 43 ------------- src/lib/Kaiki/KaikiSapphireClient.ts | 88 ++------------------------- src/lib/WebAPI/Webserver.ts | 59 ++++++++++++++++++ src/struct/db/Database.ts | 68 +++++++++++++++++++-- 7 files changed, 177 insertions(+), 136 deletions(-) create mode 100644 src/arguments/kaikiEmote.ts diff --git a/src/arguments/kaikiEmote.ts b/src/arguments/kaikiEmote.ts new file mode 100644 index 00000000..3a7a114a --- /dev/null +++ b/src/arguments/kaikiEmote.ts @@ -0,0 +1,46 @@ +import { Args, Argument, EmojiObject } from "@sapphire/framework"; +import { Snowflake } from "discord.js"; + +export class KaikiEmote extends Argument { + public async run(parameter: string, context: Argument.Context) { + + const emoji = await context.args + .pick("emoji") + .catch(() => undefined); + + if (isEmojiObject(emoji)) { + return Args.ok({ + name: emoji.name, + id: emoji.id, + url: `https://cdn.discordapp.com/emojis/${emoji.id}.${emoji.animated ? "gif" : "png"}`, + }); + } + + const url = await context.args + .pick("url") + .catch(() => undefined); + + if (url) return Args.ok(url.href); + + return this.error({ + parameter, + context + }); + } +} + +function isEmojiObject(emoji: EmojiObject | undefined): emoji is NonNullEmojiObject { + return emoji?.name != null && emoji?.id != null; +} + +type Emote = { + name: string, + id: Snowflake, + url: string, +} + +type NonNullEmojiObject = { + name: string, + id: string, + animated?: boolean +} diff --git a/src/commands/Emotes/addEmote.ts b/src/commands/Emotes/addEmote.ts index e54d83bd..ad88872b 100644 --- a/src/commands/Emotes/addEmote.ts +++ b/src/commands/Emotes/addEmote.ts @@ -12,8 +12,8 @@ import Constants from "../../struct/Constants"; name: "addemote", aliases: ["ae"], description: - "Adds an emote from an image link or attached image, with an optional name.", - usage: "image-link Emotename", + "Adds an emote from an image link or attached image, with an optional name. Or steal another servers emote.", + usage: ["image-link Emotename", ":CoolEmote:"], requiredUserPermissions: ["ManageEmojisAndStickers"], requiredClientPermissions: ["ManageEmojisAndStickers"], preconditions: ["GuildOnly"], @@ -21,6 +21,7 @@ import Constants from "../../struct/Constants"; }) export default class AddEmoteCommand extends KaikiCommand { public async messageRun(message: Message, args: Args) { + // Create custom type for url // that returns an actual URL const url = await args.pick( @@ -28,7 +29,7 @@ export default class AddEmoteCommand extends KaikiCommand { ); let name = - message.attachments.first()?.name || (await args.rest("string")); + message.attachments.first()?.name || (await args.rest("string").catch(() => "")); if (!url || !name) return; diff --git a/src/commands/Owner only/gencmdlist.ts b/src/commands/Owner only/gencmdlist.ts index 7bd06155..cb77c8d3 100644 --- a/src/commands/Owner only/gencmdlist.ts +++ b/src/commands/Owner only/gencmdlist.ts @@ -44,11 +44,11 @@ export default class GenCmdListCommand extends KaikiCommand { const list = this.generateCommmandlist(); const uri = new URL(process.env.CMDLIST_URL); - uri.searchParams.append("token", process.env.SELF_API_TOKEN); const res = await fetch(uri, { method: "POST", body: JSON.stringify({ + token: process.env.SELF_API_TOKEN, list: list, }), headers: { diff --git a/src/lib/Kaiki/KaikiArgumentsTypes.ts b/src/lib/Kaiki/KaikiArgumentsTypes.ts index 62018a7a..df1a1414 100644 --- a/src/lib/Kaiki/KaikiArgumentsTypes.ts +++ b/src/lib/Kaiki/KaikiArgumentsTypes.ts @@ -18,49 +18,6 @@ export default class KaikiArgumentsTypes { ][]; // These are only for specific use cases, whereas arguments in ../../arguments are more general. - public static urlEmoteAttachmentIArgument = Args.make( - async (parameter, context) => { - if (context.message.attachments.size) { - const url = context.message.attachments.first()?.url; - if (url) return Args.ok(url); - } - - const imageMatches = parameter.match(Constants.imgExtensionsRegex); - - if (imageMatches) { - return Args.ok(imageMatches[0].toString()); - } - - const emoteMatches = parameter.match(Constants.emoteRegex); - - if (emoteMatches) { - const urlMatch = emoteMatches[0].toString(); - - if (urlMatch.startsWith("<") && urlMatch.endsWith(">")) { - const emoteID = urlMatch.match(/\d+/g); - - const type = urlMatch.indexOf("a") === 1 ? "gif" : "png"; - - if (emoteID) { - // Construct emote url - If it has ' - // name = name ?? urlMatch.slice(2, urlMatch.lastIndexOf(":")).replace(":", ""); - } - } - return Args.error({ - context, - argument: context.argument, - identifier: Identifiers.ArgsMissing, - parameter, - }); - } - ); - public static emoteImageArgument = Args.make( async (parameter: string, context: Argument.Context) => { if (!parameter) { diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index 1c5934a0..4dbff07c 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -33,7 +33,7 @@ import fs from "fs/promises"; import { container } from "@sapphire/pieces"; import NeofetchCommand from "../../commands/Fun/neofetch"; import DiscordBotListService from "../DiscordBotList/DiscordBotListService"; -import express from "express"; +import { Webserver } from "../WebAPI/Webserver"; export default class KaikiSapphireClient extends SapphireClient @@ -88,7 +88,8 @@ export default class KaikiSapphireClient typing: true, }); - (async () => await this.initializeDatabase())().catch((e) => { + this.db = new Database(this); + (async () => await this.db.initializeDatabase())().catch((e) => { throw new Error(e); }); @@ -143,11 +144,12 @@ export default class KaikiSapphireClient client.logger.info( `Bot account: ${colorette.greenBright(client.user.username)}` ); + client.logger.info( `Bot owner: ${colorette.greenBright(client.owner.username)}` ); - this.WebListener(); + Webserver.WebListener(); await Promise.all([ client.filterOptionalCommands(), @@ -283,57 +285,6 @@ export default class KaikiSapphireClient this.logger.info("HentaiService | Service initiated"); } - private async initializeDatabase() { - this.db = new Database(this); - - const database = await this.db.init(); - - this.orm = database.orm; - this.connection = database.mySQLConnection; - - this.botSettings = new DatabaseProvider( - this.connection, - "BotSettings", - { idColumn: "Id" }, - false - ); - this.botSettings - .init() - .then(() => - this.logger.info( - `${colorette.green("READY")} - Bot settings provider` - ) - ) - .catch((e) => this.dbRejected(e)); - - this.guildsDb = new DatabaseProvider(this.connection, "Guilds", { - idColumn: "Id", - }); - this.guildsDb - .init() - .then(() => - this.logger.info(`${colorette.green("READY")} - Guild provider`) - ) - .catch((e) => this.dbRejected(e)); - - this.dadBotChannels = new DatabaseProvider( - this.connection, - "DadBotChannels", - { idColumn: "ChannelId" } - ); - this.dadBotChannels - .init() - .then(() => - this.logger.info( - `${colorette.green("READY")} - DadBot channel provider` - ) - ) - .catch((e) => this.dbRejected(e)); - - this.cache = new KaikiCache(this.orm, this.connection, this.imageAPIs); - this.money = new MoneyService(this.orm); - } - private async presenceLoop(): Promise { await this.setPresence(); @@ -420,33 +371,4 @@ export default class KaikiSapphireClient NeofetchCommand.usingFastFetch = false; } } - - private dbRejected(e: unknown) { - this.logger.fatal("Failed to connect to database using MySQL2.", e); - process.exit(1); - } - - private WebListener() { - if (!process.env.SELF_API_PORT) return; - - this.logger.info(`WebListener server is listening on port: ${process.env.SELF_API_PORT}`); - - const app = express(); - app.get("/API/UserCache/:id", (req, res, next) => { - if (Number.isNaN(req.params.id)) return next(new Error("Invalid format")); - - const requestedUser = this.users.cache.get(req.params.id); - - if (!requestedUser) return next(new Error("User not found")); - - return res.send({ - user: requestedUser, - guilds: this.guilds.cache - .filter(guild => guild.members.cache.has(requestedUser.id)) - .map(guild => ({ id: guild.id, name: guild.name })) - }); - }) - - app.listen(process.env.SELF_API_PORT) - } } diff --git a/src/lib/WebAPI/Webserver.ts b/src/lib/WebAPI/Webserver.ts index e69de29b..005da9fb 100644 --- a/src/lib/WebAPI/Webserver.ts +++ b/src/lib/WebAPI/Webserver.ts @@ -0,0 +1,59 @@ +import process from "process"; +import express from "express"; +import { container } from "@sapphire/pieces"; +import * as Colorette from "colorette"; + + +// A class managing the Bot's webserver. +// It is intended to interact with a kaikibot.xyz dashboard +// +// It needs to send a POST req, with a specified token in the body as JSON "{ token: secret_token_here }" +export class Webserver { + // Creates an express webserver and server user-data on the specified URL path + public static WebListener() { + if (!process.env.SELF_API_PORT) return; + + container.logger.info(`WebListener server is listening on port: ${Colorette.greenBright(process.env.SELF_API_PORT)}`); + + const app = express(); + app.use(express.json()); + + app.post("/API/UserCache/:id", async (req, res) => { + // Check if param is valid + if (Number.isNaN(Number(req.params.id))) return res.sendStatus(400); + + const { body } = req; + // Verify token + if (!body.token || body.token !== process.env.SELF_API_TOKEN) { + return res.sendStatus(401); + } + + const requestedUser = container.client.users.cache.get(req.params.id); + + // Send 404 not found + if (!requestedUser) return res.sendStatus(404); + + return res.send({ + user: requestedUser, + data: await container.client.orm.guildUsers.findMany({ + where: { + UserId: BigInt(req.params.id), + }, + include: { + Guilds: true, + } + }), + guilds: container.client.guilds.cache + .filter(guild => guild.members.cache.has(requestedUser.id)) + .map(guild => ({ + id: guild.id, + name: guild.name, + userPerms: guild.members.cache.get(requestedUser.id)?.permissions, + guildChannels: guild.channels.cache.filter(channel => channel.isTextBased), + })) + }); + }) + + app.listen(process.env.SELF_API_PORT) + } +} diff --git a/src/struct/db/Database.ts b/src/struct/db/Database.ts index ed0abfa3..bc0f20a6 100644 --- a/src/struct/db/Database.ts +++ b/src/struct/db/Database.ts @@ -1,28 +1,31 @@ import { PrismaClient } from "@prisma/client"; import { ActivityType } from "discord.js"; import { - ConnectionOptions, createPool, FieldPacket, - Pool, + Pool, PoolOptions } from "mysql2/promise"; import KaikiSapphireClient from "../../lib/Kaiki/KaikiSapphireClient"; import process from "process"; +import DatabaseProvider from "./DatabaseProvider"; +import { green } from "colorette"; +import KaikiCache from "../../lib/Cache/KaikiCache"; +import { MoneyService } from "../../lib/Money/MoneyService"; export default class Database { private _client: KaikiSapphireClient; public orm: PrismaClient; private _mySQLConnection: Pool; - constructor(client: KaikiSapphireClient) { + public constructor(client: KaikiSapphireClient) { this._client = client; } - get mySQLConnection(): Pool { + public get mySQLConnection(): Pool { return this._mySQLConnection; } - private createConfig(): ConnectionOptions { + private createConfig(): PoolOptions { return { user: process.env.DB_USER, password: process.env.DB_PASSWORD, @@ -33,7 +36,6 @@ export default class Database { waitForConnections: true, }; } - public async init(): Promise { try { this._mySQLConnection = createPool(this.createConfig()); @@ -98,6 +100,60 @@ export default class Database { } return guildUser; } + + public async initializeDatabase() { + const database = await this.init(); + + this._client.orm = database.orm; + this._client.connection = database.mySQLConnection; + + this._client.botSettings = new DatabaseProvider( + this._client.connection, + "BotSettings", + { idColumn: "Id" }, + false + ); + this._client.botSettings + .init() + .then(() => + this._client.logger.info( + `${green("READY")} - Bot settings provider` + ) + ) + .catch((e) => this.dbRejected(e)); + + this._client.guildsDb = new DatabaseProvider(this._client.connection, "Guilds", { + idColumn: "Id", + }); + this._client.guildsDb + .init() + .then(() => + this._client.logger.info(`${green("READY")} - Guild provider`) + ) + .catch((e) => this.dbRejected(e)); + + this._client.dadBotChannels = new DatabaseProvider( + this._client.connection, + "DadBotChannels", + { idColumn: "ChannelId" } + ); + this._client.dadBotChannels + .init() + .then(() => + this._client.logger.info( + `${green("READY")} - DadBot channel provider` + ) + ) + .catch((e) => this.dbRejected(e)); + + this._client.cache = new KaikiCache(this.orm, this._client.connection, this._client.imageAPIs); + this._client.money = new MoneyService(this.orm); + } + + private dbRejected(e: unknown) { + this._client.logger.fatal("Failed to connect to database using MySQL2.", e); + process.exit(1); + } } export class BotConfig { From 706304f0f0ca8f8644406537a7f5cb7a9a97269c Mon Sep 17 00:00:00 2001 From: Cata Date: Wed, 25 Sep 2024 03:06:34 +0200 Subject: [PATCH 40/44] Reworked addemote --- Dockerfile | 2 +- Dockerfile.dev | 4 +- docker-compose.dev.yml | 6 +- src/arguments/kaikiEmote.ts | 12 +--- src/commands/Emotes/addEmote.ts | 56 ++++++++++++------- src/extensions/Sapphire.ts | 2 + src/lib/Emotes/Emotes.ts | 98 ++++++++------------------------- 7 files changed, 73 insertions(+), 107 deletions(-) diff --git a/Dockerfile b/Dockerfile index 11b6b639..191b72de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18 +FROM node:20 LABEL authors="Ole" WORKDIR /kaikibot diff --git a/Dockerfile.dev b/Dockerfile.dev index fa51cf14..b2c5d201 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,4 +1,4 @@ -FROM node:18 +FROM node:20 LABEL authors="Ole" WORKDIR /usr/app @@ -8,7 +8,7 @@ RUN npm install COPY prisma . ARG DATABASE_URL ENV DATABASE_URL $DATABASE_URL -RUN npx prisma db pull && npx prisma generate +RUN npx prisma migrate deploy && npx prisma generate COPY . ./ RUN npm run build CMD ["npm", "run", "dev"] diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index ab7ef577..70c34121 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -5,6 +5,10 @@ services: kaikibot: depends_on: - db + links: + - db + ports: + - "6363:6363" build: context: . dockerfile: Dockerfile.dev @@ -16,4 +20,4 @@ services: stdin_open: true tty: true volumes: - - ./src:/usr/app/src \ No newline at end of file + - ./src:/usr/app/src diff --git a/src/arguments/kaikiEmote.ts b/src/arguments/kaikiEmote.ts index 3a7a114a..1e91c114 100644 --- a/src/arguments/kaikiEmote.ts +++ b/src/arguments/kaikiEmote.ts @@ -17,15 +17,9 @@ export class KaikiEmote extends Argument { } const url = await context.args - .pick("url") - .catch(() => undefined); - - if (url) return Args.ok(url.href); + .pick("url"); - return this.error({ - parameter, - context - }); + return Args.ok(url.href); } } @@ -33,7 +27,7 @@ function isEmojiObject(emoji: EmojiObject | undefined): emoji is NonNullEmojiObj return emoji?.name != null && emoji?.id != null; } -type Emote = { +export type Emote = { name: string, id: Snowflake, url: string, diff --git a/src/commands/Emotes/addEmote.ts b/src/commands/Emotes/addEmote.ts index ad88872b..80a643ba 100644 --- a/src/commands/Emotes/addEmote.ts +++ b/src/commands/Emotes/addEmote.ts @@ -1,9 +1,8 @@ import { ApplyOptions } from "@sapphire/decorators"; -import { Args } from "@sapphire/framework"; -import { Message } from "discord.js"; +import { Args, UserError } from "@sapphire/framework"; +import { GuildEmoji, Message } from "discord.js"; import Emotes from "../../lib/Emotes/Emotes"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; -import KaikiArgumentsTypes from "../../lib/Kaiki/KaikiArgumentsTypes"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; import KaikiUtil from "../../lib/KaikiUtil"; import Constants from "../../struct/Constants"; @@ -24,35 +23,54 @@ export default class AddEmoteCommand extends KaikiCommand { // Create custom type for url // that returns an actual URL - const url = await args.pick( - KaikiArgumentsTypes.urlEmoteAttachmentIArgument - ); + const emote = await args.pick("kaikiEmote"); - let name = - message.attachments.first()?.name || (await args.rest("string").catch(() => "")); + const isEmote = typeof emote !== "string"; - if (!url || !name) return; + let emojiName: string; + if (isEmote) emojiName = emote.name; - const msNow = Date.now().toString(); - const filePath = Emotes.filePath(msNow); + let name = (await args.rest("string").catch(() => emojiName + || message.attachments.first()?.name)); + + if (!name) throw new UserError({ + identifier: "NoNameProvided", + message: "No name was provided" + }); name = KaikiUtil.trim( name, Constants.MAGIC_NUMBERS.CMDS.EMOTES.ADD_EMOTE.NAME_MAX_LENGTH ).replace(/ /g, "_"); - await Emotes.fetchEmote(url, filePath); + const buffer = await Emotes.fetchEmote(isEmote ? emote.url : emote); - const fileSize = await Emotes.getFilesizeInBytes(filePath); + const fileSize = buffer.byteLength; - // Adds emoteUrl if size is ok + // Added if size is ok if (fileSize <= Constants.MAGIC_NUMBERS.CMDS.EMOTES.MAX_FILESIZE) { - await Emotes.saveEmoji(message, url, name); - return await Emotes.deleteImage(filePath); + const result = await message.guild?.emojis.create({ + attachment: Buffer.from(buffer), + name, + }); + return AddEmoteCommand.sendMessage(result, message); } else { - const img = await Emotes.resizeImage(filePath); - await Emotes.saveEmoji(message, img, name); - return await Emotes.deleteImage(filePath); + const resizedBuffer = await Emotes.resizeImage(buffer, emote); + const result = await message.guild?.emojis.create({ + attachment: Buffer.from(resizedBuffer), + name, + }); + return AddEmoteCommand.sendMessage(result, message); + } + } + + static sendMessage(result: GuildEmoji | undefined, message: Message) { + if (result) { + return message.channel.send(`Successfully uploaded **${result.name}** ${result}.`) } + throw new UserError({ + identifier: "UnableUploadGuildEmoji", + message: "Emote image was unable to be uploaded!" + }) } } diff --git a/src/extensions/Sapphire.ts b/src/extensions/Sapphire.ts index d88f7038..4cd4d6e5 100644 --- a/src/extensions/Sapphire.ts +++ b/src/extensions/Sapphire.ts @@ -6,6 +6,7 @@ import KaikiCommand from "../lib/Kaiki/KaikiCommand"; import { KaikiColor } from "../lib/Types/KaikiColor"; import { Categories } from "../lib/Types/Miscellaneous"; import { Sides } from "../commands/Gambling/betflip"; +import { Emote } from "../arguments/kaikiEmote"; declare module "@sapphire/framework" { interface Preconditions { @@ -21,6 +22,7 @@ declare module "@sapphire/framework" { kaikiColor: KaikiColor; kaikiHentai: HentaiTypes; kaikiMoney: bigint; + kaikiEmote: Emote | string; welcomeGoodbyeMessage: JSONToMessageOptions; } diff --git a/src/lib/Emotes/Emotes.ts b/src/lib/Emotes/Emotes.ts index 22c074ed..dd74b775 100644 --- a/src/lib/Emotes/Emotes.ts +++ b/src/lib/Emotes/Emotes.ts @@ -1,89 +1,37 @@ -import fs from "fs"; -import { Message } from "discord.js"; +import { BufferResolvable, Message } from "discord.js"; import sharp from "sharp"; import Constants from "../../struct/Constants"; +import { Emote } from "../../arguments/kaikiEmote"; export default class Emotes { - // Deletes files at filepath - static async deleteImage(file: fs.PathLike): Promise { - fs.unlink(file, (err) => { - if (err) throw err; - return Promise.resolve(); - }); - } // Resizes images, including gifs - returns them in buffer format static async resizeImage( - file: string, - imgSize?: number - ): Promise { - const bool = file.endsWith("gif"); - - const sharpFile = await sharp(file, { animated: bool }); - - return Promise.resolve( - sharpFile - .resize( - imgSize || - Constants.MAGIC_NUMBERS.CMDS.EMOTES.MAX_WIDTH_HEIGHT, - imgSize || - Constants.MAGIC_NUMBERS.CMDS.EMOTES.MAX_WIDTH_HEIGHT, - { - fit: "contain", - background: { r: 0, g: 0, b: 0, alpha: 0 }, - } - ) - .toBuffer() - ); - } - - static getFilesizeInBytes(filename: fs.PathLike): Promise { - const stats = fs.statSync(filename); - return Promise.resolve(stats.size); - } - - static async saveEmoji( - message: Message, - file: string | Buffer, - name: string - ): Promise { - const promise = await message.guild?.emojis.create({ - attachment: file, - name, - }); - - if (promise) { - return Promise.resolve( - message.channel.send( - `Successfully uploaded **${name}** ${promise}.` - ) - ); - } else { - return Promise.resolve( - message.channel.send(`Unable to create emoji: ${name}`) - ); - } - } - - // Takes a name and returns the output location for the saved file - static filePath(name: string): string { - // Makes file hidden - return `./.images${name}`; + buffer: ArrayBuffer | BufferResolvable, + emote: Emote | string): Promise { + + const sharpFile = sharp(buffer, { animated: (typeof emote !== "string" ? emote.url : emote).endsWith("gif") }); + + return sharpFile + .resize( + Constants.MAGIC_NUMBERS.CMDS.EMOTES.MAX_WIDTH_HEIGHT, + Constants.MAGIC_NUMBERS.CMDS.EMOTES.MAX_WIDTH_HEIGHT, + { + fit: "contain", + background: { r: 0, g: 0, b: 0, alpha: 0 }, + } + ) + .toBuffer(); } - // Takes a URL and a path+filename and saves it.. - static async fetchEmote(url: string, saveAs: string) { - if (fs.existsSync(saveAs)) { - return Promise.reject(); - } else { - const file = await fetch(url); - - if (!file.ok || !file.body) return Promise.reject(); - - fs.writeFileSync(saveAs, new Uint8Array(await file.arrayBuffer())); + // Takes a URL, returns an arrayBuffer + static async fetchEmote(url: string) { + const file = await fetch(url); - return Promise.resolve(); + if ((file.ok || file.body) && file.headers.get("content-type")?.includes("image")) { + return file.arrayBuffer(); } + return Promise.reject(); } static async countEmotes(message: Message): Promise { From 7e5daa6dc0b72e5fecba3e94a35036d07c03810d Mon Sep 17 00:00:00 2001 From: Cata Date: Wed, 25 Sep 2024 16:42:28 +0200 Subject: [PATCH 41/44] 6.1.21 --- CHANGELOG.md | 879 +++++++++++++++++++++++----------------------- package-lock.json | 4 +- package.json | 2 +- 3 files changed, 449 insertions(+), 436 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f07edd6d..8bef6490 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,968 +7,981 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). -## [v6.1.20](https://github.com/cataclym/KaikiBot/compare/v6.1.20-5...v6.1.20) +## [v6.1.21](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.20...v6.1.21) -## [v6.1.20-5](https://github.com/cataclym/KaikiBot/compare/v6.1.20-4...v6.1.20-5) - 2024-08-04 +### Commits + +- Reworked emote argument (UNTESTED) [`e4ceea5`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e4ceea5578722e618b8ad32504cd918f1f7ad704) +- Reworked addemote [`706304f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/706304f0f0ca8f8644406537a7f5cb7a9a97269c) +- Improved formatting in anime and manga commands [`81735ec`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/81735ecdabd7a3105dae5d6e101cf468c59bf745) + +## [v6.1.20](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.20-5...v6.1.20) - 2024-08-06 + +## [v6.1.20-5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.20-4...v6.1.20-5) - 2024-08-04 ### Commits -- forgot something [`415fa8b`](https://github.com/cataclym/KaikiBot/commit/415fa8b883f1ad099aa5619aa14ee30652a4443f) +- forgot something [`415fa8b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/415fa8b883f1ad099aa5619aa14ee30652a4443f) -## [v6.1.20-4](https://github.com/cataclym/KaikiBot/compare/v6.1.20-3...v6.1.20-4) - 2024-08-04 +## [v6.1.20-4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.20-3...v6.1.20-4) - 2024-08-04 ### Commits -- Added prisma generate to build script [`ec11afe`](https://github.com/cataclym/KaikiBot/commit/ec11afe32b27bb3aa7878fe59f4b01877c2a3cce) -- Hotfix for bad filtering?? [`2ac79fa`](https://github.com/cataclym/KaikiBot/commit/2ac79fae87d5b3cf1bdf62c9f265fabd270c068e) +- Added prisma generate to build script [`ec11afe`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/ec11afe32b27bb3aa7878fe59f4b01877c2a3cce) +- Hotfix for bad filtering?? [`2ac79fa`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2ac79fae87d5b3cf1bdf62c9f265fabd270c068e) -## [v6.1.20-3](https://github.com/cataclym/KaikiBot/compare/v6.1.20-2...v6.1.20-3) - 2024-08-03 +## [v6.1.20-3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.20-2...v6.1.20-3) - 2024-08-03 -## [v6.1.20-2](https://github.com/cataclym/KaikiBot/compare/v6.1.20-1...v6.1.20-2) - 2024-07-23 +## [v6.1.20-2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.19...v6.1.20-2) - 2024-07-23 ### Commits -- Added: Daily reminders [`f0a32ba`](https://github.com/cataclym/KaikiBot/commit/f0a32bae59b68e92120988ab191585833c4f7638) +- Change: fetching members & enum types in api endpoints [`c9c764d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c9c764d53ad8232a4990fcccdc7481f95074cce1) +- Added: Daily reminders [`f0a32ba`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f0a32bae59b68e92120988ab191585833c4f7638) +- Updated user number strings; Removed broken animequote cmd [`4148b5b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/4148b5b6a586678c9adf0f9c0a5fe4a8625d8043) -## [v6.1.20-1](https://github.com/cataclym/KaikiBot/compare/v6.1.20-0...v6.1.20-1) - 2024-07-06 +## [v6.1.19](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.18...v6.1.19) - 2024-06-29 ### Commits -- Removed: locally saved cache - does not work. [`d6a4525`](https://github.com/cataclym/KaikiBot/commit/d6a45254aea94f74bbfe5c5e0832876fd4f62a17) +- Removed unused privileged intent [`b7059ba`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b7059ba09a9565dd82d945938721722fbd2a23e6) + +## [v6.1.18](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.17...v6.1.18) - 2024-06-29 + +### Merged -## [v6.1.20-0](https://github.com/cataclym/KaikiBot/compare/v6.1.19...v6.1.20-0) - 2024-07-05 +- Add bettest [`#56`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/56) ### Commits -- Change: fetching members & enum types in api endpoints [`c9c764d`](https://github.com/cataclym/KaikiBot/commit/c9c764d53ad8232a4990fcccdc7481f95074cce1) -- Updated user number strings; Removed broken animequote cmd [`4148b5b`](https://github.com/cataclym/KaikiBot/commit/4148b5b6a586678c9adf0f9c0a5fe4a8625d8043) -- Hotfix bf [`51e14f8`](https://github.com/cataclym/KaikiBot/commit/51e14f85aa6dcd0abb188f5d9eab292619c446ca) +- Addresses CVE-2024-21512 [`c6db5c7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c6db5c7ab734bc223c2e9f9560c0a161a05bd409) +- Fixes: Show correct error lines + stop registering slash command twice [`670b42c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/670b42c9e70e837696167278c2efe7286a43a5a1) +- Changed: neofetch command is compatible with fastfetch [`fdf453c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/fdf453c9f1f94426991dffb044d9ccf464a13002) -## [v6.1.19](https://github.com/cataclym/KaikiBot/compare/v6.1.18...v6.1.19) - 2024-06-29 +## [v6.1.17](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.16...v6.1.17) - 2024-05-28 ### Commits -- Removed unused privileged intent [`b7059ba`](https://github.com/cataclym/KaikiBot/commit/b7059ba09a9565dd82d945938721722fbd2a23e6) +- Added: Ability to upload commandlist to specific endpoint. [`719d949`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/719d94970729579b092f660dd06ccb41c24f1242) +- Docs: Fixed some inconsistencies [`40d9177`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/40d9177793abc58d16dbfd0d9ff9ced14f2ec40e) +- Changed: glb is no longer guild-only; Added: unban description text [`437e9cd`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/437e9cd8a19b8b79d0d27ce5b101677bf72a7a70) -## [v6.1.18](https://github.com/cataclym/KaikiBot/compare/v6.1.17...v6.1.18) - 2024-06-29 +## [v6.1.16](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.15...v6.1.16) - 2024-05-23 -### Merged +### Commits -- Add bettest [`#56`](https://github.com/cataclym/KaikiBot/pull/56) +- Updated github url [`0354b69`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/0354b697feb874030e4322733dc22c47a2ed0f2c) +- Updated docs and configs [`288d016`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/288d0163e08bfa202c55af591632879c40f4ba4d) +- Fix minor vulnerability [`b94b1b5`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b94b1b5113057ae33cfbd50b2d5b61d73344b605) + +## [v6.1.15](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.14...v6.1.15) - 2024-05-23 ### Commits -- Addresses CVE-2024-21512 [`c6db5c7`](https://github.com/cataclym/KaikiBot/commit/c6db5c7ab734bc223c2e9f9560c0a161a05bd409) -- Fixes: Show correct error lines + stop registering slash command twice [`670b42c`](https://github.com/cataclym/KaikiBot/commit/670b42c9e70e837696167278c2efe7286a43a5a1) -- Changed: neofetch command is compatible with fastfetch [`fdf453c`](https://github.com/cataclym/KaikiBot/commit/fdf453c9f1f94426991dffb044d9ccf464a13002) +- Added vote text and changed import of KaikiCommandOptions [`b0721fc`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b0721fce0dbf3a14e6bc91f2a6b7249f33c7f585) +- Cooked up a new command: +flip a coin [`104acf7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/104acf714a5672b5ba07305519a6b2926fa54067) +- Vote text [`f778db7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f778db72887cf121b4e2b9e83431c4da455ad228) -## [v6.1.17](https://github.com/cataclym/KaikiBot/compare/v6.1.16...v6.1.17) - 2024-05-28 +## [v6.1.14](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.13...v6.1.14) - 2024-05-14 ### Commits -- Added: Ability to upload commandlist to specific endpoint. [`719d949`](https://github.com/cataclym/KaikiBot/commit/719d94970729579b092f660dd06ccb41c24f1242) -- Docs: Fixed some inconsistencies [`40d9177`](https://github.com/cataclym/KaikiBot/commit/40d9177793abc58d16dbfd0d9ff9ced14f2ec40e) -- Changed: glb is no longer guild-only; Added: unban description text [`437e9cd`](https://github.com/cataclym/KaikiBot/commit/437e9cd8a19b8b79d0d27ce5b101677bf72a7a70) +- Updated dbl dependency [`5ad6379`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/5ad63794e5b3ad6fa18117418a08905ef2cf111f) +- Fix missing resettimer [`68b5a32`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/68b5a327cfa605ac9d4d2e57f212a3effe4dccd5) -## [v6.1.16](https://github.com/cataclym/KaikiBot/compare/v6.1.15...v6.1.16) - 2024-05-23 +## [v6.1.13](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.12...v6.1.13) - 2024-05-13 ### Commits -- Updated github url [`0354b69`](https://github.com/cataclym/KaikiBot/commit/0354b697feb874030e4322733dc22c47a2ed0f2c) -- Updated docs and configs [`288d016`](https://github.com/cataclym/KaikiBot/commit/288d0163e08bfa202c55af591632879c40f4ba4d) -- Fix minor vulnerability [`b94b1b5`](https://github.com/cataclym/KaikiBot/commit/b94b1b5113057ae33cfbd50b2d5b61d73344b605) +- Change daily->12h and amount; Linting; Update pagination; [`f479f4f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f479f4fcfc3be95886263ea7dec52c5133a91ce7) +- Utility changes, logging changes [`578a3b3`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/578a3b36019f185bae036d848d8026623c1ca8ad) -## [v6.1.15](https://github.com/cataclym/KaikiBot/compare/v6.1.14...v6.1.15) - 2024-05-23 +## [v6.1.12](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.11...v6.1.12) - 2024-05-11 ### Commits -- Added vote text and changed import of KaikiCommandOptions [`b0721fc`](https://github.com/cataclym/KaikiBot/commit/b0721fce0dbf3a14e6bc91f2a6b7249f33c7f585) -- Cooked up a new command: +flip a coin [`104acf7`](https://github.com/cataclym/KaikiBot/commit/104acf714a5672b5ba07305519a6b2926fa54067) -- Vote text [`f778db7`](https://github.com/cataclym/KaikiBot/commit/f778db72887cf121b4e2b9e83431c4da455ad228) +- Re-add counting to dadbot; Linting; [`0188c04`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/0188c04f68b06dc21f2b092cba7aeac922a111e3) +- Missing embed color [`fb9a3b6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/fb9a3b66a2520c1d38958cfeb136892a905cd47c) -## [v6.1.14](https://github.com/cataclym/KaikiBot/compare/v6.1.13...v6.1.14) - 2024-05-14 +## [v6.1.11](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.10...v6.1.11) - 2024-05-07 ### Commits -- Updated dbl dependency [`5ad6379`](https://github.com/cataclym/KaikiBot/commit/5ad63794e5b3ad6fa18117418a08905ef2cf111f) -- Fix missing resettimer [`68b5a32`](https://github.com/cataclym/KaikiBot/commit/68b5a327cfa605ac9d4d2e57f212a3effe4dccd5) +- Fixed dbl vote rewards; Improved argument missing error! [`9663872`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/966387275874d67d74281eeb3f25ac8cfbb9b57b) -## [v6.1.13](https://github.com/cataclym/KaikiBot/compare/v6.1.12...v6.1.13) - 2024-05-13 +## [v6.1.10](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.9...v6.1.10) - 2024-05-07 ### Commits -- Change daily->12h and amount; Linting; Update pagination; [`f479f4f`](https://github.com/cataclym/KaikiBot/commit/f479f4fcfc3be95886263ea7dec52c5133a91ce7) -- Utility changes, logging changes [`578a3b3`](https://github.com/cataclym/KaikiBot/commit/578a3b36019f185bae036d848d8026623c1ca8ad) +- Added DiscordBotList stuff, what could go wrong [`31e2350`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/31e23508c44c495fe275b8a8163c47fcde76ba6a) +- Minor improvements [`f0fe301`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f0fe301657432c9deb35c94273e0775c2a6c050c) +- Added -y flag to die cmd [`174ce55`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/174ce55766b6999f23e3cd2ba2e8056aed32c67d) -## [v6.1.12](https://github.com/cataclym/KaikiBot/compare/v6.1.11...v6.1.12) - 2024-05-11 +## [v6.1.9](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.8...v6.1.9) - 2024-04-30 ### Commits -- Re-add counting to dadbot; Linting; [`0188c04`](https://github.com/cataclym/KaikiBot/commit/0188c04f68b06dc21f2b092cba7aeac922a111e3) -- Missing embed color [`fb9a3b6`](https://github.com/cataclym/KaikiBot/commit/fb9a3b66a2520c1d38958cfeb136892a905cd47c) +- Minor refactor [`b5e87be`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b5e87bef739549d2ec0e5c7acf8493b057047743) +- Chore: Update mysql to solve RCE [`05655ba`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/05655ba73e88d8d7e24f77c102a0c35e14901f92) +- Chore: Update deps [`125124a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/125124a4da69bcbc92c53a8c70bad31d10188eea) -## [v6.1.11](https://github.com/cataclym/KaikiBot/compare/v6.1.9...v6.1.11) - 2024-05-07 +## [v6.1.8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.7...v6.1.8) - 2024-03-30 ### Commits -- Added DiscordBotList stuff, what could go wrong [`31e2350`](https://github.com/cataclym/KaikiBot/commit/31e23508c44c495fe275b8a8163c47fcde76ba6a) -- Minor improvements [`f0fe301`](https://github.com/cataclym/KaikiBot/commit/f0fe301657432c9deb35c94273e0775c2a6c050c) -- Fixed dbl vote rewards; Improved argument missing error! [`9663872`](https://github.com/cataclym/KaikiBot/commit/966387275874d67d74281eeb3f25ac8cfbb9b57b) +- linting and formatting [`8cbb093`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8cbb09321c5519ac298853a9b4a16c44b5cc760f) +- Improved: startup, setav+setbanner, utils [`dee7cf8`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/dee7cf8fdbdbdebcad25ddc2810f7fe2b3da18e6) +- Update docker-image.yml [`fd2f8db`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/fd2f8db343b67b617dca831ed819f55ef8748333) -## [v6.1.9](https://github.com/cataclym/KaikiBot/compare/v6.1.8...v6.1.9) - 2024-04-30 +## [v6.1.7](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.6...v6.1.7) - 2024-03-25 ### Commits -- Minor refactor [`b5e87be`](https://github.com/cataclym/KaikiBot/commit/b5e87bef739549d2ec0e5c7acf8493b057047743) -- Chore: Update mysql to solve RCE [`05655ba`](https://github.com/cataclym/KaikiBot/commit/05655ba73e88d8d7e24f77c102a0c35e14901f92) -- Chore: Update deps [`125124a`](https://github.com/cataclym/KaikiBot/commit/125124a4da69bcbc92c53a8c70bad31d10188eea) +- Create CODE_OF_CONDUCT.md [`755cbc3`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/755cbc3c995dd92feb765ada9a61ddcdcb13ccab) +- Added preliminary softban command. [`71336f5`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/71336f5fba8b9ccf9c7948954949f1c550783ddc) -## [v6.1.8](https://github.com/cataclym/KaikiBot/compare/v6.1.7...v6.1.8) - 2024-03-30 +## [v6.1.6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.5...v6.1.6) - 2024-03-17 -### Commits +### Fixed -- linting and formatting [`8cbb093`](https://github.com/cataclym/KaikiBot/commit/8cbb09321c5519ac298853a9b4a16c44b5cc760f) -- Improved: startup, setav+setbanner, utils [`dee7cf8`](https://github.com/cataclym/KaikiBot/commit/dee7cf8fdbdbdebcad25ddc2810f7fe2b3da18e6) -- Update docker-image.yml [`fd2f8db`](https://github.com/cataclym/KaikiBot/commit/fd2f8db343b67b617dca831ed819f55ef8748333) +- hotfix #2 [`#2`](https://github.com/cataclym/Kaiki-Deishu-Bot/issues/2) -## [v6.1.7](https://github.com/cataclym/KaikiBot/compare/v6.1.6...v6.1.7) - 2024-03-25 +## [v6.1.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.4...v6.1.5) - 2024-03-17 ### Commits -- Create CODE_OF_CONDUCT.md [`755cbc3`](https://github.com/cataclym/KaikiBot/commit/755cbc3c995dd92feb765ada9a61ddcdcb13ccab) -- Added preliminary softban command. [`71336f5`](https://github.com/cataclym/KaikiBot/commit/71336f5fba8b9ccf9c7948954949f1c550783ddc) +- Hotfix for setbanner cmd [`805bee9`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/805bee9c61bdae66cc67798c03efd28d854c2a6b) -## [v6.1.6](https://github.com/cataclym/KaikiBot/compare/v6.1.5...v6.1.6) - 2024-03-17 +## [v6.1.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.3...v6.1.4) - 2024-03-17 -### Fixed +### Commits -- hotfix #2 [`#2`](https://github.com/cataclym/KaikiBot/issues/2) +- Feat: New command "setbanner"! 🆕 [`dc0d333`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/dc0d333bf0a333e1c03d37186a4412cbcec03763) -## [v6.1.5](https://github.com/cataclym/KaikiBot/compare/v6.1.4...v6.1.5) - 2024-03-17 +## [v6.1.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.2...v6.1.3) - 2024-03-01 ### Commits -- Hotfix for setbanner cmd [`805bee9`](https://github.com/cataclym/KaikiBot/commit/805bee9c61bdae66cc67798c03efd28d854c2a6b) +- Fixed: emotecount.ts filter [`15ea317`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/15ea3175c353a7c9cf59d9fedf7d0437b5c484fb) +- Just a small change to emotecount formatting...! Fixes formatting errors [`2ee5d6e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2ee5d6e2da2567647a452add7b63b95cb5f30083) -## [v6.1.4](https://github.com/cataclym/KaikiBot/compare/v6.1.1...v6.1.4) - 2024-03-17 +## [v6.1.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.1...v6.1.2) - 2024-03-01 ### Commits -- hotfix for node-fetch issues [`681863d`](https://github.com/cataclym/KaikiBot/commit/681863d3ab65beedf9febbe4d8c41920d33b3808) -- Fixed: emotecount.ts filter [`15ea317`](https://github.com/cataclym/KaikiBot/commit/15ea3175c353a7c9cf59d9fedf7d0437b5c484fb) -- Just a small change to emotecount formatting...! Fixes formatting errors [`2ee5d6e`](https://github.com/cataclym/KaikiBot/commit/2ee5d6e2da2567647a452add7b63b95cb5f30083) +- hotfix for node-fetch issues [`681863d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/681863d3ab65beedf9febbe4d8c41920d33b3808) -## [v6.1.1](https://github.com/cataclym/KaikiBot/compare/v6.1.0...v6.1.1) - 2024-03-01 +## [v6.1.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.1.0...v6.1.1) - 2024-03-01 ### Commits -- #WIP: Support adding multiple todos. Re-added src files to root dir [`f6cd865`](https://github.com/cataclym/KaikiBot/commit/f6cd8654ec24d307a7f792a219e73c69975a9612) -- WIP concept for todo [`aad9e52`](https://github.com/cataclym/KaikiBot/commit/aad9e52c794986ff7cd155388d8507b86ff7b388) -- Feat: Able to remove todos continuously! [`931ad4b`](https://github.com/cataclym/KaikiBot/commit/931ad4b7a3c56f83968ca66157b2a1fa71934778) +- #WIP: Support adding multiple todos. Re-added src files to root dir [`f6cd865`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f6cd8654ec24d307a7f792a219e73c69975a9612) +- WIP concept for todo [`aad9e52`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/aad9e52c794986ff7cd155388d8507b86ff7b388) +- Feat: Able to remove todos continuously! [`931ad4b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/931ad4b7a3c56f83968ca66157b2a1fa71934778) -## [v6.1.0](https://github.com/cataclym/KaikiBot/compare/v6.0.103...v6.1.0) - 2024-02-27 +## [v6.1.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.103...v6.1.0) - 2024-02-27 ### Commits -- moved bot files for docker prep [`2566a97`](https://github.com/cataclym/KaikiBot/commit/2566a9754bbdc6a5ed989cfe949f2a72418f85b3) -- nsfw rework (danbooru, e621); dadbot security; minor tweaks [`a55f9e8`](https://github.com/cataclym/KaikiBot/commit/a55f9e81c90033ee1b90ac58bcfcb6e1a34ab19d) -- docker prep [`edf1014`](https://github.com/cataclym/KaikiBot/commit/edf10144ed5daebac1fd97b4fdb9a3ae80871887) +- moved bot files for docker prep [`2566a97`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2566a9754bbdc6a5ed989cfe949f2a72418f85b3) +- nsfw rework (danbooru, e621); dadbot security; minor tweaks [`a55f9e8`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a55f9e81c90033ee1b90ac58bcfcb6e1a34ab19d) +- docker prep [`edf1014`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/edf10144ed5daebac1fd97b4fdb9a3ae80871887) -## [v6.0.103](https://github.com/cataclym/KaikiBot/compare/v6.0.102...v6.0.103) - 2023-12-14 +## [v6.0.103](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.102...v6.0.103) - 2023-12-14 ### Commits -- QOL; Minor updates; Fixes pagination cmds; [`3970b71`](https://github.com/cataclym/KaikiBot/commit/3970b710cd4c48929e64cbd617489a26ed3d1f17) +- QOL; Minor updates; Fixes pagination cmds; [`3970b71`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/3970b710cd4c48929e64cbd617489a26ed3d1f17) -## [v6.0.102](https://github.com/cataclym/KaikiBot/compare/v6.0.101...v6.0.102) - 2023-12-13 +## [v6.0.102](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.101...v6.0.102) - 2023-12-13 ### Commits -- Since when did stats not have name property? [`2f71c3f`](https://github.com/cataclym/KaikiBot/commit/2f71c3f3df36f24750b1736d7f3a237590f8090c) +- Since when did stats not have name property? [`2f71c3f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2f71c3f3df36f24750b1736d7f3a237590f8090c) -## [v6.0.101](https://github.com/cataclym/KaikiBot/compare/v6.0.10...v6.0.101) - 2023-12-13 +## [v6.0.101](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.10...v6.0.101) - 2023-12-13 ### Commits -- Updated deps; Updated tsconfig; [`e6d1daf`](https://github.com/cataclym/KaikiBot/commit/e6d1daf7f5abe19e31fca614d2dbe95ac44a7ad9) -- Fix for gecmdlist; [`1c73c64`](https://github.com/cataclym/KaikiBot/commit/1c73c649ecca26d55325d2df8b6a79af14004932) +- Updated deps; Updated tsconfig; [`e6d1daf`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e6d1daf7f5abe19e31fca614d2dbe95ac44a7ad9) +- Fix for gecmdlist; [`1c73c64`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/1c73c649ecca26d55325d2df8b6a79af14004932) -## [v6.0.10](https://github.com/cataclym/KaikiBot/compare/v6.0.9...v6.0.10) - 2023-11-18 +## [v6.0.10](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.9...v6.0.10) - 2023-11-18 ### Commits -- Updated issue templates; Updated deps; [`1ef8901`](https://github.com/cataclym/KaikiBot/commit/1ef89017239e0461d2f0497902bd01f1b624cff9) -- Fixes: Info & togglecategory cmds; [`9d7fb1e`](https://github.com/cataclym/KaikiBot/commit/9d7fb1e4a6486ca18e2e48a3903cd38d4011d5a5) +- Updated issue templates; Updated deps; [`1ef8901`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/1ef89017239e0461d2f0497902bd01f1b624cff9) +- Fixes: Info & togglecategory cmds; [`9d7fb1e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9d7fb1e4a6486ca18e2e48a3903cd38d4011d5a5) -## [v6.0.9](https://github.com/cataclym/KaikiBot/compare/v6.0.8...v6.0.9) - 2023-11-18 +## [v6.0.9](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.8...v6.0.9) - 2023-11-18 ### Commits -- Removed google command and related dependencies; Fixed mcping and random commands. [`70bad8f`](https://github.com/cataclym/KaikiBot/commit/70bad8f6376780979aab98966515ce931cc4e416) -- Updated deps [`e45baa0`](https://github.com/cataclym/KaikiBot/commit/e45baa05a1752268e2d80b683f46388aad49a1b8) -- Added girl cmd; Updated NekosAPI(v3) endpoint for catgirl [`cdc71ba`](https://github.com/cataclym/KaikiBot/commit/cdc71ba839e88dd63ee3505c248b84d6d844c218) +- Removed google command and related dependencies; Fixed mcping and random commands. [`70bad8f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/70bad8f6376780979aab98966515ce931cc4e416) +- Updated deps [`e45baa0`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e45baa05a1752268e2d80b683f46388aad49a1b8) +- Added girl cmd; Updated NekosAPI(v3) endpoint for catgirl [`cdc71ba`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/cdc71ba839e88dd63ee3505c248b84d6d844c218) -## [v6.0.8](https://github.com/cataclym/KaikiBot/compare/v6.0.7...v6.0.8) - 2023-10-13 +## [v6.0.8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.7...v6.0.8) - 2023-10-13 ### Commits -- Turns out I need node-fetch types [`da7a08b`](https://github.com/cataclym/KaikiBot/commit/da7a08b5f7852336ca65dd10cf92f179daec2229) +- Turns out I need node-fetch types [`da7a08b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/da7a08b5f7852336ca65dd10cf92f179daec2229) -## [v6.0.7](https://github.com/cataclym/KaikiBot/compare/v6.0.6...v6.0.7) - 2023-10-13 +## [v6.0.7](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.6...v6.0.7) - 2023-10-13 ### Commits -- fix for nekosapi endpoint [`82fc923`](https://github.com/cataclym/KaikiBot/commit/82fc923a4c7cec62cf49ddca15b3037d9d4bb2af) -- Minor updates: removed node-fetch, added exit msgs, added cmdstats [`8728245`](https://github.com/cataclym/KaikiBot/commit/87282457b138060f2f342bdf41b44063268f834b) -- Feature update: help shows flags if applicable [`5f1b2cb`](https://github.com/cataclym/KaikiBot/commit/5f1b2cb886a2ed6c912e71e60878cda742b718cd) +- fix for nekosapi endpoint [`82fc923`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/82fc923a4c7cec62cf49ddca15b3037d9d4bb2af) +- Minor updates: removed node-fetch, added exit msgs, added cmdstats [`8728245`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/87282457b138060f2f342bdf41b44063268f834b) +- Feature update: help shows flags if applicable [`5f1b2cb`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/5f1b2cb886a2ed6c912e71e60878cda742b718cd) -## [v6.0.6](https://github.com/cataclym/KaikiBot/compare/v6.0.5...v6.0.6) - 2023-08-29 +## [v6.0.6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.5...v6.0.6) - 2023-08-29 ### Commits -- Feature update: color can show up to 10 colors [`3669aa3`](https://github.com/cataclym/KaikiBot/commit/3669aa388997320035c8653b53e931d2844c3e04) +- Feature update: color can show up to 10 colors [`3669aa3`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/3669aa388997320035c8653b53e931d2844c3e04) -## [v6.0.5](https://github.com/cataclym/KaikiBot/compare/v6.0.4...v6.0.5) - 2023-08-27 +## [v6.0.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.4...v6.0.5) - 2023-08-27 ### Commits -- Updated deps, stringified botconfig values [`0cf12b3`](https://github.com/cataclym/KaikiBot/commit/0cf12b3f3bae5c3c595383a1383b10897949939c) -- this wasn't finished yet [`e309724`](https://github.com/cataclym/KaikiBot/commit/e309724d061a06ba9edefa8a4d3a1b3dd127c2e9) -- Fixed emote react triggers with space not working [`175813c`](https://github.com/cataclym/KaikiBot/commit/175813c4e471cf3c9e4197f84cf16c71026dd6d6) +- Updated deps, stringified botconfig values [`0cf12b3`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/0cf12b3f3bae5c3c595383a1383b10897949939c) +- this wasn't finished yet [`e309724`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e309724d061a06ba9edefa8a4d3a1b3dd127c2e9) +- Fixed emote react triggers with space not working [`175813c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/175813c4e471cf3c9e4197f84cf16c71026dd6d6) -## [v6.0.4](https://github.com/cataclym/KaikiBot/compare/v6.0.3...v6.0.4) - 2023-07-24 +## [v6.0.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.3...v6.0.4) - 2023-07-24 ### Commits -- Added placeholders to say cmd + Fixes for pagination [`e67383b`](https://github.com/cataclym/KaikiBot/commit/e67383b1302942395fa55324e537cfb174622daf) -- Added color to cmd logging [`1a7e5e3`](https://github.com/cataclym/KaikiBot/commit/1a7e5e395d8480ce3515b87fadf331ee93aa3a8c) -- Fix todo page argument always being 0. [`9e48dfe`](https://github.com/cataclym/KaikiBot/commit/9e48dfe05c4a2d0fe9e09fa446a64fe168edfb06) +- Added placeholders to say cmd + Fixes for pagination [`e67383b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e67383b1302942395fa55324e537cfb174622daf) +- Added color to cmd logging [`1a7e5e3`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/1a7e5e395d8480ce3515b87fadf331ee93aa3a8c) +- Fix todo page argument always being 0. [`9e48dfe`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9e48dfe05c4a2d0fe9e09fa446a64fe168edfb06) -## [v6.0.3](https://github.com/cataclym/KaikiBot/compare/v6.0.2...v6.0.3) - 2023-07-24 +## [v6.0.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.2...v6.0.3) - 2023-07-24 ### Commits -- Fixed dadbot excluded channels not working. Cleaned internal functions. [`d9c09ec`](https://github.com/cataclym/KaikiBot/commit/d9c09ec385e7c40e4a7c23bd94e1ecad92ff044d) -- Fix for error in logging. Import correctly [`d04f3a4`](https://github.com/cataclym/KaikiBot/commit/d04f3a453354500c086dc9dded3c617846d8847c) -- Fix for error in logging. Import correctly [`2b80eff`](https://github.com/cataclym/KaikiBot/commit/2b80eff1afdb5993ac251feb8c93dcc919572822) +- Fixed dadbot excluded channels not working. Cleaned internal functions. [`d9c09ec`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d9c09ec385e7c40e4a7c23bd94e1ecad92ff044d) +- Fix for error in logging. Import correctly [`d04f3a4`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d04f3a453354500c086dc9dded3c617846d8847c) +- Fix for error in logging. Import correctly [`2b80eff`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2b80eff1afdb5993ac251feb8c93dcc919572822) -## [v6.0.2](https://github.com/cataclym/KaikiBot/compare/v6.0.1...v6.0.2) - 2023-07-23 +## [v6.0.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.1...v6.0.2) - 2023-07-23 ### Commits -- Moved KaikiUtil. Fixed error in stickyroles logging [`c720032`](https://github.com/cataclym/KaikiBot/commit/c720032694c00816678e0e729a41f7a667efd404) +- Moved KaikiUtil. Fixed error in stickyroles logging [`c720032`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c720032694c00816678e0e729a41f7a667efd404) -## [v6.0.1](https://github.com/cataclym/KaikiBot/compare/v6.0.0...v6.0.1) - 2023-07-22 +## [v6.0.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v6.0.0...v6.0.1) - 2023-07-22 ### Commits -- Updated dependencies. Fixes interactions. [`6d03e02`](https://github.com/cataclym/KaikiBot/commit/6d03e02c2c33bb1c5ff0177eba38f6a7128f0fe0) -- Added default greet/bye messages. Listeners use event literals [`156d981`](https://github.com/cataclym/KaikiBot/commit/156d981556e53ca4ae986d21bb68b1b3da593a89) -- Fixed a CRUD error with todo [`c0c7358`](https://github.com/cataclym/KaikiBot/commit/c0c73586a701e2b5d252aba604e4cc9dac862b6e) +- Updated dependencies. Fixes interactions. [`6d03e02`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6d03e02c2c33bb1c5ff0177eba38f6a7128f0fe0) +- Added default greet/bye messages. Listeners use event literals [`156d981`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/156d981556e53ca4ae986d21bb68b1b3da593a89) +- Fixed a CRUD error with todo [`c0c7358`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c0c73586a701e2b5d252aba604e4cc9dac862b6e) -## [v6.0.0](https://github.com/cataclym/KaikiBot/compare/v5.6.5...v6.0.0) - 2023-07-22 +## [v6.0.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.6.5...v6.0.0) - 2023-07-22 ### Commits -- Update deps [`cfbdec2`](https://github.com/cataclym/KaikiBot/commit/cfbdec2d16d4ed75ca5551304081bdf72df100c6) -- sapphire commands +++ [`dd0009e`](https://github.com/cataclym/KaikiBot/commit/dd0009e91c8985599363a4b640f18bb608281591) -- Sapphire commands ++++ [`b00189b`](https://github.com/cataclym/KaikiBot/commit/b00189b4f7675c60c8d34428e8dfdfa3bbf62a88) +- Update deps [`cfbdec2`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/cfbdec2d16d4ed75ca5551304081bdf72df100c6) +- sapphire commands +++ [`dd0009e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/dd0009e91c8985599363a4b640f18bb608281591) +- Sapphire commands ++++ [`b00189b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b00189b4f7675c60c8d34428e8dfdfa3bbf62a88) -## [v5.6.5](https://github.com/cataclym/KaikiBot/compare/v5.6.4...v5.6.5) - 2023-04-29 +## [v5.6.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.6.4...v5.6.5) - 2023-04-29 ### Commits -- Fixed a CRUD error with todo [`c0c7358`](https://github.com/cataclym/KaikiBot/commit/c0c73586a701e2b5d252aba604e4cc9dac862b6e) -- Disabled remove button when list is empty [`a6658f6`](https://github.com/cataclym/KaikiBot/commit/a6658f6c97d5fcd7965066f83349e8cb3aaec7a3) +- Fixed a CRUD error with todo [`c0c7358`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c0c73586a701e2b5d252aba604e4cc9dac862b6e) +- Disabled remove button when list is empty [`a6658f6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a6658f6c97d5fcd7965066f83349e8cb3aaec7a3) -## [v5.6.4](https://github.com/cataclym/KaikiBot/compare/v5.6.3...v5.6.4) - 2023-04-15 +## [v5.6.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.6.3...v5.6.4) - 2023-04-15 ### Commits -- Updated dependencies. Fixes interactions. [`6d03e02`](https://github.com/cataclym/KaikiBot/commit/6d03e02c2c33bb1c5ff0177eba38f6a7128f0fe0) -- Added cache for image APIs [`b871682`](https://github.com/cataclym/KaikiBot/commit/b871682e9d4fb9b59c12ae2ef417a7bffdb6fa9a) -- Added ascii logo on boot [`9befd03`](https://github.com/cataclym/KaikiBot/commit/9befd0321e27ef7f82370dc09073c08f1f05db60) +- Updated dependencies. Fixes interactions. [`6d03e02`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6d03e02c2c33bb1c5ff0177eba38f6a7128f0fe0) +- Added cache for image APIs [`b871682`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b871682e9d4fb9b59c12ae2ef417a7bffdb6fa9a) +- Added ascii logo on boot [`9befd03`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9befd0321e27ef7f82370dc09073c08f1f05db60) -## [v5.6.3](https://github.com/cataclym/KaikiBot/compare/v5.6.2...v5.6.3) - 2023-02-25 +## [v5.6.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.6.2...v5.6.3) - 2023-02-25 ### Commits -- Fix: Daily will work on users who arent in db. [`5e3683c`](https://github.com/cataclym/KaikiBot/commit/5e3683c36076c9d1d3ea4f2ccdad8fd9ebbacad3) -- Update: lb will now display # position [`83772a1`](https://github.com/cataclym/KaikiBot/commit/83772a14440fbe196664291cd71572ce7b76c07c) +- Fix: Daily will work on users who arent in db. [`5e3683c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/5e3683c36076c9d1d3ea4f2ccdad8fd9ebbacad3) +- Update: lb will now display # position [`83772a1`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/83772a14440fbe196664291cd71572ce7b76c07c) -## [v5.6.2](https://github.com/cataclym/KaikiBot/compare/v5.6.1...v5.6.2) - 2023-02-21 +## [v5.6.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.6.1...v5.6.2) - 2023-02-21 ### Commits -- work on adding components [`901429c`](https://github.com/cataclym/KaikiBot/commit/901429c56467b71f99655933e8abd5e160a16033) -- Finished cmdlist interaction code [`90410aa`](https://github.com/cataclym/KaikiBot/commit/90410aa0a2afbe3704acaf5ca093cd55ad121d70) -- Removed deprecated guild features [`98ff85c`](https://github.com/cataclym/KaikiBot/commit/98ff85c77d4e5a9fc03c33bf3d19ab8b1168c593) +- work on adding components [`901429c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/901429c56467b71f99655933e8abd5e160a16033) +- Finished cmdlist interaction code [`90410aa`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/90410aa0a2afbe3704acaf5ca093cd55ad121d70) +- Removed deprecated guild features [`98ff85c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/98ff85c77d4e5a9fc03c33bf3d19ab8b1168c593) -## [v5.6.1](https://github.com/cataclym/KaikiBot/compare/v5.6.0...v5.6.1) - 2023-02-19 +## [v5.6.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.6.0...v5.6.1) - 2023-02-19 ### Commits -- Added autocomplete to neofetch [`e2c7e60`](https://github.com/cataclym/KaikiBot/commit/e2c7e60ff7a1e28e57de782f413a95d19f354782) -- Chore: eslint sort imports [`ba07dcb`](https://github.com/cataclym/KaikiBot/commit/ba07dcb474386ef1b4b0136cad91352cddaa6e79) -- Fixed: gencmdlist including subcommands [`da554de`](https://github.com/cataclym/KaikiBot/commit/da554def8f98466c173175511233cd471e25891d) +- Added autocomplete to neofetch [`e2c7e60`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e2c7e60ff7a1e28e57de782f413a95d19f354782) +- Chore: eslint sort imports [`ba07dcb`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/ba07dcb474386ef1b4b0136cad91352cddaa6e79) +- Fixed: gencmdlist including subcommands [`da554de`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/da554def8f98466c173175511233cd471e25891d) -## [v5.6.0](https://github.com/cataclym/KaikiBot/compare/v5.5.2...v5.6.0) - 2023-02-17 +## [v5.6.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.5.2...v5.6.0) - 2023-02-17 ### Commits -- Fixed error on missing permissions for greetings [`a2f5529`](https://github.com/cataclym/KaikiBot/commit/a2f5529456de9060a02b29d1846278803cd8bf31) -- Fixed a vulnerability [`43bb9f4`](https://github.com/cataclym/KaikiBot/commit/43bb9f4d2f77a7d8b77812a056aed4fca5cfa7be) -- Fixed Anime command not loading + Added Images category description [`5e1e524`](https://github.com/cataclym/KaikiBot/commit/5e1e524e15ffe8ca87ea23437c2a47ea696d3114) +- Fixed error on missing permissions for greetings [`a2f5529`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a2f5529456de9060a02b29d1846278803cd8bf31) +- Fixed a vulnerability [`43bb9f4`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/43bb9f4d2f77a7d8b77812a056aed4fca5cfa7be) +- Fixed Anime command not loading + Added Images category description [`5e1e524`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/5e1e524e15ffe8ca87ea23437c2a47ea696d3114) -## [v5.5.2](https://github.com/cataclym/KaikiBot/compare/v5.5.1...v5.5.2) - 2023-02-16 +## [v5.5.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.5.1...v5.5.2) - 2023-02-16 ### Fixed -- setcolor hotfix #1 [`#1`](https://github.com/cataclym/KaikiBot/issues/1) +- setcolor hotfix #1 [`#1`](https://github.com/cataclym/Kaiki-Deishu-Bot/issues/1) -## [v5.5.1](https://github.com/cataclym/KaikiBot/compare/v5.5.0...v5.5.1) - 2023-02-09 +## [v5.5.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.5.0...v5.5.1) - 2023-02-09 ### Commits -- Minor cleanup and edits to emote internals [`ab6b7fd`](https://github.com/cataclym/KaikiBot/commit/ab6b7fd606d9d22cde965ec9f981caba860a8388) -- Moved Anilist GrapQL variables to its own class [`09b0345`](https://github.com/cataclym/KaikiBot/commit/09b0345f539c5c4198dc8cacb79abd9d2e66c45c) -- Added support button [`b12e63e`](https://github.com/cataclym/KaikiBot/commit/b12e63e53b8e7c50449b446c773c6e1ad2717d2a) +- Minor cleanup and edits to emote internals [`ab6b7fd`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/ab6b7fd606d9d22cde965ec9f981caba860a8388) +- Moved Anilist GrapQL variables to its own class [`09b0345`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/09b0345f539c5c4198dc8cacb79abd9d2e66c45c) +- Added support button [`b12e63e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b12e63e53b8e7c50449b446c773c6e1ad2717d2a) -## [v5.5.0](https://github.com/cataclym/KaikiBot/compare/v5.4.6...v5.5.0) - 2023-02-07 +## [v5.5.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.6...v5.5.0) - 2023-02-07 ### Commits -- Removed unnecessary type packages and bloat [`c4c25bd`](https://github.com/cataclym/KaikiBot/commit/c4c25bd42f953f2b545194f9457de2c753f3cfc7) -- Updated dependencies [`d9e2790`](https://github.com/cataclym/KaikiBot/commit/d9e2790f80b5a479de705c6340145f62e72c1216) -- Changed: how addEmote works internally [`c75c2d2`](https://github.com/cataclym/KaikiBot/commit/c75c2d20e614b17814099cbb0e9a9f8e702fa377) +- Removed unnecessary type packages and bloat [`c4c25bd`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c4c25bd42f953f2b545194f9457de2c753f3cfc7) +- Updated dependencies [`d9e2790`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d9e2790f80b5a479de705c6340145f62e72c1216) +- Changed: how addEmote works internally [`c75c2d2`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c75c2d20e614b17814099cbb0e9a9f8e702fa377) -## [v5.4.6](https://github.com/cataclym/KaikiBot/compare/v5.4.5...v5.4.6) - 2023-01-28 +## [v5.4.6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.5...v5.4.6) - 2023-01-28 ### Merged -- Add some new shit [`#56`](https://github.com/cataclym/KaikiBot/pull/56) -- Master [`#55`](https://github.com/cataclym/KaikiBot/pull/55) +- Add some new shit [`#56`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/56) +- Master [`#55`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/55) ### Commits -- Updated discord.js v14.7.1 [`879f8b9`](https://github.com/cataclym/KaikiBot/commit/879f8b93250a4c071833cde7993dabb76dd48d14) -- Removed unnecessary check in dadbot [`6123045`](https://github.com/cataclym/KaikiBot/commit/61230459a1c42a3dbba661630808f5e5449d32fd) +- Updated discord.js v14.7.1 [`879f8b9`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/879f8b93250a4c071833cde7993dabb76dd48d14) +- Removed unnecessary check in dadbot [`6123045`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/61230459a1c42a3dbba661630808f5e5449d32fd) -## [v5.4.5](https://github.com/cataclym/KaikiBot/compare/v5.4.4...v5.4.5) - 2023-01-08 +## [v5.4.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.4...v5.4.5) - 2023-01-08 ### Commits -- Fix: AddEmote error not finding 'execFile' [`b06c77d`](https://github.com/cataclym/KaikiBot/commit/b06c77da7c64234c9404d6f15a2a48a6342abda7) -- Changed package.json [`c29de4d`](https://github.com/cataclym/KaikiBot/commit/c29de4dce5fdbe15d19701eda18ebc90b7da70f2) +- Fix: AddEmote error not finding 'execFile' [`b06c77d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b06c77da7c64234c9404d6f15a2a48a6342abda7) +- Changed package.json [`c29de4d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c29de4dce5fdbe15d19701eda18ebc90b7da70f2) -## [v5.4.4](https://github.com/cataclym/KaikiBot/compare/v5.4.3...v5.4.4) - 2023-01-07 +## [v5.4.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.3...v5.4.4) - 2023-01-07 ### Commits -- Fix: catgirl command works again [`b59de8d`](https://github.com/cataclym/KaikiBot/commit/b59de8d858a34e7d1d39f8080f9e1cdd9d462904) +- Fix: catgirl command works again [`b59de8d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b59de8d858a34e7d1d39f8080f9e1cdd9d462904) -## [v5.4.3](https://github.com/cataclym/KaikiBot/compare/v5.4.2...v5.4.3) - 2023-01-07 +## [v5.4.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.2...v5.4.3) - 2023-01-07 ### Commits -- Added: deregisrer - command to disable commands [`c239fa6`](https://github.com/cataclym/KaikiBot/commit/c239fa6b553bbba73f276bb16e0a8b9c58e7815e) +- Added: deregisrer - command to disable commands [`c239fa6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c239fa6b553bbba73f276bb16e0a8b9c58e7815e) -## [v5.4.2](https://github.com/cataclym/KaikiBot/compare/v5.4.1...v5.4.2) - 2023-01-06 +## [v5.4.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.1...v5.4.2) - 2023-01-06 ### Commits -- Hotfix: hex color arguments failed to parse [`5878e19`](https://github.com/cataclym/KaikiBot/commit/5878e19abd97921657f01483862e30c5e6376012) +- Hotfix: hex color arguments failed to parse [`5878e19`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/5878e19abd97921657f01483862e30c5e6376012) -## [v5.4.1](https://github.com/cataclym/KaikiBot/compare/v5.4.0...v5.4.1) - 2023-01-06 +## [v5.4.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.4.0...v5.4.1) - 2023-01-06 -## [v5.4.0](https://github.com/cataclym/KaikiBot/compare/v5.3.8...v5.4.0) - 2023-01-06 +## [v5.4.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.8...v5.4.0) - 2023-01-06 ### Commits -- Try to make generic imageapi class check endpoint aliases... [`b18ecb3`](https://github.com/cataclym/KaikiBot/commit/b18ecb3af2b582ed915f3eba034b4042ad8a36f7) -- Fixes non secure string argument [`6c16d3e`](https://github.com/cataclym/KaikiBot/commit/6c16d3ed933ef45da13a9630f5f09892bb278eef) -- More type safe ImageAPIs [`9a09f2c`](https://github.com/cataclym/KaikiBot/commit/9a09f2cedc5c5f5c0c21408adffe5611d648cc62) +- Try to make generic imageapi class check endpoint aliases... [`b18ecb3`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b18ecb3af2b582ed915f3eba034b4042ad8a36f7) +- Fixes non secure string argument [`6c16d3e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6c16d3ed933ef45da13a9630f5f09892bb278eef) +- More type safe ImageAPIs [`9a09f2c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9a09f2cedc5c5f5c0c21408adffe5611d648cc62) -## [v5.3.8](https://github.com/cataclym/KaikiBot/compare/v5.3.7...v5.3.8) - 2022-12-23 +## [v5.3.8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.7...v5.3.8) - 2022-12-23 ### Commits -- Added: Serverlist command [`304dda7`](https://github.com/cataclym/KaikiBot/commit/304dda747c340e3e11602d7c659a5d4141187958) -- Moved slash cmd functions to dedicated class. [`bcb7a34`](https://github.com/cataclym/KaikiBot/commit/bcb7a34bfe89aac788747d25f7c180c90a0567b9) -- Changed: Makes permission error ephemeral if its triggered by slash cmd [`956fcd1`](https://github.com/cataclym/KaikiBot/commit/956fcd1f3ccb6e3c1b47c5ba60800e3f36d0ced8) +- Added: Serverlist command [`304dda7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/304dda747c340e3e11602d7c659a5d4141187958) +- Moved slash cmd functions to dedicated class. [`bcb7a34`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/bcb7a34bfe89aac788747d25f7c180c90a0567b9) +- Changed: Makes permission error ephemeral if its triggered by slash cmd [`956fcd1`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/956fcd1f3ccb6e3c1b47c5ba60800e3f36d0ced8) -## [v5.3.7](https://github.com/cataclym/KaikiBot/compare/v5.3.6...v5.3.7) - 2022-12-22 +## [v5.3.7](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.6...v5.3.7) - 2022-12-22 ### Commits -- Minor changes [`eb0944f`](https://github.com/cataclym/KaikiBot/commit/eb0944fd66c4c99dc90ccf07e0362460b4c6a88d) -- Changed: rolelist more readable [`cdc73a6`](https://github.com/cataclym/KaikiBot/commit/cdc73a6da082a6657390558a174330aef1583fed) -- renamed some functions [`ca9df9d`](https://github.com/cataclym/KaikiBot/commit/ca9df9dbab629601762514e73fdca27f3535b36f) +- Minor changes [`eb0944f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/eb0944fd66c4c99dc90ccf07e0362460b4c6a88d) +- Changed: rolelist more readable [`cdc73a6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/cdc73a6da082a6657390558a174330aef1583fed) +- renamed some functions [`ca9df9d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/ca9df9dbab629601762514e73fdca27f3535b36f) -## [v5.3.6](https://github.com/cataclym/KaikiBot/compare/v5.3.5...v5.3.6) - 2022-12-21 +## [v5.3.6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.5...v5.3.6) - 2022-12-21 ### Commits -- Removed redundant dependencies. [`06e1217`](https://github.com/cataclym/KaikiBot/commit/06e121792f39ec4f778ab6cede565cf7f06282fd) -- Renamed Interfaces/files [`bf640cd`](https://github.com/cataclym/KaikiBot/commit/bf640cda18136142550703c573ef0926e451b4c7) -- Forced Ready state on client [`95421e5`](https://github.com/cataclym/KaikiBot/commit/95421e55e9e7c2a0b5fc015fb99475d0eb8a5db2) +- Removed redundant dependencies. [`06e1217`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/06e121792f39ec4f778ab6cede565cf7f06282fd) +- Renamed Interfaces/files [`bf640cd`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/bf640cda18136142550703c573ef0926e451b4c7) +- Forced Ready state on client [`95421e5`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/95421e55e9e7c2a0b5fc015fb99475d0eb8a5db2) -## [v5.3.5](https://github.com/cataclym/KaikiBot/compare/v5.3.4...v5.3.5) - 2022-12-19 +## [v5.3.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.4...v5.3.5) - 2022-12-19 ### Commits -- Changed: update build time is allowed to be 5 minutes - Extended timeout [`6eddcad`](https://github.com/cataclym/KaikiBot/commit/6eddcadb7f352722e6d5f39910663c67f7d0318d) -- I am blind. [`a82a1de`](https://github.com/cataclym/KaikiBot/commit/a82a1de09db54d16f248900f2244652d760b4a2c) +- Changed: update build time is allowed to be 5 minutes - Extended timeout [`6eddcad`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6eddcadb7f352722e6d5f39910663c67f7d0318d) +- I am blind. [`a82a1de`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a82a1de09db54d16f248900f2244652d760b4a2c) -## [v5.3.4](https://github.com/cataclym/KaikiBot/compare/v5.3.3...v5.3.4) - 2022-12-19 +## [v5.3.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.3...v5.3.4) - 2022-12-19 ### Commits -- Removed functions.ts file - Moved them to their respective files. [`cecee68`](https://github.com/cataclym/KaikiBot/commit/cecee6837d90379034a1fad803106ec50d2ae8b8) -- Set no required permissions for exclude command [`6bd3159`](https://github.com/cataclym/KaikiBot/commit/6bd3159aa6f714f5fb901a6d03bf1245f43270f3) +- Removed functions.ts file - Moved them to their respective files. [`cecee68`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/cecee6837d90379034a1fad803106ec50d2ae8b8) +- Set no required permissions for exclude command [`6bd3159`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6bd3159aa6f714f5fb901a6d03bf1245f43270f3) -## [v5.3.3](https://github.com/cataclym/KaikiBot/compare/v5.3.2...v5.3.3) - 2022-12-18 +## [v5.3.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.2...v5.3.3) - 2022-12-18 ### Commits -- Locked to guild and no userperms [`5beb47d`](https://github.com/cataclym/KaikiBot/commit/5beb47de7f00fb831d63bf166bee619a10c9103c) +- Locked to guild and no userperms [`5beb47d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/5beb47de7f00fb831d63bf166bee619a10c9103c) -## [v5.3.2](https://github.com/cataclym/KaikiBot/compare/v5.3.1...v5.3.2) - 2022-12-18 +## [v5.3.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.1...v5.3.2) - 2022-12-18 ### Commits -- ooops [`64d95ce`](https://github.com/cataclym/KaikiBot/commit/64d95ce3bacabe0c58709a0987e3c886db693945) +- ooops [`64d95ce`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/64d95ce3bacabe0c58709a0987e3c886db693945) -## [v5.3.1](https://github.com/cataclym/KaikiBot/compare/v5.3.0...v5.3.1) - 2022-12-18 +## [v5.3.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.3.0...v5.3.1) - 2022-12-18 ### Commits -- Test global command register [`368dbf7`](https://github.com/cataclym/KaikiBot/commit/368dbf790f6a72868b3bf77a0d66dc9b4ee128f1) +- Test global command register [`368dbf7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/368dbf790f6a72868b3bf77a0d66dc9b4ee128f1) -## [v5.3.0](https://github.com/cataclym/KaikiBot/compare/v5.2.0...v5.3.0) - 2022-12-18 +## [v5.3.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.2.0...v5.3.0) - 2022-12-18 ### Commits -- Chore: Code quality. Updated naming conv. and removed unused imports [`9461a7e`](https://github.com/cataclym/KaikiBot/commit/9461a7e4352ba016a5bf110a4baf75885f275069) -- Fixed: info no longer returning empty map. Also added discord time. [`6b47b5c`](https://github.com/cataclym/KaikiBot/commit/6b47b5c40de03002e1514705aa411e07ed82c56b) +- Chore: Code quality. Updated naming conv. and removed unused imports [`9461a7e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9461a7e4352ba016a5bf110a4baf75885f275069) +- Fixed: info no longer returning empty map. Also added discord time. [`6b47b5c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6b47b5c40de03002e1514705aa411e07ed82c56b) -## [v5.2.0](https://github.com/cataclym/KaikiBot/compare/v5.1.19...v5.2.0) - 2022-12-14 +## [v5.2.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.19...v5.2.0) - 2022-12-14 ### Merged -- Merge magic_numbers into master branch [`#54`](https://github.com/cataclym/KaikiBot/pull/54) +- Merge magic_numbers into master branch [`#54`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/54) -## [v5.1.19](https://github.com/cataclym/KaikiBot/compare/v5.1.18...v5.1.19) - 2022-12-07 +## [v5.1.19](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.18...v5.1.19) - 2022-12-07 ### Commits -- Fix: presence will no longer reset randomly [`9beccb4`](https://github.com/cataclym/KaikiBot/commit/9beccb43ff34af34a48201c6931d658dfbc6bc6f) -- Correctly reference scope to set presence [`a220459`](https://github.com/cataclym/KaikiBot/commit/a220459e0ea8db5beccefb3c0a765eae31136b5a) +- Fix: presence will no longer reset randomly [`9beccb4`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9beccb43ff34af34a48201c6931d658dfbc6bc6f) +- Correctly reference scope to set presence [`a220459`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a220459e0ea8db5beccefb3c0a765eae31136b5a) -## [v5.1.18](https://github.com/cataclym/KaikiBot/compare/v5.1.17...v5.1.18) - 2022-12-05 +## [v5.1.18](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.17...v5.1.18) - 2022-12-05 ### Commits -- Fix: presence correctly set at launch [`fe444ce`](https://github.com/cataclym/KaikiBot/commit/fe444cea7f20f965f133cab80c2a270d07701c21) +- Fix: presence correctly set at launch [`fe444ce`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/fe444cea7f20f965f133cab80c2a270d07701c21) -## [v5.1.17](https://github.com/cataclym/KaikiBot/compare/v5.1.16...v5.1.17) - 2022-12-05 +## [v5.1.17](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.16...v5.1.17) - 2022-12-05 ### Commits -- Its supposed to be stdout... [`c33e705`](https://github.com/cataclym/KaikiBot/commit/c33e70583e32d42fb912ce71857a42cf51609126) +- Its supposed to be stdout... [`c33e705`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c33e70583e32d42fb912ce71857a42cf51609126) -## [v5.1.16](https://github.com/cataclym/KaikiBot/compare/v5.1.15...v5.1.16) - 2022-12-05 +## [v5.1.16](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.15...v5.1.16) - 2022-12-05 ### Commits -- Added: Update command - dedicated message for up to date [`678d3fb`](https://github.com/cataclym/KaikiBot/commit/678d3fbc1ca7ff55bcff1504b7014df27feab8d9) +- Added: Update command - dedicated message for up to date [`678d3fb`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/678d3fbc1ca7ff55bcff1504b7014df27feab8d9) -## [v5.1.15](https://github.com/cataclym/KaikiBot/compare/v5.1.14...v5.1.15) - 2022-12-05 +## [v5.1.15](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.14...v5.1.15) - 2022-12-05 ### Commits -- It was this easy??? [`d0460dc`](https://github.com/cataclym/KaikiBot/commit/d0460dc5b8285cdfb884c7fb8856942647469d93) +- It was this easy??? [`d0460dc`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d0460dc5b8285cdfb884c7fb8856942647469d93) -## [v5.1.14](https://github.com/cataclym/KaikiBot/compare/v5.1.13...v5.1.14) - 2022-12-05 +## [v5.1.14](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.13...v5.1.14) - 2022-12-05 ### Commits -- Added: economy command. Show overall currency stats [`27971fc`](https://github.com/cataclym/KaikiBot/commit/27971fc025056ff91b7d5fc44ee7054663ceb6b7) -- Fixed: empty message error when no currency in db [`43f06b8`](https://github.com/cataclym/KaikiBot/commit/43f06b80bb9abe201d15f6f6b49fb12d00b97cc4) +- Added: economy command. Show overall currency stats [`27971fc`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/27971fc025056ff91b7d5fc44ee7054663ceb6b7) +- Fixed: empty message error when no currency in db [`43f06b8`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/43f06b80bb9abe201d15f6f6b49fb12d00b97cc4) -## [v5.1.13](https://github.com/cataclym/KaikiBot/compare/v5.1.12...v5.1.13) - 2022-12-05 +## [v5.1.13](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.12...v5.1.13) - 2022-12-05 ### Commits -- ITS ALL STDOUT NOW [`71b0078`](https://github.com/cataclym/KaikiBot/commit/71b007886d0a107886313316f49be9232e17a206) +- ITS ALL STDOUT NOW [`71b0078`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/71b007886d0a107886313316f49be9232e17a206) -## [v5.1.12](https://github.com/cataclym/KaikiBot/compare/v5.1.11...v5.1.12) - 2022-12-05 +## [v5.1.12](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.11...v5.1.12) - 2022-12-05 -## [v5.1.11](https://github.com/cataclym/KaikiBot/compare/v5.1.10...v5.1.11) - 2022-12-05 +## [v5.1.11](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.10...v5.1.11) - 2022-12-05 ### Commits -- Updated prisma ^4.7.1 [`bb81dbf`](https://github.com/cataclym/KaikiBot/commit/bb81dbfd4c423efb8de7c2a0e7f8f6e30e680319) -- Oh yeah, stderr was always gonna be empty [`f6298e0`](https://github.com/cataclym/KaikiBot/commit/f6298e01614c1e070ff8c62a381761d8c5d94ceb) +- Updated prisma ^4.7.1 [`bb81dbf`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/bb81dbfd4c423efb8de7c2a0e7f8f6e30e680319) +- Oh yeah, stderr was always gonna be empty [`f6298e0`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f6298e01614c1e070ff8c62a381761d8c5d94ceb) -## [v5.1.10](https://github.com/cataclym/KaikiBot/compare/v5.1.9...v5.1.10) - 2022-12-05 +## [v5.1.10](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.9...v5.1.10) - 2022-12-05 ### Commits -- QOL [`1f8daec`](https://github.com/cataclym/KaikiBot/commit/1f8daec3a3bf90549fe436d19a4960600513fd66) +- QOL [`1f8daec`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/1f8daec3a3bf90549fe436d19a4960600513fd66) -## [v5.1.9](https://github.com/cataclym/KaikiBot/compare/v5.1.8...v5.1.9) - 2022-12-05 +## [v5.1.9](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.8...v5.1.9) - 2022-12-05 ### Commits -- Trim that output plz [`8e68df0`](https://github.com/cataclym/KaikiBot/commit/8e68df0a07673b87063dff999e152e63abcfd221) +- Trim that output plz [`8e68df0`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8e68df0a07673b87063dff999e152e63abcfd221) -## [v5.1.8](https://github.com/cataclym/KaikiBot/compare/v5.1.7...v5.1.8) - 2022-12-05 +## [v5.1.8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.7...v5.1.8) - 2022-12-05 ### Commits -- Added: missing guildfeatures [`62494bf`](https://github.com/cataclym/KaikiBot/commit/62494bfa2007113f0e3905dfb523e94afcfe8cee) +- Added: missing guildfeatures [`62494bf`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/62494bfa2007113f0e3905dfb523e94afcfe8cee) -## [v5.1.7](https://github.com/cataclym/KaikiBot/compare/v5.1.6...v5.1.7) - 2022-12-05 +## [v5.1.7](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.6...v5.1.7) - 2022-12-05 ### Commits -- Who knew git checkout outputted to stderr [`a20e1b6`](https://github.com/cataclym/KaikiBot/commit/a20e1b60aa78021990a5dc1de3c2ea6255ca0457) +- Who knew git checkout outputted to stderr [`a20e1b6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a20e1b60aa78021990a5dc1de3c2ea6255ca0457) -## [v5.1.6](https://github.com/cataclym/KaikiBot/compare/v5.1.5...v5.1.6) - 2022-12-05 +## [v5.1.6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.5...v5.1.6) - 2022-12-05 ### Commits -- more update bash [`8fe4939`](https://github.com/cataclym/KaikiBot/commit/8fe493927f532e03605526c7838a1130e532e6c6) +- more update bash [`8fe4939`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8fe493927f532e03605526c7838a1130e532e6c6) -## [v5.1.5](https://github.com/cataclym/KaikiBot/compare/v5.1.4...v5.1.5) - 2022-12-05 +## [v5.1.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.4...v5.1.5) - 2022-12-05 ### Commits -- more bash [`7e5a716`](https://github.com/cataclym/KaikiBot/commit/7e5a7168285a43d422404c433cefe5b679696de5) +- more bash [`7e5a716`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/7e5a7168285a43d422404c433cefe5b679696de5) -## [v5.1.4](https://github.com/cataclym/KaikiBot/compare/v5.1.3...v5.1.4) - 2022-12-05 +## [v5.1.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.3...v5.1.4) - 2022-12-05 ### Commits -- Remove redundant docs [`445eed9`](https://github.com/cataclym/KaikiBot/commit/445eed921ea321f42b5d3a08836168696eea4e4b) +- Remove redundant docs [`445eed9`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/445eed921ea321f42b5d3a08836168696eea4e4b) -## [v5.1.3](https://github.com/cataclym/KaikiBot/compare/v5.1.2...v5.1.3) - 2022-12-05 +## [v5.1.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.2...v5.1.3) - 2022-12-05 ### Commits -- Handle bash different to fit async [`f8f6330`](https://github.com/cataclym/KaikiBot/commit/f8f63308e8d8bf8d8af8387da1068ba2d525da84) +- Handle bash different to fit async [`f8f6330`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f8f63308e8d8bf8d8af8387da1068ba2d525da84) -## [v5.1.2](https://github.com/cataclym/KaikiBot/compare/v5.1.1...v5.1.2) - 2022-12-05 +## [v5.1.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.1...v5.1.2) - 2022-12-05 ### Commits -- Changed: Redirect error to stderr, and quote all methods [`43e5086`](https://github.com/cataclym/KaikiBot/commit/43e508696c2090d37023c7a1faa62b8dc1fa2dea) +- Changed: Redirect error to stderr, and quote all methods [`43e5086`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/43e508696c2090d37023c7a1faa62b8dc1fa2dea) -## [v5.1.1](https://github.com/cataclym/KaikiBot/compare/v5.1.0...v5.1.1) - 2022-12-05 +## [v5.1.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.1.0...v5.1.1) - 2022-12-05 -## [v5.1.0](https://github.com/cataclym/KaikiBot/compare/v5.0.24...v5.1.0) - 2022-12-05 +## [v5.1.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.24...v5.1.0) - 2022-12-05 ### Commits -- Changed: a loadfilter will now filter neofetch and kawaii commands [`d3f532a`](https://github.com/cataclym/KaikiBot/commit/d3f532a2b0a5b16cf647884781e5104320e288ae) +- Changed: a loadfilter will now filter neofetch and kawaii commands [`d3f532a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d3f532a2b0a5b16cf647884781e5104320e288ae) -## [v5.0.24](https://github.com/cataclym/KaikiBot/compare/v5.0.23...v5.0.24) - 2022-12-04 +## [v5.0.24](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.23...v5.0.24) - 2022-12-04 ### Commits -- Changed: rewritten update to be async [`d27e606`](https://github.com/cataclym/KaikiBot/commit/d27e606aac7c750af547ea9012d426c2a8d4c961) +- Changed: rewritten update to be async [`d27e606`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d27e606aac7c750af547ea9012d426c2a8d4c961) -## [v5.0.23](https://github.com/cataclym/KaikiBot/compare/v5.0.22...v5.0.23) - 2022-12-04 +## [v5.0.23](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.22...v5.0.23) - 2022-12-04 ### Commits -- Hotfix: Moved dependencies around to install properly in production. [`2a7be1e`](https://github.com/cataclym/KaikiBot/commit/2a7be1ee7e1d54efa50b6458ad7cb815e6938ff0) +- Hotfix: Moved dependencies around to install properly in production. [`2a7be1e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2a7be1ee7e1d54efa50b6458ad7cb815e6938ff0) -## [v5.0.22](https://github.com/cataclym/KaikiBot/compare/v5.0.21...v5.0.22) - 2022-12-04 +## [v5.0.22](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.21...v5.0.22) - 2022-12-04 ### Commits -- Fix: Made npm ci run build in foreground - Fixing update procedure [`8ac638f`](https://github.com/cataclym/KaikiBot/commit/8ac638f96c37adf3cdcf2b7d7cb80227aa9f0110) +- Fix: Made npm ci run build in foreground - Fixing update procedure [`8ac638f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8ac638f96c37adf3cdcf2b7d7cb80227aa9f0110) -## [v5.0.21](https://github.com/cataclym/KaikiBot/compare/v5.0.20...v5.0.21) - 2022-12-04 +## [v5.0.21](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.20...v5.0.21) - 2022-12-04 -## [v5.0.20](https://github.com/cataclym/KaikiBot/compare/v5.0.19...v5.0.20) - 2022-12-04 +## [v5.0.20](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.19...v5.0.20) - 2022-12-04 ### Commits -- More update patches... [`52a9166`](https://github.com/cataclym/KaikiBot/commit/52a91669a455719461da84fe09dbadf7619470a4) +- More update patches... [`52a9166`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/52a91669a455719461da84fe09dbadf7619470a4) -## [v5.0.19](https://github.com/cataclym/KaikiBot/compare/v5.0.18...v5.0.19) - 2022-12-04 +## [v5.0.19](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.18...v5.0.19) - 2022-12-04 -## [v5.0.18](https://github.com/cataclym/KaikiBot/compare/v5.0.17...v5.0.18) - 2022-12-04 +## [v5.0.18](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.17...v5.0.18) - 2022-12-04 ### Commits -- Initial migration commit [`9a3de6e`](https://github.com/cataclym/KaikiBot/commit/9a3de6e8abb7b0605a595f40b2ae0957d5506620) -- Minor code quality fixes [`6c3ad7c`](https://github.com/cataclym/KaikiBot/commit/6c3ad7c27f8b88d0cf4ea0a2f0b93bca526ee008) -- Added: Migration for defaultprefix, fixes for setting activity [`b1b4cc4`](https://github.com/cataclym/KaikiBot/commit/b1b4cc411e8f92721f4d04a90155a86d3f968d68) +- Initial migration commit [`9a3de6e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9a3de6e8abb7b0605a595f40b2ae0957d5506620) +- Minor code quality fixes [`6c3ad7c`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6c3ad7c27f8b88d0cf4ea0a2f0b93bca526ee008) +- Added: Migration for defaultprefix, fixes for setting activity [`b1b4cc4`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b1b4cc411e8f92721f4d04a90155a86d3f968d68) -## [v5.0.17](https://github.com/cataclym/KaikiBot/compare/v5.0.16...v5.0.17) - 2022-11-30 +## [v5.0.17](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.16...v5.0.17) - 2022-11-30 ### Commits -- huh [`40581b1`](https://github.com/cataclym/KaikiBot/commit/40581b1f4ed381405a313fe08088ef53ad3d79f2) +- huh [`40581b1`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/40581b1f4ed381405a313fe08088ef53ad3d79f2) -## [v5.0.16](https://github.com/cataclym/KaikiBot/compare/v5.0.15...v5.0.16) - 2022-11-28 +## [v5.0.16](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.15...v5.0.16) - 2022-11-28 ### Commits -- Wrote a solid fix for stupid password error, pls work [`8a3f6ff`](https://github.com/cataclym/KaikiBot/commit/8a3f6ff15361e94af21c0e921c8614b2efa7497b) +- Wrote a solid fix for stupid password error, pls work [`8a3f6ff`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8a3f6ff15361e94af21c0e921c8614b2efa7497b) -## [v5.0.15](https://github.com/cataclym/KaikiBot/compare/v5.0.14...v5.0.15) - 2022-11-28 +## [v5.0.15](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.14...v5.0.15) - 2022-11-28 ### Commits -- Meh. [`9c47f2d`](https://github.com/cataclym/KaikiBot/commit/9c47f2dfa5ba1383ccff52b09f9190773d71df20) +- Meh. [`9c47f2d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9c47f2dfa5ba1383ccff52b09f9190773d71df20) -## [v5.0.14](https://github.com/cataclym/KaikiBot/compare/v5.0.13...v5.0.14) - 2022-11-28 +## [v5.0.14](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.13...v5.0.14) - 2022-11-28 ### Commits -- might work... [`80cee93`](https://github.com/cataclym/KaikiBot/commit/80cee93a30f53c29c7a17ae0a9d4fce0865db6ee) +- might work... [`80cee93`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/80cee93a30f53c29c7a17ae0a9d4fce0865db6ee) -## [v5.0.13](https://github.com/cataclym/KaikiBot/compare/v5.0.12...v5.0.13) - 2022-11-28 +## [v5.0.13](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.12...v5.0.13) - 2022-11-28 ### Commits -- Forgot to update a type [`426bfab`](https://github.com/cataclym/KaikiBot/commit/426bfab1918391e40d8066227363d2d9443439d7) +- Forgot to update a type [`426bfab`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/426bfab1918391e40d8066227363d2d9443439d7) -## [v5.0.12](https://github.com/cataclym/KaikiBot/compare/v5.0.11...v5.0.12) - 2022-11-28 +## [v5.0.12](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.11...v5.0.12) - 2022-11-28 ### Commits -- Hotfix to maybe fix build issue? [`2d655f2`](https://github.com/cataclym/KaikiBot/commit/2d655f2142a1a053781b32046ea61b379a411eaf) +- Hotfix to maybe fix build issue? [`2d655f2`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2d655f2142a1a053781b32046ea61b379a411eaf) -## [v5.0.11](https://github.com/cataclym/KaikiBot/compare/v5.0.10...v5.0.11) - 2022-11-28 +## [v5.0.11](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.10...v5.0.11) - 2022-11-28 ### Commits -- Hotfixes: embed color conversion re-worked and remove dist in install [`c89d45d`](https://github.com/cataclym/KaikiBot/commit/c89d45d52978deee83c4665a049107991610fbc3) -- Chore: code quality [`9b177be`](https://github.com/cataclym/KaikiBot/commit/9b177bec945b949028da82d88611ff9166274cf7) +- Hotfixes: embed color conversion re-worked and remove dist in install [`c89d45d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c89d45d52978deee83c4665a049107991610fbc3) +- Chore: code quality [`9b177be`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9b177bec945b949028da82d88611ff9166274cf7) -## [v5.0.10](https://github.com/cataclym/KaikiBot/compare/v5.0.9...v5.0.10) - 2022-11-20 +## [v5.0.10](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.9...v5.0.10) - 2022-11-20 ### Commits -- Updated pagination fixes timeout issue. Updated dtchnl internals [`e1be6df`](https://github.com/cataclym/KaikiBot/commit/e1be6df28273154cffaf2d33337fe76ee5accdf2) +- Updated pagination fixes timeout issue. Updated dtchnl internals [`e1be6df`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e1be6df28273154cffaf2d33337fe76ee5accdf2) -## [v5.0.9](https://github.com/cataclym/KaikiBot/compare/v5.0.8...v5.0.9) - 2022-11-19 +## [v5.0.9](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.8...v5.0.9) - 2022-11-19 -## [v5.0.8](https://github.com/cataclym/KaikiBot/compare/v5.0.7...v5.0.8) - 2022-11-19 +## [v5.0.8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.7...v5.0.8) - 2022-11-19 ### Commits -- Further update edits [`869978b`](https://github.com/cataclym/KaikiBot/commit/869978b4b333d8dd0908b9362497ba2b2f29129f) +- Further update edits [`869978b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/869978b4b333d8dd0908b9362497ba2b2f29129f) -## [v5.0.7](https://github.com/cataclym/KaikiBot/compare/v5.0.6...v5.0.7) - 2022-11-19 +## [v5.0.7](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.6...v5.0.7) - 2022-11-19 -## [v5.0.6](https://github.com/cataclym/KaikiBot/compare/v5.0.5...v5.0.6) - 2022-11-19 +## [v5.0.6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.5...v5.0.6) - 2022-11-19 ### Commits -- Fetch new tags [`3b8e7eb`](https://github.com/cataclym/KaikiBot/commit/3b8e7ebb184b948cfafa9b6252a4a88bf0567931) +- Fetch new tags [`3b8e7eb`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/3b8e7ebb184b948cfafa9b6252a4a88bf0567931) -## [v5.0.5](https://github.com/cataclym/KaikiBot/compare/v5.0.4...v5.0.5) - 2022-11-19 +## [v5.0.5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.4...v5.0.5) - 2022-11-19 ### Commits -- Updated pagination dependency [`8b97b23`](https://github.com/cataclym/KaikiBot/commit/8b97b231ed54405897bfc34e9fd3b7c944b5bb4f) -- Use EmbedBuilder.from instead of creating a new EmbedBuilder [`8cc4182`](https://github.com/cataclym/KaikiBot/commit/8cc418271407329b9a38bb94fb01a6547b804b5e) +- Updated pagination dependency [`8b97b23`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8b97b231ed54405897bfc34e9fd3b7c944b5bb4f) +- Use EmbedBuilder.from instead of creating a new EmbedBuilder [`8cc4182`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/8cc418271407329b9a38bb94fb01a6547b804b5e) -## [v5.0.4](https://github.com/cataclym/KaikiBot/compare/v5.0.3...v5.0.4) - 2022-11-14 +## [v5.0.4](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.3...v5.0.4) - 2022-11-14 ### Commits -- Fix: error when running exclude [`14a2ee5`](https://github.com/cataclym/KaikiBot/commit/14a2ee5f9fd9985143a9aaff136b01a041b3783c) -- Changed build to also install dependencies as it runs build after. [`f81f291`](https://github.com/cataclym/KaikiBot/commit/f81f2914785ac8485eb9d06182444905b3699b1f) +- Fix: error when running exclude [`14a2ee5`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/14a2ee5f9fd9985143a9aaff136b01a041b3783c) +- Changed build to also install dependencies as it runs build after. [`f81f291`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f81f2914785ac8485eb9d06182444905b3699b1f) -## [v5.0.3](https://github.com/cataclym/KaikiBot/compare/v5.0.2...v5.0.3) - 2022-11-14 +## [v5.0.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.2...v5.0.3) - 2022-11-14 ### Commits -- Somehow fixed dadbot (I think) [`6357672`](https://github.com/cataclym/KaikiBot/commit/6357672a31dda2b5cc3ddb5519b5d0003b3233c2) +- Somehow fixed dadbot (I think) [`6357672`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6357672a31dda2b5cc3ddb5519b5d0003b3233c2) -## [v5.0.2](https://github.com/cataclym/KaikiBot/compare/v5.0.1...v5.0.2) - 2022-11-14 +## [v5.0.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.1...v5.0.2) - 2022-11-14 ### Commits -- Fixed: enum causing errors, category commands and inhibitor fixed. [`84a60d2`](https://github.com/cataclym/KaikiBot/commit/84a60d271a1b15b6936b5f57b227c1c1fd48d0c0) +- Fixed: enum causing errors, category commands and inhibitor fixed. [`84a60d2`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/84a60d271a1b15b6936b5f57b227c1c1fd48d0c0) -## [v5.0.1](https://github.com/cataclym/KaikiBot/compare/v5.0.0-16...v5.0.1) - 2022-11-14 +## [v5.0.1](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-16...v5.0.1) - 2022-11-14 ### Merged -- Release v5 [`#53`](https://github.com/cataclym/KaikiBot/pull/53) +- Release v5 [`#53`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/53) ### Commits -- Removed release job. Will manually push tags instead. [`7c0190a`](https://github.com/cataclym/KaikiBot/commit/7c0190adc4a5fe6abbaaa8d3ace57f3fbe9b1b62) +- Removed release job. Will manually push tags instead. [`7c0190a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/7c0190adc4a5fe6abbaaa8d3ace57f3fbe9b1b62) -## [v5.0.0-16](https://github.com/cataclym/KaikiBot/compare/v5.0.0-15...v5.0.0-16) - 2022-11-14 +## [v5.0.0-16](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-15...v5.0.0-16) - 2022-11-14 -## [v5.0.0-15](https://github.com/cataclym/KaikiBot/compare/v5.0.0-13...v5.0.0-15) - 2022-11-14 +## [v5.0.0-15](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-13...v5.0.0-15) - 2022-11-14 ### Commits -- ignore, im dumb [`f5a2cad`](https://github.com/cataclym/KaikiBot/commit/f5a2cadb42857767beda2cf0ad26cc6aef056c68) -- build.sh set to executable [`26a1ad2`](https://github.com/cataclym/KaikiBot/commit/26a1ad23a65c5f9e64769e007bf508c806de4295) +- ignore, im dumb [`f5a2cad`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f5a2cadb42857767beda2cf0ad26cc6aef056c68) +- build.sh set to executable [`26a1ad2`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/26a1ad23a65c5f9e64769e007bf508c806de4295) -## [v5.0.0-13](https://github.com/cataclym/KaikiBot/compare/v5.0.0-12...v5.0.0-13) - 2022-11-14 +## [v5.0.0-13](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-12...v5.0.0-13) - 2022-11-14 -## [v5.0.0-12](https://github.com/cataclym/KaikiBot/compare/v5.0.0-11...v5.0.0-12) - 2022-11-14 +## [v5.0.0-12](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-11...v5.0.0-12) - 2022-11-14 ### Commits -- Sort git tags by ACTUAL version number [`48fc122`](https://github.com/cataclym/KaikiBot/commit/48fc122adeded77162d10d6e1dfdbb66f48170f9) +- Sort git tags by ACTUAL version number [`48fc122`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/48fc122adeded77162d10d6e1dfdbb66f48170f9) -## [v5.0.0-11](https://github.com/cataclym/KaikiBot/compare/v5.0.0-10...v5.0.0-11) - 2022-11-14 +## [v5.0.0-11](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-10...v5.0.0-11) - 2022-11-14 -## [v5.0.0-10](https://github.com/cataclym/KaikiBot/compare/v5.0.0-9...v5.0.0-10) - 2022-11-14 +## [v5.0.0-10](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-9...v5.0.0-10) - 2022-11-14 ### Commits -- Changed checks "hash" to "command" for POSIX compliance. [`7362fe4`](https://github.com/cataclym/KaikiBot/commit/7362fe4de3df5d703151aa275d6edfa5ec2b4379) +- Changed checks "hash" to "command" for POSIX compliance. [`7362fe4`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/7362fe4de3df5d703151aa275d6edfa5ec2b4379) -## [v5.0.0-9](https://github.com/cataclym/KaikiBot/compare/v5.0.0-8...v5.0.0-9) - 2022-11-14 +## [v5.0.0-9](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-8...v5.0.0-9) - 2022-11-14 ### Commits -- Exit with code 1 when no update is available [`21259cd`](https://github.com/cataclym/KaikiBot/commit/21259cd75ce9a11a0788bff6fbd316dd37842cf0) +- Exit with code 1 when no update is available [`21259cd`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/21259cd75ce9a11a0788bff6fbd316dd37842cf0) -## [v5.0.0-8](https://github.com/cataclym/KaikiBot/compare/v5.0.0-7...v5.0.0-8) - 2022-11-14 +## [v5.0.0-8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-7...v5.0.0-8) - 2022-11-14 ### Commits -- Added build script and button update cmd for building [`330c827`](https://github.com/cataclym/KaikiBot/commit/330c8273214136040415a22cd8e592ba91e7ae7a) -- Fix: Update needs to use __dirname instead of resolve() [`337dde0`](https://github.com/cataclym/KaikiBot/commit/337dde0c9b91bfed825b9634db7154e60ef32420) +- Added build script and button update cmd for building [`330c827`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/330c8273214136040415a22cd8e592ba91e7ae7a) +- Fix: Update needs to use __dirname instead of resolve() [`337dde0`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/337dde0c9b91bfed825b9634db7154e60ef32420) -## [v5.0.0-7](https://github.com/cataclym/KaikiBot/compare/v5.0.0-6...v5.0.0-7) - 2022-11-14 +## [v5.0.0-7](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-6...v5.0.0-7) - 2022-11-14 -## [v5.0.0-6](https://github.com/cataclym/KaikiBot/compare/v5.0.0-5...v5.0.0-6) - 2022-11-14 +## [v5.0.0-6](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v5.0.0-5...v5.0.0-6) - 2022-11-14 ### Commits -- Added: Update cmd. (Needs to be tested) [`6d1e22d`](https://github.com/cataclym/KaikiBot/commit/6d1e22de1e4728db3c15c7c44b0fa91653191908) -- Update script (probably) works [`89a86e9`](https://github.com/cataclym/KaikiBot/commit/89a86e90e2b2872346fc6910ac9d39f24021afbb) +- Added: Update cmd. (Needs to be tested) [`6d1e22d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6d1e22de1e4728db3c15c7c44b0fa91653191908) +- Update script (probably) works [`89a86e9`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/89a86e90e2b2872346fc6910ac9d39f24021afbb) -## [v5.0.0-5](https://github.com/cataclym/KaikiBot/compare/v4.0.10...v5.0.0-5) - 2022-11-09 +## [v5.0.0-5](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v4.0.10...v5.0.0-5) - 2022-11-09 ### Commits -- Code compatbility with djs14 [`2b1401b`](https://github.com/cataclym/KaikiBot/commit/2b1401ba4a0df994eaea7cb4a746fec10fb205ad) -- Updated dependencies for prisma and pagination [`fb24a15`](https://github.com/cataclym/KaikiBot/commit/fb24a1520215355e890f0a6b1f5bd7378870d5fd) -- Renamed embed [`b80aa55`](https://github.com/cataclym/KaikiBot/commit/b80aa554cd2c13bbab1d04c20e5f7b5d8c74a513) +- Code compatbility with djs14 [`2b1401b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2b1401ba4a0df994eaea7cb4a746fec10fb205ad) +- Updated dependencies for prisma and pagination [`fb24a15`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/fb24a1520215355e890f0a6b1f5bd7378870d5fd) +- Renamed embed [`b80aa55`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b80aa554cd2c13bbab1d04c20e5f7b5d8c74a513) -## [v4.0.10](https://github.com/cataclym/KaikiBot/compare/v4.0.9...v4.0.10) - 2022-06-21 +## [v4.0.10](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v4.0.9...v4.0.10) - 2022-06-21 ### Commits -- Fixed cmdslist. [`f43b32d`](https://github.com/cataclym/KaikiBot/commit/f43b32d82056e5a7989df60da281a393387ce52e) +- Fixed cmdslist. [`f43b32d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/f43b32d82056e5a7989df60da281a393387ce52e) -## [v4.0.9](https://github.com/cataclym/KaikiBot/compare/v4.0.8...v4.0.9) - 2022-06-21 +## [v4.0.9](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/v4.0.8...v4.0.9) - 2022-06-21 ### Commits -- updated pagination [`7ab9076`](https://github.com/cataclym/KaikiBot/commit/7ab90768d61179d2c210cf9723b3c67d0324c64a) +- updated pagination [`7ab9076`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/7ab90768d61179d2c210cf9723b3c67d0324c64a) -## [v4.0.8](https://github.com/cataclym/KaikiBot/compare/4.0.0-Gainsboro-Alpha...v4.0.8) - 2022-06-21 +## [v4.0.8](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/4.0.0-Gainsboro-Alpha...v4.0.8) - 2022-06-21 ### Commits -- Updated Discord.js - Supports text channels in voice channels! [`bf96607`](https://github.com/cataclym/KaikiBot/commit/bf96607dd7c7f0973ecc38bdc6c933136b8d1481) -- Slightly changed slots interals [`aea4703`](https://github.com/cataclym/KaikiBot/commit/aea470374c36cf6c0eb5d87b6e8e27c33966b37e) -- Changed access to MySQL DB variable to a getter. [`45f3cda`](https://github.com/cataclym/KaikiBot/commit/45f3cda19501c15115fdd63b1f1dbbb4ba1a22a3) +- Updated Discord.js - Supports text channels in voice channels! [`bf96607`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/bf96607dd7c7f0973ecc38bdc6c933136b8d1481) +- Slightly changed slots interals [`aea4703`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/aea470374c36cf6c0eb5d87b6e8e27c33966b37e) +- Changed access to MySQL DB variable to a getter. [`45f3cda`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/45f3cda19501c15115fdd63b1f1dbbb4ba1a22a3) -## [4.0.0-Gainsboro-Alpha](https://github.com/cataclym/KaikiBot/compare/4.0.0-Gainsboro...4.0.0-Gainsboro-Alpha) - 2022-04-19 +## [4.0.0-Gainsboro-Alpha](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/4.0.0-Gainsboro...4.0.0-Gainsboro-Alpha) - 2022-04-19 -## [4.0.0-Gainsboro](https://github.com/cataclym/KaikiBot/compare/3.7.0...4.0.0-Gainsboro) - 2022-04-26 +## [4.0.0-Gainsboro](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.7.0...4.0.0-Gainsboro) - 2022-04-26 ### Commits -- Integrated MySQL into command inhibitor + Migration fixes [`9c16b8f`](https://github.com/cataclym/KaikiBot/commit/9c16b8fa9173ccf7ff47a0e65ec59a57caa5e5bd) -- linting and mikro-orm [`0f8ec39`](https://github.com/cataclym/KaikiBot/commit/0f8ec39c3254b32b4fb82e56033ee02945d7e084) -- kms [`d2bedac`](https://github.com/cataclym/KaikiBot/commit/d2bedac06f0808f7f2ebcfe02c6d57cc06df6113) +- Integrated MySQL into command inhibitor + Migration fixes [`9c16b8f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9c16b8fa9173ccf7ff47a0e65ec59a57caa5e5bd) +- linting and mikro-orm [`0f8ec39`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/0f8ec39c3254b32b4fb82e56033ee02945d7e084) +- kms [`d2bedac`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d2bedac06f0808f7f2ebcfe02c6d57cc06df6113) -## [3.7.0](https://github.com/cataclym/KaikiBot/compare/3.6.0...3.7.0) - 2022-01-12 +## [3.7.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.6.0...3.7.0) - 2022-01-12 ### Commits -- Untested changes. [`4b239f6`](https://github.com/cataclym/KaikiBot/commit/4b239f612b0d09a34246a67da1ca211b7e8b71db) -- Slightly changed slots interals [`aea4703`](https://github.com/cataclym/KaikiBot/commit/aea470374c36cf6c0eb5d87b6e8e27c33966b37e) -- new emote category, new short date time formatting, added guildfeatures [`c7bae7a`](https://github.com/cataclym/KaikiBot/commit/c7bae7a6ba169131c5bdac3e612087331086a0a6) +- Untested changes. [`4b239f6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/4b239f612b0d09a34246a67da1ca211b7e8b71db) +- Slightly changed slots interals [`aea4703`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/aea470374c36cf6c0eb5d87b6e8e27c33966b37e) +- new emote category, new short date time formatting, added guildfeatures [`c7bae7a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c7bae7a6ba169131c5bdac3e612087331086a0a6) -## [3.6.0](https://github.com/cataclym/KaikiBot/compare/3.5.37-Fuchsia...3.6.0) - 2021-11-11 +## [3.6.0](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.5.37-Fuchsia...3.6.0) - 2021-11-11 ### Commits -- Fix addemote: "gifsicle is not defined" [`c265711`](https://github.com/cataclym/KaikiBot/commit/c265711894ea22b101a04fdaa5215b6bf3d82814) -- Re-added Tic-Tac-Toe for now. Featuring some minor improvements. [`b9ad9d7`](https://github.com/cataclym/KaikiBot/commit/b9ad9d79ef0547597ff73cf363f19d683333be6f) -- Update doc, version, removed Kaori dependency (again) [`c14f62e`](https://github.com/cataclym/KaikiBot/commit/c14f62e82230105629969fb25531811e6dab329d) +- Fix addemote: "gifsicle is not defined" [`c265711`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c265711894ea22b101a04fdaa5215b6bf3d82814) +- Re-added Tic-Tac-Toe for now. Featuring some minor improvements. [`b9ad9d7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b9ad9d79ef0547597ff73cf363f19d683333be6f) +- Update doc, version, removed Kaori dependency (again) [`c14f62e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c14f62e82230105629969fb25531811e6dab329d) -## [3.5.37-Fuchsia](https://github.com/cataclym/KaikiBot/compare/3.5.35-Fuchsia...3.5.37-Fuchsia) - 2021-10-09 +## [3.5.37-Fuchsia](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.5.35-Fuchsia...3.5.37-Fuchsia) - 2021-10-09 ### Commits -- Added: custom role support for role-icon. [`3b1ea9b`](https://github.com/cataclym/KaikiBot/commit/3b1ea9b9a3068d359c14f8df88587626aa131d44) -- Added DB Migration-handler and first migration script [`b34a6ab`](https://github.com/cataclym/KaikiBot/commit/b34a6abecb9a486aef1d0e503a7bfbbea34707c6) -- Minor string edits [`24a297a`](https://github.com/cataclym/KaikiBot/commit/24a297aef2fe0a3373c8349993f4ab213cfd8b05) +- Added: custom role support for role-icon. [`3b1ea9b`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/3b1ea9b9a3068d359c14f8df88587626aa131d44) +- Added DB Migration-handler and first migration script [`b34a6ab`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b34a6abecb9a486aef1d0e503a7bfbbea34707c6) +- Minor string edits [`24a297a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/24a297aef2fe0a3373c8349993f4ab213cfd8b05) -## [3.5.35-Fuchsia](https://github.com/cataclym/KaikiBot/compare/3.5.23-Emerald...3.5.35-Fuchsia) - 2021-08-26 +## [3.5.35-Fuchsia](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.5.23-Emerald...3.5.35-Fuchsia) - 2021-08-26 ### Commits -- Supports d.js v13 official release [`86ac9ac`](https://github.com/cataclym/KaikiBot/commit/86ac9acf3a1cd8c383e16117a6f23c6ef9c5a99e) -- Added daily, user's can now claim their daily allowance [`e251f7a`](https://github.com/cataclym/KaikiBot/commit/e251f7ab15bdc67d95a9198900ac5aae83ee8567) -- Added: manga, gencmdlist command [`e936bbf`](https://github.com/cataclym/KaikiBot/commit/e936bbffbe4dcbb90644c987e08cd78c9ce2c05c) +- Supports d.js v13 official release [`86ac9ac`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/86ac9acf3a1cd8c383e16117a6f23c6ef9c5a99e) +- Added daily, user's can now claim their daily allowance [`e251f7a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e251f7ab15bdc67d95a9198900ac5aae83ee8567) +- Added: manga, gencmdlist command [`e936bbf`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e936bbffbe4dcbb90644c987e08cd78c9ce2c05c) -## [3.5.23-Emerald](https://github.com/cataclym/KaikiBot/compare/3.5.22-Emerald...3.5.23-Emerald) - 2021-07-27 +## [3.5.23-Emerald](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.5.22-Emerald...3.5.23-Emerald) - 2021-07-27 ### Commits -- Updated to current development version of discord.js / akiro [`b0b1300`](https://github.com/cataclym/KaikiBot/commit/b0b130009af98e3e57d5ff63cb91dc6e12975488) -- Updated dependencies [`69be49e`](https://github.com/cataclym/KaikiBot/commit/69be49e69ec48594b4c44ae8e76ca98a472c93e7) -- Added KaikiCommand as a local module [`86ed3f5`](https://github.com/cataclym/KaikiBot/commit/86ed3f585b5b0495abb5aff6b2051f593c5d81ae) +- Updated to current development version of discord.js / akiro [`b0b1300`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b0b130009af98e3e57d5ff63cb91dc6e12975488) +- Updated dependencies [`69be49e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/69be49e69ec48594b4c44ae8e76ca98a472c93e7) +- Added KaikiCommand as a local module [`86ed3f5`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/86ed3f585b5b0495abb5aff6b2051f593c5d81ae) -## [3.5.22-Emerald](https://github.com/cataclym/KaikiBot/compare/3.5.3-Fuchsia...3.5.22-Emerald) - 2021-07-11 +## [3.5.22-Emerald](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.5.3-Fuchsia...3.5.22-Emerald) - 2021-07-11 -## [3.5.3-Fuchsia](https://github.com/cataclym/KaikiBot/compare/3.5.0-Emerald...3.5.3-Fuchsia) - 2021-08-07 +## [3.5.3-Fuchsia](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.5.0-Emerald...3.5.3-Fuchsia) - 2021-08-07 ### Merged -- Configure SAST in `.gitlab-ci.yml`, creating this file if it does not already exist [`#51`](https://github.com/cataclym/KaikiBot/pull/51) +- Configure SAST in `.gitlab-ci.yml`, creating this file if it does not already exist [`#51`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/51) ### Commits -- Updated to current development version of discord.js / akiro [`b0b1300`](https://github.com/cataclym/KaikiBot/commit/b0b130009af98e3e57d5ff63cb91dc6e12975488) -- Supports d.js v13 official release [`86ac9ac`](https://github.com/cataclym/KaikiBot/commit/86ac9acf3a1cd8c383e16117a6f23c6ef9c5a99e) -- Updated dependencies [`69be49e`](https://github.com/cataclym/KaikiBot/commit/69be49e69ec48594b4c44ae8e76ca98a472c93e7) +- Updated to current development version of discord.js / akiro [`b0b1300`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b0b130009af98e3e57d5ff63cb91dc6e12975488) +- Supports d.js v13 official release [`86ac9ac`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/86ac9acf3a1cd8c383e16117a6f23c6ef9c5a99e) +- Updated dependencies [`69be49e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/69be49e69ec48594b4c44ae8e76ca98a472c93e7) -## [3.5.0-Emerald](https://github.com/cataclym/KaikiBot/compare/3.4.3-Desire...3.5.0-Emerald) - 2021-07-04 +## [3.5.0-Emerald](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.4.3-Desire...3.5.0-Emerald) - 2021-07-04 ### Merged -- Money service implementation [`#50`](https://github.com/cataclym/KaikiBot/pull/50) +- Money service implementation [`#50`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/50) ### Commits -- Fix send() embed methods for 100 files. Casued by djs 13 [`0a60eb6`](https://github.com/cataclym/KaikiBot/commit/0a60eb605ac7d7367e83a0529c81831ca4549b35) -- Added (KaikiCommand): Custom command class to support usage [`4fc2d31`](https://github.com/cataclym/KaikiBot/commit/4fc2d31f5042043c19789ce5819a440e5bc3ef20) -- update package [`55d593f`](https://github.com/cataclym/KaikiBot/commit/55d593f2aef6b3af4697d088cf5b9958ad2c55b7) +- Fix send() embed methods for 100 files. Casued by djs 13 [`0a60eb6`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/0a60eb605ac7d7367e83a0529c81831ca4549b35) +- Added (KaikiCommand): Custom command class to support usage [`4fc2d31`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/4fc2d31f5042043c19789ce5819a440e5bc3ef20) +- update package [`55d593f`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/55d593f2aef6b3af4697d088cf5b9958ad2c55b7) -## [3.4.3-Desire](https://github.com/cataclym/KaikiBot/compare/3.4.2-Cherry...3.4.3-Desire) - 2021-05-29 +## [3.4.3-Desire](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.4.2-Cherry...3.4.3-Desire) - 2021-05-29 ### Commits -- Various minor edits: QoL improvements, no .js imports, API link fix [`069bfaa`](https://github.com/cataclym/KaikiBot/commit/069bfaa420da441c584f619ec99dfa3c54085203) -- removed some NPM scripts, updated TS [`ee3ad82`](https://github.com/cataclym/KaikiBot/commit/ee3ad82f7b347bcde8d72bd6d0ee0a25b46359a9) -- The final part of yeeting cache [`6be8db0`](https://github.com/cataclym/KaikiBot/commit/6be8db0a171f6d2d1ce72458c699bbf06b6fd5a5) +- Various minor edits: QoL improvements, no .js imports, API link fix [`069bfaa`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/069bfaa420da441c584f619ec99dfa3c54085203) +- removed some NPM scripts, updated TS [`ee3ad82`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/ee3ad82f7b347bcde8d72bd6d0ee0a25b46359a9) +- The final part of yeeting cache [`6be8db0`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6be8db0a171f6d2d1ce72458c699bbf06b6fd5a5) -## [3.4.2-Cherry](https://github.com/cataclym/KaikiBot/compare/3.4.1-aqua...3.4.2-Cherry) - 2021-05-19 +## [3.4.2-Cherry](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.4.1-aqua...3.4.2-Cherry) - 2021-05-19 ### Commits -- more color support [`6134f99`](https://github.com/cataclym/KaikiBot/commit/6134f99d49bcdc7ef7cfad79b21e47b4bea2389e) -- v3.4.2-Cherry - Updated dependencies [`9e936f7`](https://github.com/cataclym/KaikiBot/commit/9e936f7a2a9a6fc0c2b9afe3c6ff7d0f18549ef2) -- package.json edits to workaround "Conflicting definitions" [`4aad7d8`](https://github.com/cataclym/KaikiBot/commit/4aad7d8feeed9fef04456edbfc53df5ccbac61f2) +- more color support [`6134f99`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/6134f99d49bcdc7ef7cfad79b21e47b4bea2389e) +- v3.4.2-Cherry - Updated dependencies [`9e936f7`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/9e936f7a2a9a6fc0c2b9afe3c6ff7d0f18549ef2) +- package.json edits to workaround "Conflicting definitions" [`4aad7d8`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/4aad7d8feeed9fef04456edbfc53df5ccbac61f2) -## [3.4.1-aqua](https://github.com/cataclym/KaikiBot/compare/3.4.1-Blueberry...3.4.1-aqua) - 2021-04-06 +## [3.4.1-aqua](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.4.1-Blueberry...3.4.1-aqua) - 2021-04-06 -## [3.4.1-Blueberry](https://github.com/cataclym/KaikiBot/compare/3.3.47-r18...3.4.1-Blueberry) - 2021-05-01 +## [3.4.1-Blueberry](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.3.47-r18...3.4.1-Blueberry) - 2021-05-01 ### Commits -- garbage p1 [`827903a`](https://github.com/cataclym/KaikiBot/commit/827903ab26fff9c319176d405660a722bd02f2ea) -- Reddit Interface/model moved [`358cc84`](https://github.com/cataclym/KaikiBot/commit/358cc84ccf8057373247b1b691bf86162c8bf4bc) -- nsb [`21a6a01`](https://github.com/cataclym/KaikiBot/commit/21a6a0109ad170a4f8ce7a7cfe39d22924fff8f3) +- garbage p1 [`827903a`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/827903ab26fff9c319176d405660a722bd02f2ea) +- Reddit Interface/model moved [`358cc84`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/358cc84ccf8057373247b1b691bf86162c8bf4bc) +- nsb [`21a6a01`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/21a6a0109ad170a4f8ce7a7cfe39d22924fff8f3) -## [3.3.47-r18](https://github.com/cataclym/KaikiBot/compare/3.3.46-colors...3.3.47-r18) - 2021-01-10 +## [3.3.47-r18](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.3.46-colors...3.3.47-r18) - 2021-01-10 ### Commits -- Added: waifu.pics api commands and hex color table [`b5b4516`](https://github.com/cataclym/KaikiBot/commit/b5b4516c38202c6d192b8cec0004172847bfffc3) -- Edit: distro file cleaned, sorted [`df2b39e`](https://github.com/cataclym/KaikiBot/commit/df2b39efcd459a2631ac3b005e719db2cc96d656) -- Added: More waifu.pics reactions commands. [`32ca8cb`](https://github.com/cataclym/KaikiBot/commit/32ca8cba9ee4b8e4880cfae5a9653b62bcad775c) +- Added: waifu.pics api commands and hex color table [`b5b4516`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b5b4516c38202c6d192b8cec0004172847bfffc3) +- Edit: distro file cleaned, sorted [`df2b39e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/df2b39efcd459a2631ac3b005e719db2cc96d656) +- Added: More waifu.pics reactions commands. [`32ca8cb`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/32ca8cba9ee4b8e4880cfae5a9653b62bcad775c) -## [3.3.46-colors](https://github.com/cataclym/KaikiBot/compare/3.3.43-clr...3.3.46-colors) - 2021-01-02 +## [3.3.46-colors](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.3.43-clr...3.3.46-colors) - 2021-01-02 ### Commits -- Edit (big): Moved to own akairo fork [`279ccce`](https://github.com/cataclym/KaikiBot/commit/279cccefb230d9e5f0988a770c26e714961c8f57) -- Folder renamed, color added. [`e6a1fe0`](https://github.com/cataclym/KaikiBot/commit/e6a1fe0509259eb953b8dafffb0e5291a28b08b8) -- Chore: update tscript/eslint/types [`a9e7132`](https://github.com/cataclym/KaikiBot/commit/a9e713298ecb47839d35f0c044d1a18bd5410e37) +- Edit (big): Moved to own akairo fork [`279ccce`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/279cccefb230d9e5f0988a770c26e714961c8f57) +- Folder renamed, color added. [`e6a1fe0`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/e6a1fe0509259eb953b8dafffb0e5291a28b08b8) +- Chore: update tscript/eslint/types [`a9e7132`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/a9e713298ecb47839d35f0c044d1a18bd5410e37) -## [3.3.43-clr](https://github.com/cataclym/KaikiBot/compare/3.3.3...3.3.43-clr) - 2020-12-09 +## [3.3.43-clr](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.3.3...3.3.43-clr) - 2020-12-09 ### Commits -- Edit: Changed all remaining getMemberColorAsync methods + cleaned up. [`7eb1c03`](https://github.com/cataclym/KaikiBot/commit/7eb1c03d7f1a33622702b28cfbc99ada67b26811) -- Edit: A logger has been implemented. Id like to improve it. Maybe more [`0e25a8d`](https://github.com/cataclym/KaikiBot/commit/0e25a8d95d42f2ddfec1a15b2500666970ad24f4) -- Added: dadBot as command [`b81e789`](https://github.com/cataclym/KaikiBot/commit/b81e789ca50a077b4d1c678f91d87ea0d101fbce) +- Edit: Changed all remaining getMemberColorAsync methods + cleaned up. [`7eb1c03`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/7eb1c03d7f1a33622702b28cfbc99ada67b26811) +- Edit: A logger has been implemented. Id like to improve it. Maybe more [`0e25a8d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/0e25a8d95d42f2ddfec1a15b2500666970ad24f4) +- Added: dadBot as command [`b81e789`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/b81e789ca50a077b4d1c678f91d87ea0d101fbce) -## [3.3.3](https://github.com/cataclym/KaikiBot/compare/3.3.2...3.3.3) - 2020-11-27 +## [3.3.3](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.3.2...3.3.3) - 2020-11-27 ### Commits -- Added: Changelog. [`d6cf0f1`](https://github.com/cataclym/KaikiBot/commit/d6cf0f184be1646976dbdf7b7a2cd53037a050ee) -- Edit: functions => util [`2e9c4e5`](https://github.com/cataclym/KaikiBot/commit/2e9c4e5062fbd622aafb572241c29e1f33237357) -- WIP: Miyano roles [`618285e`](https://github.com/cataclym/KaikiBot/commit/618285e8270532713870af5fca14bb878c1b2da7) +- Added: Changelog. [`d6cf0f1`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/d6cf0f184be1646976dbdf7b7a2cd53037a050ee) +- Edit: functions => util [`2e9c4e5`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/2e9c4e5062fbd622aafb572241c29e1f33237357) +- WIP: Miyano roles [`618285e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/618285e8270532713870af5fca14bb878c1b2da7) -## [3.3.2](https://github.com/cataclym/KaikiBot/compare/3.0.2...3.3.2) - 2020-11-22 +## [3.3.2](https://github.com/cataclym/Kaiki-Deishu-Bot/compare/3.0.2...3.3.2) - 2020-11-22 ### Commits -- emote p2 [`10d639e`](https://github.com/cataclym/KaikiBot/commit/10d639ec40ed8f052c70f366557b5d5916e84ec5) -- postgres and jimp [`831729d`](https://github.com/cataclym/KaikiBot/commit/831729dc16e924e6e82fe2c8bc8701123c7255dd) -- 3.2.1: fixes to reddit / remove useless cmds / interface for reddit json [`bc14e66`](https://github.com/cataclym/KaikiBot/commit/bc14e66884c8afec41f5c930a1c96efe1b665486) +- emote p2 [`10d639e`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/10d639ec40ed8f052c70f366557b5d5916e84ec5) +- postgres and jimp [`831729d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/831729dc16e924e6e82fe2c8bc8701123c7255dd) +- 3.2.1: fixes to reddit / remove useless cmds / interface for reddit json [`bc14e66`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/bc14e66884c8afec41f5c930a1c96efe1b665486) ## 3.0.2 - 2020-10-15 ### Merged -- Dev merger Akairo 💥 [`#46`](https://github.com/cataclym/KaikiBot/pull/46) -- 1.3.4 update, fixes and renaming [`#43`](https://github.com/cataclym/KaikiBot/pull/43) -- updated deps [`#42`](https://github.com/cataclym/KaikiBot/pull/42) -- Emotecount hotfix [`#40`](https://github.com/cataclym/KaikiBot/pull/40) -- minor Tinder list edit [`#39`](https://github.com/cataclym/KaikiBot/pull/39) -- 1.3.2 - No more bots in Tinder [`#38`](https://github.com/cataclym/KaikiBot/pull/38) -- Merge frem dev with pagination and more [`#37`](https://github.com/cataclym/KaikiBot/pull/37) -- From dev branch [`#36`](https://github.com/cataclym/KaikiBot/pull/36) -- actual ping [`#35`](https://github.com/cataclym/KaikiBot/pull/35) -- tiny fix to tiny issue [`#34`](https://github.com/cataclym/KaikiBot/pull/34) -- I wrote a big message earlier, but had to revert. This update is kind… [`#33`](https://github.com/cataclym/KaikiBot/pull/33) -- Tinder fixes, implemented lists and dislike removal [`#32`](https://github.com/cataclym/KaikiBot/pull/32) -- Fix to marry() Rolls upped to 15 [`#31`](https://github.com/cataclym/KaikiBot/pull/31) -- Added TinderDBService [`#30`](https://github.com/cataclym/KaikiBot/pull/30) -- Fix to Tinder reset time and Emotecount [`#29`](https://github.com/cataclym/KaikiBot/pull/29) -- Added time left for rolls/likes [`#28`](https://github.com/cataclym/KaikiBot/pull/28) -- Dev [`#27`](https://github.com/cataclym/KaikiBot/pull/27) -- hotfix [`#26`](https://github.com/cataclym/KaikiBot/pull/26) -- Adds tinder, holiday, emote count and much more +++ [`#25`](https://github.com/cataclym/KaikiBot/pull/25) -- oh yeah mr crabs [`#22`](https://github.com/cataclym/KaikiBot/pull/22) -- Embeds++ [`#19`](https://github.com/cataclym/KaikiBot/pull/19) -- Fixes to help and names [`#18`](https://github.com/cataclym/KaikiBot/pull/18) -- help/names ++ [`#17`](https://github.com/cataclym/KaikiBot/pull/17) -- disable command breaking help [`#16`](https://github.com/cataclym/KaikiBot/pull/16) -- Fixes to cmd and help [`#15`](https://github.com/cataclym/KaikiBot/pull/15) -- quick admin only [`#14`](https://github.com/cataclym/KaikiBot/pull/14) -- from dev [`#13`](https://github.com/cataclym/KaikiBot/pull/13) -- Updates from Dev +todo and more [`#12`](https://github.com/cataclym/KaikiBot/pull/12) -- Just checking // Seems fine [`#11`](https://github.com/cataclym/KaikiBot/pull/11) -- fixes +new commands [`#7`](https://github.com/cataclym/KaikiBot/pull/7) -- new cmd, minor fixes tweaks [`#6`](https://github.com/cataclym/KaikiBot/pull/6) -- this should work x2 [`#5`](https://github.com/cataclym/KaikiBot/pull/5) -- Pretty embeds ++ [`#4`](https://github.com/cataclym/KaikiBot/pull/4) -- From dev [`#3`](https://github.com/cataclym/KaikiBot/pull/3) -- Export func + emotereact [`#1`](https://github.com/cataclym/KaikiBot/pull/1) - -### Commits - -- Time to celebrate 🎊 [`c14bf45`](https://github.com/cataclym/KaikiBot/commit/c14bf453adb42d8ecacb581aa2c366f7352c36ab) -- indents+fix for names.js [`bb1548d`](https://github.com/cataclym/KaikiBot/commit/bb1548df6dab5ca1b13fdf7b5b29e31f150e1fe3) -- Converting to Akairo Update1 [`107ce41`](https://github.com/cataclym/KaikiBot/commit/107ce419f1ca0ccd9f524993c9f52eb71abd1a0e) +- Dev merger Akairo 💥 [`#46`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/46) +- 1.3.4 update, fixes and renaming [`#43`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/43) +- updated deps [`#42`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/42) +- Emotecount hotfix [`#40`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/40) +- minor Tinder list edit [`#39`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/39) +- 1.3.2 - No more bots in Tinder [`#38`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/38) +- Merge frem dev with pagination and more [`#37`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/37) +- From dev branch [`#36`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/36) +- actual ping [`#35`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/35) +- tiny fix to tiny issue [`#34`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/34) +- I wrote a big message earlier, but had to revert. This update is kind… [`#33`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/33) +- Tinder fixes, implemented lists and dislike removal [`#32`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/32) +- Fix to marry() Rolls upped to 15 [`#31`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/31) +- Added TinderDBService [`#30`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/30) +- Fix to Tinder reset time and Emotecount [`#29`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/29) +- Added time left for rolls/likes [`#28`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/28) +- Dev [`#27`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/27) +- hotfix [`#26`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/26) +- Adds tinder, holiday, emote count and much more +++ [`#25`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/25) +- oh yeah mr crabs [`#22`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/22) +- Embeds++ [`#19`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/19) +- Fixes to help and names [`#18`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/18) +- help/names ++ [`#17`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/17) +- disable command breaking help [`#16`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/16) +- Fixes to cmd and help [`#15`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/15) +- quick admin only [`#14`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/14) +- from dev [`#13`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/13) +- Updates from Dev +todo and more [`#12`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/12) +- Just checking // Seems fine [`#11`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/11) +- fixes +new commands [`#7`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/7) +- new cmd, minor fixes tweaks [`#6`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/6) +- this should work x2 [`#5`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/5) +- Pretty embeds ++ [`#4`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/4) +- From dev [`#3`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/3) +- Export func + emotereact [`#1`](https://github.com/cataclym/Kaiki-Deishu-Bot/pull/1) + +### Commits + +- Time to celebrate 🎊 [`c14bf45`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/c14bf453adb42d8ecacb581aa2c366f7352c36ab) +- indents+fix for names.js [`bb1548d`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/bb1548df6dab5ca1b13fdf7b5b29e31f150e1fe3) +- Converting to Akairo Update1 [`107ce41`](https://github.com/cataclym/Kaiki-Deishu-Bot/commit/107ce419f1ca0ccd9f524993c9f52eb71abd1a0e) diff --git a/package-lock.json b/package-lock.json index 0b3f55c0..cf79469f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "kaikideishubot", - "version": "6.1.20", + "version": "6.1.21", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "kaikideishubot", - "version": "6.1.20", + "version": "6.1.21", "license": "MIT", "dependencies": { "@prisma/client": "^5.10.2", diff --git a/package.json b/package.json index 23f6a0bf..ea46dee9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kaikideishubot", - "version": "6.1.20", + "version": "6.1.21", "main": "./dist/index.js", "scripts": { "start": "node dist/index.js --color", From a5fc612a1531e47e5f55e8e15865de091eaf87ac Mon Sep 17 00:00:00 2001 From: Cata <11278743+cataclym@users.noreply.github.com> Date: Wed, 25 Sep 2024 22:41:10 +0200 Subject: [PATCH 42/44] Re-added dadbot counting, again. --- src/lib/DadBot.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib/DadBot.ts b/src/lib/DadBot.ts index ff8747c6..0d99a8cf 100644 --- a/src/lib/DadBot.ts +++ b/src/lib/DadBot.ts @@ -72,6 +72,8 @@ export class DadBot { allowedMentions: {}, }); + message.client.cache.incrementCommand("dadbot"); + if ( nick.length <= parseInt( From f22b745eae45485f1afb15cb6662aa28d4725026 Mon Sep 17 00:00:00 2001 From: Cata Date: Sun, 29 Sep 2024 01:41:03 +0200 Subject: [PATCH 43/44] Webserver: Added(POST Request) Guild endpoint to update data --- bun.lockb | Bin 0 -> 223349 bytes package-lock.json | 1730 ++++++++++++++------------ package.json | 36 +- src/lib/Kaiki/KaikiArgumentsTypes.ts | 2 +- src/lib/Kaiki/KaikiSapphireClient.ts | 3 +- src/lib/ServerConfig/Config.ts | 2 +- src/lib/WebAPI/Webserver.ts | 120 +- 7 files changed, 1030 insertions(+), 863 deletions(-) create mode 100755 bun.lockb diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..9b2bd93a044a9137a04f4e3eb729c79f1bf20938 GIT binary patch literal 223349 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%0D02z&O|ulIPLc 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index cf79469f..9fe7a361 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,36 +13,51 @@ "@sapphire/decorators": "^6.1.0", "@sapphire/framework": "^5.2.1", "@sapphire/plugin-logger": "^4.0.2", - "@sapphire/plugin-subcommands": "^6.0.3", - "@sapphire/shapeshift": "^3.9.7", + "@sapphire/plugin-subcommands": "^7.0.0", + "@sapphire/shapeshift": "^4.0.0", "bufferutil": "^4.0.8", - "discord-js-button-pagination-ts": "^4.2.0", - "discord.js": "^14.15.2", + "discord-js-button-pagination-ts": "^4.2.1-0", + "discord.js": "^14.16.2", "discordbotlist-djs": "^0.0.4", "dotenv": "^16.4.5", - "express": "^4.19.2", - "mysql2": "^3.11.0", - "node-gyp": "^10.1.0", + "express": "^4.21.0", + "mysql2": "^3.11.3", + "node-gyp": "^10.2.0", "prisma": "^5.10.2", - "sharp": "^0.33.3", + "sharp": "^0.33.5", "source-map-support": "^0.5.21", - "utf-8-validate": "^6.0.3", + "utf-8-validate": "^6.0.4", "zlib-sync": "^0.1.9" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.7.1", - "@typescript-eslint/parser": "^7.7.1", - "auto-changelog": "^2.4.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "typescript": "^5.4.5" + "@typescript-eslint/eslint-plugin": "^8.7.0", + "@typescript-eslint/parser": "^8.7.0", + "auto-changelog": "^2.5.0", + "eslint": "^8.57.1", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import": "^2.30.0", + "typescript": "^5.6.2" }, "engines": { "node": ">=18.0.0", "npm": ">=9.0.0" } }, + "../discord-js-button-pagination-ts": { + "version": "4.2.1-0", + "license": "MIT", + "dependencies": { + "discord.js": "^14.14.1 - ^14.16.2" + }, + "devDependencies": { + "@types/node": "^20.10.4", + "typedoc": "^0.25.7", + "typedoc-plugin-mdn-links": "^3.1.13", + "typedoc-plugin-missing-exports": "^2.2.0", + "typedoc-plugin-rename-defaults": "^0.7.0", + "typescript": "^5.3.3" + } + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -53,25 +68,30 @@ } }, "node_modules/@discordjs/builders": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.8.1.tgz", - "integrity": "sha512-GkF+HM01FHy+NSoTaUPR8z44otfQgJ1AIsRxclYGUZDyUbdZEFyD/5QVv2Y1Flx6M+B0bQLzg2M9CJv5lGTqpA==", - "dependencies": { - "@discordjs/formatters": "^0.4.0", - "@discordjs/util": "^1.1.0", - "@sapphire/shapeshift": "^3.9.7", - "discord-api-types": "0.37.83", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.9.0.tgz", + "integrity": "sha512-0zx8DePNVvQibh5ly5kCEei5wtPBIUbSoE9n+91Rlladz4tgtFbJ36PZMxxZrTEOQ7AHMZ/b0crT/0fCy6FTKg==", + "dependencies": { + "@discordjs/formatters": "^0.5.0", + "@discordjs/util": "^1.1.1", + "@sapphire/shapeshift": "^4.0.0", + "discord-api-types": "0.37.97", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.4", - "tslib": "^2.6.2" + "tslib": "^2.6.3" }, "engines": { - "node": ">=16.11.0" + "node": ">=18" }, "funding": { "url": "https://github.com/discordjs/discord.js?sponsor" } }, + "node_modules/@discordjs/builders/node_modules/discord-api-types": { + "version": "0.37.97", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz", + "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==" + }, "node_modules/@discordjs/collection": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz", @@ -81,45 +101,50 @@ } }, "node_modules/@discordjs/formatters": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.4.0.tgz", - "integrity": "sha512-fJ06TLC1NiruF35470q3Nr1bi95BdvKFAF+T5bNfZJ4bNdqZ3VZ+Ttg6SThqTxm6qumSG3choxLBHMC69WXNXQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.5.0.tgz", + "integrity": "sha512-98b3i+Y19RFq1Xke4NkVY46x8KjJQjldHUuEbCqMvp1F5Iq9HgnGpu91jOi/Ufazhty32eRsKnnzS8n4c+L93g==", "dependencies": { - "discord-api-types": "0.37.83" + "discord-api-types": "0.37.97" }, "engines": { - "node": ">=16.11.0" + "node": ">=18" }, "funding": { "url": "https://github.com/discordjs/discord.js?sponsor" } }, + "node_modules/@discordjs/formatters/node_modules/discord-api-types": { + "version": "0.37.97", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz", + "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==" + }, "node_modules/@discordjs/rest": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.3.0.tgz", - "integrity": "sha512-C1kAJK8aSYRv3ZwMG8cvrrW4GN0g5eMdP8AuN8ODH5DyOCbHgJspze1my3xHOAgwLJdKUbWNVyAeJ9cEdduqIg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.4.0.tgz", + "integrity": "sha512-Xb2irDqNcq+O8F0/k/NaDp7+t091p+acb51iA4bCKfIn+WFWd6HrNvcsSbMMxIR9NjcMZS6NReTKygqiQN+ntw==", "dependencies": { - "@discordjs/collection": "^2.1.0", - "@discordjs/util": "^1.1.0", - "@sapphire/async-queue": "^1.5.2", + "@discordjs/collection": "^2.1.1", + "@discordjs/util": "^1.1.1", + "@sapphire/async-queue": "^1.5.3", "@sapphire/snowflake": "^3.5.3", - "@vladfrangu/async_event_emitter": "^2.2.4", - "discord-api-types": "0.37.83", + "@vladfrangu/async_event_emitter": "^2.4.6", + "discord-api-types": "0.37.97", "magic-bytes.js": "^1.10.0", - "tslib": "^2.6.2", - "undici": "6.13.0" + "tslib": "^2.6.3", + "undici": "6.19.8" }, "engines": { - "node": ">=16.11.0" + "node": ">=18" }, "funding": { "url": "https://github.com/discordjs/discord.js?sponsor" } }, "node_modules/@discordjs/rest/node_modules/@discordjs/collection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.0.tgz", - "integrity": "sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz", + "integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==", "engines": { "node": ">=18" }, @@ -127,21 +152,26 @@ "url": "https://github.com/discordjs/discord.js?sponsor" } }, + "node_modules/@discordjs/rest/node_modules/discord-api-types": { + "version": "0.37.97", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz", + "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==" + }, "node_modules/@discordjs/util": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.0.tgz", - "integrity": "sha512-IndcI5hzlNZ7GS96RV3Xw1R2kaDuXEp7tRIy/KlhidpN/BQ1qh1NZt3377dMLTa44xDUNKT7hnXkA/oUAzD/lg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.1.tgz", + "integrity": "sha512-eddz6UnOBEB1oITPinyrB2Pttej49M9FZQY8NxgEvc3tq6ZICZ19m70RsmzRdDHk80O9NoYN/25AqJl8vPVf/g==", "engines": { - "node": ">=16.11.0" + "node": ">=18" }, "funding": { "url": "https://github.com/discordjs/discord.js?sponsor" } }, "node_modules/@discordjs/ws": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.1.0.tgz", - "integrity": "sha512-O97DIeSvfNTn5wz5vaER6ciyUsr7nOqSEtsLoMhhIgeFkhnxLRqSr00/Fpq2/ppLgjDGLbQCDzIK7ilGoB/M7A==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.1.1.tgz", + "integrity": "sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA==", "dependencies": { "@discordjs/collection": "^2.1.0", "@discordjs/rest": "^2.3.0", @@ -161,9 +191,9 @@ } }, "node_modules/@discordjs/ws/node_modules/@discordjs/collection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.0.tgz", - "integrity": "sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz", + "integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==", "engines": { "node": ">=18" }, @@ -172,9 +202,9 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.1.1.tgz", - "integrity": "sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", + "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", "optional": true, "dependencies": { "tslib": "^2.4.0" @@ -228,21 +258,22 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" }, @@ -264,15 +295,16 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.3.tgz", - "integrity": "sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", "cpu": [ "arm64" ], @@ -281,23 +313,19 @@ "darwin" ], "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.2" + "@img/sharp-libvips-darwin-arm64": "1.0.4" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.3.tgz", - "integrity": "sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", "cpu": [ "x64" ], @@ -306,23 +334,19 @@ "darwin" ], "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.2" + "@img/sharp-libvips-darwin-x64": "1.0.4" } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", - "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", "cpu": [ "arm64" ], @@ -330,20 +354,14 @@ "os": [ "darwin" ], - "engines": { - "macos": ">=11", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz", - "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", "cpu": [ "x64" ], @@ -351,20 +369,14 @@ "os": [ "darwin" ], - "engines": { - "macos": ">=10.13", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz", - "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", "cpu": [ "arm" ], @@ -372,20 +384,14 @@ "os": [ "linux" ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz", - "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", "cpu": [ "arm64" ], @@ -393,20 +399,14 @@ "os": [ "linux" ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz", - "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", "cpu": [ "s390x" ], @@ -414,20 +414,14 @@ "os": [ "linux" ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz", - "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", "cpu": [ "x64" ], @@ -435,20 +429,14 @@ "os": [ "linux" ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz", - "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", "cpu": [ "arm64" ], @@ -456,20 +444,14 @@ "os": [ "linux" ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz", - "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", "cpu": [ "x64" ], @@ -477,20 +459,14 @@ "os": [ "linux" ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.3.tgz", - "integrity": "sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", "cpu": [ "arm" ], @@ -499,23 +475,19 @@ "linux" ], "engines": { - "glibc": ">=2.28", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.2" + "@img/sharp-libvips-linux-arm": "1.0.5" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.3.tgz", - "integrity": "sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", "cpu": [ "arm64" ], @@ -524,23 +496,19 @@ "linux" ], "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.2" + "@img/sharp-libvips-linux-arm64": "1.0.4" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.3.tgz", - "integrity": "sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", "cpu": [ "s390x" ], @@ -549,23 +517,19 @@ "linux" ], "engines": { - "glibc": ">=2.28", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.2" + "@img/sharp-libvips-linux-s390x": "1.0.4" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.3.tgz", - "integrity": "sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", "cpu": [ "x64" ], @@ -574,23 +538,19 @@ "linux" ], "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.2" + "@img/sharp-libvips-linux-x64": "1.0.4" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.3.tgz", - "integrity": "sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", "cpu": [ "arm64" ], @@ -599,23 +559,19 @@ "linux" ], "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2" + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.3.tgz", - "integrity": "sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", "cpu": [ "x64" ], @@ -624,44 +580,37 @@ "linux" ], "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.2" + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.3.tgz", - "integrity": "sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", "cpu": [ "wasm32" ], "optional": true, "dependencies": { - "@emnapi/runtime": "^1.1.0" + "@emnapi/runtime": "^1.2.0" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.3.tgz", - "integrity": "sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", "cpu": [ "ia32" ], @@ -670,19 +619,16 @@ "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.3.tgz", - "integrity": "sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", "cpu": [ "x64" ], @@ -691,10 +637,7 @@ "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" @@ -776,6 +719,15 @@ "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/@npmcli/agent": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", @@ -876,10 +828,16 @@ "@prisma/debug": "5.10.2" } }, + "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.5.2", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.2.tgz", - "integrity": "sha512-7X7FFAA4DngXUl95+hYbUF19bp1LGiffjJtu7ygrZrbdCSsdDDBaSjB7Akw0ZbOu6k0xpXyljnJ6/RZUvLfRdg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.3.tgz", + "integrity": "sha512-x7zadcfJGxFka1Q3f8gCts1F0xMwCKbZweM85xECGI0hBTeIZJGGCrHgLggihBoprlQ/hBmDR5LKfIPqnmHM3w==", "engines": { "node": ">=v14.0.0", "npm": ">=7.0.0" @@ -993,12 +951,11 @@ } }, "node_modules/@sapphire/plugin-subcommands": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@sapphire/plugin-subcommands/-/plugin-subcommands-6.0.3.tgz", - "integrity": "sha512-SLDlTjMrMpb3s89ZjrBvVbMWsXfNNciO6SnNQdKLKTUQwktaYxIdj+k3MmEWpN19i8W9ogRvIrLl0Hw20pPUng==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@sapphire/plugin-subcommands/-/plugin-subcommands-7.0.0.tgz", + "integrity": "sha512-oBJ5o99hjq1sdBGcL4ksChyg73pZ1zhGVNBLnRHP4K5iegCA60GE4WRZqskrA94owy0hHNeCjj0etUpOCaihbQ==", "dependencies": { - "@sapphire/utilities": "^3.15.3", - "tslib": "^2.6.2" + "@sapphire/utilities": "^3.17.0" }, "engines": { "node": ">=v18", @@ -1024,9 +981,9 @@ } }, "node_modules/@sapphire/shapeshift": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.7.tgz", - "integrity": "sha512-4It2mxPSr4OGn4HSQWGmhFMsNFGfFVhWeRPCRwbH972Ek2pzfGRZtb0pJ4Ze6oIzcyh2jw7nUDa6qGlWofgd9g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-4.0.0.tgz", + "integrity": "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==", "dependencies": { "fast-deep-equal": "^3.1.3", "lodash": "^4.17.21" @@ -1066,9 +1023,9 @@ } }, "node_modules/@sapphire/utilities": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/@sapphire/utilities/-/utilities-3.15.3.tgz", - "integrity": "sha512-K5dFGOB5XvblXFN+Av+Tch/dVBAifmxtZ9/2mFo8VqzbiaFJIRUuoPAoNsp8pWYaU423yV8bfD8WsCSNd9w1YQ==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@sapphire/utilities/-/utilities-3.17.0.tgz", + "integrity": "sha512-bbqjnKKrCgyT0C3+KOjIBzE6z6/v764EFuV7Uxw9WeIdkqGhwepl6tuNEzgiek/JdtEcODaPeX0K1aCt53yCcA==", "engines": { "node": ">=v14.0.0" } @@ -1117,12 +1074,6 @@ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" }, - "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", @@ -1152,12 +1103,6 @@ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", @@ -1178,41 +1123,39 @@ } }, "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", "dependencies": { "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz", - "integrity": "sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.7.0.tgz", + "integrity": "sha512-RIHOoznhA3CCfSTFiB6kBGLQtB/sox+pJ6jeFu6FxJvqL8qRxq/FfGO/UhsGgQM9oGdXkV4xUgli+dt26biB6A==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.7.1", - "@typescript-eslint/type-utils": "7.7.1", - "@typescript-eslint/utils": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1", - "debug": "^4.3.4", + "@typescript-eslint/scope-manager": "8.7.0", + "@typescript-eslint/type-utils": "8.7.0", + "@typescript-eslint/utils": "8.7.0", + "@typescript-eslint/visitor-keys": "8.7.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1221,26 +1164,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.1.tgz", - "integrity": "sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.7.0.tgz", + "integrity": "sha512-lN0btVpj2unxHlNYLI//BQ7nzbMJYBVQX5+pbNXvGYazdlgYonMn4AhhHifQ+J4fGRYA/m1DjaQjx+fDetqBOQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.7.1", - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/typescript-estree": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1", + "@typescript-eslint/scope-manager": "8.7.0", + "@typescript-eslint/types": "8.7.0", + "@typescript-eslint/typescript-estree": "8.7.0", + "@typescript-eslint/visitor-keys": "8.7.0", "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1249,16 +1192,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz", - "integrity": "sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.7.0.tgz", + "integrity": "sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1" + "@typescript-eslint/types": "8.7.0", + "@typescript-eslint/visitor-keys": "8.7.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1266,26 +1209,23 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz", - "integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.7.0.tgz", + "integrity": "sha512-tl0N0Mj3hMSkEYhLkjREp54OSb/FI6qyCzfiiclvJvOqre6hsZTGSnHtmFLDU8TIM62G7ygEa1bI08lcuRwEnQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.7.1", - "@typescript-eslint/utils": "7.7.1", + "@typescript-eslint/typescript-estree": "8.7.0", + "@typescript-eslint/utils": "8.7.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.56.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -1293,12 +1233,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz", - "integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.7.0.tgz", + "integrity": "sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==", "dev": true, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1306,22 +1246,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz", - "integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.7.0.tgz", + "integrity": "sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1", + "@typescript-eslint/types": "8.7.0", + "@typescript-eslint/visitor-keys": "8.7.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1343,9 +1283,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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" @@ -1358,41 +1298,38 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", - "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.7.0.tgz", + "integrity": "sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.15", - "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.7.1", - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/typescript-estree": "7.7.1", - "semver": "^7.6.0" + "@typescript-eslint/scope-manager": "8.7.0", + "@typescript-eslint/types": "8.7.0", + "@typescript-eslint/typescript-estree": "8.7.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz", - "integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.7.0.tgz", + "integrity": "sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/types": "8.7.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1406,9 +1343,9 @@ "dev": true }, "node_modules/@vladfrangu/async_event_emitter": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.4.tgz", - "integrity": "sha512-ButUPz9E9cXMLgvAW8aLAKKJJsPu1dY1/l/E8xzLFuysowXygs6GBcyunK9rnGC4zTsnIc2mQo71rGw9U+Ykug==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.4.6.tgz", + "integrity": "sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==", "engines": { "node": ">=v14.0.0", "npm": ">=7.0.0" @@ -1523,13 +1460,16 @@ "dev": true }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1541,15 +1481,16 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "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.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "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": { @@ -1559,26 +1500,18 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "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.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "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" @@ -1624,17 +1557,18 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -1645,15 +1579,16 @@ } }, "node_modules/auto-changelog": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.4.0.tgz", - "integrity": "sha512-vh17hko1c0ItsEcw6m7qPRf3m45u+XK5QyCrrBFViElZ8jnKrPC1roSznrd1fIB/0vR/zawdECCRJtTuqIXaJw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.5.0.tgz", + "integrity": "sha512-UTnLjT7I9U2U/xkCUH5buDlp8C7g0SGChfib+iDrJkamcj5kaMqNKHNfbKJw1kthJUq8sUo3i3q2S6FzO/l/wA==", "dev": true, "dependencies": { "commander": "^7.2.0", "handlebars": "^4.7.7", + "import-cwd": "^3.0.0", "node-fetch": "^2.6.1", - "parse-github-url": "^1.0.2", + "parse-github-url": "^1.0.3", "semver": "^7.3.5" }, "bin": { @@ -1664,10 +1599,13 @@ } }, "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==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -1689,9 +1627,9 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -1701,7 +1639,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -1857,13 +1795,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2012,12 +1955,63 @@ "node": ">= 8" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "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": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -2035,16 +2029,19 @@ "dev": true }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "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": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "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": { @@ -2097,56 +2094,45 @@ "node": ">=8" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/discord-api-types": { "version": "0.37.83", "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.83.tgz", "integrity": "sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==" }, "node_modules/discord-js-button-pagination-ts": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/discord-js-button-pagination-ts/-/discord-js-button-pagination-ts-4.2.0.tgz", - "integrity": "sha512-z19Mv6dYQPVXKZZ5h1nRpncU34Gt5e801OOoGGjJF3DrWPMjF5L649Y0YsTEvNZnoQ/oZ9nwAC3rsRocw16YWg==", - "dependencies": { - "discord.js": "^14.14.1 - ^14.15.0" - } + "resolved": "../discord-js-button-pagination-ts", + "link": true }, "node_modules/discord.js": { - "version": "14.15.2", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.15.2.tgz", - "integrity": "sha512-wGD37YCaTUNprtpqMIRuNiswwsvSWXrHykBSm2SAosoTYut0VUDj9yo9t4iLtMKvuhI49zYkvKc2TNdzdvpJhg==", + "version": "14.16.2", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.16.2.tgz", + "integrity": "sha512-VGNi9WE2dZIxYM8/r/iatQQ+3LT8STW4hhczJOwm+DBeHq66vsKDCk8trChNCB01sMO9crslYuEMeZl2d7r3xw==", "dependencies": { - "@discordjs/builders": "^1.8.1", + "@discordjs/builders": "^1.9.0", "@discordjs/collection": "1.5.3", - "@discordjs/formatters": "^0.4.0", - "@discordjs/rest": "^2.3.0", - "@discordjs/util": "^1.1.0", - "@discordjs/ws": "^1.1.0", + "@discordjs/formatters": "^0.5.0", + "@discordjs/rest": "^2.4.0", + "@discordjs/util": "^1.1.1", + "@discordjs/ws": "1.1.1", "@sapphire/snowflake": "3.5.3", - "discord-api-types": "0.37.83", + "discord-api-types": "0.37.97", "fast-deep-equal": "3.1.3", "lodash.snakecase": "4.1.1", - "tslib": "2.6.2", - "undici": "6.13.0" + "tslib": "^2.6.3", + "undici": "6.19.8" }, "engines": { - "node": ">=16.11.0" + "node": ">=18" }, "funding": { "url": "https://github.com/discordjs/discord.js?sponsor" } }, + "node_modules/discord.js/node_modules/discord-api-types": { + "version": "0.37.97", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz", + "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==" + }, "node_modules/discordbotlist-djs": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/discordbotlist-djs/-/discordbotlist-djs-0.0.4.tgz", @@ -2159,14 +2145,6 @@ "undici": "^6.18.2" } }, - "node_modules/discordbotlist-djs/node_modules/undici": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", - "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", - "engines": { - "node": ">=18.17" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -2206,9 +2184,9 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { "node": ">= 0.8" } @@ -2249,50 +2227,57 @@ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" }, "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -2301,15 +2286,46 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "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.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -2359,16 +2375,16 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -2434,17 +2450,18 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", - "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "fast-glob": "^3.3.1", - "get-tsconfig": "^4.5.0", - "is-core-module": "^2.11.0", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", + "dev": true, + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", "is-glob": "^4.0.3" }, "engines": { @@ -2455,13 +2472,22 @@ }, "peerDependencies": { "eslint": "*", - "eslint-plugin-import": "*" + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "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" @@ -2485,26 +2511,27 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", "dev": true, "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@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.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", "tsconfig-paths": "^3.15.0" }, @@ -2646,36 +2673,36 @@ "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -2778,12 +2805,12 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -2944,27 +2971,32 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "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.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -2974,9 +3006,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", - "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -3047,26 +3079,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -3129,20 +3141,20 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -3162,12 +3174,12 @@ } }, "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==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -3177,9 +3189,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "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" }, @@ -3251,6 +3263,18 @@ "node": ">= 4" } }, + "node_modules/import-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", + "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", + "dev": true, + "dependencies": { + "import-from": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -3267,6 +3291,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-from/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3299,12 +3344,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", + "es-errors": "^1.3.0", "hasown": "^2.0.0", "side-channel": "^1.0.4" }, @@ -3333,14 +3378,16 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3379,6 +3426,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-bun-module": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", + "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", + "dev": true, + "dependencies": { + "semver": "^7.6.3" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -3392,12 +3448,30 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3453,9 +3527,9 @@ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" }, "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==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -3519,12 +3593,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3561,12 +3638,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -3720,12 +3797,18 @@ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, - "node_modules/lru-cache": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", - "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "node_modules/lru.min": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.1.tgz", + "integrity": "sha512-FbAj6lXil6t8z4z3j0E5mfRlPzxkySotzUHwRXjlpRh10vc6AI6WN62ehZj82VG7M20rqogJ0GLwar2Xa05a8Q==", "engines": { - "node": ">=16.14" + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" } }, "node_modules/magic-bytes.js": { @@ -3755,14 +3838,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/make-fetch-happen/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -3772,9 +3847,12 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge2": { "version": "1.4.1", @@ -3993,21 +4071,21 @@ } }, "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==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mysql2": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.0.tgz", - "integrity": "sha512-J9phbsXGvTOcRVPR95YedzVSxJecpW5A5+cQ57rhHIFXteTP10HCs+VBjS7DHIKfEaI1zQ5tlVrquCd64A6YvA==", + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.3.tgz", + "integrity": "sha512-Qpu2ADfbKzyLdwC/5d4W7+5Yz7yBzCU05YWt5npWzACST37wJsB23wgOSo00qi043urkiRwXtEvJc9UnuLX/MQ==", "dependencies": { "aws-ssl-profiles": "^1.1.1", "denque": "^2.1.0", "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru-cache": "^8.0.0", + "lru.min": "^1.0.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" @@ -4081,9 +4159,9 @@ } }, "node_modules/node-gyp": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", - "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.2.0.tgz", + "integrity": "sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -4091,9 +4169,9 @@ "graceful-fs": "^4.2.6", "make-fetch-happen": "^13.0.0", "nopt": "^7.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.1.0", "semver": "^7.3.5", - "tar": "^6.1.2", + "tar": "^6.2.1", "which": "^4.0.0" }, "bin": { @@ -4194,9 +4272,12 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4229,14 +4310,15 @@ } }, "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "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.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "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" @@ -4246,26 +4328,28 @@ } }, "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "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.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "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.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -4373,15 +4457,15 @@ } }, "node_modules/parse-github-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.3.tgz", + "integrity": "sha512-tfalY5/4SqGaV/GIGzWyHnFjlpTPTNpENR9Ea2lLldSJ8EWXMsvacWucqY3m3I4YPtas15IxTLQVQ5NSYXPrww==", "dev": true, "bin": { "parse-github-url": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, "node_modules/parseurl": { @@ -4448,18 +4532,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -4473,6 +4548,15 @@ "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==", + "dev": true, + "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", @@ -4498,9 +4582,9 @@ } }, "node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -4539,11 +4623,11 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -4606,14 +4690,15 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -4714,13 +4799,13 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -4751,15 +4836,18 @@ ] }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4770,12 +4858,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "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==", "bin": { "semver": "bin/semver.js" }, @@ -4783,21 +4868,10 @@ "node": ">=10" } }, - "node_modules/semver/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==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -4830,10 +4904,13 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/send/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==" + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } }, "node_modules/seq-queue": { "version": "0.0.5", @@ -4841,42 +4918,45 @@ "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "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.1", - "get-intrinsic": "^1.2.1", + "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.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "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.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4888,42 +4968,41 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/sharp": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.3.tgz", - "integrity": "sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==", + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", "hasInstallScript": true, "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", - "semver": "^7.6.0" + "semver": "^7.6.3" }, "engines": { - "libvips": ">=8.15.2", "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.3", - "@img/sharp-darwin-x64": "0.33.3", - "@img/sharp-libvips-darwin-arm64": "1.0.2", - "@img/sharp-libvips-darwin-x64": "1.0.2", - "@img/sharp-libvips-linux-arm": "1.0.2", - "@img/sharp-libvips-linux-arm64": "1.0.2", - "@img/sharp-libvips-linux-s390x": "1.0.2", - "@img/sharp-libvips-linux-x64": "1.0.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", - "@img/sharp-libvips-linuxmusl-x64": "1.0.2", - "@img/sharp-linux-arm": "0.33.3", - "@img/sharp-linux-arm64": "0.33.3", - "@img/sharp-linux-s390x": "0.33.3", - "@img/sharp-linux-x64": "0.33.3", - "@img/sharp-linuxmusl-arm64": "0.33.3", - "@img/sharp-linuxmusl-x64": "0.33.3", - "@img/sharp-wasm32": "0.33.3", - "@img/sharp-win32-ia32": "0.33.3", - "@img/sharp-win32-x64": "0.33.3" + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" } }, "node_modules/shebang-command": { @@ -4946,13 +5025,17 @@ } }, "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.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4977,15 +5060,6 @@ "is-arrayish": "^0.3.1" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -5131,14 +5205,15 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -5148,28 +5223,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "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.2.0", - "es-abstract": "^1.22.1" + "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" @@ -5365,9 +5443,9 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/type-check": { "version": "0.4.0", @@ -5406,29 +5484,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -5438,16 +5517,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -5457,23 +5537,29 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -5512,11 +5598,11 @@ } }, "node_modules/undici": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.13.0.tgz", - "integrity": "sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", + "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", "engines": { - "node": ">=18.0" + "node": ">=18.17" } }, "node_modules/undici-types": { @@ -5564,9 +5650,9 @@ } }, "node_modules/utf-8-validate": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.3.tgz", - "integrity": "sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.4.tgz", + "integrity": "sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -5638,16 +5724,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5756,9 +5842,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, diff --git a/package.json b/package.json index ea46dee9..867f05ed 100644 --- a/package.json +++ b/package.json @@ -23,34 +23,34 @@ "author": "Cata ", "license": "MIT", "dependencies": { - "@prisma/client": "^5.10.2", + "@prisma/client": "^5.20.0", "@sapphire/decorators": "^6.1.0", "@sapphire/framework": "^5.2.1", "@sapphire/plugin-logger": "^4.0.2", - "@sapphire/plugin-subcommands": "^6.0.3", - "@sapphire/shapeshift": "^3.9.7", + "@sapphire/plugin-subcommands": "^7.0.0", + "@sapphire/shapeshift": "^4.0.0", "bufferutil": "^4.0.8", - "discord-js-button-pagination-ts": "^4.2.0", - "discord.js": "^14.15.2", + "discord-js-button-pagination-ts": "^4.2.1-0", + "discord.js": "^14.16.2", "discordbotlist-djs": "^0.0.4", "dotenv": "^16.4.5", - "express": "^4.19.2", - "mysql2": "^3.11.0", - "node-gyp": "^10.1.0", - "prisma": "^5.10.2", - "sharp": "^0.33.3", + "express": "^4.21.0", + "mysql2": "^3.11.3", + "node-gyp": "^10.2.0", + "prisma": "^5.20.0", + "sharp": "^0.33.5", "source-map-support": "^0.5.21", - "utf-8-validate": "^6.0.3", + "utf-8-validate": "^6.0.4", "zlib-sync": "^0.1.9" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.7.1", - "@typescript-eslint/parser": "^7.7.1", - "auto-changelog": "^2.4.0", - "eslint": "^8.57.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "typescript": "^5.4.5" + "@typescript-eslint/eslint-plugin": "^8.7.0", + "@typescript-eslint/parser": "^8.7.0", + "auto-changelog": "^2.5.0", + "eslint": "^8.57.1", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import": "^2.30.0", + "typescript": "^5.6.2" }, "description": "Discord bot built with Sapphire, Prisma and MySQL2", "repository": { diff --git a/src/lib/Kaiki/KaikiArgumentsTypes.ts b/src/lib/Kaiki/KaikiArgumentsTypes.ts index df1a1414..060e1dcd 100644 --- a/src/lib/Kaiki/KaikiArgumentsTypes.ts +++ b/src/lib/Kaiki/KaikiArgumentsTypes.ts @@ -1,4 +1,4 @@ -import { Args, Argument, Identifiers } from "@sapphire/framework"; +import { Args, Argument } from "@sapphire/framework"; import { Message } from "discord.js"; import Constants from "../../struct/Constants"; diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index 4dbff07c..c17afa36 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -51,6 +51,7 @@ export default class KaikiSapphireClient public owner: User; public package: PackageJSON; public hentaiService: HentaiService; + private webListener: Webserver; constructor() { super({ @@ -149,7 +150,7 @@ export default class KaikiSapphireClient `Bot owner: ${colorette.greenBright(client.owner.username)}` ); - Webserver.WebListener(); + this.webListener = new Webserver(); await Promise.all([ client.filterOptionalCommands(), diff --git a/src/lib/ServerConfig/Config.ts b/src/lib/ServerConfig/Config.ts index 022b1ef9..f972b614 100644 --- a/src/lib/ServerConfig/Config.ts +++ b/src/lib/ServerConfig/Config.ts @@ -16,7 +16,7 @@ import GreetHandler from "../GreetHandler"; import KaikiUtil from "../KaikiUtil"; export default class Config { - static async dadbotRun(message: Message, args: Args) { + static async dadbotRun(message: Message, args: Args) { Config.checkSubcommandUserPermission( message, PermissionsBitField.Flags.Administrator diff --git a/src/lib/WebAPI/Webserver.ts b/src/lib/WebAPI/Webserver.ts index 005da9fb..da0f8bdc 100644 --- a/src/lib/WebAPI/Webserver.ts +++ b/src/lib/WebAPI/Webserver.ts @@ -1,7 +1,9 @@ import process from "process"; -import express from "express"; +import express, { Express } from "express"; import { container } from "@sapphire/pieces"; import * as Colorette from "colorette"; +import { GuildUsers, Guilds } from "@prisma/client"; +import KaikiSapphireClient from "../Kaiki/KaikiSapphireClient"; // A class managing the Bot's webserver. @@ -9,31 +11,36 @@ import * as Colorette from "colorette"; // // It needs to send a POST req, with a specified token in the body as JSON "{ token: secret_token_here }" export class Webserver { + app: Express; + client: KaikiSapphireClient; // Creates an express webserver and server user-data on the specified URL path - public static WebListener() { + + public Webserver(client: KaikiSapphireClient) { if (!process.env.SELF_API_PORT) return; container.logger.info(`WebListener server is listening on port: ${Colorette.greenBright(process.env.SELF_API_PORT)}`); + this.client = client; + this.app = express(); + this.app.use(express.json()); - const app = express(); - app.use(express.json()); + for (const [endPoint, value] of Object.entries(this.EndPoints)) { + this.app.post(endPoint, value); + } - app.post("/API/UserCache/:id", async (req, res) => { - // Check if param is valid - if (Number.isNaN(Number(req.params.id))) return res.sendStatus(400); + this.app.listen(process.env.SELF_API_PORT) + } - const { body } = req; - // Verify token - if (!body.token || body.token !== process.env.SELF_API_TOKEN) { - return res.sendStatus(401); - } + EndPoints = { + "/API/UserCache/:id": async (req: express.Request, res: express.Response) => { + Webserver.checkValidParam(req, res) + Webserver.verifyToken(req, res) const requestedUser = container.client.users.cache.get(req.params.id); // Send 404 not found if (!requestedUser) return res.sendStatus(404); - return res.send({ + const responseObject = { user: requestedUser, data: await container.client.orm.guildUsers.findMany({ where: { @@ -43,17 +50,90 @@ export class Webserver { Guilds: true, } }), - guilds: container.client.guilds.cache - .filter(guild => guild.members.cache.has(requestedUser.id)) - .map(guild => ({ + guilds: [{}], + } + + responseObject.guilds = container.client.guilds.cache + .filter(guild => guild.members.cache.has(requestedUser.id)) + .map(guild => { + const maybeUserRole = String(responseObject.data.find(gs => String(gs.GuildId) === guild.id)?.UserRole) + return { id: guild.id, name: guild.name, userPerms: guild.members.cache.get(requestedUser.id)?.permissions, guildChannels: guild.channels.cache.filter(channel => channel.isTextBased), - })) - }); - }) + userRole: guild.roles.cache.has(maybeUserRole) ? guild.roles.cache.get(maybeUserRole) : null + } + }); + + return res.send(responseObject); + }, + "/API/Guild/:id": async (req: express.Request, res: express.Response) => { + Webserver.checkValidParam(req, res); + const body = Webserver.verifyToken(req, res); + + const { data }: { data: StupidType } = body; + const guildId = String(data.GuildId); - app.listen(process.env.SELF_API_PORT) + for (const key of Object.keys(data)) { + const typedKey: keyof StupidType = key as keyof StupidType; + switch (typedKey) { + case "Prefix": + case "Anniversary": + case "DadBot": + case "ErrorColor": + case "OkColor": + case "WelcomeChannel": + case "ByeChannel": + case "WelcomeMessage": + case "ByeMessage": + case "WelcomeTimeout": + case "ByeTimeout": + case "StickyRoles": + await this.client.guildsDb.set(guildId, typedKey, data[typedKey]); + break; + // TODO + // Make fields for UserRole name, color, icon + case "UserRole": + break; + case "icon": + this.client.guilds.cache.get(String(guildId))?.setIcon(data[typedKey]) + break; + case "ExcludeRole": + // TODO + // Set type of ExcludeRole to string + // Or make it another field + await this.client.guilds.cache.get(guildId) + ?.roles.cache.get(this.client.guildsDb.get(guildId, "ExcludeRole", null)) + ?.setName(data[typedKey]) + break; + case "name": { + this.client.guilds.cache.get(String(guildId))?.setName(data[typedKey]) + break; + } + default: + break; + } + } + } + } + + static checkValidParam(req: express.Request, res: express.Response) { + if (Number.isNaN(Number(req.params.id))) return res.sendStatus(400); + } + + static verifyToken(req: express.Request, res: express.Response) { + const { body } = req; + // Verify token + if (!body.token || body.token !== process.env.SELF_API_TOKEN) { + return res.sendStatus(401); + } + return body; } } + +type StupidType = Omit & GuildUsers & { + ExcludeRole: string; + name: string; + icon: string + } From 7c5325cec60f8e7ec5bf2abb4a31ef8328ab96aa Mon Sep 17 00:00:00 2001 From: Cata Date: Sun, 29 Sep 2024 03:55:00 +0200 Subject: [PATCH 44/44] Fix(Types):Changed all channel.send() to reply Also updated dependencies --- bun.lockb | Bin 223349 -> 222977 bytes package-lock.json | 80 +++++++++++------- package.json | 4 +- src/commands/Administration/ban.ts | 8 +- src/commands/Administration/deleteChannel.ts | 2 +- src/commands/Administration/nsfwtgl.ts | 2 +- src/commands/Administration/softban.ts | 8 +- src/commands/Administration/unban.ts | 4 +- src/commands/Anime/anime.ts | 2 +- src/commands/Anime/manga.ts | 2 +- src/commands/Emotes/addEmote.ts | 2 +- src/commands/Emotes/deleteEmote.ts | 17 ++-- src/commands/Fun/compress.ts | 2 +- src/commands/Fun/deadbeat.ts | 2 +- src/commands/Fun/meow.ts | 2 +- src/commands/Fun/names.ts | 2 +- src/commands/Fun/neofetch.ts | 2 +- src/commands/Fun/simp.ts | 2 +- src/commands/Fun/squish.ts | 2 +- src/commands/Fun/stretch.ts | 2 +- src/commands/Fun/ttt.ts | 57 ++++++------- src/commands/Fun/woof.ts | 2 +- src/commands/Gambling/award.ts | 2 +- src/commands/Gambling/betflip.ts | 6 +- src/commands/Gambling/betroll.ts | 4 +- src/commands/Gambling/cash.ts | 2 +- src/commands/Gambling/currencyTransactions.ts | 2 +- src/commands/Gambling/daily.ts | 6 +- src/commands/Gambling/economy.ts | 2 +- src/commands/Gambling/flip.ts | 2 +- src/commands/Gambling/give.ts | 6 +- src/commands/Gambling/globalLeaderboard.ts | 2 +- src/commands/Gambling/leaderboard.ts | 2 +- src/commands/Gambling/slots.ts | 6 +- src/commands/Gambling/take.ts | 4 +- src/commands/Gambling/vote.ts | 2 +- src/commands/Moderation/kick.ts | 6 +- src/commands/Moderation/saveChat.ts | 19 ++--- src/commands/NSFW/danbooru.ts | 4 +- src/commands/NSFW/e621.ts | 2 +- src/commands/NSFW/hentai.ts | 2 +- src/commands/NSFW/hentaibomb.ts | 2 +- src/commands/NSFW/hentainuke.ts | 2 +- src/commands/Owner only/bettest.ts | 2 +- src/commands/Owner only/botConfig.ts | 4 +- src/commands/Owner only/dailyReset.ts | 2 +- src/commands/Owner only/deregister.ts | 2 +- src/commands/Owner only/die.ts | 2 +- src/commands/Owner only/eval.ts | 4 +- src/commands/Owner only/exec.ts | 4 +- src/commands/Owner only/gencmdlist.ts | 4 +- src/commands/Owner only/reload.ts | 2 +- src/commands/Owner only/setActivity.ts | 2 +- src/commands/Owner only/setAv.ts | 2 +- src/commands/Owner only/setBanner.ts | 2 +- src/commands/Owner only/setDaily.ts | 6 +- src/commands/Owner only/setName.ts | 2 +- src/commands/Owner only/sqlexec.ts | 2 +- src/commands/Owner only/sqlselect.ts | 2 +- src/commands/Roles/roleColor.ts | 10 +-- src/commands/Roles/roleCreate.ts | 2 +- src/commands/Roles/roleDelete.ts | 6 +- src/commands/Roles/roleHoist.ts | 4 +- src/commands/Roles/roleInfo.ts | 2 +- src/commands/Roles/roleInrole.ts | 2 +- src/commands/Roles/roleList.ts | 2 +- src/commands/Roles/roleListUserRoles.ts | 4 +- src/commands/Roles/roleMentionable.ts | 4 +- src/commands/Roles/roleMyRole.ts | 30 +++---- src/commands/Roles/roleRemove.ts | 6 +- src/commands/Roles/roleRename.ts | 4 +- src/commands/Roles/roleRestore.ts | 6 +- src/commands/Roles/roleSetRole.ts | 6 +- src/commands/Roles/roleSetUserRole.ts | 8 +- src/commands/Server settings/addEmoteReact.ts | 2 +- src/commands/Server settings/config.ts | 2 +- .../Server settings/excludeChannel.ts | 4 +- .../Server settings/excludeStickyRoles.ts | 4 +- src/commands/Server settings/goodbye.ts | 2 +- src/commands/Server settings/goodbyedelete.ts | 2 +- .../Server settings/goodbyemessage.ts | 2 +- .../Server settings/listEmoteReacts.ts | 4 +- .../Server settings/removeEmoteReact.ts | 4 +- src/commands/Server settings/stickyRoles.ts | 2 +- .../Server settings/toggleCategory.ts | 4 +- src/commands/Server settings/welcome.ts | 2 +- src/commands/Server settings/welcomedelete.ts | 2 +- .../Server settings/welcomemessage.ts | 2 +- src/commands/Server settings/welcometest.ts | 2 +- src/commands/Utility/avatar.ts | 2 +- src/commands/Utility/cmdlist.ts | 4 +- src/commands/Utility/cmdstats.ts | 2 +- src/commands/Utility/color.ts | 4 +- src/commands/Utility/forgetMe.ts | 4 +- src/commands/Utility/help.ts | 6 +- src/commands/Utility/info.ts | 7 +- src/commands/Utility/invite.ts | 2 +- src/commands/Utility/mcping.ts | 6 +- src/commands/Utility/ping.ts | 2 +- src/commands/Utility/say.ts | 2 +- src/commands/Utility/serverinfo.ts | 2 +- src/commands/Utility/shardstats.ts | 2 +- src/commands/Utility/todo.ts | 4 +- src/commands/Utility/urban.ts | 2 +- src/lib/APIs/KawaiiAPI.ts | 2 +- src/lib/APIs/NekosAPI.ts | 2 +- src/lib/APIs/PurrBot.ts | 2 +- src/lib/APIs/WaifuPics.ts | 2 +- src/lib/APIs/nekos.life.ts | 2 +- src/lib/APIs/waifu.im.ts | 2 +- src/lib/Cache/KaikiCache.ts | 1 - src/lib/DadBot.ts | 2 +- src/lib/Errors/ArgumentErrorRun.ts | 6 +- src/lib/Games/TTT.ts | 35 ++++---- src/lib/Kaiki/KaikiSapphireClient.ts | 2 +- src/lib/ServerConfig/Config.ts | 10 +-- src/lib/WebAPI/Webserver.ts | 2 +- src/listeners/argumentError.ts | 3 +- src/listeners/mentionPrefixOnly.ts | 2 +- src/struct/Constants.ts | 2 +- 120 files changed, 305 insertions(+), 294 deletions(-) diff --git a/bun.lockb b/bun.lockb index 9b2bd93a044a9137a04f4e3eb729c79f1bf20938..d450203ce3001d4218666eea40cc9cd545dba246 100755 GIT binary patch delta 529 zcmex*fw%D-?*u)~W#@e)DymqDx1_C2G34o97FZFivhS!x%>m&(Oy5fDvkTLh89+dH zVz@lhPqmE|4uX>p2r6(&EMQ=eWngGv*!)t^UU0L4a*OZel4z67FA5xNCTmzXaE8ri zU0Vptc0#HDE`b&_&3!uPu--(R=+S40mGp?BKFpZIA zd(2+O%q%VkbtaJe8MYWq(_pe;WY}(@!BoP@^}qlkoMAmZ%Z5p9`yE537A~$C))3JP zzF<*Ct?d(SnC1%t?KSjcl4ew&?(4@S&T7iYz@RZb(~n8sO9!MLh_!)O1&B3)_#IGM z2}pkh(rQ2&q(&KtRe`tzC2FSI1F^SZ3PxS;v@Og--WQV^*3jAJ5FTeT@urtLO9&Da^v#8`7A+G6Db(9++_e delta 640 zcmZoX$NTjH?*u)~@9vw=X{n#&znpe_#!@GzEsDIIpD%nX&{i&M`NKKc&fsY}GXn_d zO$?W3`li0I!agU#lLg7$(O^Hm#kv|Ce?HY+H%_)b=d zG1+{hz`=$yY(4{n4Nw*9r%4 zEXc?(S@)vp=3o1*fXvOh7aOu1O!FB}wL5uS*pT`{vFGlKA5(u?1b(ryu-dphSzwt( z+q24>Rg>96Ex)_-U$tG@t#`2xeoCI+{??lDL(ufK){NfMHToHO zr{C>k^k&jznw<41Z2Aq5KyN>zH>39SoBfR8(>o>r1#Bk(1$4J}PGF4IW@P~f!b5BQ z=>jttJEk9)!pO3H!XC!VtjP@*4Y@2dn1J#O3~LOhGpjS%YzIndS>JYE8HFWs;T!8KMTnsz9s)#A%EWwmOilIla)A zNnTJF$YcOw9UulN(VD){mq}O+B&-a?Ae|jRU0P87J0SaqACLnCDMzQ@@@2Zh7H6tw zrf0N$iyxCj38T&Qvxk_B8AGNs9%ia!ESz3_n8_LpoIX2oe*%=16.13" @@ -789,43 +789,43 @@ } }, "node_modules/@prisma/debug": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.10.2.tgz", - "integrity": "sha512-bkBOmH9dpEBbMKFJj8V+Zp8IZHIBjy3fSyhLhxj4FmKGb/UBSt9doyfA6k1UeUREsMJft7xgPYBbHSOYBr8XCA==" + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.20.0.tgz", + "integrity": "sha512-oCx79MJ4HSujokA8S1g0xgZUGybD4SyIOydoHMngFYiwEwYDQ5tBQkK5XoEHuwOYDKUOKRn/J0MEymckc4IgsQ==" }, "node_modules/@prisma/engines": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.10.2.tgz", - "integrity": "sha512-HkSJvix6PW8YqEEt3zHfCYYJY69CXsNdhU+wna+4Y7EZ+AwzeupMnUThmvaDA7uqswiHkgm5/SZ6/4CStjaGmw==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.20.0.tgz", + "integrity": "sha512-DtqkP+hcZvPEbj8t8dK5df2b7d3B8GNauKqaddRRqQBBlgkbdhJkxhoJTrOowlS3vaRt2iMCkU0+CSNn0KhqAQ==", "hasInstallScript": true, "dependencies": { - "@prisma/debug": "5.10.2", - "@prisma/engines-version": "5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9", - "@prisma/fetch-engine": "5.10.2", - "@prisma/get-platform": "5.10.2" + "@prisma/debug": "5.20.0", + "@prisma/engines-version": "5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284", + "@prisma/fetch-engine": "5.20.0", + "@prisma/get-platform": "5.20.0" } }, "node_modules/@prisma/engines-version": { - "version": "5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9.tgz", - "integrity": "sha512-uCy/++3Jx/O3ufM+qv2H1L4tOemTNqcP/gyEVOlZqTpBvYJUe0tWtW0y3o2Ueq04mll4aM5X3f6ugQftOSLdFQ==" + "version": "5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284.tgz", + "integrity": "sha512-Lg8AS5lpi0auZe2Mn4gjuCg081UZf88k3cn0RCwHgR+6cyHHpttPZBElJTHf83ZGsRNAmVCZCfUGA57WB4u4JA==" }, "node_modules/@prisma/fetch-engine": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.10.2.tgz", - "integrity": "sha512-dSmXcqSt6DpTmMaLQ9K8ZKzVAMH3qwGCmYEZr/uVnzVhxRJ1EbT/w2MMwIdBNq1zT69Rvh0h75WMIi0mrIw7Hg==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.20.0.tgz", + "integrity": "sha512-JVcaPXC940wOGpCOwuqQRTz6I9SaBK0c1BAyC1pcz9xBi+dzFgUu3G/p9GV1FhFs9OKpfSpIhQfUJE9y00zhqw==", "dependencies": { - "@prisma/debug": "5.10.2", - "@prisma/engines-version": "5.10.0-34.5a9203d0590c951969e85a7d07215503f4672eb9", - "@prisma/get-platform": "5.10.2" + "@prisma/debug": "5.20.0", + "@prisma/engines-version": "5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284", + "@prisma/get-platform": "5.20.0" } }, "node_modules/@prisma/get-platform": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.10.2.tgz", - "integrity": "sha512-nqXP6vHiY2PIsebBAuDeWiUYg8h8mfjBckHh6Jezuwej0QJNnjDiOq30uesmg+JXxGk99nqyG3B7wpcOODzXvg==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.20.0.tgz", + "integrity": "sha512-8/+CehTZZNzJlvuryRgc77hZCWrUDYd/PmlZ7p2yNXtmf2Una4BWnTbak3us6WVdqoz5wmptk6IhsXdG2v5fmA==", "dependencies": { - "@prisma/debug": "5.10.2" + "@prisma/debug": "5.20.0" } }, "node_modules/@rtsao/scc": { @@ -2927,6 +2927,19 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -4567,18 +4580,21 @@ } }, "node_modules/prisma": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.10.2.tgz", - "integrity": "sha512-hqb/JMz9/kymRE25pMWCxkdyhbnIWrq+h7S6WysJpdnCvhstbJSNP/S6mScEcqiB8Qv2F+0R3yG+osRaWqZacQ==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.20.0.tgz", + "integrity": "sha512-6obb3ucKgAnsGS9x9gLOe8qa51XxvJ3vLQtmyf52CTey1Qcez3A6W6ROH5HIz5Q5bW+0VpmZb8WBohieMFGpig==", "hasInstallScript": true, "dependencies": { - "@prisma/engines": "5.10.2" + "@prisma/engines": "5.20.0" }, "bin": { "prisma": "build/index.js" }, "engines": { "node": ">=16.13" + }, + "optionalDependencies": { + "fsevents": "2.3.3" } }, "node_modules/proc-log": { diff --git a/package.json b/package.json index 867f05ed..011843ad 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@sapphire/plugin-subcommands": "^7.0.0", "@sapphire/shapeshift": "^4.0.0", "bufferutil": "^4.0.8", - "discord-js-button-pagination-ts": "^4.2.1-0", + "discord-js-button-pagination-ts": "^4.2.1", "discord.js": "^14.16.2", "discordbotlist-djs": "^0.0.4", "dotenv": "^16.4.5", @@ -50,7 +50,7 @@ "eslint": "^8.57.1", "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import": "^2.30.0", - "typescript": "^5.6.2" + "typescript": "~5.4.5" }, "description": "Discord bot built with Sapphire, Prisma and MySQL2", "repository": { diff --git a/src/commands/Administration/ban.ts b/src/commands/Administration/ban.ts index c65ac46a..b8ba41bd 100644 --- a/src/commands/Administration/ban.ts +++ b/src/commands/Administration/ban.ts @@ -48,7 +48,7 @@ export default class BanCommand extends KaikiCommand { if (!guildMember) { await message.guild?.members.ban(user, { reason: reason }); - return message.channel.send({ embeds: [successBan] }); + return message.reply({ embeds: [successBan] }); } // Check if member is ban-able @@ -57,7 +57,7 @@ export default class BanCommand extends KaikiCommand { (message.member as GuildMember).roles.highest.position <= guildMember.roles.highest.position ) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: `${message.author}, You can't use this command on users with a role higher or equal to yours in the role hierarchy.`, @@ -72,7 +72,7 @@ export default class BanCommand extends KaikiCommand { guildClientMember.roles.highest.position <= guildMember.roles.highest.position ) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: @@ -99,6 +99,6 @@ export default class BanCommand extends KaikiCommand { }) .catch((err) => this.client.logger.error(err)); - return message.channel.send({ embeds: [successBan] }); + return message.reply({ embeds: [successBan] }); } } diff --git a/src/commands/Administration/deleteChannel.ts b/src/commands/Administration/deleteChannel.ts index c8ca1f6c..0e3c9168 100644 --- a/src/commands/Administration/deleteChannel.ts +++ b/src/commands/Administration/deleteChannel.ts @@ -32,7 +32,7 @@ export default class DeleteChannelCommand extends KaikiCommand { // Don't send message if current channel was deleted if (channels.includes(m.channel)) return; - return m.channel.send({ + return m.reply({ embeds: [ new EmbedBuilder() .setTitle("Channel(s) deleted") diff --git a/src/commands/Administration/nsfwtgl.ts b/src/commands/Administration/nsfwtgl.ts index aa0df979..9c656d4a 100644 --- a/src/commands/Administration/nsfwtgl.ts +++ b/src/commands/Administration/nsfwtgl.ts @@ -23,7 +23,7 @@ export default class ChannelNsfwCommand extends KaikiCommand { `${message.author.username} toggled NSFW.` ); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: result, diff --git a/src/commands/Administration/softban.ts b/src/commands/Administration/softban.ts index 0066e05b..881548e2 100644 --- a/src/commands/Administration/softban.ts +++ b/src/commands/Administration/softban.ts @@ -50,7 +50,7 @@ export default class BanCommand extends KaikiCommand { if (!guildMember) { await message.guild?.members.ban(user, { reason: reason }); - return message.channel.send({ embeds: [successBanEmbed] }); + return message.reply({ embeds: [successBanEmbed] }); } // Check if member is ban-able @@ -59,7 +59,7 @@ export default class BanCommand extends KaikiCommand { (message.member as GuildMember).roles.highest.position <= guildMember.roles.highest.position ) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: `${message.author}, You can't use this command on users with a role higher or equal to yours in the role hierarchy.`, @@ -74,7 +74,7 @@ export default class BanCommand extends KaikiCommand { guildClientMember.roles.highest.position <= guildMember.roles.highest.position ) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: @@ -110,6 +110,6 @@ export default class BanCommand extends KaikiCommand { await message.guild.members.unban(user.id); } - return message.channel.send({ embeds: [successBanEmbed] }); + return message.reply({ embeds: [successBanEmbed] }); } } diff --git a/src/commands/Administration/unban.ts b/src/commands/Administration/unban.ts index 7cf930c5..04eace98 100644 --- a/src/commands/Administration/unban.ts +++ b/src/commands/Administration/unban.ts @@ -23,7 +23,7 @@ export default class UnbanCommand extends KaikiCommand { if (bans?.find((u) => u.user.id === user.id)) { await message.guild?.members.unban(user); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: `Unbanned ${user.username}.`, @@ -31,7 +31,7 @@ export default class UnbanCommand extends KaikiCommand { ], }); } else { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: `\`${user.username}\` is not banned.`, diff --git a/src/commands/Anime/anime.ts b/src/commands/Anime/anime.ts index 7524d765..5fbbfee2 100644 --- a/src/commands/Anime/anime.ts +++ b/src/commands/Anime/anime.ts @@ -56,7 +56,7 @@ export default class AnimeCommand extends KaikiCommand { const started = Common.formatDate(startDate); const airedText = Object.values(endDate).some(Boolean) ? `${started} to ${Common.formatDate(endDate)}` : started; - return message.channel.send({ + return message.reply({ embeds: [ Common.createEmbed( coverImage, diff --git a/src/commands/Anime/manga.ts b/src/commands/Anime/manga.ts index 126ccdcd..0300927a 100644 --- a/src/commands/Anime/manga.ts +++ b/src/commands/Anime/manga.ts @@ -57,7 +57,7 @@ export default class MangaCommand extends KaikiCommand { const started = Common.formatDate(startDate); const airedText = Object.values(endDate).some(Boolean) ? started : Common.formatDate(endDate); - return message.channel.send({ + return message.reply({ embeds: [ Common.createEmbed( coverImage, diff --git a/src/commands/Emotes/addEmote.ts b/src/commands/Emotes/addEmote.ts index 80a643ba..ecff29ac 100644 --- a/src/commands/Emotes/addEmote.ts +++ b/src/commands/Emotes/addEmote.ts @@ -66,7 +66,7 @@ export default class AddEmoteCommand extends KaikiCommand { static sendMessage(result: GuildEmoji | undefined, message: Message) { if (result) { - return message.channel.send(`Successfully uploaded **${result.name}** ${result}.`) + return message.reply(`Successfully uploaded **${result.name}** ${result}.`) } throw new UserError({ identifier: "UnableUploadGuildEmoji", diff --git a/src/commands/Emotes/deleteEmote.ts b/src/commands/Emotes/deleteEmote.ts index 5b72640a..68c720e6 100644 --- a/src/commands/Emotes/deleteEmote.ts +++ b/src/commands/Emotes/deleteEmote.ts @@ -31,17 +31,18 @@ export default class DeleteEmoteCommand extends KaikiCommand { const emoji = message.guild?.emojis.cache.get(emote.id); if (emoji) { - i > 0 - ? (await timer( + if (i > 0) { + await timer( Constants.MAGIC_NUMBERS.CMDS.EMOTES.DELETE_EMOTE - .DELETE_DELAY - )) && i++ - : i++; + .DELETE_DELAY); + } + + i++; const deleted = await emoji.delete(); if (!deleted) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ title: "Error occurred", @@ -52,7 +53,7 @@ export default class DeleteEmoteCommand extends KaikiCommand { }); } } else { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ title: "Error occurred", @@ -63,7 +64,7 @@ export default class DeleteEmoteCommand extends KaikiCommand { } } - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle("Success!") diff --git a/src/commands/Fun/compress.ts b/src/commands/Fun/compress.ts index 765be5c7..59e0c309 100644 --- a/src/commands/Fun/compress.ts +++ b/src/commands/Fun/compress.ts @@ -51,6 +51,6 @@ export default class CompressCommand extends KaikiCommand { image: { url: "attachment://compressed.jpg" }, }).withOkColor(message); - return message.channel.send({ files: [attachment], embeds: [embed] }); + return message.reply({ files: [attachment], embeds: [embed] }); } } diff --git a/src/commands/Fun/deadbeat.ts b/src/commands/Fun/deadbeat.ts index 744264f5..a15bf3aa 100644 --- a/src/commands/Fun/deadbeat.ts +++ b/src/commands/Fun/deadbeat.ts @@ -50,7 +50,7 @@ export default class DeadbeatCommand extends KaikiCommand { const attachment = new AttachmentBuilder(image, { name: "deadBeats.jpg", }); - await message.channel.send({ + await message.reply({ content: cleanContent(`Deadbeat 👉 ${member}!`, message.channel), files: [attachment], }); diff --git a/src/commands/Fun/meow.ts b/src/commands/Fun/meow.ts index 58f73eed..b23d52e1 100644 --- a/src/commands/Fun/meow.ts +++ b/src/commands/Fun/meow.ts @@ -11,7 +11,7 @@ import KaikiUtil from "../../lib/KaikiUtil"; }) export default class MeowCommand extends KaikiCommand { public async messageRun(message: Message): Promise { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setImage( diff --git a/src/commands/Fun/names.ts b/src/commands/Fun/names.ts index 1aea6c4e..8adeab7c 100644 --- a/src/commands/Fun/names.ts +++ b/src/commands/Fun/names.ts @@ -59,7 +59,7 @@ export default class NamesCommand extends KaikiCommand { }); } - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( diff --git a/src/commands/Fun/neofetch.ts b/src/commands/Fun/neofetch.ts index 44f0eb6b..8bbe1f3c 100644 --- a/src/commands/Fun/neofetch.ts +++ b/src/commands/Fun/neofetch.ts @@ -91,7 +91,7 @@ export default class NeofetchCommand extends KaikiCommand { if (error || stderr) { return this.container.logger.error(error); } - return message.channel.send( + return message.reply( await KaikiUtil.codeblock( "\u00AD" + stdout.replace( diff --git a/src/commands/Fun/simp.ts b/src/commands/Fun/simp.ts index 2c5b7bd2..0ac09471 100644 --- a/src/commands/Fun/simp.ts +++ b/src/commands/Fun/simp.ts @@ -79,7 +79,7 @@ export default class SimpCommand extends KaikiCommand { ]); const attachment = new AttachmentBuilder(picture, { name: "simp.jpg" }); - await message.channel.send({ + await message.reply({ content: `Haha, you're a simp!! ${member}!`, files: [attachment], allowedMentions: { diff --git a/src/commands/Fun/squish.ts b/src/commands/Fun/squish.ts index 3488d64b..ce64e82d 100644 --- a/src/commands/Fun/squish.ts +++ b/src/commands/Fun/squish.ts @@ -48,6 +48,6 @@ export default class SquishCommand extends KaikiCommand { image: { url: "attachment://Squished.jpg" }, }).withOkColor(message); - return message.channel.send({ files: [attachment], embeds: [embed] }); + return message.reply({ files: [attachment], embeds: [embed] }); } } diff --git a/src/commands/Fun/stretch.ts b/src/commands/Fun/stretch.ts index af3ff6cd..f8ce0678 100644 --- a/src/commands/Fun/stretch.ts +++ b/src/commands/Fun/stretch.ts @@ -49,6 +49,6 @@ export default class SquishCommand extends KaikiCommand { image: { url: "attachment://Stretched.jpg" }, }).withOkColor(message); - return message.channel.send({ files: [attachment], embeds: [embed] }); + return message.reply({ files: [attachment], embeds: [embed] }); } } diff --git a/src/commands/Fun/ttt.ts b/src/commands/Fun/ttt.ts index 0798fec1..8070b44b 100644 --- a/src/commands/Fun/ttt.ts +++ b/src/commands/Fun/ttt.ts @@ -5,7 +5,6 @@ import { ButtonBuilder, ComponentType, EmbedBuilder, - GuildMember, Message, } from "discord.js"; @@ -23,13 +22,13 @@ import KaikiEmbeds from "../../lib/Kaiki/KaikiEmbeds"; preconditions: ["GuildOnly"], }) export default class TicTacToeCommand extends KaikiCommand { - public async messageRun(message: Message, args: Args) { + public async messageRun(message: Message, args: Args) { const playerTwo = await args.rest("member"); if (!message.member) return; if (playerTwo.id === message.member.id || playerTwo.user.bot) { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.errorMessage( message, @@ -39,7 +38,7 @@ export default class TicTacToeCommand extends KaikiCommand { }); } - const acceptMessage = await message.channel.send({ + const acceptMessage = await message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -65,7 +64,7 @@ export default class TicTacToeCommand extends KaikiCommand { ], }); - acceptMessage + const interaction = await acceptMessage .awaitMessageComponent({ filter: (m) => { m.deferUpdate(); @@ -73,31 +72,7 @@ export default class TicTacToeCommand extends KaikiCommand { }, componentType: ComponentType.Button, time: 20000, - }) - .then(async (interaction) => { - if (interaction.customId === "1") { - new TicTacToe( - message.member as GuildMember, - playerTwo, - message - ); - await acceptMessage.delete(); - } else { - await Promise.all([ - message.reply({ - embeds: [ - new EmbedBuilder() - .setDescription( - `${playerTwo.user.username} has declined your Tic-Tac-Toe challenge` - ) - .withErrorColor(message), - ], - }), - acceptMessage.delete(), - ]); - } - }) - .catch(() => { + }).catch(() => { const emb = acceptMessage.embeds[0]; acceptMessage.edit({ embeds: [ @@ -109,5 +84,27 @@ export default class TicTacToeCommand extends KaikiCommand { components: [], }); }); + + if (interaction && interaction.customId === "1") { + + new TicTacToe(message.member, + playerTwo, + message + ); + await acceptMessage.delete(); + } else { + await Promise.all([ + message.reply({ + embeds: [ + new EmbedBuilder() + .setDescription( + `${playerTwo.user.username} has declined your Tic-Tac-Toe challenge` + ) + .withErrorColor(message), + ], + }), + acceptMessage.delete(), + ]); + } } } diff --git a/src/commands/Fun/woof.ts b/src/commands/Fun/woof.ts index 68bf8d0e..7f49185a 100644 --- a/src/commands/Fun/woof.ts +++ b/src/commands/Fun/woof.ts @@ -12,7 +12,7 @@ import KaikiUtil from "../../lib/KaikiUtil"; }) export default class WoofCommand extends KaikiCommand { public async messageRun(message: Message): Promise { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setImage( diff --git a/src/commands/Gambling/award.ts b/src/commands/Gambling/award.ts index ae43a275..93052410 100644 --- a/src/commands/Gambling/award.ts +++ b/src/commands/Gambling/award.ts @@ -26,7 +26,7 @@ export default class Award extends KaikiCommand { amount, "Awarded by bot owner" ); - await msg.channel.send({ + await msg.reply({ embeds: [ new EmbedBuilder() .setDescription( diff --git a/src/commands/Gambling/betflip.ts b/src/commands/Gambling/betflip.ts index 0528ec58..116008d6 100644 --- a/src/commands/Gambling/betflip.ts +++ b/src/commands/Gambling/betflip.ts @@ -48,7 +48,7 @@ export default class BetflipCommand extends KaikiCommand { ); if (!success) { - return await message.channel.send({ + return await message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -72,7 +72,7 @@ export default class BetflipCommand extends KaikiCommand { "Betflip won x1.95" ); - return message.channel.send({ + return message.reply({ embeds: [ emb .setDescription( @@ -82,7 +82,7 @@ export default class BetflipCommand extends KaikiCommand { ], }); } else { - return message.channel.send({ + return message.reply({ embeds: [ emb .setDescription("You lost, better luck next time") diff --git a/src/commands/Gambling/betroll.ts b/src/commands/Gambling/betroll.ts index ed2c6762..e5971afa 100644 --- a/src/commands/Gambling/betroll.ts +++ b/src/commands/Gambling/betroll.ts @@ -53,7 +53,7 @@ export default class BetRollCommand extends KaikiCommand { ); if (!success) { - return await message.channel.send({ + return await message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -113,7 +113,7 @@ export default class BetRollCommand extends KaikiCommand { break; } - return message.channel.send({ embeds: [msg] }); + return message.reply({ embeds: [msg] }); } } diff --git a/src/commands/Gambling/cash.ts b/src/commands/Gambling/cash.ts index dbaf5cc0..781fc08c 100644 --- a/src/commands/Gambling/cash.ts +++ b/src/commands/Gambling/cash.ts @@ -19,7 +19,7 @@ export default class Cash extends KaikiCommand { .catch(() => msg.author); const moneh = await this.client.money.get(user.id); - await msg.channel.send({ + await msg.reply({ embeds: [ new EmbedBuilder() .setDescription( diff --git a/src/commands/Gambling/currencyTransactions.ts b/src/commands/Gambling/currencyTransactions.ts index 840e8b4d..3094b66b 100644 --- a/src/commands/Gambling/currencyTransactions.ts +++ b/src/commands/Gambling/currencyTransactions.ts @@ -80,7 +80,7 @@ export default class CurrencyTransactionsCommand extends KaikiCommand { ).sort((a, b) => b.DateAdded.getTime() - a.DateAdded.getTime()); if (!db || !db.length) { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.embedFail( message, diff --git a/src/commands/Gambling/daily.ts b/src/commands/Gambling/daily.ts index d147742b..e25a8773 100644 --- a/src/commands/Gambling/daily.ts +++ b/src/commands/Gambling/daily.ts @@ -16,7 +16,7 @@ export default class ClaimDailyCommand extends KaikiCommand { const enabled = this.client.botSettings.get("1", "DailyEnabled", false); if (!enabled) { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.errorMessage( message, @@ -58,7 +58,7 @@ export default class ClaimDailyCommand extends KaikiCommand { "Claimed daily" ); - return message.channel.send({ + return message.reply({ components: actionRow, embeds: [ new EmbedBuilder() @@ -69,7 +69,7 @@ export default class ClaimDailyCommand extends KaikiCommand { ], }).then(msg => gambling.handleReminder(msg)); } else { - return message.channel.send({ + return message.reply({ components: actionRow, embeds: [ new EmbedBuilder() diff --git a/src/commands/Gambling/economy.ts b/src/commands/Gambling/economy.ts index 117adfab..5918b197 100644 --- a/src/commands/Gambling/economy.ts +++ b/src/commands/Gambling/economy.ts @@ -42,6 +42,6 @@ export default class EconomyCommand extends KaikiCommand { .withOkColor(message), ]; - return message.channel.send({ embeds }); + return message.reply({ embeds }); } } diff --git a/src/commands/Gambling/flip.ts b/src/commands/Gambling/flip.ts index 1f04986c..c401031b 100644 --- a/src/commands/Gambling/flip.ts +++ b/src/commands/Gambling/flip.ts @@ -55,7 +55,7 @@ export default class FlipCommand extends KaikiCommand { const attachment = new AttachmentBuilder(image, { name: "flips.jpg" }); - return message.channel.send({ + return message.reply({ files: [attachment], embeds: [ new EmbedBuilder() diff --git a/src/commands/Gambling/give.ts b/src/commands/Gambling/give.ts index 74d2f6d8..4ef53a04 100644 --- a/src/commands/Gambling/give.ts +++ b/src/commands/Gambling/give.ts @@ -21,7 +21,7 @@ export default class Give extends KaikiCommand { ); if (user.id === msg.author.id) { - await msg.channel.send( + await msg.reply( `You can't give yourself ${this.client.money.currencySymbol}` ); return; @@ -34,7 +34,7 @@ export default class Give extends KaikiCommand { ); if (!success) { - await msg.channel.send({ + await msg.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -51,7 +51,7 @@ export default class Give extends KaikiCommand { amount, `Gift from ${msg.author.username} [${msg.author.id}]` ); - await msg.channel.send({ + await msg.reply({ embeds: [ new EmbedBuilder() .setDescription( diff --git a/src/commands/Gambling/globalLeaderboard.ts b/src/commands/Gambling/globalLeaderboard.ts index 98f3cce0..dc9e6e8c 100644 --- a/src/commands/Gambling/globalLeaderboard.ts +++ b/src/commands/Gambling/globalLeaderboard.ts @@ -11,7 +11,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; description: "Shows global currency leaderboard for the current server.", }) export default class GlobalLeaderboard extends KaikiCommand { - public async messageRun(message: Message): Promise { + public async messageRun(message: Message): Promise { const { currencySymbol } = this.client.money; const allEntries = (await this.client.orm.discordUsers.findMany({})) diff --git a/src/commands/Gambling/leaderboard.ts b/src/commands/Gambling/leaderboard.ts index 920414cb..0b6b6520 100644 --- a/src/commands/Gambling/leaderboard.ts +++ b/src/commands/Gambling/leaderboard.ts @@ -12,7 +12,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; preconditions: ["GuildOnly"], }) export default class LeaderboardCommand extends KaikiCommand { - public async messageRun(message: Message): Promise { + public async messageRun(message: Message): Promise { const { currencySymbol } = this.client.money, guildOnlyEntries = (await this.client.orm.discordUsers.findMany({})) .filter((e) => diff --git a/src/commands/Gambling/slots.ts b/src/commands/Gambling/slots.ts index 4e2a7e85..47b560ad 100644 --- a/src/commands/Gambling/slots.ts +++ b/src/commands/Gambling/slots.ts @@ -47,7 +47,7 @@ export default class SlotsCommand extends KaikiCommand { const amount = await args.rest("kaikiMoney"); if (amount < 2) { - await message.channel.send({ + await message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -66,7 +66,7 @@ export default class SlotsCommand extends KaikiCommand { ); if (!success) { - await message.channel.send({ + await message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -102,7 +102,7 @@ export default class SlotsCommand extends KaikiCommand { break; } - await message.channel.send((await Gambling.playSlots(this.client.money.currencySymbol)).string) + await message.reply((await Gambling.playSlots(this.client.money.currencySymbol)).string) .then(async (m) => { setTimeout(async () => m.edit((await Gambling.playSlots(this.client.money.currencySymbol)).string), Constants.MAGIC_NUMBERS.CMDS.GAMBLING.SLOTS.EDIT_AFTER_1_SEC diff --git a/src/commands/Gambling/take.ts b/src/commands/Gambling/take.ts index a4869d64..1e2b72bb 100644 --- a/src/commands/Gambling/take.ts +++ b/src/commands/Gambling/take.ts @@ -17,7 +17,7 @@ export default class Take extends KaikiCommand { const success = await this.client.money.tryTake(user.id, amount, "-"); if (!success) { - await msg.channel.send({ + await msg.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -29,7 +29,7 @@ export default class Take extends KaikiCommand { return; } - await msg.channel.send({ + await msg.reply({ embeds: [ new EmbedBuilder() .setDescription( diff --git a/src/commands/Gambling/vote.ts b/src/commands/Gambling/vote.ts index 6710d184..b0ace3dd 100644 --- a/src/commands/Gambling/vote.ts +++ b/src/commands/Gambling/vote.ts @@ -14,7 +14,7 @@ export default class Cash extends KaikiCommand { if (!process.env.DBL_PAGE_URL) return; const amount = this.client.botSettings.get("1", "DailyAmount", 250); - return msg.channel.send({ + return msg.reply({ embeds: [ new EmbedBuilder() .setTitle("Vote here") diff --git a/src/commands/Moderation/kick.ts b/src/commands/Moderation/kick.ts index 97af030f..30a651a0 100644 --- a/src/commands/Moderation/kick.ts +++ b/src/commands/Moderation/kick.ts @@ -26,7 +26,7 @@ export default class KickCommand extends KaikiCommand { (message.member as GuildMember).roles.highest.position <= member.roles.highest.position ) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: @@ -38,7 +38,7 @@ export default class KickCommand extends KaikiCommand { guildClientMember.roles.highest.position <= member.roles.highest.position ) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: @@ -73,6 +73,6 @@ export default class KickCommand extends KaikiCommand { }) .catch((err) => console.log(err)); - return message.channel.send({ embeds: [embed] }); + return message.reply({ embeds: [embed] }); } } diff --git a/src/commands/Moderation/saveChat.ts b/src/commands/Moderation/saveChat.ts index 71eaf2a9..154c6f12 100644 --- a/src/commands/Moderation/saveChat.ts +++ b/src/commands/Moderation/saveChat.ts @@ -1,7 +1,6 @@ -import fs from "fs"; import { ApplyOptions } from "@sapphire/decorators"; import { Args } from "@sapphire/framework"; -import { Collection, Message, MessageReaction } from "discord.js"; +import { AttachmentBuilder, Collection, Message } from "discord.js"; import KaikiCommandOptions from "../../lib/Interfaces/Kaiki/KaikiCommandOptions"; import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; @@ -16,7 +15,7 @@ export default class SaveChatCommand extends KaikiCommand { public async messageRun( message: Message, args: Args - ): Promise { + ) { const amount = await args.pick("number", { maximum: 100, minimum: 1 }); const collection = await message.channel.messages.fetch({ @@ -33,16 +32,10 @@ export default class SaveChatCommand extends KaikiCommand { .join("\n") ); - const filename = `${Date.now()}.txt`; + const name = (date = new Date()) => `${date.toLocaleDateString()}-${date.toLocaleTimeString()}.txt` - fs.writeFileSync(filename, attachment); - - await message.member?.send({ - files: [filename], - }); - - fs.rmSync(filename); - - return message.react("✅"); + return Promise.all([message.member?.send({ + files: [new AttachmentBuilder(attachment, { name: name() })], + }), message.react("✅")]); } } diff --git a/src/commands/NSFW/danbooru.ts b/src/commands/NSFW/danbooru.ts index 607538e4..94b12aec 100644 --- a/src/commands/NSFW/danbooru.ts +++ b/src/commands/NSFW/danbooru.ts @@ -58,12 +58,12 @@ export default class EAPICommand extends KaikiCommand { if (isVideo) content = post.file_url!; - return message.channel.send({ embeds: [emb] }).then(async () => { + return message.reply({ embeds: [emb] }).then(async () => { return new Promise((resolve) => { if (content) setTimeout( () => - resolve(message.channel.send({ content: content })), + resolve(message.reply({ content: content })), 1500 ); }); diff --git a/src/commands/NSFW/e621.ts b/src/commands/NSFW/e621.ts index e51ef26c..aef3ae93 100644 --- a/src/commands/NSFW/e621.ts +++ b/src/commands/NSFW/e621.ts @@ -45,6 +45,6 @@ export default class EAPICommand extends KaikiCommand { ]); } - return message.channel.send({ embeds: [emb] }); + return message.reply({ embeds: [emb] }); } } diff --git a/src/commands/NSFW/hentai.ts b/src/commands/NSFW/hentai.ts index 5f1b22b9..e7cc5416 100644 --- a/src/commands/NSFW/hentai.ts +++ b/src/commands/NSFW/hentai.ts @@ -27,7 +27,7 @@ export default class HentaiCommand extends KaikiCommand { }); }); - return message.channel.send( + return message.reply( await this.client.hentaiService.grabHentai( category || HentaiService.hentaiArray[ diff --git a/src/commands/NSFW/hentaibomb.ts b/src/commands/NSFW/hentaibomb.ts index 661743e3..89727cae 100644 --- a/src/commands/NSFW/hentaibomb.ts +++ b/src/commands/NSFW/hentaibomb.ts @@ -39,6 +39,6 @@ export default class HentaiBombCommand extends KaikiCommand { ) ).splice(0, 5); - return message.channel.send({ content: megaResponse.join("\n") }); + return message.reply({ content: megaResponse.join("\n") }); } } diff --git a/src/commands/NSFW/hentainuke.ts b/src/commands/NSFW/hentainuke.ts index 8fafcc01..155cfe31 100644 --- a/src/commands/NSFW/hentainuke.ts +++ b/src/commands/NSFW/hentainuke.ts @@ -36,7 +36,7 @@ export default class HentaiNukeCommand extends KaikiCommand { p < megaResponse.length; index += 10, p += 10 ) { - await message.channel.send({ + await message.reply({ embeds: megaResponse .slice(p, index) .map((link) => diff --git a/src/commands/Owner only/bettest.ts b/src/commands/Owner only/bettest.ts index 789cac7c..c53bbbf3 100644 --- a/src/commands/Owner only/bettest.ts +++ b/src/commands/Owner only/bettest.ts @@ -58,7 +58,7 @@ export default class BetTest extends KaikiCommand { break; } - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle(`Bettest ${BetTest.bettestNames[gambling]}`) diff --git a/src/commands/Owner only/botConfig.ts b/src/commands/Owner only/botConfig.ts index b0a90e04..37e1ce70 100644 --- a/src/commands/Owner only/botConfig.ts +++ b/src/commands/Owner only/botConfig.ts @@ -51,7 +51,7 @@ export default class BotConfigCommand extends Subcommand { private client = container.client; public async showRun(message: Message) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .addFields([ @@ -180,7 +180,7 @@ export default class BotConfigCommand extends Subcommand { oldValue: string, newValue: string ) => { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle("Changed bot configuration") diff --git a/src/commands/Owner only/dailyReset.ts b/src/commands/Owner only/dailyReset.ts index 8a4c1e63..d7ae5413 100644 --- a/src/commands/Owner only/dailyReset.ts +++ b/src/commands/Owner only/dailyReset.ts @@ -13,7 +13,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; export default class DailyResetCommand extends KaikiCommand { public async messageRun(message: Message): Promise { await this.client.resetDailyClaims(); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription("Daily claims have been reset!") diff --git a/src/commands/Owner only/deregister.ts b/src/commands/Owner only/deregister.ts index aadef031..e1dfa8ef 100644 --- a/src/commands/Owner only/deregister.ts +++ b/src/commands/Owner only/deregister.ts @@ -17,7 +17,7 @@ export default class Deregister extends KaikiCommand { const unloaded = await this.store.unload(cmd); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle("Command has been deregistered.") diff --git a/src/commands/Owner only/die.ts b/src/commands/Owner only/die.ts index 50700544..1b5ac908 100644 --- a/src/commands/Owner only/die.ts +++ b/src/commands/Owner only/die.ts @@ -23,7 +23,7 @@ export default class KillBotProcess extends KaikiCommand { return this.shutdown(message); } - const deleteMsg = await message.channel.send({ + const deleteMsg = await message.reply({ embeds: [ new EmbedBuilder() .setDescription("Do you *really* want to shut me down?") diff --git a/src/commands/Owner only/eval.ts b/src/commands/Owner only/eval.ts index 29d0d67e..d4341814 100644 --- a/src/commands/Owner only/eval.ts +++ b/src/commands/Owner only/eval.ts @@ -30,7 +30,7 @@ export default class EvalCommand extends KaikiCommand { let evaled = await eval("(async () => " + code + ")()"); evaled = (await import("util")).inspect(evaled); - return message.channel.send({ + return message.reply({ content: await KaikiUtil.codeblock( KaikiUtil.trim( this.clean(evaled.toString()), @@ -40,7 +40,7 @@ export default class EvalCommand extends KaikiCommand { ), }); } catch (err) { - return message.channel.send( + return message.reply( `\`ERROR\` ${await KaikiUtil.codeblock(KaikiUtil.trim(this.clean(err.toString()), Constants.MAGIC_NUMBERS.CMDS.OWNER_ONLY.EVAL.MAX_ERROR_STRING), "xl")}` ); } diff --git a/src/commands/Owner only/exec.ts b/src/commands/Owner only/exec.ts index 7576b26d..5f0281b3 100644 --- a/src/commands/Owner only/exec.ts +++ b/src/commands/Owner only/exec.ts @@ -20,7 +20,7 @@ export default class ExecCommand extends KaikiCommand { return exec(command, async (e, stdout) => { if (e) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setAuthor({ @@ -42,7 +42,7 @@ export default class ExecCommand extends KaikiCommand { }); } - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setAuthor({ diff --git a/src/commands/Owner only/gencmdlist.ts b/src/commands/Owner only/gencmdlist.ts index cb77c8d3..0b0d8cf3 100644 --- a/src/commands/Owner only/gencmdlist.ts +++ b/src/commands/Owner only/gencmdlist.ts @@ -23,7 +23,7 @@ import process from "process"; export default class GenCmdListCommand extends KaikiCommand { public async messageRun(message: Message) { if (!process.env.CMDLIST_URL || !process.env.SELF_API_TOKEN) { - return message.channel.send({ + return message.reply({ files: [ new AttachmentBuilder( Buffer.from(this.generateCommmandlist(), "utf-8"), @@ -33,7 +33,7 @@ export default class GenCmdListCommand extends KaikiCommand { }); } - const pendingMsg = await message.channel.send({ + const pendingMsg = await message.reply({ embeds: [ new EmbedBuilder() .setDescription("Uploading commandslist...") diff --git a/src/commands/Owner only/reload.ts b/src/commands/Owner only/reload.ts index 6a8d4d2e..f3246bb7 100644 --- a/src/commands/Owner only/reload.ts +++ b/src/commands/Owner only/reload.ts @@ -19,7 +19,7 @@ export default class ReloadCommand extends KaikiCommand { await unloaded.reload(); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ title: "Command reloaded", diff --git a/src/commands/Owner only/setActivity.ts b/src/commands/Owner only/setActivity.ts index 9fe3e778..7789a3a9 100644 --- a/src/commands/Owner only/setActivity.ts +++ b/src/commands/Owner only/setActivity.ts @@ -32,7 +32,7 @@ export default class SetActivityCommand extends KaikiCommand { }), this.client.botSettings.set("1", "Activity", name), this.client.botSettings.set("1", "ActivityType", type), - message.channel.send({ + message.reply({ embeds: [ new EmbedBuilder() .addFields({ diff --git a/src/commands/Owner only/setAv.ts b/src/commands/Owner only/setAv.ts index c625f3cb..a27ee331 100644 --- a/src/commands/Owner only/setAv.ts +++ b/src/commands/Owner only/setAv.ts @@ -29,7 +29,7 @@ export default class SetAvatarCommand extends KaikiCommand { await this.client.user?.setAvatar(buffer.Buffer.from(img)); - return message.channel.send({ + return message.reply({ content: "Avatar set.", files: [new AttachmentBuilder(buffer.Buffer.from(img))], }); diff --git a/src/commands/Owner only/setBanner.ts b/src/commands/Owner only/setBanner.ts index cad30036..24acfac5 100644 --- a/src/commands/Owner only/setBanner.ts +++ b/src/commands/Owner only/setBanner.ts @@ -45,7 +45,7 @@ export default class SetAvatarCommand extends KaikiCommand { url.pathname.substring(url.pathname.lastIndexOf(".")), }); - return message.channel.send({ + return message.reply({ content: "New banner set.", embeds: [ new EmbedBuilder() diff --git a/src/commands/Owner only/setDaily.ts b/src/commands/Owner only/setDaily.ts index 1e73d069..1ac42c31 100644 --- a/src/commands/Owner only/setDaily.ts +++ b/src/commands/Owner only/setDaily.ts @@ -28,7 +28,7 @@ export default class SetDailyCommand extends KaikiCommand { if (arg > 0) { await this.client.botSettings.set("1", "DailyEnabled", true); await this.client.botSettings.set("1", "DailyAmount", arg); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -38,7 +38,7 @@ export default class SetDailyCommand extends KaikiCommand { ], }); } else if (!isEnabled) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -49,7 +49,7 @@ export default class SetDailyCommand extends KaikiCommand { }); } else { await this.client.botSettings.set("1", "DailyEnabled", false); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription("Disabled daily currency allowance.") diff --git a/src/commands/Owner only/setName.ts b/src/commands/Owner only/setName.ts index e52f5bf5..438e7955 100644 --- a/src/commands/Owner only/setName.ts +++ b/src/commands/Owner only/setName.ts @@ -18,6 +18,6 @@ export default class SetNameCommand extends KaikiCommand { await this.client.user?.setUsername(fullName); - return message.channel.send(`Name set to \`${fullName}\``); + return message.reply(`Name set to \`${fullName}\``); } } diff --git a/src/commands/Owner only/sqlexec.ts b/src/commands/Owner only/sqlexec.ts index 8352f523..ecf0b371 100644 --- a/src/commands/Owner only/sqlexec.ts +++ b/src/commands/Owner only/sqlexec.ts @@ -20,7 +20,7 @@ export default class SetNameCommand extends KaikiCommand { const res = await this.client.connection.query(str); - return message.channel.send( + return message.reply( await KaikiUtil.codeblock( KaikiUtil.trim( JSON.stringify(res[0], null, 4), diff --git a/src/commands/Owner only/sqlselect.ts b/src/commands/Owner only/sqlselect.ts index c4f56acc..7760c3ee 100644 --- a/src/commands/Owner only/sqlselect.ts +++ b/src/commands/Owner only/sqlselect.ts @@ -20,7 +20,7 @@ export default class SetNameCommand extends KaikiCommand { const res = await this.client.connection.query(str); - return message.channel.send( + return message.reply( await KaikiUtil.codeblock( KaikiUtil.trim( JSON.stringify(res[0], null, 4), diff --git a/src/commands/Roles/roleColor.ts b/src/commands/Roles/roleColor.ts index ae79f0b2..ae38ba6a 100644 --- a/src/commands/Roles/roleColor.ts +++ b/src/commands/Roles/roleColor.ts @@ -39,7 +39,7 @@ export default class RoleColorCommand extends KaikiCommand { await imgFromColor(KaikiUtil.convertHexToRGB(role.hexColor)), { name: "color.png" } ); - return message.channel.send({ + return message.reply({ files: [attachment], embeds: [ new EmbedBuilder({ @@ -61,7 +61,7 @@ export default class RoleColorCommand extends KaikiCommand { if ( !member?.permissions.has(PermissionsBitField.Flags.ManageRoles) ) { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.errorMessage( message, @@ -74,7 +74,7 @@ export default class RoleColorCommand extends KaikiCommand { PermissionsBitField.Flags.ManageRoles ) ) { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.errorMessage( message, @@ -85,7 +85,7 @@ export default class RoleColorCommand extends KaikiCommand { } return role.edit({ color: [clr.r, clr.g, clr.b] }).then((r) => { - return message.channel.send({ + return message.reply({ files: [attachment], embeds: [ new EmbedBuilder({ @@ -96,7 +96,7 @@ export default class RoleColorCommand extends KaikiCommand { }); }); } else { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.errorMessage( message, diff --git a/src/commands/Roles/roleCreate.ts b/src/commands/Roles/roleCreate.ts index 35d308f6..538cf91a 100644 --- a/src/commands/Roles/roleCreate.ts +++ b/src/commands/Roles/roleCreate.ts @@ -25,7 +25,7 @@ export default class RoleCreateCommand extends KaikiCommand { throw new Error("Role creation failed."); } - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ title: "Success!", diff --git a/src/commands/Roles/roleDelete.ts b/src/commands/Roles/roleDelete.ts index ce9392c1..50167f4d 100644 --- a/src/commands/Roles/roleDelete.ts +++ b/src/commands/Roles/roleDelete.ts @@ -34,7 +34,7 @@ export default class RoleDeleteCommand extends KaikiCommand { } if (otherRoles.length) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -44,7 +44,7 @@ export default class RoleDeleteCommand extends KaikiCommand { ], }); } else if (deletedRoles.length) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -54,7 +54,7 @@ export default class RoleDeleteCommand extends KaikiCommand { ], }); } else { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription("Couldn't delete roles!") diff --git a/src/commands/Roles/roleHoist.ts b/src/commands/Roles/roleHoist.ts index 3ed21fe4..d74c2010 100644 --- a/src/commands/Roles/roleHoist.ts +++ b/src/commands/Roles/roleHoist.ts @@ -25,7 +25,7 @@ export default class RoleHoistCommand extends KaikiCommand { if (await Roles.rolePermissionCheck(message, role)) { await role.setHoist(!role.hoist); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: `Toggled ${role.name}'s hoist status to ${!role.hoist}.`, @@ -33,7 +33,7 @@ export default class RoleHoistCommand extends KaikiCommand { ], }); } else { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.errorMessage( message, diff --git a/src/commands/Roles/roleInfo.ts b/src/commands/Roles/roleInfo.ts index 00c94055..aa36105f 100644 --- a/src/commands/Roles/roleInfo.ts +++ b/src/commands/Roles/roleInfo.ts @@ -23,7 +23,7 @@ export default class RoleInfoCommand extends KaikiCommand { ? message.member.roles.highest : await args.rest("role"); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ title: `Info for ${role.name}`, diff --git a/src/commands/Roles/roleInrole.ts b/src/commands/Roles/roleInrole.ts index 0fcefad3..26d2d49c 100644 --- a/src/commands/Roles/roleInrole.ts +++ b/src/commands/Roles/roleInrole.ts @@ -16,7 +16,7 @@ export default class RoleInRoleCommand extends KaikiCommand { public async messageRun( message: Message, args: Args - ): Promise { + ): Promise { if (!message.member) throw new Error(); const role = args.finished diff --git a/src/commands/Roles/roleList.ts b/src/commands/Roles/roleList.ts index 7d0aa378..2af53e3c 100644 --- a/src/commands/Roles/roleList.ts +++ b/src/commands/Roles/roleList.ts @@ -13,7 +13,7 @@ import Constants from "../../struct/Constants"; preconditions: ["GuildOnly"], }) export default class RoleListCommand extends KaikiCommand { - public async messageRun(message: Message): Promise { + public async messageRun(message: Message): Promise { const roleArray = [...(message.guild as Guild).roles.cache.values()]; const pages: EmbedBuilder[] = []; const { ROLES_PR_PAGE } = Constants.MAGIC_NUMBERS.CMDS.ROLES.ROLE_LIST; diff --git a/src/commands/Roles/roleListUserRoles.ts b/src/commands/Roles/roleListUserRoles.ts index 06931176..99b5d602 100644 --- a/src/commands/Roles/roleListUserRoles.ts +++ b/src/commands/Roles/roleListUserRoles.ts @@ -13,7 +13,7 @@ import Constants from "../../struct/Constants"; preconditions: ["GuildOnly"], }) export default class ListUserRoles extends KaikiCommand { - public async messageRun(message: Message): Promise { + public async messageRun(message: Message) { const db = await this.client.orm.guildUsers.findMany({ where: { GuildId: BigInt(message.guildId), @@ -56,7 +56,7 @@ export default class ListUserRoles extends KaikiCommand { return sendPaginatedMessage(message, pages, {}); } else { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .withErrorColor(message) diff --git a/src/commands/Roles/roleMentionable.ts b/src/commands/Roles/roleMentionable.ts index 5ae530df..fed33424 100644 --- a/src/commands/Roles/roleMentionable.ts +++ b/src/commands/Roles/roleMentionable.ts @@ -27,7 +27,7 @@ export default class RoleMentionableCommand extends KaikiCommand { await role.setMentionable(bool); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: `Toggled ${role.name}'s mentionable status to ${bool}.`, @@ -35,7 +35,7 @@ export default class RoleMentionableCommand extends KaikiCommand { ], }); } else { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.errorMessage( message, diff --git a/src/commands/Roles/roleMyRole.ts b/src/commands/Roles/roleMyRole.ts index 3b4fefb5..37231ec2 100644 --- a/src/commands/Roles/roleMyRole.ts +++ b/src/commands/Roles/roleMyRole.ts @@ -54,11 +54,11 @@ export default class MyRoleCommand extends Subcommand { const myRole = await Roles.getRole(message); if (!myRole) - return message.channel.send({ + return message.reply({ embeds: [await KaikiEmbeds.embedFail(message)], }); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setAuthor({ @@ -90,7 +90,7 @@ export default class MyRoleCommand extends Subcommand { const myRole = await Roles.getRole(message); if (!myRole) - return message.channel.send({ + return message.reply({ embeds: [await KaikiEmbeds.embedFail(message)], }); @@ -98,7 +98,7 @@ export default class MyRoleCommand extends Subcommand { isPosition = botRole?.comparePositionTo(myRole); if (isPosition && isPosition <= 0) { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.embedFail( message, @@ -112,7 +112,7 @@ export default class MyRoleCommand extends Subcommand { await myRole.setName( KaikiUtil.trim(name, Constants.MAGIC_NUMBERS.COMMON.NAME_LIMIT) ); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -129,7 +129,7 @@ export default class MyRoleCommand extends Subcommand { const myRole = await Roles.getRole(message); if (!myRole) - return message.channel.send({ + return message.reply({ embeds: [await KaikiEmbeds.embedFail(message)], }); @@ -137,7 +137,7 @@ export default class MyRoleCommand extends Subcommand { isPosition = botRole?.comparePositionTo(myRole); if (isPosition && isPosition <= 0) { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.embedFail( message, @@ -152,7 +152,7 @@ export default class MyRoleCommand extends Subcommand { const oldHex = myRole.hexColor; await myRole.setColor(hex); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -167,7 +167,7 @@ export default class MyRoleCommand extends Subcommand { const { guild } = message; if (!guild.features.includes("ROLE_ICONS")) { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.errorMessage( message.guild || message, @@ -181,13 +181,13 @@ export default class MyRoleCommand extends Subcommand { const myRole = await Roles.getRole(message); if (!myRole) - return message.channel.send({ + return message.reply({ embeds: [await KaikiEmbeds.embedFail(message)], }); if (await Roles.rolePermissionCheck(message, myRole)) { myRole.setIcon(null); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription("Role-icon has been reset!") @@ -203,7 +203,7 @@ export default class MyRoleCommand extends Subcommand { const myRole = await Roles.getRole(message); if (!myRole) - return message.channel.send({ + return message.reply({ embeds: [await KaikiEmbeds.embedFail(message)], }); @@ -211,7 +211,7 @@ export default class MyRoleCommand extends Subcommand { isPosition = botRole?.comparePositionTo(myRole); if (isPosition && isPosition <= 0) { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.embedFail( message, @@ -222,7 +222,7 @@ export default class MyRoleCommand extends Subcommand { } await myRole.setIcon(icon).catch(async (err) => - message.channel.send({ + message.reply({ embeds: [ ( await KaikiEmbeds.errorMessage( @@ -237,7 +237,7 @@ export default class MyRoleCommand extends Subcommand { }) ); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( diff --git a/src/commands/Roles/roleRemove.ts b/src/commands/Roles/roleRemove.ts index 8d91f712..73e0f793 100644 --- a/src/commands/Roles/roleRemove.ts +++ b/src/commands/Roles/roleRemove.ts @@ -28,7 +28,7 @@ export default class RoleRemoveCommand extends KaikiCommand { if (member.roles.cache.has(role.id)) { await member.roles.remove(role); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ title: "Success!", @@ -37,7 +37,7 @@ export default class RoleRemoveCommand extends KaikiCommand { ], }); } else { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ title: "Error", @@ -47,7 +47,7 @@ export default class RoleRemoveCommand extends KaikiCommand { }); } } else { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.errorMessage( message, diff --git a/src/commands/Roles/roleRename.ts b/src/commands/Roles/roleRename.ts index 325c62e7..b6fe548d 100644 --- a/src/commands/Roles/roleRename.ts +++ b/src/commands/Roles/roleRename.ts @@ -37,7 +37,7 @@ export default class RoleRenameCommand extends KaikiCommand { }).catch((e) => { throw new Error("Error: Failed to edit role.\n" + e); }); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle("Success!") @@ -46,7 +46,7 @@ export default class RoleRenameCommand extends KaikiCommand { ], }); } else { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.errorMessage( message, diff --git a/src/commands/Roles/roleRestore.ts b/src/commands/Roles/roleRestore.ts index 1b8589bc..80a53833 100644 --- a/src/commands/Roles/roleRestore.ts +++ b/src/commands/Roles/roleRestore.ts @@ -28,7 +28,7 @@ export default class RestoreUserRoles extends KaikiCommand { if (!result) { return; } else if (result.success) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -45,7 +45,7 @@ export default class RestoreUserRoles extends KaikiCommand { ], }); } else if (result.roles) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -55,7 +55,7 @@ export default class RestoreUserRoles extends KaikiCommand { ], }); } else { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( diff --git a/src/commands/Roles/roleSetRole.ts b/src/commands/Roles/roleSetRole.ts index f8d26db6..cd024c0b 100644 --- a/src/commands/Roles/roleSetRole.ts +++ b/src/commands/Roles/roleSetRole.ts @@ -28,7 +28,7 @@ export default class RoleAssignCommand extends KaikiCommand { if (!member.roles.cache.has(role.id)) { await member.roles.add(role); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ title: "Success!", @@ -37,7 +37,7 @@ export default class RoleAssignCommand extends KaikiCommand { ], }); } else { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ title: "Error", @@ -47,7 +47,7 @@ export default class RoleAssignCommand extends KaikiCommand { }); } } else { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.errorMessage( message, diff --git a/src/commands/Roles/roleSetUserRole.ts b/src/commands/Roles/roleSetUserRole.ts index be2907e1..58005ed7 100644 --- a/src/commands/Roles/roleSetUserRole.ts +++ b/src/commands/Roles/roleSetUserRole.ts @@ -36,7 +36,7 @@ export default class SetUserRoleCommand extends KaikiCommand { isPosition = botRole?.comparePositionTo(role); if (!isPosition || isPosition <= 0) { - return message.channel.send({ + return message.reply({ embeds: [ await this.embedFail( message, @@ -49,7 +49,7 @@ export default class SetUserRoleCommand extends KaikiCommand { (message.member as GuildMember).roles.highest.position < role.position ) { - return message.channel.send({ + return message.reply({ embeds: [ await this.embedFail( message, @@ -85,7 +85,7 @@ export default class SetUserRoleCommand extends KaikiCommand { throw new Error("Failed to remove user role.\n" + err); } - return message.channel.send({ + return message.reply({ embeds: [ await this.embedSuccess( message, @@ -107,7 +107,7 @@ export default class SetUserRoleCommand extends KaikiCommand { }); await member.roles.add(role); - return message.channel.send({ + return message.reply({ embeds: [ await this.embedSuccess( message, diff --git a/src/commands/Server settings/addEmoteReact.ts b/src/commands/Server settings/addEmoteReact.ts index 78303504..8fa7a524 100644 --- a/src/commands/Server settings/addEmoteReact.ts +++ b/src/commands/Server settings/addEmoteReact.ts @@ -72,7 +72,7 @@ export default class EmoteReactCommand extends KaikiCommand { ?.set(trigger, emoji.id); } - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle("New emoji trigger added") diff --git a/src/commands/Server settings/config.ts b/src/commands/Server settings/config.ts index 6c990577..e0a0889d 100644 --- a/src/commands/Server settings/config.ts +++ b/src/commands/Server settings/config.ts @@ -66,7 +66,7 @@ import Config from "../../lib/ServerConfig/Config"; ], }) export default class ConfigCommand extends Subcommand { - public async defaultMessageRun(message: Message): Promise { + public async defaultMessageRun(message: Message): Promise { return Config.messageRun(message); } diff --git a/src/commands/Server settings/excludeChannel.ts b/src/commands/Server settings/excludeChannel.ts index b452e3ab..3f28c843 100644 --- a/src/commands/Server settings/excludeChannel.ts +++ b/src/commands/Server settings/excludeChannel.ts @@ -47,7 +47,7 @@ export default class ExcludeDadbotChannelCommand extends KaikiCommand { .withOkColor(message); if (!channels) { - return message.channel.send({ + return message.reply({ embeds: [ embed .setDescription( @@ -152,7 +152,7 @@ export default class ExcludeDadbotChannelCommand extends KaikiCommand { ]); } - return message.channel.send({ + return message.reply({ embeds: [embed], }); } diff --git a/src/commands/Server settings/excludeStickyRoles.ts b/src/commands/Server settings/excludeStickyRoles.ts index e99a86a5..11324cc4 100644 --- a/src/commands/Server settings/excludeStickyRoles.ts +++ b/src/commands/Server settings/excludeStickyRoles.ts @@ -42,7 +42,7 @@ export default class ExcludeStickyRolesCommand extends KaikiCommand { .withOkColor(message); if (!roles) { - return message.channel.send({ + return message.reply({ embeds: [ embed .setDescription( @@ -136,7 +136,7 @@ export default class ExcludeStickyRolesCommand extends KaikiCommand { ]); } - return message.channel.send({ + return message.reply({ embeds: [embed], }); } diff --git a/src/commands/Server settings/goodbye.ts b/src/commands/Server settings/goodbye.ts index 12426b5a..7581b04b 100644 --- a/src/commands/Server settings/goodbye.ts +++ b/src/commands/Server settings/goodbye.ts @@ -66,7 +66,7 @@ export default class GoodbyeConfigCommand extends KaikiCommand { embed.setDescription(`Set goodbye message to ${channel.name}`); } - return message.channel.send({ + return message.reply({ embeds: [embed], }); } diff --git a/src/commands/Server settings/goodbyedelete.ts b/src/commands/Server settings/goodbyedelete.ts index e77e2d4f..6ec6987e 100644 --- a/src/commands/Server settings/goodbyedelete.ts +++ b/src/commands/Server settings/goodbyedelete.ts @@ -30,7 +30,7 @@ export default class GoodbyeDeleteCommand extends KaikiCommand { }, }); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( diff --git a/src/commands/Server settings/goodbyemessage.ts b/src/commands/Server settings/goodbyemessage.ts index 9b29ba7c..59ce73d4 100644 --- a/src/commands/Server settings/goodbyemessage.ts +++ b/src/commands/Server settings/goodbyemessage.ts @@ -46,7 +46,7 @@ export default class ByeMessageCommand extends KaikiCommand { ); } - return message.channel.send({ + return message.reply({ embeds: embed, }); } diff --git a/src/commands/Server settings/listEmoteReacts.ts b/src/commands/Server settings/listEmoteReacts.ts index 24f834f1..d28c92fd 100644 --- a/src/commands/Server settings/listEmoteReacts.ts +++ b/src/commands/Server settings/listEmoteReacts.ts @@ -13,14 +13,14 @@ import Constants from "../../struct/Constants"; preconditions: ["GuildOnly"], }) export default class RemoveEmoteReactCommand extends KaikiCommand { - public async messageRun(message: Message): Promise { + public async messageRun(message: Message) { const db = await this.client.orm.emojiReactions.findMany({ where: { GuildId: BigInt(message.guildId) }, }), pages: EmbedBuilder[] = []; if (!db.length) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle("No triggers") diff --git a/src/commands/Server settings/removeEmoteReact.ts b/src/commands/Server settings/removeEmoteReact.ts index 022179e2..8cd08ec4 100644 --- a/src/commands/Server settings/removeEmoteReact.ts +++ b/src/commands/Server settings/removeEmoteReact.ts @@ -62,9 +62,9 @@ export default class RemoveEmoteReactCommand extends KaikiCommand { if (emoji) embed.setThumbnail(emoji.url); - return message.channel.send({ embeds: [embed] }); + return message.reply({ embeds: [embed] }); } else { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle("Not found") diff --git a/src/commands/Server settings/stickyRoles.ts b/src/commands/Server settings/stickyRoles.ts index b68ced71..14db1361 100644 --- a/src/commands/Server settings/stickyRoles.ts +++ b/src/commands/Server settings/stickyRoles.ts @@ -24,7 +24,7 @@ export default class ToggleStickyRolesCommand extends KaikiCommand { !db.StickyRoles ); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( diff --git a/src/commands/Server settings/toggleCategory.ts b/src/commands/Server settings/toggleCategory.ts index f306ba4d..0aa3d374 100644 --- a/src/commands/Server settings/toggleCategory.ts +++ b/src/commands/Server settings/toggleCategory.ts @@ -38,7 +38,7 @@ export default class ToggleCategoryCommand extends KaikiCommand { .filter(Boolean) .join("\n"); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle("Disabled categories") @@ -102,7 +102,7 @@ export default class ToggleCategoryCommand extends KaikiCommand { `${categoryStr} has been ${exists ? "enabled" : "disabled"}.` ); - return message.channel.send({ + return message.reply({ embeds: [ exists ? embed.withOkColor(message) diff --git a/src/commands/Server settings/welcome.ts b/src/commands/Server settings/welcome.ts index 033061e2..0967942f 100644 --- a/src/commands/Server settings/welcome.ts +++ b/src/commands/Server settings/welcome.ts @@ -66,7 +66,7 @@ export default class WelcomeToggleCommand extends KaikiCommand { embed.setDescription(`Set welcome message to ${channel.name}`); } - return message.channel.send({ + return message.reply({ embeds: [embed], }); } diff --git a/src/commands/Server settings/welcomedelete.ts b/src/commands/Server settings/welcomedelete.ts index 85709073..2ec002b5 100644 --- a/src/commands/Server settings/welcomedelete.ts +++ b/src/commands/Server settings/welcomedelete.ts @@ -30,7 +30,7 @@ export default class WelcomeDeleteCommand extends KaikiCommand { }, }); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setDescription( diff --git a/src/commands/Server settings/welcomemessage.ts b/src/commands/Server settings/welcomemessage.ts index 604983ae..820b2056 100644 --- a/src/commands/Server settings/welcomemessage.ts +++ b/src/commands/Server settings/welcomemessage.ts @@ -46,7 +46,7 @@ export default class WelcomeMessageCommand extends KaikiCommand { ); } - return message.channel.send({ + return message.reply({ embeds: embeds, }); } diff --git a/src/commands/Server settings/welcometest.ts b/src/commands/Server settings/welcometest.ts index e719bc2a..ae3f1d5f 100644 --- a/src/commands/Server settings/welcometest.ts +++ b/src/commands/Server settings/welcometest.ts @@ -29,7 +29,7 @@ export default class WelcomeTestCommand extends KaikiCommand { const greetHandler = new GreetHandler(message.member); const result = await greetHandler.sendWelcomeLeaveMessage(welcomeData); - return message.channel.send({ + return message.reply({ embeds: [ result ? new EmbedBuilder() diff --git a/src/commands/Utility/avatar.ts b/src/commands/Utility/avatar.ts index a4fde5e7..fe681f75 100644 --- a/src/commands/Utility/avatar.ts +++ b/src/commands/Utility/avatar.ts @@ -67,6 +67,6 @@ export default class AvatarCommand extends KaikiCommand { } } - return message.channel.send({ embeds }); + return message.reply({ embeds }); } } diff --git a/src/commands/Utility/cmdlist.ts b/src/commands/Utility/cmdlist.ts index 13e741ee..daf4de6c 100644 --- a/src/commands/Utility/cmdlist.ts +++ b/src/commands/Utility/cmdlist.ts @@ -65,7 +65,7 @@ export default class CommandsList extends KaikiCommand { ]); } - const interactionMessage = await message.channel.send({ + const interactionMessage = await message.reply({ embeds: [embed], components: [component], }); @@ -139,7 +139,7 @@ export default class CommandsList extends KaikiCommand { } ); - return message.channel.send({ + return message.reply({ embeds: [emb], }); } diff --git a/src/commands/Utility/cmdstats.ts b/src/commands/Utility/cmdstats.ts index 7bab712b..f22cc28d 100644 --- a/src/commands/Utility/cmdstats.ts +++ b/src/commands/Utility/cmdstats.ts @@ -17,7 +17,7 @@ export default class Cmdstats extends KaikiCommand { const sorted = db.sort((a, b) => b.Count - a.Count); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle("Command-stats") diff --git a/src/commands/Utility/color.ts b/src/commands/Utility/color.ts index 12531442..735cee3d 100644 --- a/src/commands/Utility/color.ts +++ b/src/commands/Utility/color.ts @@ -20,7 +20,7 @@ import Constants from "../../struct/Constants"; minorCategory: "Color", }) export default class ColorCommand extends KaikiCommand { - public async messageRun(message: Message, args: Args): Promise { + public async messageRun(message: Message, args: Args) { const list = args.getFlags("list"); if (list) { @@ -85,7 +85,7 @@ export default class ColorCommand extends KaikiCommand { }); }); - return message.channel.send({ + return message.reply({ files: attachments, embeds: await Promise.all(embeds), }); diff --git a/src/commands/Utility/forgetMe.ts b/src/commands/Utility/forgetMe.ts index 3fe41e2b..339650ec 100644 --- a/src/commands/Utility/forgetMe.ts +++ b/src/commands/Utility/forgetMe.ts @@ -16,7 +16,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; }) export default class ForgetMeCommand extends KaikiCommand { public async messageRun(message: Message): Promise { - const deleteMsg = await message.channel.send({ + const deleteMsg = await message.reply({ embeds: [ new EmbedBuilder() .setDescription( @@ -70,7 +70,7 @@ export default class ForgetMeCommand extends KaikiCommand { }, }); - message.channel.send({ + message.reply({ embeds: [ new EmbedBuilder() .setTitle("Deleted data") diff --git a/src/commands/Utility/help.ts b/src/commands/Utility/help.ts index 95a3b5db..df8b9c05 100644 --- a/src/commands/Utility/help.ts +++ b/src/commands/Utility/help.ts @@ -57,7 +57,7 @@ export default class HelpCommand extends KaikiCommand { iconURL: avatarURL, }); - return message.channel.send({ embeds: [embed] }); + return message.reply({ embeds: [embed] }); } const command = await args.pick("command").catch(() => undefined); @@ -135,9 +135,9 @@ export default class HelpCommand extends KaikiCommand { ]); } - return message.channel.send({ embeds: [embed] }); + return message.reply({ embeds: [embed] }); } else { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: `**${message.author.username}** Command \`${args.next()}\` not found.`, diff --git a/src/commands/Utility/info.ts b/src/commands/Utility/info.ts index ed70e537..82780da1 100644 --- a/src/commands/Utility/info.ts +++ b/src/commands/Utility/info.ts @@ -11,6 +11,7 @@ import { Message, Role, Sticker, + StickerType, TextChannel, ThreadChannel, User, @@ -69,7 +70,7 @@ export default class InfoCommand extends KaikiCommand { throw this.NoArgumentFoundError; } - return message.channel.send({ embeds: emb }); + return message.reply({ embeds: emb }); } private async gMember(message: Message, obj: GuildMember | User) { @@ -493,9 +494,9 @@ export default class InfoCommand extends KaikiCommand { { name: "Type", value: - sticker.type === 1 + sticker.type === StickerType.Standard ? "Official" - : "Guild" || "N/A", + : "Guild", inline: true, } ) diff --git a/src/commands/Utility/invite.ts b/src/commands/Utility/invite.ts index f53b9ebb..634b8523 100644 --- a/src/commands/Utility/invite.ts +++ b/src/commands/Utility/invite.ts @@ -11,7 +11,7 @@ import KaikiCommand from "../../lib/Kaiki/KaikiCommand"; }) export default class InviteCommand extends KaikiCommand { public async messageRun(message: Message): Promise { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ title: "Invite me to your server", diff --git a/src/commands/Utility/mcping.ts b/src/commands/Utility/mcping.ts index 9fc97915..52e3d147 100644 --- a/src/commands/Utility/mcping.ts +++ b/src/commands/Utility/mcping.ts @@ -91,15 +91,15 @@ export default class MinecraftPingCommand extends KaikiCommand { if (attachment) { embed.setImage("attachment://icon.png"); - return message.channel.send({ + return message.reply({ files: [attachment], embeds: [embed], }); } else { - return message.channel.send({ embeds: [embed] }); + return message.reply({ embeds: [embed] }); } } else { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle( diff --git a/src/commands/Utility/ping.ts b/src/commands/Utility/ping.ts index a312fdf4..faebc91c 100644 --- a/src/commands/Utility/ping.ts +++ b/src/commands/Utility/ping.ts @@ -19,7 +19,7 @@ import { ApplicationCommandRegistry } from "@sapphire/framework"; }) export default class PingCommand extends KaikiCommand { public async messageRun(message: Message) { - const initialMsg = await message.channel.send("Pinging...!"); + const initialMsg = await message.reply("Pinging...!"); return initialMsg.edit(this.createEmbedMessage(message, initialMsg)); } diff --git a/src/commands/Utility/say.ts b/src/commands/Utility/say.ts index c08b5e41..a7d42275 100644 --- a/src/commands/Utility/say.ts +++ b/src/commands/Utility/say.ts @@ -45,7 +45,7 @@ export default class SayCommand extends KaikiCommand { .permissionsIn(targetChannel) .has(PermissionsBitField.Flags.ManageMessages) ) { - return message.channel.send({ + return message.reply({ embeds: [ await KaikiEmbeds.errorMessage( message, diff --git a/src/commands/Utility/serverinfo.ts b/src/commands/Utility/serverinfo.ts index a147fd41..ad0599bc 100644 --- a/src/commands/Utility/serverinfo.ts +++ b/src/commands/Utility/serverinfo.ts @@ -86,6 +86,6 @@ News: **${guild.channels.cache.filter((channel) => channel.type === ChannelType. ], }); - return message.channel.send({ embeds: [emb.withOkColor(message)] }); + return message.reply({ embeds: [emb.withOkColor(message)] }); } } diff --git a/src/commands/Utility/shardstats.ts b/src/commands/Utility/shardstats.ts index a15f101e..e95ada4a 100644 --- a/src/commands/Utility/shardstats.ts +++ b/src/commands/Utility/shardstats.ts @@ -25,7 +25,7 @@ export default class ShardStatisticsCommand extends KaikiCommand { public async messageRun(message: Message) { const { ws } = message.client; - return message.channel.send({ + return message.reply({ content: `${await KaikiUtil.codeblock(`This guild is managed by shard: [${message.guild.shardId}]`, "xl")} ${await KaikiUtil.codeblock( Array.from(ws.shards.entries()) diff --git a/src/commands/Utility/todo.ts b/src/commands/Utility/todo.ts index cb0529a1..6e1c99c9 100644 --- a/src/commands/Utility/todo.ts +++ b/src/commands/Utility/todo.ts @@ -41,7 +41,7 @@ export default class TodoCommand extends KaikiCommand { if (!todoArray.length) { row.components[1].setDisabled(); - sentMsg = await message.channel.send({ + sentMsg = await message.reply({ embeds: [emb.setDescription("Your list is empty.")], components: [row], }); @@ -62,7 +62,7 @@ export default class TodoCommand extends KaikiCommand { if (page >= pages.length) page = 0; - sentMsg = await message.channel.send({ + sentMsg = await message.reply({ embeds: [pages[page]], // Only show arrows if necessary components: todoArray.length > 10 ? [row, rowTwo] : [row], diff --git a/src/commands/Utility/urban.ts b/src/commands/Utility/urban.ts index 89a7046f..cddea3f7 100644 --- a/src/commands/Utility/urban.ts +++ b/src/commands/Utility/urban.ts @@ -35,7 +35,7 @@ export default class UrbanDictCommand extends KaikiCommand { ); if (!list.length) { - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ description: `No results found for **${query}**.`, diff --git a/src/lib/APIs/KawaiiAPI.ts b/src/lib/APIs/KawaiiAPI.ts index 1b03821f..7549db44 100644 --- a/src/lib/APIs/KawaiiAPI.ts +++ b/src/lib/APIs/KawaiiAPI.ts @@ -20,7 +20,7 @@ export default class KawaiiAPI extends ImageAPI { ) { if (!KawaiiAPI.token) return - return message.channel.send({ + return message.reply({ embeds: [ await APIProcessor.processImageAPIRequest( message, diff --git a/src/lib/APIs/NekosAPI.ts b/src/lib/APIs/NekosAPI.ts index 83db6a84..2d86e4e6 100644 --- a/src/lib/APIs/NekosAPI.ts +++ b/src/lib/APIs/NekosAPI.ts @@ -21,7 +21,7 @@ export default class NekosAPI extends ImageAPI { endPoint: T, mention?: GuildMember | null ) { - return message.channel.send({ + return message.reply({ embeds: [ await APIProcessor.processImageAPIRequest( message, diff --git a/src/lib/APIs/PurrBot.ts b/src/lib/APIs/PurrBot.ts index c76025e6..dc615807 100644 --- a/src/lib/APIs/PurrBot.ts +++ b/src/lib/APIs/PurrBot.ts @@ -16,7 +16,7 @@ export default class PurrBot extends ImageAPI { endPoint: T, mention?: GuildMember | null ) { - return message.channel.send({ + return message.reply({ embeds: [ await APIProcessor.processImageAPIRequest( message, diff --git a/src/lib/APIs/WaifuPics.ts b/src/lib/APIs/WaifuPics.ts index facb9b28..9deab845 100644 --- a/src/lib/APIs/WaifuPics.ts +++ b/src/lib/APIs/WaifuPics.ts @@ -14,7 +14,7 @@ export default class WaifuPics extends ImageAPI { endPoint: T, mention?: GuildMember | null ) { - return message.channel.send({ + return message.reply({ embeds: [ await APIProcessor.processImageAPIRequest( message, diff --git a/src/lib/APIs/nekos.life.ts b/src/lib/APIs/nekos.life.ts index 25ec8941..9b1e120f 100644 --- a/src/lib/APIs/nekos.life.ts +++ b/src/lib/APIs/nekos.life.ts @@ -16,7 +16,7 @@ export default class NekosLife extends ImageAPI { endPoint: T, mention?: GuildMember | null ) { - return message.channel.send({ + return message.reply({ embeds: [ await APIProcessor.processImageAPIRequest( message, diff --git a/src/lib/APIs/waifu.im.ts b/src/lib/APIs/waifu.im.ts index ab8856a7..c2450576 100644 --- a/src/lib/APIs/waifu.im.ts +++ b/src/lib/APIs/waifu.im.ts @@ -17,7 +17,7 @@ export default class WaifuIm extends ImageAPI { mention?: GuildMember | null, nsfw = false ) { - return message.channel.send({ + return message.reply({ embeds: [ await APIProcessor.processImageAPIRequest( message, diff --git a/src/lib/Cache/KaikiCache.ts b/src/lib/Cache/KaikiCache.ts index 9bd96599..07141146 100644 --- a/src/lib/Cache/KaikiCache.ts +++ b/src/lib/Cache/KaikiCache.ts @@ -5,7 +5,6 @@ import { APIs, ClientImageAPIs } from "../APIs/Common/Types"; import KaikiUtil from "../KaikiUtil"; import Constants from "../../struct/Constants"; import { - EmoteReactCache, EmoteTrigger, GuildString, PartitionResult, diff --git a/src/lib/DadBot.ts b/src/lib/DadBot.ts index 0d99a8cf..8635b90a 100644 --- a/src/lib/DadBot.ts +++ b/src/lib/DadBot.ts @@ -67,7 +67,7 @@ export class DadBot { message: CustomMessageType, nick: string ) { - await message.channel.send({ + await message.reply({ content: `Hi, ${nick}`, allowedMentions: {}, }); diff --git a/src/lib/Errors/ArgumentErrorRun.ts b/src/lib/Errors/ArgumentErrorRun.ts index 87f3b5a5..6702e113 100644 --- a/src/lib/Errors/ArgumentErrorRun.ts +++ b/src/lib/Errors/ArgumentErrorRun.ts @@ -17,8 +17,8 @@ type ErrorContext = { commandContext: Record; }; -function isIdentifier(identifier: string): identifier is Identifiers { - return identifier in Identifiers; +function isArgsMissingError(identifier: string): identifier is Identifiers.ArgsMissing { + return identifier === Identifiers.ArgsMissing; } export default async ( @@ -29,7 +29,7 @@ export default async ( title: "Argument error", }; - if (isIdentifier(error.identifier) && [Identifiers.ArgsMissing, Identifiers.ArgsUnavailable].includes(error.identifier)) { + if (isArgsMissingError(error.identifier)) { const errorContext = error.context as ErrorContext; const prefix = errorContext.commandContext.prefix; diff --git a/src/lib/Games/TTT.ts b/src/lib/Games/TTT.ts index 9514f4cb..ca97da6e 100644 --- a/src/lib/Games/TTT.ts +++ b/src/lib/Games/TTT.ts @@ -1,18 +1,23 @@ import { EmbedBuilder, GuildMember, Message } from "discord.js"; import Constants from "../../struct/Constants"; -type PlayerType = { player: GuildMember; color: string; sign: string }; +type PlayerType = { player: GuildMember; color: string; sign: Sign }; + +enum Sign { + PLAYER1, + PLAYER2 +} export default class TicTacToe { pOne: PlayerType; pTwo: PlayerType; currentPlayer: PlayerType; - message: Message; - embed: Promise; + message: Message; + embed: Promise>; currentPlayerTurn: (p: GuildMember, m: Message) => Promise; winningMessage: (p: GuildMember) => string; timedWinMessage: (p: GuildMember) => string; - stateDict: { [index: number]: string }; + stateDict: { [index: number]: string | Sign }; active: boolean; static drawMessage = "Game ended in a draw!"; @@ -38,10 +43,10 @@ export default class TicTacToe { constructor( playerOne: GuildMember, playerTwo: GuildMember, - message: Message + message: Message ) { - this.pOne = { player: playerOne, color: "78b159", sign: "p1" }; - this.pTwo = { player: playerTwo, color: "dd2e44", sign: "p2" }; + this.pOne = { player: playerOne, color: "78b159", sign: Sign.PLAYER1 }; + this.pTwo = { player: playerTwo, color: "dd2e44", sign: Sign.PLAYER2 }; this.currentPlayer = this.pTwo; this.message = message; this.stateDict = { @@ -59,7 +64,7 @@ export default class TicTacToe { this.start(); - this.embed = this.message.channel.send({ + this.embed = this.message.reply({ content: `${this.pTwo.player} starts!`, embeds: [ new EmbedBuilder({ @@ -72,7 +77,7 @@ export default class TicTacToe { }); this.currentPlayerTurn = async (p: GuildMember, m: Message) => - this.message.channel.send(`It's ${p}'s turn`).then(async (m2) => { + this.message.reply(`It's ${p}'s turn`).then(async (m2) => { setTimeout( async () => m.delete(), Constants.MAGIC_NUMBERS.LIB.GAMES.TTT.MSG_DEL_TIMEOUT @@ -96,7 +101,7 @@ export default class TicTacToe { const { player } = playerObject; - const filter = (m: Message) => + const filter = (m: Message) => TicTacToe.numbers.includes(m.content) && m.member?.id === player.id; this.message.channel @@ -126,7 +131,7 @@ export default class TicTacToe { const int = parseInt(m.content) - 1; - if (this.stateDict[int] === ("p1" || "p2")) { + if (this.stateDict[int] === Sign.PLAYER1 || this.stateDict[int] === Sign.PLAYER2) { await m.delete(); return this.awaitInput(playerObject); } @@ -166,7 +171,7 @@ export default class TicTacToe { }); } - private checkWin(value: string) { + private checkWin(value: Sign) { return TicTacToe.winningCombos.some((arr) => { return arr.every((num) => this.stateDict[num] === value); }); @@ -181,7 +186,7 @@ export default class TicTacToe { private win(winner: PlayerType) { if (this.active) { this.active = false; - return this.message.channel.send( + return this.message.reply( this.winningMessage(winner.player) ); } @@ -190,7 +195,7 @@ export default class TicTacToe { private timedWin(loser: PlayerType) { if (this.active) { this.active = false; - return this.message.channel.send( + return this.message.reply( this.timedWinMessage(loser.player) ); } @@ -199,7 +204,7 @@ export default class TicTacToe { private tie() { if (this.active) { this.active = false; - return this.message.channel.send(TicTacToe.drawMessage); + return this.message.reply(TicTacToe.drawMessage); } } } diff --git a/src/lib/Kaiki/KaikiSapphireClient.ts b/src/lib/Kaiki/KaikiSapphireClient.ts index c17afa36..a41cf34b 100644 --- a/src/lib/Kaiki/KaikiSapphireClient.ts +++ b/src/lib/Kaiki/KaikiSapphireClient.ts @@ -150,7 +150,7 @@ export default class KaikiSapphireClient `Bot owner: ${colorette.greenBright(client.owner.username)}` ); - this.webListener = new Webserver(); + this.webListener = new Webserver(this); await Promise.all([ client.filterOptionalCommands(), diff --git a/src/lib/ServerConfig/Config.ts b/src/lib/ServerConfig/Config.ts index f972b614..6d91f36f 100644 --- a/src/lib/ServerConfig/Config.ts +++ b/src/lib/ServerConfig/Config.ts @@ -77,7 +77,7 @@ export default class Config { ) .withErrorColor(message); } - return message.channel.send({ + return message.reply({ embeds: [embed], }); } @@ -143,7 +143,7 @@ export default class Config { ); } - return message.channel.send({ + return message.reply({ embeds: [embed], }); } @@ -165,7 +165,7 @@ export default class Config { await message.client.guildsDb.set(guildID, "Prefix", value); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder({ title: "Prefix changed!", @@ -185,7 +185,7 @@ export default class Config { await message.client.guildsDb.set(message.guildId, "OkColor", intValue); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle("Success!") @@ -210,7 +210,7 @@ export default class Config { intValue ); - return message.channel.send({ + return message.reply({ embeds: [ new EmbedBuilder() .setTitle("Success!") diff --git a/src/lib/WebAPI/Webserver.ts b/src/lib/WebAPI/Webserver.ts index da0f8bdc..348f74b5 100644 --- a/src/lib/WebAPI/Webserver.ts +++ b/src/lib/WebAPI/Webserver.ts @@ -15,7 +15,7 @@ export class Webserver { client: KaikiSapphireClient; // Creates an express webserver and server user-data on the specified URL path - public Webserver(client: KaikiSapphireClient) { + public constructor(client: KaikiSapphireClient) { if (!process.env.SELF_API_PORT) return; container.logger.info(`WebListener server is listening on port: ${Colorette.greenBright(process.env.SELF_API_PORT)}`); diff --git a/src/listeners/argumentError.ts b/src/listeners/argumentError.ts index 9de4e5b3..f7adfbe9 100644 --- a/src/listeners/argumentError.ts +++ b/src/listeners/argumentError.ts @@ -1,4 +1,3 @@ -import { ApplyOptions } from "@sapphire/decorators"; import { Events, Listener, @@ -7,13 +6,13 @@ import { UserError, } from "@sapphire/framework"; import ArgumentErrorRun from "../lib/Errors/ArgumentErrorRun"; +import { ApplyOptions } from "@sapphire/decorators"; @ApplyOptions({ event: Events.MessageCommandError, }) export default class MessageCommandError extends Listener { // Ran when precondition check blocks a command - public async run( error: UserError, payload: MessageCommandDeniedPayload diff --git a/src/listeners/mentionPrefixOnly.ts b/src/listeners/mentionPrefixOnly.ts index 97e65b2b..8b26da68 100644 --- a/src/listeners/mentionPrefixOnly.ts +++ b/src/listeners/mentionPrefixOnly.ts @@ -4,7 +4,7 @@ import Constants from "../struct/Constants"; export class MentionPrefixOnly extends Listener { public async run(msg: Message) { - const embed = msg.channel.send({ + const embed = msg.reply({ embeds: [ new EmbedBuilder({ title: `Hi ${msg.author.username}, what's up?`, diff --git a/src/struct/Constants.ts b/src/struct/Constants.ts index 20da7f4e..bb7c8c8e 100644 --- a/src/struct/Constants.ts +++ b/src/struct/Constants.ts @@ -504,7 +504,7 @@ export default class Constants { KAIKI_ARGS: { MAX_COLOR_VALUE: 0xffffff, // eslint-disable-next-line @typescript-eslint/no-loss-of-precision - MAX_INT: 0x7fffffffffffffff, + MAX_INT: 0x7fffffffffffffffn, // ABSOLUTE ZERO IN BINARY MIN_INT: 0b0, },