lunibee 0.1.6 → 0.1.8

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 (80) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +223 -223
  3. package/dist/builders/commands.d.ts +39 -0
  4. package/dist/builders/components.d.ts +37 -12
  5. package/dist/builders/embed.d.ts +3 -1
  6. package/dist/builders/index.d.ts +2 -2
  7. package/dist/builders/index.js +192 -29
  8. package/dist/builders/index.js.map +9 -7
  9. package/dist/collection/index.d.ts +30 -0
  10. package/dist/collection/index.js +79 -5
  11. package/dist/collection/index.js.map +4 -4
  12. package/dist/core/events.d.ts +88 -2
  13. package/dist/core/index.d.ts +46 -85
  14. package/dist/core/index.js +2395 -789
  15. package/dist/core/index.js.map +44 -22
  16. package/dist/core/permissions.d.ts +112 -53
  17. package/dist/formatters/index.d.ts +43 -3
  18. package/dist/formatters/index.js +64 -1
  19. package/dist/formatters/index.js.map +3 -3
  20. package/dist/handlers/index.js.map +2 -2
  21. package/dist/index.d.ts +2 -2
  22. package/dist/index.js +3783 -1009
  23. package/dist/index.js.map +63 -38
  24. package/dist/managers/emoji.d.ts +38 -0
  25. package/dist/managers/guild-resources.d.ts +109 -0
  26. package/dist/managers/guild.d.ts +117 -1
  27. package/dist/managers/index.d.ts +37 -1
  28. package/dist/managers/index.js +1125 -81
  29. package/dist/managers/index.js.map +25 -20
  30. package/dist/rest/decoder.d.ts +23 -0
  31. package/dist/rest/errors.d.ts +20 -0
  32. package/dist/rest/index.d.ts +119 -25
  33. package/dist/rest/index.js +676 -204
  34. package/dist/rest/index.js.map +14 -6
  35. package/dist/rest/limiter.d.ts +42 -0
  36. package/dist/rest/redis.d.ts +54 -0
  37. package/dist/rest/route.d.ts +31 -0
  38. package/dist/rest/routes.d.ts +24 -0
  39. package/dist/rest/scheduler.d.ts +42 -0
  40. package/dist/rest/store.d.ts +67 -0
  41. package/dist/rest/transport.d.ts +40 -0
  42. package/dist/rest/webhook.d.ts +2 -2
  43. package/dist/sharding/bus.d.ts +31 -0
  44. package/dist/sharding/cluster.d.ts +71 -0
  45. package/dist/sharding/index.d.ts +18 -2
  46. package/dist/sharding/index.js +1202 -317
  47. package/dist/sharding/index.js.map +18 -7
  48. package/dist/structures/audit-log.d.ts +26 -0
  49. package/dist/structures/base.d.ts +40 -0
  50. package/dist/structures/channels.d.ts +56 -0
  51. package/dist/structures/index.d.ts +30 -1
  52. package/dist/structures/index.js +963 -87
  53. package/dist/structures/index.js.map +17 -10
  54. package/dist/structures/interactions.d.ts +12 -52
  55. package/dist/structures/options.d.ts +55 -0
  56. package/dist/structures/resources.d.ts +194 -6
  57. package/dist/types/gateway-events.d.ts +132 -0
  58. package/dist/types/gateway.d.ts +181 -0
  59. package/dist/types/index.d.ts +78 -263
  60. package/dist/types/index.js +44 -2
  61. package/dist/types/index.js.map +5 -4
  62. package/dist/utils/index.js.map +2 -2
  63. package/dist/voice/index.d.ts +116 -0
  64. package/dist/voice/index.js +261 -10
  65. package/dist/voice/index.js.map +3 -3
  66. package/dist/ws/close-codes.d.ts +23 -0
  67. package/dist/ws/decoder.d.ts +58 -0
  68. package/dist/ws/heartbeat.d.ts +87 -0
  69. package/dist/ws/index.d.ts +24 -32
  70. package/dist/ws/index.js +920 -318
  71. package/dist/ws/index.js.map +15 -5
  72. package/dist/ws/opcodes.d.ts +14 -0
  73. package/dist/ws/protocol.d.ts +110 -0
  74. package/dist/ws/reconnect.d.ts +108 -0
  75. package/dist/ws/send-budget.d.ts +17 -0
  76. package/dist/ws/session.d.ts +100 -0
  77. package/dist/ws/state.d.ts +27 -0
  78. package/dist/ws/transport.d.ts +80 -0
  79. package/package.json +23 -22
  80. package/dist/structures/permissions.d.ts +0 -73
@@ -53,16 +53,20 @@ class EmbedBuilder {
53
53
  return this;
54
54
  }
