{"version":3,"sources":["../../../../src/lib/rest/RequestManager.ts"],"sourcesContent":["import { AsyncQueue } from '@sapphire/async-queue';\r\nimport { ApiRequest } from './ApiRequest';\r\nimport { Client } from '../Client';\r\nimport type { Logger } from '..//Logger';\r\n\r\n/**\r\n * Manages the requests to the API\r\n * @category Rest\r\n * @group Rest\r\n */\r\nexport class RequestManager {\r\n\t/**\r\n\t * The hypixel.ts client instance\r\n\t */\r\n\tpublic client: Client;\r\n\r\n\t/**\r\n\t * The base url of the hypixel API\r\n\t */\r\n\tpublic baseApiUrl: string;\r\n\r\n\t/**\r\n\t * Queue for requests\r\n\t * @see {@link https://npmjs.com/@sapphire/async-queue}\r\n\t */\r\n\tprivate queue: AsyncQueue;\r\n\r\n\tprivate logger: Logger;\r\n\r\n\tpublic constructor(client: Client, logger: Logger) {\r\n\t\tthis.client = client;\r\n\t\tthis.baseApiUrl = client.options?.baseApiUrl ?? 'https://api.hypixel.net/v2';\r\n\t\tthis.queue = new AsyncQueue();\r\n\t\tthis.logger = logger;\r\n\t}\r\n\r\n\t/**\r\n\t * Makes the api request and pushes it to the request queue\r\n\t * @param path The path/endpoint to make the request to\r\n\t * @param sendAPIKey Whether or not to send the apiKey with this request\r\n\t */\r\n\tpublic async execute<T>(path: string, sendAPIKey: boolean) {\r\n\t\tawait this.queue.wait();\r\n\t\ttry {\r\n\t\t\tconst request = await new ApiRequest(this, { path, sendAPIKey }, this.logger).make();\r\n\t\t\treturn request.json() as T;\r\n\t\t} finally {\r\n\t\t\tthis.queue.shift();\r\n\t\t}\r\n\t}\r\n}\r\n"],"mappings":";;;;AAAA,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AASpB,IAAM,iBAAN,MAAqB;AAAA,EAV5B,OAU4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIpB;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMC;AAAA,EAEA;AAAA,EAED,YAAY,QAAgB,QAAgB;AAClD,SAAK,SAAS;AACd,SAAK,aAAa,OAAO,SAAS,cAAc;AAChD,SAAK,QAAQ,IAAI,WAAW;AAC5B,SAAK,SAAS;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,QAAW,MAAc,YAAqB;AAC1D,UAAM,KAAK,MAAM,KAAK;AACtB,QAAI;AACH,YAAM,UAAU,MAAM,IAAI,WAAW,MAAM,EAAE,MAAM,WAAW,GAAG,KAAK,MAAM,EAAE,KAAK;AACnF,aAAO,QAAQ,KAAK;AAAA,IACrB,UAAE;AACD,WAAK,MAAM,MAAM;AAAA,IAClB;AAAA,EACD;AACD;","names":[]}