oceanic.js 0.0.12-dev.b566fc5 → 0.0.12-dev.bcdbabd
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/.github/workflows/dev-publish.yml +4 -1
- package/.github/workflows/docs.yml +14 -0
- package/CONTRIBUTING.md +10 -0
- package/README.md +7 -2
- package/dist/lib/Client.d.ts +6 -4
- package/dist/lib/Client.js +41 -22
- package/dist/lib/Constants.d.ts +4 -2
- package/dist/lib/Constants.js +3 -1
- package/dist/lib/gateway/Shard.d.ts +4 -4
- package/dist/lib/gateway/Shard.js +157 -88
- package/dist/lib/gateway/ShardManager.js +26 -14
- package/dist/lib/rest/Bucket.js +7 -4
- package/dist/lib/rest/DiscordHTTPError.d.ts +3 -3
- package/dist/lib/rest/DiscordHTTPError.js +24 -11
- package/dist/lib/rest/DiscordRESTError.d.ts +3 -3
- package/dist/lib/rest/DiscordRESTError.js +30 -14
- package/dist/lib/rest/RESTManager.d.ts +1 -1
- package/dist/lib/rest/RESTManager.js +7 -3
- package/dist/lib/rest/RequestHandler.js +56 -29
- package/dist/lib/rest/SequentialBucket.js +13 -7
- package/dist/lib/routes/ApplicationCommands.d.ts +12 -12
- package/dist/lib/routes/ApplicationCommands.js +26 -20
- package/dist/lib/routes/Channels.d.ts +11 -9
- package/dist/lib/routes/Channels.js +38 -27
- package/dist/lib/routes/Guilds.d.ts +36 -35
- package/dist/lib/routes/Guilds.js +121 -71
- package/dist/lib/routes/Interactions.d.ts +6 -5
- package/dist/lib/routes/Interactions.js +4 -4
- package/dist/lib/routes/OAuth.d.ts +6 -4
- package/dist/lib/routes/OAuth.js +18 -10
- package/dist/lib/routes/Users.d.ts +6 -1
- package/dist/lib/routes/Users.js +7 -2
- package/dist/lib/routes/Webhooks.d.ts +3 -3
- package/dist/lib/routes/Webhooks.js +39 -22
- package/dist/lib/structures/AnnouncementChannel.d.ts +2 -1
- package/dist/lib/structures/AnnouncementChannel.js +1 -1
- package/dist/lib/structures/Application.js +35 -18
- package/dist/lib/structures/ApplicationCommand.d.ts +8 -4
- package/dist/lib/structures/ApplicationCommand.js +13 -4
- package/dist/lib/structures/AutoModerationRule.d.ts +1 -1
- package/dist/lib/structures/AutoModerationRule.js +17 -9
- package/dist/lib/structures/AutocompleteInteraction.js +3 -2
- package/dist/lib/structures/Base.js +1 -1
- package/dist/lib/structures/CategoryChannel.js +17 -9
- package/dist/lib/structures/Channel.js +1 -2
- package/dist/lib/structures/ClientApplication.d.ts +21 -19
- package/dist/lib/structures/ClientApplication.js +16 -15
- package/dist/lib/structures/CommandInteraction.js +27 -14
- package/dist/lib/structures/ComponentInteraction.js +11 -6
- package/dist/lib/structures/ExtendedUser.js +7 -4
- package/dist/lib/structures/ForumChannel.d.ts +2 -2
- package/dist/lib/structures/ForumChannel.js +35 -18
- package/dist/lib/structures/GroupChannel.d.ts +6 -5
- package/dist/lib/structures/GroupChannel.js +21 -11
- package/dist/lib/structures/Guild.d.ts +44 -46
- package/dist/lib/structures/Guild.js +117 -55
- package/dist/lib/structures/GuildChannel.js +3 -2
- package/dist/lib/structures/GuildPreview.js +21 -11
- package/dist/lib/structures/GuildScheduledEvent.js +27 -14
- package/dist/lib/structures/GuildTemplate.js +13 -7
- package/dist/lib/structures/Integration.js +29 -15
- package/dist/lib/structures/Invite.js +36 -19
- package/dist/lib/structures/Member.d.ts +6 -3
- package/dist/lib/structures/Member.js +64 -24
- package/dist/lib/structures/Message.d.ts +6 -4
- package/dist/lib/structures/Message.js +89 -33
- package/dist/lib/structures/ModalSubmitInteraction.d.ts +6 -5
- package/dist/lib/structures/ModalSubmitInteraction.js +9 -5
- package/dist/lib/structures/PartialApplication.js +11 -6
- package/dist/lib/structures/Permission.d.ts +3 -2
- package/dist/lib/structures/Permission.js +9 -5
- package/dist/lib/structures/PermissionOverwrite.d.ts +2 -2
- package/dist/lib/structures/PermissionOverwrite.js +10 -6
- package/dist/lib/structures/PingInteraction.d.ts +1 -1
- package/dist/lib/structures/PingInteraction.js +1 -1
- package/dist/lib/structures/PrivateChannel.d.ts +3 -3
- package/dist/lib/structures/PrivateChannel.js +3 -2
- package/dist/lib/structures/Role.js +19 -10
- package/dist/lib/structures/StageChannel.d.ts +3 -2
- package/dist/lib/structures/StageChannel.js +21 -11
- package/dist/lib/structures/StageInstance.js +11 -6
- package/dist/lib/structures/Team.js +9 -5
- package/dist/lib/structures/TextChannel.d.ts +12 -2
- package/dist/lib/structures/TextChannel.js +15 -1
- package/dist/lib/structures/TextableChannel.d.ts +5 -14
- package/dist/lib/structures/TextableChannel.js +25 -27
- package/dist/lib/structures/ThreadChannel.d.ts +5 -4
- package/dist/lib/structures/ThreadChannel.js +21 -11
- package/dist/lib/structures/User.d.ts +2 -1
- package/dist/lib/structures/User.js +13 -7
- package/dist/lib/structures/VoiceChannel.d.ts +7 -5
- package/dist/lib/structures/VoiceChannel.js +27 -14
- package/dist/lib/structures/VoiceState.js +23 -12
- package/dist/lib/structures/Webhook.js +20 -10
- package/dist/lib/types/application-commands.d.ts +35 -25
- package/dist/lib/types/channels.d.ts +6 -1
- package/dist/lib/types/client.d.ts +2 -232
- package/dist/lib/types/events.d.ts +233 -0
- package/dist/lib/types/guilds.d.ts +1 -1
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/oauth.d.ts +5 -2
- package/dist/lib/types/request-handler.d.ts +2 -1
- package/dist/lib/types/shared.d.ts +6 -0
- package/dist/lib/util/Collection.d.ts +3 -2
- package/dist/lib/util/Collection.js +12 -6
- package/dist/lib/util/InteractionOptionsWrapper.js +68 -41
- package/dist/lib/util/Routes.d.ts +1 -0
- package/dist/lib/util/Routes.js +5 -2
- package/dist/lib/util/TypedCollection.js +12 -7
- package/dist/lib/util/TypedEmitter.js +3 -3
- package/dist/lib/util/Util.js +108 -132
- package/dist/lib/voice/VoiceConnection.d.ts +2 -1
- package/dist/lib/voice/VoiceConnection.js +2 -1
- package/dist/package.json +8 -10
- package/doc-test.js +39 -0
- package/esm.mjs +1 -1
- package/examples/applicationCommand.js +4 -4
- package/examples/components.js +4 -4
- package/examples/embeds.js +3 -4
- package/examples/intents.js +8 -10
- package/package.json +8 -10
|
@@ -54,10 +54,12 @@ class ShardManager extends Collection_1.default {
|
|
|
54
54
|
if (Array.isArray(options.intents)) {
|
|
55
55
|
let bitmask = 0;
|
|
56
56
|
for (const intent of options.intents) {
|
|
57
|
-
if (typeof intent === "number")
|
|
57
|
+
if (typeof intent === "number") {
|
|
58
58
|
bitmask |= intent;
|
|
59
|
-
|
|
59
|
+
}
|
|
60
|
+
else if (Constants_1.Intents[intent]) {
|
|
60
61
|
bitmask |= Constants_1.Intents[intent];
|
|
62
|
+
}
|
|
61
63
|
else {
|
|
62
64
|
if (intent === "ALL") {
|
|
63
65
|
bitmask = Constants_1.AllIntents;
|
|
@@ -69,8 +71,9 @@ class ShardManager extends Collection_1.default {
|
|
|
69
71
|
this.options.intents = bitmask;
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
|
-
else
|
|
74
|
+
else {
|
|
73
75
|
this.options.intents = Constants_1.AllNonPrivilegedIntents;
|
|
76
|
+
}
|
|
74
77
|
if (this.options.getAllUsers && !(this.options.intents & Constants_1.Intents.GUILD_MEMBERS)) {
|
|
75
78
|
throw new Error("Guild members cannot be requested without the GUILD_MEMBERS intent");
|
|
76
79
|
}
|
|
@@ -92,11 +95,13 @@ class ShardManager extends Collection_1.default {
|
|
|
92
95
|
shard
|
|
93
96
|
.on("ready", () => {
|
|
94
97
|
this.#client.emit("shardReady", id);
|
|
95
|
-
if (this.#client.ready)
|
|
98
|
+
if (this.#client.ready) {
|
|
96
99
|
return;
|
|
100
|
+
}
|
|
97
101
|
for (const other of this.values()) {
|
|
98
|
-
if (!other.ready)
|
|
102
|
+
if (!other.ready) {
|
|
99
103
|
return;
|
|
104
|
+
}
|
|
100
105
|
}
|
|
101
106
|
this.#client.ready = true;
|
|
102
107
|
this.#client.startTime = Date.now();
|
|
@@ -104,40 +109,47 @@ class ShardManager extends Collection_1.default {
|
|
|
104
109
|
})
|
|
105
110
|
.on("resume", () => {
|
|
106
111
|
this.#client.emit("shardResume", id);
|
|
107
|
-
if (this.#client.ready)
|
|
112
|
+
if (this.#client.ready) {
|
|
108
113
|
return;
|
|
114
|
+
}
|
|
109
115
|
for (const other of this.values()) {
|
|
110
|
-
if (!other.ready)
|
|
116
|
+
if (!other.ready) {
|
|
111
117
|
return;
|
|
118
|
+
}
|
|
112
119
|
}
|
|
113
120
|
this.#client.ready = true;
|
|
114
121
|
this.#client.startTime = Date.now();
|
|
115
122
|
this.#client.emit("ready");
|
|
116
123
|
})
|
|
117
|
-
.on("disconnect",
|
|
124
|
+
.on("disconnect", error => {
|
|
118
125
|
this.#client.emit("shardDisconnect", error, id);
|
|
119
126
|
for (const other of this.values()) {
|
|
120
|
-
if (other.ready)
|
|
127
|
+
if (other.ready) {
|
|
121
128
|
return;
|
|
129
|
+
}
|
|
122
130
|
}
|
|
123
131
|
this.#client.ready = false;
|
|
124
132
|
this.#client.startTime = 0;
|
|
125
133
|
this.#client.emit("disconnect");
|
|
126
134
|
});
|
|
127
135
|
}
|
|
128
|
-
if (shard.status === "disconnected")
|
|
136
|
+
if (shard.status === "disconnected") {
|
|
129
137
|
return this.connect(shard);
|
|
138
|
+
}
|
|
130
139
|
}
|
|
131
140
|
tryConnect() {
|
|
132
|
-
if (this.#connectQueue.length === 0)
|
|
141
|
+
if (this.#connectQueue.length === 0) {
|
|
133
142
|
return;
|
|
143
|
+
}
|
|
134
144
|
for (const shard of this.#connectQueue) {
|
|
135
145
|
const rateLimitKey = (shard.id % this.options.concurrency) || 0;
|
|
136
146
|
const lastConnect = this.#buckets[rateLimitKey] || 0;
|
|
137
|
-
if (!shard.sessionID && Date.now() - lastConnect < 5000)
|
|
147
|
+
if (!shard.sessionID && Date.now() - lastConnect < 5000) {
|
|
138
148
|
continue;
|
|
139
|
-
|
|
149
|
+
}
|
|
150
|
+
if (this.some(s => s.connecting && ((s.id % this.options.concurrency) || 0) === rateLimitKey)) {
|
|
140
151
|
continue;
|
|
152
|
+
}
|
|
141
153
|
shard.connect();
|
|
142
154
|
this.#buckets[rateLimitKey] = Date.now();
|
|
143
155
|
this.#connectQueue.splice(this.#connectQueue.findIndex(s => s.id === shard.id), 1);
|
|
@@ -151,4 +163,4 @@ class ShardManager extends Collection_1.default {
|
|
|
151
163
|
}
|
|
152
164
|
}
|
|
153
165
|
exports.default = ShardManager;
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hhcmRNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2dhdGV3YXkvU2hhcmRNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLDRDQUE0RTtBQUU1RSxvRUFBNEM7QUFFNUMsTUFBcUIsWUFBYSxTQUFRLG9CQUF5QjtJQUMvRCxRQUFRLENBQXlCO0lBQ2pDLE9BQU8sQ0FBUztJQUNoQixhQUFhLENBQWU7SUFDNUIsZUFBZSxDQUF3QjtJQUN2QyxPQUFPLENBQThCO0lBQ3JDLFlBQVksTUFBYyxFQUFFLFVBQTBCLEVBQUU7UUFDcEQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ1gsYUFBYSxFQUFTLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSTtZQUNuRCxRQUFRLEVBQWMsT0FBTyxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQy9DLG9CQUFvQixFQUFFO2dCQUNsQixPQUFPLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixFQUFFLE9BQU8sSUFBSSxTQUFTO2dCQUMzRCxNQUFNLEVBQUcsT0FBTyxDQUFDLG9CQUFvQixFQUFFLE1BQU0sSUFBSSxTQUFTO2dCQUMxRCxFQUFFLEVBQU8sT0FBTyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxPQUFPLENBQUMsUUFBUTthQUNoRTtZQUNELFdBQVcsRUFBVyxPQUFPLENBQUMsV0FBVyxLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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
|
package/dist/lib/rest/Bucket.js
CHANGED
|
@@ -24,8 +24,9 @@ class Bucket {
|
|
|
24
24
|
this.timeout = null;
|
|
25
25
|
}
|
|
26
26
|
check() {
|
|
27
|
-
if (this.timeout || this.#queue.length === 0)
|
|
27
|
+
if (this.timeout || this.#queue.length === 0) {
|
|
28
28
|
return;
|
|
29
|
+
}
|
|
29
30
|
if (this.lastReset + this.interval + this.tokenLimit * this.latencyRef.latency < Date.now()) {
|
|
30
31
|
this.lastReset = Date.now();
|
|
31
32
|
this.tokens = Math.max(0, this.tokens - this.tokenLimit);
|
|
@@ -63,12 +64,14 @@ class Bucket {
|
|
|
63
64
|
* @param priority If true, the item will be added to the front of the queue.
|
|
64
65
|
*/
|
|
65
66
|
queue(func, priority = false) {
|
|
66
|
-
if (priority)
|
|
67
|
+
if (priority) {
|
|
67
68
|
this.#queue.unshift({ func, priority });
|
|
68
|
-
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
69
71
|
this.#queue.push({ func, priority });
|
|
72
|
+
}
|
|
70
73
|
this.check();
|
|
71
74
|
}
|
|
72
75
|
}
|
|
73
76
|
exports.default = Bucket;
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3Jlc3QvQnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7O0FBRUgsZ0JBQWdCO0FBQ2hCLE1BQXFCLE1BQU07SUFDdkIsUUFBUSxDQUFTO0lBQ2pCLFNBQVMsQ0FBUztJQUNsQixRQUFRLENBQVM7SUFDakIsVUFBVSxDQUF1QjtJQUNqQyxNQUFNLEdBQStDLEVBQUUsQ0FBQztJQUN4RCxjQUFjLENBQVM7SUFDdkIsT0FBTyxDQUF3QjtJQUMvQixVQUFVLENBQVM7SUFDbkIsTUFBTSxDQUFTO0lBQ2YsWUFBWSxVQUFrQixFQUFFLFFBQWdCLEVBQUUsT0FBeUU7UUFDdkgsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sRUFBRSxjQUFjLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxLQUFLO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtZ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
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { RESTMethod } from "../Constants";
|
|
2
2
|
import type { JSONDiscordHTTPError } from "../types/json";
|
|
3
|
-
import type { Response } from "undici";
|
|
3
|
+
import type { Headers, Response } from "undici";
|
|
4
4
|
export default class DiscordHTTPError extends Error {
|
|
5
5
|
method: RESTMethod;
|
|
6
6
|
name: string;
|
|
7
7
|
resBody: Record<string, unknown> | null;
|
|
8
8
|
response: Response;
|
|
9
9
|
constructor(res: Response, resBody: unknown | null, method: RESTMethod, stack?: string);
|
|
10
|
-
static flattenErrors(errors: Record<string, unknown>, keyPrefix?: string): string
|
|
11
|
-
get headers():
|
|
10
|
+
static flattenErrors(errors: Record<string, unknown>, keyPrefix?: string): Array<string>;
|
|
11
|
+
get headers(): Headers;
|
|
12
12
|
get path(): string;
|
|
13
13
|
get status(): number;
|
|
14
14
|
get statusText(): string;
|
|
@@ -12,31 +12,44 @@ class DiscordHTTPError extends Error {
|
|
|
12
12
|
this.resBody = resBody;
|
|
13
13
|
let message = `${res.status} ${res.statusText} on ${this.method} ${this.path}`;
|
|
14
14
|
const errors = DiscordHTTPError.flattenErrors(resBody);
|
|
15
|
-
if (errors.length > 0)
|
|
15
|
+
if (errors.length > 0) {
|
|
16
16
|
message += `\n ${errors.join("\n ")}`;
|
|
17
|
+
}
|
|
17
18
|
Object.defineProperty(this, "message", {
|
|
18
19
|
enumerable: false,
|
|
19
20
|
value: message
|
|
20
21
|
});
|
|
21
|
-
if (stack)
|
|
22
|
+
if (stack) {
|
|
22
23
|
this.stack = this.name + ": " + this.message + "\n" + stack;
|
|
23
|
-
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
24
26
|
Error.captureStackTrace(this, DiscordHTTPError);
|
|
27
|
+
}
|
|
25
28
|
}
|
|
26
29
|
static flattenErrors(errors, keyPrefix = "") {
|
|
27
30
|
let messages = [];
|
|
28
31
|
for (const fieldName in errors) {
|
|
29
|
-
if (!Object.hasOwn(errors, fieldName) || fieldName === "message" || fieldName === "code")
|
|
32
|
+
if (!Object.hasOwn(errors, fieldName) || fieldName === "message" || fieldName === "code") {
|
|
30
33
|
continue;
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
}
|
|
35
|
+
if (Array.isArray(errors[fieldName])) {
|
|
36
|
+
messages = messages.concat(errors[fieldName].map(str => `${`${keyPrefix}${fieldName}`}: ${str}`));
|
|
37
|
+
}
|
|
33
38
|
}
|
|
34
39
|
return messages;
|
|
35
40
|
}
|
|
36
|
-
get headers() {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
get
|
|
41
|
+
get headers() {
|
|
42
|
+
return this.response.headers;
|
|
43
|
+
}
|
|
44
|
+
get path() {
|
|
45
|
+
return new URL(this.response.url).pathname;
|
|
46
|
+
}
|
|
47
|
+
get status() {
|
|
48
|
+
return this.response.status;
|
|
49
|
+
}
|
|
50
|
+
get statusText() {
|
|
51
|
+
return this.response.statusText;
|
|
52
|
+
}
|
|
40
53
|
toJSON() {
|
|
41
54
|
return {
|
|
42
55
|
message: this.message,
|
|
@@ -48,4 +61,4 @@ class DiscordHTTPError extends Error {
|
|
|
48
61
|
}
|
|
49
62
|
}
|
|
50
63
|
exports.default = DiscordHTTPError;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzY29yZEhUVFBFcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9yZXN0L0Rpc2NvcmRIVFRQRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxNQUFxQixnQkFBaUIsU0FBUSxLQUFLO0lBQy9DLE1BQU0sQ0FBYTtJQUNuQixJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDMUIsT0FBTyxDQUFpQztJQUN4QyxRQUFRLENBQVc7SUFDbkIsWUFBWSxHQUFhLEVBQUUsT0FBdUIsRUFBRSxNQUFrQixFQUFFLEtBQWM7UUFDbEYsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQXNDLENBQUM7UUFFdEQsSUFBSSxPQUFPLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxVQUFVLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0UsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLE9BQWtDLENBQUMsQ0FBQztRQUNsRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLE9BQU8sSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztTQUMzQztRQUNELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUNuQyxVQUFVLEVBQUUsS0FBSztZQUNqQixLQUFLLEVBQU8sT0FBTztTQUN0QixDQUFDLENBQUM7UUFDSCxJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQy9EO2FBQU07WUFDSCxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDbkQ7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUErQixFQUFFLFNBQVMsR0FBRyxFQUFFO1FBQ2hFLElBQUksUUFBUSxHQUFrQixFQUFFLENBQUM7UUFDakMsS0FBSyxNQUFNLFNBQVMsSUFBSSxNQUFNLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLFNBQVMsS0FBSyxTQUFTLElBQUksU0FBUyxLQUFLLE1BQU0sRUFBRTtnQkFDdEYsU0FBUzthQUNaO1lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFO2dCQUNsQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBRSxNQUFNLENBQUMsU0FBUyxDQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxTQUFTLEdBQUcsU0FBUyxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3hIO1NBQ0o7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsTUFBTTtRQUNGLE9BQU87WUFDSCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsTUFBTSxFQUFHLElBQUksQ0FBQyxNQUFNO1lBQ3BCLElBQUksRUFBSyxJQUFJLENBQUMsSUFBSTtZQUNsQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsS0FBSyxFQUFJLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtTQUM1QixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBOURELG1DQThEQyJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RESTMethod } from "../Constants";
|
|
2
2
|
import type { JSONDiscordRESTError } from "../types/json";
|
|
3
|
-
import type { Response } from "undici";
|
|
3
|
+
import type { Headers, Response } from "undici";
|
|
4
4
|
export default class DiscordRESTError extends Error {
|
|
5
5
|
code: number;
|
|
6
6
|
method: RESTMethod;
|
|
@@ -8,8 +8,8 @@ export default class DiscordRESTError extends Error {
|
|
|
8
8
|
resBody: Record<string, unknown> | null;
|
|
9
9
|
response: Response;
|
|
10
10
|
constructor(res: Response, resBody: Record<string, unknown>, method: RESTMethod, stack?: string);
|
|
11
|
-
static flattenErrors(errors: Record<string, unknown>, keyPrefix?: string): string
|
|
12
|
-
get headers():
|
|
11
|
+
static flattenErrors(errors: Record<string, unknown>, keyPrefix?: string): Array<string>;
|
|
12
|
+
get headers(): Headers;
|
|
13
13
|
get path(): string;
|
|
14
14
|
get status(): number;
|
|
15
15
|
get statusText(): string;
|
|
@@ -13,40 +13,56 @@ class DiscordRESTError extends Error {
|
|
|
13
13
|
this.response = res;
|
|
14
14
|
this.resBody = resBody;
|
|
15
15
|
let message = "message" in resBody ? `${resBody.message} on ${this.method} ${this.path}` : `Unknown Error on ${this.method} ${this.path}`;
|
|
16
|
-
if ("errors" in resBody)
|
|
16
|
+
if ("errors" in resBody) {
|
|
17
17
|
message += `\n ${DiscordRESTError.flattenErrors(resBody.errors).join("\n ")}`;
|
|
18
|
+
}
|
|
18
19
|
else {
|
|
19
20
|
const errors = DiscordRESTError.flattenErrors(resBody);
|
|
20
|
-
if (errors.length > 0)
|
|
21
|
+
if (errors.length > 0) {
|
|
21
22
|
message += `\n ${errors.join("\n ")}`;
|
|
23
|
+
}
|
|
22
24
|
}
|
|
23
25
|
Object.defineProperty(this, "message", {
|
|
24
26
|
enumerable: false,
|
|
25
27
|
value: message
|
|
26
28
|
});
|
|
27
|
-
if (stack)
|
|
29
|
+
if (stack) {
|
|
28
30
|
this.stack = `${this.name}: ${this.message}\n${stack}`;
|
|
29
|
-
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
30
33
|
Error.captureStackTrace(this, DiscordRESTError);
|
|
34
|
+
}
|
|
31
35
|
}
|
|
32
36
|
static flattenErrors(errors, keyPrefix = "") {
|
|
33
37
|
let messages = [];
|
|
34
38
|
for (const fieldName in errors) {
|
|
35
|
-
if (!Object.hasOwn(errors, fieldName) || fieldName === "message" || fieldName === "code")
|
|
39
|
+
if (!Object.hasOwn(errors, fieldName) || fieldName === "message" || fieldName === "code") {
|
|
36
40
|
continue;
|
|
37
|
-
|
|
41
|
+
}
|
|
42
|
+
if ("_errors" in errors[fieldName]) {
|
|
38
43
|
messages = messages.concat(errors[fieldName]._errors.map((err) => `${`${keyPrefix}${fieldName}`}: ${err.message}`));
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
}
|
|
45
|
+
else if (Array.isArray(errors[fieldName])) {
|
|
46
|
+
messages = messages.concat(errors[fieldName].map(str => `${`${keyPrefix}${fieldName}`}: ${str}`));
|
|
47
|
+
}
|
|
48
|
+
else if (typeof errors[fieldName] === "object") {
|
|
42
49
|
messages = messages.concat(DiscordRESTError.flattenErrors(errors[fieldName], `${keyPrefix}${fieldName}.`));
|
|
50
|
+
}
|
|
43
51
|
}
|
|
44
52
|
return messages;
|
|
45
53
|
}
|
|
46
|
-
get headers() {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
get
|
|
54
|
+
get headers() {
|
|
55
|
+
return this.response.headers;
|
|
56
|
+
}
|
|
57
|
+
get path() {
|
|
58
|
+
return new URL(this.response.url).pathname;
|
|
59
|
+
}
|
|
60
|
+
get status() {
|
|
61
|
+
return this.response.status;
|
|
62
|
+
}
|
|
63
|
+
get statusText() {
|
|
64
|
+
return this.response.statusText;
|
|
65
|
+
}
|
|
50
66
|
toJSON() {
|
|
51
67
|
return {
|
|
52
68
|
message: this.message,
|
|
@@ -58,4 +74,4 @@ class DiscordRESTError extends Error {
|
|
|
58
74
|
}
|
|
59
75
|
}
|
|
60
76
|
exports.default = DiscordRESTError;
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzY29yZFJFU1RFcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9yZXN0L0Rpc2NvcmRSRVNURXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxNQUFxQixnQkFBaUIsU0FBUSxLQUFLO0lBQy9DLElBQUksQ0FBUztJQUNiLE1BQU0sQ0FBYTtJQUNuQixJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDMUIsT0FBTyxDQUFpQztJQUN4QyxRQUFRLENBQVc7SUFDbkIsWUFBWSxHQUFhLEVBQUUsT0FBZ0MsRUFBRSxNQUFrQixFQUFFLEtBQWM7UUFDM0YsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFzQyxDQUFDO1FBRXRELElBQUksT0FBTyxHQUFHLFNBQVMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUksT0FBK0IsQ0FBQyxPQUFPLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuSyxJQUFJLFFBQVEsSUFBSSxPQUFPLEVBQUU7WUFDckIsT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLENBQUMsYUFBYSxDQUFFLE9BQStDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7U0FDMUg7YUFBTTtZQUNILE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2RCxJQUFJLE1BQU0sQ0FBQyxNQUFN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
|
|
@@ -20,7 +20,7 @@ export default class RESTManager {
|
|
|
20
20
|
webhooks: Webhooks;
|
|
21
21
|
constructor(client: Client, options?: RESTOptions);
|
|
22
22
|
get client(): Client;
|
|
23
|
-
get options():
|
|
23
|
+
get options(): RESTOptions;
|
|
24
24
|
/** Alias for {@link rest/RequestHandler~RequestHandler#authRequest | RequestHandler#authRequest} */
|
|
25
25
|
authRequest<T = unknown>(options: Omit<RequestOptions, "auth">): Promise<T>;
|
|
26
26
|
/**
|
|
@@ -56,8 +56,12 @@ class RESTManager {
|
|
|
56
56
|
this.users = new Users_1.default(this);
|
|
57
57
|
this.webhooks = new Webhooks_1.default(this);
|
|
58
58
|
}
|
|
59
|
-
get client() {
|
|
60
|
-
|
|
59
|
+
get client() {
|
|
60
|
+
return this.#client;
|
|
61
|
+
}
|
|
62
|
+
get options() {
|
|
63
|
+
return this.#handler.options;
|
|
64
|
+
}
|
|
61
65
|
/** Alias for {@link rest/RequestHandler~RequestHandler#authRequest | RequestHandler#authRequest} */
|
|
62
66
|
async authRequest(options) {
|
|
63
67
|
return this.#handler.authRequest(options);
|
|
@@ -96,4 +100,4 @@ class RESTManager {
|
|
|
96
100
|
}
|
|
97
101
|
}
|
|
98
102
|
exports.default = RESTManager;
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUkVTVE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvcmVzdC9SRVNUTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0VBQThDO0FBRTlDLGtFQUEwQztBQUMxQyw4REFBc0M7QUFDdEMsNERBQW9DO0FBQ3BDLDREQUFvQztBQUNwQyxrRUFBMEM7QUFHMUMsd0ZBQWdFO0FBQ2hFLDBFQUFrRDtBQUNsRCx1REFBeUM7QUFHekMsTUFBcUIsV0FBVztJQUM1QixtQkFBbUIsQ0FBc0I7SUFDekMsUUFBUSxDQUFXO0lBQ25CLE9BQU8sQ0FBUztJQUNoQixNQUFNLENBQVM7SUFDZixRQUFRLENBQWlCO0lBQ3pCLFlBQVksQ0FBZTtJQUMzQixLQUFLLENBQVE7SUFDYixLQUFLLENBQVE7SUFDYixRQUFRLENBQVc7SUFDbkIsWUFBWSxNQUFjLEVBQUUsT0FBcUI7UUFDN0MsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksNkJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGtCQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGdCQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHdCQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxzQkFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxlQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGVBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksa0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxvR0FBb0c7SUFDcEcsS0FBSyxDQUFDLFdBQVcsQ0FBYyxPQUFxQztRQUNoRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUEyQjtZQUM5QyxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBSSxNQUFNLENBQUMsV0FBVztTQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNiLEdBQUcsRUFBZ0IsSUFBSSxDQUFDLEdBQUc7WUFDM0IsY0FBYyxFQUFLLElBQUksQ0FBQyxlQUFlO1lBQ3ZDLE1BQU0sRUFBYSxJQUFJLENBQUMsTUFBTTtZQUM5QixpQkFBaUIsRUFBRTtnQkFDZixLQUFLLEVBQVcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUs7Z0JBQzlDLFNBQVMsRUFBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUztnQkFDbEQsVUFBVSxFQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXO2dCQUNwRCxjQUFjLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWU7YUFDM0Q7U0FDSixDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFxQjtZQUNwQyxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBSSxNQUFNLENBQUMsT0FBTztTQUN6QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsNEZBQTRGO0lBQzVGLEtBQUssQ0FBQyxPQUFPLENBQWMsT0FBdUI7UUFDOUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBSSxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0o7QUFwRUQsOEJBb0VDIn0=
|