55
55
  addFields(...fields) {
56
- if (!fields.length)
56
+ const resolved = fields.length === 1 && Array.isArray(fields[0]) ? fields[0] : fields;
57
+ if (!resolved.length)
57
58
  throw new TypeError("At least one embed field is required.");
58
59
  const current = this.#data.fields ?? [];
59
- if (current.length + fields.length > 25)
60
+ if (current.length + resolved.length > 25)
60
61
  throw new RangeError("An embed cannot contain more than 25 fields.");
61
- for (const field of fields) {
62
+ for (const field of resolved) {
62
63
  validate(field.name, 256, "Embed field name");
63
64
  validate(field.value, 1024, "Embed field value");
64
65
  }
65
- this.#data.fields = [...current, ...fields.map((field) => ({ ...field }))];
66
+ this.#data.fields = [
67
+ ...current,
68
+ ...resolved.map((field) => ({ ...field }))
69
+ ];
66
70
  return this;
67
71
  }
68
72
  setFields(fields) {
@@ -110,6 +114,68 @@ function url(value, field) {
110
114
  throw new TypeError(`${field} must be a valid URL.`, { cause: error });
111
115
  }
112
116
  }
117
+ // packages/types/src/gateway.ts
118
+ var GatewayIntentBits = {
119
+ Guilds: 1 << 0,
120
+ GuildMembers: 1 << 1,
121
+ GuildModeration: 1 << 2,
122
+ GuildExpressions: 1 << 3,
123
+ GuildIntegrations: 1 << 4,
124
+ GuildWebhooks: 1 << 5,
125
+ GuildInvites: 1 << 6,
126
+ GuildVoiceStates: 1 << 7,
127
+ GuildPresences: 1 << 8,
128
+ GuildMessages: 1 << 9,
129
+ GuildMessageReactions: 1 << 10,
130
+ GuildMessageTyping: 1 << 11,
131
+ DirectMessages: 1 << 12,
132
+ DirectMessageReactions: 1 << 13,
133
+ DirectMessageTyping: 1 << 14,
134
+ MessageContent: 1 << 15,
135
+ GuildScheduledEvents: 1 << 16,
136
+ AutoModerationConfiguration: 1 << 20,
137
+ AutoModerationExecution: 1 << 21,
138
+ GuildMessagePolls: 1 << 24,
139
+ DirectMessagePolls: 1 << 25
140
+ };
141
+ var IntentBits = {
142
+ guild: 1 << 0,
143
+ guilds: 1 << 0,
144
+ guildMembers: 1 << 1,
145
+ guildModeration: 1 << 2,
146
+ guildBans: 1 << 2,
147
+ guildExpressions: 1 << 3,
148
+ guildEmojis: 1 << 3,
149
+ guildEmojisAndStickers: 1 << 3,
150
+ guildIntegrations: 1 << 4,
151
+ guildWebhooks: 1 << 5,
152
+ guildInvites: 1 << 6,
153
+ guildVoiceStates: 1 << 7,
154
+ guildPresences: 1 << 8,
155
+ guildMessages: 1 << 9,
156
+ guildMessage: 1 << 9,
157
+ guildMessageReactions: 1 << 10,
158
+ guildMessageTyping: 1 << 11,
159
+ directMessages: 1 << 12,
160
+ directMessageReactions: 1 << 13,
161
+ directMessageTyping: 1 << 14,
162
+ messageContent: 1 << 15,
163
+ guildScheduledEvents: 1 << 16,
164
+ autoModerationConfiguration: 1 << 20,
165
+ autoModerationExecution: 1 << 21,
166
+ guildMessagePolls: 1 << 24,
167
+ directMessagePolls: 1 << 25
168
+ };
169
+ // packages/types/src/index.ts
170
+ var ButtonStyle = {
171
+ Primary: 1,
172
+ Secondary: 2,
173
+ Success: 3,
174
+ Danger: 4,
175
+ Link: 5,
176
+ Premium: 6
177
+ };
178
+
113
179
  // packages/builders/src/components.ts
