@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
JavaScript
;
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