@jubbio/core 1.0.0
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.
- package/LICENSE +21 -0
- package/README.md +166 -0
- package/dist/Client.d.ts +147 -0
- package/dist/Client.js +471 -0
- package/dist/builders/ActionRowBuilder.d.ts +53 -0
- package/dist/builders/ActionRowBuilder.js +68 -0
- package/dist/builders/ButtonBuilder.d.ts +77 -0
- package/dist/builders/ButtonBuilder.js +96 -0
- package/dist/builders/EmbedBuilder.d.ts +157 -0
- package/dist/builders/EmbedBuilder.js +199 -0
- package/dist/builders/ModalBuilder.d.ts +122 -0
- package/dist/builders/ModalBuilder.js +162 -0
- package/dist/builders/SelectMenuBuilder.d.ts +123 -0
- package/dist/builders/SelectMenuBuilder.js +165 -0
- package/dist/builders/SlashCommandBuilder.d.ts +197 -0
- package/dist/builders/SlashCommandBuilder.js +324 -0
- package/dist/builders/index.d.ts +9 -0
- package/dist/builders/index.js +26 -0
- package/dist/enums.d.ts +196 -0
- package/dist/enums.js +216 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +128 -0
- package/dist/managers/BaseManager.d.ts +69 -0
- package/dist/managers/BaseManager.js +106 -0
- package/dist/managers/ChannelManager.d.ts +98 -0
- package/dist/managers/ChannelManager.js +209 -0
- package/dist/managers/GuildMemberManager.d.ts +74 -0
- package/dist/managers/GuildMemberManager.js +156 -0
- package/dist/managers/RoleManager.d.ts +84 -0
- package/dist/managers/RoleManager.js +207 -0
- package/dist/managers/index.d.ts +7 -0
- package/dist/managers/index.js +24 -0
- package/dist/rest/REST.d.ts +483 -0
- package/dist/rest/REST.js +805 -0
- package/dist/rest/index.d.ts +1 -0
- package/dist/rest/index.js +18 -0
- package/dist/sharding/ShardingManager.d.ts +179 -0
- package/dist/sharding/ShardingManager.js +375 -0
- package/dist/sharding/index.d.ts +4 -0
- package/dist/sharding/index.js +21 -0
- package/dist/structures/Channel.d.ts +120 -0
- package/dist/structures/Channel.js +224 -0
- package/dist/structures/Collection.d.ts +53 -0
- package/dist/structures/Collection.js +115 -0
- package/dist/structures/Guild.d.ts +59 -0
- package/dist/structures/Guild.js +90 -0
- package/dist/structures/GuildMember.d.ts +130 -0
- package/dist/structures/GuildMember.js +208 -0
- package/dist/structures/Interaction.d.ts +224 -0
- package/dist/structures/Interaction.js +404 -0
- package/dist/structures/Message.d.ts +93 -0
- package/dist/structures/Message.js +145 -0
- package/dist/structures/User.d.ts +37 -0
- package/dist/structures/User.js +65 -0
- package/dist/structures/index.d.ts +7 -0
- package/dist/structures/index.js +25 -0
- package/dist/structures.d.ts +1 -0
- package/dist/structures.js +19 -0
- package/dist/types.d.ts +255 -0
- package/dist/types.js +3 -0
- package/dist/utils/BitField.d.ts +66 -0
- package/dist/utils/BitField.js +138 -0
- package/dist/utils/Collection.d.ts +116 -0
- package/dist/utils/Collection.js +265 -0
- package/dist/utils/Collector.d.ts +152 -0
- package/dist/utils/Collector.js +314 -0
- package/dist/utils/DataResolver.d.ts +61 -0
- package/dist/utils/DataResolver.js +146 -0
- package/dist/utils/Formatters.d.ts +145 -0
- package/dist/utils/Formatters.js +213 -0
- package/dist/utils/IntentsBitField.d.ts +85 -0
- package/dist/utils/IntentsBitField.js +99 -0
- package/dist/utils/Partials.d.ts +105 -0
- package/dist/utils/Partials.js +149 -0
- package/dist/utils/PermissionsBitField.d.ts +118 -0
- package/dist/utils/PermissionsBitField.js +145 -0
- package/dist/utils/SnowflakeUtil.d.ts +63 -0
- package/dist/utils/SnowflakeUtil.js +93 -0
- package/dist/utils/Sweepers.d.ts +127 -0
- package/dist/utils/Sweepers.js +270 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.js +30 -0
- package/package.json +37 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base manager class for caching and managing structures
|
|
3
|
+
*/
|
|
4
|
+
import { Collection } from '../utils/Collection';
|
|
5
|
+
/**
|
|
6
|
+
* Base manager for caching structures
|
|
7
|
+
*/
|
|
8
|
+
export declare abstract class BaseManager<K extends string, V, R = V> {
|
|
9
|
+
/** The client that instantiated this manager */
|
|
10
|
+
readonly client: any;
|
|
11
|
+
/** The cache of items */
|
|
12
|
+
readonly cache: Collection<K, V>;
|
|
13
|
+
/** The class to instantiate for items */
|
|
14
|
+
protected readonly holds: new (...args: any[]) => V;
|
|
15
|
+
constructor(client: any, holds: new (...args: any[]) => V, iterable?: Iterable<R>);
|
|
16
|
+
/**
|
|
17
|
+
* Add an item to the cache
|
|
18
|
+
*/
|
|
19
|
+
abstract _add(data: any, cache?: boolean, options?: {
|
|
20
|
+
id?: K;
|
|
21
|
+
extras?: any[];
|
|
22
|
+
}): V;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve an item from the cache or ID
|
|
25
|
+
*/
|
|
26
|
+
resolve(idOrInstance: K | V): V | null;
|
|
27
|
+
/**
|
|
28
|
+
* Resolve an ID from an item or ID
|
|
29
|
+
*/
|
|
30
|
+
resolveId(idOrInstance: K | V | {
|
|
31
|
+
id: K;
|
|
32
|
+
}): K | null;
|
|
33
|
+
/**
|
|
34
|
+
* Get the cache as a JSON array
|
|
35
|
+
*/
|
|
36
|
+
valueOf(): V[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Caching manager that fetches data from the API
|
|
40
|
+
*/
|
|
41
|
+
export declare abstract class CachedManager<K extends string, V, R = V> extends BaseManager<K, V, R> {
|
|
42
|
+
/**
|
|
43
|
+
* Fetch an item from the API
|
|
44
|
+
*/
|
|
45
|
+
abstract fetch(id: K, options?: {
|
|
46
|
+
cache?: boolean;
|
|
47
|
+
force?: boolean;
|
|
48
|
+
}): Promise<V>;
|
|
49
|
+
/**
|
|
50
|
+
* Fetch an item, using cache if available (async version)
|
|
51
|
+
*/
|
|
52
|
+
resolveAsync(idOrInstance: K | V, options?: {
|
|
53
|
+
cache?: boolean;
|
|
54
|
+
force?: boolean;
|
|
55
|
+
}): Promise<V | null>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Data manager that doesn't cache
|
|
59
|
+
*/
|
|
60
|
+
export declare abstract class DataManager<K extends string, V, R = V> extends BaseManager<K, V, R> {
|
|
61
|
+
/**
|
|
62
|
+
* Add an item to the cache
|
|
63
|
+
*/
|
|
64
|
+
_add(data: any, cache?: boolean, options?: {
|
|
65
|
+
id?: K;
|
|
66
|
+
extras?: any[];
|
|
67
|
+
}): V;
|
|
68
|
+
}
|
|
69
|
+
export default BaseManager;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base manager class for caching and managing structures
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DataManager = exports.CachedManager = exports.BaseManager = void 0;
|
|
7
|
+
const Collection_1 = require("../utils/Collection");
|
|
8
|
+
/**
|
|
9
|
+
* Base manager for caching structures
|
|
10
|
+
*/
|
|
11
|
+
class BaseManager {
|
|
12
|
+
/** The client that instantiated this manager */
|
|
13
|
+
client;
|
|
14
|
+
/** The cache of items */
|
|
15
|
+
cache;
|
|
16
|
+
/** The class to instantiate for items */
|
|
17
|
+
holds;
|
|
18
|
+
constructor(client, holds, iterable) {
|
|
19
|
+
this.client = client;
|
|
20
|
+
this.holds = holds;
|
|
21
|
+
this.cache = new Collection_1.Collection();
|
|
22
|
+
if (iterable) {
|
|
23
|
+
for (const item of iterable) {
|
|
24
|
+
this._add(item);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolve an item from the cache or ID
|
|
30
|
+
*/
|
|
31
|
+
resolve(idOrInstance) {
|
|
32
|
+
if (idOrInstance instanceof this.holds)
|
|
33
|
+
return idOrInstance;
|
|
34
|
+
if (typeof idOrInstance === 'string')
|
|
35
|
+
return this.cache.get(idOrInstance) ?? null;
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Resolve an ID from an item or ID
|
|
40
|
+
*/
|
|
41
|
+
resolveId(idOrInstance) {
|
|
42
|
+
if (idOrInstance instanceof this.holds)
|
|
43
|
+
return idOrInstance.id;
|
|
44
|
+
if (typeof idOrInstance === 'string')
|
|
45
|
+
return idOrInstance;
|
|
46
|
+
if (typeof idOrInstance === 'object' && idOrInstance !== null && 'id' in idOrInstance) {
|
|
47
|
+
return idOrInstance.id;
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get the cache as a JSON array
|
|
53
|
+
*/
|
|
54
|
+
valueOf() {
|
|
55
|
+
return [...this.cache.values()];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.BaseManager = BaseManager;
|
|
59
|
+
/**
|
|
60
|
+
* Caching manager that fetches data from the API
|
|
61
|
+
*/
|
|
62
|
+
class CachedManager extends BaseManager {
|
|
63
|
+
/**
|
|
64
|
+
* Fetch an item, using cache if available (async version)
|
|
65
|
+
*/
|
|
66
|
+
async resolveAsync(idOrInstance, options) {
|
|
67
|
+
const existing = super.resolve(idOrInstance);
|
|
68
|
+
if (existing && !options?.force)
|
|
69
|
+
return existing;
|
|
70
|
+
const id = this.resolveId(idOrInstance);
|
|
71
|
+
if (!id)
|
|
72
|
+
return null;
|
|
73
|
+
try {
|
|
74
|
+
return await this.fetch(id, options);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.CachedManager = CachedManager;
|
|
82
|
+
/**
|
|
83
|
+
* Data manager that doesn't cache
|
|
84
|
+
*/
|
|
85
|
+
class DataManager extends BaseManager {
|
|
86
|
+
/**
|
|
87
|
+
* Add an item to the cache
|
|
88
|
+
*/
|
|
89
|
+
_add(data, cache = true, options) {
|
|
90
|
+
const existing = this.cache.get(options?.id ?? data.id);
|
|
91
|
+
if (existing) {
|
|
92
|
+
if (cache) {
|
|
93
|
+
existing._patch?.(data);
|
|
94
|
+
}
|
|
95
|
+
return existing;
|
|
96
|
+
}
|
|
97
|
+
const entry = new this.holds(this.client, data, ...(options?.extras ?? []));
|
|
98
|
+
if (cache) {
|
|
99
|
+
this.cache.set(options?.id ?? data.id, entry);
|
|
100
|
+
}
|
|
101
|
+
return entry;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.DataManager = DataManager;
|
|
105
|
+
exports.default = BaseManager;
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlcnMvQmFzZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCxvREFBaUQ7QUFFakQ7O0dBRUc7QUFDSCxNQUFzQixXQUFXO0lBQy9CLGdEQUFnRDtJQUNoQyxNQUFNLENBQU07SUFFNUIseUJBQXlCO0lBQ1QsS0FBSyxDQUFtQjtJQUV4Qyx5Q0FBeUM7SUFDdEIsS0FBSyxDQUE0QjtJQUVwRCxZQUFZLE1BQVcsRUFBRSxLQUFnQyxFQUFFLFFBQXNCO1FBQy9FLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSx1QkFBVSxFQUFRLENBQUM7UUFFcEMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBVyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBT0Q7O09BRUc7SUFDSCxPQUFPLENBQUMsWUFBbUI7UUFDekIsSUFBSSxZQUFZLFlBQVksSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLFlBQVksQ0FBQztRQUM1RCxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQWlCLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDdkYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsWUFBK0I7UUFDdkMsSUFBSSxZQUFZLFlBQVksSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFRLFlBQW9CLENBQUMsRUFBRSxDQUFDO1FBQ3hFLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUTtZQUFFLE9BQU8sWUFBaUIsQ0FBQztRQUMvRCxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsSUFBSSxZQUFZLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN0RixPQUFPLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUF0REQsa0NBc0RDO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixhQUEwQyxTQUFRLFdBQW9CO0lBTTFGOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFtQixFQUFFLE9BQThDO1FBQ3BGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0MsSUFBSSxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSztZQUFFLE9BQU8sUUFBUSxDQUFDO1FBRWpELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVyQixJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXRCRCxzQ0FzQkM7QUFFRDs7R0FFRztBQUNILE1BQXNCLFdBQXdDLFNBQVEsV0FBb0I7SUFDeEY7O09BRUc7SUFDSCxJQUFJLENBQUMsSUFBUyxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsT0FBb0M7UUFDaEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1QsUUFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBbkJELGtDQW1CQztBQUVELGtCQUFlLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBCYXNlIG1hbmFnZXIgY2xhc3MgZm9yIGNhY2hpbmcgYW5kIG1hbmFnaW5nIHN0cnVjdHVyZXNcclxuICovXHJcblxyXG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vdXRpbHMvQ29sbGVjdGlvbic7XHJcblxyXG4vKipcclxuICogQmFzZSBtYW5hZ2VyIGZvciBjYWNoaW5nIHN0cnVjdHVyZXNcclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTWFuYWdlcjxLIGV4dGVuZHMgc3RyaW5nLCBWLCBSID0gVj4ge1xyXG4gIC8qKiBUaGUgY2xpZW50IHRoYXQgaW5zdGFudGlhdGVkIHRoaXMgbWFuYWdlciAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBjbGllbnQ6IGFueTtcclxuICBcclxuICAvKiogVGhlIGNhY2hlIG9mIGl0ZW1zICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGNhY2hlOiBDb2xsZWN0aW9uPEssIFY+O1xyXG4gIFxyXG4gIC8qKiBUaGUgY2xhc3MgdG8gaW5zdGFudGlhdGUgZm9yIGl0ZW1zICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhvbGRzOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBWO1xyXG5cclxuICBjb25zdHJ1Y3RvcihjbGllbnQ6IGFueSwgaG9sZHM6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFYsIGl0ZXJhYmxlPzogSXRlcmFibGU8Uj4pIHtcclxuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xyXG4gICAgdGhpcy5ob2xkcyA9IGhvbGRzO1xyXG4gICAgdGhpcy5jYWNoZSA9IG5ldyBDb2xsZWN0aW9uPEssIFY+KCk7XHJcbiAgICBcclxuICAgIGlmIChpdGVyYWJsZSkge1xyXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlcmFibGUpIHtcclxuICAgICAgICB0aGlzLl9hZGQoaXRlbSBhcyBhbnkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYW4gaXRlbSB0byB0aGUgY2FjaGVcclxuICAgKi9cclxuICBhYnN0cmFjdCBfYWRkKGRhdGE6IGFueSwgY2FjaGU/OiBib29sZWFuLCBvcHRpb25zPzogeyBpZD86IEs7IGV4dHJhcz86IGFueVtdIH0pOiBWO1xyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlIGFuIGl0ZW0gZnJvbSB0aGUgY2FjaGUgb3IgSURcclxuICAgKi9cclxuICByZXNvbHZlKGlkT3JJbnN0YW5jZTogSyB8IFYpOiBWIHwgbnVsbCB7XHJcbiAgICBpZiAoaWRPckluc3RhbmNlIGluc3RhbmNlb2YgdGhpcy5ob2xkcykgcmV0dXJuIGlkT3JJbnN0YW5jZTtcclxuICAgIGlmICh0eXBlb2YgaWRPckluc3RhbmNlID09PSAnc3RyaW5nJykgcmV0dXJuIHRoaXMuY2FjaGUuZ2V0KGlkT3JJbnN0YW5jZSBhcyBLKSA/PyBudWxsO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlIGFuIElEIGZyb20gYW4gaXRlbSBvciBJRFxyXG4gICAqL1xyXG4gIHJlc29sdmVJZChpZE9ySW5zdGFuY2U6IEsgfCBWIHwgeyBpZDogSyB9KTogSyB8IG51bGwge1xyXG4gICAgaWYgKGlkT3JJbnN0YW5jZSBpbnN0YW5jZW9mIHRoaXMuaG9sZHMpIHJldHVybiAoaWRPckluc3RhbmNlIGFzIGFueSkuaWQ7XHJcbiAgICBpZiAodHlwZW9mIGlkT3JJbnN0YW5jZSA9PT0gJ3N0cmluZycpIHJldHVybiBpZE9ySW5zdGFuY2UgYXMgSztcclxuICAgIGlmICh0eXBlb2YgaWRPckluc3RhbmNlID09PSAnb2JqZWN0JyAmJiBpZE9ySW5zdGFuY2UgIT09IG51bGwgJiYgJ2lkJyBpbiBpZE9ySW5zdGFuY2UpIHtcclxuICAgICAgcmV0dXJuIGlkT3JJbnN0YW5jZS5pZDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjYWNoZSBhcyBhIEpTT04gYXJyYXlcclxuICAgKi9cclxuICB2YWx1ZU9mKCk6IFZbXSB7XHJcbiAgICByZXR1cm4gWy4uLnRoaXMuY2FjaGUudmFsdWVzKCldO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENhY2hpbmcgbWFuYWdlciB0aGF0IGZldGNoZXMgZGF0YSBmcm9tIHRoZSBBUElcclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDYWNoZWRNYW5hZ2VyPEsgZXh0ZW5kcyBzdHJpbmcsIFYsIFIgPSBWPiBleHRlbmRzIEJhc2VNYW5hZ2VyPEssIFYsIFI+IHtcclxuICAvKipcclxuICAgKiBGZXRjaCBhbiBpdGVtIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGFic3RyYWN0IGZldGNoKGlkOiBLLCBvcHRpb25zPzogeyBjYWNoZT86IGJvb2xlYW47IGZvcmNlPzogYm9vbGVhbiB9KTogUHJvbWlzZTxWPjtcclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2ggYW4gaXRlbSwgdXNpbmcgY2FjaGUgaWYgYXZhaWxhYmxlIChhc3luYyB2ZXJzaW9uKVxyXG4gICAqL1xyXG4gIGFzeW5jIHJlc29sdmVBc3luYyhpZE9ySW5zdGFuY2U6IEsgfCBWLCBvcHRpb25zPzogeyBjYWNoZT86IGJvb2xlYW47IGZvcmNlPzogYm9vbGVhbiB9KTogUHJvbWlzZTxWIHwgbnVsbD4ge1xyXG4gICAgY29uc3QgZXhpc3RpbmcgPSBzdXBlci5yZXNvbHZlKGlkT3JJbnN0YW5jZSk7XHJcbiAgICBpZiAoZXhpc3RpbmcgJiYgIW9wdGlvbnM/LmZvcmNlKSByZXR1cm4gZXhpc3Rpbmc7XHJcbiAgICBcclxuICAgIGNvbnN0IGlkID0gdGhpcy5yZXNvbHZlSWQoaWRPckluc3RhbmNlKTtcclxuICAgIGlmICghaWQpIHJldHVybiBudWxsO1xyXG4gICAgXHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5mZXRjaChpZCwgb3B0aW9ucyk7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogRGF0YSBtYW5hZ2VyIHRoYXQgZG9lc24ndCBjYWNoZVxyXG4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGFNYW5hZ2VyPEsgZXh0ZW5kcyBzdHJpbmcsIFYsIFIgPSBWPiBleHRlbmRzIEJhc2VNYW5hZ2VyPEssIFYsIFI+IHtcclxuICAvKipcclxuICAgKiBBZGQgYW4gaXRlbSB0byB0aGUgY2FjaGVcclxuICAgKi9cclxuICBfYWRkKGRhdGE6IGFueSwgY2FjaGUgPSB0cnVlLCBvcHRpb25zPzogeyBpZD86IEs7IGV4dHJhcz86IGFueVtdIH0pOiBWIHtcclxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5jYWNoZS5nZXQob3B0aW9ucz8uaWQgPz8gZGF0YS5pZCk7XHJcbiAgICBpZiAoZXhpc3RpbmcpIHtcclxuICAgICAgaWYgKGNhY2hlKSB7XHJcbiAgICAgICAgKGV4aXN0aW5nIGFzIGFueSkuX3BhdGNoPy4oZGF0YSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGV4aXN0aW5nO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBlbnRyeSA9IG5ldyB0aGlzLmhvbGRzKHRoaXMuY2xpZW50LCBkYXRhLCAuLi4ob3B0aW9ucz8uZXh0cmFzID8/IFtdKSk7XHJcbiAgICBpZiAoY2FjaGUpIHtcclxuICAgICAgdGhpcy5jYWNoZS5zZXQob3B0aW9ucz8uaWQgPz8gZGF0YS5pZCwgZW50cnkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVudHJ5O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmFzZU1hbmFnZXI7XHJcbiJdfQ==
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manager for channels with caching and lazy loading
|
|
3
|
+
*/
|
|
4
|
+
import { CachedManager } from './BaseManager';
|
|
5
|
+
import { Collection } from '../utils/Collection';
|
|
6
|
+
/** Channel types */
|
|
7
|
+
export declare enum ChannelType {
|
|
8
|
+
GuildText = 0,
|
|
9
|
+
DM = 1,
|
|
10
|
+
GuildVoice = 2,
|
|
11
|
+
GroupDM = 3,
|
|
12
|
+
GuildCategory = 4,
|
|
13
|
+
GuildAnnouncement = 5,
|
|
14
|
+
AnnouncementThread = 10,
|
|
15
|
+
PublicThread = 11,
|
|
16
|
+
PrivateThread = 12,
|
|
17
|
+
GuildStageVoice = 13,
|
|
18
|
+
GuildDirectory = 14,
|
|
19
|
+
GuildForum = 15
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Manages channels for a guild
|
|
23
|
+
*/
|
|
24
|
+
export declare class GuildChannelManager extends CachedManager<string, any> {
|
|
25
|
+
/** The guild this manager belongs to */
|
|
26
|
+
readonly guild: any;
|
|
27
|
+
constructor(guild: any, iterable?: Iterable<any>);
|
|
28
|
+
/**
|
|
29
|
+
* Add a channel to the cache
|
|
30
|
+
*/
|
|
31
|
+
_add(data: any, cache?: boolean): any;
|
|
32
|
+
/**
|
|
33
|
+
* Fetch a channel from the API
|
|
34
|
+
*/
|
|
35
|
+
fetch(id: string, options?: {
|
|
36
|
+
cache?: boolean;
|
|
37
|
+
force?: boolean;
|
|
38
|
+
}): Promise<any>;
|
|
39
|
+
/**
|
|
40
|
+
* Fetch all channels for the guild
|
|
41
|
+
*/
|
|
42
|
+
fetchAll(): Promise<Collection<string, any>>;
|
|
43
|
+
/**
|
|
44
|
+
* Create a new channel
|
|
45
|
+
*/
|
|
46
|
+
create(options: {
|
|
47
|
+
name: string;
|
|
48
|
+
type?: ChannelType;
|
|
49
|
+
topic?: string;
|
|
50
|
+
bitrate?: number;
|
|
51
|
+
userLimit?: number;
|
|
52
|
+
rateLimitPerUser?: number;
|
|
53
|
+
position?: number;
|
|
54
|
+
permissionOverwrites?: any[];
|
|
55
|
+
parent?: string;
|
|
56
|
+
nsfw?: boolean;
|
|
57
|
+
reason?: string;
|
|
58
|
+
}): Promise<any>;
|
|
59
|
+
/**
|
|
60
|
+
* Delete a channel
|
|
61
|
+
*/
|
|
62
|
+
delete(id: string, reason?: string): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Edit a channel
|
|
65
|
+
*/
|
|
66
|
+
edit(id: string, data: {
|
|
67
|
+
name?: string;
|
|
68
|
+
type?: ChannelType;
|
|
69
|
+
position?: number;
|
|
70
|
+
topic?: string;
|
|
71
|
+
nsfw?: boolean;
|
|
72
|
+
rateLimitPerUser?: number;
|
|
73
|
+
bitrate?: number;
|
|
74
|
+
userLimit?: number;
|
|
75
|
+
permissionOverwrites?: any[];
|
|
76
|
+
parent?: string | null;
|
|
77
|
+
}): Promise<any>;
|
|
78
|
+
/**
|
|
79
|
+
* Set channel positions
|
|
80
|
+
*/
|
|
81
|
+
setPositions(positions: Array<{
|
|
82
|
+
channel: string;
|
|
83
|
+
position: number;
|
|
84
|
+
parent?: string | null;
|
|
85
|
+
}>): Promise<void>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Global channel manager for the client
|
|
89
|
+
*/
|
|
90
|
+
export declare class ChannelManager extends CachedManager<string, any> {
|
|
91
|
+
constructor(client: any, iterable?: Iterable<any>);
|
|
92
|
+
_add(data: any, cache?: boolean): any;
|
|
93
|
+
fetch(id: string, options?: {
|
|
94
|
+
cache?: boolean;
|
|
95
|
+
force?: boolean;
|
|
96
|
+
}): Promise<any>;
|
|
97
|
+
}
|
|
98
|
+
export default GuildChannelManager;
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Manager for channels with caching and lazy loading
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ChannelManager = exports.GuildChannelManager = exports.ChannelType = void 0;
|
|
7
|
+
const BaseManager_1 = require("./BaseManager");
|
|
8
|
+
const Collection_1 = require("../utils/Collection");
|
|
9
|
+
/** Channel types */
|
|
10
|
+
var ChannelType;
|
|
11
|
+
(function (ChannelType) {
|
|
12
|
+
ChannelType[ChannelType["GuildText"] = 0] = "GuildText";
|
|
13
|
+
ChannelType[ChannelType["DM"] = 1] = "DM";
|
|
14
|
+
ChannelType[ChannelType["GuildVoice"] = 2] = "GuildVoice";
|
|
15
|
+
ChannelType[ChannelType["GroupDM"] = 3] = "GroupDM";
|
|
16
|
+
ChannelType[ChannelType["GuildCategory"] = 4] = "GuildCategory";
|
|
17
|
+
ChannelType[ChannelType["GuildAnnouncement"] = 5] = "GuildAnnouncement";
|
|
18
|
+
ChannelType[ChannelType["AnnouncementThread"] = 10] = "AnnouncementThread";
|
|
19
|
+
ChannelType[ChannelType["PublicThread"] = 11] = "PublicThread";
|
|
20
|
+
ChannelType[ChannelType["PrivateThread"] = 12] = "PrivateThread";
|
|
21
|
+
ChannelType[ChannelType["GuildStageVoice"] = 13] = "GuildStageVoice";
|
|
22
|
+
ChannelType[ChannelType["GuildDirectory"] = 14] = "GuildDirectory";
|
|
23
|
+
ChannelType[ChannelType["GuildForum"] = 15] = "GuildForum";
|
|
24
|
+
})(ChannelType || (exports.ChannelType = ChannelType = {}));
|
|
25
|
+
/**
|
|
26
|
+
* Manages channels for a guild
|
|
27
|
+
*/
|
|
28
|
+
class GuildChannelManager extends BaseManager_1.CachedManager {
|
|
29
|
+
/** The guild this manager belongs to */
|
|
30
|
+
guild;
|
|
31
|
+
constructor(guild, iterable) {
|
|
32
|
+
super(guild.client, Object, iterable);
|
|
33
|
+
this.guild = guild;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Add a channel to the cache
|
|
37
|
+
*/
|
|
38
|
+
_add(data, cache = true) {
|
|
39
|
+
const id = data.id;
|
|
40
|
+
const existing = this.cache.get(id);
|
|
41
|
+
if (existing) {
|
|
42
|
+
if (cache)
|
|
43
|
+
Object.assign(existing, data);
|
|
44
|
+
return existing;
|
|
45
|
+
}
|
|
46
|
+
const channel = {
|
|
47
|
+
id,
|
|
48
|
+
guildId: this.guild.id,
|
|
49
|
+
name: data.name,
|
|
50
|
+
type: data.type,
|
|
51
|
+
position: data.position ?? 0,
|
|
52
|
+
parentId: data.parent_id ?? null,
|
|
53
|
+
permissionOverwrites: data.permission_overwrites ?? [],
|
|
54
|
+
topic: data.topic ?? null,
|
|
55
|
+
nsfw: data.nsfw ?? false,
|
|
56
|
+
rateLimitPerUser: data.rate_limit_per_user ?? 0,
|
|
57
|
+
bitrate: data.bitrate,
|
|
58
|
+
userLimit: data.user_limit,
|
|
59
|
+
get isText() { return [ChannelType.GuildText, ChannelType.GuildAnnouncement].includes(this.type); },
|
|
60
|
+
get isVoice() { return [ChannelType.GuildVoice, ChannelType.GuildStageVoice].includes(this.type); },
|
|
61
|
+
get isCategory() { return this.type === ChannelType.GuildCategory; },
|
|
62
|
+
get isThread() { return [ChannelType.PublicThread, ChannelType.PrivateThread, ChannelType.AnnouncementThread].includes(this.type); },
|
|
63
|
+
toString() { return `<#${this.id}>`; },
|
|
64
|
+
async send(content) {
|
|
65
|
+
return this.guild.client.rest.request('POST', `/channels/${this.id}/messages`, typeof content === 'string' ? { content } : content);
|
|
66
|
+
},
|
|
67
|
+
async delete(reason) {
|
|
68
|
+
return this.guild.client.rest.request('DELETE', `/channels/${this.id}`, reason ? { reason } : undefined);
|
|
69
|
+
},
|
|
70
|
+
async edit(data) {
|
|
71
|
+
return this.guild.client.rest.request('PATCH', `/channels/${this.id}`, data);
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
if (cache)
|
|
75
|
+
this.cache.set(id, channel);
|
|
76
|
+
return channel;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Fetch a channel from the API
|
|
80
|
+
*/
|
|
81
|
+
async fetch(id, options) {
|
|
82
|
+
if (!options?.force) {
|
|
83
|
+
const existing = this.cache.get(id);
|
|
84
|
+
if (existing)
|
|
85
|
+
return existing;
|
|
86
|
+
}
|
|
87
|
+
const data = await this.client.rest.request('GET', `/channels/${id}`);
|
|
88
|
+
return this._add(data, options?.cache ?? true);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Fetch all channels for the guild
|
|
92
|
+
*/
|
|
93
|
+
async fetchAll() {
|
|
94
|
+
const data = await this.client.rest.request('GET', `/guilds/${this.guild.id}/channels`);
|
|
95
|
+
const channels = new Collection_1.Collection();
|
|
96
|
+
for (const channelData of data) {
|
|
97
|
+
const channel = this._add(channelData);
|
|
98
|
+
channels.set(channel.id, channel);
|
|
99
|
+
}
|
|
100
|
+
return channels;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create a new channel
|
|
104
|
+
*/
|
|
105
|
+
async create(options) {
|
|
106
|
+
const body = {
|
|
107
|
+
name: options.name,
|
|
108
|
+
type: options.type ?? ChannelType.GuildText,
|
|
109
|
+
};
|
|
110
|
+
if (options.topic)
|
|
111
|
+
body.topic = options.topic;
|
|
112
|
+
if (options.bitrate)
|
|
113
|
+
body.bitrate = options.bitrate;
|
|
114
|
+
if (options.userLimit)
|
|
115
|
+
body.user_limit = options.userLimit;
|
|
116
|
+
if (options.rateLimitPerUser)
|
|
117
|
+
body.rate_limit_per_user = options.rateLimitPerUser;
|
|
118
|
+
if (options.position !== undefined)
|
|
119
|
+
body.position = options.position;
|
|
120
|
+
if (options.permissionOverwrites)
|
|
121
|
+
body.permission_overwrites = options.permissionOverwrites;
|
|
122
|
+
if (options.parent)
|
|
123
|
+
body.parent_id = options.parent;
|
|
124
|
+
if (options.nsfw !== undefined)
|
|
125
|
+
body.nsfw = options.nsfw;
|
|
126
|
+
const data = await this.client.rest.request('POST', `/guilds/${this.guild.id}/channels`, body);
|
|
127
|
+
return this._add(data);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Delete a channel
|
|
131
|
+
*/
|
|
132
|
+
async delete(id, reason) {
|
|
133
|
+
await this.client.rest.request('DELETE', `/channels/${id}`, reason ? { reason } : undefined);
|
|
134
|
+
this.cache.delete(id);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Edit a channel
|
|
138
|
+
*/
|
|
139
|
+
async edit(id, data) {
|
|
140
|
+
const body = {};
|
|
141
|
+
if (data.name)
|
|
142
|
+
body.name = data.name;
|
|
143
|
+
if (data.type !== undefined)
|
|
144
|
+
body.type = data.type;
|
|
145
|
+
if (data.position !== undefined)
|
|
146
|
+
body.position = data.position;
|
|
147
|
+
if (data.topic !== undefined)
|
|
148
|
+
body.topic = data.topic;
|
|
149
|
+
if (data.nsfw !== undefined)
|
|
150
|
+
body.nsfw = data.nsfw;
|
|
151
|
+
if (data.rateLimitPerUser !== undefined)
|
|
152
|
+
body.rate_limit_per_user = data.rateLimitPerUser;
|
|
153
|
+
if (data.bitrate !== undefined)
|
|
154
|
+
body.bitrate = data.bitrate;
|
|
155
|
+
if (data.userLimit !== undefined)
|
|
156
|
+
body.user_limit = data.userLimit;
|
|
157
|
+
if (data.permissionOverwrites)
|
|
158
|
+
body.permission_overwrites = data.permissionOverwrites;
|
|
159
|
+
if (data.parent !== undefined)
|
|
160
|
+
body.parent_id = data.parent;
|
|
161
|
+
const result = await this.client.rest.request('PATCH', `/channels/${id}`, body);
|
|
162
|
+
return this._add(result);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Set channel positions
|
|
166
|
+
*/
|
|
167
|
+
async setPositions(positions) {
|
|
168
|
+
const body = positions.map(p => ({
|
|
169
|
+
id: p.channel,
|
|
170
|
+
position: p.position,
|
|
171
|
+
parent_id: p.parent,
|
|
172
|
+
}));
|
|
173
|
+
await this.client.rest.request('PATCH', `/guilds/${this.guild.id}/channels`, body);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
exports.GuildChannelManager = GuildChannelManager;
|
|
177
|
+
/**
|
|
178
|
+
* Global channel manager for the client
|
|
179
|
+
*/
|
|
180
|
+
class ChannelManager extends BaseManager_1.CachedManager {
|
|
181
|
+
constructor(client, iterable) {
|
|
182
|
+
super(client, Object, iterable);
|
|
183
|
+
}
|
|
184
|
+
_add(data, cache = true) {
|
|
185
|
+
const id = data.id;
|
|
186
|
+
const existing = this.cache.get(id);
|
|
187
|
+
if (existing) {
|
|
188
|
+
if (cache)
|
|
189
|
+
Object.assign(existing, data);
|
|
190
|
+
return existing;
|
|
191
|
+
}
|
|
192
|
+
const channel = { ...data, id };
|
|
193
|
+
if (cache)
|
|
194
|
+
this.cache.set(id, channel);
|
|
195
|
+
return channel;
|
|
196
|
+
}
|
|
197
|
+
async fetch(id, options) {
|
|
198
|
+
if (!options?.force) {
|
|
199
|
+
const existing = this.cache.get(id);
|
|
200
|
+
if (existing)
|
|
201
|
+
return existing;
|
|
202
|
+
}
|
|
203
|
+
const data = await this.client.rest.request('GET', `/channels/${id}`);
|
|
204
|
+
return this._add(data, options?.cache ?? true);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
exports.ChannelManager = ChannelManager;
|
|
208
|
+
exports.default = GuildChannelManager;
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhbm5lbE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFuYWdlcnMvQ2hhbm5lbE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCwrQ0FBOEM7QUFDOUMsb0RBQWlEO0FBRWpELG9CQUFvQjtBQUNwQixJQUFZLFdBYVg7QUFiRCxXQUFZLFdBQVc7SUFDckIsdURBQWEsQ0FBQTtJQUNiLHlDQUFNLENBQUE7SUFDTix5REFBYyxDQUFBO0lBQ2QsbURBQVcsQ0FBQTtJQUNYLCtEQUFpQixDQUFBO0lBQ2pCLHVFQUFxQixDQUFBO0lBQ3JCLDBFQUF1QixDQUFBO0lBQ3ZCLDhEQUFpQixDQUFBO0lBQ2pCLGdFQUFrQixDQUFBO0lBQ2xCLG9FQUFvQixDQUFBO0lBQ3BCLGtFQUFtQixDQUFBO0lBQ25CLDBEQUFlLENBQUE7QUFDakIsQ0FBQyxFQWJXLFdBQVcsMkJBQVgsV0FBVyxRQWF0QjtBQUVEOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSwyQkFBMEI7SUFDakUsd0NBQXdDO0lBQ3hCLEtBQUssQ0FBTTtJQUUzQixZQUFZLEtBQVUsRUFBRSxRQUF3QjtRQUM5QyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLElBQVMsRUFBRSxLQUFLLEdBQUcsSUFBSTtRQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLEtBQUs7Z0JBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFB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UUFDcEMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksS0FBSztnQkFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6QyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNoQyxJQUFJLEtBQUs7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBVSxFQUFFLE9BQThDO1FBQ3BFLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEMsSUFBSSxRQUFRO2dCQUFFLE9BQU8sUUFBUSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBQ0Y7QUExQkQsd0NBMEJDO0FBRUQsa0JBQWUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogTWFuYWdlciBmb3IgY2hhbm5lbHMgd2l0aCBjYWNoaW5nIGFuZCBsYXp5IGxvYWRpbmdcclxuICovXHJcblxyXG5pbXBvcnQgeyBDYWNoZWRNYW5hZ2VyIH0gZnJvbSAnLi9CYXNlTWFuYWdlcic7XHJcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuLi91dGlscy9Db2xsZWN0aW9uJztcclxuXHJcbi8qKiBDaGFubmVsIHR5cGVzICovXHJcbmV4cG9ydCBlbnVtIENoYW5uZWxUeXBlIHtcclxuICBHdWlsZFRleHQgPSAwLFxyXG4gIERNID0gMSxcclxuICBHdWlsZFZvaWNlID0gMixcclxuICBHcm91cERNID0gMyxcclxuICBHdWlsZENhdGVnb3J5ID0gNCxcclxuICBHdWlsZEFubm91bmNlbWVudCA9IDUsXHJcbiAgQW5ub3VuY2VtZW50VGhyZWFkID0gMTAsXHJcbiAgUHVibGljVGhyZWFkID0gMTEsXHJcbiAgUHJpdmF0ZVRocmVhZCA9IDEyLFxyXG4gIEd1aWxkU3RhZ2VWb2ljZSA9IDEzLFxyXG4gIEd1aWxkRGlyZWN0b3J5ID0gMTQsXHJcbiAgR3VpbGRGb3J1bSA9IDE1LFxyXG59XHJcblxyXG4vKipcclxuICogTWFuYWdlcyBjaGFubmVscyBmb3IgYSBndWlsZFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEd1aWxkQ2hhbm5lbE1hbmFnZXIgZXh0ZW5kcyBDYWNoZWRNYW5hZ2VyPHN0cmluZywgYW55PiB7XHJcbiAgLyoqIFRoZSBndWlsZCB0aGlzIG1hbmFnZXIgYmVsb25ncyB0byAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBndWlsZDogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihndWlsZDogYW55LCBpdGVyYWJsZT86IEl0ZXJhYmxlPGFueT4pIHtcclxuICAgIHN1cGVyKGd1aWxkLmNsaWVudCwgT2JqZWN0IGFzIGFueSwgaXRlcmFibGUpO1xyXG4gICAgdGhpcy5ndWlsZCA9IGd1aWxkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgY2hhbm5lbCB0byB0aGUgY2FjaGVcclxuICAgKi9cclxuICBfYWRkKGRhdGE6IGFueSwgY2FjaGUgPSB0cnVlKTogYW55IHtcclxuICAgIGNvbnN0IGlkID0gZGF0YS5pZDtcclxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5jYWNoZS5nZXQoaWQpO1xyXG4gICAgXHJcbiAgICBpZiAoZXhpc3RpbmcpIHtcclxuICAgICAgaWYgKGNhY2hlKSBPYmplY3QuYXNzaWduKGV4aXN0aW5nLCBkYXRhKTtcclxuICAgICAgcmV0dXJuIGV4aXN0aW5nO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBjaGFubmVsID0ge1xyXG4gICAgICBpZCxcclxuICAgICAgZ3VpbGRJZDogdGhpcy5ndWlsZC5pZCxcclxuICAgICAgbmFtZTogZGF0YS5uYW1lLFxyXG4gICAgICB0eXBlOiBkYXRhLnR5cGUsXHJcbiAgICAgIHBvc2l0aW9uOiBkYXRhLnBvc2l0aW9uID8/IDAsXHJcbiAgICAgIHBhcmVudElkOiBkYXRhLnBhcmVudF9pZCA/PyBudWxsLFxyXG4gICAgICBwZXJtaXNzaW9uT3ZlcndyaXRlczogZGF0YS5wZXJtaXNzaW9uX292ZXJ3cml0ZXMgPz8gW10sXHJcbiAgICAgIHRvcGljOiBkYXRhLnRvcGljID8/IG51bGwsXHJcbiAgICAgIG5zZnc6IGRhdGEubnNmdyA/PyBmYWxzZSxcclxuICAgICAgcmF0ZUxpbWl0UGVyVXNlcjogZGF0YS5yYXRlX2xpbWl0X3Blcl91c2VyID8/IDAsXHJcbiAgICAgIGJpdHJhdGU6IGRhdGEuYml0cmF0ZSxcclxuICAgICAgdXNlckxpbWl0OiBkYXRhLnVzZXJfbGltaXQsXHJcbiAgICAgIFxyXG4gICAgICBnZXQgaXNUZXh0KCkgeyByZXR1cm4gW0NoYW5uZWxUeXBlLkd1aWxkVGV4dCwgQ2hhbm5lbFR5cGUuR3VpbGRBbm5vdW5jZW1lbnRdLmluY2x1ZGVzKHRoaXMudHlwZSk7IH0sXHJcbiAgICAgIGdldCBpc1ZvaWNlKCkgeyByZXR1cm4gW0NoYW5uZWxUeXBlLkd1aWxkVm9pY2UsIENoYW5uZWxUeXBlLkd1aWxkU3RhZ2VWb2ljZV0uaW5jbHVkZXModGhpcy50eXBlKTsgfSxcclxuICAgICAgZ2V0IGlzQ2F0ZWdvcnkoKSB7IHJldHVybiB0aGlzLnR5cGUgPT09IENoYW5uZWxUeXBlLkd1aWxkQ2F0ZWdvcnk7IH0sXHJcbiAgICAgIGdldCBpc1RocmVhZCgpIHsgcmV0dXJuIFtDaGFubmVsVHlwZS5QdWJsaWNUaHJlYWQsIENoYW5uZWxUeXBlLlByaXZhdGVUaHJlYWQsIENoYW5uZWxUeXBlLkFubm91bmNlbWVudFRocmVhZF0uaW5jbHVkZXModGhpcy50eXBlKTsgfSxcclxuICAgICAgXHJcbiAgICAgIHRvU3RyaW5nKCkgeyByZXR1cm4gYDwjJHt0aGlzLmlkfT5gOyB9LFxyXG4gICAgICBcclxuICAgICAgYXN5bmMgc2VuZChjb250ZW50OiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ndWlsZC5jbGllbnQucmVzdC5yZXF1ZXN0KCdQT1NUJywgYC9jaGFubmVscy8ke3RoaXMuaWR9L21lc3NhZ2VzYCwgXHJcbiAgICAgICAgICB0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycgPyB7IGNvbnRlbnQgfSA6IGNvbnRlbnRcclxuICAgICAgICApO1xyXG4gICAgICB9LFxyXG4gICAgICBcclxuICAgICAgYXN5bmMgZGVsZXRlKHJlYXNvbj86IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmd1aWxkLmNsaWVudC5yZXN0LnJlcXVlc3QoJ0RFTEVURScsIGAvY2hhbm5lbHMvJHt0aGlzLmlkfWAsIHJlYXNvbiA/IHsgcmVhc29uIH0gOiB1bmRlZmluZWQpO1xyXG4gICAgICB9LFxyXG4gICAgICBcclxuICAgICAgYXN5bmMgZWRpdChkYXRhOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ndWlsZC5jbGllbnQucmVzdC5yZXF1ZXN0KCdQQVRDSCcsIGAvY2hhbm5lbHMvJHt0aGlzLmlkfWAsIGRhdGEpO1xyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgaWYgKGNhY2hlKSB0aGlzLmNhY2hlLnNldChpZCwgY2hhbm5lbCk7XHJcbiAgICByZXR1cm4gY2hhbm5lbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoIGEgY2hhbm5lbCBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBhc3luYyBmZXRjaChpZDogc3RyaW5nLCBvcHRpb25zPzogeyBjYWNoZT86IGJvb2xlYW47IGZvcmNlPzogYm9vbGVhbiB9KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGlmICghb3B0aW9ucz8uZm9yY2UpIHtcclxuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmNhY2hlLmdldChpZCk7XHJcbiAgICAgIGlmIChleGlzdGluZykgcmV0dXJuIGV4aXN0aW5nO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KCdHRVQnLCBgL2NoYW5uZWxzLyR7aWR9YCk7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRkKGRhdGEsIG9wdGlvbnM/LmNhY2hlID8/IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2ggYWxsIGNoYW5uZWxzIGZvciB0aGUgZ3VpbGRcclxuICAgKi9cclxuICBhc3luYyBmZXRjaEFsbCgpOiBQcm9taXNlPENvbGxlY3Rpb248c3RyaW5nLCBhbnk+PiB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucmVzdC5yZXF1ZXN0KCdHRVQnLCBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L2NoYW5uZWxzYCk7XHJcbiAgICBjb25zdCBjaGFubmVscyA9IG5ldyBDb2xsZWN0aW9uPHN0cmluZywgYW55PigpO1xyXG4gICAgZm9yIChjb25zdCBjaGFubmVsRGF0YSBvZiBkYXRhKSB7XHJcbiAgICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzLl9hZGQoY2hhbm5lbERhdGEpO1xyXG4gICAgICBjaGFubmVscy5zZXQoY2hhbm5lbC5pZCwgY2hhbm5lbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2hhbm5lbHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBuZXcgY2hhbm5lbFxyXG4gICAqL1xyXG4gIGFzeW5jIGNyZWF0ZShvcHRpb25zOiB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICB0eXBlPzogQ2hhbm5lbFR5cGU7XHJcbiAgICB0b3BpYz86IHN0cmluZztcclxuICAgIGJpdHJhdGU/OiBudW1iZXI7XHJcbiAgICB1c2VyTGltaXQ/OiBudW1iZXI7XHJcbiAgICByYXRlTGltaXRQZXJVc2VyPzogbnVtYmVyO1xyXG4gICAgcG9zaXRpb24/OiBudW1iZXI7XHJcbiAgICBwZXJtaXNzaW9uT3ZlcndyaXRlcz86IGFueVtdO1xyXG4gICAgcGFyZW50Pzogc3RyaW5nO1xyXG4gICAgbnNmdz86IGJvb2xlYW47XHJcbiAgICByZWFzb24/OiBzdHJpbmc7XHJcbiAgfSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBib2R5OiBhbnkgPSB7XHJcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcclxuICAgICAgdHlwZTogb3B0aW9ucy50eXBlID8/IENoYW5uZWxUeXBlLkd1aWxkVGV4dCxcclxuICAgIH07XHJcbiAgICBpZiAob3B0aW9ucy50b3BpYykgYm9keS50b3BpYyA9IG9wdGlvbnMudG9waWM7XHJcbiAgICBpZiAob3B0aW9ucy5iaXRyYXRlKSBib2R5LmJpdHJhdGUgPSBvcHRpb25zLmJpdHJhdGU7XHJcbiAgICBpZiAob3B0aW9ucy51c2VyTGltaXQpIGJvZHkudXNlcl9saW1pdCA9IG9wdGlvbnMudXNlckxpbWl0O1xyXG4gICAgaWYgKG9wdGlvbnMucmF0ZUxpbWl0UGVyVXNlcikgYm9keS5yYXRlX2xpbWl0X3Blcl91c2VyID0gb3B0aW9ucy5yYXRlTGltaXRQZXJVc2VyO1xyXG4gICAgaWYgKG9wdGlvbnMucG9zaXRpb24gIT09IHVuZGVmaW5lZCkgYm9keS5wb3NpdGlvbiA9IG9wdGlvbnMucG9zaXRpb247XHJcbiAgICBpZiAob3B0aW9ucy5wZXJtaXNzaW9uT3ZlcndyaXRlcykgYm9keS5wZXJtaXNzaW9uX292ZXJ3cml0ZXMgPSBvcHRpb25zLnBlcm1pc3Npb25PdmVyd3JpdGVzO1xyXG4gICAgaWYgKG9wdGlvbnMucGFyZW50KSBib2R5LnBhcmVudF9pZCA9IG9wdGlvbnMucGFyZW50O1xyXG4gICAgaWYgKG9wdGlvbnMubnNmdyAhPT0gdW5kZWZpbmVkKSBib2R5Lm5zZncgPSBvcHRpb25zLm5zZnc7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoJ1BPU1QnLCBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L2NoYW5uZWxzYCwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRkKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlIGEgY2hhbm5lbFxyXG4gICAqL1xyXG4gIGFzeW5jIGRlbGV0ZShpZDogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdCgnREVMRVRFJywgYC9jaGFubmVscy8ke2lkfWAsIHJlYXNvbiA/IHsgcmVhc29uIH0gOiB1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5jYWNoZS5kZWxldGUoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWRpdCBhIGNoYW5uZWxcclxuICAgKi9cclxuICBhc3luYyBlZGl0KGlkOiBzdHJpbmcsIGRhdGE6IHtcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbiAgICB0eXBlPzogQ2hhbm5lbFR5cGU7XHJcbiAgICBwb3NpdGlvbj86IG51bWJlcjtcclxuICAgIHRvcGljPzogc3RyaW5nO1xyXG4gICAgbnNmdz86IGJvb2xlYW47XHJcbiAgICByYXRlTGltaXRQZXJVc2VyPzogbnVtYmVyO1xyXG4gICAgYml0cmF0ZT86IG51bWJlcjtcclxuICAgIHVzZXJMaW1pdD86IG51bWJlcjtcclxuICAgIHBlcm1pc3Npb25PdmVyd3JpdGVzPzogYW55W107XHJcbiAgICBwYXJlbnQ/OiBzdHJpbmcgfCBudWxsO1xyXG4gIH0pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keTogYW55ID0ge307XHJcbiAgICBpZiAoZGF0YS5uYW1lKSBib2R5Lm5hbWUgPSBkYXRhLm5hbWU7XHJcbiAgICBpZiAoZGF0YS50eXBlICE9PSB1bmRlZmluZWQpIGJvZHkudHlwZSA9IGRhdGEudHlwZTtcclxuICAgIGlmIChkYXRhLnBvc2l0aW9uICE9PSB1bmRlZmluZWQpIGJvZHkucG9zaXRpb24gPSBkYXRhLnBvc2l0aW9uO1xyXG4gICAgaWYgKGRhdGEudG9waWMgIT09IHVuZGVmaW5lZCkgYm9keS50b3BpYyA9IGRhdGEudG9waWM7XHJcbiAgICBpZiAoZGF0YS5uc2Z3ICE9PSB1bmRlZmluZWQpIGJvZHkubnNmdyA9IGRhdGEubnNmdztcclxuICAgIGlmIChkYXRhLnJhdGVMaW1pdFBlclVzZXIgIT09IHVuZGVmaW5lZCkgYm9keS5yYXRlX2xpbWl0X3Blcl91c2VyID0gZGF0YS5yYXRlTGltaXRQZXJVc2VyO1xyXG4gICAgaWYgKGRhdGEuYml0cmF0ZSAhPT0gdW5kZWZpbmVkKSBib2R5LmJpdHJhdGUgPSBkYXRhLmJpdHJhdGU7XHJcbiAgICBpZiAoZGF0YS51c2VyTGltaXQgIT09IHVuZGVmaW5lZCkgYm9keS51c2VyX2xpbWl0ID0gZGF0YS51c2VyTGltaXQ7XHJcbiAgICBpZiAoZGF0YS5wZXJtaXNzaW9uT3ZlcndyaXRlcykgYm9keS5wZXJtaXNzaW9uX292ZXJ3cml0ZXMgPSBkYXRhLnBlcm1pc3Npb25PdmVyd3JpdGVzO1xyXG4gICAgaWYgKGRhdGEucGFyZW50ICE9PSB1bmRlZmluZWQpIGJvZHkucGFyZW50X2lkID0gZGF0YS5wYXJlbnQ7XHJcbiAgICBcclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdCgnUEFUQ0gnLCBgL2NoYW5uZWxzLyR7aWR9YCwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRkKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgY2hhbm5lbCBwb3NpdGlvbnNcclxuICAgKi9cclxuICBhc3luYyBzZXRQb3NpdGlvbnMocG9zaXRpb25zOiBBcnJheTx7IGNoYW5uZWw6IHN0cmluZzsgcG9zaXRpb246IG51bWJlcjsgcGFyZW50Pzogc3RyaW5nIHwgbnVsbCB9Pik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgYm9keSA9IHBvc2l0aW9ucy5tYXAocCA9PiAoe1xyXG4gICAgICBpZDogcC5jaGFubmVsLFxyXG4gICAgICBwb3NpdGlvbjogcC5wb3NpdGlvbixcclxuICAgICAgcGFyZW50X2lkOiBwLnBhcmVudCxcclxuICAgIH0pKTtcclxuICAgIGF3YWl0IHRoaXMuY2xpZW50LnJlc3QucmVxdWVzdCgnUEFUQ0gnLCBgL2d1aWxkcy8ke3RoaXMuZ3VpbGQuaWR9L2NoYW5uZWxzYCwgYm9keSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogR2xvYmFsIGNoYW5uZWwgbWFuYWdlciBmb3IgdGhlIGNsaWVudFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENoYW5uZWxNYW5hZ2VyIGV4dGVuZHMgQ2FjaGVkTWFuYWdlcjxzdHJpbmcsIGFueT4ge1xyXG4gIGNvbnN0cnVjdG9yKGNsaWVudDogYW55LCBpdGVyYWJsZT86IEl0ZXJhYmxlPGFueT4pIHtcclxuICAgIHN1cGVyKGNsaWVudCwgT2JqZWN0IGFzIGFueSwgaXRlcmFibGUpO1xyXG4gIH1cclxuXHJcbiAgX2FkZChkYXRhOiBhbnksIGNhY2hlID0gdHJ1ZSk6IGFueSB7XHJcbiAgICBjb25zdCBpZCA9IGRhdGEuaWQ7XHJcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuY2FjaGUuZ2V0KGlkKTtcclxuICAgIGlmIChleGlzdGluZykge1xyXG4gICAgICBpZiAoY2FjaGUpIE9iamVjdC5hc3NpZ24oZXhpc3RpbmcsIGRhdGEpO1xyXG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNvbnN0IGNoYW5uZWwgPSB7IC4uLmRhdGEsIGlkIH07XHJcbiAgICBpZiAoY2FjaGUpIHRoaXMuY2FjaGUuc2V0KGlkLCBjaGFubmVsKTtcclxuICAgIHJldHVybiBjaGFubmVsO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmV0Y2goaWQ6IHN0cmluZywgb3B0aW9ucz86IHsgY2FjaGU/OiBib29sZWFuOyBmb3JjZT86IGJvb2xlYW4gfSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBpZiAoIW9wdGlvbnM/LmZvcmNlKSB7XHJcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5jYWNoZS5nZXQoaWQpO1xyXG4gICAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNsaWVudC5yZXN0LnJlcXVlc3QoJ0dFVCcsIGAvY2hhbm5lbHMvJHtpZH1gKTtcclxuICAgIHJldHVybiB0aGlzLl9hZGQoZGF0YSwgb3B0aW9ucz8uY2FjaGUgPz8gdHJ1ZSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBHdWlsZENoYW5uZWxNYW5hZ2VyO1xyXG4iXX0=
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manager for guild members with caching and lazy loading
|
|
3
|
+
*/
|
|
4
|
+
import { CachedManager } from './BaseManager';
|
|
5
|
+
import { Collection } from '../utils/Collection';
|
|
6
|
+
/**
|
|
7
|
+
* Manages guild members
|
|
8
|
+
*/
|
|
9
|
+
export declare class GuildMemberManager extends CachedManager<string, any> {
|
|
10
|
+
/** The guild this manager belongs to */
|
|
11
|
+
readonly guild: any;
|
|
12
|
+
constructor(guild: any, iterable?: Iterable<any>);
|
|
13
|
+
/**
|
|
14
|
+
* Add a member to the cache
|
|
15
|
+
*/
|
|
16
|
+
_add(data: any, cache?: boolean): any;
|
|
17
|
+
/**
|
|
18
|
+
* Fetch a member from the API
|
|
19
|
+
*/
|
|
20
|
+
fetch(id: string, options?: {
|
|
21
|
+
cache?: boolean;
|
|
22
|
+
force?: boolean;
|
|
23
|
+
}): Promise<any>;
|
|
24
|
+
/**
|
|
25
|
+
* Fetch multiple members
|
|
26
|
+
*/
|
|
27
|
+
fetchMany(options?: {
|
|
28
|
+
limit?: number;
|
|
29
|
+
after?: string;
|
|
30
|
+
query?: string;
|
|
31
|
+
}): Promise<Collection<string, any>>;
|
|
32
|
+
/**
|
|
33
|
+
* Search for members by query
|
|
34
|
+
*/
|
|
35
|
+
search(options: {
|
|
36
|
+
query: string;
|
|
37
|
+
limit?: number;
|
|
38
|
+
}): Promise<Collection<string, any>>;
|
|
39
|
+
/**
|
|
40
|
+
* Kick a member
|
|
41
|
+
*/
|
|
42
|
+
kick(id: string, reason?: string): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Ban a member
|
|
45
|
+
*/
|
|
46
|
+
ban(id: string, options?: {
|
|
47
|
+
deleteMessageDays?: number;
|
|
48
|
+
reason?: string;
|
|
49
|
+
}): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Unban a user
|
|
52
|
+
*/
|
|
53
|
+
unban(id: string, reason?: string): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Edit a member
|
|
56
|
+
*/
|
|
57
|
+
edit(id: string, data: {
|
|
58
|
+
nick?: string | null;
|
|
59
|
+
roles?: string[];
|
|
60
|
+
mute?: boolean;
|
|
61
|
+
deaf?: boolean;
|
|
62
|
+
channel_id?: string | null;
|
|
63
|
+
communication_disabled_until?: Date | null;
|
|
64
|
+
}): Promise<any>;
|
|
65
|
+
/**
|
|
66
|
+
* Add a role to a member
|
|
67
|
+
*/
|
|
68
|
+
addRole(memberId: string, roleId: string, reason?: string): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Remove a role from a member
|
|
71
|
+
*/
|
|
72
|
+
removeRole(memberId: string, roleId: string, reason?: string): Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
export default GuildMemberManager;
|