@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
18 lines (17 loc) • 1.07 kB
TypeScript
import { DefaultMeta } from "../types/DefaultMeta";
/**
* Generic intersection type for result objects to include metadata as a non-enumerable property.
* @example
* ```typescript
* const result = await client.watchdogstats();
* console.log(result);
* // {watchdog_lastMinute: 1, staff_rollingDaily: 2609, watchdog_total: 5591714, watchdog_rollingDaily: 4213, …}
* console.log(result.meta)
* // {success: true}
* ```
*/
export type ResultObject<T extends Record<string, unknown>, K extends (keyof T)[], B extends true | void = void> = (B extends true ? T : T[K[number]] extends string | number | boolean | undefined ? OmitRespectingRemapping<T, K[number]> : T[K[number]]) & {
meta: B extends true ? DefaultMeta : (T[K[number]] extends string | number | boolean | undefined ? Pick<T, K[number]> : OmitRespectingRemapping<T, K[number]>) & DefaultMeta;
};
/** @hidden */
export declare function getResultObject<T, K extends (keyof T)[], B extends true | void = void>(response: T & DefaultMeta, keys?: K): ResultObject<T & Record<string, unknown>, K, B>;