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