diff options
author | mat <27899617+mat-1@users.noreply.github.com> | 2021-02-13 14:35:58 -0600 |
---|---|---|
committer | mat <27899617+mat-1@users.noreply.github.com> | 2021-02-13 14:35:58 -0600 |
commit | 68c07e7a5ab8acf5ba7785eed594497e05467061 (patch) | |
tree | bf29688d541e817ea1d7e1dbdb0c83233a643530 /build/cleaners/skyblock | |
parent | f1c18020d5d86aac6119c842e6a108d99fae6e51 (diff) | |
download | skyblock-api-68c07e7a5ab8acf5ba7785eed594497e05467061.tar.gz skyblock-api-68c07e7a5ab8acf5ba7785eed594497e05467061.tar.bz2 skyblock-api-68c07e7a5ab8acf5ba7785eed594497e05467061.zip |
create member, profile, and profiles cleaners
Diffstat (limited to 'build/cleaners/skyblock')
-rw-r--r-- | build/cleaners/skyblock/member.js | 40 | ||||
-rw-r--r-- | build/cleaners/skyblock/profile.js | 51 | ||||
-rw-r--r-- | build/cleaners/skyblock/profiles.js | 26 |
3 files changed, 117 insertions, 0 deletions
diff --git a/build/cleaners/skyblock/member.js b/build/cleaners/skyblock/member.js new file mode 100644 index 0000000..b10a619 --- /dev/null +++ b/build/cleaners/skyblock/member.js @@ -0,0 +1,40 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cleanSkyBlockProfileMemberResponse = void 0; +const cached = __importStar(require("../../hypixelCached")); +const minions_1 = require("./minions"); +const stats_1 = require("./stats"); +/** Cleans up a member (from skyblock/profile) */ +async function cleanSkyBlockProfileMemberResponse(member, included = null) { + // profiles.members[] + const statsIncluded = included == null || included.includes('stats'); + return { + uuid: member.uuid, + username: await cached.usernameFromUser(member.uuid), + last_save: member.last_save, + first_join: member.first_join, + // last_death: ??? idk how this is formatted, + stats: statsIncluded ? stats_1.cleanProfileStats(member.stats) : undefined, + minions: statsIncluded ? minions_1.cleanMinions(member.crafted_generators) : undefined, + }; +} +exports.cleanSkyBlockProfileMemberResponse = cleanSkyBlockProfileMemberResponse; diff --git a/build/cleaners/skyblock/profile.js b/build/cleaners/skyblock/profile.js new file mode 100644 index 0000000..f7d9e8b --- /dev/null +++ b/build/cleaners/skyblock/profile.js @@ -0,0 +1,51 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cleanSkyblockProfileResponse = exports.cleanSkyblockProfileResponseLighter = void 0; +const member_1 = require("./member"); +const minions_1 = require("./minions"); +/** Return a `CleanProfile` instead of a `CleanFullProfile`, useful when we need to get members but don't want to waste much ram */ +async function cleanSkyblockProfileResponseLighter(data) { + // We use Promise.all so it can fetch all the usernames at once instead of waiting for the previous promise to complete + const promises = []; + for (const memberUUID in data.members) { + const memberRaw = data.members[memberUUID]; + memberRaw.uuid = memberUUID; + // we pass an empty array to make it not check stats + promises.push(member_1.cleanSkyBlockProfileMemberResponse(memberRaw, [])); + } + const cleanedMembers = await Promise.all(promises); + return { + uuid: data.profile_id, + name: data.cute_name, + members: cleanedMembers, + }; +} +exports.cleanSkyblockProfileResponseLighter = cleanSkyblockProfileResponseLighter; +/** This function is somewhat costly and shouldn't be called often. Use cleanSkyblockProfileResponseLighter if you don't need all the data */ +async function cleanSkyblockProfileResponse(data) { + const cleanedMembers = []; + for (const memberUUID in data.members) { + const memberRaw = data.members[memberUUID]; + memberRaw.uuid = memberUUID; + const member = await member_1.cleanSkyBlockProfileMemberResponse(memberRaw, ['stats']); + cleanedMembers.push(member); + } + const memberMinions = []; + for (const member of cleanedMembers) { + memberMinions.push(member.minions); + } + const minions = minions_1.combineMinionArrays(memberMinions); + // return more detailed info + return { + uuid: data.profile_id, + name: data.cute_name, + members: cleanedMembers, + bank: { + balance: data?.banking?.balance ?? 0, + // TODO: make transactions good + history: data?.banking?.transactions ?? [] + }, + minions + }; +} +exports.cleanSkyblockProfileResponse = cleanSkyblockProfileResponse; diff --git a/build/cleaners/skyblock/profiles.js b/build/cleaners/skyblock/profiles.js new file mode 100644 index 0000000..b79fc56 --- /dev/null +++ b/build/cleaners/skyblock/profiles.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cleanSkyblockProfilesResponse = exports.cleanPlayerSkyblockProfiles = void 0; +const profile_1 = require("./profile"); +function cleanPlayerSkyblockProfiles(rawProfiles) { + let profiles = []; + for (const profile of Object.values(rawProfiles)) { + profiles.push({ + uuid: profile.profile_id, + name: profile.cute_name + }); + } + console.log('cleanPlayerSkyblockProfiles', profiles); + return profiles; +} +exports.cleanPlayerSkyblockProfiles = cleanPlayerSkyblockProfiles; +/** Convert an array of raw profiles into clean profiles */ +async function cleanSkyblockProfilesResponse(data) { + const cleanedProfiles = []; + for (const profile of data) { + let cleanedProfile = await profile_1.cleanSkyblockProfileResponseLighter(profile); + cleanedProfiles.push(cleanedProfile); + } + return cleanedProfiles; +} +exports.cleanSkyblockProfilesResponse = cleanSkyblockProfilesResponse; |