hypixel-api-reborn 11.3.4 → 12.0.0-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +12 -0
- package/.github/ISSUE_TEMPLATE/Bug_report.md +9 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +25 -0
- package/.github/SECURITY.md +21 -0
- package/.github/labels.yml +24 -0
- package/.github/workflows/ci-cd.yml +126 -0
- package/.vscode/extensions.json +10 -0
- package/README.md +0 -63
- package/dist/API/getAchievements.d.ts +10 -0
- package/dist/API/getAchievements.js +22 -0
- package/dist/API/getAchievements.js.map +1 -0
- package/dist/API/getActiveHouses.d.ts +10 -0
- package/dist/API/getActiveHouses.js +22 -0
- package/dist/API/getActiveHouses.js.map +1 -0
- package/dist/API/getBoosters.d.ts +10 -0
- package/dist/API/getBoosters.js +22 -0
- package/dist/API/getBoosters.js.map +1 -0
- package/dist/API/getChallenges.d.ts +10 -0
- package/dist/API/getChallenges.js +22 -0
- package/dist/API/getChallenges.js.map +1 -0
- package/dist/API/getGameCounts.d.ts +10 -0
- package/dist/API/getGameCounts.js +22 -0
- package/dist/API/getGameCounts.js.map +1 -0
- package/dist/API/getGuild.d.ts +10 -0
- package/dist/API/getGuild.js +36 -0
- package/dist/API/getGuild.js.map +1 -0
- package/dist/API/getGuildAchievements.d.ts +10 -0
- package/dist/API/getGuildAchievements.js +22 -0
- package/dist/API/getGuildAchievements.js.map +1 -0
- package/dist/API/getHouse.d.ts +10 -0
- package/dist/API/getHouse.js +24 -0
- package/dist/API/getHouse.js.map +1 -0
- package/dist/API/getLeaderboards.d.ts +9 -0
- package/dist/API/getLeaderboards.js +32 -0
- package/dist/API/getLeaderboards.js.map +1 -0
- package/dist/API/getPlayer.d.ts +10 -0
- package/dist/API/getPlayer.js +37 -0
- package/dist/API/getPlayer.js.map +1 -0
- package/dist/API/getPlayerHouses.d.ts +10 -0
- package/dist/API/getPlayerHouses.js +25 -0
- package/dist/API/getPlayerHouses.js.map +1 -0
- package/dist/API/getQuests.d.ts +10 -0
- package/dist/API/getQuests.js +22 -0
- package/dist/API/getQuests.js.map +1 -0
- package/dist/API/getRecentGames.d.ts +10 -0
- package/dist/API/getRecentGames.js +25 -0
- package/dist/API/getRecentGames.js.map +1 -0
- package/dist/API/getSkyblockAuction.d.ts +10 -0
- package/dist/API/getSkyblockAuction.js +38 -0
- package/dist/API/getSkyblockAuction.js.map +1 -0
- package/dist/API/getSkyblockAuctions.d.ts +24 -0
- package/dist/API/getSkyblockAuctions.js +57 -0
- package/dist/API/getSkyblockAuctions.js.map +1 -0
- package/dist/API/getSkyblockAuctionsByPlayer.d.ts +10 -0
- package/dist/API/getSkyblockAuctionsByPlayer.js +25 -0
- package/dist/API/getSkyblockAuctionsByPlayer.js.map +1 -0
- package/dist/API/getSkyblockBazaar.d.ts +10 -0
- package/dist/API/getSkyblockBazaar.js +22 -0
- package/dist/API/getSkyblockBazaar.js.map +1 -0
- package/dist/API/getSkyblockBingo.d.ts +10 -0
- package/dist/API/getSkyblockBingo.js +22 -0
- package/dist/API/getSkyblockBingo.js.map +1 -0
- package/dist/API/getSkyblockFireSales.d.ts +10 -0
- package/dist/API/getSkyblockFireSales.js +22 -0
- package/dist/API/getSkyblockFireSales.js.map +1 -0
- package/dist/API/getSkyblockGarden.d.ts +10 -0
- package/dist/API/getSkyblockGarden.js +24 -0
- package/dist/API/getSkyblockGarden.js.map +1 -0
- package/dist/API/getSkyblockGovernment.d.ts +10 -0
- package/dist/API/getSkyblockGovernment.js +22 -0
- package/dist/API/getSkyblockGovernment.js.map +1 -0
- package/dist/API/getSkyblockMember.d.ts +10 -0
- package/dist/API/getSkyblockMember.js +46 -0
- package/dist/API/getSkyblockMember.js.map +1 -0
- package/dist/API/getSkyblockMuseum.d.ts +10 -0
- package/dist/API/getSkyblockMuseum.js +25 -0
- package/dist/API/getSkyblockMuseum.js.map +1 -0
- package/dist/API/getSkyblockNews.d.ts +10 -0
- package/dist/API/getSkyblockNews.js +22 -0
- package/dist/API/getSkyblockNews.js.map +1 -0
- package/dist/API/getSkyblockProfiles.d.ts +10 -0
- package/dist/API/getSkyblockProfiles.js +47 -0
- package/dist/API/getSkyblockProfiles.js.map +1 -0
- package/dist/API/getStatus.d.ts +10 -0
- package/dist/API/getStatus.js +23 -0
- package/dist/API/getStatus.js.map +1 -0
- package/dist/API/getWatchdogStats.d.ts +10 -0
- package/dist/API/getWatchdogStats.js +22 -0
- package/dist/API/getWatchdogStats.js.map +1 -0
- package/dist/API/index.d.ts +57 -0
- package/dist/API/index.js +62 -0
- package/dist/API/index.js.map +1 -0
- package/dist/Client.d.ts +29 -0
- package/dist/Client.js +76 -0
- package/dist/Client.js.map +1 -0
- package/dist/Errors.d.ts +27 -0
- package/dist/Errors.js +31 -0
- package/dist/Errors.js.map +1 -0
- package/dist/Private/CacheHandler.d.ts +14 -0
- package/dist/Private/CacheHandler.js +37 -0
- package/dist/Private/CacheHandler.js.map +1 -0
- package/dist/Private/Endpoint.d.ts +7 -0
- package/dist/Private/Endpoint.js +13 -0
- package/dist/Private/Endpoint.js.map +1 -0
- package/dist/Private/RateLimit.d.ts +13 -0
- package/dist/Private/RateLimit.js +33 -0
- package/dist/Private/RateLimit.js.map +1 -0
- package/dist/Private/Requests.d.ts +29 -0
- package/dist/Private/Requests.js +112 -0
- package/dist/Private/Requests.js.map +1 -0
- package/dist/Private/Updater.d.ts +11 -0
- package/dist/Private/Updater.js +47 -0
- package/dist/Private/Updater.js.map +1 -0
- package/dist/index.d.ts +115 -0
- package/dist/index.js +132 -0
- package/dist/index.js.map +1 -0
- package/dist/package.json +66 -0
- package/dist/src/API/getAchievements.js +16 -0
- package/dist/src/API/getAchievements.test.js +74 -0
- package/dist/src/API/getActiveHouses.js +16 -0
- package/dist/src/API/getActiveHouses.test.js +43 -0
- package/dist/src/API/getBoosters.js +16 -0
- package/dist/src/API/getBoosters.test.js +72 -0
- package/dist/src/API/getChallenges.js +16 -0
- package/dist/src/API/getChallenges.test.js +51 -0
- package/dist/src/API/getGameCounts.js +16 -0
- package/dist/src/API/getGameCounts.test.js +26 -0
- package/dist/src/API/getGuild.js +30 -0
- package/dist/src/API/getGuild.test.js +508 -0
- package/dist/src/API/getGuildAchievements.js +16 -0
- package/dist/src/API/getGuildAchievements.test.js +51 -0
- package/dist/src/API/getHouse.js +18 -0
- package/dist/src/API/getHouse.test.js +51 -0
- package/dist/src/API/getLeaderboards.js +23 -0
- package/dist/src/API/getLeaderboards.test.js +55 -0
- package/dist/src/API/getPlayer.js +31 -0
- package/dist/src/API/getPlayer.test.js +290 -0
- package/dist/src/API/getPlayerHouses.js +19 -0
- package/dist/src/API/getPlayerHouses.test.js +50 -0
- package/dist/src/API/getQuests.js +16 -0
- package/dist/src/API/getQuests.test.js +48 -0
- package/dist/src/API/getRecentGames.js +19 -0
- package/dist/src/API/getRecentGames.test.js +52 -0
- package/dist/src/API/getSkyblockAuction.js +32 -0
- package/dist/src/API/getSkyblockAuction.test.js +382 -0
- package/dist/src/API/getSkyblockAuctions.js +51 -0
- package/dist/src/API/getSkyblockAuctions.test.js +366 -0
- package/dist/src/API/getSkyblockAuctionsByPlayer.js +19 -0
- package/dist/src/API/getSkyblockAuctionsByPlayer.test.js +207 -0
- package/dist/src/API/getSkyblockBazaar.js +16 -0
- package/dist/src/API/getSkyblockBazaar.test.js +51 -0
- package/dist/src/API/getSkyblockBingo.js +16 -0
- package/dist/src/API/getSkyblockBingo.test.js +40 -0
- package/dist/src/API/getSkyblockFireSales.js +16 -0
- package/dist/src/API/getSkyblockFireSales.test.js +55 -0
- package/dist/src/API/getSkyblockGarden.js +18 -0
- package/dist/src/API/getSkyblockGarden.test.js +43 -0
- package/dist/src/API/getSkyblockGovernment.js +16 -0
- package/dist/src/API/getSkyblockGovernment.test.js +60 -0
- package/dist/src/API/getSkyblockMember.js +40 -0
- package/dist/src/API/getSkyblockMember.test.js +648 -0
- package/dist/src/API/getSkyblockMuseum.js +19 -0
- package/dist/src/API/getSkyblockMuseum.test.js +78 -0
- package/dist/src/API/getSkyblockNews.js +16 -0
- package/dist/src/API/getSkyblockNews.test.js +35 -0
- package/dist/src/API/getSkyblockProfiles.js +41 -0
- package/dist/src/API/getSkyblockProfiles.test.js +121 -0
- package/dist/src/API/getStatus.js +17 -0
- package/dist/src/API/getStatus.test.js +57 -0
- package/dist/src/API/getWatchdogStats.js +16 -0
- package/dist/src/API/getWatchdogStats.test.js +37 -0
- package/dist/src/API/index.js +56 -0
- package/dist/src/Client.js +70 -0
- package/dist/src/Client.test.js +115 -0
- package/dist/src/Errors.js +28 -0
- package/dist/src/Private/CacheHandler.js +31 -0
- package/dist/src/Private/CacheHandler.test.js +37 -0
- package/dist/src/Private/Endpoint.js +10 -0
- package/dist/src/Private/Endpoint.test.js +17 -0
- package/dist/src/Private/RateLimit.js +30 -0
- package/dist/src/Private/RateLimit.test.js +73 -0
- package/dist/src/Private/Requests.js +106 -0
- package/dist/src/Private/Requests.test.js +48 -0
- package/dist/src/Private/Updater.js +41 -0
- package/dist/src/Private/Updater.test.js +52 -0
- package/dist/src/index.js +34 -0
- package/dist/src/structures/Boosters/Booster.js +38 -0
- package/dist/src/structures/Boosters/Booster.test.js +7 -0
- package/dist/src/structures/Color.js +73 -0
- package/dist/src/structures/Color.test.js +23 -0
- package/dist/src/structures/Game.js +31 -0
- package/dist/src/structures/GameCounts.js +23 -0
- package/dist/src/structures/Guild/Guild.js +61 -0
- package/dist/src/structures/Guild/GuildMember.js +30 -0
- package/dist/src/structures/Guild/GuildRank.js +20 -0
- package/dist/src/structures/House.js +22 -0
- package/dist/src/structures/House.test.js +24 -0
- package/dist/src/structures/ItemBytes.js +10 -0
- package/dist/src/structures/Leaderboard.js +17 -0
- package/dist/src/structures/Leaderboard.test.js +25 -0
- package/dist/src/structures/MiniGames/Arcade.js +437 -0
- package/dist/src/structures/MiniGames/Arcade.test.js +643 -0
- package/dist/src/structures/MiniGames/ArenaBrawl.js +48 -0
- package/dist/src/structures/MiniGames/ArenaBrawl.test.js +120 -0
- package/dist/src/structures/MiniGames/BedWars.js +299 -0
- package/dist/src/structures/MiniGames/BedWars.test.js +936 -0
- package/dist/src/structures/MiniGames/BlitzSurvivalGames.js +170 -0
- package/dist/src/structures/MiniGames/BlitzSurvivalGames.test.js +2238 -0
- package/dist/src/structures/MiniGames/BuildBattle.js +27 -0
- package/dist/src/structures/MiniGames/BuildBattle.test.js +42 -0
- package/dist/src/structures/MiniGames/CopsAndCrims.js +126 -0
- package/dist/src/structures/MiniGames/CopsAndCrims.test.js +162 -0
- package/dist/src/structures/MiniGames/Duels.js +466 -0
- package/dist/src/structures/MiniGames/Duels.test.js +1853 -0
- package/dist/src/structures/MiniGames/MegaWalls.js +194 -0
- package/dist/src/structures/MiniGames/MegaWalls.test.js +4790 -0
- package/dist/src/structures/MiniGames/MurderMystery.js +84 -0
- package/dist/src/structures/MiniGames/MurderMystery.test.js +241 -0
- package/dist/src/structures/MiniGames/Paintball.js +36 -0
- package/dist/src/structures/MiniGames/Paintball.test.js +51 -0
- package/dist/src/structures/MiniGames/Pit.js +124 -0
- package/dist/src/structures/MiniGames/Pit.test.js +218 -0
- package/dist/src/structures/MiniGames/PitInventoryItem.js +19 -0
- package/dist/src/structures/MiniGames/Quakecraft.js +68 -0
- package/dist/src/structures/MiniGames/Quakecraft.test.js +105 -0
- package/dist/src/structures/MiniGames/SkyWars.js +264 -0
- package/dist/src/structures/MiniGames/Skywars.test.js +413 -0
- package/dist/src/structures/MiniGames/SmashHeroes.js +110 -0
- package/dist/src/structures/MiniGames/SmashHeroes.test.js +647 -0
- package/dist/src/structures/MiniGames/SpeedUHC.js +72 -0
- package/dist/src/structures/MiniGames/SpeedUHC.test.js +245 -0
- package/dist/src/structures/MiniGames/TNTGames.js +120 -0
- package/dist/src/structures/MiniGames/TNTGames.test.js +139 -0
- package/dist/src/structures/MiniGames/TurboKartRacers.js +57 -0
- package/dist/src/structures/MiniGames/TurboKartRacers.test.js +140 -0
- package/dist/src/structures/MiniGames/UHC.js +109 -0
- package/dist/src/structures/MiniGames/UHC.test.js +180 -0
- package/dist/src/structures/MiniGames/VampireZ.js +38 -0
- package/dist/src/structures/MiniGames/VampireZ.test.js +59 -0
- package/dist/src/structures/MiniGames/Walls.js +22 -0
- package/dist/src/structures/MiniGames/Walls.test.js +32 -0
- package/dist/src/structures/MiniGames/Warlords.js +76 -0
- package/dist/src/structures/MiniGames/Warlords.test.js +405 -0
- package/dist/src/structures/MiniGames/WoolWars.js +81 -0
- package/dist/src/structures/MiniGames/WoolWars.test.js +251 -0
- package/dist/src/structures/Pet.js +38 -0
- package/dist/src/structures/Pets.js +14 -0
- package/dist/src/structures/Player.js +147 -0
- package/dist/src/structures/Player.test.js +96 -0
- package/dist/src/structures/PlayerCosmetics.js +53 -0
- package/dist/src/structures/RecentGame.js +25 -0
- package/dist/src/structures/SkyBlock/Auctions/Auction.js +39 -0
- package/dist/src/structures/SkyBlock/Auctions/AuctionInfo.js +15 -0
- package/dist/src/structures/SkyBlock/Auctions/BaseAuction.js +19 -0
- package/dist/src/structures/SkyBlock/Auctions/BaseAuction.test.js +20 -0
- package/dist/src/structures/SkyBlock/Auctions/Bid.js +20 -0
- package/dist/src/structures/SkyBlock/Bazaar/Order.js +16 -0
- package/dist/src/structures/SkyBlock/Bazaar/Order.test.js +23 -0
- package/dist/src/structures/SkyBlock/Bazaar/Product.js +23 -0
- package/dist/src/structures/SkyBlock/Bazaar/Product.test.js +46 -0
- package/dist/src/structures/SkyBlock/News/SkyblockNews.js +32 -0
- package/dist/src/structures/SkyBlock/SkyblockGarden.js +62 -0
- package/dist/src/structures/SkyBlock/SkyblockGarden.test.js +22 -0
- package/dist/src/structures/SkyBlock/SkyblockInventoryItem.js +78 -0
- package/dist/src/structures/SkyBlock/SkyblockMember.js +406 -0
- package/dist/src/structures/SkyBlock/SkyblockMember.test.js +71 -0
- package/dist/src/structures/SkyBlock/SkyblockMuseum.js +29 -0
- package/dist/src/structures/SkyBlock/SkyblockMuseumItem.js +24 -0
- package/dist/src/structures/SkyBlock/SkyblockPet.js +27 -0
- package/dist/src/structures/SkyBlock/SkyblockProfile.js +36 -0
- package/dist/src/structures/SkyBlock/Static/Bingo.js +49 -0
- package/dist/src/structures/SkyBlock/Static/BingoData.js +19 -0
- package/dist/src/structures/SkyBlock/Static/Candidate.js +19 -0
- package/dist/src/structures/SkyBlock/Static/FireSale.js +22 -0
- package/dist/src/structures/SkyBlock/Static/Government.js +33 -0
- package/dist/src/structures/SkyBlock/Static/Perk.js +9 -0
- package/dist/src/structures/Static/Achievement.js +44 -0
- package/dist/src/structures/Static/AchievementTier.js +14 -0
- package/dist/src/structures/Static/Achievements.js +15 -0
- package/dist/src/structures/Static/Challenges.js +15 -0
- package/dist/src/structures/Static/GameAchievements.js +14 -0
- package/dist/src/structures/Static/GameChallenges.js +18 -0
- package/dist/src/structures/Static/GameQuests.js +10 -0
- package/dist/src/structures/Static/GuildAchievements.js +15 -0
- package/dist/src/structures/Static/Quest.js +24 -0
- package/dist/src/structures/Static/Quests.js +15 -0
- package/dist/src/structures/Status.js +17 -0
- package/dist/src/structures/Status.test.js +18 -0
- package/dist/src/structures/WatchdogStats.js +15 -0
- package/dist/src/structures/WatchdogStats.test.js +23 -0
- package/dist/src/utils/Constants.js +2170 -0
- package/dist/src/utils/Guild.js +71 -0
- package/dist/src/utils/Player.js +88 -0
- package/dist/src/utils/Player.test.js +82 -0
- package/dist/src/utils/SkyblockUtils.js +342 -0
- package/dist/src/utils/SkyblockUtils.test.js +8 -0
- package/dist/src/utils/divide.js +6 -0
- package/dist/src/utils/divide.test.js +12 -0
- package/dist/src/utils/isGuildID.js +3 -0
- package/dist/src/utils/isGuildID.test.js +16 -0
- package/dist/src/utils/isUUID.js +5 -0
- package/dist/src/utils/isUUID.test.js +31 -0
- package/dist/src/utils/oscillation.js +13 -0
- package/dist/src/utils/oscillation.test.js +17 -0
- package/dist/src/utils/removeSnakeCase.js +14 -0
- package/dist/src/utils/romanize.js +41 -0
- package/dist/src/utils/romanize.test.js +8 -0
- package/dist/structures/Boosters/Booster.d.ts +17 -0
- package/dist/structures/Boosters/Booster.js +44 -0
- package/dist/structures/Boosters/Booster.js.map +1 -0
- package/dist/structures/Color.d.ts +9 -0
- package/dist/structures/Color.js +76 -0
- package/dist/structures/Color.js.map +1 -0
- package/dist/structures/Game.d.ts +16 -0
- package/dist/structures/Game.js +35 -0
- package/dist/structures/Game.js.map +1 -0
- package/dist/structures/GameCounts.d.ts +7 -0
- package/dist/structures/GameCounts.js +29 -0
- package/dist/structures/GameCounts.js.map +1 -0
- package/dist/structures/Guild/Guild.d.ts +39 -0
- package/dist/structures/Guild/Guild.js +67 -0
- package/dist/structures/Guild/Guild.js.map +1 -0
- package/dist/structures/Guild/GuildMember.d.ts +15 -0
- package/dist/structures/Guild/GuildMember.js +33 -0
- package/dist/structures/Guild/GuildMember.js.map +1 -0
- package/dist/structures/Guild/GuildRank.d.ts +11 -0
- package/dist/structures/Guild/GuildRank.js +23 -0
- package/dist/structures/Guild/GuildRank.js.map +1 -0
- package/dist/structures/House.d.ts +12 -0
- package/dist/structures/House.js +25 -0
- package/dist/structures/House.js.map +1 -0
- package/dist/structures/ItemBytes.d.ts +7 -0
- package/dist/structures/ItemBytes.js +17 -0
- package/dist/structures/ItemBytes.js.map +1 -0
- package/dist/structures/Leaderboard.d.ts +8 -0
- package/dist/structures/Leaderboard.js +16 -0
- package/dist/structures/Leaderboard.js.map +1 -0
- package/dist/structures/MiniGames/Arcade.d.ts +234 -0
- package/dist/structures/MiniGames/Arcade.js +466 -0
- package/dist/structures/MiniGames/Arcade.js.map +1 -0
- package/dist/structures/MiniGames/ArenaBrawl.d.ts +26 -0
- package/dist/structures/MiniGames/ArenaBrawl.js +54 -0
- package/dist/structures/MiniGames/ArenaBrawl.js.map +1 -0
- package/dist/structures/MiniGames/BedWars.d.ts +116 -0
- package/dist/structures/MiniGames/BedWars.js +300 -0
- package/dist/structures/MiniGames/BedWars.js.map +1 -0
- package/dist/structures/MiniGames/BlitzSurvivalGames.d.ts +87 -0
- package/dist/structures/MiniGames/BlitzSurvivalGames.js +176 -0
- package/dist/structures/MiniGames/BlitzSurvivalGames.js.map +1 -0
- package/dist/structures/MiniGames/BuildBattle.d.ts +18 -0
- package/dist/structures/MiniGames/BuildBattle.js +33 -0
- package/dist/structures/MiniGames/BuildBattle.js.map +1 -0
- package/dist/structures/MiniGames/CopsAndCrims.d.ts +67 -0
- package/dist/structures/MiniGames/CopsAndCrims.js +132 -0
- package/dist/structures/MiniGames/CopsAndCrims.js.map +1 -0
- package/dist/structures/MiniGames/Duels.d.ts +188 -0
- package/dist/structures/MiniGames/Duels.js +473 -0
- package/dist/structures/MiniGames/Duels.js.map +1 -0
- package/dist/structures/MiniGames/MegaWalls.d.ts +99 -0
- package/dist/structures/MiniGames/MegaWalls.js +200 -0
- package/dist/structures/MiniGames/MegaWalls.js.map +1 -0
- package/dist/structures/MiniGames/MurderMystery.d.ts +44 -0
- package/dist/structures/MiniGames/MurderMystery.js +90 -0
- package/dist/structures/MiniGames/MurderMystery.js.map +1 -0
- package/dist/structures/MiniGames/Paintball.d.ts +19 -0
- package/dist/structures/MiniGames/Paintball.js +42 -0
- package/dist/structures/MiniGames/Paintball.js.map +1 -0
- package/dist/structures/MiniGames/Pit.d.ts +41 -0
- package/dist/structures/MiniGames/Pit.js +138 -0
- package/dist/structures/MiniGames/Pit.js.map +1 -0
- package/dist/structures/MiniGames/PitInventoryItem.d.ts +10 -0
- package/dist/structures/MiniGames/PitInventoryItem.js +20 -0
- package/dist/structures/MiniGames/PitInventoryItem.js.map +1 -0
- package/dist/structures/MiniGames/Quakecraft.d.ts +35 -0
- package/dist/structures/MiniGames/Quakecraft.js +74 -0
- package/dist/structures/MiniGames/Quakecraft.js.map +1 -0
- package/dist/structures/MiniGames/SkyWars.d.ts +112 -0
- package/dist/structures/MiniGames/SkyWars.js +272 -0
- package/dist/structures/MiniGames/SkyWars.js.map +1 -0
- package/dist/structures/MiniGames/SmashHeroes.d.ts +58 -0
- package/dist/structures/MiniGames/SmashHeroes.js +116 -0
- package/dist/structures/MiniGames/SmashHeroes.js.map +1 -0
- package/dist/structures/MiniGames/SpeedUHC.d.ts +36 -0
- package/dist/structures/MiniGames/SpeedUHC.js +74 -0
- package/dist/structures/MiniGames/SpeedUHC.js.map +1 -0
- package/dist/structures/MiniGames/TNTGames.d.ts +66 -0
- package/dist/structures/MiniGames/TNTGames.js +126 -0
- package/dist/structures/MiniGames/TNTGames.js.map +1 -0
- package/dist/structures/MiniGames/TurboKartRacers.d.ts +31 -0
- package/dist/structures/MiniGames/TurboKartRacers.js +60 -0
- package/dist/structures/MiniGames/TurboKartRacers.js.map +1 -0
- package/dist/structures/MiniGames/UHC.d.ts +31 -0
- package/dist/structures/MiniGames/UHC.js +115 -0
- package/dist/structures/MiniGames/UHC.js.map +1 -0
- package/dist/structures/MiniGames/VampireZ.d.ts +21 -0
- package/dist/structures/MiniGames/VampireZ.js +44 -0
- package/dist/structures/MiniGames/VampireZ.js.map +1 -0
- package/dist/structures/MiniGames/Walls.d.ts +12 -0
- package/dist/structures/MiniGames/Walls.js +28 -0
- package/dist/structures/MiniGames/Walls.js.map +1 -0
- package/dist/structures/MiniGames/Warlords.d.ts +40 -0
- package/dist/structures/MiniGames/Warlords.js +82 -0
- package/dist/structures/MiniGames/Warlords.js.map +1 -0
- package/dist/structures/MiniGames/WoolWars.d.ts +49 -0
- package/dist/structures/MiniGames/WoolWars.js +87 -0
- package/dist/structures/MiniGames/WoolWars.js.map +1 -0
- package/dist/structures/Pet.d.ts +19 -0
- package/dist/structures/Pet.js +41 -0
- package/dist/structures/Pet.js.map +1 -0
- package/dist/structures/Pets.d.ts +38 -0
- package/dist/structures/Pets.js +20 -0
- package/dist/structures/Pets.js.map +1 -0
- package/dist/structures/Player.d.ts +73 -0
- package/dist/structures/Player.js +158 -0
- package/dist/structures/Player.js.map +1 -0
- package/dist/structures/PlayerCosmetics.d.ts +26 -0
- package/dist/structures/PlayerCosmetics.js +120 -0
- package/dist/structures/PlayerCosmetics.js.map +1 -0
- package/dist/structures/RecentGame.d.ts +13 -0
- package/dist/structures/RecentGame.js +30 -0
- package/dist/structures/RecentGame.js.map +1 -0
- package/dist/structures/ServerInfo.d.ts +20 -0
- package/dist/structures/ServerInfo.js +34 -0
- package/dist/structures/ServerInfo.js.map +1 -0
- package/dist/structures/SkyBlock/Auctions/Auction.d.ts +22 -0
- package/dist/structures/SkyBlock/Auctions/Auction.js +45 -0
- package/dist/structures/SkyBlock/Auctions/Auction.js.map +1 -0
- package/dist/structures/SkyBlock/Auctions/AuctionInfo.d.ts +10 -0
- package/dist/structures/SkyBlock/Auctions/AuctionInfo.js +21 -0
- package/dist/structures/SkyBlock/Auctions/AuctionInfo.js.map +1 -0
- package/dist/structures/SkyBlock/Auctions/BaseAuction.d.ts +11 -0
- package/dist/structures/SkyBlock/Auctions/BaseAuction.js +25 -0
- package/dist/structures/SkyBlock/Auctions/BaseAuction.js.map +1 -0
- package/dist/structures/SkyBlock/Auctions/Bid.d.ts +11 -0
- package/dist/structures/SkyBlock/Auctions/Bid.js +23 -0
- package/dist/structures/SkyBlock/Auctions/Bid.js.map +1 -0
- package/dist/structures/SkyBlock/Bazzar/Order.d.ts +9 -0
- package/dist/structures/SkyBlock/Bazzar/Order.js +19 -0
- package/dist/structures/SkyBlock/Bazzar/Order.js.map +1 -0
- package/dist/structures/SkyBlock/Bazzar/Product.d.ts +19 -0
- package/dist/structures/SkyBlock/Bazzar/Product.js +33 -0
- package/dist/structures/SkyBlock/Bazzar/Product.js.map +1 -0
- package/dist/structures/SkyBlock/News/SkyblockNews.d.ts +10 -0
- package/dist/structures/SkyBlock/News/SkyblockNews.js +35 -0
- package/dist/structures/SkyBlock/News/SkyblockNews.js.map +1 -0
- package/dist/structures/SkyBlock/SkyblockGarden.d.ts +60 -0
- package/dist/structures/SkyBlock/SkyblockGarden.js +65 -0
- package/dist/structures/SkyBlock/SkyblockGarden.js.map +1 -0
- package/dist/structures/SkyBlock/SkyblockInventoryItem.d.ts +38 -0
- package/dist/structures/SkyBlock/SkyblockInventoryItem.js +83 -0
- package/dist/structures/SkyBlock/SkyblockInventoryItem.js.map +1 -0
- package/dist/structures/SkyBlock/SkyblockMember.d.ts +80 -0
- package/dist/structures/SkyBlock/SkyblockMember.js +288 -0
- package/dist/structures/SkyBlock/SkyblockMember.js.map +1 -0
- package/dist/structures/SkyBlock/SkyblockMuseum.d.ts +10 -0
- package/dist/structures/SkyBlock/SkyblockMuseum.js +35 -0
- package/dist/structures/SkyBlock/SkyblockMuseum.js.map +1 -0
- package/dist/structures/SkyBlock/SkyblockMuseumItem.d.ts +11 -0
- package/dist/structures/SkyBlock/SkyblockMuseumItem.js +30 -0
- package/dist/structures/SkyBlock/SkyblockMuseumItem.js.map +1 -0
- package/dist/structures/SkyBlock/SkyblockPet.d.ts +15 -0
- package/dist/structures/SkyBlock/SkyblockPet.js +33 -0
- package/dist/structures/SkyBlock/SkyblockPet.js.map +1 -0
- package/dist/structures/SkyBlock/SkyblockProfile.d.ts +14 -0
- package/dist/structures/SkyBlock/SkyblockProfile.js +42 -0
- package/dist/structures/SkyBlock/SkyblockProfile.js.map +1 -0
- package/dist/structures/SkyBlock/Static/Bingo.d.ts +16 -0
- package/dist/structures/SkyBlock/Static/Bingo.js +52 -0
- package/dist/structures/SkyBlock/Static/Bingo.js.map +1 -0
- package/dist/structures/SkyBlock/Static/BingoData.d.ts +10 -0
- package/dist/structures/SkyBlock/Static/BingoData.js +25 -0
- package/dist/structures/SkyBlock/Static/BingoData.js.map +1 -0
- package/dist/structures/SkyBlock/Static/Candidate.d.ts +11 -0
- package/dist/structures/SkyBlock/Static/Candidate.js +25 -0
- package/dist/structures/SkyBlock/Static/Candidate.js.map +1 -0
- package/dist/structures/SkyBlock/Static/FireSale.d.ts +12 -0
- package/dist/structures/SkyBlock/Static/FireSale.js +25 -0
- package/dist/structures/SkyBlock/Static/FireSale.js.map +1 -0
- package/dist/structures/SkyBlock/Static/Government.d.ts +13 -0
- package/dist/structures/SkyBlock/Static/Government.js +39 -0
- package/dist/structures/SkyBlock/Static/Government.js.map +1 -0
- package/dist/structures/SkyBlock/Static/Perk.d.ts +6 -0
- package/dist/structures/SkyBlock/Static/Perk.js +12 -0
- package/dist/structures/SkyBlock/Static/Perk.js.map +1 -0
- package/dist/structures/Static/Achievement.d.ts +14 -0
- package/dist/structures/Static/Achievement.js +50 -0
- package/dist/structures/Static/Achievement.js.map +1 -0
- package/dist/structures/Static/AchievementTier.d.ts +7 -0
- package/dist/structures/Static/AchievementTier.js +17 -0
- package/dist/structures/Static/AchievementTier.js.map +1 -0
- package/dist/structures/Static/Achievements.d.ts +9 -0
- package/dist/structures/Static/Achievements.js +21 -0
- package/dist/structures/Static/Achievements.js.map +1 -0
- package/dist/structures/Static/Challenges.d.ts +9 -0
- package/dist/structures/Static/Challenges.js +21 -0
- package/dist/structures/Static/Challenges.js.map +1 -0
- package/dist/structures/Static/GameAchievements.d.ts +10 -0
- package/dist/structures/Static/GameAchievements.js +20 -0
- package/dist/structures/Static/GameAchievements.js.map +1 -0
- package/dist/structures/Static/GameChallenges.d.ts +13 -0
- package/dist/structures/Static/GameChallenges.js +21 -0
- package/dist/structures/Static/GameChallenges.js.map +1 -0
- package/dist/structures/Static/GameQuests.d.ts +8 -0
- package/dist/structures/Static/GameQuests.js +16 -0
- package/dist/structures/Static/GameQuests.js.map +1 -0
- package/dist/structures/Static/GuildAchievements.d.ts +8 -0
- package/dist/structures/Static/GuildAchievements.js +21 -0
- package/dist/structures/Static/GuildAchievements.js.map +1 -0
- package/dist/structures/Static/Quest.d.ts +20 -0
- package/dist/structures/Static/Quest.js +27 -0
- package/dist/structures/Static/Quest.js.map +1 -0
- package/dist/structures/Static/Quests.d.ts +9 -0
- package/dist/structures/Static/Quests.js +21 -0
- package/dist/structures/Static/Quests.js.map +1 -0
- package/dist/structures/Status.d.ts +10 -0
- package/dist/structures/Status.js +23 -0
- package/dist/structures/Status.js.map +1 -0
- package/dist/structures/Watchdog/Stats.d.ts +9 -0
- package/dist/structures/Watchdog/Stats.js +18 -0
- package/dist/structures/Watchdog/Stats.js.map +1 -0
- package/dist/utils/Constants.d.ts +1017 -0
- package/dist/utils/Constants.js +2197 -0
- package/dist/utils/Constants.js.map +1 -0
- package/dist/utils/Guild.d.ts +15 -0
- package/dist/utils/Guild.js +85 -0
- package/dist/utils/Guild.js.map +1 -0
- package/dist/utils/Player.d.ts +8 -0
- package/dist/utils/Player.js +98 -0
- package/dist/utils/Player.js.map +1 -0
- package/dist/utils/SkyblockUtils.d.ts +131 -0
- package/dist/utils/SkyblockUtils.js +394 -0
- package/dist/utils/SkyblockUtils.js.map +1 -0
- package/dist/utils/divide.d.ts +1 -0
- package/dist/utils/divide.js +10 -0
- package/dist/utils/divide.js.map +1 -0
- package/dist/utils/isGuildID.d.ts +1 -0
- package/dist/utils/isGuildID.js +7 -0
- package/dist/utils/isGuildID.js.map +1 -0
- package/dist/utils/isUUID.d.ts +1 -0
- package/dist/utils/isUUID.js +9 -0
- package/dist/utils/isUUID.js.map +1 -0
- package/dist/utils/oscillation.d.ts +2 -0
- package/dist/utils/oscillation.js +15 -0
- package/dist/utils/oscillation.js.map +1 -0
- package/dist/utils/removeSnakeCase.d.ts +3 -0
- package/dist/utils/removeSnakeCase.js +20 -0
- package/dist/utils/removeSnakeCase.js.map +1 -0
- package/dist/utils/romanize.d.ts +1 -0
- package/dist/utils/romanize.js +45 -0
- package/dist/utils/romanize.js.map +1 -0
- package/{eslint.config.mjs → eslint.config.js} +16 -14
- package/package.json +32 -25
- package/renovate.json +21 -0
- package/src/API/API.d.ts +16 -0
- package/src/API/getAchievements.test.ts +81 -0
- package/src/API/getAchievements.ts +20 -0
- package/src/API/getActiveHouses.test.ts +45 -0
- package/src/API/getActiveHouses.ts +20 -0
- package/src/API/getBoosters.test.ts +53 -0
- package/src/API/getBoosters.ts +20 -0
- package/src/API/getChallenges.test.ts +54 -0
- package/src/API/getChallenges.ts +19 -0
- package/src/API/getGameCounts.test.ts +28 -0
- package/src/API/getGameCounts.ts +20 -0
- package/src/API/getGuild.test.ts +478 -0
- package/src/API/getGuild.ts +35 -0
- package/src/API/getGuildAchievements.test.ts +59 -0
- package/src/API/getGuildAchievements.ts +20 -0
- package/src/API/getHouse.test.ts +55 -0
- package/src/API/getHouse.ts +21 -0
- package/src/API/getLeaderboards.test.ts +41 -0
- package/src/API/getLeaderboards.ts +30 -0
- package/src/API/getPlayer.test.ts +494 -0
- package/src/API/getPlayer.ts +33 -0
- package/src/API/getPlayerHouses.test.ts +53 -0
- package/src/API/getPlayerHouses.ts +22 -0
- package/src/API/getQuests.test.ts +51 -0
- package/src/API/getQuests.ts +20 -0
- package/src/API/getRecentGames.test.ts +51 -0
- package/src/API/getRecentGames.ts +22 -0
- package/src/API/getSkyblockAuction.test.ts +293 -0
- package/src/API/getSkyblockAuction.ts +36 -0
- package/src/API/getSkyblockAuctions.test.ts +346 -0
- package/src/API/getSkyblockAuctions.ts +59 -0
- package/src/API/getSkyblockAuctionsByPlayer.test.ts +249 -0
- package/src/API/getSkyblockAuctionsByPlayer.ts +22 -0
- package/src/API/getSkyblockBazaar.test.ts +52 -0
- package/src/API/getSkyblockBazaar.ts +20 -0
- package/src/API/getSkyblockBingo.test.ts +42 -0
- package/src/API/getSkyblockBingo.ts +20 -0
- package/src/API/getSkyblockFireSales.test.ts +43 -0
- package/src/API/getSkyblockFireSales.ts +20 -0
- package/src/API/getSkyblockGarden.test.ts +60 -0
- package/src/API/getSkyblockGarden.ts +21 -0
- package/src/API/getSkyblockGovernment.test.ts +78 -0
- package/src/API/getSkyblockGovernment.ts +20 -0
- package/src/API/getSkyblockMember.test.ts +308 -0
- package/src/API/getSkyblockMember.ts +45 -0
- package/src/API/getSkyblockMuseum.test.ts +91 -0
- package/src/API/getSkyblockMuseum.ts +22 -0
- package/src/API/getSkyblockNews.test.ts +45 -0
- package/src/API/getSkyblockNews.ts +20 -0
- package/src/API/getSkyblockProfiles.test.ts +164 -0
- package/src/API/getSkyblockProfiles.ts +43 -0
- package/src/API/getStatus.test.ts +42 -0
- package/src/API/getStatus.ts +21 -0
- package/src/API/getWatchdogStats.test.ts +44 -0
- package/src/API/getWatchdogStats.ts +20 -0
- package/src/API/index.ts +56 -0
- package/src/Client.test.ts +148 -0
- package/src/Client.ts +91 -0
- package/src/Errors.ts +42 -0
- package/src/Private/CacheHandler.test.ts +49 -0
- package/src/Private/CacheHandler.ts +41 -0
- package/src/Private/Endpoint.test.ts +23 -0
- package/src/Private/Endpoint.ts +14 -0
- package/src/Private/RateLimit.test.ts +99 -0
- package/src/Private/RateLimit.ts +38 -0
- package/src/Private/Requests.test.ts +59 -0
- package/src/Private/Requests.ts +128 -0
- package/src/Private/Updater.test.ts +68 -0
- package/src/Private/Updater.ts +48 -0
- package/src/index.ts +119 -0
- package/src/structures/Boosters/Booster.ts +40 -0
- package/src/structures/Color.ts +79 -0
- package/src/structures/Game.ts +147 -0
- package/src/structures/GameCounts.ts +26 -0
- package/src/structures/Guild/Guild.ts +67 -0
- package/src/structures/Guild/GuildMember.ts +33 -0
- package/src/structures/Guild/GuildRank.ts +22 -0
- package/src/structures/House.ts +24 -0
- package/src/structures/ItemBytes.ts +18 -0
- package/src/structures/Leaderboard.ts +14 -0
- package/src/structures/MiniGames/Arcade.ts +460 -0
- package/src/structures/MiniGames/ArenaBrawl.ts +51 -0
- package/src/structures/MiniGames/{BedWars.js → BedWars.ts} +198 -298
- package/src/structures/MiniGames/BlitzSurvivalGames.ts +173 -0
- package/src/structures/MiniGames/BuildBattle.ts +36 -0
- package/src/structures/MiniGames/CopsAndCrims.ts +131 -0
- package/src/structures/MiniGames/{Duels.js → Duels.ts} +200 -737
- package/src/structures/MiniGames/MegaWalls.ts +197 -0
- package/src/structures/MiniGames/MurderMystery.ts +87 -0
- package/src/structures/MiniGames/Paintball.ts +38 -0
- package/src/structures/MiniGames/Pit.ts +139 -0
- package/src/structures/MiniGames/PitInventoryItem.ts +18 -0
- package/src/structures/MiniGames/Quakecraft.ts +70 -0
- package/src/structures/MiniGames/SkyWars.ts +288 -0
- package/src/structures/MiniGames/SmashHeroes.ts +114 -0
- package/src/structures/MiniGames/SpeedUHC.ts +71 -0
- package/src/structures/MiniGames/TNTGames.ts +126 -0
- package/src/structures/MiniGames/TurboKartRacers.ts +59 -0
- package/src/structures/MiniGames/{UHC.js → UHC.ts} +32 -114
- package/src/structures/MiniGames/VampireZ.ts +41 -0
- package/src/structures/MiniGames/Walls.ts +24 -0
- package/src/structures/MiniGames/Warlords.ts +79 -0
- package/src/structures/MiniGames/WoolWars.ts +106 -0
- package/src/structures/Pet.ts +40 -0
- package/src/structures/Pets.ts +46 -0
- package/src/structures/Player.ts +199 -0
- package/src/structures/{PlayerCosmetics.js → PlayerCosmetics.ts} +36 -63
- package/src/structures/RecentGame.ts +27 -0
- package/src/structures/ServerInfo.ts +40 -0
- package/src/structures/SkyBlock/Auctions/Auction.ts +43 -0
- package/src/structures/SkyBlock/Auctions/AuctionInfo.ts +20 -0
- package/src/structures/SkyBlock/Auctions/BaseAuction.ts +22 -0
- package/src/structures/SkyBlock/Auctions/Bid.ts +22 -0
- package/src/structures/SkyBlock/Bazzar/Order.ts +18 -0
- package/src/structures/SkyBlock/Bazzar/Product.ts +40 -0
- package/src/structures/SkyBlock/News/SkyblockNews.ts +35 -0
- package/src/structures/SkyBlock/SkyblockGarden.ts +118 -0
- package/src/structures/SkyBlock/SkyblockInventoryItem.ts +83 -0
- package/src/structures/SkyBlock/SkyblockMember.ts +317 -0
- package/src/structures/SkyBlock/SkyblockMuseum.ts +43 -0
- package/src/structures/SkyBlock/SkyblockMuseumItem.ts +26 -0
- package/src/structures/SkyBlock/SkyblockPet.ts +30 -0
- package/src/structures/SkyBlock/SkyblockProfile.ts +42 -0
- package/src/structures/SkyBlock/Static/Bingo.ts +50 -0
- package/src/structures/SkyBlock/Static/BingoData.ts +21 -0
- package/src/structures/SkyBlock/Static/Candidate.ts +22 -0
- package/src/structures/SkyBlock/Static/FireSale.ts +24 -0
- package/src/structures/SkyBlock/Static/Government.ts +42 -0
- package/src/structures/SkyBlock/Static/Perk.ts +10 -0
- package/src/structures/Static/Achievement.ts +49 -0
- package/src/structures/Static/AchievementTier.ts +18 -0
- package/src/structures/Static/Achievements.ts +20 -0
- package/src/structures/Static/Challenges.ts +20 -0
- package/src/structures/Static/GameAchievements.ts +19 -0
- package/src/structures/Static/GameChallenges.ts +28 -0
- package/src/structures/Static/GameQuests.ts +13 -0
- package/src/structures/Static/GuildAchievements.ts +19 -0
- package/src/structures/Static/Quest.ts +37 -0
- package/src/structures/Static/Quests.ts +20 -0
- package/src/structures/Status.ts +20 -0
- package/src/structures/Watchdog/Stats.ts +16 -0
- package/src/typings/index.d.ts +24 -0
- package/src/utils/{Constants.js → Constants.ts} +201 -1248
- package/src/utils/Guild.ts +90 -0
- package/src/utils/Player.ts +93 -0
- package/src/utils/SkyblockUtils.test.ts +9 -0
- package/src/utils/SkyblockUtils.ts +516 -0
- package/src/utils/divide.test.ts +13 -0
- package/src/utils/{divide.js → divide.ts} +2 -2
- package/src/utils/isGuildID.test.ts +19 -0
- package/src/utils/isGuildID.ts +3 -0
- package/src/utils/isUUID.test.ts +35 -0
- package/src/utils/{isUUID.js → isUUID.ts} +2 -2
- package/src/utils/oscillation.ts +11 -0
- package/src/utils/removeSnakeCase.ts +18 -0
- package/src/utils/romanize.test.ts +9 -0
- package/src/utils/{romanize.js → romanize.ts} +3 -4
- package/tsconfig.json +25 -0
- package/vitest.config.ts +8 -0
- package/vitest.setup.ts +2 -0
- package/src/API/getAPIStatus.js +0 -8
- package/src/API/getAchievements.js +0 -7
- package/src/API/getBoosters.js +0 -7
- package/src/API/getChallenges.js +0 -7
- package/src/API/getGameCounts.js +0 -7
- package/src/API/getGuild.js +0 -19
- package/src/API/getGuildAchievements.js +0 -7
- package/src/API/getLeaderboards.js +0 -15
- package/src/API/getPlayer.js +0 -23
- package/src/API/getQuests.js +0 -7
- package/src/API/getRecentGames.js +0 -14
- package/src/API/getServerInfo.js +0 -71
- package/src/API/getStatus.js +0 -9
- package/src/API/getWatchdogStats.js +0 -7
- package/src/API/housing/getActiveHouses.js +0 -7
- package/src/API/housing/getHouse.js +0 -9
- package/src/API/housing/getPlayerHouses.js +0 -11
- package/src/API/index.js +0 -35
- package/src/API/skyblock/getAuction.js +0 -21
- package/src/API/skyblock/getAuctions.js +0 -74
- package/src/API/skyblock/getAuctionsByPlayer.js +0 -11
- package/src/API/skyblock/getBazaar.js +0 -8
- package/src/API/skyblock/getBingo.js +0 -7
- package/src/API/skyblock/getBingoByPlayer.js +0 -14
- package/src/API/skyblock/getEndedAuctions.js +0 -11
- package/src/API/skyblock/getFireSales.js +0 -7
- package/src/API/skyblock/getGarden.js +0 -11
- package/src/API/skyblock/getGovernment.js +0 -7
- package/src/API/skyblock/getMember.js +0 -35
- package/src/API/skyblock/getMuseum.js +0 -15
- package/src/API/skyblock/getNews.js +0 -7
- package/src/API/skyblock/getProfiles.js +0 -49
- package/src/Client.js +0 -547
- package/src/Errors.js +0 -66
- package/src/Private/defaultCache.js +0 -77
- package/src/Private/rateLimit.js +0 -83
- package/src/Private/requests.js +0 -76
- package/src/Private/updater.js +0 -34
- package/src/Private/uuidCache.js +0 -30
- package/src/Private/validate.js +0 -108
- package/src/index.js +0 -96
- package/src/structures/APIIncident.js +0 -71
- package/src/structures/APIStatus.js +0 -46
- package/src/structures/Boosters/Booster.js +0 -84
- package/src/structures/Color.js +0 -174
- package/src/structures/Game.js +0 -166
- package/src/structures/GameCounts.js +0 -151
- package/src/structures/Guild/Guild.js +0 -191
- package/src/structures/Guild/GuildMember.js +0 -66
- package/src/structures/Guild/GuildRank.js +0 -48
- package/src/structures/House.js +0 -54
- package/src/structures/ItemBytes.js +0 -33
- package/src/structures/Leaderboard.js +0 -31
- package/src/structures/MiniGames/Arcade.js +0 -1058
- package/src/structures/MiniGames/ArenaBrawl.js +0 -118
- package/src/structures/MiniGames/BlitzSurvivalGames.js +0 -424
- package/src/structures/MiniGames/BuildBattle.js +0 -64
- package/src/structures/MiniGames/CopsAndCrims.js +0 -318
- package/src/structures/MiniGames/MegaWalls.js +0 -478
- package/src/structures/MiniGames/MurderMystery.js +0 -214
- package/src/structures/MiniGames/Paintball.js +0 -87
- package/src/structures/MiniGames/Pit.js +0 -247
- package/src/structures/MiniGames/PitInventoryItem.js +0 -43
- package/src/structures/MiniGames/Quakecraft.js +0 -164
- package/src/structures/MiniGames/SkyWars.js +0 -669
- package/src/structures/MiniGames/SmashHeroes.js +0 -272
- package/src/structures/MiniGames/SpeedUHC.js +0 -168
- package/src/structures/MiniGames/TNTGames.js +0 -285
- package/src/structures/MiniGames/TurboKartRacers.js +0 -141
- package/src/structures/MiniGames/VampireZ.js +0 -93
- package/src/structures/MiniGames/Walls.js +0 -52
- package/src/structures/MiniGames/Warlords.js +0 -187
- package/src/structures/MiniGames/WoolWars.js +0 -174
- package/src/structures/Pet.js +0 -96
- package/src/structures/Pets.js +0 -64
- package/src/structures/Player.js +0 -346
- package/src/structures/RecentGame.js +0 -57
- package/src/structures/ServerInfo.js +0 -78
- package/src/structures/SkyBlock/Auctions/Auction.js +0 -106
- package/src/structures/SkyBlock/Auctions/AuctionInfo.js +0 -56
- package/src/structures/SkyBlock/Auctions/BaseAuction.js +0 -46
- package/src/structures/SkyBlock/Auctions/Bid.js +0 -49
- package/src/structures/SkyBlock/Auctions/PartialAuction.js +0 -26
- package/src/structures/SkyBlock/Bazzar/Order.js +0 -38
- package/src/structures/SkyBlock/Bazzar/Product.js +0 -53
- package/src/structures/SkyBlock/News/SkyblockNews.js +0 -60
- package/src/structures/SkyBlock/PlayerBingo.js +0 -49
- package/src/structures/SkyBlock/SkyblockGarden.js +0 -146
- package/src/structures/SkyBlock/SkyblockInventoryItem.js +0 -168
- package/src/structures/SkyBlock/SkyblockMember.js +0 -591
- package/src/structures/SkyBlock/SkyblockMuseum.js +0 -60
- package/src/structures/SkyBlock/SkyblockMuseumItem.js +0 -54
- package/src/structures/SkyBlock/SkyblockPet.js +0 -71
- package/src/structures/SkyBlock/SkyblockProfile.js +0 -81
- package/src/structures/SkyBlock/Static/Bingo.js +0 -101
- package/src/structures/SkyBlock/Static/BingoData.js +0 -45
- package/src/structures/SkyBlock/Static/Candidate.js +0 -50
- package/src/structures/SkyBlock/Static/FireSale.js +0 -55
- package/src/structures/SkyBlock/Static/Government.js +0 -79
- package/src/structures/SkyBlock/Static/Perk.js +0 -23
- package/src/structures/Static/Achievement.js +0 -87
- package/src/structures/Static/AchievementTier.js +0 -33
- package/src/structures/Static/Achievements.js +0 -30
- package/src/structures/Static/Challenges.js +0 -29
- package/src/structures/Static/GameAchievements.js +0 -36
- package/src/structures/Static/GameChallenges.js +0 -40
- package/src/structures/Static/GameQuests.js +0 -24
- package/src/structures/Static/GuildAchievements.js +0 -34
- package/src/structures/Static/Quest.js +0 -66
- package/src/structures/Static/Quests.js +0 -31
- package/src/structures/Status.js +0 -41
- package/src/structures/Watchdog/Stats.js +0 -36
- package/src/utils/Guild.js +0 -90
- package/src/utils/Player.js +0 -112
- package/src/utils/SkyblockUtils.js +0 -667
- package/src/utils/arrayTools.js +0 -4
- package/src/utils/index.js +0 -14
- package/src/utils/isGuildID.js +0 -3
- package/src/utils/oscillation.js +0 -17
- package/src/utils/removeSnakeCase.js +0 -33
- package/src/utils/rgbToHexColor.js +0 -8
- package/src/utils/toUuid.js +0 -24
- package/src/utils/varInt.js +0 -17
- package/typings/index.d.ts +0 -4297
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import CacheHandler from './CacheHandler';
|
|
2
|
+
import Client from '../Client';
|
|
3
|
+
import NodeCache from 'node-cache';
|
|
4
|
+
import { expect, expectTypeOf, test } from 'vitest';
|
|
5
|
+
|
|
6
|
+
test('CacheHandler', () => {
|
|
7
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '');
|
|
8
|
+
expect(client).toBeDefined();
|
|
9
|
+
expectTypeOf(client).toEqualTypeOf<Client>();
|
|
10
|
+
|
|
11
|
+
expect(client.cacheHandler).toBeDefined();
|
|
12
|
+
expectTypeOf(client.cacheHandler).toEqualTypeOf<CacheHandler>();
|
|
13
|
+
|
|
14
|
+
expect(client.cacheHandler.cache).toBeDefined();
|
|
15
|
+
expectTypeOf(client.cacheHandler.cache).toEqualTypeOf<NodeCache>();
|
|
16
|
+
|
|
17
|
+
expect(client.cacheHandler.set).toBeDefined();
|
|
18
|
+
expectTypeOf(client.cacheHandler.set).toBeFunction();
|
|
19
|
+
expect(() => client.cacheHandler.set('test', 'value')).not.toThrow();
|
|
20
|
+
|
|
21
|
+
expect(client.cacheHandler.get).toBeDefined();
|
|
22
|
+
expectTypeOf(client.cacheHandler.get).toBeFunction();
|
|
23
|
+
expect(() => client.cacheHandler.has('test')).not.toThrow();
|
|
24
|
+
expect(client.cacheHandler.has('test')).toBe(true);
|
|
25
|
+
|
|
26
|
+
expect(client.cacheHandler.get).toBeDefined();
|
|
27
|
+
expectTypeOf(client.cacheHandler.get).toBeFunction();
|
|
28
|
+
expect(() => client.cacheHandler.get('test')).not.toThrow();
|
|
29
|
+
expect(client.cacheHandler.get('test')).toBe('value');
|
|
30
|
+
|
|
31
|
+
expect(client.cacheHandler.keys).toBeDefined();
|
|
32
|
+
expectTypeOf(client.cacheHandler.keys).toBeFunction();
|
|
33
|
+
expect(() => client.cacheHandler.keys()).not.toThrow();
|
|
34
|
+
expect(client.cacheHandler.keys()).toEqual(['test']);
|
|
35
|
+
expectTypeOf(client.cacheHandler.keys()).toEqualTypeOf<string[]>();
|
|
36
|
+
|
|
37
|
+
expect(client.cacheHandler.size).toBeDefined();
|
|
38
|
+
expectTypeOf(client.cacheHandler.size).toBeFunction();
|
|
39
|
+
expect(() => client.cacheHandler.size()).not.toThrow();
|
|
40
|
+
expect(client.cacheHandler.size()).toBe(1);
|
|
41
|
+
expectTypeOf(client.cacheHandler.size()).toEqualTypeOf<number>();
|
|
42
|
+
|
|
43
|
+
expect(client.cacheHandler.clear).toBeDefined();
|
|
44
|
+
expectTypeOf(client.cacheHandler.clear).toBeFunction();
|
|
45
|
+
expect(() => client.cacheHandler.clear()).not.toThrow();
|
|
46
|
+
expect(client.cacheHandler.size()).toBe(0);
|
|
47
|
+
|
|
48
|
+
client.destroy();
|
|
49
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import Client from '../Client';
|
|
2
|
+
import NodeCache from 'node-cache';
|
|
3
|
+
|
|
4
|
+
class CacheHandler {
|
|
5
|
+
readonly client: Client;
|
|
6
|
+
declare cache: NodeCache;
|
|
7
|
+
constructor(client: Client) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
this.cache = new NodeCache({
|
|
10
|
+
stdTTL: this.client.options.cacheTime,
|
|
11
|
+
maxKeys: this.client.options.cacheMaxKeys,
|
|
12
|
+
checkperiod: this.client.options.cacheCheckPeriod
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
set(key: string, value: any): any {
|
|
17
|
+
return this.cache.set(key, value);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
has(key: string): boolean {
|
|
21
|
+
return this.cache.has(key);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
get(key: string): any {
|
|
25
|
+
return this.cache.get(key);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
keys(): string[] {
|
|
29
|
+
return this.cache.keys();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
size(): number {
|
|
33
|
+
return this.cache.keys().length;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
clear(): void {
|
|
37
|
+
this.cache.flushAll();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export default CacheHandler;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import Client from '../Client';
|
|
2
|
+
import Endpoint from './Endpoint';
|
|
3
|
+
import { expect, expectTypeOf, test } from 'vitest';
|
|
4
|
+
|
|
5
|
+
test('Endpoint', () => {
|
|
6
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '');
|
|
7
|
+
expect(client).toBeDefined();
|
|
8
|
+
expectTypeOf(client).toEqualTypeOf<Client>();
|
|
9
|
+
|
|
10
|
+
const endpoint = new Endpoint(client);
|
|
11
|
+
|
|
12
|
+
expect(endpoint).toBeDefined();
|
|
13
|
+
expectTypeOf(endpoint).toEqualTypeOf<Endpoint>();
|
|
14
|
+
|
|
15
|
+
expect(endpoint.client).toBeDefined();
|
|
16
|
+
expectTypeOf(endpoint.client).toEqualTypeOf<Client>();
|
|
17
|
+
|
|
18
|
+
expect(endpoint.execute).toBeDefined();
|
|
19
|
+
expectTypeOf(endpoint.execute).toBeFunction();
|
|
20
|
+
expect(() => endpoint.execute()).toThrowError(client.errors.NOT_IMPLEMENTED);
|
|
21
|
+
|
|
22
|
+
client.destroy();
|
|
23
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Client from '../Client';
|
|
2
|
+
|
|
3
|
+
class Endpoint {
|
|
4
|
+
readonly client: Client;
|
|
5
|
+
constructor(client: Client) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
execute(...args: any[]): Promise<any> | any {
|
|
10
|
+
throw new Error(this.client.errors.NOT_IMPLEMENTED);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default Endpoint;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import Client from '../Client';
|
|
2
|
+
import RateLimit from './RateLimit';
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
import { expect, expectTypeOf, test, vi } from 'vitest';
|
|
5
|
+
|
|
6
|
+
test('RateLimit (None)', () => {
|
|
7
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '', { rateLimit: 'NONE' });
|
|
8
|
+
expect(client).toBeDefined();
|
|
9
|
+
expectTypeOf(client).toEqualTypeOf<Client>();
|
|
10
|
+
|
|
11
|
+
expect(client.rateLimit).toBeDefined();
|
|
12
|
+
expectTypeOf(client.rateLimit).toEqualTypeOf<RateLimit>();
|
|
13
|
+
|
|
14
|
+
expect(client.rateLimit.requests).toBe(0);
|
|
15
|
+
expectTypeOf(client.rateLimit.requests).toEqualTypeOf<number>();
|
|
16
|
+
expect(client.rateLimit.limit).toBe(0);
|
|
17
|
+
expectTypeOf(client.rateLimit.limit).toEqualTypeOf<number>();
|
|
18
|
+
expect(client.rateLimit.initialized).toBe(false);
|
|
19
|
+
expectTypeOf(client.rateLimit.initialized).toEqualTypeOf<boolean>();
|
|
20
|
+
|
|
21
|
+
expect(client.rateLimit.sync).toBeDefined();
|
|
22
|
+
expectTypeOf(client.rateLimit.sync).toBeFunction();
|
|
23
|
+
expect(() => client.rateLimit.sync()).not.toThrow();
|
|
24
|
+
|
|
25
|
+
expect(client.rateLimit.reset).toBeDefined();
|
|
26
|
+
expectTypeOf(client.rateLimit.reset).toBeFunction();
|
|
27
|
+
expect(() => client.rateLimit.reset()).not.toThrow();
|
|
28
|
+
|
|
29
|
+
expect(client.rateLimit.initialize).toBeDefined();
|
|
30
|
+
expectTypeOf(client.rateLimit.initialize).toBeFunction();
|
|
31
|
+
expect(() => client.rateLimit.initialize()).not.toThrow();
|
|
32
|
+
|
|
33
|
+
client.destroy();
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test('RateLimit (Auto)', async () => {
|
|
37
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '', { rateLimit: 'NONE' });
|
|
38
|
+
expect(client).toBeDefined();
|
|
39
|
+
expectTypeOf(client).toEqualTypeOf<Client>();
|
|
40
|
+
|
|
41
|
+
expect(client.rateLimit).toBeDefined();
|
|
42
|
+
expectTypeOf(client.rateLimit).toEqualTypeOf<RateLimit>();
|
|
43
|
+
await client.rateLimit.initialize();
|
|
44
|
+
|
|
45
|
+
expect(client.rateLimit.requests).greaterThan(0);
|
|
46
|
+
expectTypeOf(client.rateLimit.requests).toEqualTypeOf<number>();
|
|
47
|
+
expect(client.rateLimit.limit).toBe(300);
|
|
48
|
+
expectTypeOf(client.rateLimit.limit).toEqualTypeOf<number>();
|
|
49
|
+
expect(client.rateLimit.initialized).toBe(true);
|
|
50
|
+
expectTypeOf(client.rateLimit.initialized).toEqualTypeOf<boolean>();
|
|
51
|
+
|
|
52
|
+
expect(client.rateLimit.sync).toBeDefined();
|
|
53
|
+
expectTypeOf(client.rateLimit.sync).toBeFunction();
|
|
54
|
+
expect(() => client.rateLimit.sync()).not.toThrow();
|
|
55
|
+
|
|
56
|
+
expect(client.rateLimit.reset).toBeDefined();
|
|
57
|
+
expectTypeOf(client.rateLimit.reset).toBeFunction();
|
|
58
|
+
expect(() => client.rateLimit.reset()).not.toThrow();
|
|
59
|
+
|
|
60
|
+
expect(client.rateLimit.initialize).toBeDefined();
|
|
61
|
+
expectTypeOf(client.rateLimit.initialize).toBeFunction();
|
|
62
|
+
expect(() => client.rateLimit.initialize()).not.toThrow();
|
|
63
|
+
|
|
64
|
+
client.destroy();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
test('Ratelimit (Sync)', async () => {
|
|
68
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '');
|
|
69
|
+
client.updater.currentVersion = '1.0.0';
|
|
70
|
+
const mockRequest = {
|
|
71
|
+
status: 200,
|
|
72
|
+
data: { success: true },
|
|
73
|
+
headers: {
|
|
74
|
+
'ratelimit-limit': 30,
|
|
75
|
+
'ratelimit-remaining': 27
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
vi.spyOn(axios, 'get').mockResolvedValue(mockRequest);
|
|
79
|
+
expect(() => client.rateLimit.sync()).not.toThrowError();
|
|
80
|
+
await client.rateLimit.sync();
|
|
81
|
+
expect(client.rateLimit.requests).toBe(3);
|
|
82
|
+
expect(client.rateLimit.limit).toBe(30);
|
|
83
|
+
vi.restoreAllMocks();
|
|
84
|
+
client.destroy();
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
test('Ratelimit (Bad Sync Data)', () => {
|
|
88
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '');
|
|
89
|
+
client.updater.currentVersion = '1.0.0';
|
|
90
|
+
const mockRequest = {
|
|
91
|
+
status: 200,
|
|
92
|
+
data: { success: true },
|
|
93
|
+
headers: { hello: 100 }
|
|
94
|
+
};
|
|
95
|
+
vi.spyOn(axios, 'get').mockResolvedValue(mockRequest);
|
|
96
|
+
expect(() => client.rateLimit.sync()).rejects.toThrowError(client.errors.RATE_LIMIT_INIT_ERROR);
|
|
97
|
+
vi.restoreAllMocks();
|
|
98
|
+
client.destroy();
|
|
99
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import Client from '../Client';
|
|
2
|
+
|
|
3
|
+
class RateLimit {
|
|
4
|
+
readonly client: Client;
|
|
5
|
+
declare requests: number;
|
|
6
|
+
declare limit: number;
|
|
7
|
+
declare initialized: boolean;
|
|
8
|
+
declare interval: NodeJS.Timeout;
|
|
9
|
+
constructor(client: Client) {
|
|
10
|
+
this.client = client;
|
|
11
|
+
this.requests = 0;
|
|
12
|
+
this.limit = 0;
|
|
13
|
+
this.initialized = false;
|
|
14
|
+
this.interval = setInterval(() => this.reset(), 300000);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
async sync() {
|
|
18
|
+
const { headers } = await this.client.requests.request('/boosters', { raw: true });
|
|
19
|
+
if (headers?.['ratelimit-limit'] === undefined || headers?.['ratelimit-remaining'] === undefined) {
|
|
20
|
+
throw new Error(this.client.errors.RATE_LIMIT_INIT_ERROR);
|
|
21
|
+
}
|
|
22
|
+
this.requests = headers['ratelimit-limit'] - headers['ratelimit-remaining'];
|
|
23
|
+
this.limit = Number(headers['ratelimit-limit']);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
reset() {
|
|
27
|
+
if (false === this.initialized) return;
|
|
28
|
+
this.requests = 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async initialize() {
|
|
32
|
+
if (this.initialized) return;
|
|
33
|
+
await this.sync();
|
|
34
|
+
this.initialized = true;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default RateLimit;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import Client from '../Client';
|
|
2
|
+
import Requests from './Requests';
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
import { expect, expectTypeOf, test, vi } from 'vitest';
|
|
5
|
+
|
|
6
|
+
test('Requests', async () => {
|
|
7
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '');
|
|
8
|
+
expect(client).toBeDefined();
|
|
9
|
+
expectTypeOf(client).toEqualTypeOf<Client>();
|
|
10
|
+
|
|
11
|
+
expect(client.requests).toBeDefined();
|
|
12
|
+
expectTypeOf(client.requests).toEqualTypeOf<Requests>();
|
|
13
|
+
|
|
14
|
+
expect(client.requests.toUUID).toBeDefined();
|
|
15
|
+
expectTypeOf(client.requests.toUUID).toBeFunction();
|
|
16
|
+
const data = await client.requests.toUUID('pixelic');
|
|
17
|
+
expect(data).toBe('14727faefbdc4aff848cd2713eb9939e');
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
19
|
+
// @ts-expect-error
|
|
20
|
+
expect(() => client.requests.toUUID()).rejects.toThrowError(client.errors.NO_NICKNAME_UUID);
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
22
|
+
// @ts-expect-error
|
|
23
|
+
expect(() => client.requests.toUUID(-1)).rejects.toThrowError(client.errors.UUID_NICKNAME_MUST_BE_A_STRING);
|
|
24
|
+
|
|
25
|
+
client.destroy();
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('Requests (Invalid API Key)', () => {
|
|
29
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '');
|
|
30
|
+
expect(client.requests.request).toBeDefined();
|
|
31
|
+
expectTypeOf(client.requests.request).toBeFunction();
|
|
32
|
+
const mockRequest = { status: 403, data: {} };
|
|
33
|
+
vi.spyOn(axios, 'get').mockResolvedValue(mockRequest);
|
|
34
|
+
expect(() => client.requests.request('/boosters')).rejects.toThrowError(client.errors.INVALID_API_KEY);
|
|
35
|
+
vi.restoreAllMocks();
|
|
36
|
+
client.destroy();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test('Requests (Unprocessable Entity)', () => {
|
|
40
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '');
|
|
41
|
+
expect(client.requests.request).toBeDefined();
|
|
42
|
+
expectTypeOf(client.requests.request).toBeFunction();
|
|
43
|
+
const mockRequest = { status: 422, data: {} };
|
|
44
|
+
vi.spyOn(axios, 'get').mockResolvedValue(mockRequest);
|
|
45
|
+
expect(() => client.requests.request('/boosters')).rejects.toThrowError(client.errors.UNEXPECTED_ERROR);
|
|
46
|
+
vi.restoreAllMocks();
|
|
47
|
+
client.destroy();
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test('Requests (Rate Limited)', () => {
|
|
51
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '');
|
|
52
|
+
expect(client.requests.request).toBeDefined();
|
|
53
|
+
expectTypeOf(client.requests.request).toBeFunction();
|
|
54
|
+
const mockRequest = { status: 429, data: {} };
|
|
55
|
+
vi.spyOn(axios, 'get').mockResolvedValue(mockRequest);
|
|
56
|
+
expect(() => client.requests.request('/boosters')).rejects.toThrowError(client.errors.RATE_LIMIT_EXCEEDED);
|
|
57
|
+
vi.restoreAllMocks();
|
|
58
|
+
client.destroy();
|
|
59
|
+
});
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
const BASE_URL = 'https://api.hypixel.net/v2';
|
|
2
|
+
import Client from '../Client';
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
import isUUID from '../utils/isUUID';
|
|
5
|
+
|
|
6
|
+
export interface RequestOptions {
|
|
7
|
+
raw?: boolean;
|
|
8
|
+
noCache?: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
class RequestData {
|
|
12
|
+
readonly data: any;
|
|
13
|
+
readonly headers: Record<string, any>;
|
|
14
|
+
readonly statusCode: number;
|
|
15
|
+
readonly options: RequestOptions;
|
|
16
|
+
readonly requestTimestamp: number;
|
|
17
|
+
readonly requestAt: Date;
|
|
18
|
+
readonly requestUrl: string;
|
|
19
|
+
readonly cached: boolean;
|
|
20
|
+
constructor(
|
|
21
|
+
data: Record<string, any>,
|
|
22
|
+
headers: Record<string, any>,
|
|
23
|
+
info: { status: number; url: string; options: RequestOptions; cached: boolean; timestamp?: number }
|
|
24
|
+
) {
|
|
25
|
+
this.data = data;
|
|
26
|
+
this.headers = headers;
|
|
27
|
+
this.statusCode = info.status;
|
|
28
|
+
this.options = info.options;
|
|
29
|
+
this.requestTimestamp = info.timestamp || Date.now();
|
|
30
|
+
this.requestAt = new Date(this.requestTimestamp);
|
|
31
|
+
this.requestUrl = info.url;
|
|
32
|
+
this.cached = info.cached;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
class Requests {
|
|
37
|
+
readonly client: Client;
|
|
38
|
+
constructor(client: Client) {
|
|
39
|
+
this.client = client;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async request(endpoint: string, options?: RequestOptions): Promise<RequestData> {
|
|
43
|
+
options = { raw: options?.raw ?? false, noCache: options?.noCache ?? false };
|
|
44
|
+
if (this.client.cacheHandler.has(endpoint)) {
|
|
45
|
+
const data = this.client.cacheHandler.get(endpoint);
|
|
46
|
+
return new RequestData(data.data, data.headers, {
|
|
47
|
+
status: 200,
|
|
48
|
+
options,
|
|
49
|
+
url: endpoint,
|
|
50
|
+
cached: true,
|
|
51
|
+
timestamp: data.timestamp
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const res = await axios.get(BASE_URL + endpoint, { headers: { 'API-Key': this.client.key } });
|
|
55
|
+
if (500 <= res.status && 528 > res.status) {
|
|
56
|
+
throw new Error(
|
|
57
|
+
this.client.errors.ERROR_STATUSTEXT.replace(/{statustext}/, `Server Error : ${res.status} ${res.statusText}`)
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
const parsedRes = await res.data;
|
|
61
|
+
if (400 === res.status) {
|
|
62
|
+
throw new Error(
|
|
63
|
+
this.client.errors.ERROR_CODE_CAUSE.replace(/{code}/, '400 Bad Request').replace(
|
|
64
|
+
/{cause}/,
|
|
65
|
+
parsedRes.cause || ''
|
|
66
|
+
)
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
if (403 === res.status) throw new Error(this.client.errors.INVALID_API_KEY);
|
|
70
|
+
if (422 === res.status) throw new Error(this.client.errors.UNEXPECTED_ERROR);
|
|
71
|
+
if (429 === res.status) throw new Error(this.client.errors.RATE_LIMIT_EXCEEDED);
|
|
72
|
+
if (200 !== res.status) {
|
|
73
|
+
throw new Error(this.client.errors.ERROR_STATUSTEXT.replace(/{statustext}/, res.statusText));
|
|
74
|
+
}
|
|
75
|
+
if (!parsedRes.success && !endpoint.startsWith('/housing')) {
|
|
76
|
+
throw new Error(this.client.errors.SOMETHING_WENT_WRONG.replace(/{cause}/, res.statusText));
|
|
77
|
+
}
|
|
78
|
+
this.client.rateLimit.requests++;
|
|
79
|
+
const requestData = new RequestData(parsedRes, res.headers, {
|
|
80
|
+
status: res.status,
|
|
81
|
+
options,
|
|
82
|
+
url: endpoint,
|
|
83
|
+
cached: false
|
|
84
|
+
});
|
|
85
|
+
if (options.noCache) return requestData;
|
|
86
|
+
if (this.client.options.cache && !options.raw) {
|
|
87
|
+
this.client.cacheHandler.set(endpoint, requestData);
|
|
88
|
+
}
|
|
89
|
+
return requestData;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
async toUUID(input: string): Promise<string> {
|
|
93
|
+
if (!input) throw new Error(this.client.errors.NO_NICKNAME_UUID);
|
|
94
|
+
if ('string' !== typeof input) throw new Error(this.client.errors.UUID_NICKNAME_MUST_BE_A_STRING);
|
|
95
|
+
if (isUUID(input)) return input.replace(/-/g, '');
|
|
96
|
+
const url = `https://mowojang.matdoes.dev/${input}`;
|
|
97
|
+
if (this.client.cacheHandler.has(url)) {
|
|
98
|
+
return this.client.cacheHandler.get(url);
|
|
99
|
+
}
|
|
100
|
+
const res = await axios.get(url);
|
|
101
|
+
if (500 <= res.status && 528 > res.status) {
|
|
102
|
+
throw new Error(
|
|
103
|
+
this.client.errors.ERROR_STATUSTEXT.replace(/{statustext}/, `Server Error : ${res.status} ${res.statusText}`)
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
const parsedRes = await res.data;
|
|
107
|
+
if (400 === res.status) {
|
|
108
|
+
throw new Error(
|
|
109
|
+
this.client.errors.ERROR_CODE_CAUSE.replace(/{code}/, '400 Bad Request').replace(
|
|
110
|
+
/{cause}/,
|
|
111
|
+
parsedRes.cause || ''
|
|
112
|
+
)
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
if (200 !== res.status) {
|
|
116
|
+
throw new Error(this.client.errors.ERROR_STATUSTEXT.replace(/{statustext}/, res.statusText));
|
|
117
|
+
}
|
|
118
|
+
if ('string' !== typeof parsedRes.id || 'string' !== typeof parsedRes.name) {
|
|
119
|
+
throw new Error(this.client.errors.MALFORMED_UUID);
|
|
120
|
+
}
|
|
121
|
+
if (this.client.options.cache) {
|
|
122
|
+
this.client.cacheHandler.set(url, parsedRes.id);
|
|
123
|
+
}
|
|
124
|
+
return parsedRes.id;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export default Requests;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import Client from '../Client';
|
|
2
|
+
import Updater from './Updater';
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
import { expect, expectTypeOf, test, vi } from 'vitest';
|
|
5
|
+
import { version } from '../../package.json';
|
|
6
|
+
|
|
7
|
+
test('Updater', () => {
|
|
8
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '');
|
|
9
|
+
expect(client).toBeDefined();
|
|
10
|
+
expectTypeOf(client).toEqualTypeOf<Client>();
|
|
11
|
+
|
|
12
|
+
expect(client.updater).toBeDefined();
|
|
13
|
+
expectTypeOf(client.updater).toEqualTypeOf<Updater>();
|
|
14
|
+
|
|
15
|
+
expect(client.updater.currentVersion).toBe(version);
|
|
16
|
+
expect(client.updater.latestVersion).toBe('0.0.0');
|
|
17
|
+
|
|
18
|
+
expect(client.updater.checkForUpdates).toBeDefined();
|
|
19
|
+
expectTypeOf(client.updater.checkForUpdates).toBeFunction();
|
|
20
|
+
expect(() => client.updater.checkForUpdates()).not.toThrow();
|
|
21
|
+
|
|
22
|
+
expect(client.updater.getLatestVersion).toBeDefined();
|
|
23
|
+
expectTypeOf(client.updater.getLatestVersion).toBeFunction();
|
|
24
|
+
expect(() => client.updater.getLatestVersion()).not.toThrow();
|
|
25
|
+
|
|
26
|
+
expect(client.updater.compareVersions).toBeDefined();
|
|
27
|
+
expectTypeOf(client.updater.compareVersions).toBeFunction();
|
|
28
|
+
expect(() => client.updater.compareVersions('1.0.0', '1.0.0')).not.toThrow();
|
|
29
|
+
expect(client.updater.compareVersions('1.0.0', '1.0.0')).toBe(false);
|
|
30
|
+
expect(client.updater.compareVersions('1.0.0', '1.0.1')).toBe(true);
|
|
31
|
+
expect(client.updater.compareVersions('1.0.1', '1.0.0')).toBe(false);
|
|
32
|
+
expect(client.updater.compareVersions('meow', '1.0.0')).toBe(false);
|
|
33
|
+
|
|
34
|
+
client.destroy();
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test('Updater (get latest version)', async () => {
|
|
38
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '');
|
|
39
|
+
const mockRequest = { status: 200, data: { 'dist-tags': { latest: '1.0.0' } } };
|
|
40
|
+
vi.spyOn(axios, 'get').mockResolvedValue(mockRequest);
|
|
41
|
+
const data = await client.updater.getLatestVersion();
|
|
42
|
+
expect(data).toBe('1.0.0');
|
|
43
|
+
vi.restoreAllMocks();
|
|
44
|
+
client.destroy();
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test('Updater (get latest version error)', () => {
|
|
48
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '');
|
|
49
|
+
const mockRequest = { status: 404, data: { 'dist-tags': { latest: '1.0.0' } } };
|
|
50
|
+
vi.spyOn(axios, 'get').mockResolvedValue(mockRequest);
|
|
51
|
+
expect(() => client.updater.getLatestVersion()).rejects.toThrowError(client.errors.UPDATER_REQUEST_NOT_OK);
|
|
52
|
+
vi.restoreAllMocks();
|
|
53
|
+
client.destroy();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
test('Updater (check version)', async () => {
|
|
57
|
+
const client = new Client(process.env.HYPIXEL_KEY ?? '');
|
|
58
|
+
const consoleLogSpy = vi.spyOn(console, 'log');
|
|
59
|
+
client.updater.currentVersion = '1.0.0';
|
|
60
|
+
const mockRequest = { status: 200, data: { 'dist-tags': { latest: version } } };
|
|
61
|
+
vi.spyOn(axios, 'get').mockResolvedValue(mockRequest);
|
|
62
|
+
await client.updater.checkForUpdates();
|
|
63
|
+
expect(consoleLogSpy).toHaveBeenCalledWith(
|
|
64
|
+
`New version of hypixel-api-reborn is available! Current version: 1.0.0, Latest version: ${version}`
|
|
65
|
+
);
|
|
66
|
+
vi.restoreAllMocks();
|
|
67
|
+
client.destroy();
|
|
68
|
+
});
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import Client from '../Client';
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
import { version } from '../../package.json';
|
|
5
|
+
|
|
6
|
+
class Updater {
|
|
7
|
+
readonly client: Client;
|
|
8
|
+
currentVersion: string;
|
|
9
|
+
latestVersion: string;
|
|
10
|
+
constructor(client: Client) {
|
|
11
|
+
this.client = client;
|
|
12
|
+
this.currentVersion = version;
|
|
13
|
+
this.latestVersion = '0.0.0';
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async checkForUpdates(): Promise<void> {
|
|
17
|
+
this.latestVersion = await this.getLatestVersion();
|
|
18
|
+
const compare = this.compareVersions(this.currentVersion, this.latestVersion);
|
|
19
|
+
if (compare) {
|
|
20
|
+
console.log(
|
|
21
|
+
`New version of hypixel-api-reborn is available! Current version: ${
|
|
22
|
+
this.currentVersion
|
|
23
|
+
}, Latest version: ${this.latestVersion}`
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async getLatestVersion(): Promise<string> {
|
|
29
|
+
const request = await axios.get('https://registry.npmjs.org/hypixel-api-reborn');
|
|
30
|
+
if (200 !== request.status) throw new Error(this.client.errors.UPDATER_REQUEST_NOT_OK);
|
|
31
|
+
return request.data['dist-tags'].latest;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
compareVersions(a: string, b: string): boolean {
|
|
35
|
+
const pa = a.split('.');
|
|
36
|
+
const pb = b.split('.');
|
|
37
|
+
for (let i = 0; 3 > i; i++) {
|
|
38
|
+
const na = Number(pa[i]);
|
|
39
|
+
const nb = Number(pb[i]);
|
|
40
|
+
if (isNaN(na) || isNaN(nb)) return false;
|
|
41
|
+
if (na > nb) return false;
|
|
42
|
+
if (nb > na) return true;
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export default Updater;
|