@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
@@ -1,232 +0,0 @@
1
- import { ChannelType } from '../enums';
2
- import { Message } from './Message';
3
- import { Collection } from './Collection';
4
- import { MessageCollector } from '../utils/Collector';
5
- import { EmbedBuilder } from '../builders/EmbedBuilder';
6
- /** Resolve EmbedBuilder instances to plain API objects */
7
- function resolveEmbeds(embeds) {
8
- if (!embeds)
9
- return undefined;
10
- return embeds.map(e => e instanceof EmbedBuilder ? e.toJSON() : e);
11
- }
12
- /**
13
- * Base channel class
14
- */
15
- export class BaseChannel {
16
- /** Reference to the client */
17
- client;
18
- /** Channel ID */
19
- id;
20
- /** Channel type */
21
- type;
22
- constructor(client, data) {
23
- this.client = client;
24
- this.id = data.id;
25
- this.type = data.type;
26
- }
27
- /**
28
- * Check if this is a text-based channel
29
- */
30
- isTextBased() {
31
- return [
32
- ChannelType.GuildText,
33
- ChannelType.DM,
34
- ChannelType.GroupDM,
35
- ChannelType.GuildAnnouncement
36
- ].includes(this.type);
37
- }
38
- /**
39
- * Check if this is a voice-based channel
40
- */
41
- isVoiceBased() {
42
- return [
43
- ChannelType.GuildVoice,
44
- ChannelType.GuildStageVoice
45
- ].includes(this.type);
46
- }
47
- /**
48
- * Convert to string (mention format)
49
- */
50
- toString() {
51
- return `<#${this.id}>`;
52
- }
53
- }
54
- /**
55
- * Text channel
56
- */
57
- export class TextChannel extends BaseChannel {
58
- /** Guild ID */
59
- guildId;
60
- /** Channel name */
61
- name;
62
- /** Channel topic */
63
- topic;
64
- /** Channel position */
65
- position;
66
- /** Parent category ID */
67
- parentId;
68
- constructor(client, data) {
69
- super(client, data);
70
- this.guildId = data.guild_id;
71
- this.name = data.name;
72
- this.topic = data.topic;
73
- this.position = data.position;
74
- this.parentId = data.parent_id;
75
- }
76
- /**
77
- * Send a message to this channel
78
- */
79
- async send(options) {
80
- const content = typeof options === 'string' ? options : options.content;
81
- const embeds = typeof options === 'string' ? undefined : resolveEmbeds(options.embeds);
82
- const components = typeof options === 'string' ? undefined : options.components;
83
- const data = await this.client.rest.createMessage(this.guildId || '', this.id, {
84
- content,
85
- embeds,
86
- components,
87
- });
88
- return new Message(this.client, data);
89
- }
90
- /**
91
- * Create a message collector
92
- */
93
- createMessageCollector(options) {
94
- return new MessageCollector(this.client, this.id, options);
95
- }
96
- /**
97
- * Await messages in this channel
98
- */
99
- awaitMessages(options) {
100
- return new Promise((resolve, reject) => {
101
- const collector = this.createMessageCollector(options);
102
- collector.once('end', (collected, reason) => {
103
- if (options?.errors?.includes(reason)) {
104
- reject(collected);
105
- }
106
- else {
107
- resolve(collected);
108
- }
109
- });
110
- });
111
- }
112
- /**
113
- * Bulk delete messages
114
- */
115
- async bulkDelete(messages, filterOld = true) {
116
- let messageIds;
117
- if (typeof messages === 'number') {
118
- // Fetch messages first
119
- const fetched = await this.client.rest.getMessages(this.guildId || '', this.id, { limit: messages });
120
- messageIds = fetched.map(m => m.id);
121
- }
122
- else if (messages instanceof Collection) {
123
- messageIds = [...messages.keys()];
124
- }
125
- else {
126
- messageIds = messages;
127
- }
128
- // Filter old messages (older than 14 days)
129
- if (filterOld) {
130
- const twoWeeksAgo = Date.now() - 14 * 24 * 60 * 60 * 1000;
131
- messageIds = messageIds.filter(id => {
132
- // Extract timestamp from snowflake
133
- const timestamp = Number(BigInt(id) >> 22n) + 1420070400000;
134
- return timestamp > twoWeeksAgo;
135
- });
136
- }
137
- if (messageIds.length === 0) {
138
- return new Collection();
139
- }
140
- if (messageIds.length === 1) {
141
- await this.client.rest.deleteMessage(this.guildId || '', this.id, messageIds[0]);
142
- }
143
- else {
144
- await this.client.rest.bulkDeleteMessages(this.guildId || '', this.id, messageIds);
145
- }
146
- // Return deleted messages as collection
147
- const deleted = new Collection();
148
- // Note: We don't have the actual message objects here
149
- return deleted;
150
- }
151
- }
152
- /**
153
- * Voice channel
154
- */
155
- export class VoiceChannel extends BaseChannel {
156
- /** Guild ID */
157
- guildId;
158
- /** Channel name */
159
- name;
160
- /** Channel position */
161
- position;
162
- /** Parent category ID */
163
- parentId;
164
- /** User limit */
165
- userLimit;
166
- /** Bitrate */
167
- bitrate;
168
- constructor(client, data) {
169
- super(client, data);
170
- this.guildId = data.guild_id;
171
- this.name = data.name;
172
- this.position = data.position;
173
- this.parentId = data.parent_id;
174
- this.userLimit = data.user_limit;
175
- this.bitrate = data.bitrate;
176
- }
177
- /**
178
- * Check if the bot can join this voice channel
179
- */
180
- get joinable() {
181
- if (!this.guildId || !this.client.user)
182
- return false;
183
- const guild = this.client.guilds.get(this.guildId);
184
- if (!guild)
185
- return false;
186
- const me = guild.members.get(String(this.client.user.id));
187
- if (!me)
188
- return true; // No cached member — optimistic, server will reject if not allowed
189
- return me.permissions.has('Connect');
190
- }
191
- }
192
- /**
193
- * DM channel
194
- */
195
- export class DMChannel extends BaseChannel {
196
- /** Recipient user ID */
197
- recipientId;
198
- constructor(client, data) {
199
- super(client, data);
200
- this.recipientId = data.recipient_id;
201
- }
202
- /**
203
- * Send a message to this DM
204
- */
205
- async send(options) {
206
- const content = typeof options === 'string' ? options : options.content;
207
- const embeds = typeof options === 'string' ? undefined : resolveEmbeds(options.embeds);
208
- const data = await this.client.rest.createDMMessage(this.id, {
209
- content,
210
- embeds
211
- });
212
- return new Message(this.client, data);
213
- }
214
- }
215
- /**
216
- * Create appropriate channel class based on type
217
- */
218
- export function createChannel(client, data) {
219
- switch (data.type) {
220
- case ChannelType.GuildText:
221
- case ChannelType.GuildAnnouncement:
222
- return new TextChannel(client, data);
223
- case ChannelType.GuildVoice:
224
- case ChannelType.GuildStageVoice:
225
- return new VoiceChannel(client, data);
226
- case ChannelType.DM:
227
- return new DMChannel(client, data);
228
- default:
229
- return new BaseChannel(client, data);
230
- }
231
- }
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhbm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdHJ1Y3R1cmVzL0NoYW5uZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUEyQixNQUFNLG9CQUFvQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQStCLE1BQU0sMEJBQTBCLENBQUM7QUFFckYsMERBQTBEO0FBQzFELFNBQVMsYUFBYSxDQUFDLE1BQTJDO0lBQ2hFLElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDOUIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRSxDQUFDO0FBVUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUN0Qiw4QkFBOEI7SUFDZCxNQUFNLENBQVM7SUFFL0IsaUJBQWlCO0lBQ0QsRUFBRSxDQUFTO0lBRTNCLG1CQUFtQjtJQUNILElBQUksQ0FBYztJQUVsQyxZQUFZLE1BQWMsRUFBRSxJQUFnQjtRQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPO1lBQ0wsV0FBVyxDQUFDLFNBQVM7WUFDckIsV0FBVyxD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QUksV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQSUNoYW5uZWwsIEFQSU1lc3NhZ2UsIEFQSUVtYmVkIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBDaGFubmVsVHlwZSB9IGZyb20gJy4uL2VudW1zJztcclxuaW1wb3J0IHR5cGUgeyBDbGllbnQgfSBmcm9tICcuLi9DbGllbnQnO1xyXG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSAnLi9NZXNzYWdlJztcclxuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vQ29sbGVjdGlvbic7XHJcbmltcG9ydCB7IE1lc3NhZ2VDb2xsZWN0b3IsIE1lc3NhZ2VDb2xsZWN0b3JPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvQ29sbGVjdG9yJztcclxuaW1wb3J0IHsgRW1iZWRCdWlsZGVyLCBBUElFbWJlZCBhcyBCdWlsZGVyQVBJRW1iZWQgfSBmcm9tICcuLi9idWlsZGVycy9FbWJlZEJ1aWxkZXInO1xyXG5cclxuLyoqIFJlc29sdmUgRW1iZWRCdWlsZGVyIGluc3RhbmNlcyB0byBwbGFpbiBBUEkgb2JqZWN0cyAqL1xyXG5mdW5jdGlvbiByZXNvbHZlRW1iZWRzKGVtYmVkcz86IChCdWlsZGVyQVBJRW1iZWQgfCBFbWJlZEJ1aWxkZXIpW10pOiBCdWlsZGVyQVBJRW1iZWRbXSB8IHVuZGVmaW5lZCB7XHJcbiAgaWYgKCFlbWJlZHMpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgcmV0dXJuIGVtYmVkcy5tYXAoZSA9PiBlIGluc3RhbmNlb2YgRW1iZWRCdWlsZGVyID8gZS50b0pTT04oKSA6IGUpO1xyXG59XHJcblxyXG4vKipcclxuICogQXdhaXQgbWVzc2FnZXMgb3B0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBBd2FpdE1lc3NhZ2VzT3B0aW9ucyBleHRlbmRzIE1lc3NhZ2VDb2xsZWN0b3JPcHRpb25zIHtcclxuICAvKiogRXJyb3JzIHRvIHJlamVjdCBvbiAqL1xyXG4gIGVycm9ycz86IHN0cmluZ1tdO1xyXG59XHJcblxyXG4vKipcclxuICogQmFzZSBjaGFubmVsIGNsYXNzXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQmFzZUNoYW5uZWwge1xyXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGNsaWVudCAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBjbGllbnQ6IENsaWVudDtcclxuICBcclxuICAvKiogQ2hhbm5lbCBJRCAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBDaGFubmVsIHR5cGUgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogQ2hhbm5lbFR5cGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNsaWVudDogQ2xpZW50LCBkYXRhOiBBUElDaGFubmVsKSB7XHJcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcclxuICAgIHRoaXMuaWQgPSBkYXRhLmlkO1xyXG4gICAgdGhpcy50eXBlID0gZGF0YS50eXBlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgdGhpcyBpcyBhIHRleHQtYmFzZWQgY2hhbm5lbFxyXG4gICAqL1xyXG4gIGlzVGV4dEJhc2VkKCk6IHRoaXMgaXMgVGV4dENoYW5uZWwge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgQ2hhbm5lbFR5cGUuR3VpbGRUZXh0LFxyXG4gICAgICBDaGFubmVsVHlwZS5ETSxcclxuICAgICAgQ2hhbm5lbFR5cGUuR3JvdXBETSxcclxuICAgICAgQ2hhbm5lbFR5cGUuR3VpbGRBbm5vdW5jZW1lbnRcclxuICAgIF0uaW5jbHVkZXModGhpcy50eXBlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIHRoaXMgaXMgYSB2b2ljZS1iYXNlZCBjaGFubmVsXHJcbiAgICovXHJcbiAgaXNWb2ljZUJhc2VkKCk6IHRoaXMgaXMgVm9pY2VDaGFubmVsIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIENoYW5uZWxUeXBlLkd1aWxkVm9pY2UsXHJcbiAgICAgIENoYW5uZWxUeXBlLkd1aWxkU3RhZ2VWb2ljZVxyXG4gICAgXS5pbmNsdWRlcyh0aGlzLnR5cGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCB0byBzdHJpbmcgKG1lbnRpb24gZm9ybWF0KVxyXG4gICAqL1xyXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYDwjJHt0aGlzLmlkfT5gO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFRleHQgY2hhbm5lbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFRleHRDaGFubmVsIGV4dGVuZHMgQmFzZUNoYW5uZWwge1xyXG4gIC8qKiBHdWlsZCBJRCAqL1xyXG4gIHB1YmxpYyBndWlsZElkPzogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBDaGFubmVsIG5hbWUgKi9cclxuICBwdWJsaWMgbmFtZT86IHN0cmluZztcclxuICBcclxuICAvKiogQ2hhbm5lbCB0b3BpYyAqL1xyXG4gIHB1YmxpYyB0b3BpYz86IHN0cmluZztcclxuICBcclxuICAvKiogQ2hhbm5lbCBwb3NpdGlvbiAqL1xyXG4gIHB1YmxpYyBwb3NpdGlvbj86IG51bWJlcjtcclxuICBcclxuICAvKiogUGFyZW50IGNhdGVnb3J5IElEICovXHJcbiAgcHVibGljIHBhcmVudElkPzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihjbGllbnQ6IENsaWVudCwgZGF0YTogQVBJQ2hhbm5lbCkge1xyXG4gICAgc3VwZXIoY2xpZW50LCBkYXRhKTtcclxuICAgIHRoaXMuZ3VpbGRJZCA9IGRhdGEuZ3VpbGRfaWQ7XHJcbiAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XHJcbiAgICB0aGlzLnRvcGljID0gZGF0YS50b3BpYztcclxuICAgIHRoaXMucG9zaXRpb24gPSBkYXRhLnBvc2l0aW9uO1xyXG4gICAgdGhpcy5wYXJlbnRJZCA9IGRhdGEucGFyZW50X2lkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZCBhIG1lc3NhZ2UgdG8gdGhpcyBjaGFubmVsXHJcbiAgICovXHJcbiAgYXN5bmMgc2VuZChvcHRpb25zOiBzdHJpbmcgfCBNZXNzYWdlQ3JlYXRlT3B0aW9ucyk6IFByb21pc2U8TWVzc2FnZT4ge1xyXG4gICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJyA/IG9wdGlvbnMgOiBvcHRpb25zLmNvbnRlbnQ7XHJcbiAgICBjb25zdCBlbWJlZHMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgPyB1bmRlZmluZWQgOiByZXNvbHZlRW1iZWRzKG9wdGlvbnMuZW1iZWRzKTtcclxuICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgPyB1bmRlZmluZWQgOiBvcHRpb25zLmNvbXBvbmVudHM7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LmNyZWF0ZU1lc3NhZ2UodGhpcy5ndWlsZElkIHx8ICcnLCB0aGlzLmlkLCB7XHJcbiAgICAgIGNvbnRlbnQsXHJcbiAgICAgIGVtYmVkcyxcclxuICAgICAgY29tcG9uZW50cyxcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICByZXR1cm4gbmV3IE1lc3NhZ2UodGhpcy5jbGllbnQsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgbWVzc2FnZSBjb2xsZWN0b3JcclxuICAgKi9cclxuICBjcmVhdGVNZXNzYWdlQ29sbGVjdG9yKG9wdGlvbnM/OiBNZXNzYWdlQ29sbGVjdG9yT3B0aW9ucyk6IE1lc3NhZ2VDb2xsZWN0b3Ige1xyXG4gICAgcmV0dXJuIG5ldyBNZXNzYWdlQ29sbGVjdG9yKHRoaXMuY2xpZW50LCB0aGlzLmlkLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEF3YWl0IG1lc3NhZ2VzIGluIHRoaXMgY2hhbm5lbFxyXG4gICAqL1xyXG4gIGF3YWl0TWVzc2FnZXMob3B0aW9ucz86IEF3YWl0TWVzc2FnZXNPcHRpb25zKTogUHJvbWlzZTxDb2xsZWN0aW9uPHN0cmluZywgTWVzc2FnZT4+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbGxlY3RvciA9IHRoaXMuY3JlYXRlTWVzc2FnZUNvbGxlY3RvcihvcHRpb25zKTtcclxuICAgICAgXHJcbiAgICAgIGNvbGxlY3Rvci5vbmNlKCdlbmQnLCAoY29sbGVjdGVkLCByZWFzb24pID0+IHtcclxuICAgICAgICBpZiAob3B0aW9ucz8uZXJyb3JzPy5pbmNsdWRlcyhyZWFzb24pKSB7XHJcbiAgICAgICAgICByZWplY3QoY29sbGVjdGVkKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzb2x2ZShjb2xsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJ1bGsgZGVsZXRlIG1lc3NhZ2VzXHJcbiAgICovXHJcbiAgYXN5bmMgYnVsa0RlbGV0ZShtZXNzYWdlczogbnVtYmVyIHwgc3RyaW5nW10gfCBDb2xsZWN0aW9uPHN0cmluZywgTWVzc2FnZT4sIGZpbHRlck9sZCA9IHRydWUpOiBQcm9taXNlPENvbGxlY3Rpb248c3RyaW5nLCBNZXNzYWdlPj4ge1xyXG4gICAgbGV0IG1lc3NhZ2VJZHM6IHN0cmluZ1tdO1xyXG4gICAgXHJcbiAgICBpZiAodHlwZW9mIG1lc3NhZ2VzID09PSAnbnVtYmVyJykge1xyXG4gICAgICAvLyBGZXRjaCBtZXNzYWdlcyBmaXJzdFxyXG4gICAgICBjb25zdCBmZXRjaGVkID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5nZXRNZXNzYWdlcyh0aGlzLmd1aWxkSWQgfHwgJycsIHRoaXMuaWQsIHsgbGltaXQ6IG1lc3NhZ2VzIH0pO1xyXG4gICAgICBtZXNzYWdlSWRzID0gZmV0Y2hlZC5tYXAobSA9PiBtLmlkKTtcclxuICAgIH0gZWxzZSBpZiAobWVzc2FnZXMgaW5zdGFuY2VvZiBDb2xsZWN0aW9uKSB7XHJcbiAgICAgIG1lc3NhZ2VJZHMgPSBbLi4ubWVzc2FnZXMua2V5cygpXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG1lc3NhZ2VJZHMgPSBtZXNzYWdlcztcclxuICAgIH1cclxuXHJcbiAgICAvLyBGaWx0ZXIgb2xkIG1lc3NhZ2VzIChvbGRlciB0aGFuIDE0IGRheXMpXHJcbiAgICBpZiAoZmlsdGVyT2xkKSB7XHJcbiAgICAgIGNvbnN0IHR3b1dlZWtzQWdvID0gRGF0ZS5ub3coKSAtIDE0ICogMjQgKiA2MCAqIDYwICogMTAwMDtcclxuICAgICAgbWVzc2FnZUlkcyA9IG1lc3NhZ2VJZHMuZmlsdGVyKGlkID0+IHtcclxuICAgICAgICAvLyBFeHRyYWN0IHRpbWVzdGFtcCBmcm9tIHNub3dmbGFrZVxyXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IE51bWJlcihCaWdJbnQoaWQpID4+IDIybikgKyAxNDIwMDcwNDAwMDAwO1xyXG4gICAgICAgIHJldHVybiB0aW1lc3RhbXAgPiB0d29XZWVrc0FnbztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG1lc3NhZ2VJZHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtZXNzYWdlSWRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LmRlbGV0ZU1lc3NhZ2UodGhpcy5ndWlsZElkIHx8ICcnLCB0aGlzLmlkLCBtZXNzYWdlSWRzWzBdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuY2xpZW50LnJlc3QuYnVsa0RlbGV0ZU1lc3NhZ2VzKHRoaXMuZ3VpbGRJZCB8fCAnJywgdGhpcy5pZCwgbWVzc2FnZUlkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmV0dXJuIGRlbGV0ZWQgbWVzc2FnZXMgYXMgY29sbGVjdGlvblxyXG4gICAgY29uc3QgZGVsZXRlZCA9IG5ldyBDb2xsZWN0aW9uPHN0cmluZywgTWVzc2FnZT4oKTtcclxuICAgIC8vIE5vdGU6IFdlIGRvbid0IGhhdmUgdGhlIGFjdHVhbCBtZXNzYWdlIG9iamVjdHMgaGVyZVxyXG4gICAgcmV0dXJuIGRlbGV0ZWQ7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogVm9pY2UgY2hhbm5lbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFZvaWNlQ2hhbm5lbCBleHRlbmRzIEJhc2VDaGFubmVsIHtcclxuICAvKiogR3VpbGQgSUQgKi9cclxuICBwdWJsaWMgZ3VpbGRJZD86IHN0cmluZztcclxuICBcclxuICAvKiogQ2hhbm5lbCBuYW1lICovXHJcbiAgcHVibGljIG5hbWU/OiBzdHJpbmc7XHJcbiAgXHJcbiAgLyoqIENoYW5uZWwgcG9zaXRpb24gKi9cclxuICBwdWJsaWMgcG9zaXRpb24/OiBudW1iZXI7XHJcbiAgXHJcbiAgLyoqIFBhcmVudCBjYXRlZ29yeSBJRCAqL1xyXG4gIHB1YmxpYyBwYXJlbnRJZD86IHN0cmluZztcclxuICBcclxuICAvKiogVXNlciBsaW1pdCAqL1xyXG4gIHB1YmxpYyB1c2VyTGltaXQ/OiBudW1iZXI7XHJcbiAgXHJcbiAgLyoqIEJpdHJhdGUgKi9cclxuICBwdWJsaWMgYml0cmF0ZT86IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoY2xpZW50OiBDbGllbnQsIGRhdGE6IEFQSUNoYW5uZWwgJiB7IHVzZXJfbGltaXQ/OiBudW1iZXI7IGJpdHJhdGU/OiBudW1iZXIgfSkge1xyXG4gICAgc3VwZXIoY2xpZW50LCBkYXRhKTtcclxuICAgIHRoaXMuZ3VpbGRJZCA9IGRhdGEuZ3VpbGRfaWQ7XHJcbiAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XHJcbiAgICB0aGlzLnBvc2l0aW9uID0gZGF0YS5wb3NpdGlvbjtcclxuICAgIHRoaXMucGFyZW50SWQgPSBkYXRhLnBhcmVudF9pZDtcclxuICAgIHRoaXMudXNlckxpbWl0ID0gZGF0YS51c2VyX2xpbWl0O1xyXG4gICAgdGhpcy5iaXRyYXRlID0gZGF0YS5iaXRyYXRlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgdGhlIGJvdCBjYW4gam9pbiB0aGlzIHZvaWNlIGNoYW5uZWxcclxuICAgKi9cclxuICBnZXQgam9pbmFibGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuZ3VpbGRJZCB8fCAhdGhpcy5jbGllbnQudXNlcikgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgZ3VpbGQgPSB0aGlzLmNsaWVudC5ndWlsZHMuZ2V0KHRoaXMuZ3VpbGRJZCk7XHJcbiAgICBpZiAoIWd1aWxkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBtZSA9IGd1aWxkLm1lbWJlcnMuZ2V0KFN0cmluZyh0aGlzLmNsaWVudC51c2VyLmlkKSk7XHJcbiAgICBpZiAoIW1lKSByZXR1cm4gdHJ1ZTsgLy8gTm8gY2FjaGVkIG1lbWJlciDigJQgb3B0aW1pc3RpYywgc2VydmVyIHdpbGwgcmVqZWN0IGlmIG5vdCBhbGxvd2VkXHJcbiAgICByZXR1cm4gbWUucGVybWlzc2lvbnMuaGFzKCdDb25uZWN0Jyk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogRE0gY2hhbm5lbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERNQ2hhbm5lbCBleHRlbmRzIEJhc2VDaGFubmVsIHtcclxuICAvKiogUmVjaXBpZW50IHVzZXIgSUQgKi9cclxuICBwdWJsaWMgcmVjaXBpZW50SWQ/OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNsaWVudDogQ2xpZW50LCBkYXRhOiBBUElDaGFubmVsICYgeyByZWNpcGllbnRfaWQ/OiBzdHJpbmcgfSkge1xyXG4gICAgc3VwZXIoY2xpZW50LCBkYXRhKTtcclxuICAgIHRoaXMucmVjaXBpZW50SWQgPSBkYXRhLnJlY2lwaWVudF9pZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmQgYSBtZXNzYWdlIHRvIHRoaXMgRE1cclxuICAgKi9cclxuICBhc3luYyBzZW5kKG9wdGlvbnM6IHN0cmluZyB8IE1lc3NhZ2VDcmVhdGVPcHRpb25zKTogUHJvbWlzZTxNZXNzYWdlPiB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnID8gb3B0aW9ucyA6IG9wdGlvbnMuY29udGVudDtcclxuICAgIGNvbnN0IGVtYmVkcyA9IHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJyA/IHVuZGVmaW5lZCA6IHJlc29sdmVFbWJlZHMob3B0aW9ucy5lbWJlZHMpO1xyXG4gICAgXHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5jcmVhdGVETU1lc3NhZ2UodGhpcy5pZCwge1xyXG4gICAgICBjb250ZW50LFxyXG4gICAgICBlbWJlZHNcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICByZXR1cm4gbmV3IE1lc3NhZ2UodGhpcy5jbGllbnQsIGRhdGEpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIE1lc3NhZ2UgY3JlYXRlIG9wdGlvbnNcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUNyZWF0ZU9wdGlvbnMge1xyXG4gIGNvbnRlbnQ/OiBzdHJpbmc7XHJcbiAgZW1iZWRzPzogKEFQSUVtYmVkIHwgRW1iZWRCdWlsZGVyKVtdO1xyXG4gIGNvbXBvbmVudHM/OiBhbnlbXTtcclxuICBmaWxlcz86IGFueVtdO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlIGFwcHJvcHJpYXRlIGNoYW5uZWwgY2xhc3MgYmFzZWQgb24gdHlwZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoYW5uZWwoY2xpZW50OiBDbGllbnQsIGRhdGE6IEFQSUNoYW5uZWwpOiBCYXNlQ2hhbm5lbCB7XHJcbiAgc3dpdGNoIChkYXRhLnR5cGUpIHtcclxuICAgIGNhc2UgQ2hhbm5lbFR5cGUuR3VpbGRUZXh0OlxyXG4gICAgY2FzZSBDaGFubmVsVHlwZS5HdWlsZEFubm91bmNlbWVudDpcclxuICAgICAgcmV0dXJuIG5ldyBUZXh0Q2hhbm5lbChjbGllbnQsIGRhdGEpO1xyXG4gICAgY2FzZSBDaGFubmVsVHlwZS5HdWlsZFZvaWNlOlxyXG4gICAgY2FzZSBDaGFubmVsVHlwZS5HdWlsZFN0YWdlVm9pY2U6XHJcbiAgICAgIHJldHVybiBuZXcgVm9pY2VDaGFubmVsKGNsaWVudCwgZGF0YSk7XHJcbiAgICBjYXNlIENoYW5uZWxUeXBlLkRNOlxyXG4gICAgICByZXR1cm4gbmV3IERNQ2hhbm5lbChjbGllbnQsIGRhdGEpO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIG5ldyBCYXNlQ2hhbm5lbChjbGllbnQsIGRhdGEpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,111 +0,0 @@
1
- /**
2
- * Extended Map with utility methods
3
- */
4
- export class Collection extends Map {
5
- /**
6
- * Get the first value in the collection
7
- */
8
- first() {
9
- return this.values().next().value;
10
- }
11
- /**
12
- * Get the last value in the collection
13
- */
14
- last() {
15
- const arr = [...this.values()];
16
- return arr[arr.length - 1];
17
- }
18
- /**
19
- * Get a random value from the collection
20
- */
21
- random() {
22
- const arr = [...this.values()];
23
- return arr[Math.floor(Math.random() * arr.length)];
24
- }
25
- /**
26
- * Find a value matching a predicate
27
- */
28
- find(fn) {
29
- for (const [key, val] of this) {
30
- if (fn(val, key, this))
31
- return val;
32
- }
33
- return undefined;
34
- }
35
- /**
36
- * Filter values matching a predicate
37
- */
38
- filter(fn) {
39
- const results = new Collection();
40
- for (const [key, val] of this) {
41
- if (fn(val, key, this))
42
- results.set(key, val);
43
- }
44
- return results;
45
- }
46
- /**
47
- * Map values to a new array
48
- */
49
- map(fn) {
50
- const results = [];
51
- for (const [key, val] of this) {
52
- results.push(fn(val, key, this));
53
- }
54
- return results;
55
- }
56
- /**
57
- * Check if some values match a predicate
58
- */
59
- some(fn) {
60
- for (const [key, val] of this) {
61
- if (fn(val, key, this))
62
- return true;
63
- }
64
- return false;
65
- }
66
- /**
67
- * Check if every value matches a predicate
68
- */
69
- every(fn) {
70
- for (const [key, val] of this) {
71
- if (!fn(val, key, this))
72
- return false;
73
- }
74
- return true;
75
- }
76
- /**
77
- * Reduce the collection to a single value
78
- */
79
- reduce(fn, initialValue) {
80
- let accumulator = initialValue;
81
- for (const [key, val] of this) {
82
- accumulator = fn(accumulator, val, key, this);
83
- }
84
- return accumulator;
85
- }
86
- /**
87
- * Convert to array
88
- */
89
- toArray() {
90
- return [...this.values()];
91
- }
92
- /**
93
- * Clone the collection
94
- */
95
- clone() {
96
- return new Collection(this);
97
- }
98
- /**
99
- * Concat with another collection
100
- */
101
- concat(...collections) {
102
- const newColl = this.clone();
103
- for (const coll of collections) {
104
- for (const [key, val] of coll) {
105
- newColl.set(key, val);
106
- }
107
- }
108
- return newColl;
109
- }
110
- }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdHJ1Y3R1cmVzL0NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBaUIsU0FBUSxHQUFTO0lBQzdDOztPQUVHO0lBQ0gsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvQixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsRUFBbUQ7UUFDdEQsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDO2dCQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsRUFBbUQ7UUFDeEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxVQUFVLEVBQVEsQ0FBQztRQUN2QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDOUIsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7Z0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBSSxFQUE2QztRQUNsRCxNQUFNLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDeEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLEVBQW1EO1FBQ3RELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM5QixJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQztRQUN0QyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsRUFBbUQ7UUFDdkQsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7UUFDeEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFJLEVBQTZELEVBQUUsWUFBZTtRQUN0RixJQUFJLFdBQVcsR0FBRyxZQUFZLENBQUM7UUFDL0IsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzlCLFdBQVcsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsR0FBRyxXQUErQjtRQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUMvQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEV4dGVuZGVkIE1hcCB3aXRoIHV0aWxpdHkgbWV0aG9kc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENvbGxlY3Rpb248SywgVj4gZXh0ZW5kcyBNYXA8SywgVj4ge1xyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgZmlyc3QgdmFsdWUgaW4gdGhlIGNvbGxlY3Rpb25cclxuICAgKi9cclxuICBmaXJzdCgpOiBWIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgY29sbGVjdGlvblxyXG4gICAqL1xyXG4gIGxhc3QoKTogViB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBhcnIgPSBbLi4udGhpcy52YWx1ZXMoKV07XHJcbiAgICByZXR1cm4gYXJyW2Fyci5sZW5ndGggLSAxXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhIHJhbmRvbSB2YWx1ZSBmcm9tIHRoZSBjb2xsZWN0aW9uXHJcbiAgICovXHJcbiAgcmFuZG9tKCk6IFYgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgYXJyID0gWy4uLnRoaXMudmFsdWVzKCldO1xyXG4gICAgcmV0dXJuIGFycltNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhcnIubGVuZ3RoKV07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kIGEgdmFsdWUgbWF0Y2hpbmcgYSBwcmVkaWNhdGVcclxuICAgKi9cclxuICBmaW5kKGZuOiAodmFsdWU6IFYsIGtleTogSywgY29sbGVjdGlvbjogdGhpcykgPT4gYm9vbGVhbik6IFYgfCB1bmRlZmluZWQge1xyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIHRoaXMpIHtcclxuICAgICAgaWYgKGZuKHZhbCwga2V5LCB0aGlzKSkgcmV0dXJuIHZhbDtcclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaWx0ZXIgdmFsdWVzIG1hdGNoaW5nIGEgcHJlZGljYXRlXHJcbiAgICovXHJcbiAgZmlsdGVyKGZuOiAodmFsdWU6IFYsIGtleTogSywgY29sbGVjdGlvbjogdGhpcykgPT4gYm9vbGVhbik6IENvbGxlY3Rpb248SywgVj4ge1xyXG4gICAgY29uc3QgcmVzdWx0cyA9IG5ldyBDb2xsZWN0aW9uPEssIFY+KCk7XHJcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbF0gb2YgdGhpcykge1xyXG4gICAgICBpZiAoZm4odmFsLCBrZXksIHRoaXMpKSByZXN1bHRzLnNldChrZXksIHZhbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcCB2YWx1ZXMgdG8gYSBuZXcgYXJyYXlcclxuICAgKi9cclxuICBtYXA8VD4oZm46ICh2YWx1ZTogViwga2V5OiBLLCBjb2xsZWN0aW9uOiB0aGlzKSA9PiBUKTogVFtdIHtcclxuICAgIGNvbnN0IHJlc3VsdHM6IFRbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIHRoaXMpIHtcclxuICAgICAgcmVzdWx0cy5wdXNoKGZuKHZhbCwga2V5LCB0aGlzKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIHNvbWUgdmFsdWVzIG1hdGNoIGEgcHJlZGljYXRlXHJcbiAgICovXHJcbiAgc29tZShmbjogKHZhbHVlOiBWLCBrZXk6IEssIGNvbGxlY3Rpb246IHRoaXMpID0+IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiB0aGlzKSB7XHJcbiAgICAgIGlmIChmbih2YWwsIGtleSwgdGhpcykpIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgZXZlcnkgdmFsdWUgbWF0Y2hlcyBhIHByZWRpY2F0ZVxyXG4gICAqL1xyXG4gIGV2ZXJ5KGZuOiAodmFsdWU6IFYsIGtleTogSywgY29sbGVjdGlvbjogdGhpcykgPT4gYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIHRoaXMpIHtcclxuICAgICAgaWYgKCFmbih2YWwsIGtleSwgdGhpcykpIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVkdWNlIHRoZSBjb2xsZWN0aW9uIHRvIGEgc2luZ2xlIHZhbHVlXHJcbiAgICovXHJcbiAgcmVkdWNlPFQ+KGZuOiAoYWNjdW11bGF0b3I6IFQsIHZhbHVlOiBWLCBrZXk6IEssIGNvbGxlY3Rpb246IHRoaXMpID0+IFQsIGluaXRpYWxWYWx1ZTogVCk6IFQge1xyXG4gICAgbGV0IGFjY3VtdWxhdG9yID0gaW5pdGlhbFZhbHVlO1xyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIHRoaXMpIHtcclxuICAgICAgYWNjdW11bGF0b3IgPSBmbihhY2N1bXVsYXRvciwgdmFsLCBrZXksIHRoaXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCB0byBhcnJheVxyXG4gICAqL1xyXG4gIHRvQXJyYXkoKTogVltdIHtcclxuICAgIHJldHVybiBbLi4udGhpcy52YWx1ZXMoKV07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9uZSB0aGUgY29sbGVjdGlvblxyXG4gICAqL1xyXG4gIGNsb25lKCk6IENvbGxlY3Rpb248SywgVj4ge1xyXG4gICAgcmV0dXJuIG5ldyBDb2xsZWN0aW9uKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uY2F0IHdpdGggYW5vdGhlciBjb2xsZWN0aW9uXHJcbiAgICovXHJcbiAgY29uY2F0KC4uLmNvbGxlY3Rpb25zOiBDb2xsZWN0aW9uPEssIFY+W10pOiBDb2xsZWN0aW9uPEssIFY+IHtcclxuICAgIGNvbnN0IG5ld0NvbGwgPSB0aGlzLmNsb25lKCk7XHJcbiAgICBmb3IgKGNvbnN0IGNvbGwgb2YgY29sbGVjdGlvbnMpIHtcclxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIGNvbGwpIHtcclxuICAgICAgICBuZXdDb2xsLnNldChrZXksIHZhbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdDb2xsO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,90 +0,0 @@
1
- import { Collection } from './Collection';
2
- import { GuildMember } from './GuildMember';
3
- /**
4
- * Represents a guild
5
- */
6
- export class Guild {
7
- /** Reference to the client */
8
- client;
9
- /** Guild ID */
10
- id;
11
- /** Guild name */
12
- name;
13
- /** Guild icon URL */
14
- icon;
15
- /** Owner ID */
16
- ownerId;
17
- /** Whether the guild is unavailable */
18
- unavailable;
19
- /** Cached members */
20
- members;
21
- /** Cached channels */
22
- channels;
23
- constructor(client, data) {
24
- this.client = client;
25
- this.id = data.id;
26
- this.name = data.name;
27
- this.icon = data.icon;
28
- this.ownerId = data.owner_id;
29
- this.unavailable = data.unavailable ?? false;
30
- this.members = new Collection();
31
- this.channels = new Collection();
32
- }
33
- /**
34
- * Get the guild icon URL
35
- */
36
- iconURL(options) {
37
- if (!this.icon)
38
- return null;
39
- return this.icon;
40
- }
41
- /**
42
- * Get the voice adapter creator for @jubbio/voice
43
- */
44
- get voiceAdapterCreator() {
45
- return this.client.voice.adapters.get(this.id);
46
- }
47
- /**
48
- * Fetch a member by ID
49
- */
50
- async fetchMember(userId) {
51
- // Check cache first
52
- const cached = this.members.get(userId);
53
- if (cached)
54
- return cached;
55
- // Fetch from API
56
- const data = await this.client.rest.getMember(this.id, userId);
57
- if (!data)
58
- throw new Error(`Member ${userId} not found in guild ${this.id}`);
59
- const member = this._addMember(data);
60
- return member;
61
- }
62
- /**
63
- * Convert to string
64
- */
65
- toString() {
66
- return this.name;
67
- }
68
- /**
69
- * Update guild data
70
- */
71
- _patch(data) {
72
- if (data.name !== undefined)
73
- this.name = data.name;
74
- if (data.icon !== undefined)
75
- this.icon = data.icon;
76
- if (data.owner_id !== undefined)
77
- this.ownerId = data.owner_id;
78
- if (data.unavailable !== undefined)
79
- this.unavailable = data.unavailable;
80
- }
81
- /**
82
- * Add a member to cache
83
- */
84
- _addMember(data) {
85
- const member = new GuildMember(this.client, this, data);
86
- this.members.set(member.id, member);
87
- return member;
88
- }
89
- }
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RydWN0dXJlcy9HdWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHNUM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sS0FBSztJQUNoQiw4QkFBOEI7SUFDZCxNQUFNLENBQVM7SUFFL0IsZUFBZTtJQUNDLEVBQUUsQ0FBUztJQUUzQixpQkFBaUI7SUFDVixJQUFJLENBQVM7SUFFcEIscUJBQXFCO0lBQ2QsSUFBSSxDQUFVO0lBRXJCLGVBQWU7SUFDUixPQUFPLENBQVM7SUFFdkIsdUNBQXVDO0lBQ2hDLFdBQVcsQ0FBVTtJQUU1QixxQkFBcUI7SUFDZCxPQUFPLENBQWtDO0lBRWhELHNCQUFzQjtJQUNmLFFBQVEsQ0FBaUM7SUFFaEQsWUFBWSxNQUFjLEVBQUUsSUFBYztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxPQUEyQjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQWM7UUFDOUIsb0JBQW9CO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLElBQUksTUFBTTtZQUFFLE9BQU8sTUFBTSxDQUFDO1FBRTFCLGlCQUFpQjtRQUNqQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLE1BQU0sdUJBQXVCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsSUFBdUI7UUFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUQsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLElBQW9CO1FBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBJR3VpbGQsIEFQSUNoYW5uZWwsIEFQSUd1aWxkTWVtYmVyIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi9Db2xsZWN0aW9uJztcclxuaW1wb3J0IHsgR3VpbGRNZW1iZXIgfSBmcm9tICcuL0d1aWxkTWVtYmVyJztcclxuaW1wb3J0IHR5cGUgeyBDbGllbnQgfSBmcm9tICcuLi9DbGllbnQnO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBndWlsZFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEd1aWxkIHtcclxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBjbGllbnQgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgY2xpZW50OiBDbGllbnQ7XHJcbiAgXHJcbiAgLyoqIEd1aWxkIElEICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmc7XHJcbiAgXHJcbiAgLyoqIEd1aWxkIG5hbWUgKi9cclxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBHdWlsZCBpY29uIFVSTCAqL1xyXG4gIHB1YmxpYyBpY29uPzogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBPd25lciBJRCAqL1xyXG4gIHB1YmxpYyBvd25lcklkOiBzdHJpbmc7XHJcbiAgXHJcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHVuYXZhaWxhYmxlICovXHJcbiAgcHVibGljIHVuYXZhaWxhYmxlOiBib29sZWFuO1xyXG4gIFxyXG4gIC8qKiBDYWNoZWQgbWVtYmVycyAqL1xyXG4gIHB1YmxpYyBtZW1iZXJzOiBDb2xsZWN0aW9uPHN0cmluZywgR3VpbGRNZW1iZXI+O1xyXG4gIFxyXG4gIC8qKiBDYWNoZWQgY2hhbm5lbHMgKi9cclxuICBwdWJsaWMgY2hhbm5lbHM6IENvbGxlY3Rpb248c3RyaW5nLCBBUElDaGFubmVsPjtcclxuXHJcbiAgY29uc3RydWN0b3IoY2xpZW50OiBDbGllbnQsIGRhdGE6IEFQSUd1aWxkKSB7XHJcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcclxuICAgIHRoaXMuaWQgPSBkYXRhLmlkO1xyXG4gICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xyXG4gICAgdGhpcy5pY29uID0gZGF0YS5pY29uO1xyXG4gICAgdGhpcy5vd25lcklkID0gZGF0YS5vd25lcl9pZDtcclxuICAgIHRoaXMudW5hdmFpbGFibGUgPSBkYXRhLnVuYXZhaWxhYmxlID8/IGZhbHNlO1xyXG4gICAgdGhpcy5tZW1iZXJzID0gbmV3IENvbGxlY3Rpb24oKTtcclxuICAgIHRoaXMuY2hhbm5lbHMgPSBuZXcgQ29sbGVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBndWlsZCBpY29uIFVSTFxyXG4gICAqL1xyXG4gIGljb25VUkwob3B0aW9ucz86IHsgc2l6ZT86IG51bWJlciB9KTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBpZiAoIXRoaXMuaWNvbikgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdGhpcy5pY29uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSB2b2ljZSBhZGFwdGVyIGNyZWF0b3IgZm9yIEBqdWJiaW8vdm9pY2VcclxuICAgKi9cclxuICBnZXQgdm9pY2VBZGFwdGVyQ3JlYXRvcigpIHtcclxuICAgIHJldHVybiB0aGlzLmNsaWVudC52b2ljZS5hZGFwdGVycy5nZXQodGhpcy5pZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaCBhIG1lbWJlciBieSBJRFxyXG4gICAqL1xyXG4gIGFzeW5jIGZldGNoTWVtYmVyKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxHdWlsZE1lbWJlcj4ge1xyXG4gICAgLy8gQ2hlY2sgY2FjaGUgZmlyc3RcclxuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMubWVtYmVycy5nZXQodXNlcklkKTtcclxuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XHJcbiAgICBcclxuICAgIC8vIEZldGNoIGZyb20gQVBJXHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5nZXRNZW1iZXIodGhpcy5pZCwgdXNlcklkKTtcclxuICAgIGlmICghZGF0YSkgdGhyb3cgbmV3IEVycm9yKGBNZW1iZXIgJHt1c2VySWR9IG5vdCBmb3VuZCBpbiBndWlsZCAke3RoaXMuaWR9YCk7XHJcbiAgICBjb25zdCBtZW1iZXIgPSB0aGlzLl9hZGRNZW1iZXIoZGF0YSk7XHJcbiAgICByZXR1cm4gbWVtYmVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCB0byBzdHJpbmdcclxuICAgKi9cclxuICB0b1N0cmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubmFtZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBndWlsZCBkYXRhXHJcbiAgICovXHJcbiAgX3BhdGNoKGRhdGE6IFBhcnRpYWw8QVBJR3VpbGQ+KTogdm9pZCB7XHJcbiAgICBpZiAoZGF0YS5uYW1lICE9PSB1bmRlZmluZWQpIHRoaXMubmFtZSA9IGRhdGEubmFtZTtcclxuICAgIGlmIChkYXRhLmljb24gIT09IHVuZGVmaW5lZCkgdGhpcy5pY29uID0gZGF0YS5pY29uO1xyXG4gICAgaWYgKGRhdGEub3duZXJfaWQgIT09IHVuZGVmaW5lZCkgdGhpcy5vd25lcklkID0gZGF0YS5vd25lcl9pZDtcclxuICAgIGlmIChkYXRhLnVuYXZhaWxhYmxlICE9PSB1bmRlZmluZWQpIHRoaXMudW5hdmFpbGFibGUgPSBkYXRhLnVuYXZhaWxhYmxlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgbWVtYmVyIHRvIGNhY2hlXHJcbiAgICovXHJcbiAgX2FkZE1lbWJlcihkYXRhOiBBUElHdWlsZE1lbWJlcik6IEd1aWxkTWVtYmVyIHtcclxuICAgIGNvbnN0IG1lbWJlciA9IG5ldyBHdWlsZE1lbWJlcih0aGlzLmNsaWVudCwgdGhpcywgZGF0YSk7XHJcbiAgICB0aGlzLm1lbWJlcnMuc2V0KG1lbWJlci5pZCwgbWVtYmVyKTtcclxuICAgIHJldHVybiBtZW1iZXI7XHJcbiAgfVxyXG59XHJcbiJdfQ==