@discordeno/rest 19.0.0-next.0b02607 → 19.0.0-next.0b93eed

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/queue.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/queue.ts"],"sourcesContent":["import { delay, logger } from '@discordeno/utils'\nimport type { RestManager, SendRequestOptions } from './types.js'\n\nexport class Queue {\n /** The rest manager */\n rest: RestManager\n /** Amount of requests that have are remaining. Defaults to 1. */\n remaining: number = 1\n /** Max requests for this this. Defaults to 1. */\n max: number = 1\n /** The time that discord allows to make the max number of requests. Defaults to 0 */\n interval: number = 0\n /** timer to reset to 0 */\n timeoutId: NodeJS.Timeout | undefined\n /** The requests that are currently pending. */\n waiting: Array<(value: void | PromiseLike<void>) => void> = []\n /** The requests that are currently pending. */\n pending: SendRequestOptions[] = []\n /** Whether or not the waiting queue is already processing. */\n processing: boolean = false\n /** Whether or not the pending queue is already processing. */\n processingPending: boolean = false\n /** Whether the first request is pending. */\n firstRequest: boolean = false\n /** The url that all the requests in this queue are sent to. */\n url: string\n /** When requests started being made to determine when the interval will reset it. */\n frozenAt: number = 0\n /** The time in milliseconds to wait before deleting this queue if it is empty. Defaults to 60000(one minute). */\n deleteQueueDelay: number = 60000\n\n constructor(rest: RestManager, options: QueueOptions) {\n this.rest = rest\n this.url = options.url\n\n if (options.interval) this.interval = options.interval\n if (options.max) this.max = options.max\n if (options.remaining) this.remaining = options.remaining\n if (options.timeoutId) this.timeoutId = options.timeoutId\n if (options.deleteQueueDelay) this.deleteQueueDelay = options.deleteQueueDelay\n }\n\n /** Check if there is any remaining requests that are allowed. */\n isRequestAllowed(): boolean {\n return this.remaining > 0\n }\n\n /** Pauses the execution until a request is allowed to be made. */\n async waitUntilRequestAvailable(): Promise<void> {\n // eslint-disable-next-line no-async-promise-executor\n return await new Promise(async (resolve) => {\n // If whatever amount of requests is left is more than the safety margin, allow the request\n if (this.isRequestAllowed()) {\n // this.remaining++;\n resolve()\n } else {\n this.waiting.push(resolve)\n await this.processWaiting()\n }\n })\n }\n\n /** Process the queue of requests waiting to be handled. */\n async processWaiting(): Promise<void> {\n // If already processing, that loop will handle all waiting requests.\n if (this.processing) return\n // Mark as processing so other loops don't start\n this.processing = true\n\n while (this.waiting.length > 0) {\n logger.debug(`[Queue] ${this.url} process waiting while loop ran.`)\n if (this.isRequestAllowed()) {\n // Resolve the next item in the queue\n this.waiting.shift()?.()\n } else {\n await delay(1000)\n }\n }\n\n // Mark as false so next pending request can be triggered by new loop.\n this.processing = false\n }\n\n /** Process the queue of all requests pending to be sent. */\n async processPending(): Promise<void> {\n // If already processing, that loop will handle all pending requests.\n if (this.processingPending || !this.pending.length) return\n\n // Mark as processing so other loops don't start\n this.processingPending = true\n\n while (this.pending.length > 0) {\n logger.debug(`Queue ${this.url} process pending while loop ran with ${this.pending.length}.`)\n if (!this.firstRequest && !this.isRequestAllowed()) {\n const now = Date.now()\n const future = this.frozenAt + this.interval\n await delay(future > now ? future - now : 1000)\n continue\n }\n\n const request = this.pending[0]\n if (request) {\n const basicURL = this.rest.simplifyUrl(request.route, request.method)\n\n // IF THIS URL IS STILL RATE LIMITED, TRY AGAIN\n // If this url is still rate limited, try again\n const urlResetIn = this.rest.checkRateLimits(basicURL)\n if (urlResetIn) await delay(urlResetIn)\n\n // IF A BUCKET EXISTS, CHECK THE BUCKET'S RATE LIMITS\n const bucketResetIn = request.bucketId ? this.rest.checkRateLimits(request.bucketId) : false\n if (bucketResetIn) await delay(bucketResetIn)\n\n this.firstRequest = false\n this.remaining--\n\n if (this.timeoutId && this.remaining === 0 && this.interval !== 0) {\n this.timeoutId = setTimeout(() => {\n this.remaining = this.max\n this.timeoutId = undefined\n }, this.interval)\n }\n\n // Remove from queue, we are executing it.\n this.pending.shift()\n // Check if this request is able to be made globally\n await this.rest.invalidBucket.waitUntilRequestAvailable()\n\n await this.rest\n .sendRequest(request)\n // Should be handled in sendRequest, this catch just prevents bots from dying\n .catch(() => null)\n }\n }\n\n logger.debug(`Queue ${this.url} process pending while loop exited with ${this.pending.length}.`)\n\n // Mark as false so next pending request can be triggered by new loop.\n this.processingPending = false\n this.cleanup()\n }\n\n handleCompletedRequest(headers: { max?: number; interval?: number; remaining?: number }): void {\n if (headers.max === 0) {\n this.remaining++\n return\n }\n\n if (!this.frozenAt) this.frozenAt = Date.now()\n if (headers.interval !== undefined) this.interval = headers.interval\n if (headers.remaining !== undefined) this.remaining = headers.remaining\n\n if (this.remaining <= 1) {\n this.timeoutId = setTimeout(() => {\n this.remaining = this.max\n this.timeoutId = undefined\n }, headers.interval)\n }\n }\n\n /** Checks if a request is available and adds it to the queue. Also triggers queue processing if not already processing. */\n async makeRequest(options: SendRequestOptions): Promise<void> {\n await this.waitUntilRequestAvailable()\n this.pending.push(options)\n this.processPending()\n }\n\n /** Cleans up the queue by checking if there is nothing left and removing it. */\n cleanup(): void {\n if (!this.isQueueClearable()) {\n this.processPending()\n return\n }\n\n logger.debug(`[Queue] ${this.url}. Delaying delete for ${this.deleteQueueDelay}ms`)\n // Delete in a minute giving a bit of time to allow new requests that may reuse this queue\n setTimeout(async () => {\n if (!this.isQueueClearable()) {\n logger.debug(`[Queue] ${this.url}. is not clearable. Restarting processing of queue.`)\n this.processPending()\n return\n }\n\n logger.debug(`[Queue] ${this.url}. Deleting`)\n if (this.timeoutId) clearTimeout(this.timeoutId)\n // No requests have been requested for this queue so we nuke this queue\n this.rest.queues.delete(this.url)\n logger.debug(`[Queue] ${this.url}. Deleted! Remaining: (${this.rest.queues.size})`, [...this.rest.queues.keys()])\n if (this.rest.queues.size) this.processPending()\n }, this.deleteQueueDelay)\n }\n\n /** Simply checks if the queue is able to be cleared or it has requests pending. */\n isQueueClearable(): boolean {\n if (this.firstRequest) return false\n if (this.waiting.length > 0) return false\n if (this.pending.length > 0) return false\n if (this.interval === 0) return false\n if (this.processing) return false\n if (this.processingPending) return false\n\n return true\n }\n}\n\nexport interface QueueOptions {\n /** How many requests are remaining. Defaults to 1 */\n remaining?: number\n /** Max number of requests allowed in this this. Defaults to 1. */\n max?: number\n /** The time in milliseconds that discord allows to make the max number of invalid requests. Defaults to 0 */\n interval?: number\n /** timer to reset to 0 */\n timeoutId?: NodeJS.Timeout\n /** The url this queue will be handling. */\n url: string\n /** The time in milliseconds to wait before deleting this queue if it is empty. Defaults to 60000(one minute). */\n deleteQueueDelay?: number\n}\n"],"names":["delay","logger","Queue","constructor","rest","options","remaining","max","interval","waiting","pending","processing","processingPending","firstRequest","frozenAt","deleteQueueDelay","url","timeoutId","isRequestAllowed","waitUntilRequestAvailable","Promise","resolve","push","processWaiting","length","debug","shift","processPending","now","Date","future","request","basicURL","simplifyUrl","route","method","urlResetIn","checkRateLimits","bucketResetIn","bucketId","setTimeout","undefined","invalidBucket","sendRequest","catch","cleanup","handleCompletedRequest","headers","makeRequest","isQueueClearable","clearTimeout","queues","delete","size","keys"],"mappings":"AAAA,SAASA,KAAK,EAAEC,MAAM,QAAQ,oBAAmB;AAGjD,OAAO,MAAMC;IA4BXC,YAAYC,IAAiB,EAAEC,OAAqB,CAAE;QAzBtD,+DAA+D,QAC/DC,YAAoB;QACpB,+CAA+C,QAC/CC,MAAc;QACd,mFAAmF,QACnFC,WAAmB;QAGnB,6CAA6C,QAC7CC,UAA4D,EAAE;QAC9D,6CAA6C,QAC7CC,UAAgC,EAAE;QAClC,4DAA4D,QAC5DC,aAAsB,KAAK;QAC3B,4DAA4D,QAC5DC,oBAA6B,KAAK;QAClC,0CAA0C,QAC1CC,eAAwB,KAAK;QAG7B,mFAAmF,QACnFC,WAAmB;QACnB,+GAA+G,QAC/GC,mBAA2B;QAGzB,IAAI,CAACX,IAAI,GAAGA;QACZ,IAAI,CAACY,GAAG,GAAGX,QAAQW,GAAG;QAEtB,IAAIX,QAAQG,QAAQ,EAAE,IAAI,CAACA,QAAQ,GAAGH,QAAQG,QAAQ;QACtD,IAAIH,QAAQE,GAAG,EAAE,IAAI,CAACA,GAAG,GAAGF,QAAQE,GAAG;QACvC,IAAIF,QAAQC,SAAS,EAAE,IAAI,CAACA,SAAS,GAAGD,QAAQC,SAAS;QACzD,IAAID,QAAQY,SAAS,EAAE,IAAI,CAACA,SAAS,GAAGZ,QAAQY,SAAS;QACzD,IAAIZ,QAAQU,gBAAgB,EAAE,IAAI,CAACA,gBAAgB,GAAGV,QAAQU,gBAAgB;IAChF;IAEA,+DAA+D,GAC/DG,mBAA4B;QAC1B,OAAO,IAAI,CAACZ,SAAS,GAAG;IAC1B;IAEA,gEAAgE,GAChE,MAAMa,4BAA2C;QAC/C,qDAAqD;QACrD,OAAO,MAAM,IAAIC,QAAQ,OAAOC,UAAY;YAC1C,2FAA2F;YAC3F,IAAI,IAAI,CAACH,gBAAgB,IAAI;gBAC3B,oBAAoB;gBACpBG;YACF,OAAO;gBACL,IAAI,CAACZ,OAAO,CAACa,IAAI,CAACD;gBAClB,MAAM,IAAI,CAACE,cAAc;YAC3B,CAAC;QACH;IACF;IAEA,yDAAyD,GACzD,MAAMA,iBAAgC;QACpC,qEAAqE;QACrE,IAAI,IAAI,CAACZ,UAAU,EAAE;QACrB,gDAAgD;QAChD,IAAI,CAACA,UAAU,GAAG,IAAI;QAEtB,MAAO,IAAI,CAACF,OAAO,CAACe,MAAM,GAAG,EAAG;YAC9BvB,OAAOwB,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,CAACT,GAAG,CAAC,gCAAgC,CAAC;YAClE,IAAI,IAAI,CAACE,gBAAgB,IAAI;gBAC3B,qCAAqC;gBACrC,IAAI,CAACT,OAAO,CAACiB,KAAK;YACpB,OAAO;gBACL,MAAM1B,MAAM;YACd,CAAC;QACH;QAEA,sEAAsE;QACtE,IAAI,CAACW,UAAU,GAAG,KAAK;IACzB;IAEA,0DAA0D,GAC1D,MAAMgB,iBAAgC;QACpC,qEAAqE;QACrE,IAAI,IAAI,CAACf,iBAAiB,IAAI,CAAC,IAAI,CAACF,OAAO,CAACc,MAAM,EAAE;QAEpD,gDAAgD;QAChD,IAAI,CAACZ,iBAAiB,GAAG,IAAI;QAE7B,MAAO,IAAI,CAACF,OAAO,CAACc,MAAM,GAAG,EAAG;YAC9BvB,OAAOwB,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,CAACT,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAACN,OAAO,CAACc,MAAM,CAAC,CAAC,CAAC;YAC5F,IAAI,CAAC,IAAI,CAACX,YAAY,IAAI,CAAC,IAAI,CAACK,gBAAgB,IAAI;gBAClD,MAAMU,MAAMC,KAAKD,GAAG;gBACpB,MAAME,SAAS,IAAI,CAAChB,QAAQ,GAAG,IAAI,CAACN,QAAQ;gBAC5C,MAAMR,MAAM8B,SAASF,MAAME,SAASF,MAAM,IAAI;gBAC9C,QAAQ;YACV,CAAC;YAED,MAAMG,UAAU,IAAI,CAACrB,OAAO,CAAC,EAAE;YAC/B,IAAIqB,SAAS;gBACX,MAAMC,WAAW,IAAI,CAAC5B,IAAI,CAAC6B,WAAW,CAACF,QAAQG,KAAK,EAAEH,QAAQI,MAAM;gBAEpE,+CAA+C;gBAC/C,+CAA+C;gBAC/C,MAAMC,aAAa,IAAI,CAAChC,IAAI,CAACiC,eAAe,CAACL;gBAC7C,IAAII,YAAY,MAAMpC,MAAMoC;gBAE5B,qDAAqD;gBACrD,MAAME,gBAAgBP,QAAQQ,QAAQ,GAAG,IAAI,CAACnC,IAAI,CAACiC,eAAe,CAACN,QAAQQ,QAAQ,IAAI,KAAK;gBAC5F,IAAID,eAAe,MAAMtC,MAAMsC;gBAE/B,IAAI,CAACzB,YAAY,GAAG,KAAK;gBACzB,IAAI,CAACP,SAAS;gBAEd,IAAI,IAAI,CAACW,SAAS,IAAI,IAAI,CAACX,SAAS,KAAK,KAAK,IAAI,CAACE,QAAQ,KAAK,GAAG;oBACjE,IAAI,CAACS,SAAS,GAAGuB,WAAW,IAAM;wBAChC,IAAI,CAAClC,SAAS,GAAG,IAAI,CAACC,GAAG;wBACzB,IAAI,CAACU,SAAS,GAAGwB;oBACnB,GAAG,IAAI,CAACjC,QAAQ;gBAClB,CAAC;gBAED,0CAA0C;gBAC1C,IAAI,CAACE,OAAO,CAACgB,KAAK;gBAClB,oDAAoD;gBACpD,MAAM,IAAI,CAACtB,IAAI,CAACsC,aAAa,CAACvB,yBAAyB;gBAEvD,MAAM,IAAI,CAACf,IAAI,CACZuC,WAAW,CAACZ,QACb,6EAA6E;iBAC5Ea,KAAK,CAAC,IAAM,IAAI;YACrB,CAAC;QACH;QAEA3C,OAAOwB,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,CAACT,GAAG,CAAC,wCAAwC,EAAE,IAAI,CAACN,OAAO,CAACc,MAAM,CAAC,CAAC,CAAC;QAE/F,sEAAsE;QACtE,IAAI,CAACZ,iBAAiB,GAAG,KAAK;QAC9B,IAAI,CAACiC,OAAO;IACd;IAEAC,uBAAuBC,OAAgE,EAAQ;QAC7F,IAAIA,QAAQxC,GAAG,KAAK,GAAG;YACrB,IAAI,CAACD,SAAS;YACd;QACF,CAAC;QAED,IAAI,CAAC,IAAI,CAACQ,QAAQ,EAAE,IAAI,CAACA,QAAQ,GAAGe,KAAKD,GAAG;QAC5C,IAAImB,QAAQvC,QAAQ,KAAKiC,WAAW,IAAI,CAACjC,QAAQ,GAAGuC,QAAQvC,QAAQ;QACpE,IAAIuC,QAAQzC,SAAS,KAAKmC,WAAW,IAAI,CAACnC,SAAS,GAAGyC,QAAQzC,SAAS;QAEvE,IAAI,IAAI,CAACA,SAAS,IAAI,GAAG;YACvB,IAAI,CAACW,SAAS,GAAGuB,WAAW,IAAM;gBAChC,IAAI,CAAClC,SAAS,GAAG,IAAI,CAACC,GAAG;gBACzB,IAAI,CAACU,SAAS,GAAGwB;YACnB,GAAGM,QAAQvC,QAAQ;QACrB,CAAC;IACH;IAEA,yHAAyH,GACzH,MAAMwC,YAAY3C,OAA2B,EAAiB;QAC5D,MAAM,IAAI,CAACc,yBAAyB;QACpC,IAAI,CAACT,OAAO,CAACY,IAAI,CAACjB;QAClB,IAAI,CAACsB,cAAc;IACrB;IAEA,8EAA8E,GAC9EkB,UAAgB;QACd,IAAI,CAAC,IAAI,CAACI,gBAAgB,IAAI;YAC5B,IAAI,CAACtB,cAAc;YACnB;QACF,CAAC;QAED1B,OAAOwB,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,CAACT,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAACD,gBAAgB,CAAC,EAAE,CAAC;QAClF,0FAA0F;QAC1FyB,WAAW,UAAY;YACrB,IAAI,CAAC,IAAI,CAACS,gBAAgB,IAAI;gBAC5BhD,OAAOwB,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,CAACT,GAAG,CAAC,mDAAmD,CAAC;gBACrF,IAAI,CAACW,cAAc;gBACnB;YACF,CAAC;YAED1B,OAAOwB,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,CAACT,GAAG,CAAC,UAAU,CAAC;YAC5C,IAAI,IAAI,CAACC,SAAS,EAAEiC,aAAa,IAAI,CAACjC,SAAS;YAC/C,uEAAuE;YACvE,IAAI,CAACb,IAAI,CAAC+C,MAAM,CAACC,MAAM,CAAC,IAAI,CAACpC,GAAG;YAChCf,OAAOwB,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,CAACT,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAACZ,IAAI,CAAC+C,MAAM,CAACE,IAAI,CAAC,CAAC,CAAC,EAAE;mBAAI,IAAI,CAACjD,IAAI,CAAC+C,MAAM,CAACG,IAAI;aAAG;YAChH,IAAI,IAAI,CAAClD,IAAI,CAAC+C,MAAM,CAACE,IAAI,EAAE,IAAI,CAAC1B,cAAc;QAChD,GAAG,IAAI,CAACZ,gBAAgB;IAC1B;IAEA,iFAAiF,GACjFkC,mBAA4B;QAC1B,IAAI,IAAI,CAACpC,YAAY,EAAE,OAAO,KAAK;QACnC,IAAI,IAAI,CAACJ,OAAO,CAACe,MAAM,GAAG,GAAG,OAAO,KAAK;QACzC,IAAI,IAAI,CAACd,OAAO,CAACc,MAAM,GAAG,GAAG,OAAO,KAAK;QACzC,IAAI,IAAI,CAAChB,QAAQ,KAAK,GAAG,OAAO,KAAK;QACrC,IAAI,IAAI,CAACG,UAAU,EAAE,OAAO,KAAK;QACjC,IAAI,IAAI,CAACC,iBAAiB,EAAE,OAAO,KAAK;QAExC,OAAO,IAAI;IACb;AACF,CAAC"}
1
+ {"version":3,"sources":["../src/queue.ts"],"sourcesContent":["import { delay, logger } from '@discordeno/utils'\nimport type { RestManager, SendRequestOptions } from './types.js'\n\nexport class Queue {\n /** The rest manager */\n rest: RestManager\n /** Amount of requests that have are remaining. Defaults to 1. */\n remaining: number = 1\n /** Max requests for this this. Defaults to 1. */\n max: number = 1\n /** The time that discord allows to make the max number of requests. Defaults to 0 */\n interval: number = 0\n /** timer to reset to 0 */\n timeoutId: NodeJS.Timeout | undefined\n /** The requests that are currently pending. */\n waiting: Array<(value: void | PromiseLike<void>) => void> = []\n /** The requests that are currently pending. */\n pending: SendRequestOptions[] = []\n /** Whether or not the waiting queue is already processing. */\n processing: boolean = false\n /** Whether or not the pending queue is already processing. */\n processingPending: boolean = false\n /** Whether the first request is pending. */\n firstRequest: boolean = false\n /** The url that all the requests in this queue are sent to. */\n url: string\n /** When requests started being made to determine when the interval will reset it. */\n frozenAt: number = 0\n /** The time in milliseconds to wait before deleting this queue if it is empty. Defaults to 60000(one minute). */\n deleteQueueDelay: number = 60000\n /** The authentication header used for the OAuth2 request. Defaults to an empty string for non-OAuth2 requests */\n authentication: string = ''\n\n constructor(rest: RestManager, options: QueueOptions) {\n this.rest = rest\n this.url = options.url\n\n if (options.interval) this.interval = options.interval\n if (options.max) this.max = options.max\n if (options.remaining) this.remaining = options.remaining\n if (options.timeoutId) this.timeoutId = options.timeoutId\n if (options.deleteQueueDelay) this.deleteQueueDelay = options.deleteQueueDelay\n if (options.authentication) this.authentication = options.authentication\n }\n\n /** Check if there is any remaining requests that are allowed. */\n isRequestAllowed(): boolean {\n return this.remaining > 0\n }\n\n /** Pauses the execution until a request is allowed to be made. */\n async waitUntilRequestAvailable(): Promise<void> {\n // eslint-disable-next-line no-async-promise-executor\n return await new Promise(async (resolve) => {\n // If whatever amount of requests is left is more than the safety margin, allow the request\n if (this.isRequestAllowed()) {\n // this.remaining++;\n resolve()\n } else {\n this.waiting.push(resolve)\n await this.processWaiting()\n }\n })\n }\n\n /** Process the queue of requests waiting to be handled. */\n async processWaiting(): Promise<void> {\n // If already processing, that loop will handle all waiting requests.\n if (this.processing) return\n // Mark as processing so other loops don't start\n this.processing = true\n\n while (this.waiting.length > 0) {\n logger.debug(`[Queue] ${this.isOauth2Queue() ? '' : 'Bearer '}${this.url} process waiting while loop ran.`)\n if (this.isRequestAllowed()) {\n // Resolve the next item in the queue\n this.waiting.shift()?.()\n } else {\n await delay(1000)\n }\n }\n\n // Mark as false so next pending request can be triggered by new loop.\n this.processing = false\n }\n\n /** Process the queue of all requests pending to be sent. */\n async processPending(): Promise<void> {\n // If already processing, that loop will handle all pending requests.\n if (this.processingPending || !this.pending.length) return\n\n // Mark as processing so other loops don't start\n this.processingPending = true\n\n while (this.pending.length > 0) {\n logger.debug(`Queue ${this.isOauth2Queue() ? '' : 'Bearer '}${this.url} process pending while loop ran with ${this.pending.length}.`)\n if (!this.firstRequest && !this.isRequestAllowed()) {\n const now = Date.now()\n const future = this.frozenAt + this.interval\n await delay(future > now ? future - now : 1000)\n continue\n }\n\n const request = this.pending[0]\n if (request) {\n const basicURL = this.rest.simplifyUrl(request.route, request.method)\n\n // If this url is still rate limited, try again\n const urlResetIn = this.rest.checkRateLimits(basicURL, request.requestBodyOptions?.headers)\n if (urlResetIn) await delay(urlResetIn)\n\n // IF A BUCKET EXISTS, CHECK THE BUCKET'S RATE LIMITS\n const bucketResetIn = request.bucketId ? this.rest.checkRateLimits(request.bucketId, request.requestBodyOptions?.headers) : false\n if (bucketResetIn) await delay(bucketResetIn)\n\n this.firstRequest = false\n this.remaining--\n\n if (this.timeoutId && this.remaining === 0 && this.interval !== 0) {\n this.timeoutId = setTimeout(() => {\n this.remaining = this.max\n this.timeoutId = undefined\n }, this.interval)\n }\n\n // Remove from queue, we are executing it.\n this.pending.shift()\n // Check if this request is able to be made globally\n await this.rest.invalidBucket.waitUntilRequestAvailable()\n\n await this.rest\n .sendRequest(request)\n // Should be handled in sendRequest, this catch just prevents bots from dying\n .catch(() => null)\n }\n }\n\n logger.debug(`Queue ${this.isOauth2Queue() ? '' : 'Bearer '}${this.url} process pending while loop exited with ${this.pending.length}.`)\n\n // Mark as false so next pending request can be triggered by new loop.\n this.processingPending = false\n this.cleanup()\n }\n\n handleCompletedRequest(headers: { max?: number; interval?: number; remaining?: number }): void {\n if (headers.max === 0) {\n this.remaining++\n return\n }\n\n if (!this.frozenAt) this.frozenAt = Date.now()\n if (headers.interval !== undefined) this.interval = headers.interval\n if (headers.remaining !== undefined) this.remaining = headers.remaining\n\n if (this.remaining <= 1) {\n this.timeoutId = setTimeout(() => {\n this.remaining = this.max\n this.timeoutId = undefined\n }, headers.interval)\n }\n }\n\n /** Checks if a request is available and adds it to the queue. Also triggers queue processing if not already processing. */\n async makeRequest(options: SendRequestOptions): Promise<void> {\n await this.waitUntilRequestAvailable()\n this.pending.push(options)\n this.processPending()\n }\n\n /** Cleans up the queue by checking if there is nothing left and removing it. */\n cleanup(): void {\n if (!this.isQueueClearable()) {\n this.processPending()\n return\n }\n\n logger.debug(`[Queue] ${this.isOauth2Queue() ? '' : 'Bearer '}${this.url}. Delaying delete for ${this.deleteQueueDelay}ms`)\n // Delete in a minute giving a bit of time to allow new requests that may reuse this queue\n setTimeout(async () => {\n if (!this.isQueueClearable()) {\n logger.debug(`[Queue] ${this.isOauth2Queue() ? '' : 'Bearer '}${this.url}. is not clearable. Restarting processing of queue.`)\n this.processPending()\n return\n }\n\n logger.debug(`[Queue] ${this.url}. Deleting`)\n if (this.timeoutId) clearTimeout(this.timeoutId)\n // No requests have been requested for this queue so we nuke this queue\n this.rest.queues.delete(`${this.authentication}${this.url}`)\n logger.debug(\n `[Queue] ${this.url}. Deleted! Remaining: (${this.rest.queues.size})`,\n [...this.rest.queues.values()].map((queue) => `${queue.isOauth2Queue() ? '' : 'Bearer '}${queue.url}`),\n )\n if (this.rest.queues.size) this.processPending()\n }, this.deleteQueueDelay)\n }\n\n /** Simply checks if the queue is able to be cleared or it has requests pending. */\n isQueueClearable(): boolean {\n if (this.firstRequest) return false\n if (this.waiting.length > 0) return false\n if (this.pending.length > 0) return false\n if (this.interval === 0) return false\n if (this.processing) return false\n if (this.processingPending) return false\n\n return true\n }\n\n isOauth2Queue(): boolean {\n return this.authentication === ''\n }\n}\n\nexport interface QueueOptions {\n /** How many requests are remaining. Defaults to 1 */\n remaining?: number\n /** Max number of requests allowed in this this. Defaults to 1. */\n max?: number\n /** The time in milliseconds that discord allows to make the max number of invalid requests. Defaults to 0 */\n interval?: number\n /** timer to reset to 0 */\n timeoutId?: NodeJS.Timeout\n /** The url this queue will be handling. */\n url: string\n /** The time in milliseconds to wait before deleting this queue if it is empty. Defaults to 60000(one minute). */\n deleteQueueDelay?: number\n /** Authentication used for the request. In non-OAuth2 situations should be an empty string. Defaults to an empty string */\n authentication?: string\n}\n"],"names":["delay","logger","Queue","constructor","rest","options","remaining","max","interval","waiting","pending","processing","processingPending","firstRequest","frozenAt","deleteQueueDelay","authentication","url","timeoutId","isRequestAllowed","waitUntilRequestAvailable","Promise","resolve","push","processWaiting","length","debug","isOauth2Queue","shift","processPending","now","Date","future","request","basicURL","simplifyUrl","route","method","urlResetIn","checkRateLimits","requestBodyOptions","headers","bucketResetIn","bucketId","setTimeout","undefined","invalidBucket","sendRequest","catch","cleanup","handleCompletedRequest","makeRequest","isQueueClearable","clearTimeout","queues","delete","size","values","map","queue"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAErD,wBAAgB,YAAY,IAAI,UAAU,CAuiBzC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAErD,wBAAgB,YAAY,IAAI,UAAU,CA+kBzC"}
package/dist/routes.js CHANGED
@@ -36,6 +36,9 @@ export function createRoutes() {
36
36
  dm: ()=>{
37
37
  return '/users/@me/channels';
38
38
  },
39
+ dmRecipient: (channelId, userId)=>{
40
+ return `/channels/${channelId}/recipients/${userId}`;
41
+ },
39
42
  pin: (channelId, messageId)=>{
40
43
  return `/channels/${channelId}/pins/${messageId}`;
41
44
  },
@@ -187,6 +190,20 @@ export function createRoutes() {
187
190
  all: ()=>{
188
191
  return '/guilds';
189
192
  },
193
+ userGuilds: (options)=>{
194
+ let url = '/users/@me/guilds?';
195
+ if (options) {
196
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
197
+ if (options.after) url += `after=${options.after}`;
198
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
199
+ if (options.before) url += `&before=${options.before}`;
200
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
201
+ if (options.limit) url += `&limit=${options.limit}`;
202
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
203
+ if (options.withCounts) url += `&with_counts=${options.withCounts}`;
204
+ }
205
+ return url;
206
+ },
190
207
  auditlogs: (guildId, options)=>{
191
208
  let url = `/guilds/${guildId}/audit-logs?`;
192
209
  if (options) {
@@ -311,6 +328,9 @@ export function createRoutes() {
311
328
  member: (guildId, userId)=>{
312
329
  return `/guilds/${guildId}/members/${userId}`;
313
330
  },
331
+ currentMember: (guildId)=>{
332
+ return `/users/@me/guilds/${guildId}/member`;
333
+ },
314
334
  members: (guildId, options)=>{
315
335
  let url = `/guilds/${guildId}/members?`;
316
336
  if (options !== undefined) {
@@ -465,16 +485,34 @@ export function createRoutes() {
465
485
  }
466
486
  }
467
487
  },
488
+ // OAuth2 endpoints
489
+ oauth2: {
490
+ tokenExchange: ()=>{
491
+ return '/oauth2/token';
492
+ },
493
+ tokenRevoke: ()=>{
494
+ return '/oauth2/token/revoke';
495
+ },
496
+ currentAuthorization: ()=>{
497
+ return '/oauth2/@me';
498
+ },
499
+ application: ()=>{
500
+ return '/oauth2/applications/@me';
501
+ },
502
+ connections: ()=>{
503
+ return '/users/@me/connections';
504
+ },
505
+ roleConnections: (applicationId)=>{
506
+ return `/users/@me/applications/${applicationId}/role-connection`;
507
+ }
508
+ },
468
509
  // User endpoints
469
510
  user (userId) {
470
511
  return `/users/${userId}`;
471
512
  },
472
- userBot () {
513
+ currentUser () {
473
514
  return '/users/@me';
474
515
  },
475
- oauth2Application () {
476
- return 'oauth2/applications/@me';
477
- },
478
516
  gatewayBot () {
479
517
  return '/gateway/bot';
480
518
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes.ts"],"sourcesContent":["import type { GetMessagesOptions, GetScheduledEventUsers } from '@discordeno/types'\nimport { isGetMessagesAfter, isGetMessagesAround, isGetMessagesBefore, isGetMessagesLimit } from '@discordeno/utils'\nimport type { RestRoutes } from './typings/routes.js'\n\nexport function createRoutes(): RestRoutes {\n return {\n webhooks: {\n id: (webhookId) => {\n return `/webhooks/${webhookId}`\n },\n message: (webhookId, token, messageId, options) => {\n let url = `/webhooks/${webhookId}/${token}/messages/${messageId}?`\n\n if (options) {\n if (options.threadId) url += `thread_id=${options.threadId}`\n }\n\n return url\n },\n original: (webhookId, token, options) => {\n let url = `/webhooks/${webhookId}/${token}/messages/@original?`\n\n if (options) {\n if (options.threadId) url += `thread_id=${options.threadId}`\n }\n\n return url\n },\n webhook: (webhookId, token, options) => {\n let url = `/webhooks/${webhookId}/${token}?`\n\n if (options) {\n if (options?.wait !== undefined) url += `wait=${options.wait.toString()}`\n if (options.threadId) url += `thread_id=${options.threadId}`\n }\n\n return url\n },\n },\n\n // Channel Endpoints\n channels: {\n bulk: (channelId) => {\n return `/channels/${channelId}/messages/bulk-delete`\n },\n dm: () => {\n return '/users/@me/channels'\n },\n pin: (channelId, messageId) => {\n return `/channels/${channelId}/pins/${messageId}`\n },\n pins: (channelId) => {\n return `/channels/${channelId}/pins`\n },\n reactions: {\n bot: (channelId, messageId, emoji) => {\n return `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}/@me`\n },\n user: (channelId, messageId, emoji, userId) => {\n return `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}/${userId}`\n },\n all: (channelId, messageId) => {\n return `/channels/${channelId}/messages/${messageId}/reactions`\n },\n emoji: (channelId, messageId, emoji, options) => {\n let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after) url += `after=${options.after}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n }\n\n return url\n },\n message: (channelId, messageId, emoji, options) => {\n let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after) url += `after=${options.after}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n }\n\n return url\n },\n },\n webhooks: (channelId) => {\n return `/channels/${channelId}/webhooks`\n },\n\n channel: (channelId) => {\n return `/channels/${channelId}`\n },\n\n follow: (channelId) => {\n return `/channels/${channelId}/followers`\n },\n\n forum: (channelId) => {\n return `/channels/${channelId}/threads?has_message=true`\n },\n\n invites: (channelId) => {\n return `/channels/${channelId}/invites`\n },\n\n message: (channelId, messageId) => {\n return `/channels/${channelId}/messages/${messageId}`\n },\n\n messages: (channelId, options?: GetMessagesOptions) => {\n let url = `/channels/${channelId}/messages?`\n\n if (options) {\n if (isGetMessagesAfter(options) && options.after) {\n url += `after=${options.after}`\n }\n if (isGetMessagesBefore(options) && options.before) {\n url += `&before=${options.before}`\n }\n if (isGetMessagesAround(options) && options.around) {\n url += `&around=${options.around}`\n }\n if (isGetMessagesLimit(options) && options.limit) {\n url += `&limit=${options.limit}`\n }\n }\n\n return url\n },\n\n overwrite: (channelId, overwriteId) => {\n return `/channels/${channelId}/permissions/${overwriteId}`\n },\n\n crosspost: (channelId, messageId) => {\n return `/channels/${channelId}/messages/${messageId}/crosspost`\n },\n\n stages: () => {\n return '/stage-instances'\n },\n\n stage: (channelId) => {\n return `/stage-instances/${channelId}`\n },\n\n // Thread Endpoints\n threads: {\n message: (channelId, messageId) => {\n return `/channels/${channelId}/messages/${messageId}/threads`\n },\n all: (channelId) => {\n return `/channels/${channelId}/threads`\n },\n active: (guildId) => {\n return `/guilds/${guildId}/threads/active`\n },\n members: (channelId) => {\n return `/channels/${channelId}/thread-members`\n },\n me: (channelId) => {\n return `/channels/${channelId}/thread-members/@me`\n },\n user: (channelId, userId) => {\n return `/channels/${channelId}/thread-members/${userId}`\n },\n archived: (channelId) => {\n return `/channels/${channelId}/threads/archived`\n },\n public: (channelId, options) => {\n let url = `/channels/${channelId}/threads/archived/public?`\n\n if (options) {\n if (options.before) {\n url += `before=${new Date(options.before).toISOString()}`\n }\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n }\n\n return url\n },\n private: (channelId, options) => {\n let url = `/channels/${channelId}/threads/archived/private?`\n\n if (options) {\n if (options.before) {\n url += `before=${new Date(options.before).toISOString()}`\n }\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n }\n\n return url\n },\n joined: (channelId, options) => {\n let url = `/channels/${channelId}/users/@me/threads/archived/private?`\n\n if (options) {\n if (options.before) {\n url += `before=${new Date(options.before).toISOString()}`\n }\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n }\n\n return url\n },\n },\n\n typing: (channelId) => {\n return `/channels/${channelId}/typing`\n },\n },\n\n // Guild Endpoints\n guilds: {\n all: () => {\n return '/guilds'\n },\n auditlogs: (guildId, options) => {\n let url = `/guilds/${guildId}/audit-logs?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.actionType) url += `action_type=${options.actionType}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.before) url += `&before=${options.before}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after) url += `&after=${options.after}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.userId) url += `&user_id=${options.userId}`\n }\n\n return url\n },\n automod: {\n rule: (guildId, ruleId) => {\n return `/guilds/${guildId}/auto-moderation/rules/${ruleId}`\n },\n rules: (guildId) => {\n return `/guilds/${guildId}/auto-moderation/rules`\n },\n },\n channels: (guildId) => {\n return `/guilds/${guildId}/channels`\n },\n emoji: (guildId, emojiId) => {\n return `/guilds/${guildId}/emojis/${emojiId}`\n },\n emojis: (guildId) => {\n return `/guilds/${guildId}/emojis`\n },\n events: {\n events: (guildId, withUserCount?: boolean) => {\n let url = `/guilds/${guildId}/scheduled-events?`\n\n if (withUserCount !== undefined) {\n url += `with_user_count=${withUserCount.toString()}`\n }\n return url\n },\n event: (guildId, eventId, withUserCount?: boolean) => {\n let url = `/guilds/${guildId}/scheduled-events/${eventId}`\n\n if (withUserCount !== undefined) {\n url += `with_user_count=${withUserCount.toString()}`\n }\n\n return url\n },\n users: (guildId, eventId, options?: GetScheduledEventUsers) => {\n let url = `/guilds/${guildId}/scheduled-events/${eventId}/users?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit !== undefined) url += `limit=${options.limit}`\n if (options.withMember !== undefined) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&with_member=${options.withMember.toString()}`\n }\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after !== undefined) url += `&after=${options.after}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.before !== undefined) url += `&before=${options.before}`\n }\n\n return url\n },\n },\n guild(guildId, withCounts) {\n let url = `/guilds/${guildId}?`\n\n if (withCounts !== undefined) {\n url += `with_counts=${withCounts.toString()}`\n }\n\n return url\n },\n integration(guildId, integrationId) {\n return `/guilds/${guildId}/integrations/${integrationId}`\n },\n integrations: (guildId) => {\n return `/guilds/${guildId}/integrations?include_applications=true`\n },\n invite(inviteCode, options) {\n let url = `/invites/${inviteCode}?`\n\n if (options) {\n if (options.withCounts !== undefined) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `with_counts=${options.withCounts.toString()}`\n }\n if (options.withExpiration !== undefined) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&with_expiration=${options.withExpiration.toString()}`\n }\n if (options.scheduledEventId) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&guild_scheduled_event_id=${options.scheduledEventId}`\n }\n }\n\n return url\n },\n invites: (guildId) => {\n return `/guilds/${guildId}/invites`\n },\n leave: (guildId) => {\n return `/users/@me/guilds/${guildId}`\n },\n members: {\n ban: (guildId, userId) => {\n return `/guilds/${guildId}/bans/${userId}`\n },\n bans: (guildId, options) => {\n let url = `/guilds/${guildId}/bans?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `limit=${options.limit}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after) url += `&after=${options.after}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.before) url += `&before=${options.before}`\n }\n\n return url\n },\n bot: (guildId) => {\n return `/guilds/${guildId}/members/@me`\n },\n member: (guildId, userId) => {\n return `/guilds/${guildId}/members/${userId}`\n },\n members: (guildId, options) => {\n let url = `/guilds/${guildId}/members?`\n\n if (options !== undefined) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `limit=${options.limit}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after) url += `&after=${options.after}`\n }\n\n return url\n },\n search: (guildId, query, options) => {\n let url = `/guilds/${guildId}/members/search?query=${encodeURIComponent(query)}`\n\n if (options) {\n if (options.limit !== undefined) url += `&limit=${options.limit}`\n }\n\n return url\n },\n prune: (guildId, options) => {\n let url = `/guilds/${guildId}/prune?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.days) url += `days=${options.days}`\n if (Array.isArray(options.includeRoles)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&include_roles=${options.includeRoles.join(',')}`\n } else if (options.includeRoles) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&include_roles=${options.includeRoles}`\n }\n }\n\n return url\n },\n },\n mfa: (guildId) => `/guilds/${guildId}/mfa`,\n preview: (guildId) => {\n return `/guilds/${guildId}/preview`\n },\n prune: (guildId, options) => {\n let url = `/guilds/${guildId}/prune?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.days) url += `days=${options.days}`\n if (Array.isArray(options.includeRoles)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&include_roles=${options.includeRoles.join(',')}`\n } else if (options.includeRoles) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&include_roles=${options.includeRoles}`\n }\n }\n\n return url\n },\n roles: {\n one: (guildId, roleId) => {\n return `/guilds/${guildId}/roles/${roleId}`\n },\n all: (guildId) => {\n return `/guilds/${guildId}/roles`\n },\n member: (guildId, memberId, roleId) => {\n return `/guilds/${guildId}/members/${memberId}/roles/${roleId}`\n },\n },\n stickers: (guildId) => {\n return `/guilds/${guildId}/stickers`\n },\n sticker: (guildId, stickerId) => {\n return `/guilds/${guildId}/stickers/${stickerId}`\n },\n voice: (guildId, userId) => {\n return `/guilds/${guildId}/voice-states/${userId ?? '@me'}`\n },\n templates: {\n code: (code) => {\n return `/guilds/templates/${code}`\n },\n guild: (guildId, code) => {\n return `/guilds/${guildId}/templates/${code}`\n },\n all: (guildId) => {\n return `/guilds/${guildId}/templates`\n },\n },\n vanity: (guildId) => {\n return `/guilds/${guildId}/vanity-url`\n },\n regions: (guildId) => {\n return `/guilds/${guildId}/regions`\n },\n webhooks: (guildId) => {\n return `/guilds/${guildId}/webhooks`\n },\n welcome: (guildId) => {\n return `/guilds/${guildId}/welcome-screen`\n },\n widget: (guildId) => {\n return `/guilds/${guildId}/widget`\n },\n widgetJson: (guildId) => {\n return `/guilds/${guildId}/widget.json`\n },\n },\n\n sticker: (stickerId) => {\n return `/stickers/${stickerId}`\n },\n\n regions: () => {\n return '/voice/regions'\n },\n\n // Interaction Endpoints\n interactions: {\n commands: {\n // Application Endpoints\n commands: (applicationId) => {\n return `/applications/${applicationId}/commands`\n },\n\n guilds: {\n all(applicationId, guildId) {\n return `/applications/${applicationId}/guilds/${guildId}/commands`\n },\n\n one(applicationId, guildId, commandId, withLocalizations) {\n let url = `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}?`\n\n if (withLocalizations !== undefined) {\n url += `with_localizations=${withLocalizations.toString()}`\n }\n\n return url\n },\n },\n permissions: (applicationId, guildId) => {\n return `/applications/${applicationId}/guilds/${guildId}/commands/permissions`\n },\n permission: (applicationId, guildId, commandId) => {\n return `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}/permissions`\n },\n command: (applicationId, commandId, withLocalizations) => {\n let url = `/applications/${applicationId}/commands/${commandId}?`\n\n if (withLocalizations !== undefined) {\n url += `withLocalizations=${withLocalizations.toString()}`\n }\n\n return url\n },\n },\n\n responses: {\n // Interaction Endpoints\n callback: (interactionId, token) => {\n return `/interactions/${interactionId}/${token}/callback`\n },\n original: (interactionId, token) => {\n return `/webhooks/${interactionId}/${token}/messages/@original`\n },\n message: (applicationId, token, messageId) => {\n return `/webhooks/${applicationId}/${token}/messages/${messageId}`\n },\n },\n },\n\n // User endpoints\n user(userId) {\n return `/users/${userId}`\n },\n\n userBot() {\n return '/users/@me'\n },\n\n oauth2Application() {\n return 'oauth2/applications/@me'\n },\n\n gatewayBot() {\n return '/gateway/bot'\n },\n\n nitroStickerPacks() {\n return '/sticker-packs'\n },\n }\n}\n"],"names":["isGetMessagesAfter","isGetMessagesAround","isGetMessagesBefore","isGetMessagesLimit","createRoutes","webhooks","id","webhookId","message","token","messageId","options","url","threadId","original","webhook","wait","undefined","toString","channels","bulk","channelId","dm","pin","pins","reactions","bot","emoji","encodeURIComponent","user","userId","all","after","limit","channel","follow","forum","invites","messages","before","around","overwrite","overwriteId","crosspost","stages","stage","threads","active","guildId","members","me","archived","public","Date","toISOString","private","joined","typing","guilds","auditlogs","actionType","automod","rule","ruleId","rules","emojiId","emojis","events","withUserCount","event","eventId","users","withMember","guild","withCounts","integration","integrationId","integrations","invite","inviteCode","withExpiration","scheduledEventId","leave","ban","bans","member","search","query","prune","days","Array","isArray","includeRoles","join","mfa","preview","roles","one","roleId","memberId","stickers","sticker","stickerId","voice","templates","code","vanity","regions","welcome","widget","widgetJson","interactions","commands","applicationId","commandId","withLocalizations","permissions","permission","command","responses","callback","interactionId","userBot","oauth2Application","gatewayBot","nitroStickerPacks"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/routes.ts"],"sourcesContent":["import type { GetMessagesOptions, GetScheduledEventUsers } from '@discordeno/types'\nimport { isGetMessagesAfter, isGetMessagesAround, isGetMessagesBefore, isGetMessagesLimit } from '@discordeno/utils'\nimport type { RestRoutes } from './typings/routes.js'\n\nexport function createRoutes(): RestRoutes {\n return {\n webhooks: {\n id: (webhookId) => {\n return `/webhooks/${webhookId}`\n },\n message: (webhookId, token, messageId, options) => {\n let url = `/webhooks/${webhookId}/${token}/messages/${messageId}?`\n\n if (options) {\n if (options.threadId) url += `thread_id=${options.threadId}`\n }\n\n return url\n },\n original: (webhookId, token, options) => {\n let url = `/webhooks/${webhookId}/${token}/messages/@original?`\n\n if (options) {\n if (options.threadId) url += `thread_id=${options.threadId}`\n }\n\n return url\n },\n webhook: (webhookId, token, options) => {\n let url = `/webhooks/${webhookId}/${token}?`\n\n if (options) {\n if (options?.wait !== undefined) url += `wait=${options.wait.toString()}`\n if (options.threadId) url += `thread_id=${options.threadId}`\n }\n\n return url\n },\n },\n\n // Channel Endpoints\n channels: {\n bulk: (channelId) => {\n return `/channels/${channelId}/messages/bulk-delete`\n },\n dm: () => {\n return '/users/@me/channels'\n },\n dmRecipient: (channelId, userId) => {\n return `/channels/${channelId}/recipients/${userId}`\n },\n pin: (channelId, messageId) => {\n return `/channels/${channelId}/pins/${messageId}`\n },\n pins: (channelId) => {\n return `/channels/${channelId}/pins`\n },\n reactions: {\n bot: (channelId, messageId, emoji) => {\n return `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}/@me`\n },\n user: (channelId, messageId, emoji, userId) => {\n return `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}/${userId}`\n },\n all: (channelId, messageId) => {\n return `/channels/${channelId}/messages/${messageId}/reactions`\n },\n emoji: (channelId, messageId, emoji, options) => {\n let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after) url += `after=${options.after}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n }\n\n return url\n },\n message: (channelId, messageId, emoji, options) => {\n let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after) url += `after=${options.after}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n }\n\n return url\n },\n },\n webhooks: (channelId) => {\n return `/channels/${channelId}/webhooks`\n },\n\n channel: (channelId) => {\n return `/channels/${channelId}`\n },\n\n follow: (channelId) => {\n return `/channels/${channelId}/followers`\n },\n\n forum: (channelId) => {\n return `/channels/${channelId}/threads?has_message=true`\n },\n\n invites: (channelId) => {\n return `/channels/${channelId}/invites`\n },\n\n message: (channelId, messageId) => {\n return `/channels/${channelId}/messages/${messageId}`\n },\n\n messages: (channelId, options?: GetMessagesOptions) => {\n let url = `/channels/${channelId}/messages?`\n\n if (options) {\n if (isGetMessagesAfter(options) && options.after) {\n url += `after=${options.after}`\n }\n if (isGetMessagesBefore(options) && options.before) {\n url += `&before=${options.before}`\n }\n if (isGetMessagesAround(options) && options.around) {\n url += `&around=${options.around}`\n }\n if (isGetMessagesLimit(options) && options.limit) {\n url += `&limit=${options.limit}`\n }\n }\n\n return url\n },\n\n overwrite: (channelId, overwriteId) => {\n return `/channels/${channelId}/permissions/${overwriteId}`\n },\n\n crosspost: (channelId, messageId) => {\n return `/channels/${channelId}/messages/${messageId}/crosspost`\n },\n\n stages: () => {\n return '/stage-instances'\n },\n\n stage: (channelId) => {\n return `/stage-instances/${channelId}`\n },\n\n // Thread Endpoints\n threads: {\n message: (channelId, messageId) => {\n return `/channels/${channelId}/messages/${messageId}/threads`\n },\n all: (channelId) => {\n return `/channels/${channelId}/threads`\n },\n active: (guildId) => {\n return `/guilds/${guildId}/threads/active`\n },\n members: (channelId) => {\n return `/channels/${channelId}/thread-members`\n },\n me: (channelId) => {\n return `/channels/${channelId}/thread-members/@me`\n },\n user: (channelId, userId) => {\n return `/channels/${channelId}/thread-members/${userId}`\n },\n archived: (channelId) => {\n return `/channels/${channelId}/threads/archived`\n },\n public: (channelId, options) => {\n let url = `/channels/${channelId}/threads/archived/public?`\n\n if (options) {\n if (options.before) {\n url += `before=${new Date(options.before).toISOString()}`\n }\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n }\n\n return url\n },\n private: (channelId, options) => {\n let url = `/channels/${channelId}/threads/archived/private?`\n\n if (options) {\n if (options.before) {\n url += `before=${new Date(options.before).toISOString()}`\n }\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n }\n\n return url\n },\n joined: (channelId, options) => {\n let url = `/channels/${channelId}/users/@me/threads/archived/private?`\n\n if (options) {\n if (options.before) {\n url += `before=${new Date(options.before).toISOString()}`\n }\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n }\n\n return url\n },\n },\n\n typing: (channelId) => {\n return `/channels/${channelId}/typing`\n },\n },\n\n // Guild Endpoints\n guilds: {\n all: () => {\n return '/guilds'\n },\n userGuilds: (options) => {\n let url = '/users/@me/guilds?'\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after) url += `after=${options.after}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.before) url += `&before=${options.before}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.withCounts) url += `&with_counts=${options.withCounts}`\n }\n\n return url\n },\n auditlogs: (guildId, options) => {\n let url = `/guilds/${guildId}/audit-logs?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.actionType) url += `action_type=${options.actionType}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.before) url += `&before=${options.before}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after) url += `&after=${options.after}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `&limit=${options.limit}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.userId) url += `&user_id=${options.userId}`\n }\n\n return url\n },\n automod: {\n rule: (guildId, ruleId) => {\n return `/guilds/${guildId}/auto-moderation/rules/${ruleId}`\n },\n rules: (guildId) => {\n return `/guilds/${guildId}/auto-moderation/rules`\n },\n },\n channels: (guildId) => {\n return `/guilds/${guildId}/channels`\n },\n emoji: (guildId, emojiId) => {\n return `/guilds/${guildId}/emojis/${emojiId}`\n },\n emojis: (guildId) => {\n return `/guilds/${guildId}/emojis`\n },\n events: {\n events: (guildId, withUserCount?: boolean) => {\n let url = `/guilds/${guildId}/scheduled-events?`\n\n if (withUserCount !== undefined) {\n url += `with_user_count=${withUserCount.toString()}`\n }\n return url\n },\n event: (guildId, eventId, withUserCount?: boolean) => {\n let url = `/guilds/${guildId}/scheduled-events/${eventId}`\n\n if (withUserCount !== undefined) {\n url += `with_user_count=${withUserCount.toString()}`\n }\n\n return url\n },\n users: (guildId, eventId, options?: GetScheduledEventUsers) => {\n let url = `/guilds/${guildId}/scheduled-events/${eventId}/users?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit !== undefined) url += `limit=${options.limit}`\n if (options.withMember !== undefined) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&with_member=${options.withMember.toString()}`\n }\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after !== undefined) url += `&after=${options.after}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.before !== undefined) url += `&before=${options.before}`\n }\n\n return url\n },\n },\n guild(guildId, withCounts) {\n let url = `/guilds/${guildId}?`\n\n if (withCounts !== undefined) {\n url += `with_counts=${withCounts.toString()}`\n }\n\n return url\n },\n integration(guildId, integrationId) {\n return `/guilds/${guildId}/integrations/${integrationId}`\n },\n integrations: (guildId) => {\n return `/guilds/${guildId}/integrations?include_applications=true`\n },\n invite(inviteCode, options) {\n let url = `/invites/${inviteCode}?`\n\n if (options) {\n if (options.withCounts !== undefined) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `with_counts=${options.withCounts.toString()}`\n }\n if (options.withExpiration !== undefined) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&with_expiration=${options.withExpiration.toString()}`\n }\n if (options.scheduledEventId) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&guild_scheduled_event_id=${options.scheduledEventId}`\n }\n }\n\n return url\n },\n invites: (guildId) => {\n return `/guilds/${guildId}/invites`\n },\n leave: (guildId) => {\n return `/users/@me/guilds/${guildId}`\n },\n members: {\n ban: (guildId, userId) => {\n return `/guilds/${guildId}/bans/${userId}`\n },\n bans: (guildId, options) => {\n let url = `/guilds/${guildId}/bans?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `limit=${options.limit}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after) url += `&after=${options.after}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.before) url += `&before=${options.before}`\n }\n\n return url\n },\n bot: (guildId) => {\n return `/guilds/${guildId}/members/@me`\n },\n member: (guildId, userId) => {\n return `/guilds/${guildId}/members/${userId}`\n },\n currentMember: (guildId) => {\n return `/users/@me/guilds/${guildId}/member`\n },\n members: (guildId, options) => {\n let url = `/guilds/${guildId}/members?`\n\n if (options !== undefined) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.limit) url += `limit=${options.limit}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.after) url += `&after=${options.after}`\n }\n\n return url\n },\n search: (guildId, query, options) => {\n let url = `/guilds/${guildId}/members/search?query=${encodeURIComponent(query)}`\n\n if (options) {\n if (options.limit !== undefined) url += `&limit=${options.limit}`\n }\n\n return url\n },\n prune: (guildId, options) => {\n let url = `/guilds/${guildId}/prune?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.days) url += `days=${options.days}`\n if (Array.isArray(options.includeRoles)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&include_roles=${options.includeRoles.join(',')}`\n } else if (options.includeRoles) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&include_roles=${options.includeRoles}`\n }\n }\n\n return url\n },\n },\n mfa: (guildId) => `/guilds/${guildId}/mfa`,\n preview: (guildId) => {\n return `/guilds/${guildId}/preview`\n },\n prune: (guildId, options) => {\n let url = `/guilds/${guildId}/prune?`\n\n if (options) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.days) url += `days=${options.days}`\n if (Array.isArray(options.includeRoles)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&include_roles=${options.includeRoles.join(',')}`\n } else if (options.includeRoles) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n url += `&include_roles=${options.includeRoles}`\n }\n }\n\n return url\n },\n roles: {\n one: (guildId, roleId) => {\n return `/guilds/${guildId}/roles/${roleId}`\n },\n all: (guildId) => {\n return `/guilds/${guildId}/roles`\n },\n member: (guildId, memberId, roleId) => {\n return `/guilds/${guildId}/members/${memberId}/roles/${roleId}`\n },\n },\n stickers: (guildId) => {\n return `/guilds/${guildId}/stickers`\n },\n sticker: (guildId, stickerId) => {\n return `/guilds/${guildId}/stickers/${stickerId}`\n },\n voice: (guildId, userId) => {\n return `/guilds/${guildId}/voice-states/${userId ?? '@me'}`\n },\n templates: {\n code: (code) => {\n return `/guilds/templates/${code}`\n },\n guild: (guildId, code) => {\n return `/guilds/${guildId}/templates/${code}`\n },\n all: (guildId) => {\n return `/guilds/${guildId}/templates`\n },\n },\n vanity: (guildId) => {\n return `/guilds/${guildId}/vanity-url`\n },\n regions: (guildId) => {\n return `/guilds/${guildId}/regions`\n },\n webhooks: (guildId) => {\n return `/guilds/${guildId}/webhooks`\n },\n welcome: (guildId) => {\n return `/guilds/${guildId}/welcome-screen`\n },\n widget: (guildId) => {\n return `/guilds/${guildId}/widget`\n },\n widgetJson: (guildId) => {\n return `/guilds/${guildId}/widget.json`\n },\n },\n\n sticker: (stickerId) => {\n return `/stickers/${stickerId}`\n },\n\n regions: () => {\n return '/voice/regions'\n },\n\n // Interaction Endpoints\n interactions: {\n commands: {\n // Application Endpoints\n commands: (applicationId) => {\n return `/applications/${applicationId}/commands`\n },\n\n guilds: {\n all(applicationId, guildId) {\n return `/applications/${applicationId}/guilds/${guildId}/commands`\n },\n\n one(applicationId, guildId, commandId, withLocalizations) {\n let url = `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}?`\n\n if (withLocalizations !== undefined) {\n url += `with_localizations=${withLocalizations.toString()}`\n }\n\n return url\n },\n },\n permissions: (applicationId, guildId) => {\n return `/applications/${applicationId}/guilds/${guildId}/commands/permissions`\n },\n permission: (applicationId, guildId, commandId) => {\n return `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}/permissions`\n },\n command: (applicationId, commandId, withLocalizations) => {\n let url = `/applications/${applicationId}/commands/${commandId}?`\n\n if (withLocalizations !== undefined) {\n url += `withLocalizations=${withLocalizations.toString()}`\n }\n\n return url\n },\n },\n\n responses: {\n // Interaction Endpoints\n callback: (interactionId, token) => {\n return `/interactions/${interactionId}/${token}/callback`\n },\n original: (interactionId, token) => {\n return `/webhooks/${interactionId}/${token}/messages/@original`\n },\n message: (applicationId, token, messageId) => {\n return `/webhooks/${applicationId}/${token}/messages/${messageId}`\n },\n },\n },\n\n // OAuth2 endpoints\n oauth2: {\n tokenExchange: () => {\n return '/oauth2/token'\n },\n tokenRevoke: () => {\n return '/oauth2/token/revoke'\n },\n currentAuthorization: () => {\n return '/oauth2/@me'\n },\n application: () => {\n return '/oauth2/applications/@me'\n },\n connections: () => {\n return '/users/@me/connections'\n },\n roleConnections: (applicationId) => {\n return `/users/@me/applications/${applicationId}/role-connection`\n },\n },\n\n // User endpoints\n user(userId) {\n return `/users/${userId}`\n },\n\n currentUser() {\n return '/users/@me'\n },\n\n gatewayBot() {\n return '/gateway/bot'\n },\n\n nitroStickerPacks() {\n return '/sticker-packs'\n },\n }\n}\n"],"names":["isGetMessagesAfter","isGetMessagesAround","isGetMessagesBefore","isGetMessagesLimit","createRoutes","webhooks","id","webhookId","message","token","messageId","options","url","threadId","original","webhook","wait","undefined","toString","channels","bulk","channelId","dm","dmRecipient","userId","pin","pins","reactions","bot","emoji","encodeURIComponent","user","all","after","limit","channel","follow","forum","invites","messages","before","around","overwrite","overwriteId","crosspost","stages","stage","threads","active","guildId","members","me","archived","public","Date","toISOString","private","joined","typing","guilds","userGuilds","withCounts","auditlogs","actionType","automod","rule","ruleId","rules","emojiId","emojis","events","withUserCount","event","eventId","users","withMember","guild","integration","integrationId","integrations","invite","inviteCode","withExpiration","scheduledEventId","leave","ban","bans","member","currentMember","search","query","prune","days","Array","isArray","includeRoles","join","mfa","preview","roles","one","roleId","memberId","stickers","sticker","stickerId","voice","templates","code","vanity","regions","welcome","widget","widgetJson","interactions","commands","applicationId","commandId","withLocalizations","permissions","permission","command","responses","callback","interactionId","oauth2","tokenExchange","tokenRevoke","currentAuthorization","application","connections","roleConnections","currentUser","gatewayBot","nitroStickerPacks"],"mappings":"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"}