oceanic.js 1.10.3-dev.c6c9f52 → 1.10.3-dev.ca8b6e8

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.
Files changed (205) hide show
  1. package/dist/lib/Client.d.ts +99 -0
  2. package/dist/lib/Client.js +263 -0
  3. package/dist/lib/Constants.d.ts +1215 -0
  4. package/dist/lib/Constants.js +1513 -0
  5. package/dist/lib/gateway/Shard.d.ts +83 -0
  6. package/dist/lib/gateway/Shard.js +1621 -0
  7. package/dist/lib/gateway/ShardManager.d.ts +29 -0
  8. package/dist/lib/gateway/ShardManager.js +300 -0
  9. package/dist/lib/index.d.ts +84 -0
  10. package/dist/lib/index.js +168 -0
  11. package/dist/lib/rest/Bucket.d.ts +33 -0
  12. package/dist/lib/rest/Bucket.js +78 -0
  13. package/dist/lib/rest/DiscordHTTPError.d.ts +16 -0
  14. package/dist/lib/rest/DiscordHTTPError.js +65 -0
  15. package/dist/lib/rest/DiscordRESTError.d.ts +19 -0
  16. package/dist/lib/rest/DiscordRESTError.js +89 -0
  17. package/dist/lib/rest/OAuthHelper.d.ts +62 -0
  18. package/dist/lib/rest/OAuthHelper.js +183 -0
  19. package/dist/lib/rest/RESTManager.d.ts +42 -0
  20. package/dist/lib/rest/RESTManager.js +82 -0
  21. package/dist/lib/rest/RequestHandler.d.ts +28 -0
  22. package/dist/lib/rest/RequestHandler.js +313 -0
  23. package/dist/lib/rest/SequentialBucket.d.ts +25 -0
  24. package/dist/lib/rest/SequentialBucket.js +76 -0
  25. package/dist/lib/routes/Applications.d.ts +171 -0
  26. package/dist/lib/routes/Applications.js +447 -0
  27. package/dist/lib/routes/Channels.d.ts +408 -0
  28. package/dist/lib/routes/Channels.js +1160 -0
  29. package/dist/lib/routes/Guilds.d.ts +606 -0
  30. package/dist/lib/routes/Guilds.js +1669 -0
  31. package/dist/lib/routes/Interactions.d.ts +74 -0
  32. package/dist/lib/routes/Interactions.js +141 -0
  33. package/dist/lib/routes/Miscellaneous.d.ts +31 -0
  34. package/dist/lib/routes/Miscellaneous.js +69 -0
  35. package/dist/lib/routes/OAuth.d.ts +108 -0
  36. package/dist/lib/routes/OAuth.js +312 -0
  37. package/dist/lib/routes/Users.d.ts +32 -0
  38. package/dist/lib/routes/Users.js +59 -0
  39. package/dist/lib/routes/Webhooks.d.ts +128 -0
  40. package/dist/lib/routes/Webhooks.js +265 -0
  41. package/dist/lib/structures/AnnouncementChannel.d.ts +36 -0
  42. package/dist/lib/structures/AnnouncementChannel.js +47 -0
  43. package/dist/lib/structures/AnnouncementThreadChannel.d.ts +18 -0
  44. package/dist/lib/structures/AnnouncementThreadChannel.js +27 -0
  45. package/dist/lib/structures/Application.d.ts +102 -0
  46. package/dist/lib/structures/Application.js +189 -0
  47. package/dist/lib/structures/ApplicationCommand.d.ts +74 -0
  48. package/dist/lib/structures/ApplicationCommand.js +141 -0
  49. package/dist/lib/structures/Attachment.d.ts +34 -0
  50. package/dist/lib/structures/Attachment.js +64 -0
  51. package/dist/lib/structures/AuditLogEntry.d.ts +25 -0
  52. package/dist/lib/structures/AuditLogEntry.js +53 -0
  53. package/dist/lib/structures/AutoModerationRule.d.ts +49 -0
  54. package/dist/lib/structures/AutoModerationRule.js +139 -0
  55. package/dist/lib/structures/AutocompleteInteraction.d.ts +62 -0
  56. package/dist/lib/structures/AutocompleteInteraction.js +115 -0
  57. package/dist/lib/structures/Base.d.ts +20 -0
  58. package/dist/lib/structures/Base.js +58 -0
  59. package/dist/lib/structures/BaseEntitlement.d.ts +19 -0
  60. package/dist/lib/structures/BaseEntitlement.js +44 -0
  61. package/dist/lib/structures/CategoryChannel.d.ts +41 -0
  62. package/dist/lib/structures/CategoryChannel.js +105 -0
  63. package/dist/lib/structures/Channel.d.ts +20 -0
  64. package/dist/lib/structures/Channel.js +91 -0
  65. package/dist/lib/structures/ClientApplication.d.ts +153 -0
  66. package/dist/lib/structures/ClientApplication.js +220 -0
  67. package/dist/lib/structures/CommandInteraction.d.ts +127 -0
  68. package/dist/lib/structures/CommandInteraction.js +297 -0
  69. package/dist/lib/structures/ComponentInteraction.d.ts +137 -0
  70. package/dist/lib/structures/ComponentInteraction.js +311 -0
  71. package/dist/lib/structures/Entitlement.d.ts +12 -0
  72. package/dist/lib/structures/Entitlement.js +26 -0
  73. package/dist/lib/structures/ExtendedUser.d.ts +26 -0
  74. package/dist/lib/structures/ExtendedUser.js +57 -0
  75. package/dist/lib/structures/ForumChannel.d.ts +11 -0
  76. package/dist/lib/structures/ForumChannel.js +19 -0
  77. package/dist/lib/structures/GroupChannel.d.ts +62 -0
  78. package/dist/lib/structures/GroupChannel.js +133 -0
  79. package/dist/lib/structures/Guild.d.ts +654 -0
  80. package/dist/lib/structures/Guild.js +1319 -0
  81. package/dist/lib/structures/GuildChannel.d.ts +34 -0
  82. package/dist/lib/structures/GuildChannel.js +75 -0
  83. package/dist/lib/structures/GuildPreview.d.ts +50 -0
  84. package/dist/lib/structures/GuildPreview.js +119 -0
  85. package/dist/lib/structures/GuildScheduledEvent.d.ts +60 -0
  86. package/dist/lib/structures/GuildScheduledEvent.js +154 -0
  87. package/dist/lib/structures/GuildTemplate.d.ts +55 -0
  88. package/dist/lib/structures/GuildTemplate.js +126 -0
  89. package/dist/lib/structures/Integration.d.ts +54 -0
  90. package/dist/lib/structures/Integration.js +156 -0
  91. package/dist/lib/structures/Interaction.d.ts +40 -0
  92. package/dist/lib/structures/Interaction.js +90 -0
  93. package/dist/lib/structures/InteractionResolvedChannel.d.ts +28 -0
  94. package/dist/lib/structures/InteractionResolvedChannel.js +45 -0
  95. package/dist/lib/structures/Invite.d.ts +64 -0
  96. package/dist/lib/structures/Invite.js +193 -0
  97. package/dist/lib/structures/InviteGuild.d.ts +52 -0
  98. package/dist/lib/structures/InviteGuild.js +88 -0
  99. package/dist/lib/structures/MediaChannel.d.ts +11 -0
  100. package/dist/lib/structures/MediaChannel.js +19 -0
  101. package/dist/lib/structures/Member.d.ts +122 -0
  102. package/dist/lib/structures/Member.js +255 -0
  103. package/dist/lib/structures/Message.d.ts +194 -0
  104. package/dist/lib/structures/Message.js +477 -0
  105. package/dist/lib/structures/ModalSubmitInteraction.d.ts +128 -0
  106. package/dist/lib/structures/ModalSubmitInteraction.js +240 -0
  107. package/dist/lib/structures/OAuthApplication.d.ts +79 -0
  108. package/dist/lib/structures/OAuthApplication.js +210 -0
  109. package/dist/lib/structures/OAuthGuild.d.ts +35 -0
  110. package/dist/lib/structures/OAuthGuild.js +61 -0
  111. package/dist/lib/structures/PartialApplication.d.ts +30 -0
  112. package/dist/lib/structures/PartialApplication.js +67 -0
  113. package/dist/lib/structures/Permission.d.ts +21 -0
  114. package/dist/lib/structures/Permission.js +68 -0
  115. package/dist/lib/structures/PermissionOverwrite.d.ts +26 -0
  116. package/dist/lib/structures/PermissionOverwrite.js +49 -0
  117. package/dist/lib/structures/PingInteraction.d.ts +16 -0
  118. package/dist/lib/structures/PingInteraction.js +26 -0
  119. package/dist/lib/structures/Poll.d.ts +28 -0
  120. package/dist/lib/structures/Poll.js +78 -0
  121. package/dist/lib/structures/PrivateChannel.d.ts +90 -0
  122. package/dist/lib/structures/PrivateChannel.js +131 -0
  123. package/dist/lib/structures/PrivateThreadChannel.d.ts +18 -0
  124. package/dist/lib/structures/PrivateThreadChannel.js +27 -0
  125. package/dist/lib/structures/PublicThreadChannel.d.ts +21 -0
  126. package/dist/lib/structures/PublicThreadChannel.js +37 -0
  127. package/dist/lib/structures/Role.d.ts +52 -0
  128. package/dist/lib/structures/Role.js +137 -0
  129. package/dist/lib/structures/SKU.d.ts +32 -0
  130. package/dist/lib/structures/SKU.js +53 -0
  131. package/dist/lib/structures/StageChannel.d.ts +33 -0
  132. package/dist/lib/structures/StageChannel.js +44 -0
  133. package/dist/lib/structures/StageInstance.d.ts +36 -0
  134. package/dist/lib/structures/StageInstance.js +94 -0
  135. package/dist/lib/structures/Team.d.ts +22 -0
  136. package/dist/lib/structures/Team.js +67 -0
  137. package/dist/lib/structures/TestEntitlement.d.ts +10 -0
  138. package/dist/lib/structures/TestEntitlement.js +21 -0
  139. package/dist/lib/structures/TextChannel.d.ts +34 -0
  140. package/dist/lib/structures/TextChannel.js +46 -0
  141. package/dist/lib/structures/TextableChannel.d.ts +158 -0
  142. package/dist/lib/structures/TextableChannel.js +276 -0
  143. package/dist/lib/structures/TextableVoiceChannel.d.ts +39 -0
  144. package/dist/lib/structures/TextableVoiceChannel.js +81 -0
  145. package/dist/lib/structures/ThreadChannel.d.ts +159 -0
  146. package/dist/lib/structures/ThreadChannel.js +295 -0
  147. package/dist/lib/structures/ThreadOnlyChannel.d.ts +99 -0
  148. package/dist/lib/structures/ThreadOnlyChannel.js +233 -0
  149. package/dist/lib/structures/ThreadableChannel.d.ts +36 -0
  150. package/dist/lib/structures/ThreadableChannel.js +58 -0
  151. package/dist/lib/structures/UnavailableGuild.d.ts +11 -0
  152. package/dist/lib/structures/UnavailableGuild.js +21 -0
  153. package/dist/lib/structures/User.d.ts +82 -0
  154. package/dist/lib/structures/User.js +168 -0
  155. package/dist/lib/structures/VoiceChannel.d.ts +20 -0
  156. package/dist/lib/structures/VoiceChannel.js +35 -0
  157. package/dist/lib/structures/VoiceState.d.ts +51 -0
  158. package/dist/lib/structures/VoiceState.js +140 -0
  159. package/dist/lib/structures/Webhook.d.ts +129 -0
  160. package/dist/lib/structures/Webhook.js +206 -0
  161. package/dist/lib/types/applications.d.ts +466 -0
  162. package/dist/lib/types/audit-log.d.ts +122 -0
  163. package/dist/lib/types/auto-moderation.d.ts +99 -0
  164. package/dist/lib/types/channels.d.ts +1244 -0
  165. package/dist/lib/types/client.d.ts +228 -0
  166. package/dist/lib/types/events.d.ts +265 -0
  167. package/dist/lib/types/gateway-raw.d.ts +584 -0
  168. package/dist/lib/types/gateway.d.ts +351 -0
  169. package/dist/lib/types/guild-template.d.ts +33 -0
  170. package/dist/lib/types/guilds.d.ts +855 -0
  171. package/dist/lib/types/index.d.ts +18 -0
  172. package/dist/lib/types/interactions.d.ts +377 -0
  173. package/dist/lib/types/json.d.ts +742 -0
  174. package/dist/lib/types/misc.d.ts +28 -0
  175. package/dist/lib/types/oauth.d.ts +201 -0
  176. package/dist/lib/types/request-handler.d.ts +52 -0
  177. package/dist/lib/types/scheduled-events.d.ts +88 -0
  178. package/dist/lib/types/shared.d.ts +9 -0
  179. package/dist/lib/types/users.d.ts +45 -0
  180. package/dist/lib/types/voice.d.ts +45 -0
  181. package/dist/lib/types/webhooks.d.ts +74 -0
  182. package/dist/lib/util/Collection.d.ts +47 -0
  183. package/dist/lib/util/Collection.js +78 -0
  184. package/dist/lib/util/Errors.d.ts +29 -0
  185. package/dist/lib/util/Errors.js +56 -0
  186. package/dist/lib/util/Routes.d.ts +127 -0
  187. package/dist/lib/util/Routes.js +248 -0
  188. package/dist/lib/util/SimpleCollection.d.ts +12 -0
  189. package/dist/lib/util/SimpleCollection.js +81 -0
  190. package/dist/lib/util/TypedCollection.d.ts +24 -0
  191. package/dist/lib/util/TypedCollection.js +76 -0
  192. package/dist/lib/util/TypedEmitter.d.ts +19 -0
  193. package/dist/lib/util/TypedEmitter.js +19 -0
  194. package/dist/lib/util/Util.d.ts +58 -0
  195. package/dist/lib/util/Util.js +535 -0
  196. package/dist/lib/util/interactions/InteractionOptionsWrapper.d.ts +170 -0
  197. package/dist/lib/util/interactions/InteractionOptionsWrapper.js +213 -0
  198. package/dist/lib/util/interactions/MessageInteractionResponse.d.ts +24 -0
  199. package/dist/lib/util/interactions/MessageInteractionResponse.js +28 -0
  200. package/dist/lib/util/interactions/ModalSubmitInteractionComponentsWrapper.d.ts +24 -0
  201. package/dist/lib/util/interactions/ModalSubmitInteractionComponentsWrapper.js +34 -0
  202. package/dist/lib/util/interactions/SelectMenuValuesWrapper.d.ts +60 -0
  203. package/dist/lib/util/interactions/SelectMenuValuesWrapper.js +124 -0
  204. package/dist/package.json +1 -1
  205. package/package.json +1 -1
