UNPKG

@zikeji/hypixel

Version:

With IntelliSense support & test coverage, this is an unopinionated async/await API wrapper for Hypixel's Public API. It is developed in TypeScript complete with documentation, typed interfaces for all API responses, built-in rate-limit handling, flexible

68 lines 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getResultArray = getResultArray; exports.getFlatResultArray = getFlatResultArray; /** @hidden */ function getResultArray(response, key) { const clonedResponse = JSON.parse(JSON.stringify(response)); if (!(key in clonedResponse)) { throw new TypeError(`Key "${String(key)}" was not in the response.`); } let items = clonedResponse[key]; const { ratelimit, cached, cloudflareCache } = clonedResponse; if (!Array.isArray(items)) { if (items !== null) { throw new TypeError(`Key "${String(key)}" has an unexpected type ${typeof items}.`); } items = []; } delete clonedResponse[key]; const arr = [...items]; const meta = Object.assign({}, clonedResponse); if (cached) { meta.cached = true; } if (cloudflareCache) { meta.cloudflareCache = cloudflareCache; } if (ratelimit) { if (!cached && (!meta.cloudflareCache || meta.cloudflareCache.status !== "HIT")) { meta.ratelimit = ratelimit; } } Object.defineProperty(arr, "meta", { enumerable: false, value: meta, }); return arr; } /** @hidden */ function getFlatResultArray(response) { if (!Array.isArray(response)) { throw new TypeError(`Response was not an array!`); } const { ratelimit, cached, cloudflareCache } = response; delete response.ratelimit; delete response.cached; delete response.cloudflareCache; const meta = {}; if (cached) { meta.cached = true; } if (cloudflareCache) { meta.cloudflareCache = cloudflareCache; } if (ratelimit) { if (!cached && (!meta.cloudflareCache || meta.cloudflareCache.status !== "HIT")) { meta.ratelimit = ratelimit; } } Object.defineProperty(response, "meta", { enumerable: false, value: meta, }); return response; } //# sourceMappingURL=ResultArray.js.map