@jubbio/core 1.1.20 → 1.3.2

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 (125) hide show
  1. package/dist/Client.js +13 -14
  2. package/dist/cjs/Client.d.ts +157 -0
  3. package/dist/cjs/Client.js +640 -0
  4. package/dist/cjs/builders/ActionRowBuilder.d.ts +53 -0
  5. package/dist/cjs/builders/ActionRowBuilder.js +68 -0
  6. package/dist/cjs/builders/ButtonBuilder.d.ts +77 -0
  7. package/dist/cjs/builders/ButtonBuilder.js +96 -0
  8. package/dist/cjs/builders/EmbedBuilder.d.ts +157 -0
  9. package/dist/cjs/builders/EmbedBuilder.js +208 -0
  10. package/dist/cjs/builders/ModalBuilder.d.ts +122 -0
  11. package/dist/cjs/builders/ModalBuilder.js +162 -0
  12. package/dist/cjs/builders/SelectMenuBuilder.d.ts +123 -0
  13. package/dist/cjs/builders/SelectMenuBuilder.js +165 -0
  14. package/dist/cjs/builders/SlashCommandBuilder.d.ts +197 -0
  15. package/dist/cjs/builders/SlashCommandBuilder.js +324 -0
  16. package/dist/cjs/builders/index.d.ts +9 -0
  17. package/dist/cjs/builders/index.js +26 -0
  18. package/dist/cjs/enums.d.ts +191 -0
  19. package/dist/cjs/enums.js +211 -0
  20. package/dist/cjs/index.d.ts +25 -0
  21. package/dist/cjs/index.js +130 -0
  22. package/dist/cjs/managers/BaseManager.d.ts +69 -0
  23. package/dist/cjs/managers/BaseManager.js +106 -0
  24. package/dist/cjs/managers/ChannelManager.d.ts +95 -0
  25. package/dist/cjs/managers/ChannelManager.js +205 -0
  26. package/dist/cjs/managers/GuildMemberManager.d.ts +74 -0
  27. package/dist/cjs/managers/GuildMemberManager.js +157 -0
  28. package/dist/cjs/managers/RoleManager.d.ts +84 -0
  29. package/dist/cjs/managers/RoleManager.js +207 -0
  30. package/dist/cjs/managers/index.d.ts +7 -0
  31. package/dist/cjs/managers/index.js +24 -0
  32. package/dist/cjs/rest/REST.d.ts +527 -0
  33. package/dist/cjs/rest/REST.js +904 -0
  34. package/dist/cjs/rest/index.d.ts +1 -0
  35. package/dist/cjs/rest/index.js +18 -0
  36. package/dist/cjs/sharding/ShardingManager.d.ts +179 -0
  37. package/dist/cjs/sharding/ShardingManager.js +375 -0
  38. package/dist/cjs/sharding/index.d.ts +4 -0
  39. package/dist/cjs/sharding/index.js +21 -0
  40. package/dist/cjs/structures/Channel.d.ts +122 -0
  41. package/dist/cjs/structures/Channel.js +240 -0
  42. package/dist/cjs/structures/Collection.d.ts +53 -0
  43. package/dist/cjs/structures/Collection.js +115 -0
  44. package/dist/cjs/structures/Guild.d.ts +59 -0
  45. package/dist/cjs/structures/Guild.js +94 -0
  46. package/dist/cjs/structures/GuildMember.d.ts +174 -0
  47. package/dist/cjs/structures/GuildMember.js +311 -0
  48. package/dist/cjs/structures/Interaction.d.ts +245 -0
  49. package/dist/cjs/structures/Interaction.js +450 -0
  50. package/dist/cjs/structures/Message.d.ts +98 -0
  51. package/dist/cjs/structures/Message.js +195 -0
  52. package/dist/cjs/structures/User.d.ts +37 -0
  53. package/dist/cjs/structures/User.js +65 -0
  54. package/dist/cjs/structures/index.d.ts +7 -0
  55. package/dist/cjs/structures/index.js +25 -0
  56. package/dist/cjs/structures.d.ts +1 -0
  57. package/dist/cjs/structures.js +19 -0
  58. package/dist/cjs/types.d.ts +255 -0
  59. package/dist/cjs/types.js +3 -0
  60. package/dist/cjs/utils/BitField.d.ts +66 -0
  61. package/dist/cjs/utils/BitField.js +138 -0
  62. package/dist/cjs/utils/Collection.d.ts +116 -0
  63. package/dist/cjs/utils/Collection.js +265 -0
  64. package/dist/cjs/utils/Collector.d.ts +152 -0
  65. package/dist/cjs/utils/Collector.js +314 -0
  66. package/dist/cjs/utils/DataResolver.d.ts +61 -0
  67. package/dist/cjs/utils/DataResolver.js +146 -0
  68. package/dist/cjs/utils/Formatters.d.ts +145 -0
  69. package/dist/cjs/utils/Formatters.js +213 -0
  70. package/dist/cjs/utils/IntentsBitField.d.ts +85 -0
  71. package/dist/cjs/utils/IntentsBitField.js +99 -0
  72. package/dist/cjs/utils/Partials.d.ts +104 -0
  73. package/dist/cjs/utils/Partials.js +148 -0
  74. package/dist/cjs/utils/PermissionsBitField.d.ts +118 -0
  75. package/dist/cjs/utils/PermissionsBitField.js +145 -0
  76. package/dist/cjs/utils/SnowflakeUtil.d.ts +63 -0
  77. package/dist/cjs/utils/SnowflakeUtil.js +93 -0
  78. package/dist/cjs/utils/Sweepers.d.ts +119 -0
  79. package/dist/cjs/utils/Sweepers.js +249 -0
  80. package/dist/cjs/utils/index.d.ts +13 -0
  81. package/dist/cjs/utils/index.js +30 -0
  82. package/dist/esm/Client.js +634 -0
  83. package/dist/esm/builders/ActionRowBuilder.js +64 -0
  84. package/dist/esm/builders/ButtonBuilder.js +92 -0
  85. package/dist/esm/builders/EmbedBuilder.js +204 -0
  86. package/dist/esm/builders/ModalBuilder.js +157 -0
  87. package/dist/esm/builders/SelectMenuBuilder.js +161 -0
  88. package/dist/esm/builders/SlashCommandBuilder.js +311 -0
  89. package/dist/esm/builders/index.js +10 -0
  90. package/dist/esm/enums.js +208 -0
  91. package/dist/esm/index.js +34 -0
  92. package/dist/esm/managers/BaseManager.js +100 -0
  93. package/dist/esm/managers/ChannelManager.js +200 -0
  94. package/dist/esm/managers/GuildMemberManager.js +153 -0
  95. package/dist/esm/managers/RoleManager.js +203 -0
  96. package/dist/esm/managers/index.js +8 -0
  97. package/dist/esm/rest/REST.js +900 -0
  98. package/dist/esm/rest/index.js +2 -0
  99. package/dist/esm/sharding/ShardingManager.js +366 -0
  100. package/dist/esm/sharding/index.js +5 -0
  101. package/dist/esm/structures/Channel.js +232 -0
  102. package/dist/esm/structures/Collection.js +111 -0
  103. package/dist/esm/structures/Guild.js +90 -0
  104. package/dist/esm/structures/GuildMember.js +306 -0
  105. package/dist/esm/structures/Interaction.js +438 -0
  106. package/dist/esm/structures/Message.js +191 -0
  107. package/dist/esm/structures/User.js +61 -0
  108. package/dist/esm/structures/index.js +9 -0
  109. package/dist/esm/structures.js +3 -0
  110. package/dist/esm/types.js +2 -0
  111. package/dist/esm/utils/BitField.js +134 -0
  112. package/dist/esm/utils/Collection.js +261 -0
  113. package/dist/esm/utils/Collector.js +305 -0
  114. package/dist/esm/utils/DataResolver.js +142 -0
  115. package/dist/esm/utils/Formatters.js +191 -0
  116. package/dist/esm/utils/IntentsBitField.js +93 -0
  117. package/dist/esm/utils/Partials.js +137 -0
  118. package/dist/esm/utils/PermissionsBitField.js +141 -0
  119. package/dist/esm/utils/SnowflakeUtil.js +89 -0
  120. package/dist/esm/utils/Sweepers.js +245 -0
  121. package/dist/esm/utils/index.js +14 -0
  122. package/dist/rest/REST.js +8 -1
  123. package/dist/structures/Interaction.js +3 -5
  124. package/dist/structures/Message.js +56 -2
  125. package/package.json +14 -4
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Manager for guild members with caching and lazy loading
3
+ */
4
+ import { CachedManager } from './BaseManager';
5
+ import { Collection } from '../utils/Collection';
6
+ import { Permissions } from '../structures/GuildMember';
7
+ /**
8
+ * Manages guild members
9
+ */
10
+ export class GuildMemberManager extends CachedManager {
11
+ /** The guild this manager belongs to */
12
+ guild;
13
+ constructor(guild, iterable) {
14
+ // Use a simple object as placeholder since we don't have GuildMember class yet
15
+ super(guild.client, Object, iterable);
16
+ this.guild = guild;
17
+ }
18
+ /**
19
+ * Add a member to the cache
20
+ */
21
+ _add(data, cache = true) {
22
+ const id = data.user?.id ?? data.id;
23
+ const existing = this.cache.get(id);
24
+ if (existing) {
25
+ if (cache) {
26
+ Object.assign(existing, data);
27
+ }
28
+ return existing;
29
+ }
30
+ const member = {
31
+ id,
32
+ guildId: this.guild.id,
33
+ user: data.user,
34
+ nick: data.nick,
35
+ roles: data.roles ?? [],
36
+ joinedAt: data.joined_at ? new Date(data.joined_at) : null,
37
+ premiumSince: data.premium_since ? new Date(data.premium_since) : null,
38
+ deaf: data.deaf ?? false,
39
+ mute: data.mute ?? false,
40
+ pending: data.pending ?? false,
41
+ permissions: new Permissions(data.permissions || '0', this.guild.ownerId === id),
42
+ communicationDisabledUntil: data.communication_disabled_until
43
+ ? new Date(data.communication_disabled_until)
44
+ : null,
45
+ // Helper methods
46
+ get displayName() {
47
+ return this.nick ?? this.user?.display_name ?? this.user?.username ?? 'Unknown';
48
+ },
49
+ toString() {
50
+ return `<@${this.id}>`;
51
+ },
52
+ };
53
+ if (cache) {
54
+ this.cache.set(id, member);
55
+ }
56
+ return member;
57
+ }
58
+ /**
59
+ * Fetch a member from the API
60
+ */
61
+ async fetch(id, options) {
62
+ if (!options?.force) {
63
+ const existing = this.cache.get(id);
64
+ if (existing)
65
+ return existing;
66
+ }
67
+ const data = await this.client.rest.request('GET', `/guilds/${this.guild.id}/members/${id}`);
68
+ return this._add(data, options?.cache ?? true);
69
+ }
70
+ /**
71
+ * Fetch multiple members
72
+ */
73
+ async fetchMany(options) {
74
+ const params = new URLSearchParams();
75
+ if (options?.limit)
76
+ params.set('limit', String(options.limit));
77
+ if (options?.after)
78
+ params.set('after', options.after);
79
+ if (options?.query)
80
+ params.set('query', options.query);
81
+ const data = await this.client.rest.request('GET', `/guilds/${this.guild.id}/members?${params}`);
82
+ const members = new Collection();
83
+ for (const memberData of data) {
84
+ const member = this._add(memberData);
85
+ members.set(member.id, member);
86
+ }
87
+ return members;
88
+ }
89
+ /**
90
+ * Search for members by query
91
+ */
92
+ async search(options) {
93
+ return this.fetchMany({ query: options.query, limit: options.limit ?? 10 });
94
+ }
95
+ /**
96
+ * Kick a member
97
+ */
98
+ async kick(id, reason) {
99
+ await this.client.rest.request('DELETE', `/guilds/${this.guild.id}/members/${id}`, reason ? { reason } : undefined);
100
+ this.cache.delete(id);
101
+ }
102
+ /**
103
+ * Ban a member
104
+ */
105
+ async ban(id, options) {
106
+ await this.client.rest.request('PUT', `/guilds/${this.guild.id}/bans/${id}`, {
107
+ delete_message_days: options?.deleteMessageDays,
108
+ reason: options?.reason,
109
+ });
110
+ this.cache.delete(id);
111
+ }
112
+ /**
113
+ * Unban a user
114
+ */
115
+ async unban(id, reason) {
116
+ await this.client.rest.request('DELETE', `/guilds/${this.guild.id}/bans/${id}`, reason ? { reason } : undefined);
117
+ }
118
+ /**
119
+ * Edit a member
120
+ */
121
+ async edit(id, data) {
122
+ const body = {};
123
+ if (data.nick !== undefined)
124
+ body.nick = data.nick;
125
+ if (data.roles !== undefined)
126
+ body.roles = data.roles;
127
+ if (data.mute !== undefined)
128
+ body.mute = data.mute;
129
+ if (data.deaf !== undefined)
130
+ body.deaf = data.deaf;
131
+ if (data.channel_id !== undefined)
132
+ body.channel_id = data.channel_id;
133
+ if (data.communication_disabled_until !== undefined) {
134
+ body.communication_disabled_until = data.communication_disabled_until?.toISOString() ?? null;
135
+ }
136
+ const result = await this.client.rest.request('PATCH', `/guilds/${this.guild.id}/members/${id}`, body);
137
+ return this._add(result);
138
+ }
139
+ /**
140
+ * Add a role to a member
141
+ */
142
+ async addRole(memberId, roleId, reason) {
143
+ await this.client.rest.request('PUT', `/guilds/${this.guild.id}/members/${memberId}/roles/${roleId}`, reason ? { reason } : undefined);
144
+ }
145
+ /**
146
+ * Remove a role from a member
147
+ */
148
+ async removeRole(memberId, roleId, reason) {
149
+ await this.client.rest.request('DELETE', `/guilds/${this.guild.id}/members/${memberId}/roles/${roleId}`, reason ? { reason } : undefined);
150
+ }
151
+ }
152
+ export default GuildMemberManager;
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpbGRNZW1iZXJNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21hbmFnZXJzL0d1aWxkTWVtYmVyTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV4RDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxhQUEwQjtJQUNoRSx3Q0FBd0M7SUFDeEIsS0FBSyxDQUFNO0lBRTNCLFlBQVksS0FBVSxFQUFFLFFBQXdCO1FBQzlDLCtFQUErRTtRQUMvRSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLElBQVMsRUFBRSxLQUFLLEdBQUcsSUFBSTtRQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hDLENBQUM7WUFDRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUc7WUFDYixFQUFFO1lBQ0YsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFB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LENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1hbmFnZXIgZm9yIGd1aWxkIG1lbWJlcnMgd2l0aCBjYWNoaW5nIGFuZCBsYXp5IGxvYWRpbmdcbiAqL1xuXG5pbXBvcnQgeyBDYWNoZWRNYW5hZ2VyIH0gZnJvbSAnLi9CYXNlTWFuYWdlcic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMvQ29sbGVjdGlvbic7XG5pbXBvcnQgeyBQZXJtaXNzaW9ucyB9IGZyb20gJy4uL3N0cnVjdHVyZXMvR3VpbGRNZW1iZXInO1xuXG4vKipcbiAqIE1hbmFnZXMgZ3VpbGQgbWVtYmVyc1xuICovXG5leHBvcnQgY2xhc3MgR3VpbGRNZW1iZXJNYW5hZ2VyIGV4dGVuZHMgQ2FjaGVkTWFuYWdlcjxzdHJpbmcsIGFueT4ge1xuICAvKiogVGhlIGd1aWxkIHRoaXMgbWFuYWdlciBiZWxvbmdzIHRvICovXG4gIHB1YmxpYyByZWFkb25seSBndWlsZDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKGd1aWxkOiBhbnksIGl0ZXJhYmxlPzogSXRlcmFibGU8YW55Pikge1xuICAgIC8vIFVzZSBhIHNpbXBsZSBvYmplY3QgYXMgcGxhY2Vob2xkZXIgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBHdWlsZE1lbWJlciBjbGFzcyB5ZXRcbiAgICBzdXBlcihndWlsZC5jbGllbnQsIE9iamVjdCBhcyBhbnksIGl0ZXJhYmxlKTtcbiAgICB0aGlzLmd1aWxkID0gZ3VpbGQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbWVtYmVyIHRvIHRoZSBjYWNoZVxuICAgKi9cbiAgX2FkZChkYXRhOiBhbnksIGNhY2hlID0gdHJ1ZSk6IGFueSB7XG4gICAgY29uc3QgaWQgPSBkYXRhLnVzZXI/LmlkID8/IGRhdGEuaWQ7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmNhY2hlLmdldChpZCk7XG4gICAgXG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihleGlzdGluZywgZGF0YSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG1lbWJlciA9IHtcbiAgICAgIGlkLFxuICAgICAgZ3VpbGRJZDogdGhpcy5ndWlsZC5pZCxcbiAgICAgIHVzZXI6IGRhdGEudXNlcixcbiAgICAgIG5pY2s6IGRhdGEubmljayxcbiAgICAgIHJvbGVzOiBkYXRhLnJvbGVzID8/IFtdLFxuICAgICAgam9pbmVkQXQ6IGRhdGEuam9pbmVkX2F0ID8gbmV3IERhdGUoZGF0YS5qb2luZWRfYXQpIDogbnVsbCxcbiAgICAgIHByZW1pdW1TaW5jZTogZGF0YS5wcmVtaXVtX3NpbmNlID8gbmV3IERhdGUoZGF0YS5wcmVtaXVtX3NpbmNlKSA6IG51bGwsXG4gICAgICBkZWFmOiBkYXRhLmRlYWYgPz8gZmFsc2UsXG4gICAgICBtdXRlOiBkYXRhLm11dGUgPz8gZmFsc2UsXG4gICAgICBwZW5kaW5nOiBkYXRhLnBlbmRpbmcgPz8gZmFsc2UsXG4gICAgICBwZXJtaXNzaW9uczogbmV3IFBlcm1pc3Npb25zKGRhdGEucGVybWlzc2lvbnMgfHwgJzAnLCB0aGlzLmd1aWxkLm93bmVySWQgPT09IGlkKSxcbiAgICAgIGNvbW11bmljYXRpb25EaXNhYmxlZFVudGlsOiBkYXRhLmNvbW11bmljYXRpb25fZGlzYWJsZWRfdW50aWwgXG4gICAgICAgID8gbmV3IERhdGUoZGF0YS5jb21tdW5pY2F0aW9uX2Rpc2FibGVkX3VudGlsKSBcbiAgICAgICAgOiBudWxsLFxuICAgICAgXG4gICAgICAvLyBIZWxwZXIgbWV0aG9kc1xuICAgICAgZ2V0IGRpc3BsYXlOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uaWNrID8/IHRoaXMudXNlcj8uZGlzcGxheV9uYW1lID8/IHRoaXMudXNlcj8udXNlcm5hbWUgPz8gJ1Vua25vd24nO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBgPEAke3RoaXMuaWR9PmA7XG4gICAgICB9LFxuICAgIH07XG4gICAgXG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICB0aGlzLmNhY2hlLnNldChpZCwgbWVtYmVyKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIG1lbWJlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhIG1lbWJlciBmcm9tIHRoZSBBUElcbiAgICovXG4gIGFzeW5jIGZldGNoKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiB7IGNhY2hlPzogYm9vbGVhbjsgZm9yY2U/OiBib29sZWFuIH0pOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICghb3B0aW9ucz8uZm9yY2UpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5jYWNoZS5nZXQoaWQpO1xuICAgICAgaWYgKGV4aXN0aW5nKSByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoXG4gICAgICAnR0VUJyxcbiAgICAgIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vbWVtYmVycy8ke2lkfWBcbiAgICApO1xuICAgIFxuICAgIHJldHVybiB0aGlzLl9hZGQoZGF0YSwgb3B0aW9ucz8uY2FjaGUgPz8gdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggbXVsdGlwbGUgbWVtYmVyc1xuICAgKi9cbiAgYXN5bmMgZmV0Y2hNYW55KG9wdGlvbnM/OiB7IFxuICAgIGxpbWl0PzogbnVtYmVyOyBcbiAgICBhZnRlcj86IHN0cmluZztcbiAgICBxdWVyeT86IHN0cmluZztcbiAgfSk6IFByb21pc2U8Q29sbGVjdGlvbjxzdHJpbmcsIGFueT4+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdGlvbnM/LmxpbWl0KSBwYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhvcHRpb25zLmxpbWl0KSk7XG4gICAgaWYgKG9wdGlvbnM/LmFmdGVyKSBwYXJhbXMuc2V0KCdhZnRlcicsIG9wdGlvbnMuYWZ0ZXIpO1xuICAgIGlmIChvcHRpb25zPy5xdWVyeSkgcGFyYW1zLnNldCgncXVlcnknLCBvcHRpb25zLnF1ZXJ5KTtcbiAgICBcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KFxuICAgICAgJ0dFVCcsXG4gICAgICBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L21lbWJlcnM/JHtwYXJhbXN9YFxuICAgICk7XG4gICAgXG4gICAgY29uc3QgbWVtYmVycyA9IG5ldyBDb2xsZWN0aW9uPHN0cmluZywgYW55PigpO1xuICAgIGZvciAoY29uc3QgbWVtYmVyRGF0YSBvZiBkYXRhKSB7XG4gICAgICBjb25zdCBtZW1iZXIgPSB0aGlzLl9hZGQobWVtYmVyRGF0YSk7XG4gICAgICBtZW1iZXJzLnNldChtZW1iZXIuaWQsIG1lbWJlcik7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBtZW1iZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCBmb3IgbWVtYmVycyBieSBxdWVyeVxuICAgKi9cbiAgYXN5bmMgc2VhcmNoKG9wdGlvbnM6IHsgcXVlcnk6IHN0cmluZzsgbGltaXQ/OiBudW1iZXIgfSk6IFByb21pc2U8Q29sbGVjdGlvbjxzdHJpbmcsIGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5mZXRjaE1hbnkoeyBxdWVyeTogb3B0aW9ucy5xdWVyeSwgbGltaXQ6IG9wdGlvbnMubGltaXQgPz8gMTAgfSk7XG4gIH1cblxuICAvKipcbiAgICogS2ljayBhIG1lbWJlclxuICAgKi9cbiAgYXN5bmMga2ljayhpZDogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoXG4gICAgICAnREVMRVRFJyxcbiAgICAgIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vbWVtYmVycy8ke2lkfWAsXG4gICAgICByZWFzb24gPyB7IHJlYXNvbiB9IDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZShpZCk7XG4gIH1cblxuICAvKipcbiAgICogQmFuIGEgbWVtYmVyXG4gICAqL1xuICBhc3luYyBiYW4oaWQ6IHN0cmluZywgb3B0aW9ucz86IHsgZGVsZXRlTWVzc2FnZURheXM/OiBudW1iZXI7IHJlYXNvbj86IHN0cmluZyB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KFxuICAgICAgJ1BVVCcsXG4gICAgICBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L2JhbnMvJHtpZH1gLFxuICAgICAge1xuICAgICAgICBkZWxldGVfbWVzc2FnZV9kYXlzOiBvcHRpb25zPy5kZWxldGVNZXNzYWdlRGF5cyxcbiAgICAgICAgcmVhc29uOiBvcHRpb25zPy5yZWFzb24sXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZShpZCk7XG4gIH1cblxuICAvKipcbiAgICogVW5iYW4gYSB1c2VyXG4gICAqL1xuICBhc3luYyB1bmJhbihpZDogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoXG4gICAgICAnREVMRVRFJyxcbiAgICAgIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vYmFucy8ke2lkfWAsXG4gICAgICByZWFzb24gPyB7IHJlYXNvbiB9IDogdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFZGl0IGEgbWVtYmVyXG4gICAqL1xuICBhc3luYyBlZGl0KGlkOiBzdHJpbmcsIGRhdGE6IHtcbiAgICBuaWNrPzogc3RyaW5nIHwgbnVsbDtcbiAgICByb2xlcz86IHN0cmluZ1tdO1xuICAgIG11dGU/OiBib29sZWFuO1xuICAgIGRlYWY/OiBib29sZWFuO1xuICAgIGNoYW5uZWxfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgIGNvbW11bmljYXRpb25fZGlzYWJsZWRfdW50aWw/OiBEYXRlIHwgbnVsbDtcbiAgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgYm9keTogYW55ID0ge307XG4gICAgaWYgKGRhdGEubmljayAhPT0gdW5kZWZpbmVkKSBib2R5Lm5pY2sgPSBkYXRhLm5pY2s7XG4gICAgaWYgKGRhdGEucm9sZXMgIT09IHVuZGVmaW5lZCkgYm9keS5yb2xlcyA9IGRhdGEucm9sZXM7XG4gICAgaWYgKGRhdGEubXV0ZSAhPT0gdW5kZWZpbmVkKSBib2R5Lm11dGUgPSBkYXRhLm11dGU7XG4gICAgaWYgKGRhdGEuZGVhZiAhPT0gdW5kZWZpbmVkKSBib2R5LmRlYWYgPSBkYXRhLmRlYWY7XG4gICAgaWYgKGRhdGEuY2hhbm5lbF9pZCAhPT0gdW5kZWZpbmVkKSBib2R5LmNoYW5uZWxfaWQgPSBkYXRhLmNoYW5uZWxfaWQ7XG4gICAgaWYgKGRhdGEuY29tbXVuaWNhdGlvbl9kaXNhYmxlZF91bnRpbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBib2R5LmNvbW11bmljYXRpb25fZGlzYWJsZWRfdW50aWwgPSBkYXRhLmNvbW11bmljYXRpb25fZGlzYWJsZWRfdW50aWw/LnRvSVNPU3RyaW5nKCkgPz8gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KFxuICAgICAgJ1BBVENIJyxcbiAgICAgIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vbWVtYmVycy8ke2lkfWAsXG4gICAgICBib2R5XG4gICAgKTtcbiAgICBcbiAgICByZXR1cm4gdGhpcy5fYWRkKHJlc3VsdCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcm9sZSB0byBhIG1lbWJlclxuICAgKi9cbiAgYXN5bmMgYWRkUm9sZShtZW1iZXJJZDogc3RyaW5nLCByb2xlSWQ6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KFxuICAgICAgJ1BVVCcsXG4gICAgICBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L21lbWJlcnMvJHttZW1iZXJJZH0vcm9sZXMvJHtyb2xlSWR9YCxcbiAgICAgIHJlYXNvbiA/IHsgcmVhc29uIH0gOiB1bmRlZmluZWRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHJvbGUgZnJvbSBhIG1lbWJlclxuICAgKi9cbiAgYXN5bmMgcmVtb3ZlUm9sZShtZW1iZXJJZDogc3RyaW5nLCByb2xlSWQ6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KFxuICAgICAgJ0RFTEVURScsXG4gICAgICBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L21lbWJlcnMvJHttZW1iZXJJZH0vcm9sZXMvJHtyb2xlSWR9YCxcbiAgICAgIHJlYXNvbiA/IHsgcmVhc29uIH0gOiB1bmRlZmluZWRcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEd1aWxkTWVtYmVyTWFuYWdlcjtcbiJdfQ==
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Manager for roles with caching and lazy loading
3
+ */
4
+ import { CachedManager } from './BaseManager';
5
+ import { Collection } from '../utils/Collection';
6
+ /**
7
+ * Manages roles for a guild
8
+ */
9
+ export class RoleManager extends CachedManager {
10
+ /** The guild this manager belongs to */
11
+ guild;
12
+ constructor(guild, iterable) {
13
+ super(guild.client, Object, iterable);
14
+ this.guild = guild;
15
+ }
16
+ /**
17
+ * Get the @everyone role
18
+ */
19
+ get everyone() {
20
+ return this.cache.get(this.guild.id) ?? null;
21
+ }
22
+ /**
23
+ * Get the highest role
24
+ */
25
+ get highest() {
26
+ return this.cache.reduce((prev, role) => (role.position > (prev?.position ?? -1)) ? role : prev, null);
27
+ }
28
+ /**
29
+ * Get the bot's highest role
30
+ */
31
+ get botRoleFor() {
32
+ return (userId) => {
33
+ const member = this.guild.members?.cache.get(userId);
34
+ if (!member)
35
+ return null;
36
+ return this.cache
37
+ .filter((role) => member.roles?.includes(role.id))
38
+ .sort((a, b) => b.position - a.position)
39
+ .first() ?? null;
40
+ };
41
+ }
42
+ /**
43
+ * Add a role to the cache
44
+ */
45
+ _add(data, cache = true) {
46
+ const id = data.id;
47
+ const existing = this.cache.get(id);
48
+ if (existing) {
49
+ if (cache)
50
+ Object.assign(existing, data);
51
+ return existing;
52
+ }
53
+ const role = {
54
+ id,
55
+ guildId: this.guild.id,
56
+ name: data.name,
57
+ color: data.color ?? 0,
58
+ hoist: data.hoist ?? false,
59
+ position: data.position ?? 0,
60
+ permissions: data.permissions ?? '0',
61
+ managed: data.managed ?? false,
62
+ mentionable: data.mentionable ?? false,
63
+ icon: data.icon ?? null,
64
+ unicodeEmoji: data.unicode_emoji ?? null,
65
+ tags: data.tags ?? null,
66
+ get hexColor() {
67
+ return `#${this.color.toString(16).padStart(6, '0')}`;
68
+ },
69
+ get createdAt() {
70
+ const timestamp = BigInt(this.id) >> 22n;
71
+ return new Date(Number(timestamp) + 1640995200000); // Jubbio epoch
72
+ },
73
+ toString() {
74
+ return this.id === this.guildId ? '@everyone' : `<@&${this.id}>`;
75
+ },
76
+ comparePositionTo(role) {
77
+ return this.position - (role?.position ?? 0);
78
+ },
79
+ async edit(data) {
80
+ return this.guild.roles.edit(this.id, data);
81
+ },
82
+ async delete(reason) {
83
+ return this.guild.roles.delete(this.id, reason);
84
+ },
85
+ async setPosition(position) {
86
+ return this.guild.roles.setPositions([{ role: this.id, position }]);
87
+ },
88
+ };
89
+ if (cache)
90
+ this.cache.set(id, role);
91
+ return role;
92
+ }
93
+ /**
94
+ * Fetch a role from the API
95
+ */
96
+ async fetch(id, options) {
97
+ if (!options?.force) {
98
+ const existing = this.cache.get(id);
99
+ if (existing)
100
+ return existing;
101
+ }
102
+ // Roles are fetched as part of guild, so fetch all
103
+ const roles = await this.fetchAll();
104
+ return roles.get(id) ?? null;
105
+ }
106
+ /**
107
+ * Fetch all roles for the guild
108
+ */
109
+ async fetchAll() {
110
+ const data = await this.client.rest.request('GET', `/guilds/${this.guild.id}/roles`);
111
+ const roles = new Collection();
112
+ for (const roleData of data) {
113
+ const role = this._add(roleData);
114
+ roles.set(role.id, role);
115
+ }
116
+ return roles;
117
+ }
118
+ /**
119
+ * Create a new role
120
+ */
121
+ async create(options) {
122
+ const body = {};
123
+ if (options?.name)
124
+ body.name = options.name;
125
+ if (options?.color !== undefined) {
126
+ body.color = typeof options.color === 'string'
127
+ ? parseInt(options.color.replace('#', ''), 16)
128
+ : options.color;
129
+ }
130
+ if (options?.hoist !== undefined)
131
+ body.hoist = options.hoist;
132
+ if (options?.permissions !== undefined)
133
+ body.permissions = String(options.permissions);
134
+ if (options?.mentionable !== undefined)
135
+ body.mentionable = options.mentionable;
136
+ if (options?.icon)
137
+ body.icon = options.icon;
138
+ if (options?.unicodeEmoji)
139
+ body.unicode_emoji = options.unicodeEmoji;
140
+ const data = await this.client.rest.request('POST', `/guilds/${this.guild.id}/roles`, body);
141
+ const role = this._add(data);
142
+ // Set position if specified
143
+ if (options?.position !== undefined) {
144
+ await this.setPositions([{ role: role.id, position: options.position }]);
145
+ }
146
+ return role;
147
+ }
148
+ /**
149
+ * Delete a role
150
+ */
151
+ async delete(id, reason) {
152
+ await this.client.rest.request('DELETE', `/guilds/${this.guild.id}/roles/${id}`, reason ? { reason } : undefined);
153
+ this.cache.delete(id);
154
+ }
155
+ /**
156
+ * Edit a role
157
+ */
158
+ async edit(id, data) {
159
+ const body = {};
160
+ if (data.name !== undefined)
161
+ body.name = data.name;
162
+ if (data.color !== undefined) {
163
+ body.color = typeof data.color === 'string'
164
+ ? parseInt(data.color.replace('#', ''), 16)
165
+ : data.color;
166
+ }
167
+ if (data.hoist !== undefined)
168
+ body.hoist = data.hoist;
169
+ if (data.permissions !== undefined)
170
+ body.permissions = String(data.permissions);
171
+ if (data.mentionable !== undefined)
172
+ body.mentionable = data.mentionable;
173
+ if (data.icon !== undefined)
174
+ body.icon = data.icon;
175
+ if (data.unicodeEmoji !== undefined)
176
+ body.unicode_emoji = data.unicodeEmoji;
177
+ const result = await this.client.rest.request('PATCH', `/guilds/${this.guild.id}/roles/${id}`, body);
178
+ return this._add(result);
179
+ }
180
+ /**
181
+ * Set role positions
182
+ */
183
+ async setPositions(positions) {
184
+ const body = positions.map(p => ({ id: p.role, position: p.position }));
185
+ const data = await this.client.rest.request('PATCH', `/guilds/${this.guild.id}/roles`, body);
186
+ const roles = new Collection();
187
+ for (const roleData of data) {
188
+ const role = this._add(roleData);
189
+ roles.set(role.id, role);
190
+ }
191
+ return roles;
192
+ }
193
+ /**
194
+ * Compare two roles by position
195
+ */
196
+ comparePositions(role1, role2) {
197
+ const r1 = typeof role1 === 'string' ? this.cache.get(role1) : role1;
198
+ const r2 = typeof role2 === 'string' ? this.cache.get(role2) : role2;
199
+ return (r1?.position ?? 0) - (r2?.position ?? 0);
200
+ }
201
+ }
202
+ export default RoleManager;
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm9sZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFuYWdlcnMvUm9sZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRDs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsYUFBMEI7SUFDekQsd0NBQXdDO0lBQ3hCLEtBQUssQ0FBTTtJQUUzQixZQUFZLEtBQVUsRUFBRSxRQUF3QjtRQUM5QyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQ3RDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDdEQsSUFBVyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxDQUFDLE1BQWMsRUFBRSxFQUFFO1lBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUMsS0FBSztpQkFDZCxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDdEQsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO2lCQUNqRCxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDckIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLElBQVMsRUFBRSxLQUFLLEdBQUcsSUFBSTtRQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLEtBQUs7Z0JBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekMsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHO1lBQ1gsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQztZQUN0QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLO1lBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUM7WUFDNUIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksR0FBRztZQUNwQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLO1lBQzlCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLEtBQUs7WUFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSTtZQUN2QixZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJO1lBQ3hDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUk7WUFFdkIsSUFBSSxRQUFRO2dCQUNWLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEQsQ0FBQztZQUVELElBQUksU0FBUztnQkFDWCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQztnQkFDekMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxlQUFlO1lBQ3JFLENBQUM7WUFFRCxRQUFRO2dCQUNOLE9BQU8sSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDO1lBQ25FLENBQUM7WUFFRCxpQkFBaUIsQ0FBQyxJQUFTO2dCQUN6QixPQUFPLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQVM7Z0JBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBZTtnQkFDMUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtnQkFDaEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDO1NBQ0YsQ0FBQztRQUVGLElBQUksS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBVSxFQUFFLE9BQThDO1FBQ3BFLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEMsSUFBSSxRQUFRO2dCQUFFLE9BQU8sUUFBUSxDQUFDO1FBQ2hDLENBQUM7UUFFRCxtREFBbUQ7UUFDbkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNyRixNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsRUFBZSxDQUFDO1FBQzVDLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQVVaO1FBQ0MsTUFBTSxJQUFJLEdBQVEsRUFBRSxDQUFDO1FBQ3JCLElBQUksT0FBTyxFQUFFLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxPQUFPLEVBQUUsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVE7Z0JBQzVDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDOUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLEtBQUssS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzdELElBQUksT0FBTyxFQUFFLFdBQVcsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksT0FBTyxFQUFFLFdBQVcsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQy9FLElBQUksT0FBTyxFQUFFLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxPQUFPLEVBQUUsWUFBWTtZQUFFLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUVyRSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0IsNEJBQTRCO1FBQzVCLElBQUksT0FBTyxFQUFFLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBVSxFQUFFLE1BQWU7UUFDdEMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQzdFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUNoQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFVLEVBQUUsSUFVdEI7UUFDQyxNQUFNLElBQUksR0FBUSxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVE7Z0JBQ3pDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDM0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hGLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3hFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRTVFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JHLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQW9EO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3RixNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsRUFBZSxDQUFDO1FBQzVDLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsS0FBbUIsRUFBRSxLQUFtQjtRQUN2RCxNQUFNLEVBQUUsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDckUsTUFBTSxFQUFFLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0Y7QUFFRCxlQUFlLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWFuYWdlciBmb3Igcm9sZXMgd2l0aCBjYWNoaW5nIGFuZCBsYXp5IGxvYWRpbmdcbiAqL1xuXG5pbXBvcnQgeyBDYWNoZWRNYW5hZ2VyIH0gZnJvbSAnLi9CYXNlTWFuYWdlcic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMvQ29sbGVjdGlvbic7XG5cbi8qKlxuICogTWFuYWdlcyByb2xlcyBmb3IgYSBndWlsZFxuICovXG5leHBvcnQgY2xhc3MgUm9sZU1hbmFnZXIgZXh0ZW5kcyBDYWNoZWRNYW5hZ2VyPHN0cmluZywgYW55PiB7XG4gIC8qKiBUaGUgZ3VpbGQgdGhpcyBtYW5hZ2VyIGJlbG9uZ3MgdG8gKi9cbiAgcHVibGljIHJlYWRvbmx5IGd1aWxkOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoZ3VpbGQ6IGFueSwgaXRlcmFibGU/OiBJdGVyYWJsZTxhbnk+KSB7XG4gICAgc3VwZXIoZ3VpbGQuY2xpZW50LCBPYmplY3QgYXMgYW55LCBpdGVyYWJsZSk7XG4gICAgdGhpcy5ndWlsZCA9IGd1aWxkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgQGV2ZXJ5b25lIHJvbGVcbiAgICovXG4gIGdldCBldmVyeW9uZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmNhY2hlLmdldCh0aGlzLmd1aWxkLmlkKSA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaGlnaGVzdCByb2xlXG4gICAqL1xuICBnZXQgaGlnaGVzdCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmNhY2hlLnJlZHVjZSgocHJldiwgcm9sZSkgPT4gXG4gICAgICAocm9sZS5wb3NpdGlvbiA+IChwcmV2Py5wb3NpdGlvbiA/PyAtMSkpID8gcm9sZSA6IHByZXZcbiAgICAsIG51bGwgYXMgYW55KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJvdCdzIGhpZ2hlc3Qgcm9sZVxuICAgKi9cbiAgZ2V0IGJvdFJvbGVGb3IoKTogKHVzZXJJZDogc3RyaW5nKSA9PiBhbnkgfCBudWxsIHtcbiAgICByZXR1cm4gKHVzZXJJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBtZW1iZXIgPSB0aGlzLmd1aWxkLm1lbWJlcnM/LmNhY2hlLmdldCh1c2VySWQpO1xuICAgICAgaWYgKCFtZW1iZXIpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVcbiAgICAgICAgLmZpbHRlcigocm9sZTogYW55KSA9PiBtZW1iZXIucm9sZXM/LmluY2x1ZGVzKHJvbGUuaWQpKVxuICAgICAgICAuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGIucG9zaXRpb24gLSBhLnBvc2l0aW9uKVxuICAgICAgICAuZmlyc3QoKSA/PyBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcm9sZSB0byB0aGUgY2FjaGVcbiAgICovXG4gIF9hZGQoZGF0YTogYW55LCBjYWNoZSA9IHRydWUpOiBhbnkge1xuICAgIGNvbnN0IGlkID0gZGF0YS5pZDtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuY2FjaGUuZ2V0KGlkKTtcbiAgICBcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIGlmIChjYWNoZSkgT2JqZWN0LmFzc2lnbihleGlzdGluZywgZGF0YSk7XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHJvbGUgPSB7XG4gICAgICBpZCxcbiAgICAgIGd1aWxkSWQ6IHRoaXMuZ3VpbGQuaWQsXG4gICAgICBuYW1lOiBkYXRhLm5hbWUsXG4gICAgICBjb2xvcjogZGF0YS5jb2xvciA/PyAwLFxuICAgICAgaG9pc3Q6IGRhdGEuaG9pc3QgPz8gZmFsc2UsXG4gICAgICBwb3NpdGlvbjogZGF0YS5wb3NpdGlvbiA/PyAwLFxuICAgICAgcGVybWlzc2lvbnM6IGRhdGEucGVybWlzc2lvbnMgPz8gJzAnLFxuICAgICAgbWFuYWdlZDogZGF0YS5tYW5hZ2VkID8/IGZhbHNlLFxuICAgICAgbWVudGlvbmFibGU6IGRhdGEubWVudGlvbmFibGUgPz8gZmFsc2UsXG4gICAgICBpY29uOiBkYXRhLmljb24gPz8gbnVsbCxcbiAgICAgIHVuaWNvZGVFbW9qaTogZGF0YS51bmljb2RlX2Vtb2ppID8/IG51bGwsXG4gICAgICB0YWdzOiBkYXRhLnRhZ3MgPz8gbnVsbCxcbiAgICAgIFxuICAgICAgZ2V0IGhleENvbG9yKCkge1xuICAgICAgICByZXR1cm4gYCMke3RoaXMuY29sb3IudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDYsICcwJyl9YDtcbiAgICAgIH0sXG4gICAgICBcbiAgICAgIGdldCBjcmVhdGVkQXQoKSB7XG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IEJpZ0ludCh0aGlzLmlkKSA+PiAyMm47XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShOdW1iZXIodGltZXN0YW1wKSArIDE2NDA5OTUyMDAwMDApOyAvLyBKdWJiaW8gZXBvY2hcbiAgICAgIH0sXG4gICAgICBcbiAgICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCA9PT0gdGhpcy5ndWlsZElkID8gJ0BldmVyeW9uZScgOiBgPEAmJHt0aGlzLmlkfT5gO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgY29tcGFyZVBvc2l0aW9uVG8ocm9sZTogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uIC0gKHJvbGU/LnBvc2l0aW9uID8/IDApO1xuICAgICAgfSxcbiAgICAgIFxuICAgICAgYXN5bmMgZWRpdChkYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3VpbGQucm9sZXMuZWRpdCh0aGlzLmlkLCBkYXRhKTtcbiAgICAgIH0sXG4gICAgICBcbiAgICAgIGFzeW5jIGRlbGV0ZShyZWFzb24/OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3VpbGQucm9sZXMuZGVsZXRlKHRoaXMuaWQsIHJlYXNvbik7XG4gICAgICB9LFxuICAgICAgXG4gICAgICBhc3luYyBzZXRQb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd1aWxkLnJvbGVzLnNldFBvc2l0aW9ucyhbeyByb2xlOiB0aGlzLmlkLCBwb3NpdGlvbiB9XSk7XG4gICAgICB9LFxuICAgIH07XG4gICAgXG4gICAgaWYgKGNhY2hlKSB0aGlzLmNhY2hlLnNldChpZCwgcm9sZSk7XG4gICAgcmV0dXJuIHJvbGU7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYSByb2xlIGZyb20gdGhlIEFQSVxuICAgKi9cbiAgYXN5bmMgZmV0Y2goaWQ6IHN0cmluZywgb3B0aW9ucz86IHsgY2FjaGU/OiBib29sZWFuOyBmb3JjZT86IGJvb2xlYW4gfSk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCFvcHRpb25zPy5mb3JjZSkge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmNhY2hlLmdldChpZCk7XG4gICAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcbiAgICB9XG4gICAgXG4gICAgLy8gUm9sZXMgYXJlIGZldGNoZWQgYXMgcGFydCBvZiBndWlsZCwgc28gZmV0Y2ggYWxsXG4gICAgY29uc3Qgcm9sZXMgPSBhd2FpdCB0aGlzLmZldGNoQWxsKCk7XG4gICAgcmV0dXJuIHJvbGVzLmdldChpZCkgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhbGwgcm9sZXMgZm9yIHRoZSBndWlsZFxuICAgKi9cbiAgYXN5bmMgZmV0Y2hBbGwoKTogUHJvbWlzZTxDb2xsZWN0aW9uPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoJ0dFVCcsIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vcm9sZXNgKTtcbiAgICBjb25zdCByb2xlcyA9IG5ldyBDb2xsZWN0aW9uPHN0cmluZywgYW55PigpO1xuICAgIGZvciAoY29uc3Qgcm9sZURhdGEgb2YgZGF0YSkge1xuICAgICAgY29uc3Qgcm9sZSA9IHRoaXMuX2FkZChyb2xlRGF0YSk7XG4gICAgICByb2xlcy5zZXQocm9sZS5pZCwgcm9sZSk7XG4gICAgfVxuICAgIHJldHVybiByb2xlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcm9sZVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKG9wdGlvbnM/OiB7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBjb2xvcj86IG51bWJlciB8IHN0cmluZztcbiAgICBob2lzdD86IGJvb2xlYW47XG4gICAgcG9zaXRpb24/OiBudW1iZXI7XG4gICAgcGVybWlzc2lvbnM/OiBzdHJpbmcgfCBiaWdpbnQ7XG4gICAgbWVudGlvbmFibGU/OiBib29sZWFuO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgdW5pY29kZUVtb2ppPzogc3RyaW5nO1xuICAgIHJlYXNvbj86IHN0cmluZztcbiAgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgYm9keTogYW55ID0ge307XG4gICAgaWYgKG9wdGlvbnM/Lm5hbWUpIGJvZHkubmFtZSA9IG9wdGlvbnMubmFtZTtcbiAgICBpZiAob3B0aW9ucz8uY29sb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYm9keS5jb2xvciA9IHR5cGVvZiBvcHRpb25zLmNvbG9yID09PSAnc3RyaW5nJyBcbiAgICAgICAgPyBwYXJzZUludChvcHRpb25zLmNvbG9yLnJlcGxhY2UoJyMnLCAnJyksIDE2KSBcbiAgICAgICAgOiBvcHRpb25zLmNvbG9yO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucz8uaG9pc3QgIT09IHVuZGVmaW5lZCkgYm9keS5ob2lzdCA9IG9wdGlvbnMuaG9pc3Q7XG4gICAgaWYgKG9wdGlvbnM/LnBlcm1pc3Npb25zICE9PSB1bmRlZmluZWQpIGJvZHkucGVybWlzc2lvbnMgPSBTdHJpbmcob3B0aW9ucy5wZXJtaXNzaW9ucyk7XG4gICAgaWYgKG9wdGlvbnM/Lm1lbnRpb25hYmxlICE9PSB1bmRlZmluZWQpIGJvZHkubWVudGlvbmFibGUgPSBvcHRpb25zLm1lbnRpb25hYmxlO1xuICAgIGlmIChvcHRpb25zPy5pY29uKSBib2R5Lmljb24gPSBvcHRpb25zLmljb247XG4gICAgaWYgKG9wdGlvbnM/LnVuaWNvZGVFbW9qaSkgYm9keS51bmljb2RlX2Vtb2ppID0gb3B0aW9ucy51bmljb2RlRW1vamk7XG4gICAgXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdCgnUE9TVCcsIGAvZ3VpbGRzLyR7dGhpcy5ndWlsZC5pZH0vcm9sZXNgLCBib2R5KTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5fYWRkKGRhdGEpO1xuICAgIFxuICAgIC8vIFNldCBwb3NpdGlvbiBpZiBzcGVjaWZpZWRcbiAgICBpZiAob3B0aW9ucz8ucG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5zZXRQb3NpdGlvbnMoW3sgcm9sZTogcm9sZS5pZCwgcG9zaXRpb246IG9wdGlvbnMucG9zaXRpb24gfV0pO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gcm9sZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSByb2xlXG4gICAqL1xuICBhc3luYyBkZWxldGUoaWQ6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KCdERUxFVEUnLCBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L3JvbGVzLyR7aWR9YCwgXG4gICAgICByZWFzb24gPyB7IHJlYXNvbiB9IDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZShpZCk7XG4gIH1cblxuICAvKipcbiAgICogRWRpdCBhIHJvbGVcbiAgICovXG4gIGFzeW5jIGVkaXQoaWQ6IHN0cmluZywgZGF0YToge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgY29sb3I/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgaG9pc3Q/OiBib29sZWFuO1xuICAgIHBvc2l0aW9uPzogbnVtYmVyO1xuICAgIHBlcm1pc3Npb25zPzogc3RyaW5nIHwgYmlnaW50O1xuICAgIG1lbnRpb25hYmxlPzogYm9vbGVhbjtcbiAgICBpY29uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB1bmljb2RlRW1vamk/OiBzdHJpbmcgfCBudWxsO1xuICAgIHJlYXNvbj86IHN0cmluZztcbiAgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgYm9keTogYW55ID0ge307XG4gICAgaWYgKGRhdGEubmFtZSAhPT0gdW5kZWZpbmVkKSBib2R5Lm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgaWYgKGRhdGEuY29sb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYm9keS5jb2xvciA9IHR5cGVvZiBkYXRhLmNvbG9yID09PSAnc3RyaW5nJyBcbiAgICAgICAgPyBwYXJzZUludChkYXRhLmNvbG9yLnJlcGxhY2UoJyMnLCAnJyksIDE2KSBcbiAgICAgICAgOiBkYXRhLmNvbG9yO1xuICAgIH1cbiAgICBpZiAoZGF0YS5ob2lzdCAhPT0gdW5kZWZpbmVkKSBib2R5LmhvaXN0ID0gZGF0YS5ob2lzdDtcbiAgICBpZiAoZGF0YS5wZXJtaXNzaW9ucyAhPT0gdW5kZWZpbmVkKSBib2R5LnBlcm1pc3Npb25zID0gU3RyaW5nKGRhdGEucGVybWlzc2lvbnMpO1xuICAgIGlmIChkYXRhLm1lbnRpb25hYmxlICE9PSB1bmRlZmluZWQpIGJvZHkubWVudGlvbmFibGUgPSBkYXRhLm1lbnRpb25hYmxlO1xuICAgIGlmIChkYXRhLmljb24gIT09IHVuZGVmaW5lZCkgYm9keS5pY29uID0gZGF0YS5pY29uO1xuICAgIGlmIChkYXRhLnVuaWNvZGVFbW9qaSAhPT0gdW5kZWZpbmVkKSBib2R5LnVuaWNvZGVfZW1vamkgPSBkYXRhLnVuaWNvZGVFbW9qaTtcbiAgICBcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoJ1BBVENIJywgYC9ndWlsZHMvJHt0aGlzLmd1aWxkLmlkfS9yb2xlcy8ke2lkfWAsIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLl9hZGQocmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgcm9sZSBwb3NpdGlvbnNcbiAgICovXG4gIGFzeW5jIHNldFBvc2l0aW9ucyhwb3NpdGlvbnM6IEFycmF5PHsgcm9sZTogc3RyaW5nOyBwb3NpdGlvbjogbnVtYmVyIH0+KTogUHJvbWlzZTxDb2xsZWN0aW9uPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IGJvZHkgPSBwb3NpdGlvbnMubWFwKHAgPT4gKHsgaWQ6IHAucm9sZSwgcG9zaXRpb246IHAucG9zaXRpb24gfSkpO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoJ1BBVENIJywgYC9ndWlsZHMvJHt0aGlzLmd1aWxkLmlkfS9yb2xlc2AsIGJvZHkpO1xuICAgIFxuICAgIGNvbnN0IHJvbGVzID0gbmV3IENvbGxlY3Rpb248c3RyaW5nLCBhbnk+KCk7XG4gICAgZm9yIChjb25zdCByb2xlRGF0YSBvZiBkYXRhKSB7XG4gICAgICBjb25zdCByb2xlID0gdGhpcy5fYWRkKHJvbGVEYXRhKTtcbiAgICAgIHJvbGVzLnNldChyb2xlLmlkLCByb2xlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvbGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdHdvIHJvbGVzIGJ5IHBvc2l0aW9uXG4gICAqL1xuICBjb21wYXJlUG9zaXRpb25zKHJvbGUxOiBzdHJpbmcgfCBhbnksIHJvbGUyOiBzdHJpbmcgfCBhbnkpOiBudW1iZXIge1xuICAgIGNvbnN0IHIxID0gdHlwZW9mIHJvbGUxID09PSAnc3RyaW5nJyA/IHRoaXMuY2FjaGUuZ2V0KHJvbGUxKSA6IHJvbGUxO1xuICAgIGNvbnN0IHIyID0gdHlwZW9mIHJvbGUyID09PSAnc3RyaW5nJyA/IHRoaXMuY2FjaGUuZ2V0KHJvbGUyKSA6IHJvbGUyO1xuICAgIHJldHVybiAocjE/LnBvc2l0aW9uID8/IDApIC0gKHIyPy5wb3NpdGlvbiA/PyAwKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSb2xlTWFuYWdlcjtcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Manager exports
3
+ */
4
+ export * from './BaseManager';
5
+ export * from './GuildMemberManager';
6
+ export * from './ChannelManager';
7
+ export * from './RoleManager';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFuYWdlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1hbmFnZXIgZXhwb3J0c1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vQmFzZU1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9HdWlsZE1lbWJlck1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9DaGFubmVsTWFuYWdlcic7XG5leHBvcnQgKiBmcm9tICcuL1JvbGVNYW5hZ2VyJztcbiJdfQ==