@jubbio/core 1.3.3 → 1.3.4

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 (130) hide show
  1. package/dist/Client.js +50 -10
  2. package/dist/rest/REST.d.ts +1 -0
  3. package/dist/rest/REST.js +1 -1
  4. package/dist/structures/Channel.d.ts +1 -1
  5. package/dist/structures/Channel.js +11 -4
  6. package/dist/structures/Guild.d.ts +1 -1
  7. package/dist/structures/Guild.js +7 -3
  8. package/dist/structures/Message.d.ts +2 -0
  9. package/dist/structures/Message.js +13 -33
  10. package/package.json +4 -14
  11. package/dist/cjs/Client.d.ts +0 -157
  12. package/dist/cjs/Client.js +0 -640
  13. package/dist/cjs/builders/ActionRowBuilder.d.ts +0 -53
  14. package/dist/cjs/builders/ActionRowBuilder.js +0 -68
  15. package/dist/cjs/builders/ButtonBuilder.d.ts +0 -77
  16. package/dist/cjs/builders/ButtonBuilder.js +0 -96
  17. package/dist/cjs/builders/EmbedBuilder.d.ts +0 -157
  18. package/dist/cjs/builders/EmbedBuilder.js +0 -208
  19. package/dist/cjs/builders/ModalBuilder.d.ts +0 -122
  20. package/dist/cjs/builders/ModalBuilder.js +0 -162
  21. package/dist/cjs/builders/SelectMenuBuilder.d.ts +0 -123
  22. package/dist/cjs/builders/SelectMenuBuilder.js +0 -165
  23. package/dist/cjs/builders/SlashCommandBuilder.d.ts +0 -197
  24. package/dist/cjs/builders/SlashCommandBuilder.js +0 -324
  25. package/dist/cjs/builders/index.d.ts +0 -9
  26. package/dist/cjs/builders/index.js +0 -26
  27. package/dist/cjs/enums.d.ts +0 -191
  28. package/dist/cjs/enums.js +0 -211
  29. package/dist/cjs/index.d.ts +0 -25
  30. package/dist/cjs/index.js +0 -130
  31. package/dist/cjs/managers/BaseManager.d.ts +0 -69
  32. package/dist/cjs/managers/BaseManager.js +0 -106
  33. package/dist/cjs/managers/ChannelManager.d.ts +0 -95
  34. package/dist/cjs/managers/ChannelManager.js +0 -205
  35. package/dist/cjs/managers/GuildMemberManager.d.ts +0 -74
  36. package/dist/cjs/managers/GuildMemberManager.js +0 -157
  37. package/dist/cjs/managers/RoleManager.d.ts +0 -84
  38. package/dist/cjs/managers/RoleManager.js +0 -207
  39. package/dist/cjs/managers/index.d.ts +0 -7
  40. package/dist/cjs/managers/index.js +0 -24
  41. package/dist/cjs/rest/REST.d.ts +0 -527
  42. package/dist/cjs/rest/REST.js +0 -904
  43. package/dist/cjs/rest/index.d.ts +0 -1
  44. package/dist/cjs/rest/index.js +0 -18
  45. package/dist/cjs/sharding/ShardingManager.d.ts +0 -179
  46. package/dist/cjs/sharding/ShardingManager.js +0 -375
  47. package/dist/cjs/sharding/index.d.ts +0 -4
  48. package/dist/cjs/sharding/index.js +0 -21
  49. package/dist/cjs/structures/Channel.d.ts +0 -122
  50. package/dist/cjs/structures/Channel.js +0 -240
  51. package/dist/cjs/structures/Collection.d.ts +0 -53
  52. package/dist/cjs/structures/Collection.js +0 -115
  53. package/dist/cjs/structures/Guild.d.ts +0 -59
  54. package/dist/cjs/structures/Guild.js +0 -94
  55. package/dist/cjs/structures/GuildMember.d.ts +0 -174
  56. package/dist/cjs/structures/GuildMember.js +0 -311
  57. package/dist/cjs/structures/Interaction.d.ts +0 -245
  58. package/dist/cjs/structures/Interaction.js +0 -450
  59. package/dist/cjs/structures/Message.d.ts +0 -98
  60. package/dist/cjs/structures/Message.js +0 -195
  61. package/dist/cjs/structures/User.d.ts +0 -37
  62. package/dist/cjs/structures/User.js +0 -65
  63. package/dist/cjs/structures/index.d.ts +0 -7
  64. package/dist/cjs/structures/index.js +0 -25
  65. package/dist/cjs/structures.d.ts +0 -1
  66. package/dist/cjs/structures.js +0 -19
  67. package/dist/cjs/types.d.ts +0 -255
  68. package/dist/cjs/types.js +0 -3
  69. package/dist/cjs/utils/BitField.d.ts +0 -66
  70. package/dist/cjs/utils/BitField.js +0 -138
  71. package/dist/cjs/utils/Collection.d.ts +0 -116
  72. package/dist/cjs/utils/Collection.js +0 -265
  73. package/dist/cjs/utils/Collector.d.ts +0 -152
  74. package/dist/cjs/utils/Collector.js +0 -314
  75. package/dist/cjs/utils/DataResolver.d.ts +0 -61
  76. package/dist/cjs/utils/DataResolver.js +0 -146
  77. package/dist/cjs/utils/Formatters.d.ts +0 -145
  78. package/dist/cjs/utils/Formatters.js +0 -213
  79. package/dist/cjs/utils/IntentsBitField.d.ts +0 -85
  80. package/dist/cjs/utils/IntentsBitField.js +0 -99
  81. package/dist/cjs/utils/Partials.d.ts +0 -104
  82. package/dist/cjs/utils/Partials.js +0 -148
  83. package/dist/cjs/utils/PermissionsBitField.d.ts +0 -118
  84. package/dist/cjs/utils/PermissionsBitField.js +0 -145
  85. package/dist/cjs/utils/SnowflakeUtil.d.ts +0 -63
  86. package/dist/cjs/utils/SnowflakeUtil.js +0 -93
  87. package/dist/cjs/utils/Sweepers.d.ts +0 -119
  88. package/dist/cjs/utils/Sweepers.js +0 -249
  89. package/dist/cjs/utils/index.d.ts +0 -13
  90. package/dist/cjs/utils/index.js +0 -30
  91. package/dist/esm/Client.js +0 -634
  92. package/dist/esm/builders/ActionRowBuilder.js +0 -64
  93. package/dist/esm/builders/ButtonBuilder.js +0 -92
  94. package/dist/esm/builders/EmbedBuilder.js +0 -204
  95. package/dist/esm/builders/ModalBuilder.js +0 -157
  96. package/dist/esm/builders/SelectMenuBuilder.js +0 -161
  97. package/dist/esm/builders/SlashCommandBuilder.js +0 -311
  98. package/dist/esm/builders/index.js +0 -10
  99. package/dist/esm/enums.js +0 -208
  100. package/dist/esm/index.js +0 -34
  101. package/dist/esm/managers/BaseManager.js +0 -100
  102. package/dist/esm/managers/ChannelManager.js +0 -200
  103. package/dist/esm/managers/GuildMemberManager.js +0 -153
  104. package/dist/esm/managers/RoleManager.js +0 -203
  105. package/dist/esm/managers/index.js +0 -8
  106. package/dist/esm/rest/REST.js +0 -900
  107. package/dist/esm/rest/index.js +0 -2
  108. package/dist/esm/sharding/ShardingManager.js +0 -366
  109. package/dist/esm/sharding/index.js +0 -5
  110. package/dist/esm/structures/Channel.js +0 -232
  111. package/dist/esm/structures/Collection.js +0 -111
  112. package/dist/esm/structures/Guild.js +0 -90
  113. package/dist/esm/structures/GuildMember.js +0 -306
  114. package/dist/esm/structures/Interaction.js +0 -438
  115. package/dist/esm/structures/Message.js +0 -191
  116. package/dist/esm/structures/User.js +0 -61
  117. package/dist/esm/structures/index.js +0 -9
  118. package/dist/esm/structures.js +0 -3
  119. package/dist/esm/types.js +0 -2
  120. package/dist/esm/utils/BitField.js +0 -134
  121. package/dist/esm/utils/Collection.js +0 -261
  122. package/dist/esm/utils/Collector.js +0 -305
  123. package/dist/esm/utils/DataResolver.js +0 -142
  124. package/dist/esm/utils/Formatters.js +0 -191
  125. package/dist/esm/utils/IntentsBitField.js +0 -93
  126. package/dist/esm/utils/Partials.js +0 -137
  127. package/dist/esm/utils/PermissionsBitField.js +0 -141
  128. package/dist/esm/utils/SnowflakeUtil.js +0 -89
  129. package/dist/esm/utils/Sweepers.js +0 -245
  130. package/dist/esm/utils/index.js +0 -14