114
180
  var ComponentType = {
115
181
  ActionRow: 1,
@@ -129,13 +195,6 @@ var ComponentType = {
129
195
  ContentInventoryEntry: 16,
130
196
  Container: 17
131
197
  };
132
- var ButtonStyle = {
133
- Primary: 1,
134
- Secondary: 2,
135
- Success: 3,
136
- Danger: 4,
137
- Link: 5
138
- };
139
198
  var TextInputStyle = { Short: 1, Paragraph: 2 };
140
199
 
141
200
  class ActionRowBuilder {
@@ -240,15 +299,17 @@ class ButtonBuilder {
240
299
  }
241
300
  setURL(value) {
242
301
  validateText(value, 512, "Button URL");
243
- let url2;
302
+ let url;
244
303
  try {
245
- url2 = new URL(value);
304
+ url = new URL(value);
246
305
  } catch (error) {
247
- throw new TypeError("Button URL must be a valid URL.", { cause: error });
306
+ throw new TypeError("Button URL must be a valid URL.", {
307
+ cause: error
308
+ });
248
309
  }
249
310
  this.#data.style = ButtonStyle.Link;
250
311
  delete this.#data.custom_id;
251
- this.#data.url = url2.toString();
312
+ this.#data.url = url.toString();
252
313
  return this;
253
314
  }
254
315
  setEmoji(emoji) {
@@ -300,7 +361,7 @@ class EntitySelectBuilder {
300
361
  return this;
301
362
  }
302
363
  setDefaultValues(...values) {
303
- this.#data.default_values = values;
364
+ this.#data.default_values = values.map((value) => ({ ...value }));
304
365
  return this;
305
366
  }
306
367
  toJSON() {
@@ -391,6 +452,7 @@ class TextInputBuilder {
391
452
  class ContainerBuilder {
392
453
  #components = [];
393
454
  #accentColor;
455
+ #spoiler;
394
456
  addComponents(...components) {
395
457
  if (!components.length)
396
458
  throw new TypeError("At least one component is required.");
@@ -404,12 +466,20 @@ class ContainerBuilder {
404
466
  this.#accentColor = color;
405
467
  return this;
406
468
  }
469
+ setSpoiler(spoiler = true) {
470
+ this.#spoiler = spoiler;
471
+ return this;
472
+ }
407
473
  toJSON() {
408
- return {
474
+ const data = {
409
475
  type: ComponentType.Container,
410
- components: this.#components.map((c) => c.toJSON()),
411
- accent_color: this.#accentColor
476
+ components: this.#components.map((c) => c.toJSON())
412
477
  };
478
+ if (this.#accentColor !== undefined)
479
+ data.accent_color = this.#accentColor;
480
+ if (this.#spoiler !== undefined)
481
+ data.spoiler = this.#spoiler;
482
+ return data;
413
483
  }
414
484
  }
415
485
 
@@ -473,9 +543,9 @@ class MediaGalleryBuilder {
473
543
  class FileComponentBuilder {
474
544
  #url = "";
475
545
  #spoiler;
476
- setUrl(url2) {
477
- validateText(url2, 2048, "File component URL");
478
- this.#url = url2;
546
+ setUrl(url) {
547
+ validateText(url, 2048, "File component URL");
548
+ this.#url = url;
479
549
  return this;
480
550
  }
481
551
  setSpoiler(spoiler = true) {
@@ -520,16 +590,32 @@ class SeparatorBuilder {
520
590
 
521
591
  class ThumbnailBuilder {
522
592
  #url = "";
523
- setUrl(url2) {
524
- validateText(url2, 2048, "Thumbnail URL");
525
- this.#url = url2;
593
+ #description;
594
+ #spoiler;
595
+ setUrl(url) {
596
+ validateText(url, 2048, "Thumbnail URL");
597
+ this.#url = url;
598
+ return this;
599
+ }
600
+ setDescription(description) {
601
+ validateText(description, 1024, "Thumbnail description");
602
+ this.#description = description;
603
+ return this;
604
+ }
605
+ setSpoiler(spoiler = true) {
606
+ this.#spoiler = spoiler;
526
607
  return this;
527
608
  }
528
609
  toJSON() {
529
- return {
610
+ const data = {
530
611
  type: ComponentType.Thumbnail,
531
612
  url: this.#url
532
613
  };
614
+ if (this.#description !== undefined)
615
+ data.description = this.#description;
616
+ if (this.#spoiler !== undefined)
617
+ data.spoiler = this.#spoiler;
618
+ return data;
533
619
  }
534
620
  }
535
621
 
@@ -563,6 +649,29 @@ function validateLength(value, field, max = 4000) {
563
649
  if (!Number.isInteger(value) || value < 0 || value > max)
564
650
  throw new RangeError(`${field} must be an integer between 0 and ${max}.`);
565
651
  }
652
+ class UserSelectMenuBuilder extends EntitySelectBuilder {
653
+ constructor() {
654
+ super(ComponentType.UserSelect);
655
+ }
656
+ }
657
+
658
+ class RoleSelectMenuBuilder extends EntitySelectBuilder {
659
+ constructor() {
660
+ super(ComponentType.RoleSelect);
661
+ }
662
+ }
663
+
664
+ class MentionableSelectMenuBuilder extends EntitySelectBuilder {
665
+ constructor() {
666
+ super(ComponentType.MentionableSelect);
667
+ }
668
+ }
669
+
670
+ class ChannelSelectMenuBuilder extends EntitySelectBuilder {
671
+ constructor() {
672
+ super(ComponentType.ChannelSelect);
673
+ }
674
+ }
566
675
  // packages/builders/src/commands.ts
567
676
  var ApplicationCommandOptionType = {
568
677
  Subcommand: 1,
@@ -918,6 +1027,52 @@ function validateNumberRange(value, minimum, maximum, field, integerOnly = true)
918
1027
  if (!Number.isFinite(value) || integerOnly && !Number.isInteger(value) || value < minimum || value > maximum)
919
1028
  throw new RangeError(`${field} must be ${integerOnly ? "an integer" : "a number"} between ${minimum} and ${maximum}.`);
920
1029
  }
1030
+
1031
+ class ContextMenuCommandBuilder {
1032
+ data;
1033
+ constructor(type = 2) {
1034
+ this.data = { type };
1035
+ }
1036
+ setType(type) {
1037
+ if (type !== 2 && type !== 3)
1038
+ throw new RangeError("Context menu command type must be 2 or 3.");
1039
+ this.data.type = type;
1040
+ return this;
1041
+ }
1042
+ setName(name) {
1043
+ if (typeof name !== "string" || name.trim().length < 1 || name.length > 32)
1044
+ throw new RangeError("Command name must contain 1-32 characters.");
1045
+ this.data.name = name;
1046
+ return this;
1047
+ }
1048
+ setDefaultMemberPermissions(permissions) {
1049
+ this.data.default_member_permissions = permissions === null ? null : BigInt(permissions).toString();
1050
+ return this;
1051
+ }
1052
+ setDMPermission(enabled) {
1053
+ this.data.dm_permission = enabled;
1054
+ return this;
1055
+ }
1056
+ setIntegrationTypes(...types) {
1057
+ this.data.integration_types = [...types];
1058
+ return this;
1059
+ }
1060
+ toJSON() {
1061
+ return structuredClone(this.data);
1062
+ }
1063
+ }
1064
+
1065
+ class UserCommandBuilder extends ContextMenuCommandBuilder {
1066
+ constructor() {
1067
+ super(2);
1068
+ }
1069
+ }
1070
+
1071
+ class MessageCommandBuilder extends ContextMenuCommandBuilder {
1072
+ constructor() {
1073
+ super(3);
1074
+ }
1075
+ }
921
1076
  // packages/builders/src/attachment.ts
922
1077
  import { readFile } from "fs/promises";
923
1078
  import { basename } from "path";
@@ -963,7 +1118,7 @@ class AttachmentBuilder {
963
1118
  if (typeof Buffer !== "undefined" && Buffer.isBuffer(this.file)) {
964
1119
  return new Uint8Array(this.file);
965
1120
  }
966
- return new Uint8Array;
1121
+ throw new TypeError("Attachment file must be a supported binary value or file path.");
967
1122
  }
968
1123
  }
969
1124
  export {
@@ -975,30 +1130,38 @@ export {
975
1130
  ButtonBuilder,
976
1131
  ButtonStyle,
977
1132
  ChannelOptionBuilder,
1133
+ ChannelSelectMenuBuilder,
978
1134
  ComponentType,
979
1135
  ContainerBuilder,
980
1136
  ContentInventoryEntryBuilder,
1137
+ ContextMenuCommandBuilder,
981
1138
  EmbedBuilder,
982
1139
  EntitySelectBuilder,
983
1140
  FileComponentBuilder,
984
1141
  IntegerOptionBuilder,
985
1142
  MediaGalleryBuilder,
986
1143
  MentionableOptionBuilder,
1144
+ MentionableSelectMenuBuilder,
1145
+ MessageCommandBuilder,
987
1146
  ModalBuilder,
988
1147
  NumberOptionBuilder,
989
1148
  RoleOptionBuilder,
1149
+ RoleSelectMenuBuilder,
990
1150
  SectionBuilder,
991
1151
  SeparatorBuilder,
992
1152
  SlashCommandBuilder,
993
1153
  StringOptionBuilder,
994
1154
  StringSelectBuilder,
1155
+ StringSelectBuilder as StringSelectMenuBuilder,
995
1156
  SubcommandBuilder,
996
1157
  SubcommandGroupBuilder,
997
1158
  TextDisplayBuilder,
998
1159
  TextInputBuilder,
999
1160
  TextInputStyle,
1000
1161
  ThumbnailBuilder,
1001
- UserOptionBuilder
1162
+ UserCommandBuilder,
1163
+ UserOptionBuilder,
1164
+ UserSelectMenuBuilder
1002
1165
  };
1003
1166
 
1004
- //# debugId=14619C67BE7B82B464756E2164756E21
1167
+ //# debugId=51C5BC8CB8846ABF64756E2164756E21