@@ -0,0 +1,33 @@
1
+ /** @module Bucket */
2
+ /**
3
+ * lovingly borrowed from eris
4
+ * https://github.com/abalabahaha/eris/blob/dev/lib/util/Bucket.js (eb403730855714eafa36c541dbe2cb84c9979158)
5
+ */
6
+ /// <reference types="node" />
7
+ /** A bucket. */
8
+ export default class Bucket {
9
+ private _queue;
10
+ interval: number;
11
+ lastReset: number;
12
+ lastSend: number;
13
+ latencyRef: {
14
+ latency: number;
15
+ };
16
+ reservedTokens: number;
17
+ timeout: NodeJS.Timeout | null;
18
+ tokenLimit: number;
19
+ tokens: number;
20
+ constructor(tokenLimit: number, interval: number, options?: {
21
+ latencyRef?: {
22
+ latency: number;
23
+ };
24
+ reservedTokens?: number;
25
+ });
26
+ private check;
27
+ /**
28
+ * Add an item to the queue.
29
+ * @param func The function to queue.
30
+ * @param priority If true, the item will be added to the front of the queue.
31
+ */
32
+ queue(func: () => void, priority?: boolean): void;
33
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ /** @module Bucket */
3
+ /**
4
+ * lovingly borrowed from eris
5
+ * https://github.com/abalabahaha/eris/blob/dev/lib/util/Bucket.js (eb403730855714eafa36c541dbe2cb84c9979158)
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ /** A bucket. */
9
+ class Bucket {
10
+ _queue = [];
11
+ interval;
12
+ lastReset;
13
+ lastSend;
14
+ latencyRef;
15
+ reservedTokens;
16
+ timeout;
17
+ tokenLimit;
18
+ tokens;
19
+ constructor(tokenLimit, interval, options) {
20
+ this.tokenLimit = tokenLimit;
21
+ this.interval = interval;
22
+ this.latencyRef = options?.latencyRef ?? { latency: 0 };
23
+ this.lastReset = this.tokens = this.lastSend = 0;
24
+ this.reservedTokens = options?.reservedTokens ?? 0;
25
+ this.timeout = null;
26
+ }
27
+ check() {
28
+ if (this.timeout || this._queue.length === 0) {
29
+ return;
30
+ }
31
+ if (this.lastReset + this.interval + this.tokenLimit * this.latencyRef.latency < Date.now()) {
32
+ this.lastReset = Date.now();
33
+ this.tokens = Math.max(0, this.tokens - this.tokenLimit);
34
+ }
35
+ let val;
36
+ let tokensAvailable = this.tokens < this.tokenLimit;
37
+ let unreservedTokensAvailable = this.tokens < (this.tokenLimit - this.reservedTokens);
38
+ while (this._queue.length !== 0 && (unreservedTokensAvailable || (tokensAvailable && this._queue[0].priority))) {
39
+ this.tokens++;
40
+ tokensAvailable = this.tokens < this.tokenLimit;
41
+ unreservedTokensAvailable = this.tokens < (this.tokenLimit - this.reservedTokens);
42
+ const item = this._queue.shift();
43
+ val = this.latencyRef.latency - Date.now() + this.lastSend;
44
+ if (this.latencyRef.latency === 0 || val <= 0) {
45
+ item.func();
46
+ this.lastSend = Date.now();
47
+ }
48
+ else {
49
+ setTimeout(() => {
50
+ item.func();
51
+ }, val);
52
+ this.lastSend = Date.now() + val;
53
+ }
54
+ }
55
+ if (this._queue.length !== 0 && !this.timeout) {
56
+ this.timeout = setTimeout(() => {
57
+ this.timeout = null;
58
+ this.check();
59
+ }, this.tokens < this.tokenLimit ? this.latencyRef.latency : Math.max(0, this.lastReset + this.interval + this.tokenLimit * this.latencyRef.latency - Date.now()));
60
+ }
61
+ }
62
+ /**
63
+ * Add an item to the queue.
64
+ * @param func The function to queue.
65
+ * @param priority If true, the item will be added to the front of the queue.
66
+ */
67
+ queue(func, priority = false) {
68
+ if (priority) {
69
+ this._queue.unshift({ func, priority });
70
+ }
71
+ else {
72
+ this._queue.push({ func, priority });
73
+ }
74
+ this.check();
75
+ }
76
+ }
77
+ exports.default = Bucket;
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3Jlc3QvQnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBcUI7QUFDckI7OztHQUdHOztBQUVILGdCQUFnQjtBQUNoQixNQUFxQixNQUFNO0lBQ2YsTUFBTSxHQUErQyxFQUFFLENBQUM7SUFDaEUsUUFBUSxDQUFTO0lBQ2pCLFNBQVMsQ0FBUztJQUNsQixRQUFRLENBQVM7SUFDakIsVUFBVSxDQUF1QjtJQUNqQyxjQUFjLENBQVM7SUFDdkIsT0FBTyxDQUF3QjtJQUMvQixVQUFVLENBQVM7SUFDbkIsTUFBTSxDQUFTO0lBQ2YsWUFBWSxVQUFrQixFQUFFLFFBQWdCLEVBQUUsT0FBeUU7UUFDdkgsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sRUFBRSxjQUFjLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxLQUFLO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNDLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxJQUFJ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
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ import type { RESTMethod } from "../Constants";
3
+ import type { JSONDiscordHTTPError } from "../types/json";
4
+ /** An HTTP error received from Discord. */
5
+ export default class DiscordHTTPError extends Error {
6
+ method: RESTMethod;
7
+ name: string;
8
+ resBody: Record<string, unknown> | null;
9
+ response: Response;
10
+ constructor(res: Response, resBody: unknown, method: RESTMethod, stack?: string);
11
+ get headers(): Headers;
12
+ get path(): string;
13
+ get status(): number;
14
+ get statusText(): string;
15
+ toJSON(): JSONDiscordHTTPError;
16
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /** @module DiscordHTTPError */
5
+ const DiscordRESTError_1 = tslib_1.__importDefault(require("./DiscordRESTError"));
6
+ /** An HTTP error received from Discord. */
7
+ class DiscordHTTPError extends Error {
8
+ method;
9
+ name = "DiscordHTTPError";
10
+ resBody;
11
+ response;
12
+ constructor(res, resBody, method, stack) {
13
+ // eslint-disable-next-line unicorn/custom-error-definition
14
+ super();
15
+ Object.defineProperties(this, {
16
+ method: {
17
+ value: method,
18
+ enumerable: false
19
+ },
20
+ response: {
21
+ value: res,
22
+ enumerable: false
23
+ },
24
+ resBody: {
25
+ value: resBody,
26
+ enumerable: false
27
+ }
28
+ });
29
+ let message = `${res.status} ${res.statusText} on ${this.method} ${this.path}`;
30
+ const errors = DiscordRESTError_1.default.flattenErrors(resBody);
31
+ if (errors.length !== 0) {
32
+ message += `\n ${errors.join("\n ")}`;
33
+ }
34
+ this.message = message;
35
+ if (stack) {
36
+ this.stack = this.name + ": " + this.message + "\n" + stack;
37
+ }
38
+ else {
39
+ Error.captureStackTrace(this, DiscordHTTPError);
40
+ }
41
+ }
42
+ get headers() {
43
+ return this.response.headers;
44
+ }
45
+ get path() {
46
+ return new URL(this.response.url).pathname;
47
+ }
48
+ get status() {
49
+ return this.response.status;
50
+ }
51
+ get statusText() {
52
+ return this.response.statusText;
53
+ }
54
+ toJSON() {
55
+ return {
56
+ message: this.message,
57
+ method: this.method,
58
+ name: this.name,
59
+ resBody: this.resBody,
60
+ stack: this.stack ?? ""
61
+ };
62
+ }
63
+ }
64
+ exports.default = DiscordHTTPError;
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzY29yZEhUVFBFcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9yZXN0L0Rpc2NvcmRIVFRQRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLGtGQUFrRDtBQUlsRCwyQ0FBMkM7QUFDM0MsTUFBcUIsZ0JBQWlCLFNBQVEsS0FBSztJQUMvQyxNQUFNLENBQWM7SUFDWCxJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDbkMsT0FBTyxDQUFrQztJQUN6QyxRQUFRLENBQVk7SUFDcEIsWUFBWSxHQUFhLEVBQUUsT0FBZ0IsRUFBRSxNQUFrQixFQUFFLEtBQWM7UUFDM0UsMkRBQTJEO1FBQzNELEtBQUssRUFBRSxDQUFDO1FBQ1IsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUMxQixNQUFNLEVBQUU7Z0JBQ0osS0FBSyxFQUFPLE1BQU07Z0JBQ2xCLFVBQVUsRUFBRSxLQUFLO2FBQ3BCO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLEtBQUssRUFBTyxHQUFHO2dCQUNmLFVBQVUsRUFBRSxLQUFLO2FBQ3BCO1lBQ0QsT0FBTyxFQUFFO2dCQUNMLEtBQUssRUFBTyxPQUFPO2dCQUNuQixVQUFVLEVBQUUsS0FBSzthQUNwQjtTQUNKLENBQUMsQ0FBQztRQUVILElBQUksT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsVUFBVSxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9FLE1BQU0sTUFBTSxHQUFHLDBCQUFnQixDQUFDLGFBQWEsQ0FBQyxPQUFrQyxDQUFDLENBQUM7UUFDbEYsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2hFLENBQUM7YUFBTSxDQUFDO1lBQ0osS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsTUFBTTtRQUNGLE9BQU87WUFDSCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsTUFBTSxFQUFHLElBQUksQ0FBQyxNQUFNO1lBQ3BCLElBQUksRUFBSyxJQUFJLENBQUMsSUFBSTtZQUNsQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsS0FBSyxFQUFJLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtTQUM1QixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBM0RELG1DQTJEQyJ9
@@ -0,0 +1,19 @@
1
+ /// <reference types="node" />
2
+ /** @module DiscordRESTError */
3
+ import type { RESTMethod } from "../Constants";
4
+ import type { JSONDiscordRESTError } from "../types/json";
5
+ /** A REST error received from Discord. */
6
+ export default class DiscordRESTError extends Error {
7
+ code: number;
8
+ method: RESTMethod;
9
+ name: string;
10
+ resBody: Record<string, unknown> | null;
11
+ response: Response;
12
+ constructor(res: Response, resBody: Record<string, unknown>, method: RESTMethod, stack?: string);
13
+ static flattenErrors(errors: Record<string, unknown>, keyPrefix?: string): Array<string>;
14
+ get headers(): Headers;
15
+ get path(): string;
16
+ get status(): number;
17
+ get statusText(): string;
18
+ toJSON(): JSONDiscordRESTError;
19
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /** A REST error received from Discord. */
4
+ class DiscordRESTError extends Error {
5
+ code;
6
+ method;
7
+ name = "DiscordRESTError";
8
+ resBody;
9
+ response;
10
+ constructor(res, resBody, method, stack) {
11
+ // eslint-disable-next-line unicorn/custom-error-definition
12
+ super();
13
+ this.code = Number(resBody.code);
14
+ Object.defineProperties(this, {
15
+ method: {
16
+ value: method,
17
+ enumerable: false
18
+ },
19
+ response: {
20
+ value: res,
21
+ enumerable: false
22
+ },
23
+ resBody: {
24
+ value: resBody,
25
+ enumerable: false
26
+ }
27
+ });
28
+ let message = "message" in resBody ? `${resBody.message} on ${this.method} ${this.path}` : `Unknown Error on ${this.method} ${this.path}`;
29
+ if ("errors" in resBody) {
30
+ message += `\n ${DiscordRESTError.flattenErrors(resBody.errors).join("\n ")}`;
31
+ }
32
+ else {
33
+ const errors = DiscordRESTError.flattenErrors(resBody);
34
+ if (errors.length !== 0) {
35
+ message += `\n ${errors.join("\n ")}`;
36
+ }
37
+ }
38
+ this.message = message;
39
+ if (stack) {
40
+ this.stack = `${this.name}: ${this.message}\n${stack}`;
41
+ }
42
+ else {
43
+ Error.captureStackTrace(this, DiscordRESTError);
44
+ }
45
+ }
46
+ static flattenErrors(errors, keyPrefix = "") {
47
+ let messages = [];
48
+ for (const fieldName in errors) {
49
+ if (!Object.hasOwn(errors, fieldName) || fieldName === "message" || fieldName === "code") {
50
+ continue;
51
+ }
52
+ if (typeof errors[fieldName] === "object" && errors[fieldName] !== null) {
53
+ if ("_errors" in errors[fieldName]) {
54
+ messages = messages.concat(errors[fieldName]._errors.map((err) => `${`${keyPrefix}${fieldName}`}: ${err.message}`));
55
+ }
56
+ else if (Array.isArray(errors[fieldName])) {
57
+ messages = messages.concat(errors[fieldName].map(str => `${`${keyPrefix}${fieldName}`}: ${typeof str === "object" && "message" in str ? str.message : str}`));
58
+ }
59
+ else {
60
+ messages = messages.concat(DiscordRESTError.flattenErrors(errors[fieldName], `${keyPrefix}${fieldName}.`));
61
+ }
62
+ }
63
+ }
64
+ return messages;
65
+ }
66
+ get headers() {
67
+ return this.response.headers;
68
+ }
69
+ get path() {
70
+ return new URL(this.response.url).pathname;
71
+ }
72
+ get status() {
73
+ return this.response.status;
74
+ }
75
+ get statusText() {
76
+ return this.response.statusText;
77
+ }
78
+ toJSON() {
79
+ return {
80
+ message: this.message,
81
+ method: this.method,
82
+ name: this.name,
83
+ resBody: this.resBody,
84
+ stack: this.stack ?? ""
85
+ };
86
+ }
87
+ }
88
+ exports.default = DiscordRESTError;
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzY29yZFJFU1RFcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9yZXN0L0Rpc2NvcmRSRVNURXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSwwQ0FBMEM7QUFDMUMsTUFBcUIsZ0JBQWlCLFNBQVEsS0FBSztJQUMvQyxJQUFJLENBQVM7SUFDYixNQUFNLENBQWM7SUFDWCxJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDbkMsT0FBTyxDQUFrQztJQUN6QyxRQUFRLENBQVk7SUFDcEIsWUFBWSxHQUFhLEVBQUUsT0FBZ0MsRUFBRSxNQUFrQixFQUFFLEtBQWM7UUFDM0YsMkRBQTJEO1FBQzNELEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7WUFDMUIsTUFBTSxFQUFFO2dCQUNKLEtBQUssRUFBTyxNQUFNO2dCQUNsQixVQUFVLEVBQUUsS0FBSzthQUNwQjtZQUNELFFBQVEsRUFBRTtnQkFDTixLQUFLLEVBQU8sR0FBRztnQkFDZixVQUFVLEVBQUUsS0FBSzthQUNwQjtZQUNELE9BQU8sRUFBRTtnQkFDTCxLQUFLLEVBQU8sT0FBTztnQkFDbkIsVUFBVSxFQUFFLEtBQUs7YUFDcEI7U0FDSixDQUFDLENBQUM7UUFFSCxJQUFJLE9BQU8sR0FBRyxTQUFTLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFJLE9BQStCLENBQUMsT0FBTyxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkssSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLE1BQU0sZ0JBQWdC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
@@ -0,0 +1,62 @@
1
+ /** @module OAuthHelper */
2
+ import type RESTManager from "./RESTManager";
3
+ import OAuthApplication from "../structures/OAuthApplication";
4
+ import type { AuthorizationInformation, Connection, OAuthURLOptions, RevokeTokenOptions } from "../types/oauth";
5
+ import Member from "../structures/Member";
6
+ import OAuthGuild from "../structures/OAuthGuild";
7
+ import ExtendedUser from "../structures/ExtendedUser";
8
+ import type { AddMemberOptions, RoleConnection, UpdateUserApplicationRoleConnectionOptions } from "../types";
9
+ /** A helper to make using authenticated oauth requests without needing a new client instance. */
10
+ export default class OAuthHelper {
11
+ private _manager;
12
+ private _token;
13
+ constructor(manager: RESTManager, token: string);
14
+ /**
15
+ * Construct an oauth authorization url.
16
+ * @param options The options to construct the url with.
17
+ */
18
+ static constructURL(options: OAuthURLOptions): string;
19
+ addGuildMember(guildID: string, userID: string, options?: Omit<AddMemberOptions, "accessToken">): Promise<Member | undefined>;
20
+ /**
21
+ * Get the current OAuth2 application's information.
22
+ */
23
+ getApplication(): Promise<OAuthApplication>;
24
+ /**
25
+ * Get information about the current authorization.
26
+ */
27
+ getCurrentAuthorizationInformation(): Promise<AuthorizationInformation>;
28
+ /**
29
+ * Get the connections of the currently authenticated user.
30
+ *
31
+ * Note: Requires the `connections` scope.
32
+ */
33
+ getCurrentConnections(): Promise<Array<Connection>>;
34
+ /**
35
+ * Get the guild member information about the currently authenticated user.
36
+ *
37
+ * Note: Requires the `guilds.members.read` scope.
38
+ * @param guild the ID of the guild
39
+ */
40
+ getCurrentGuildMember(guild: string): Promise<Member>;
41
+ /**
42
+ * Get the currently authenticated user's guilds. Note these are missing several properties gateway guilds have.
43
+ */
44
+ getCurrentGuilds(): Promise<Array<OAuthGuild>>;
45
+ /**
46
+ * Get the currently authenticated user's information.
47
+ *
48
+ * Note: This does not touch the client's cache in any way.
49
+ */
50
+ getCurrentUser(): Promise<ExtendedUser>;
51
+ /**
52
+ * Revoke the used access token.
53
+ * @param options The options for revoking the token.
54
+ */
55
+ revokeToken(options: Omit<RevokeTokenOptions, "token">): Promise<void>;
56
+ /**
57
+ * Update the authenticated user's role connection object for an application. This requires the `role_connections.write` scope.
58
+ * @param applicationID The ID of the application.
59
+ * @param data The metadata to update.
60
+ */
61
+ updateRoleConnection(applicationID: string, data: UpdateUserApplicationRoleConnectionOptions): Promise<RoleConnection>;
62
+ }
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const OAuthApplication_1 = tslib_1.__importDefault(require("../structures/OAuthApplication"));
5
+ const Routes = tslib_1.__importStar(require("../util/Routes"));
6
+ const PartialApplication_1 = tslib_1.__importDefault(require("../structures/PartialApplication"));
7
+ const Integration_1 = tslib_1.__importDefault(require("../structures/Integration"));
8
+ const Member_1 = tslib_1.__importDefault(require("../structures/Member"));
9
+ const OAuthGuild_1 = tslib_1.__importDefault(require("../structures/OAuthGuild"));
10
+ const ExtendedUser_1 = tslib_1.__importDefault(require("../structures/ExtendedUser"));
11
+ const Constants_1 = require("../Constants");
12
+ /** A helper to make using authenticated oauth requests without needing a new client instance. */
13
+ class OAuthHelper {
14
+ _manager;
15
+ _token;
16
+ constructor(manager, token) {
17
+ this._token = token;
18
+ this._manager = manager;
19
+ }
20
+ /**
21
+ * Construct an oauth authorization url.
22
+ * @param options The options to construct the url with.
23
+ */
24
+ static constructURL(options) {
25
+ const params = [
26
+ `client_id=${options.clientID}`,
27
+ `response_type=${options.responseType ?? "code"}`,
28
+ `scope=${options.scopes.join("%20")}`
29
+ ];
30
+ if (options.redirectURI) {
31
+ params.push(`redirect_uri=${options.redirectURI}`);
32
+ }
33
+ if (options.disableGuildSelect !== undefined) {
34
+ params.push(`disable_guild_select=${String(options.disableGuildSelect)}`);
35
+ }
36
+ if (options.prompt) {
37
+ params.push(`prompt=${options.prompt}`);
38
+ }
39
+ if (options.permissions) {
40
+ params.push(`permissions=${options.permissions}`);
41
+ }
42
+ if (options.guildID) {
43
+ params.push(`guild_id=${options.guildID}`);
44
+ }
45
+ if (options.state) {
46
+ params.push(`state=${options.state}`);
47
+ }
48
+ return `${Constants_1.BASE_URL}${Routes.OAUTH_AUTHORIZE}?${params.join("&")}`;
49
+ }
50
+ async addGuildMember(guildID, userID, options) {
51
+ return this._manager.guilds.addMember(guildID, userID, { accessToken: this._token.split(" ").slice(1).join(" "), ...options });
52
+ }
53
+ /**
54
+ * Get the current OAuth2 application's information.
55
+ */
56
+ async getApplication() {
57
+ return this._manager.request({
58
+ method: "GET",
59
+ path: Routes.OAUTH_APPLICATION,
60
+ auth: this._token
61
+ }).then(data => new OAuthApplication_1.default(data, this._manager.client));
62
+ }
63
+ /**
64
+ * Get information about the current authorization.
65
+ */
66
+ async getCurrentAuthorizationInformation() {
67
+ return this._manager.request({
68
+ method: "GET",
69
+ path: Routes.OAUTH_INFO,
70
+ auth: this._token
71
+ }).then(data => ({
72
+ application: new PartialApplication_1.default(data.application, this._manager.client),
73
+ expires: new Date(data.expires),
74
+ scopes: data.scopes,
75
+ user: this._manager.client.users.update(data.user)
76
+ }));
77
+ }
78
+ /**
79
+ * Get the connections of the currently authenticated user.
80
+ *
81
+ * Note: Requires the `connections` scope.
82
+ */
83
+ async getCurrentConnections() {
84
+ return this._manager.request({
85
+ method: "GET",
86
+ path: Routes.OAUTH_CONNECTIONS,
87
+ auth: this._token
88
+ }).then(data => data.map(connection => ({
89
+ friendSync: connection.friend_sync,
90
+ id: connection.id,
91
+ integrations: connection.integrations?.map(integration => new Integration_1.default(integration, this._manager.client)),
92
+ name: connection.name,
93
+ revoked: connection.revoked,
94
+ showActivity: connection.show_activity,
95
+ twoWayLink: connection.two_way_link,
96
+ type: connection.type,
97
+ verified: connection.verified,
98
+ visibility: connection.visibility
99
+ })));
100
+ }
101
+ /**
102
+ * Get the guild member information about the currently authenticated user.
103
+ *
104
+ * Note: Requires the `guilds.members.read` scope.
105
+ * @param guild the ID of the guild
106
+ */
107
+ async getCurrentGuildMember(guild) {
108
+ return this._manager.request({
109
+ method: "GET",
110
+ path: Routes.OAUTH_GUILD_MEMBER(guild),
111
+ auth: this._token
112
+ }).then(data => new Member_1.default(data, this._manager.client, guild));
113
+ }
114
+ /**
115
+ * Get the currently authenticated user's guilds. Note these are missing several properties gateway guilds have.
116
+ */
117
+ async getCurrentGuilds() {
118
+ return this._manager.request({
119
+ method: "GET",
120
+ path: Routes.OAUTH_GUILDS,
121
+ auth: this._token
122
+ }).then(data => data.map(d => new OAuthGuild_1.default(d, this._manager.client)));
123
+ }
124
+ /**
125
+ * Get the currently authenticated user's information.
126
+ *
127
+ * Note: This does not touch the client's cache in any way.
128
+ */
129
+ async getCurrentUser() {
130
+ return this._manager.request({
131
+ method: "GET",
132
+ path: Routes.OAUTH_CURRENT_USER,
133
+ auth: this._token
134
+ }).then(data => new ExtendedUser_1.default(data, this._manager.client));
135
+ }
136
+ /**
137
+ * Revoke the used access token.
138
+ * @param options The options for revoking the token.
139
+ */
140
+ async revokeToken(options) {
141
+ const form = new FormData();
142
+ form.append("client_id", options.clientID);
143
+ form.append("client_secret", options.clientSecret);
144
+ form.append("token", this._token);
145
+ await this._manager.authRequest({
146
+ method: "POST",
147
+ path: Routes.OAUTH_TOKEN_REVOKE,
148
+ form
149
+ });
150
+ }
151
+ /**
152
+ * Update the authenticated user's role connection object for an application. This requires the `role_connections.write` scope.
153
+ * @param applicationID The ID of the application.
154
+ * @param data The metadata to update.
155
+ */
156
+ async updateRoleConnection(applicationID, data) {
157
+ return this._manager.request({
158
+ method: "PUT",
159
+ path: Routes.OAUTH_ROLE_CONNECTION(applicationID),
160
+ json: {
161
+ metadata: data.metadata,
162
+ platform_name: data.platformName,
163
+ platform_username: data.platformUsername
164
+ },
165
+ auth: this._token
166
+ }).then(d => ({
167
+ metadata: Object.entries(d.metadata).map(([key, value]) => ({
168
+ [key]: {
169
+ description: value.description,
170
+ descriptionLocalizations: value.description_localizations,
171
+ key: value.key,
172
+ name: value.name,
173
+ nameLocalizations: value.name_localizations,
174
+ type: value.type
175
+ }
176
+ })).reduce((a, b) => ({ ...a, ...b })),
177
+ platformName: d.platform_name,
178
+ platformUsername: d.platform_username
179
+ }));
180
+ }
181
+ }
182
+ exports.default = OAuthHelper;
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT0F1dGhIZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvcmVzdC9PQXV0aEhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw4RkFBOEQ7QUFVOUQsK0RBQXlDO0FBQ3pDLGtHQUFrRTtBQUNsRSxvRkFBb0Q7QUFDcEQsMEVBQTBDO0FBQzFDLGtGQUFrRDtBQUNsRCxzRkFBc0Q7QUFTdEQsNENBQXdDO0FBRXhDLGlHQUFpRztBQUNqRyxNQUFxQixXQUFXO0lBQ3BCLFFBQVEsQ0FBYztJQUN0QixNQUFNLENBQVM7SUFDdkIsWUFBWSxPQUFvQixFQUFFLEtBQWE7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBd0I7UUFDeEMsTUFBTSxNQUFNLEdBQWtCO1lBQzFCLGFBQWEsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUMvQixpQkFBaUIsT0FBTyxDQUFDLFlBQVksSUFBSSxNQUFNLEVBQUU7WUFDakQsU0FBUyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtTQUN4QyxDQUFDO1FBQ0YsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLGtCQUFrQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUUsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsT0FBTyxHQUFHLG9CQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDdEUsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBZSxFQUFFLE1BQWMsRUFBRSxPQUErQztRQUNqRyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25JLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQXVCO1lBQy9DLE1BQU0sRUFBRSxLQUFLO1lBQ2IsSUFBSSxFQUFJLE1BQU0sQ0FBQyxpQkFBaUI7WUFDaEMsSUFBSSxFQUFJLElBQUksQ0FBQyxNQUFNO1NBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLDBCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGtDQUFrQztRQUNwQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUE4QjtZQUN0RCxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBSSxNQUFNLENBQUMsVUFBVTtZQUN6QixJQUFJLEVBQUksSUFBSSxDQUFDLE1BQU07U0FDdEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDYixXQUFXLEVBQUUsSUFBSSw0QkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzNFLE9BQU8sRUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ25DLE1BQU0sRUFBTyxJQUFJLENBQUMsTUFBTTtZQUN4QixJQUFJLEVBQVMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQzVELENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQXVCO1lBQy9DLE1BQU0sRUFBRSxLQUFLO1lBQ2IsSUFBSSxFQUFJLE1BQU0sQ0FBQyxpQkFBaUI7WUFDaEMsSUFBSSxFQUFJLElBQUksQ0FBQyxNQUFNO1NBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQyxVQUFVLEVBQUksVUFBVSxDQUFDLFdBQVc7WUFDcEMsRUFBRSxFQUFZLFVBQVUsQ0FBQyxFQUFFO1lBQzNCLFlBQVksRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUkscUJBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3RyxJQUFJLEVBQVUsVUFBVSxDQUFDLElBQUk7WUFDN0IsT0FBTyxFQUFPLFVBQVUsQ0FBQyxPQUFPO1lBQ2hDLFlBQVksRUFBRSxVQUFVLENBQUMsYUFBYTtZQUN0QyxVQUFVLEVBQUksVUFBVSxDQUFDLFlBQVk7WUFDckMsSUFBSSxFQUFVLFVBQVUsQ0FBQyxJQUFJO1lBQzdCLFFBQVEsRUFBTSxVQUFVLENBQUMsUUFBUTtZQUNqQyxVQUFVLEVBQUksVUFBVSxDQUFDLFVBQVU7U0FDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxLQUFhO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQWE7WUFDckMsTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJLEVBQUksTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztZQUN4QyxJQUFJLEVBQUksSUFBSSxDQUFDLE1BQU07U0FDdEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksZ0JBQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQXVCO1lBQy9DLE1BQU0sRUFBRSxLQUFLO1lBQ2IsSUFBSSxFQUFJLE1BQU0sQ0FBQyxZQUFZO1lBQzNCLElBQUksRUFBSSxJQUFJLENBQUMsTUFBTTtTQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksb0JBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFlO1lBQ3ZDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsSUFBSSxFQUFJLE1BQU0sQ0FBQyxrQkFBa0I7WUFDakMsSUFBSSxFQUFJLElBQUksQ0FBQyxNQUFNO1NBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLHNCQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUEwQztRQUN4RCxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQU87WUFDbEMsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUksTUFBTSxDQUFDLGtCQUFrQjtZQUNqQyxJQUFJO1NBQ1AsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsb0JBQW9CLENBQUMsYUFBcUIsRUFBRSxJQUFnRDtRQUM5RixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFvQjtZQUM1QyxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBSSxNQUFNLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDO1lBQ25ELElBQUksRUFBSTtnQkFDSixRQUFRLEVBQVcsSUFBSSxDQUFDLFFBQVE7Z0JBQ2hDLGFBQWEsRUFBTSxJQUFJLENBQUMsWUFBWTtnQkFDcEMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjthQUMzQztZQUNELElBQUksRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNWLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDeEQsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDSCxXQUFXLEVBQWUsS0FBSyxDQUFDLFdBQVc7b0JBQzNDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyx5QkFBeUI7b0JBQ3pELEdBQUcsRUFBdUIsS0FBSyxDQUFDLEdBQUc7b0JBQ25DLElBQUksRUFBc0IsS0FBSyxDQUFDLElBQUk7b0JBQ3BDLGlCQUFpQixFQUFTLEtBQUssQ0FBQyxrQkFBa0I7b0JBQ2xELElBQUksRUFBc0IsS0FBSyxDQUFDLElBQUk7aUJBQ3ZDO2FBQ0osQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0QyxZQUFZLEVBQU0sQ0FBQyxDQUFDLGFBQWE7WUFDakMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQjtTQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Q0FDSjtBQW5MRCw4QkFtTEMifQ==
@@ -0,0 +1,42 @@
1
+ /** @module RESTManager */
2
+ import RequestHandler from "./RequestHandler";
3
+ import type Client from "../Client";
4
+ import Channels from "../routes/Channels";
5
+ import Guilds from "../routes/Guilds";
6
+ import Users from "../routes/Users";
7
+ import OAuth from "../routes/OAuth";
8
+ import Webhooks from "../routes/Webhooks";
9
+ import type { RESTOptions } from "../types/client";
10
+ import type { RequestOptions } from "../types/request-handler";
11
+ import Applications from "../routes/Applications";
12
+ import Interactions from "../routes/Interactions";
13
+ import type { GetBotGatewayResponse, GetGatewayResponse } from "../types/gateway";
14
+ import Miscellaneous from "../routes/Miscellaneous";
15
+ /** A manager for all rest actions. */
16
+ export default class RESTManager {
17
+ private _client;
18
+ applications: Applications;
19
+ channels: Channels;
20
+ guilds: Guilds;
21
+ handler: RequestHandler;
22
+ interactions: Interactions;
23
+ misc: Miscellaneous;
24
+ oauth: OAuth;
25
+ users: Users;
26
+ webhooks: Webhooks;
27
+ constructor(client: Client, options?: RESTOptions);
28
+ get client(): Client;
29
+ get options(): RESTOptions;
30
+ /** Alias for {@link RequestHandler#authRequest | RequestHandler#authRequest} */
31
+ authRequest<T = unknown>(options: Omit<RequestOptions, "auth">): Promise<T>;
32
+ /**
33
+ * Get the gateway information related to your bot client.
34
+ */
35
+ getBotGateway(): Promise<GetBotGatewayResponse>;
36
+ /**
37
+ * Get the gateway information.
38
+ */
39
+ getGateway(): Promise<GetGatewayResponse>;
40
+ /** Alias for {@link RequestHandler#request | RequestHandler#request} */
41
+ request<T = unknown>(options: RequestOptions): Promise<T>;
42
+ }