lunibee 0.1.7 → 0.2.0
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/LICENSE +21 -21
- package/README.md +225 -223
- package/dist/builders/commands.d.ts +6 -4
- package/dist/builders/components.d.ts +23 -0
- package/dist/builders/index.d.ts +2 -2
- package/dist/builders/index.js +120 -24
- package/dist/builders/index.js.map +9 -8
- package/dist/collection/index.d.ts +68 -1
- package/dist/collection/index.js +335 -1
- package/dist/collection/index.js.map +4 -4
- package/dist/core/collector.d.ts +13 -0
- package/dist/core/events.d.ts +112 -2
- package/dist/core/index.d.ts +30 -93
- package/dist/core/index.js +3386 -957
- package/dist/core/index.js.map +48 -24
- package/dist/core/permissions.d.ts +48 -0
- package/dist/formatters/index.js.map +1 -1
- package/dist/handlers/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3806 -1193
- package/dist/index.js.map +64 -43
- package/dist/managers/advanced.d.ts +116 -0
- package/dist/managers/base.d.ts +13 -2
- package/dist/managers/emoji.d.ts +1 -1
- package/dist/managers/guild-resources.d.ts +109 -0
- package/dist/managers/guild.d.ts +33 -2
- package/dist/managers/index.d.ts +44 -6
- package/dist/managers/index.js +1186 -150
- package/dist/managers/index.js.map +27 -21
- package/dist/managers/message.d.ts +10 -1
- package/dist/rest/decoder.d.ts +23 -0
- package/dist/rest/errors.d.ts +53 -0
- package/dist/rest/index.d.ts +21 -17
- package/dist/rest/index.js +526 -264
- package/dist/rest/index.js.map +14 -8
- package/dist/rest/limiter.d.ts +42 -0
- package/dist/rest/redis.d.ts +18 -1
- package/dist/rest/route.d.ts +31 -0
- package/dist/rest/routes.d.ts +22 -0
- package/dist/rest/scheduler.d.ts +42 -0
- package/dist/rest/store.d.ts +29 -0
- package/dist/rest/transport.d.ts +40 -0
- package/dist/sharding/bus.d.ts +31 -0
- package/dist/sharding/cluster.d.ts +10 -0
- package/dist/sharding/index.d.ts +39 -2
- package/dist/sharding/index.js +1105 -404
- package/dist/sharding/index.js.map +18 -8
- package/dist/structures/base.d.ts +10 -0
- package/dist/structures/channels.d.ts +56 -0
- package/dist/structures/index.d.ts +1 -0
- package/dist/structures/index.js +305 -311
- package/dist/structures/index.js.map +18 -14
- package/dist/structures/interactions.d.ts +38 -52
- package/dist/structures/options.d.ts +55 -0
- package/dist/structures/resources.d.ts +3 -3
- package/dist/types/gateway-events.d.ts +132 -0
- package/dist/types/gateway.d.ts +197 -0
- package/dist/types/index.d.ts +53 -260
- package/dist/types/index.js +44 -2
- package/dist/types/index.js.map +5 -4
- package/dist/utils/index.js.map +1 -1
- package/dist/voice/index.d.ts +32 -1
- package/dist/voice/index.js +73 -7
- package/dist/voice/index.js.map +3 -3
- package/dist/ws/close-codes.d.ts +23 -0
- package/dist/ws/decoder.d.ts +58 -0
- package/dist/ws/heartbeat.d.ts +87 -0
- package/dist/ws/index.d.ts +18 -65
- package/dist/ws/index.js +911 -385
- package/dist/ws/index.js.map +15 -5
- package/dist/ws/opcodes.d.ts +14 -0
- package/dist/ws/protocol.d.ts +110 -0
- package/dist/ws/reconnect.d.ts +108 -0
- package/dist/ws/send-budget.d.ts +17 -0
- package/dist/ws/session.d.ts +100 -0
- package/dist/ws/state.d.ts +27 -0
- package/dist/ws/transport.d.ts +80 -0
- package/package.json +21 -20
package/dist/builders/index.js
CHANGED
|
@@ -114,7 +114,7 @@ function url(value, field) {
|
|
|
114
114
|
throw new TypeError(`${field} must be a valid URL.`, { cause: error });
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
-
// packages/types/src/
|
|
117
|
+
// packages/types/src/gateway.ts
|
|
118
118
|
var GatewayIntentBits = {
|
|
119
119
|
Guilds: 1 << 0,
|
|
120
120
|
GuildMembers: 1 << 1,
|
|
@@ -166,6 +166,7 @@ var IntentBits = {
|
|
|
166
166
|
guildMessagePolls: 1 << 24,
|
|
167
167
|
directMessagePolls: 1 << 25
|
|
168
168
|
};
|
|
169
|
+
// packages/types/src/index.ts
|
|
169
170
|
var ButtonStyle = {
|
|
170
171
|
Primary: 1,
|
|
171
172
|
Secondary: 2,
|
|
@@ -211,10 +212,13 @@ class ActionRowBuilder {
|
|
|
211
212
|
return this;
|
|
212
213
|
}
|
|
213
214
|
toJSON() {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
215
|
+
const components = this.#components.map((component) => component.toJSON());
|
|
216
|
+
if (components.length === 0)
|
|
217
|
+
throw new RangeError("An action row needs at least one component.");
|
|
218
|
+
const types = components.map((component) => component.type);
|
|
219
|
+
if (types.some((type) => type !== ComponentType.Button) && components.length > 1)
|
|
220
|
+
throw new RangeError("A select menu or text input must be alone in its action row.");
|
|
221
|
+
return { type: ComponentType.ActionRow, components };
|
|
218
222
|
}
|
|
219
223
|
}
|
|
220
224
|
|
|
@@ -269,6 +273,12 @@ class StringSelectBuilder {
|
|
|
269
273
|
return this;
|
|
270
274
|
}
|
|
271
275
|
toJSON() {
|
|
276
|
+
assertSelect(this.#data);
|
|
277
|
+
const count = this.#data.options?.length ?? 0;
|
|
278
|
+
if (count === 0)
|
|
279
|
+
throw new RangeError("A string select needs at least one option.");
|
|
280
|
+
if ((this.#data.max_values ?? 1) > count)
|
|
281
|
+
throw new RangeError("max_values cannot exceed the number of options.");
|
|
272
282
|
return structuredClone(this.#data);
|
|
273
283
|
}
|
|
274
284
|
}
|
|
@@ -279,9 +289,20 @@ class ButtonBuilder {
|
|
|
279
289
|
style: ButtonStyle.Secondary
|
|
280
290
|
};
|
|
281
291
|
setStyle(style) {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
292
|
+
const data = this.#data;
|
|
293
|
+
data.style = style;
|
|
294
|
+
if (style === ButtonStyle.Link) {
|
|
295
|
+
delete data.custom_id;
|
|
296
|
+
delete data.sku_id;
|
|
297
|
+
} else if (style === ButtonStyle.Premium) {
|
|
298
|
+
delete data.custom_id;
|
|
299
|
+
delete data.url;
|
|
300
|
+
delete data.label;
|
|
301
|
+
delete data.emoji;
|
|
302
|
+
} else {
|
|
303
|
+
delete data.url;
|
|
304
|
+
delete data.sku_id;
|
|
305
|
+
}
|
|
285
306
|
return this;
|
|
286
307
|
}
|
|
287
308
|
setCustomId(value) {
|
|
@@ -298,17 +319,22 @@ class ButtonBuilder {
|
|
|
298
319
|
}
|
|
299
320
|
setURL(value) {
|
|
300
321
|
validateText(value, 512, "Button URL");
|
|
301
|
-
let
|
|
322
|
+
let url;
|
|
302
323
|
try {
|
|
303
|
-
|
|
324
|
+
url = new URL(value);
|
|
304
325
|
} catch (error) {
|
|
305
326
|
throw new TypeError("Button URL must be a valid URL.", {
|
|
306
327
|
cause: error
|
|
307
328
|
});
|
|
308
329
|
}
|
|
309
|
-
this
|
|
310
|
-
|
|
311
|
-
this
|
|
330
|
+
this.setStyle(ButtonStyle.Link);
|
|
331
|
+
this.#data.url = url.toString();
|
|
332
|
+
return this;
|
|
333
|
+
}
|
|
334
|
+
setSKUId(skuId) {
|
|
335
|
+
validateText(skuId, 20, "Button SKU ID");
|
|
336
|
+
this.setStyle(ButtonStyle.Premium);
|
|
337
|
+
this.#data.sku_id = skuId;
|
|
312
338
|
return this;
|
|
313
339
|
}
|
|
314
340
|
setEmoji(emoji) {
|
|
@@ -320,7 +346,26 @@ class ButtonBuilder {
|
|
|
320
346
|
return this;
|
|
321
347
|
}
|
|
322
348
|
toJSON() {
|
|
323
|
-
|
|
349
|
+
const data = this.#data;
|
|
350
|
+
if (data.style === ButtonStyle.Link) {
|
|
351
|
+
if (!data.url)
|
|
352
|
+
throw new TypeError("Link buttons require a URL.");
|
|
353
|
+
if (data.custom_id || data.sku_id)
|
|
354
|
+
throw new TypeError("Link buttons cannot have a custom ID or SKU ID.");
|
|
355
|
+
} else if (data.style === ButtonStyle.Premium) {
|
|
356
|
+
if (!data.sku_id)
|
|
357
|
+
throw new TypeError("Premium buttons require a SKU ID.");
|
|
358
|
+
if (data.custom_id || data.url || data.label || data.emoji)
|
|
359
|
+
throw new TypeError("Premium buttons cannot have a custom ID, URL, label or emoji.");
|
|
360
|
+
} else {
|
|
361
|
+
if (!data.custom_id)
|
|
362
|
+
throw new TypeError("Non-link buttons require a custom ID.");
|
|
363
|
+
if (data.url || data.sku_id)
|
|
364
|
+
throw new TypeError("Only link buttons have a URL and only premium buttons have a SKU ID.");
|
|
365
|
+
}
|
|
366
|
+
if (data.style !== ButtonStyle.Premium && !data.label && !data.emoji)
|
|
367
|
+
throw new TypeError("Buttons require a label or an emoji.");
|
|
368
|
+
return structuredClone(data);
|
|
324
369
|
}
|
|
325
370
|
}
|
|
326
371
|
|
|
@@ -364,6 +409,7 @@ class EntitySelectBuilder {
|
|
|
364
409
|
return this;
|
|
365
410
|
}
|
|
366
411
|
toJSON() {
|
|
412
|
+
assertSelect(this.#data);
|
|
367
413
|
return structuredClone(this.#data);
|
|
368
414
|
}
|
|
369
415
|
}
|
|
@@ -391,6 +437,10 @@ class ModalBuilder {
|
|
|
391
437
|
return this;
|
|
392
438
|
}
|
|
393
439
|
toJSON() {
|
|
440
|
+
if (!this.#custom_id || !this.#title)
|
|
441
|
+
throw new TypeError("Modals require a custom ID and a title.");
|
|
442
|
+
if (this.#components.length === 0)
|
|
443
|
+
throw new RangeError("Modals require at least one component.");
|
|
394
444
|
return {
|
|
395
445
|
type: 9,
|
|
396
446
|
...this.#custom_id ? { custom_id: this.#custom_id } : {},
|
|
@@ -444,7 +494,12 @@ class TextInputBuilder {
|
|
|
444
494
|
return this;
|
|
445
495
|
}
|
|
446
496
|
toJSON() {
|
|
447
|
-
|
|
497
|
+
const data = this.#data;
|
|
498
|
+
if (!data.custom_id)
|
|
499
|
+
throw new TypeError("Text inputs require a custom ID.");
|
|
500
|
+
if (data.min_length !== undefined && data.max_length !== undefined && data.min_length > data.max_length)
|
|
501
|
+
throw new RangeError("min_length cannot exceed max_length.");
|
|
502
|
+
return structuredClone(data);
|
|
448
503
|
}
|
|
449
504
|
}
|
|
450
505
|
|
|
@@ -542,9 +597,9 @@ class MediaGalleryBuilder {
|
|
|
542
597
|
class FileComponentBuilder {
|
|
543
598
|
#url = "";
|
|
544
599
|
#spoiler;
|
|
545
|
-
setUrl(
|
|
546
|
-
validateText(
|
|
547
|
-
this.#url =
|
|
600
|
+
setUrl(url) {
|
|
601
|
+
validateText(url, 2048, "File component URL");
|
|
602
|
+
this.#url = url;
|
|
548
603
|
return this;
|
|
549
604
|
}
|
|
550
605
|
setSpoiler(spoiler = true) {
|
|
@@ -591,9 +646,9 @@ class ThumbnailBuilder {
|
|
|
591
646
|
#url = "";
|
|
592
647
|
#description;
|
|
593
648
|
#spoiler;
|
|
594
|
-
setUrl(
|
|
595
|
-
validateText(
|
|
596
|
-
this.#url =
|
|
649
|
+
setUrl(url) {
|
|
650
|
+
validateText(url, 2048, "Thumbnail URL");
|
|
651
|
+
this.#url = url;
|
|
597
652
|
return this;
|
|
598
653
|
}
|
|
599
654
|
setDescription(description) {
|
|
@@ -648,6 +703,35 @@ function validateLength(value, field, max = 4000) {
|
|
|
648
703
|
if (!Number.isInteger(value) || value < 0 || value > max)
|
|
649
704
|
throw new RangeError(`${field} must be an integer between 0 and ${max}.`);
|
|
650
705
|
}
|
|
706
|
+
class UserSelectMenuBuilder extends EntitySelectBuilder {
|
|
707
|
+
constructor() {
|
|
708
|
+
super(ComponentType.UserSelect);
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
class RoleSelectMenuBuilder extends EntitySelectBuilder {
|
|
713
|
+
constructor() {
|
|
714
|
+
super(ComponentType.RoleSelect);
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
class MentionableSelectMenuBuilder extends EntitySelectBuilder {
|
|
719
|
+
constructor() {
|
|
720
|
+
super(ComponentType.MentionableSelect);
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
class ChannelSelectMenuBuilder extends EntitySelectBuilder {
|
|
725
|
+
constructor() {
|
|
726
|
+
super(ComponentType.ChannelSelect);
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
function assertSelect(data) {
|
|
730
|
+
if (!data.custom_id)
|
|
731
|
+
throw new TypeError("Select menus require a custom ID.");
|
|
732
|
+
if ((data.min_values ?? 1) > (data.max_values ?? 1))
|
|
733
|
+
throw new RangeError("min_values cannot exceed max_values.");
|
|
734
|
+
}
|
|
651
735
|
// packages/builders/src/commands.ts
|
|
652
736
|
var ApplicationCommandOptionType = {
|
|
653
737
|
Subcommand: 1,
|
|
@@ -1006,9 +1090,15 @@ function validateNumberRange(value, minimum, maximum, field, integerOnly = true)
|
|
|
1006
1090
|
|
|
1007
1091
|
class ContextMenuCommandBuilder {
|
|
1008
1092
|
data;
|
|
1009
|
-
constructor(type) {
|
|
1093
|
+
constructor(type = 2) {
|
|
1010
1094
|
this.data = { type };
|
|
1011
1095
|
}
|
|
1096
|
+
setType(type) {
|
|
1097
|
+
if (type !== 2 && type !== 3)
|
|
1098
|
+
throw new RangeError("Context menu command type must be 2 or 3.");
|
|
1099
|
+
this.data.type = type;
|
|
1100
|
+
return this;
|
|
1101
|
+
}
|
|
1012
1102
|
setName(name) {
|
|
1013
1103
|
if (typeof name !== "string" || name.trim().length < 1 || name.length > 32)
|
|
1014
1104
|
throw new RangeError("Command name must contain 1-32 characters.");
|
|
@@ -1100,24 +1190,29 @@ export {
|
|
|
1100
1190
|
ButtonBuilder,
|
|
1101
1191
|
ButtonStyle,
|
|
1102
1192
|
ChannelOptionBuilder,
|
|
1193
|
+
ChannelSelectMenuBuilder,
|
|
1103
1194
|
ComponentType,
|
|
1104
1195
|
ContainerBuilder,
|
|
1105
1196
|
ContentInventoryEntryBuilder,
|
|
1197
|
+
ContextMenuCommandBuilder,
|
|
1106
1198
|
EmbedBuilder,
|
|
1107
1199
|
EntitySelectBuilder,
|
|
1108
1200
|
FileComponentBuilder,
|
|
1109
1201
|
IntegerOptionBuilder,
|
|
1110
1202
|
MediaGalleryBuilder,
|
|
1111
1203
|
MentionableOptionBuilder,
|
|
1204
|
+
MentionableSelectMenuBuilder,
|
|
1112
1205
|
MessageCommandBuilder,
|
|
1113
1206
|
ModalBuilder,
|
|
1114
1207
|
NumberOptionBuilder,
|
|
1115
1208
|
RoleOptionBuilder,
|
|
1209
|
+
RoleSelectMenuBuilder,
|
|
1116
1210
|
SectionBuilder,
|
|
1117
1211
|
SeparatorBuilder,
|
|
1118
1212
|
SlashCommandBuilder,
|
|
1119
1213
|
StringOptionBuilder,
|
|
1120
1214
|
StringSelectBuilder,
|
|
1215
|
+
StringSelectBuilder as StringSelectMenuBuilder,
|
|
1121
1216
|
SubcommandBuilder,
|
|
1122
1217
|
SubcommandGroupBuilder,
|
|
1123
1218
|
TextDisplayBuilder,
|
|
@@ -1125,7 +1220,8 @@ export {
|
|
|
1125
1220
|
TextInputStyle,
|
|
1126
1221
|
ThumbnailBuilder,
|
|
1127
1222
|
UserCommandBuilder,
|
|
1128
|
-
UserOptionBuilder
|
|
1223
|
+
UserOptionBuilder,
|
|
1224
|
+
UserSelectMenuBuilder
|
|
1129
1225
|
};
|
|
1130
1226
|
|
|
1131
|
-
//# debugId=
|
|
1227
|
+
//# debugId=91BF5BFA3419A2E364756E2164756E21
|