oceanic.js 1.10.1-dev.97cef9c → 1.10.1-dev.9b37972
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/package.json +5 -5
- package/esm.mjs +2 -0
- package/package.json +5 -5
- package/dist/lib/Client.d.ts +0 -91
- package/dist/lib/Client.js +0 -254
- package/dist/lib/Constants.d.ts +0 -1121
- package/dist/lib/Constants.js +0 -1401
- package/dist/lib/gateway/Shard.d.ts +0 -77
- package/dist/lib/gateway/Shard.js +0 -1582
- package/dist/lib/gateway/ShardManager.d.ts +0 -26
- package/dist/lib/gateway/ShardManager.js +0 -304
- package/dist/lib/index.d.ts +0 -83
- package/dist/lib/index.js +0 -166
- package/dist/lib/rest/Bucket.d.ts +0 -33
- package/dist/lib/rest/Bucket.js +0 -78
- package/dist/lib/rest/DiscordHTTPError.d.ts +0 -16
- package/dist/lib/rest/DiscordHTTPError.js +0 -65
- package/dist/lib/rest/DiscordRESTError.d.ts +0 -19
- package/dist/lib/rest/DiscordRESTError.js +0 -89
- package/dist/lib/rest/OAuthHelper.d.ts +0 -60
- package/dist/lib/rest/OAuthHelper.js +0 -180
- package/dist/lib/rest/RESTManager.d.ts +0 -42
- package/dist/lib/rest/RESTManager.js +0 -82
- package/dist/lib/rest/RequestHandler.d.ts +0 -28
- package/dist/lib/rest/RequestHandler.js +0 -313
- package/dist/lib/rest/SequentialBucket.d.ts +0 -25
- package/dist/lib/rest/SequentialBucket.js +0 -76
- package/dist/lib/routes/Applications.d.ts +0 -171
- package/dist/lib/routes/Applications.js +0 -447
- package/dist/lib/routes/Channels.d.ts +0 -391
- package/dist/lib/routes/Channels.js +0 -1107
- package/dist/lib/routes/Guilds.d.ts +0 -606
- package/dist/lib/routes/Guilds.js +0 -1669
- package/dist/lib/routes/Interactions.d.ts +0 -74
- package/dist/lib/routes/Interactions.js +0 -141
- package/dist/lib/routes/Miscellaneous.d.ts +0 -25
- package/dist/lib/routes/Miscellaneous.js +0 -54
- package/dist/lib/routes/OAuth.d.ts +0 -105
- package/dist/lib/routes/OAuth.js +0 -309
- package/dist/lib/routes/Users.d.ts +0 -32
- package/dist/lib/routes/Users.js +0 -59
- package/dist/lib/routes/Webhooks.d.ts +0 -128
- package/dist/lib/routes/Webhooks.js +0 -264
- package/dist/lib/structures/AnnouncementChannel.d.ts +0 -36
- package/dist/lib/structures/AnnouncementChannel.js +0 -47
- package/dist/lib/structures/AnnouncementThreadChannel.d.ts +0 -18
- package/dist/lib/structures/AnnouncementThreadChannel.js +0 -27
- package/dist/lib/structures/Application.d.ts +0 -68
- package/dist/lib/structures/Application.js +0 -178
- package/dist/lib/structures/ApplicationCommand.d.ts +0 -74
- package/dist/lib/structures/ApplicationCommand.js +0 -141
- package/dist/lib/structures/Attachment.d.ts +0 -34
- package/dist/lib/structures/Attachment.js +0 -64
- package/dist/lib/structures/AuditLogEntry.d.ts +0 -25
- package/dist/lib/structures/AuditLogEntry.js +0 -53
- package/dist/lib/structures/AutoModerationRule.d.ts +0 -49
- package/dist/lib/structures/AutoModerationRule.js +0 -139
- package/dist/lib/structures/AutocompleteInteraction.d.ts +0 -62
- package/dist/lib/structures/AutocompleteInteraction.js +0 -115
- package/dist/lib/structures/Base.d.ts +0 -20
- package/dist/lib/structures/Base.js +0 -58
- package/dist/lib/structures/BaseEntitlement.d.ts +0 -19
- package/dist/lib/structures/BaseEntitlement.js +0 -44
- package/dist/lib/structures/CategoryChannel.d.ts +0 -41
- package/dist/lib/structures/CategoryChannel.js +0 -105
- package/dist/lib/structures/Channel.d.ts +0 -20
- package/dist/lib/structures/Channel.js +0 -91
- package/dist/lib/structures/ClientApplication.d.ts +0 -153
- package/dist/lib/structures/ClientApplication.js +0 -220
- package/dist/lib/structures/CommandInteraction.d.ts +0 -127
- package/dist/lib/structures/CommandInteraction.js +0 -297
- package/dist/lib/structures/ComponentInteraction.d.ts +0 -137
- package/dist/lib/structures/ComponentInteraction.js +0 -311
- package/dist/lib/structures/Entitlement.d.ts +0 -12
- package/dist/lib/structures/Entitlement.js +0 -26
- package/dist/lib/structures/ExtendedUser.d.ts +0 -26
- package/dist/lib/structures/ExtendedUser.js +0 -57
- package/dist/lib/structures/ForumChannel.d.ts +0 -11
- package/dist/lib/structures/ForumChannel.js +0 -19
- package/dist/lib/structures/GroupChannel.d.ts +0 -62
- package/dist/lib/structures/GroupChannel.js +0 -133
- package/dist/lib/structures/Guild.d.ts +0 -654
- package/dist/lib/structures/Guild.js +0 -1319
- package/dist/lib/structures/GuildChannel.d.ts +0 -34
- package/dist/lib/structures/GuildChannel.js +0 -75
- package/dist/lib/structures/GuildPreview.d.ts +0 -50
- package/dist/lib/structures/GuildPreview.js +0 -119
- package/dist/lib/structures/GuildScheduledEvent.d.ts +0 -60
- package/dist/lib/structures/GuildScheduledEvent.js +0 -154
- package/dist/lib/structures/GuildTemplate.d.ts +0 -55
- package/dist/lib/structures/GuildTemplate.js +0 -126
- package/dist/lib/structures/Integration.d.ts +0 -54
- package/dist/lib/structures/Integration.js +0 -156
- package/dist/lib/structures/Interaction.d.ts +0 -40
- package/dist/lib/structures/Interaction.js +0 -91
- package/dist/lib/structures/InteractionResolvedChannel.d.ts +0 -28
- package/dist/lib/structures/InteractionResolvedChannel.js +0 -45
- package/dist/lib/structures/Invite.d.ts +0 -64
- package/dist/lib/structures/Invite.js +0 -193
- package/dist/lib/structures/InviteGuild.d.ts +0 -52
- package/dist/lib/structures/InviteGuild.js +0 -88
- package/dist/lib/structures/MediaChannel.d.ts +0 -11
- package/dist/lib/structures/MediaChannel.js +0 -19
- package/dist/lib/structures/Member.d.ts +0 -122
- package/dist/lib/structures/Member.js +0 -255
- package/dist/lib/structures/Message.d.ts +0 -183
- package/dist/lib/structures/Message.js +0 -455
- package/dist/lib/structures/ModalSubmitInteraction.d.ts +0 -128
- package/dist/lib/structures/ModalSubmitInteraction.js +0 -240
- package/dist/lib/structures/OAuthApplication.d.ts +0 -79
- package/dist/lib/structures/OAuthApplication.js +0 -210
- package/dist/lib/structures/OAuthGuild.d.ts +0 -35
- package/dist/lib/structures/OAuthGuild.js +0 -61
- package/dist/lib/structures/PartialApplication.d.ts +0 -30
- package/dist/lib/structures/PartialApplication.js +0 -67
- package/dist/lib/structures/Permission.d.ts +0 -21
- package/dist/lib/structures/Permission.js +0 -68
- package/dist/lib/structures/PermissionOverwrite.d.ts +0 -26
- package/dist/lib/structures/PermissionOverwrite.js +0 -49
- package/dist/lib/structures/PingInteraction.d.ts +0 -16
- package/dist/lib/structures/PingInteraction.js +0 -26
- package/dist/lib/structures/PrivateChannel.d.ts +0 -90
- package/dist/lib/structures/PrivateChannel.js +0 -131
- package/dist/lib/structures/PrivateThreadChannel.d.ts +0 -18
- package/dist/lib/structures/PrivateThreadChannel.js +0 -27
- package/dist/lib/structures/PublicThreadChannel.d.ts +0 -21
- package/dist/lib/structures/PublicThreadChannel.js +0 -37
- package/dist/lib/structures/Role.d.ts +0 -50
- package/dist/lib/structures/Role.js +0 -131
- package/dist/lib/structures/SKU.d.ts +0 -32
- package/dist/lib/structures/SKU.js +0 -53
- package/dist/lib/structures/StageChannel.d.ts +0 -33
- package/dist/lib/structures/StageChannel.js +0 -44
- package/dist/lib/structures/StageInstance.d.ts +0 -36
- package/dist/lib/structures/StageInstance.js +0 -94
- package/dist/lib/structures/Team.d.ts +0 -22
- package/dist/lib/structures/Team.js +0 -67
- package/dist/lib/structures/TestEntitlement.d.ts +0 -10
- package/dist/lib/structures/TestEntitlement.js +0 -21
- package/dist/lib/structures/TextChannel.d.ts +0 -34
- package/dist/lib/structures/TextChannel.js +0 -46
- package/dist/lib/structures/TextableChannel.d.ts +0 -158
- package/dist/lib/structures/TextableChannel.js +0 -276
- package/dist/lib/structures/TextableVoiceChannel.d.ts +0 -39
- package/dist/lib/structures/TextableVoiceChannel.js +0 -81
- package/dist/lib/structures/ThreadChannel.d.ts +0 -159
- package/dist/lib/structures/ThreadChannel.js +0 -295
- package/dist/lib/structures/ThreadOnlyChannel.d.ts +0 -99
- package/dist/lib/structures/ThreadOnlyChannel.js +0 -233
- package/dist/lib/structures/ThreadableChannel.d.ts +0 -36
- package/dist/lib/structures/ThreadableChannel.js +0 -58
- package/dist/lib/structures/UnavailableGuild.d.ts +0 -11
- package/dist/lib/structures/UnavailableGuild.js +0 -21
- package/dist/lib/structures/User.d.ts +0 -82
- package/dist/lib/structures/User.js +0 -168
- package/dist/lib/structures/VoiceChannel.d.ts +0 -20
- package/dist/lib/structures/VoiceChannel.js +0 -35
- package/dist/lib/structures/VoiceState.d.ts +0 -51
- package/dist/lib/structures/VoiceState.js +0 -140
- package/dist/lib/structures/Webhook.d.ts +0 -129
- package/dist/lib/structures/Webhook.js +0 -206
- package/dist/lib/types/applications.d.ts +0 -448
- package/dist/lib/types/audit-log.d.ts +0 -121
- package/dist/lib/types/auto-moderation.d.ts +0 -99
- package/dist/lib/types/channels.d.ts +0 -1150
- package/dist/lib/types/client.d.ts +0 -228
- package/dist/lib/types/events.d.ts +0 -260
- package/dist/lib/types/gateway-raw.d.ts +0 -567
- package/dist/lib/types/gateway.d.ts +0 -338
- package/dist/lib/types/guild-template.d.ts +0 -33
- package/dist/lib/types/guilds.d.ts +0 -854
- package/dist/lib/types/index.d.ts +0 -18
- package/dist/lib/types/interactions.d.ts +0 -376
- package/dist/lib/types/json.d.ts +0 -709
- package/dist/lib/types/misc.d.ts +0 -13
- package/dist/lib/types/oauth.d.ts +0 -201
- package/dist/lib/types/request-handler.d.ts +0 -52
- package/dist/lib/types/scheduled-events.d.ts +0 -88
- package/dist/lib/types/shared.d.ts +0 -9
- package/dist/lib/types/users.d.ts +0 -45
- package/dist/lib/types/voice.d.ts +0 -45
- package/dist/lib/types/webhooks.d.ts +0 -73
- package/dist/lib/util/Collection.d.ts +0 -47
- package/dist/lib/util/Collection.js +0 -78
- package/dist/lib/util/Errors.d.ts +0 -29
- package/dist/lib/util/Errors.js +0 -56
- package/dist/lib/util/Routes.d.ts +0 -124
- package/dist/lib/util/Routes.js +0 -243
- package/dist/lib/util/SimpleCollection.d.ts +0 -12
- package/dist/lib/util/SimpleCollection.js +0 -81
- package/dist/lib/util/TypedCollection.d.ts +0 -24
- package/dist/lib/util/TypedCollection.js +0 -76
- package/dist/lib/util/TypedEmitter.d.ts +0 -19
- package/dist/lib/util/TypedEmitter.js +0 -19
- package/dist/lib/util/Util.d.ts +0 -52
- package/dist/lib/util/Util.js +0 -469
- package/dist/lib/util/interactions/InteractionOptionsWrapper.d.ts +0 -170
- package/dist/lib/util/interactions/InteractionOptionsWrapper.js +0 -213
- package/dist/lib/util/interactions/MessageInteractionResponse.d.ts +0 -24
- package/dist/lib/util/interactions/MessageInteractionResponse.js +0 -28
- package/dist/lib/util/interactions/ModalSubmitInteractionComponentsWrapper.d.ts +0 -24
- package/dist/lib/util/interactions/ModalSubmitInteractionComponentsWrapper.js +0 -34
- package/dist/lib/util/interactions/SelectMenuValuesWrapper.d.ts +0 -60
- package/dist/lib/util/interactions/SelectMenuValuesWrapper.js +0 -124
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
/** @module RESTManager */
|
|
5
|
-
const RequestHandler_1 = tslib_1.__importDefault(require("./RequestHandler"));
|
|
6
|
-
const Channels_1 = tslib_1.__importDefault(require("../routes/Channels"));
|
|
7
|
-
const Guilds_1 = tslib_1.__importDefault(require("../routes/Guilds"));
|
|
8
|
-
const Users_1 = tslib_1.__importDefault(require("../routes/Users"));
|
|
9
|
-
const OAuth_1 = tslib_1.__importDefault(require("../routes/OAuth"));
|
|
10
|
-
const Webhooks_1 = tslib_1.__importDefault(require("../routes/Webhooks"));
|
|
11
|
-
const Applications_1 = tslib_1.__importDefault(require("../routes/Applications"));
|
|
12
|
-
const Interactions_1 = tslib_1.__importDefault(require("../routes/Interactions"));
|
|
13
|
-
const Routes = tslib_1.__importStar(require("../util/Routes"));
|
|
14
|
-
const Miscellaneous_1 = tslib_1.__importDefault(require("../routes/Miscellaneous"));
|
|
15
|
-
/** A manager for all rest actions. */
|
|
16
|
-
class RESTManager {
|
|
17
|
-
applications;
|
|
18
|
-
channels;
|
|
19
|
-
#client;
|
|
20
|
-
guilds;
|
|
21
|
-
handler;
|
|
22
|
-
interactions;
|
|
23
|
-
misc;
|
|
24
|
-
oauth;
|
|
25
|
-
users;
|
|
26
|
-
webhooks;
|
|
27
|
-
constructor(client, options) {
|
|
28
|
-
this.applications = new Applications_1.default(this);
|
|
29
|
-
this.channels = new Channels_1.default(this);
|
|
30
|
-
this.#client = client;
|
|
31
|
-
this.guilds = new Guilds_1.default(this);
|
|
32
|
-
this.handler = new RequestHandler_1.default(this, options);
|
|
33
|
-
this.interactions = new Interactions_1.default(this);
|
|
34
|
-
this.misc = new Miscellaneous_1.default(this);
|
|
35
|
-
this.oauth = new OAuth_1.default(this);
|
|
36
|
-
this.users = new Users_1.default(this);
|
|
37
|
-
this.webhooks = new Webhooks_1.default(this);
|
|
38
|
-
}
|
|
39
|
-
get client() {
|
|
40
|
-
return this.#client;
|
|
41
|
-
}
|
|
42
|
-
get options() {
|
|
43
|
-
return this.handler.options;
|
|
44
|
-
}
|
|
45
|
-
/** Alias for {@link RequestHandler#authRequest | RequestHandler#authRequest} */
|
|
46
|
-
async authRequest(options) {
|
|
47
|
-
return this.handler.authRequest(options);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Get the gateway information related to your bot client.
|
|
51
|
-
*/
|
|
52
|
-
async getBotGateway() {
|
|
53
|
-
return this.authRequest({
|
|
54
|
-
method: "GET",
|
|
55
|
-
path: Routes.GATEWAY_BOT
|
|
56
|
-
}).then(data => ({
|
|
57
|
-
url: data.url,
|
|
58
|
-
shards: data.shards,
|
|
59
|
-
sessionStartLimit: {
|
|
60
|
-
total: data.session_start_limit.total,
|
|
61
|
-
remaining: data.session_start_limit.remaining,
|
|
62
|
-
resetAfter: data.session_start_limit.reset_after,
|
|
63
|
-
maxConcurrency: data.session_start_limit.max_concurrency
|
|
64
|
-
}
|
|
65
|
-
}));
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Get the gateway information.
|
|
69
|
-
*/
|
|
70
|
-
async getGateway() {
|
|
71
|
-
return this.request({
|
|
72
|
-
method: "GET",
|
|
73
|
-
path: Routes.GATEWAY
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
/** Alias for {@link RequestHandler#request | RequestHandler#request} */
|
|
77
|
-
async request(options) {
|
|
78
|
-
return this.handler.request(options);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
exports.default = RESTManager;
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUkVTVE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvcmVzdC9SRVNUTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwQkFBMEI7QUFDMUIsOEVBQThDO0FBRTlDLDBFQUEwQztBQUMxQyxzRUFBc0M7QUFDdEMsb0VBQW9DO0FBQ3BDLG9FQUFvQztBQUNwQywwRUFBMEM7QUFHMUMsa0ZBQWtEO0FBQ2xELGtGQUFrRDtBQUNsRCwrREFBeUM7QUFFekMsb0ZBQW9EO0FBRXBELHNDQUFzQztBQUN0QyxNQUFxQixXQUFXO0lBQzVCLFlBQVksQ0FBZTtJQUMzQixRQUFRLENBQVc7SUFDbkIsT0FBTyxDQUFTO0lBQ2hCLE1BQU0sQ0FBUztJQUNmLE9BQU8sQ0FBaUI7SUFDeEIsWUFBWSxDQUFlO0lBQzNCLElBQUksQ0FBZ0I7SUFDcEIsS0FBSyxDQUFRO0lBQ2IsS0FBSyxDQUFRO0lBQ2IsUUFBUSxDQUFXO0lBQ25CLFlBQVksTUFBYyxFQUFFLE9BQXFCO1FBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxzQkFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxnQkFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSx3QkFBYyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksc0JBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksdUJBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxlQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGtCQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0lBRUQsZ0ZBQWdGO0lBQ2hGLEtBQUssQ0FBQyxXQUFXLENBQWMsT0FBcUM7UUFDaEUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBSSxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBMkI7WUFDOUMsTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJLEVBQUksTUFBTSxDQUFDLFdBQVc7U0FDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDYixHQUFHLEVBQWdCLElBQUksQ0FBQyxHQUFHO1lBQzNCLE1BQU0sRUFBYSxJQUFJLENBQUMsTUFBTTtZQUM5QixpQkFBaUIsRUFBRTtnQkFDZixLQUFLLEVBQVcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUs7Z0JBQzlDLFNBQVMsRUFBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUztnQkFDbEQsVUFBVSxFQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXO2dCQUNwRCxjQUFjLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWU7YUFDM0Q7U0FDSixDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFxQjtZQUNwQyxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBSSxNQUFNLENBQUMsT0FBTztTQUN6QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLEtBQUssQ0FBQyxPQUFPLENBQWMsT0FBdUI7UUFDOUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBSSxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0o7QUFyRUQsOEJBcUVDIn0=
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/** @module RequestHandler */
|
|
2
|
-
import SequentialBucket from "./SequentialBucket";
|
|
3
|
-
import type RESTManager from "./RESTManager";
|
|
4
|
-
import type { LatencyRef, RequestHandlerInstanceOptions, RequestOptions } from "../types/request-handler";
|
|
5
|
-
import type { RESTOptions } from "../types/client";
|
|
6
|
-
/**
|
|
7
|
-
* Latency & ratelimit related things lovingly borrowed from eris
|
|
8
|
-
* https://github.com/abalabahaha/eris/blob/dev/lib/rest/RequestHandler.js (eb403730855714eafa36c541dbe2cb84c9979158)
|
|
9
|
-
*/
|
|
10
|
-
/** The primary means of communicating with Discord via rest. */
|
|
11
|
-
export default class RequestHandler {
|
|
12
|
-
#private;
|
|
13
|
-
globalBlock: boolean;
|
|
14
|
-
latencyRef: LatencyRef;
|
|
15
|
-
options: RequestHandlerInstanceOptions;
|
|
16
|
-
ratelimits: Record<string, SequentialBucket>;
|
|
17
|
-
readyQueue: Array<() => void>;
|
|
18
|
-
constructor(manager: RESTManager, options?: RESTOptions);
|
|
19
|
-
private getRoute;
|
|
20
|
-
private globalUnblock;
|
|
21
|
-
/** same as `request`, but with `auth` always set to `true`. */
|
|
22
|
-
authRequest<T = unknown>(options: Omit<RequestOptions, "auth">): Promise<T>;
|
|
23
|
-
/**
|
|
24
|
-
* Make a request. `null` will be returned if the request results in a `204 NO CONTENT`.
|
|
25
|
-
* @param options The options for the request.
|
|
26
|
-
*/
|
|
27
|
-
request<T = unknown>(options: RequestOptions): Promise<T>;
|
|
28
|
-
}
|
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
/** @module RequestHandler */
|
|
5
|
-
const SequentialBucket_1 = tslib_1.__importDefault(require("./SequentialBucket"));
|
|
6
|
-
const DiscordRESTError_1 = tslib_1.__importDefault(require("./DiscordRESTError"));
|
|
7
|
-
const DiscordHTTPError_1 = tslib_1.__importDefault(require("./DiscordHTTPError"));
|
|
8
|
-
const Constants_1 = require("../Constants");
|
|
9
|
-
const Base_1 = tslib_1.__importDefault(require("../structures/Base"));
|
|
10
|
-
/**
|
|
11
|
-
* Latency & ratelimit related things lovingly borrowed from eris
|
|
12
|
-
* https://github.com/abalabahaha/eris/blob/dev/lib/rest/RequestHandler.js (eb403730855714eafa36c541dbe2cb84c9979158)
|
|
13
|
-
*/
|
|
14
|
-
/** The primary means of communicating with Discord via rest. */
|
|
15
|
-
class RequestHandler {
|
|
16
|
-
globalBlock = false;
|
|
17
|
-
latencyRef;
|
|
18
|
-
#manager;
|
|
19
|
-
options;
|
|
20
|
-
ratelimits = {};
|
|
21
|
-
readyQueue = [];
|
|
22
|
-
constructor(manager, options = {}) {
|
|
23
|
-
if (options && options.baseURL && options.baseURL.endsWith("/")) {
|
|
24
|
-
options.baseURL = options.baseURL.slice(0, -1);
|
|
25
|
-
}
|
|
26
|
-
this.#manager = manager;
|
|
27
|
-
this.options = {
|
|
28
|
-
agent: options.agent,
|
|
29
|
-
baseURL: options.baseURL ?? Constants_1.API_URL,
|
|
30
|
-
disableLatencyCompensation: !!options.disableLatencyCompensation,
|
|
31
|
-
host: options.host ?? (options.baseURL ? new URL(options.baseURL).host : new URL(Constants_1.API_URL).host),
|
|
32
|
-
latencyThreshold: options.latencyThreshold ?? 30000,
|
|
33
|
-
ratelimiterOffset: options.ratelimiterOffset ?? 0,
|
|
34
|
-
requestTimeout: options.requestTimeout ?? 15000,
|
|
35
|
-
superProperties: options.superProperties ?? null,
|
|
36
|
-
userAgent: options.userAgent ?? Constants_1.USER_AGENT
|
|
37
|
-
};
|
|
38
|
-
this.latencyRef = {
|
|
39
|
-
lastTimeOffsetCheck: 0,
|
|
40
|
-
latency: options.ratelimiterOffset ?? 0,
|
|
41
|
-
raw: Array.from({ length: 10 }).fill(options.ratelimiterOffset ?? 0),
|
|
42
|
-
timeOffsets: Array.from({ length: 10 }).fill(0),
|
|
43
|
-
timeoffset: 0
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
getRoute(path, method) {
|
|
47
|
-
let route = path.replaceAll(/\/([a-z-]+)\/\d{15,21}/g, function (match, p) {
|
|
48
|
-
return p === "channels" || p === "guilds" || p === "webhooks" ? match : `/${p}/:id`;
|
|
49
|
-
}).replaceAll(/\/reactions\/[^/]+/g, "/reactions/:id").replaceAll(/\/reactions\/:id\/[^/]+/g, "/reactions/:id/:userID").replace(/^\/webhooks\/(\d+)\/[\w-]{64,}/, "/webhooks/$1/:token");
|
|
50
|
-
if (method === "DELETE" && route.endsWith("/messages/:id")) {
|
|
51
|
-
const messageID = path.slice(path.lastIndexOf("/") + 1);
|
|
52
|
-
const createdAt = Base_1.default.getCreatedAt(messageID).getTime();
|
|
53
|
-
if (Date.now() - this.latencyRef.latency - createdAt >= 1000 * 60 * 60 * 24 * 14) {
|
|
54
|
-
method += "_OLD";
|
|
55
|
-
}
|
|
56
|
-
else if (Date.now() - this.latencyRef.latency - createdAt <= 1000 * 10) {
|
|
57
|
-
method += "_NEW";
|
|
58
|
-
}
|
|
59
|
-
route = method + route;
|
|
60
|
-
}
|
|
61
|
-
else if (method === "GET" && /\/guilds\/\d+\/channels$/.test(route)) {
|
|
62
|
-
route = "/guilds/:id/channels";
|
|
63
|
-
}
|
|
64
|
-
if (method === "PUT" || method === "DELETE") {
|
|
65
|
-
const index = route.indexOf("/reactions");
|
|
66
|
-
if (index !== -1) {
|
|
67
|
-
route = "MODIFY" + route.slice(0, index + 10);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return route;
|
|
71
|
-
}
|
|
72
|
-
globalUnblock() {
|
|
73
|
-
this.globalBlock = false;
|
|
74
|
-
while (this.readyQueue.length !== 0) {
|
|
75
|
-
this.readyQueue.shift()();
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/** same as `request`, but with `auth` always set to `true`. */
|
|
79
|
-
async authRequest(options) {
|
|
80
|
-
return this.request({
|
|
81
|
-
...options,
|
|
82
|
-
auth: true
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Make a request. `null` will be returned if the request results in a `204 NO CONTENT`.
|
|
87
|
-
* @param options The options for the request.
|
|
88
|
-
*/
|
|
89
|
-
async request(options) {
|
|
90
|
-
options.method = options.method.toUpperCase();
|
|
91
|
-
if (!Constants_1.RESTMethods.includes(options.method)) {
|
|
92
|
-
throw new TypeError(`Invalid method "${options.method}.`);
|
|
93
|
-
}
|
|
94
|
-
const _stackHolder = {};
|
|
95
|
-
Error.captureStackTrace(_stackHolder);
|
|
96
|
-
if (!options.path.startsWith("/")) {
|
|
97
|
-
options.path = `/${options.path}`;
|
|
98
|
-
}
|
|
99
|
-
const route = options.route ?? this.getRoute(options.path, options.method);
|
|
100
|
-
if (!this.ratelimits[route]) {
|
|
101
|
-
this.ratelimits[route] = new SequentialBucket_1.default(1, this.latencyRef);
|
|
102
|
-
}
|
|
103
|
-
let attempts = 0;
|
|
104
|
-
return new Promise((resolve, reject) => {
|
|
105
|
-
async function attempt(cb) {
|
|
106
|
-
const headers = options.headers ?? {};
|
|
107
|
-
try {
|
|
108
|
-
if (typeof options.auth === "string") {
|
|
109
|
-
headers.Authorization = options.auth;
|
|
110
|
-
}
|
|
111
|
-
else if (options.auth && this.#manager.client.options.auth) {
|
|
112
|
-
headers.Authorization = this.#manager.client.options.auth;
|
|
113
|
-
}
|
|
114
|
-
if (options.reason) {
|
|
115
|
-
headers["X-Audit-Log-Reason"] = encodeURIComponent(options.reason);
|
|
116
|
-
}
|
|
117
|
-
let reqBody;
|
|
118
|
-
if (options.method !== "GET") {
|
|
119
|
-
let stringBody;
|
|
120
|
-
if (options.json) {
|
|
121
|
-
stringBody = JSON.stringify(options.json, (k, v) => typeof v === "bigint" ? v.toString() : v);
|
|
122
|
-
}
|
|
123
|
-
if (options.form || (options.files && options.files.length !== 0)) {
|
|
124
|
-
const data = options.form ?? new FormData();
|
|
125
|
-
let index = 0;
|
|
126
|
-
if (options.files)
|
|
127
|
-
for (const file of options.files.values()) {
|
|
128
|
-
index++;
|
|
129
|
-
if (file.index !== undefined) {
|
|
130
|
-
index = file.index;
|
|
131
|
-
}
|
|
132
|
-
if (!file.contents) {
|
|
133
|
-
continue;
|
|
134
|
-
}
|
|
135
|
-
data.set(`files[${index}]`, new Blob([file.contents]), file.name);
|
|
136
|
-
}
|
|
137
|
-
if (stringBody) {
|
|
138
|
-
data.set("payload_json", stringBody);
|
|
139
|
-
}
|
|
140
|
-
reqBody = data;
|
|
141
|
-
}
|
|
142
|
-
else if (options.json) {
|
|
143
|
-
reqBody = stringBody;
|
|
144
|
-
headers["Content-Type"] = "application/json";
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
if (this.options.host) {
|
|
148
|
-
headers.Host = this.options.host;
|
|
149
|
-
}
|
|
150
|
-
if (this.options.superProperties) {
|
|
151
|
-
headers["X-Super-Properties"] = typeof this.options.superProperties === "object" ? JSON.stringify(this.options.superProperties) : this.options.superProperties;
|
|
152
|
-
}
|
|
153
|
-
const url = `${this.options.baseURL}${options.path}${options.query && Array.from(options.query.keys()).length !== 0 ? `?${options.query.toString()}` : ""}`;
|
|
154
|
-
let latency = Date.now();
|
|
155
|
-
const controller = new AbortController();
|
|
156
|
-
let timeout;
|
|
157
|
-
if (this.options.requestTimeout > 0 && this.options.requestTimeout !== Infinity) {
|
|
158
|
-
timeout = setTimeout(() => controller.abort(), this.options.requestTimeout);
|
|
159
|
-
}
|
|
160
|
-
const res = await fetch(url, {
|
|
161
|
-
method: options.method,
|
|
162
|
-
headers,
|
|
163
|
-
body: reqBody,
|
|
164
|
-
dispatcher: this.options.agent || undefined,
|
|
165
|
-
signal: controller.signal
|
|
166
|
-
});
|
|
167
|
-
if (timeout) {
|
|
168
|
-
clearTimeout(timeout);
|
|
169
|
-
}
|
|
170
|
-
latency = Date.now() - latency;
|
|
171
|
-
if (!this.options.disableLatencyCompensation) {
|
|
172
|
-
this.latencyRef.raw.push(latency);
|
|
173
|
-
this.latencyRef.latency = this.latencyRef.latency - Math.trunc((this.latencyRef.raw.shift() ?? 0) / 10) + Math.trunc(latency / 10);
|
|
174
|
-
}
|
|
175
|
-
let resBody;
|
|
176
|
-
if (res.status === 204) {
|
|
177
|
-
resBody = null;
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
if (res.headers.get("content-type") === "application/json") {
|
|
181
|
-
const b = await res.text();
|
|
182
|
-
try {
|
|
183
|
-
resBody = JSON.parse(b);
|
|
184
|
-
}
|
|
185
|
-
catch (err) {
|
|
186
|
-
this.#manager.client.emit("error", err);
|
|
187
|
-
resBody = b;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
resBody = Buffer.from(await res.arrayBuffer());
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
this.#manager.client.emit("request", {
|
|
195
|
-
method: options.method,
|
|
196
|
-
path: options.path,
|
|
197
|
-
route,
|
|
198
|
-
withAuth: !!options.auth,
|
|
199
|
-
requestBody: reqBody,
|
|
200
|
-
responseBody: resBody
|
|
201
|
-
});
|
|
202
|
-
const headerNow = Date.parse(res.headers.get("date"));
|
|
203
|
-
const now = Date.now();
|
|
204
|
-
if (this.latencyRef.lastTimeOffsetCheck < (Date.now() - 5000)) {
|
|
205
|
-
const timeOffset = headerNow + 500 - (this.latencyRef.lastTimeOffsetCheck = Date.now());
|
|
206
|
-
if (this.latencyRef.timeoffset - this.latencyRef.latency >= this.options.latencyThreshold && timeOffset - this.latencyRef.latency >= this.options.latencyThreshold) {
|
|
207
|
-
this.#manager.client.emit("warn", `Your clock is ${this.latencyRef.timeoffset}ms behind Discord's server clock. Please check your connection and system time.`);
|
|
208
|
-
}
|
|
209
|
-
this.latencyRef.timeoffset = this.latencyRef.timeoffset - Math.trunc(this.latencyRef.timeOffsets.shift() / 10) + Math.trunc(timeOffset / 10);
|
|
210
|
-
this.latencyRef.timeOffsets.push(timeOffset);
|
|
211
|
-
}
|
|
212
|
-
if (res.headers.has("x-ratelimit-limit")) {
|
|
213
|
-
this.ratelimits[route].limit = Number(res.headers.get("x-ratelimit-limit"));
|
|
214
|
-
}
|
|
215
|
-
if (options.method !== "GET" && (!res.headers.has("x-ratelimit-remaining") || !res.headers.has("x-ratelimit-limit")) && this.ratelimits[route].limit !== 1) {
|
|
216
|
-
this.#manager.client.emit("debug", [`Missing ratelimit headers for SequentialBucket(${this.ratelimits[route].remaining}/${this.ratelimits[route].limit}) with non-default limit\n`,
|
|
217
|
-
`${res.status} ${res.headers.get("content-type") ?? "null"}: ${options.method} ${route} | ${res.headers.get("cf-ray") ?? "null"}\n`,
|
|
218
|
-
`content-type = ${res.headers.get("content-type") ?? "null"}\n`,
|
|
219
|
-
`x-ratelimit-remaining = ${res.headers.get("x-ratelimit-remaining") ?? "null"}\n`,
|
|
220
|
-
`x-ratelimit-limit = ${res.headers.get("x-ratelimit-limit") ?? "null"}\n`,
|
|
221
|
-
`x-ratelimit-reset = ${res.headers.get("x-ratelimit-reset") ?? "null"}\n`,
|
|
222
|
-
`x-ratelimit-global = ${res.headers.get("x-ratelimit-global") ?? "null"}`].join("\n"));
|
|
223
|
-
}
|
|
224
|
-
this.ratelimits[route].remaining = res.headers.has("x-ratelimit-remaining") ? Number(res.headers.get("x-ratelimit-remaining")) ?? 0 : 1;
|
|
225
|
-
const retryAfter = Number(res.headers.get("x-ratelimit-reset-after") ?? res.headers.get("retry-after") ?? 0) * 1000;
|
|
226
|
-
if (retryAfter >= 0) {
|
|
227
|
-
if (res.headers.has("x-ratelimit-global")) {
|
|
228
|
-
this.globalBlock = true;
|
|
229
|
-
setTimeout(this.globalUnblock.bind(this), retryAfter ?? 1);
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
this.ratelimits[route].reset = (retryAfter ?? 1) + now;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
else if (res.headers.has("x-ratelimit-reset")) {
|
|
236
|
-
let resetTime = Number(res.headers.get("x-ratelimit-reset")) * 1000;
|
|
237
|
-
if (route.endsWith("/reactions/:id") && (resetTime - headerNow) === 1000) {
|
|
238
|
-
resetTime = now + 250;
|
|
239
|
-
}
|
|
240
|
-
this.ratelimits[route].reset = Math.max(resetTime - this.latencyRef.latency, now);
|
|
241
|
-
}
|
|
242
|
-
else {
|
|
243
|
-
this.ratelimits[route].reset = now;
|
|
244
|
-
}
|
|
245
|
-
if (res.status !== 429) {
|
|
246
|
-
this.#manager.client.emit("debug", `${now} ${route} ${res.status}: ${latency}ms (${this.latencyRef.latency}ms avg) | ${this.ratelimits[route].remaining}/${this.ratelimits[route].limit} left | Reset ${this.ratelimits[route].reset} (${this.ratelimits[route].reset - now}ms left)`);
|
|
247
|
-
}
|
|
248
|
-
if (res.status > 300) {
|
|
249
|
-
if (res.status === 429) {
|
|
250
|
-
let delay = retryAfter;
|
|
251
|
-
if (res.headers.get("x-ratelimit-scope") === "shared") {
|
|
252
|
-
try {
|
|
253
|
-
delay = resBody.retry_after * 1000;
|
|
254
|
-
}
|
|
255
|
-
catch (err) {
|
|
256
|
-
reject(err);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
this.#manager.client.emit("debug", `${res.headers.has("x-ratelimit-global") ? "Global" : "Unexpected"} RateLimit: ${JSON.stringify(resBody)}\n${now} ${route} ${res.status}: ${latency}ms (${this.latencyRef.latency}ms avg) | ${this.ratelimits[route].remaining}/${this.ratelimits[route].limit} left | Reset ${delay} (${this.ratelimits[route].reset - now}ms left) | Scope ${res.headers.get("x-ratelimit-scope")}`);
|
|
260
|
-
if (delay) {
|
|
261
|
-
setTimeout(() => {
|
|
262
|
-
cb();
|
|
263
|
-
// eslint-disable-next-line prefer-rest-params, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, prefer-spread
|
|
264
|
-
this.request(options).then(resolve).catch(reject);
|
|
265
|
-
}, delay);
|
|
266
|
-
return;
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
cb();
|
|
270
|
-
this.request(options).then(resolve).catch(reject);
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
else if (res.status === 502 && ++attempts < 4) {
|
|
275
|
-
this.#manager.client.emit("debug", `Unexpected 502 on ${options.method} ${route}`);
|
|
276
|
-
setTimeout(() => {
|
|
277
|
-
this.request(options).then(resolve).catch(reject);
|
|
278
|
-
}, Math.floor(Math.random() * 1900 + 100));
|
|
279
|
-
return cb();
|
|
280
|
-
}
|
|
281
|
-
cb();
|
|
282
|
-
let { stack } = _stackHolder;
|
|
283
|
-
if (stack.startsWith("Error\n")) {
|
|
284
|
-
stack = stack.slice(6);
|
|
285
|
-
}
|
|
286
|
-
const err = resBody && typeof resBody === "object" && "code" in resBody ? new DiscordRESTError_1.default(res, resBody, options.method, stack) : new DiscordHTTPError_1.default(res, resBody, options.method, stack);
|
|
287
|
-
reject(err);
|
|
288
|
-
return;
|
|
289
|
-
}
|
|
290
|
-
cb();
|
|
291
|
-
resolve(resBody);
|
|
292
|
-
}
|
|
293
|
-
catch (err) {
|
|
294
|
-
cb();
|
|
295
|
-
if (err instanceof Error && err.constructor.name === "DOMException" && err.name === "AbortError") {
|
|
296
|
-
reject(new Error(`Request Timed Out (>${this.options.requestTimeout}ms) on ${options.method} ${options.path}`));
|
|
297
|
-
}
|
|
298
|
-
this.#manager.client.emit("error", err);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
if (this.globalBlock && options.auth) {
|
|
302
|
-
(options.priority ? this.readyQueue.unshift.bind(this.readyQueue) : this.readyQueue.push.bind(this.readyQueue))(() => {
|
|
303
|
-
this.ratelimits[route].queue(attempt.bind(this), options.priority);
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
else {
|
|
307
|
-
this.ratelimits[route].queue(attempt.bind(this), options.priority);
|
|
308
|
-
}
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
exports.default = RequestHandler;
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVxdWVzdEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvcmVzdC9SZXF1ZXN0SGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFDN0Isa0ZBQWtEO0FBQ2xELGtGQUFrRDtBQUNsRCxrRkFBa0Q7QUFFbEQsNENBQWlGO0FBQ2pGLHNFQUFzQztBQUl0Qzs7O0dBR0c7QUFFSCxnRUFBZ0U7QUFDaEUsTUFBcUIsY0FBYztJQUMvQixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLFVBQVUsQ0FBYTtJQUN2QixRQUFRLENBQWM7SUFDdEIsT0FBTyxDQUFnQztJQUN2QyxVQUFVLEdBQXFDLEVBQUUsQ0FBQztJQUNsRCxVQUFVLEdBQXNCLEVBQUUsQ0FBQztJQUNuQyxZQUFZLE9BQW9CLEVBQUUsVUFBdUIsRUFBRTtRQUN2RCxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUQsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNYLEtBQUssRUFBdUIsT0FBTyxDQUFDLEtBQUs7WUFDekMsT0FBTyxFQUFxQixPQUFPLENBQUMsT0FBTyxJQUFJLG1CQUFPO1lBQ3RELDBCQUEwQixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsMEJBQTBCO1lBQ2hFLElBQUksRUFBd0IsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENB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
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/** @module SequentialBucket */
|
|
2
|
-
/**
|
|
3
|
-
* Latency & ratelimit related things lovingly borrowed from eris
|
|
4
|
-
* https://github.com/abalabahaha/eris/blob/dev/lib/util/SequentialBucket.js (eb403730855714eafa36c541dbe2cb84c9979158)
|
|
5
|
-
*/
|
|
6
|
-
/// <reference types="node" />
|
|
7
|
-
import type { LatencyRef } from "../types/request-handler";
|
|
8
|
-
/** A ratelimit bucket. */
|
|
9
|
-
export default class SequentialBucket {
|
|
10
|
-
#private;
|
|
11
|
-
last: number;
|
|
12
|
-
latencyRef: LatencyRef;
|
|
13
|
-
limit: number;
|
|
14
|
-
processing: NodeJS.Timeout | boolean;
|
|
15
|
-
remaining: number;
|
|
16
|
-
reset: number;
|
|
17
|
-
constructor(limit: number, latencyRef: LatencyRef);
|
|
18
|
-
private check;
|
|
19
|
-
/**
|
|
20
|
-
* Add an item to the queue.
|
|
21
|
-
* @param func The function to queue.
|
|
22
|
-
* @param priority- If true, the item will be added to the front of the queue/
|
|
23
|
-
*/
|
|
24
|
-
queue(func: (cb: () => void) => void, priority?: boolean): void;
|
|
25
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/** @module SequentialBucket */
|
|
3
|
-
/**
|
|
4
|
-
* Latency & ratelimit related things lovingly borrowed from eris
|
|
5
|
-
* https://github.com/abalabahaha/eris/blob/dev/lib/util/SequentialBucket.js (eb403730855714eafa36c541dbe2cb84c9979158)
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
/** A ratelimit bucket. */
|
|
9
|
-
class SequentialBucket {
|
|
10
|
-
last;
|
|
11
|
-
latencyRef;
|
|
12
|
-
limit;
|
|
13
|
-
processing = false;
|
|
14
|
-
#queue = [];
|
|
15
|
-
remaining;
|
|
16
|
-
reset;
|
|
17
|
-
constructor(limit, latencyRef) {
|
|
18
|
-
this.limit = this.remaining = limit;
|
|
19
|
-
this.latencyRef = latencyRef;
|
|
20
|
-
this.last = this.reset = 0;
|
|
21
|
-
}
|
|
22
|
-
check(force = false) {
|
|
23
|
-
if (this.#queue.length === 0) {
|
|
24
|
-
if (this.processing) {
|
|
25
|
-
if (typeof this.processing !== "boolean") {
|
|
26
|
-
clearTimeout(this.processing);
|
|
27
|
-
}
|
|
28
|
-
this.processing = false;
|
|
29
|
-
}
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
if (this.processing && !force) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
const now = Date.now();
|
|
36
|
-
const offset = this.latencyRef.latency;
|
|
37
|
-
if (!this.reset || this.reset < now - offset) {
|
|
38
|
-
this.reset = now - offset;
|
|
39
|
-
this.remaining = this.limit;
|
|
40
|
-
}
|
|
41
|
-
this.last = now;
|
|
42
|
-
if (this.remaining <= 0) {
|
|
43
|
-
this.processing = setTimeout(() => {
|
|
44
|
-
this.processing = false;
|
|
45
|
-
this.check(true);
|
|
46
|
-
}, Math.max(0, (this.reset ?? 0) - now + offset) + 1);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
--this.remaining;
|
|
50
|
-
this.processing = true;
|
|
51
|
-
this.#queue.shift()(() => {
|
|
52
|
-
if (this.#queue.length === 0) {
|
|
53
|
-
this.processing = false;
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
this.check(true);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Add an item to the queue.
|
|
62
|
-
* @param func The function to queue.
|
|
63
|
-
* @param priority- If true, the item will be added to the front of the queue/
|
|
64
|
-
*/
|
|
65
|
-
queue(func, priority = false) {
|
|
66
|
-
if (priority) {
|
|
67
|
-
this.#queue.unshift(func);
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
this.#queue.push(func);
|
|
71
|
-
}
|
|
72
|
-
this.check();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
exports.default = SequentialBucket;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VxdWVudGlhbEJ1Y2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9yZXN0L1NlcXVlbnRpYWxCdWNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtCQUErQjtBQUMvQjs7O0dBR0c7O0FBSUgsMEJBQTBCO0FBQzFCLE1BQXFCLGdCQUFnQjtJQUNqQyxJQUFJLENBQVM7SUFDYixVQUFVLENBQWE7SUFDdkIsS0FBSyxDQUFTO0lBQ2QsVUFBVSxHQUE2QixLQUFLLENBQUM7SUFDN0MsTUFBTSxHQUFvQyxFQUFFLENBQUM7SUFDN0MsU0FBUyxDQUFTO0lBQ2xCLEtBQUssQ0FBUztJQUNkLFlBQVksS0FBYSxFQUFFLFVBQXNCO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8sS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUN2QyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO2dCQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQzVCLENBQUM7WUFDRCxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDWCxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JCLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RELE9BQU87UUFDWCxDQUFDO1FBQ0QsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFHLENBQUMsR0FBRyxFQUFFO1lBQ3RCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLElBQThCLEVBQUUsUUFBUSxHQUFHLEtBQUs7UUFDbEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDO0NBQ0o7QUFqRUQsbUNBaUVDIn0=
|