@@ -42,6 +42,8 @@ export declare class Message {
42
42
  attachments: APIAttachment[];
43
43
  /** Embeds */
44
44
  embeds: APIEmbed[];
45
+ /** Components (buttons, select menus, etc.) */
46
+ components: any[];
45
47
  /** Mentions in the message */
46
48
  mentions: MessageMentions;
47
49
  /** User ID (from backend) */
@@ -4,13 +4,14 @@ exports.Message = void 0;
4
4
  const User_1 = require("./User");
5
5
  const Collector_1 = require("../utils/Collector");
6
6
  const EmbedBuilder_1 = require("../builders/EmbedBuilder");
7
+ /** Backend flat embed format (for normalization) */
7
8
  /** Resolve EmbedBuilder instances to plain API objects */
8
9
  function resolveEmbeds(embeds) {
9
10
  if (!embeds)
10
11
  return undefined;
11
12
  return embeds.map(e => e instanceof EmbedBuilder_1.EmbedBuilder ? e.toJSON() : e);
12
13
  }
13
- /** Normalize flat embed format from backend to nested format */
14
+ /** Normalize embed from backend to APIEmbed format */
14
15
  function normalizeEmbed(embed) {
15
16
  const normalized = {
16
17
  title: embed.title,
@@ -19,43 +20,18 @@ function normalizeEmbed(embed) {
19
20
  timestamp: embed.timestamp,
20
21
  color: embed.color,
21
22
  fields: embed.fields,
23
+ author: embed.author,
24
+ footer: embed.footer,
22
25
  };
23
- // Normalize author: flat format → nested object
24
- if (embed.author_name || embed.author_icon_url || embed.author_url) {
25
- normalized.author = {
26
- name: embed.author_name || '',
27
- icon_url: embed.author_icon_url,
28
- url: embed.author_url,
29
- };
30
- }
31
- else if (embed.author) {
32
- normalized.author = embed.author;
33
- }
34
- // Normalize footer: flat format → nested object
35
- if (embed.footer_text || embed.footer_icon_url) {
36
- normalized.footer = {
37
- text: embed.footer_text || '',
38
- icon_url: embed.footer_icon_url,
39
- };
40
- }
41
- else if (embed.footer) {
42
- normalized.footer = embed.footer;
43
- }
44
- // Normalize thumbnail: flat format or string → nested object
45
- if (embed.thumbnail_url) {
46
- normalized.thumbnail = { url: embed.thumbnail_url };
47
- }
48
- else if (typeof embed.thumbnail === 'string') {
26
+ // Normalize thumbnail: string → nested object
27
+ if (typeof embed.thumbnail === 'string') {
49
28
  normalized.thumbnail = { url: embed.thumbnail };
50
29
  }
51
30
  else if (embed.thumbnail && typeof embed.thumbnail === 'object') {
52
31
  normalized.thumbnail = embed.thumbnail;
53
32
  }
54
- // Normalize image: flat format or string → nested object
55
- if (embed.image_url) {
56
- normalized.image = { url: embed.image_url };
57
- }
58
- else if (typeof embed.image === 'string') {
33
+ // Normalize image: string → nested object
34
+ if (typeof embed.image === 'string') {
59
35
  normalized.image = { url: embed.image };
60
36
  }
61
37
  else if (embed.image && typeof embed.image === 'object') {
@@ -87,6 +63,8 @@ class Message {
87
63
  attachments;
88
64
  /** Embeds */
89
65
  embeds;
66
+ /** Components (buttons, select menus, etc.) */
67
+ components;
90
68
  /** Mentions in the message */
91
69
  mentions;
92
70
  /** User ID (from backend) */
@@ -108,6 +86,8 @@ class Message {
108
86
  this.attachments = data.attachments || [];
109
87
  // Normalize embeds from backend (flat format → nested format)
110
88
  this.embeds = data.embeds ? data.embeds.map(normalizeEmbed) : [];
89
+ // Components (ActionRows with buttons, select menus, etc.)
90
+ this.components = data.components || [];
111
91
  this.mentions = data.mentions || {};
112
92
  this.user_id = data.user_id;
113
93
  }
@@ -212,4 +192,4 @@ class Message {
212
192
  }
213
193
  }
214
194
  exports.Message = Message;
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJ1Y3R1cmVzL01lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaUNBQThCO0FBSzlCLGtEQUF1RjtBQUN2RiwyREFBd0Q7QUEyQnhELDBEQUEwRDtBQUMxRCxTQUFTLGFBQWEsQ0FBQyxNQUFvQztJQUN6RCxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzlCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSwyQkFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxnRUFBZ0U7QUFDaEUsU0FBUyxjQUFjLENBQUMsS0FBdUI7SUFDN0MsTUFBTSxVQUFVLEdBQWE7UUFDM0IsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztRQUM5QixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7UUFDZCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtLQUNyQixDQUFDO0lBRUYsZ0RBQWdEO0lBQ2hELElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuRSxVQUFVLENBQUMsTUFBTSxHQUFHO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUU7WUFDN0IsUUFBUSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQy9CLEdBQUcsRUFBRSxLQUFLLENBQUMsVUFBVTtTQUN0QixDQUFDO0lBQ0osQ0FBQztTQUFNLElBQUksS0FBSyxDQUFDLE1B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RDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBakxELDBCQWlMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQSU1lc3NhZ2UsIEFQSUVtYmVkLCBBUElBdHRhY2htZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi9Vc2VyJztcclxuaW1wb3J0IHsgR3VpbGRNZW1iZXIgfSBmcm9tICcuL0d1aWxkTWVtYmVyJztcclxuaW1wb3J0IHR5cGUgeyBDbGllbnQgfSBmcm9tICcuLi9DbGllbnQnO1xyXG5pbXBvcnQgdHlwZSB7IE1lc3NhZ2VDcmVhdGVPcHRpb25zIH0gZnJvbSAnLi9DaGFubmVsJztcclxuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vQ29sbGVjdGlvbic7XHJcbmltcG9ydCB7IEludGVyYWN0aW9uQ29sbGVjdG9yLCBJbnRlcmFjdGlvbkNvbGxlY3Rvck9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9Db2xsZWN0b3InO1xyXG5pbXBvcnQgeyBFbWJlZEJ1aWxkZXIgfSBmcm9tICcuLi9idWlsZGVycy9FbWJlZEJ1aWxkZXInO1xyXG5cclxuLyoqIEJhY2tlbmQgZmxhdCBlbWJlZCBmb3JtYXQgKGZvciBub3JtYWxpemF0aW9uKSAqL1xyXG5pbnRlcmZhY2UgQmFja2VuZEZsYXRFbWJlZCB7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIHRpbWVzdGFtcD86IHN0cmluZztcclxuICBjb2xvcj86IG51bWJlcjtcclxuICAvLyBGbGF0IGF1dGhvciBmaWVsZHNcclxuICBhdXRob3JfbmFtZT86IHN0cmluZztcclxuICBhdXRob3JfdXJsPzogc3RyaW5nO1xyXG4gIGF1dGhvcl9pY29uX3VybD86IHN0cmluZztcclxuICAvLyBGbGF0IGZvb3RlciBmaWVsZHNcclxuICBmb290ZXJfdGV4dD86IHN0cmluZztcclxuICBmb290ZXJfaWNvbl91cmw/OiBzdHJpbmc7XHJcbiAgLy8gRmxhdCB0aHVtYm5haWwvaW1hZ2UgZmllbGRzXHJcbiAgdGh1bWJuYWlsX3VybD86IHN0cmluZztcclxuICBpbWFnZV91cmw/OiBzdHJpbmc7XHJcbiAgLy8gT3IgbmVzdGVkIGZvcm1hdFxyXG4gIGF1dGhvcj86IHsgbmFtZTogc3RyaW5nOyB1cmw/OiBzdHJpbmc7IGljb25fdXJsPzogc3RyaW5nIH07XHJcbiAgZm9vdGVyPzogeyB0ZXh0OiBzdHJpbmc7IGljb25fdXJsPzogc3RyaW5nIH07XHJcbiAgaW1hZ2U/OiB7IHVybDogc3RyaW5nIH0gfCBzdHJpbmc7XHJcbiAgdGh1bWJuYWlsPzogeyB1cmw6IHN0cmluZyB9IHwgc3RyaW5nO1xyXG4gIGZpZWxkcz86IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBpbmxpbmU/OiBib29sZWFuIH1bXTtcclxufVxyXG5cclxuLyoqIFJlc29sdmUgRW1iZWRCdWlsZGVyIGluc3RhbmNlcyB0byBwbGFpbiBBUEkgb2JqZWN0cyAqL1xyXG5mdW5jdGlvbiByZXNvbHZlRW1iZWRzKGVtYmVkcz86IChBUElFbWJlZCB8IEVtYmVkQnVpbGRlcilbXSk6IEFQSUVtYmVkW10gfCB1bmRlZmluZWQge1xyXG4gIGlmICghZW1iZWRzKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIHJldHVybiBlbWJlZHMubWFwKGUgPT4gZSBpbnN0YW5jZW9mIEVtYmVkQnVpbGRlciA/IGUudG9KU09OKCkgOiBlKTtcclxufVxyXG5cclxuLyoqIE5vcm1hbGl6ZSBmbGF0IGVtYmVkIGZvcm1hdCBmcm9tIGJhY2tlbmQgdG8gbmVzdGVkIGZvcm1hdCAqL1xyXG5mdW5jdGlvbiBub3JtYWxpemVFbWJlZChlbWJlZDogQmFja2VuZEZsYXRFbWJlZCk6IEFQSUVtYmVkIHtcclxuICBjb25zdCBub3JtYWxpemVkOiBBUElFbWJlZCA9IHtcclxuICAgIHRpdGxlOiBlbWJlZC50aXRsZSxcclxuICAgIGRlc2NyaXB0aW9uOiBlbWJlZC5kZXNjcmlwdGlvbixcclxuICAgIHVybDogZW1iZWQudXJsLFxyXG4gICAgdGltZXN0YW1wOiBlbWJlZC50aW1lc3RhbXAsXHJcbiAgICBjb2xvcjogZW1iZWQuY29sb3IsXHJcbiAgICBmaWVsZHM6IGVtYmVkLmZpZWxkcyxcclxuICB9O1xyXG5cclxuICAvLyBOb3JtYWxpemUgYXV0aG9yOiBmbGF0IGZvcm1hdCDihpIgbmVzdGVkIG9iamVjdFxyXG4gIGlmIChlbWJlZC5hdXRob3JfbmFtZSB8fCBlbWJlZC5hdXRob3JfaWNvbl91cmwgfHwgZW1iZWQuYXV0aG9yX3VybCkge1xyXG4gICAgbm9ybWFsaXplZC5hdXRob3IgPSB7XHJcbiAgICAgIG5hbWU6IGVtYmVkLmF1dGhvcl9uYW1lIHx8ICcnLFxyXG4gICAgICBpY29uX3VybDogZW1iZWQuYXV0aG9yX2ljb25fdXJsLFxyXG4gICAgICB1cmw6IGVtYmVkLmF1dGhvcl91cmwsXHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoZW1iZWQuYXV0aG9yKSB7XHJcbiAgICBub3JtYWxpemVkLmF1dGhvciA9IGVtYmVkLmF1dGhvcjtcclxuICB9XHJcblxyXG4gIC8vIE5vcm1hbGl6ZSBmb290ZXI6IGZsYXQgZm9ybWF0IOKGkiBuZXN0ZWQgb2JqZWN0XHJcbiAgaWYgKGVtYmVkLmZvb3Rlcl90ZXh0IHx8IGVtYmVkLmZvb3Rlcl9pY29uX3VybCkge1xyXG4gICAgbm9ybWFsaXplZC5mb290ZXIgPSB7XHJcbiAgICAgIHRleHQ6IGVtYmVkLmZvb3Rlcl90ZXh0IHx8ICcnLFxyXG4gICAgICBpY29uX3VybDogZW1iZWQuZm9vdGVyX2ljb25fdXJsLFxyXG4gICAgfTtcclxuICB9IGVsc2UgaWYgKGVtYmVkLmZvb3Rlcikge1xyXG4gICAgbm9ybWFsaXplZC5mb290ZXIgPSBlbWJlZC5mb290ZXI7XHJcbiAgfVxyXG5cclxuICAvLyBOb3JtYWxpemUgdGh1bWJuYWlsOiBmbGF0IGZvcm1hdCBvciBzdHJpbmcg4oaSIG5lc3RlZCBvYmplY3RcclxuICBpZiAoZW1iZWQudGh1bWJuYWlsX3VybCkge1xyXG4gICAgbm9ybWFsaXplZC50aHVtYm5haWwgPSB7IHVybDogZW1iZWQudGh1bWJuYWlsX3VybCB9O1xyXG4gIH0gZWxzZSBpZiAodHlwZW9mIGVtYmVkLnRodW1ibmFpbCA9PT0gJ3N0cmluZycpIHtcclxuICAgIG5vcm1hbGl6ZWQudGh1bWJuYWlsID0geyB1cmw6IGVtYmVkLnRodW1ibmFpbCB9O1xyXG4gIH0gZWxzZSBpZiAoZW1iZWQudGh1bWJuYWlsICYmIHR5cGVvZiBlbWJlZC50aHVtYm5haWwgPT09ICdvYmplY3QnKSB7XHJcbiAgICBub3JtYWxpemVkLnRodW1ibmFpbCA9IGVtYmVkLnRodW1ibmFpbDtcclxuICB9XHJcblxyXG4gIC8vIE5vcm1hbGl6ZSBpbWFnZTogZmxhdCBmb3JtYXQgb3Igc3RyaW5nIOKGkiBuZXN0ZWQgb2JqZWN0XHJcbiAgaWYgKGVtYmVkLmltYWdlX3VybCkge1xyXG4gICAgbm9ybWFsaXplZC5pbWFnZSA9IHsgdXJsOiBlbWJlZC5pbWFnZV91cmwgfTtcclxuICB9IGVsc2UgaWYgKHR5cGVvZiBlbWJlZC5pbWFnZSA9PT0gJ3N0cmluZycpIHtcclxuICAgIG5vcm1hbGl6ZWQuaW1hZ2UgPSB7IHVybDogZW1iZWQuaW1hZ2UgfTtcclxuICB9IGVsc2UgaWYgKGVtYmVkLmltYWdlICYmIHR5cGVvZiBlbWJlZC5pbWFnZSA9PT0gJ29iamVjdCcpIHtcclxuICAgIG5vcm1hbGl6ZWQuaW1hZ2UgPSBlbWJlZC5pbWFnZTtcclxuICB9XHJcblxyXG4gIHJldHVybiBub3JtYWxpemVkO1xyXG59XHJcblxyXG4vKipcclxuICogTWVudGlvbiBkYXRhIGZyb20gYmFja2VuZFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlTWVudGlvbnMge1xyXG4gIHVzZXJzPzogQXJyYXk8eyBpZDogbnVtYmVyIHwgc3RyaW5nOyB1c2VybmFtZTogc3RyaW5nIH0+O1xyXG4gIHJvbGVzPzogQXJyYXk8eyBpZDogc3RyaW5nOyBuYW1lPzogc3RyaW5nIH0+O1xyXG4gIGV2ZXJ5b25lPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBtZXNzYWdlXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTWVzc2FnZSB7XHJcbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgY2xpZW50ICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGNsaWVudDogQ2xpZW50O1xyXG4gIFxyXG4gIC8qKiBNZXNzYWdlIElEICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmc7XHJcbiAgXHJcbiAgLyoqIENoYW5uZWwgSUQgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgY2hhbm5lbElkOiBzdHJpbmc7XHJcbiAgXHJcbiAgLyoqIEd1aWxkIElEIChpZiBpbiBhIGd1aWxkKSAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBndWlsZElkPzogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBNZXNzYWdlIGF1dGhvciAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBhdXRob3I6IFVzZXI7XHJcbiAgXHJcbiAgLyoqIE1lc3NhZ2UgY29udGVudCAqL1xyXG4gIHB1YmxpYyBjb250ZW50OiBzdHJpbmc7XHJcbiAgXHJcbiAgLyoqIE1lc3NhZ2UgdGltZXN0YW1wICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZWRUaW1lc3RhbXA6IG51bWJlcjtcclxuICBcclxuICAvKiogRWRpdCB0aW1lc3RhbXAgKi9cclxuICBwdWJsaWMgZWRpdGVkVGltZXN0YW1wPzogbnVtYmVyO1xyXG4gIFxyXG4gIC8qKiBBdHRhY2htZW50cyAqL1xyXG4gIHB1YmxpYyBhdHRhY2htZW50czogQVBJQXR0YWNobWVudFtdO1xyXG4gIFxyXG4gIC8qKiBFbWJlZHMgKi9cclxuICBwdWJsaWMgZW1iZWRzOiBBUElFbWJlZFtdO1xyXG5cclxuICAvKiogTWVudGlvbnMgaW4gdGhlIG1lc3NhZ2UgKi9cclxuICBwdWJsaWMgbWVudGlvbnM6IE1lc3NhZ2VNZW50aW9ucztcclxuXHJcbiAgLyoqIFVzZXIgSUQgKGZyb20gYmFja2VuZCkgKi9cclxuICBwdWJsaWMgdXNlcl9pZD86IG51bWJlcjtcclxuXHJcbiAgLyoqIEd1aWxkIG1lbWJlciAoaWYgaW4gYSBndWlsZCkgKi9cclxuICBwdWJsaWMgbWVtYmVyPzogR3VpbGRNZW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNsaWVudDogQ2xpZW50LCBkYXRhOiBBUElNZXNzYWdlKSB7XHJcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcclxuICAgIHRoaXMuaWQgPSBkYXRhLmlkO1xyXG4gICAgdGhpcy5jaGFubmVsSWQgPSBkYXRhLmNoYW5uZWxfaWQ7XHJcbiAgICB0aGlzLmd1aWxkSWQgPSBkYXRhLmd1aWxkX2lkO1xyXG4gICAgdGhpcy5hdXRob3IgPSBuZXcgVXNlcihkYXRhLmF1dGhvcik7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSBkYXRhLmNvbnRlbnQgPz8gJyc7XHJcbiAgICBcclxuICAgIC8vIEhhbmRsZSBkaWZmZXJlbnQgdGltZXN0YW1wIGZvcm1hdHMgZnJvbSBiYWNrZW5kXHJcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBkYXRhLnRpbWVzdGFtcCB8fCAoZGF0YSBhcyBhbnkpLmNyZWF0ZWRfYXQ7XHJcbiAgICB0aGlzLmNyZWF0ZWRUaW1lc3RhbXAgPSB0aW1lc3RhbXAgPyBuZXcgRGF0ZSh0aW1lc3RhbXApLmdldFRpbWUoKSA6IERhdGUubm93KCk7XHJcbiAgICBcclxuICAgIGNvbnN0IGVkaXRlZFRpbWVzdGFtcCA9IGRhdGEuZWRpdGVkX3RpbWVzdGFtcCB8fCAoZGF0YSBhcyBhbnkpLnVwZGF0ZWRfYXQ7XHJcbiAgICB0aGlzLmVkaXRlZFRpbWVzdGFtcCA9IGVkaXRlZFRpbWVzdGFtcCA/IG5ldyBEYXRlKGVkaXRlZFRpbWVzdGFtcCkuZ2V0VGltZSgpIDogdW5kZWZpbmVkO1xyXG4gICAgXHJcbiAgICB0aGlzLmF0dGFjaG1lbnRzID0gZGF0YS5hdHRhY2htZW50cyB8fCBbXTtcclxuICAgIFxyXG4gICAgLy8gTm9ybWFsaXplIGVtYmVkcyBmcm9tIGJhY2tlbmQgKGZsYXQgZm9ybWF0IOKGkiBuZXN0ZWQgZm9ybWF0KVxyXG4gICAgdGhpcy5lbWJlZHMgPSBkYXRhLmVtYmVkcyA/IGRhdGEuZW1iZWRzLm1hcChub3JtYWxpemVFbWJlZCkgOiBbXTtcclxuICAgIFxyXG4gICAgdGhpcy5tZW50aW9ucyA9IChkYXRhIGFzIGFueSkubWVudGlvbnMgfHwge307XHJcbiAgICB0aGlzLnVzZXJfaWQgPSAoZGF0YSBhcyBhbnkpLnVzZXJfaWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGNyZWF0aW9uIGRhdGVcclxuICAgKi9cclxuICBnZXQgY3JlYXRlZEF0KCk6IERhdGUge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY3JlYXRlZFRpbWVzdGFtcCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGVkaXQgZGF0ZVxyXG4gICAqL1xyXG4gIGdldCBlZGl0ZWRBdCgpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0ZWRUaW1lc3RhbXAgPyBuZXcgRGF0ZSh0aGlzLmVkaXRlZFRpbWVzdGFtcCkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVwbHkgdG8gdGhpcyBtZXNzYWdlXHJcbiAgICovXHJcbiAgYXN5bmMgcmVwbHkob3B0aW9uczogc3RyaW5nIHwgTWVzc2FnZUNyZWF0ZU9wdGlvbnMpOiBQcm9taXNlPE1lc3NhZ2U+IHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgPyBvcHRpb25zIDogb3B0aW9ucy5jb250ZW50O1xyXG4gICAgY29uc3QgZW1iZWRzID0gdHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnID8gdW5kZWZpbmVkIDogcmVzb2x2ZUVtYmVkcyhvcHRpb25zLmVtYmVkcyk7XHJcbiAgICBjb25zdCBjb21wb25lbnRzID0gdHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnID8gdW5kZWZpbmVkIDogb3B0aW9ucy5jb21wb25lbnRzO1xyXG4gICAgXHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5jcmVhdGVNZXNzYWdlKHRoaXMuZ3VpbGRJZCB8fCAnJywgdGhpcy5jaGFubmVsSWQsIHtcclxuICAgICAgY29udGVudCxcclxuICAgICAgZW1iZWRzLFxyXG4gICAgICBjb21wb25lbnRzLFxyXG4gICAgICBtZXNzYWdlX3JlZmVyZW5jZTogeyBtZXNzYWdlX2lkOiB0aGlzLmlkIH1cclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICByZXR1cm4gbmV3IE1lc3NhZ2UodGhpcy5jbGllbnQsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWRpdCB0aGlzIG1lc3NhZ2UgKG9ubHkgaWYgYXV0aG9yIGlzIHRoZSBib3QpXHJcbiAgICovXHJcbiAgYXN5bmMgZWRpdChvcHRpb25zOiBzdHJpbmcgfCBNZXNzYWdlQ3JlYXRlT3B0aW9ucyk6IFByb21pc2U8TWVzc2FnZT4ge1xyXG4gICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJyA/IG9wdGlvbnMgOiBvcHRpb25zLmNvbnRlbnQ7XHJcbiAgICBjb25zdCBlbWJlZHMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgPyB1bmRlZmluZWQgOiByZXNvbHZlRW1iZWRzKG9wdGlvbnMuZW1iZWRzKTtcclxuICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgPyB1bmRlZmluZWQgOiBvcHRpb25zLmNvbXBvbmVudHM7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LmVkaXRNZXNzYWdlKHRoaXMuZ3VpbGRJZCB8fCAnJywgdGhpcy5jaGFubmVsSWQsIHRoaXMuaWQsIHtcclxuICAgICAgY29udGVudCxcclxuICAgICAgZW1iZWRzLFxyXG4gICAgICBjb21wb25lbnRzLFxyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIHJldHVybiBuZXcgTWVzc2FnZSh0aGlzLmNsaWVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGUgdGhpcyBtZXNzYWdlXHJcbiAgICovXHJcbiAgYXN5bmMgZGVsZXRlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5jbGllbnQucmVzdC5kZWxldGVNZXNzYWdlKHRoaXMuZ3VpbGRJZCB8fCAnJywgdGhpcy5jaGFubmVsSWQsIHRoaXMuaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVhY3QgdG8gdGhpcyBtZXNzYWdlXHJcbiAgICovXHJcbiAgYXN5bmMgcmVhY3QoZW1vamk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5jbGllbnQucmVzdC5hZGRSZWFjdGlvbih0aGlzLmd1aWxkSWQgfHwgJycsIHRoaXMuY2hhbm5lbElkLCB0aGlzLmlkLCBlbW9qaSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQaW4gdGhpcyBtZXNzYWdlXHJcbiAgICovXHJcbiAgYXN5bmMgcGluKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5jbGllbnQucmVzdC5waW5NZXNzYWdlKHRoaXMuZ3VpbGRJZCB8fCAnJywgdGhpcy5jaGFubmVsSWQsIHRoaXMuaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVW5waW4gdGhpcyBtZXNzYWdlXHJcbiAgICovXHJcbiAgYXN5bmMgdW5waW4oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnVucGluTWVzc2FnZSh0aGlzLmd1aWxkSWQgfHwgJycsIHRoaXMuY2hhbm5lbElkLCB0aGlzLmlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIGNvbXBvbmVudCBpbnRlcmFjdGlvbiBjb2xsZWN0b3Igb24gdGhpcyBtZXNzYWdlXHJcbiAgICovXHJcbiAgY3JlYXRlTWVzc2FnZUNvbXBvbmVudENvbGxlY3RvcihvcHRpb25zPzogT21pdDxJbnRlcmFjdGlvbkNvbGxlY3Rvck9wdGlvbnMsICdtZXNzYWdlSWQnPik6IEludGVyYWN0aW9uQ29sbGVjdG9yIHtcclxuICAgIHJldHVybiBuZXcgSW50ZXJhY3Rpb25Db2xsZWN0b3IodGhpcy5jbGllbnQsIHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgbWVzc2FnZUlkOiB0aGlzLmlkLFxyXG4gICAgICBjaGFubmVsSWQ6IHRoaXMuY2hhbm5lbElkLFxyXG4gICAgICBndWlsZElkOiB0aGlzLmd1aWxkSWQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEF3YWl0IGNvbXBvbmVudCBpbnRlcmFjdGlvbnMgb24gdGhpcyBtZXNzYWdlXHJcbiAgICovXHJcbiAgYXdhaXRNZXNzYWdlQ29tcG9uZW50KG9wdGlvbnM/OiBPbWl0PEludGVyYWN0aW9uQ29sbGVjdG9yT3B0aW9ucywgJ21lc3NhZ2VJZCcgfCAnbWF4Jz4pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgY29sbGVjdG9yID0gdGhpcy5jcmVhdGVNZXNzYWdlQ29tcG9uZW50Q29sbGVjdG9yKHsgLi4ub3B0aW9ucywgbWF4OiAxIH0pO1xyXG4gICAgICBcclxuICAgICAgY29sbGVjdG9yLm9uY2UoJ2VuZCcsIChjb2xsZWN0ZWQsIHJlYXNvbikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0ID0gY29sbGVjdGVkLmZpcnN0KCk7XHJcbiAgICAgICAgaWYgKGZpcnN0KSB7XHJcbiAgICAgICAgICByZXNvbHZlKGZpcnN0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihyZWFzb24gfHwgJ05vIGludGVyYWN0aW9uIHJlY2VpdmVkJykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnQgdG8gc3RyaW5nXHJcbiAgICovXHJcbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJ1Y3R1cmVzL01lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaUNBQThCO0FBSzlCLGtEQUF1RjtBQUN2RiwyREFBd0Q7QUFFeEQsb0RBQW9EO0FBQ3BELDBEQUEwRDtBQUMxRCxTQUFTLGFBQWEsQ0FBQyxNQUFvQztJQUN6RCxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzlCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSwyQkFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxzREFBc0Q7QUFDdEQsU0FBUyxjQUFjLENBQUMsS0FBNEY7SUFDbEgsTUFBTSxVQUFVLEdBQWE7UUFDM0IsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztRQUM5QixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7UUFDZCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtRQUNwQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07UUFDcEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO0tBQ3JCLENBQUM7SUFFRiw4Q0FBOEM7SUFDOUMsSUFBSSxPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDeEMsVUFBVSxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEQsQ0FBQztTQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxPQUFPLEtBQUssQ0FBQyxT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R0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0NBQ0Y7QUF2TEQsMEJBdUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBJTWVzc2FnZSwgQVBJRW1iZWQsIEFQSUF0dGFjaG1lbnQgfSBmcm9tICcuLi90eXBlcyc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuL1VzZXInO1xyXG5pbXBvcnQgeyBHdWlsZE1lbWJlciB9IGZyb20gJy4vR3VpbGRNZW1iZXInO1xyXG5pbXBvcnQgdHlwZSB7IENsaWVudCB9IGZyb20gJy4uL0NsaWVudCc7XHJcbmltcG9ydCB0eXBlIHsgTWVzc2FnZUNyZWF0ZU9wdGlvbnMgfSBmcm9tICcuL0NoYW5uZWwnO1xyXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi9Db2xsZWN0aW9uJztcclxuaW1wb3J0IHsgSW50ZXJhY3Rpb25Db2xsZWN0b3IsIEludGVyYWN0aW9uQ29sbGVjdG9yT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL0NvbGxlY3Rvcic7XHJcbmltcG9ydCB7IEVtYmVkQnVpbGRlciB9IGZyb20gJy4uL2J1aWxkZXJzL0VtYmVkQnVpbGRlcic7XHJcblxyXG4vKiogQmFja2VuZCBmbGF0IGVtYmVkIGZvcm1hdCAoZm9yIG5vcm1hbGl6YXRpb24pICovXHJcbi8qKiBSZXNvbHZlIEVtYmVkQnVpbGRlciBpbnN0YW5jZXMgdG8gcGxhaW4gQVBJIG9iamVjdHMgKi9cclxuZnVuY3Rpb24gcmVzb2x2ZUVtYmVkcyhlbWJlZHM/OiAoQVBJRW1iZWQgfCBFbWJlZEJ1aWxkZXIpW10pOiBBUElFbWJlZFtdIHwgdW5kZWZpbmVkIHtcclxuICBpZiAoIWVtYmVkcykgcmV0dXJuIHVuZGVmaW5lZDtcclxuICByZXR1cm4gZW1iZWRzLm1hcChlID0+IGUgaW5zdGFuY2VvZiBFbWJlZEJ1aWxkZXIgPyBlLnRvSlNPTigpIDogZSk7XHJcbn1cclxuXHJcbi8qKiBOb3JtYWxpemUgZW1iZWQgZnJvbSBiYWNrZW5kIHRvIEFQSUVtYmVkIGZvcm1hdCAqL1xyXG5mdW5jdGlvbiBub3JtYWxpemVFbWJlZChlbWJlZDogQVBJRW1iZWQgJiB7IGltYWdlPzogeyB1cmw6IHN0cmluZyB9IHwgc3RyaW5nOyB0aHVtYm5haWw/OiB7IHVybDogc3RyaW5nIH0gfCBzdHJpbmcgfSk6IEFQSUVtYmVkIHtcclxuICBjb25zdCBub3JtYWxpemVkOiBBUElFbWJlZCA9IHtcclxuICAgIHRpdGxlOiBlbWJlZC50aXRsZSxcclxuICAgIGRlc2NyaXB0aW9uOiBlbWJlZC5kZXNjcmlwdGlvbixcclxuICAgIHVybDogZW1iZWQudXJsLFxyXG4gICAgdGltZXN0YW1wOiBlbWJlZC50aW1lc3RhbXAsXHJcbiAgICBjb2xvcjogZW1iZWQuY29sb3IsXHJcbiAgICBmaWVsZHM6IGVtYmVkLmZpZWxkcyxcclxuICAgIGF1dGhvcjogZW1iZWQuYXV0aG9yLFxyXG4gICAgZm9vdGVyOiBlbWJlZC5mb290ZXIsXHJcbiAgfTtcclxuXHJcbiAgLy8gTm9ybWFsaXplIHRodW1ibmFpbDogc3RyaW5nIOKGkiBuZXN0ZWQgb2JqZWN0XHJcbiAgaWYgKHR5cGVvZiBlbWJlZC50aHVtYm5haWwgPT09ICdzdHJpbmcnKSB7XHJcbiAgICBub3JtYWxpemVkLnRodW1ibmFpbCA9IHsgdXJsOiBlbWJlZC50aHVtYm5haWwgfTtcclxuICB9IGVsc2UgaWYgKGVtYmVkLnRodW1ibmFpbCAmJiB0eXBlb2YgZW1iZWQudGh1bWJuYWlsID09PSAnb2JqZWN0Jykge1xyXG4gICAgbm9ybWFsaXplZC50aHVtYm5haWwgPSBlbWJlZC50aHVtYm5haWw7XHJcbiAgfVxyXG5cclxuICAvLyBOb3JtYWxpemUgaW1hZ2U6IHN0cmluZyDihpIgbmVzdGVkIG9iamVjdFxyXG4gIGlmICh0eXBlb2YgZW1iZWQuaW1hZ2UgPT09ICdzdHJpbmcnKSB7XHJcbiAgICBub3JtYWxpemVkLmltYWdlID0geyB1cmw6IGVtYmVkLmltYWdlIH07XHJcbiAgfSBlbHNlIGlmIChlbWJlZC5pbWFnZSAmJiB0eXBlb2YgZW1iZWQuaW1hZ2UgPT09ICdvYmplY3QnKSB7XHJcbiAgICBub3JtYWxpemVkLmltYWdlID0gZW1iZWQuaW1hZ2U7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbm9ybWFsaXplZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1lbnRpb24gZGF0YSBmcm9tIGJhY2tlbmRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZU1lbnRpb25zIHtcclxuICB1c2Vycz86IEFycmF5PHsgaWQ6IG51bWJlciB8IHN0cmluZzsgdXNlcm5hbWU6IHN0cmluZyB9PjtcclxuICByb2xlcz86IEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZT86IHN0cmluZyB9PjtcclxuICBldmVyeW9uZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIGEgbWVzc2FnZVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIE1lc3NhZ2Uge1xyXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGNsaWVudCAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBjbGllbnQ6IENsaWVudDtcclxuICBcclxuICAvKiogTWVzc2FnZSBJRCAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBDaGFubmVsIElEICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGNoYW5uZWxJZDogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBHdWlsZCBJRCAoaWYgaW4gYSBndWlsZCkgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgZ3VpbGRJZD86IHN0cmluZztcclxuICBcclxuICAvKiogTWVzc2FnZSBhdXRob3IgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgYXV0aG9yOiBVc2VyO1xyXG4gIFxyXG4gIC8qKiBNZXNzYWdlIGNvbnRlbnQgKi9cclxuICBwdWJsaWMgY29udGVudDogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBNZXNzYWdlIHRpbWVzdGFtcCAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBjcmVhdGVkVGltZXN0YW1wOiBudW1iZXI7XHJcbiAgXHJcbiAgLyoqIEVkaXQgdGltZXN0YW1wICovXHJcbiAgcHVibGljIGVkaXRlZFRpbWVzdGFtcD86IG51bWJlcjtcclxuICBcclxuICAvKiogQXR0YWNobWVudHMgKi9cclxuICBwdWJsaWMgYXR0YWNobWVudHM6IEFQSUF0dGFjaG1lbnRbXTtcclxuICBcclxuICAvKiogRW1iZWRzICovXHJcbiAgcHVibGljIGVtYmVkczogQVBJRW1iZWRbXTtcclxuXHJcbiAgLyoqIENvbXBvbmVudHMgKGJ1dHRvbnMsIHNlbGVjdCBtZW51cywgZXRjLikgKi9cclxuICBwdWJsaWMgY29tcG9uZW50czogYW55W107XHJcblxyXG4gIC8qKiBNZW50aW9ucyBpbiB0aGUgbWVzc2FnZSAqL1xyXG4gIHB1YmxpYyBtZW50aW9uczogTWVzc2FnZU1lbnRpb25zO1xyXG5cclxuICAvKiogVXNlciBJRCAoZnJvbSBiYWNrZW5kKSAqL1xyXG4gIHB1YmxpYyB1c2VyX2lkPzogbnVtYmVyO1xyXG5cclxuICAvKiogR3VpbGQgbWVtYmVyIChpZiBpbiBhIGd1aWxkKSAqL1xyXG4gIHB1YmxpYyBtZW1iZXI/OiBHdWlsZE1lbWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoY2xpZW50OiBDbGllbnQsIGRhdGE6IEFQSU1lc3NhZ2UpIHtcclxuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xyXG4gICAgdGhpcy5pZCA9IGRhdGEuaWQ7XHJcbiAgICB0aGlzLmNoYW5uZWxJZCA9IGRhdGEuY2hhbm5lbF9pZDtcclxuICAgIHRoaXMuZ3VpbGRJZCA9IGRhdGEuZ3VpbGRfaWQ7XHJcbiAgICB0aGlzLmF1dGhvciA9IG5ldyBVc2VyKGRhdGEuYXV0aG9yKTtcclxuICAgIHRoaXMuY29udGVudCA9IGRhdGEuY29udGVudCA/PyAnJztcclxuICAgIFxyXG4gICAgLy8gSGFuZGxlIGRpZmZlcmVudCB0aW1lc3RhbXAgZm9ybWF0cyBmcm9tIGJhY2tlbmRcclxuICAgIGNvbnN0IHRpbWVzdGFtcCA9IGRhdGEudGltZXN0YW1wIHx8IChkYXRhIGFzIGFueSkuY3JlYXRlZF9hdDtcclxuICAgIHRoaXMuY3JlYXRlZFRpbWVzdGFtcCA9IHRpbWVzdGFtcCA/IG5ldyBEYXRlKHRpbWVzdGFtcCkuZ2V0VGltZSgpIDogRGF0ZS5ub3coKTtcclxuICAgIFxyXG4gICAgY29uc3QgZWRpdGVkVGltZXN0YW1wID0gZGF0YS5lZGl0ZWRfdGltZXN0YW1wIHx8IChkYXRhIGFzIGFueSkudXBkYXRlZF9hdDtcclxuICAgIHRoaXMuZWRpdGVkVGltZXN0YW1wID0gZWRpdGVkVGltZXN0YW1wID8gbmV3IERhdGUoZWRpdGVkVGltZXN0YW1wKS5nZXRUaW1lKCkgOiB1bmRlZmluZWQ7XHJcbiAgICBcclxuICAgIHRoaXMuYXR0YWNobWVudHMgPSBkYXRhLmF0dGFjaG1lbnRzIHx8IFtdO1xyXG4gICAgXHJcbiAgICAvLyBOb3JtYWxpemUgZW1iZWRzIGZyb20gYmFja2VuZCAoZmxhdCBmb3JtYXQg4oaSIG5lc3RlZCBmb3JtYXQpXHJcbiAgICB0aGlzLmVtYmVkcyA9IGRhdGEuZW1iZWRzID8gZGF0YS5lbWJlZHMubWFwKG5vcm1hbGl6ZUVtYmVkKSA6IFtdO1xyXG4gICAgXHJcbiAgICAvLyBDb21wb25lbnRzIChBY3Rpb25Sb3dzIHdpdGggYnV0dG9ucywgc2VsZWN0IG1lbnVzLCBldGMuKVxyXG4gICAgdGhpcy5jb21wb25lbnRzID0gKGRhdGEgYXMgYW55KS5jb21wb25lbnRzIHx8IFtdO1xyXG4gICAgXHJcbiAgICB0aGlzLm1lbnRpb25zID0gKGRhdGEgYXMgYW55KS5tZW50aW9ucyB8fCB7fTtcclxuICAgIHRoaXMudXNlcl9pZCA9IChkYXRhIGFzIGFueSkudXNlcl9pZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY3JlYXRpb24gZGF0ZVxyXG4gICAqL1xyXG4gIGdldCBjcmVhdGVkQXQoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jcmVhdGVkVGltZXN0YW1wKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZWRpdCBkYXRlXHJcbiAgICovXHJcbiAgZ2V0IGVkaXRlZEF0KCk6IERhdGUgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRlZFRpbWVzdGFtcCA/IG5ldyBEYXRlKHRoaXMuZWRpdGVkVGltZXN0YW1wKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXBseSB0byB0aGlzIG1lc3NhZ2VcclxuICAgKi9cclxuICBhc3luYyByZXBseShvcHRpb25zOiBzdHJpbmcgfCBNZXNzYWdlQ3JlYXRlT3B0aW9ucyk6IFByb21pc2U8TWVzc2FnZT4ge1xyXG4gICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJyA/IG9wdGlvbnMgOiBvcHRpb25zLmNvbnRlbnQ7XHJcbiAgICBjb25zdCBlbWJlZHMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgPyB1bmRlZmluZWQgOiByZXNvbHZlRW1iZWRzKG9wdGlvbnMuZW1iZWRzKTtcclxuICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgPyB1bmRlZmluZWQgOiBvcHRpb25zLmNvbXBvbmVudHM7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LmNyZWF0ZU1lc3NhZ2UodGhpcy5ndWlsZElkIHx8ICcnLCB0aGlzLmNoYW5uZWxJZCwge1xyXG4gICAgICBjb250ZW50LFxyXG4gICAgICBlbWJlZHMsXHJcbiAgICAgIGNvbXBvbmVudHMsXHJcbiAgICAgIG1lc3NhZ2VfcmVmZXJlbmNlOiB7IG1lc3NhZ2VfaWQ6IHRoaXMuaWQgfVxyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIHJldHVybiBuZXcgTWVzc2FnZSh0aGlzLmNsaWVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFZGl0IHRoaXMgbWVzc2FnZSAob25seSBpZiBhdXRob3IgaXMgdGhlIGJvdClcclxuICAgKi9cclxuICBhc3luYyBlZGl0KG9wdGlvbnM6IHN0cmluZyB8IE1lc3NhZ2VDcmVhdGVPcHRpb25zKTogUHJvbWlzZTxNZXNzYWdlPiB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnID8gb3B0aW9ucyA6IG9wdGlvbnMuY29udGVudDtcclxuICAgIGNvbnN0IGVtYmVkcyA9IHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJyA/IHVuZGVmaW5lZCA6IHJlc29sdmVFbWJlZHMob3B0aW9ucy5lbWJlZHMpO1xyXG4gICAgY29uc3QgY29tcG9uZW50cyA9IHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJyA/IHVuZGVmaW5lZCA6IG9wdGlvbnMuY29tcG9uZW50cztcclxuICAgIFxyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2xpZW50LnJlc3QuZWRpdE1lc3NhZ2UodGhpcy5ndWlsZElkIHx8ICcnLCB0aGlzLmNoYW5uZWxJZCwgdGhpcy5pZCwge1xyXG4gICAgICBjb250ZW50LFxyXG4gICAgICBlbWJlZHMsXHJcbiAgICAgIGNvbXBvbmVudHMsXHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgcmV0dXJuIG5ldyBNZXNzYWdlKHRoaXMuY2xpZW50LCBkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZSB0aGlzIG1lc3NhZ2VcclxuICAgKi9cclxuICBhc3luYyBkZWxldGUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LmRlbGV0ZU1lc3NhZ2UodGhpcy5ndWlsZElkIHx8ICcnLCB0aGlzLmNoYW5uZWxJZCwgdGhpcy5pZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWFjdCB0byB0aGlzIG1lc3NhZ2VcclxuICAgKi9cclxuICBhc3luYyByZWFjdChlbW9qaTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LmFkZFJlYWN0aW9uKHRoaXMuZ3VpbGRJZCB8fCAnJywgdGhpcy5jaGFubmVsSWQsIHRoaXMuaWQsIGVtb2ppKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBpbiB0aGlzIG1lc3NhZ2VcclxuICAgKi9cclxuICBhc3luYyBwaW4oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnBpbk1lc3NhZ2UodGhpcy5ndWlsZElkIHx8ICcnLCB0aGlzLmNoYW5uZWxJZCwgdGhpcy5pZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbnBpbiB0aGlzIG1lc3NhZ2VcclxuICAgKi9cclxuICBhc3luYyB1bnBpbigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuY2xpZW50LnJlc3QudW5waW5NZXNzYWdlKHRoaXMuZ3VpbGRJZCB8fCAnJywgdGhpcy5jaGFubmVsSWQsIHRoaXMuaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgY29tcG9uZW50IGludGVyYWN0aW9uIGNvbGxlY3RvciBvbiB0aGlzIG1lc3NhZ2VcclxuICAgKi9cclxuICBjcmVhdGVNZXNzYWdlQ29tcG9uZW50Q29sbGVjdG9yKG9wdGlvbnM/OiBPbWl0PEludGVyYWN0aW9uQ29sbGVjdG9yT3B0aW9ucywgJ21lc3NhZ2VJZCc+KTogSW50ZXJhY3Rpb25Db2xsZWN0b3Ige1xyXG4gICAgcmV0dXJuIG5ldyBJbnRlcmFjdGlvbkNvbGxlY3Rvcih0aGlzLmNsaWVudCwge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICBtZXNzYWdlSWQ6IHRoaXMuaWQsXHJcbiAgICAgIGNoYW5uZWxJZDogdGhpcy5jaGFubmVsSWQsXHJcbiAgICAgIGd1aWxkSWQ6IHRoaXMuZ3VpbGRJZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXdhaXQgY29tcG9uZW50IGludGVyYWN0aW9ucyBvbiB0aGlzIG1lc3NhZ2VcclxuICAgKi9cclxuICBhd2FpdE1lc3NhZ2VDb21wb25lbnQob3B0aW9ucz86IE9taXQ8SW50ZXJhY3Rpb25Db2xsZWN0b3JPcHRpb25zLCAnbWVzc2FnZUlkJyB8ICdtYXgnPik6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCBjb2xsZWN0b3IgPSB0aGlzLmNyZWF0ZU1lc3NhZ2VDb21wb25lbnRDb2xsZWN0b3IoeyAuLi5vcHRpb25zLCBtYXg6IDEgfSk7XHJcbiAgICAgIFxyXG4gICAgICBjb2xsZWN0b3Iub25jZSgnZW5kJywgKGNvbGxlY3RlZCwgcmVhc29uKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmlyc3QgPSBjb2xsZWN0ZWQuZmlyc3QoKTtcclxuICAgICAgICBpZiAoZmlyc3QpIHtcclxuICAgICAgICAgIHJlc29sdmUoZmlyc3QpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKHJlYXNvbiB8fCAnTm8gaW50ZXJhY3Rpb24gcmVjZWl2ZWQnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCB0byBzdHJpbmdcclxuICAgKi9cclxuICB0b1N0cmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udGVudDtcclxuICB9XHJcbn1cclxuIl19
package/package.json CHANGED
@@ -1,26 +1,16 @@
1
1
  {
2
2
  "name": "@jubbio/core",
3
- "version": "1.3.3",
3
+ "version": "1.3.4",
4
4
  "description": "Core library for Jubbio bots",
5
- "main": "dist/cjs/index.js",
6
- "module": "dist/esm/index.js",
7
- "types": "dist/cjs/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "import": "./dist/esm/index.js",
11
- "require": "./dist/cjs/index.js",
12
- "types": "./dist/cjs/index.d.ts"
13
- }
14
- },
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
15
7
  "files": [
16
8
  "dist",
17
9
  "README.md",
18
10
  "LICENSE"
19
11
  ],
20
12
  "scripts": {
21
- "build": "npm run build:cjs && npm run build:esm",
22
- "build:cjs": "tsc -p tsconfig.json",
23
- "build:esm": "tsc -p tsconfig.esm.json",
13
+ "build": "tsc",
24
14
  "dev": "tsc --watch",
25
15
  "prepublishOnly": "npm run build"
26
16
  },
@@ -1,157 +0,0 @@
1
- import { EventEmitter } from 'events';
2
- import { ClientOptions } from './types';
3
- import { GatewayIntentBits } from './enums';
4
- import { Collection } from './structures/Collection';
5
- import { User } from './structures/User';
6
- import { Guild } from './structures/Guild';
7
- import { BaseChannel } from './structures/Channel';
8
- import { REST } from './rest/REST';
9
- /**
10
- * Voice adapter creator type for @jubbio/voice compatibility
11
- */
12
- type VoiceAdapterCreator = (methods: {
13
- onVoiceServerUpdate(data: any): void;
14
- onVoiceStateUpdate(data: any): void;
15
- destroy(): void;
16
- }) => {
17
- sendPayload(payload: any): boolean;
18
- destroy(): void;
19
- };
20
- /**
21
- * Main client class
22
- */
23
- export declare class Client extends EventEmitter {
24
- /** Client options */
25
- readonly options: ClientOptions;
26
- /** REST API client */
27
- readonly rest: REST;
28
- /** The bot user */
29
- user: User | null;
30
- /** Application ID */
31
- applicationId: string | null;
32
- /** Cached guilds */
33
- guilds: Collection<string, Guild>;
34
- /** Cached channels */
35
- channels: Collection<string, BaseChannel>;
36
- /** Cached users */
37
- users: Collection<string, User>;
38
- /** Voice adapter management */
39
- voice: {
40
- adapters: Map<string, VoiceAdapterCreator>;
41
- };
42
- /** WebSocket connection */
43
- private ws;
44
- /** Bot token */
45
- private token;
46
- /** Session ID */
47
- private sessionId;
48
- /** Sequence number */
49
- private sequence;
50
- /** Heartbeat interval */
51
- private heartbeatInterval;
52
- /** Gateway URL */
53
- private gatewayUrl;
54
- /** Voice state update handlers (for voice adapters) */
55
- private voiceStateHandlers;
56
- private voiceServerHandlers;
57
- /** Whether the client is currently in the login flow */
58
- private _loginState;
59
- /** Reconnect attempt counter */
60
- private _reconnectAttempts;
61
- /** Maximum reconnect attempts before giving up */
62
- private readonly _maxReconnectAttempts;
63
- constructor(options: ClientOptions);
64
- /**
65
- * Calculate intents value
66
- */
67
- private getIntentsValue;
68
- /**
69
- * Gateway close code descriptions
70
- */
71
- private static readonly CLOSE_CODES;
72
- /**
73
- * Login to the gateway
74
- */
75
- login(token: string): Promise<string>;
76
- /**
77
- * Connect to the gateway
78
- */
79
- private connect;
80
- /**
81
- * Handle incoming gateway message
82
- */
83
- private handleMessage;
84
- /**
85
- * Handle gateway payload
86
- */
87
- private handlePayload;
88
- /**
89
- * Handle Hello payload
90
- */
91
- private handleHello;
92
- /**
93
- * Handle Dispatch events
94
- */
95
- private handleDispatch;
96
- /**
97
- * Handle Ready event
98
- */
99
- private handleReady;
100
- /**
101
- * Setup voice adapters for all guilds
102
- */
103
- private setupVoiceAdapters;
104
- /**
105
- * Create a voice adapter for a guild
106
- */
107
- private createVoiceAdapter;
108
- /**
109
- * Handle Guild Create event
110
- */
111
- private handleGuildCreate;
112
- /**
113
- * Handle Guild Update event
114
- */
115
- private handleGuildUpdate;
116
- /**
117
- * Handle Guild Delete event
118
- */
119
- private handleGuildDelete;
120
- /**
121
- * Handle Message Create event
122
- */
123
- private handleMessageCreate;
124
- /**
125
- * Handle Interaction Create event
126
- */
127
- private handleInteractionCreate;
128
- /**
129
- * Handle Voice State Update event
130
- */
131
- private handleVoiceStateUpdate;
132
- /**
133
- * Handle Voice Server Update event
134
- */
135
- private handleVoiceServerUpdate;
136
- /**
137
- * Send Identify payload
138
- */
139
- private identify;
140
- /**
141
- * Start heartbeat
142
- */
143
- private startHeartbeat;
144
- /**
145
- * Send payload to gateway
146
- */
147
- private send;
148
- /**
149
- * Cleanup on disconnect
150
- */
151
- private cleanup;
152
- /**
153
- * Destroy the client
154
- */
155
- destroy(): void;
156
- }
157
- export { GatewayIntentBits };