@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.
- package/dist/Client.js +13 -14
- package/dist/cjs/Client.d.ts +157 -0
- package/dist/cjs/Client.js +640 -0
- package/dist/cjs/builders/ActionRowBuilder.d.ts +53 -0
- package/dist/cjs/builders/ActionRowBuilder.js +68 -0
- package/dist/cjs/builders/ButtonBuilder.d.ts +77 -0
- package/dist/cjs/builders/ButtonBuilder.js +96 -0
- package/dist/cjs/builders/EmbedBuilder.d.ts +157 -0
- package/dist/cjs/builders/EmbedBuilder.js +208 -0
- package/dist/cjs/builders/ModalBuilder.d.ts +122 -0
- package/dist/cjs/builders/ModalBuilder.js +162 -0
- package/dist/cjs/builders/SelectMenuBuilder.d.ts +123 -0
- package/dist/cjs/builders/SelectMenuBuilder.js +165 -0
- package/dist/cjs/builders/SlashCommandBuilder.d.ts +197 -0
- package/dist/cjs/builders/SlashCommandBuilder.js +324 -0
- package/dist/cjs/builders/index.d.ts +9 -0
- package/dist/cjs/builders/index.js +26 -0
- package/dist/cjs/enums.d.ts +191 -0
- package/dist/cjs/enums.js +211 -0
- package/dist/cjs/index.d.ts +25 -0
- package/dist/cjs/index.js +130 -0
- package/dist/cjs/managers/BaseManager.d.ts +69 -0
- package/dist/cjs/managers/BaseManager.js +106 -0
- package/dist/cjs/managers/ChannelManager.d.ts +95 -0
- package/dist/cjs/managers/ChannelManager.js +205 -0
- package/dist/cjs/managers/GuildMemberManager.d.ts +74 -0
- package/dist/cjs/managers/GuildMemberManager.js +157 -0
- package/dist/cjs/managers/RoleManager.d.ts +84 -0
- package/dist/cjs/managers/RoleManager.js +207 -0
- package/dist/cjs/managers/index.d.ts +7 -0
- package/dist/cjs/managers/index.js +24 -0
- package/dist/cjs/rest/REST.d.ts +527 -0
- package/dist/cjs/rest/REST.js +904 -0
- package/dist/cjs/rest/index.d.ts +1 -0
- package/dist/cjs/rest/index.js +18 -0
- package/dist/cjs/sharding/ShardingManager.d.ts +179 -0
- package/dist/cjs/sharding/ShardingManager.js +375 -0
- package/dist/cjs/sharding/index.d.ts +4 -0
- package/dist/cjs/sharding/index.js +21 -0
- package/dist/cjs/structures/Channel.d.ts +122 -0
- package/dist/cjs/structures/Channel.js +240 -0
- package/dist/cjs/structures/Collection.d.ts +53 -0
- package/dist/cjs/structures/Collection.js +115 -0
- package/dist/cjs/structures/Guild.d.ts +59 -0
- package/dist/cjs/structures/Guild.js +94 -0
- package/dist/cjs/structures/GuildMember.d.ts +174 -0
- package/dist/cjs/structures/GuildMember.js +311 -0
- package/dist/cjs/structures/Interaction.d.ts +245 -0
- package/dist/cjs/structures/Interaction.js +450 -0
- package/dist/cjs/structures/Message.d.ts +98 -0
- package/dist/cjs/structures/Message.js +195 -0
- package/dist/cjs/structures/User.d.ts +37 -0
- package/dist/cjs/structures/User.js +65 -0
- package/dist/cjs/structures/index.d.ts +7 -0
- package/dist/cjs/structures/index.js +25 -0
- package/dist/cjs/structures.d.ts +1 -0
- package/dist/cjs/structures.js +19 -0
- package/dist/cjs/types.d.ts +255 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/utils/BitField.d.ts +66 -0
- package/dist/cjs/utils/BitField.js +138 -0
- package/dist/cjs/utils/Collection.d.ts +116 -0
- package/dist/cjs/utils/Collection.js +265 -0
- package/dist/cjs/utils/Collector.d.ts +152 -0
- package/dist/cjs/utils/Collector.js +314 -0
- package/dist/cjs/utils/DataResolver.d.ts +61 -0
- package/dist/cjs/utils/DataResolver.js +146 -0
- package/dist/cjs/utils/Formatters.d.ts +145 -0
- package/dist/cjs/utils/Formatters.js +213 -0
- package/dist/cjs/utils/IntentsBitField.d.ts +85 -0
- package/dist/cjs/utils/IntentsBitField.js +99 -0
- package/dist/cjs/utils/Partials.d.ts +104 -0
- package/dist/cjs/utils/Partials.js +148 -0
- package/dist/cjs/utils/PermissionsBitField.d.ts +118 -0
- package/dist/cjs/utils/PermissionsBitField.js +145 -0
- package/dist/cjs/utils/SnowflakeUtil.d.ts +63 -0
- package/dist/cjs/utils/SnowflakeUtil.js +93 -0
- package/dist/cjs/utils/Sweepers.d.ts +119 -0
- package/dist/cjs/utils/Sweepers.js +249 -0
- package/dist/cjs/utils/index.d.ts +13 -0
- package/dist/cjs/utils/index.js +30 -0
- package/dist/esm/Client.js +634 -0
- package/dist/esm/builders/ActionRowBuilder.js +64 -0
- package/dist/esm/builders/ButtonBuilder.js +92 -0
- package/dist/esm/builders/EmbedBuilder.js +204 -0
- package/dist/esm/builders/ModalBuilder.js +157 -0
- package/dist/esm/builders/SelectMenuBuilder.js +161 -0
- package/dist/esm/builders/SlashCommandBuilder.js +311 -0
- package/dist/esm/builders/index.js +10 -0
- package/dist/esm/enums.js +208 -0
- package/dist/esm/index.js +34 -0
- package/dist/esm/managers/BaseManager.js +100 -0
- package/dist/esm/managers/ChannelManager.js +200 -0
- package/dist/esm/managers/GuildMemberManager.js +153 -0
- package/dist/esm/managers/RoleManager.js +203 -0
- package/dist/esm/managers/index.js +8 -0
- package/dist/esm/rest/REST.js +900 -0
- package/dist/esm/rest/index.js +2 -0
- package/dist/esm/sharding/ShardingManager.js +366 -0
- package/dist/esm/sharding/index.js +5 -0
- package/dist/esm/structures/Channel.js +232 -0
- package/dist/esm/structures/Collection.js +111 -0
- package/dist/esm/structures/Guild.js +90 -0
- package/dist/esm/structures/GuildMember.js +306 -0
- package/dist/esm/structures/Interaction.js +438 -0
- package/dist/esm/structures/Message.js +191 -0
- package/dist/esm/structures/User.js +61 -0
- package/dist/esm/structures/index.js +9 -0
- package/dist/esm/structures.js +3 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/utils/BitField.js +134 -0
- package/dist/esm/utils/Collection.js +261 -0
- package/dist/esm/utils/Collector.js +305 -0
- package/dist/esm/utils/DataResolver.js +142 -0
- package/dist/esm/utils/Formatters.js +191 -0
- package/dist/esm/utils/IntentsBitField.js +93 -0
- package/dist/esm/utils/Partials.js +137 -0
- package/dist/esm/utils/PermissionsBitField.js +141 -0
- package/dist/esm/utils/SnowflakeUtil.js +89 -0
- package/dist/esm/utils/Sweepers.js +245 -0
- package/dist/esm/utils/index.js +14 -0
- package/dist/rest/REST.js +8 -1
- package/dist/structures/Interaction.js +3 -5
- package/dist/structures/Message.js +56 -2
- package/package.json +14 -4
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data resolver utilities for handling various data types
|
|
3
|
+
*/
|
|
4
|
+
import { readFile } from 'fs/promises';
|
|
5
|
+
import { basename } from 'path';
|
|
6
|
+
/**
|
|
7
|
+
* Resolves various data types to usable formats
|
|
8
|
+
*/
|
|
9
|
+
export class DataResolver {
|
|
10
|
+
/**
|
|
11
|
+
* Resolves a BufferResolvable to a Buffer
|
|
12
|
+
* @param resource The resource to resolve
|
|
13
|
+
*/
|
|
14
|
+
static async resolveBuffer(resource) {
|
|
15
|
+
if (Buffer.isBuffer(resource))
|
|
16
|
+
return resource;
|
|
17
|
+
if (typeof resource === 'string') {
|
|
18
|
+
// Check if it's a file path
|
|
19
|
+
if (resource.startsWith('/') || resource.startsWith('./') || resource.startsWith('../') || /^[a-zA-Z]:/.test(resource)) {
|
|
20
|
+
return readFile(resource);
|
|
21
|
+
}
|
|
22
|
+
// Check if it's a URL
|
|
23
|
+
if (resource.startsWith('http://') || resource.startsWith('https://')) {
|
|
24
|
+
const response = await fetch(resource);
|
|
25
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
26
|
+
return Buffer.from(arrayBuffer);
|
|
27
|
+
}
|
|
28
|
+
// Check if it's base64
|
|
29
|
+
if (resource.startsWith('data:')) {
|
|
30
|
+
const base64Data = resource.split(',')[1];
|
|
31
|
+
return Buffer.from(base64Data, 'base64');
|
|
32
|
+
}
|
|
33
|
+
// Assume it's a file path
|
|
34
|
+
return readFile(resource);
|
|
35
|
+
}
|
|
36
|
+
throw new TypeError('Invalid resource type');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Resolves a Base64Resolvable to a base64 string
|
|
40
|
+
* @param resource The resource to resolve
|
|
41
|
+
* @param mimeType The MIME type for the data URI
|
|
42
|
+
*/
|
|
43
|
+
static async resolveBase64(resource, mimeType = 'image/png') {
|
|
44
|
+
const buffer = await this.resolveBuffer(resource);
|
|
45
|
+
return `data:${mimeType};base64,${buffer.toString('base64')}`;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Resolves a file to a name and buffer
|
|
49
|
+
* @param resource The file resource
|
|
50
|
+
*/
|
|
51
|
+
static async resolveFile(resource) {
|
|
52
|
+
if (typeof resource === 'object' && 'attachment' in resource) {
|
|
53
|
+
const buffer = await this.resolveBuffer(resource.attachment);
|
|
54
|
+
const name = resource.name ?? 'file';
|
|
55
|
+
return { name, data: buffer };
|
|
56
|
+
}
|
|
57
|
+
const buffer = await this.resolveBuffer(resource);
|
|
58
|
+
const name = typeof resource === 'string' ? basename(resource) : 'file';
|
|
59
|
+
return { name, data: buffer };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Resolves multiple files
|
|
63
|
+
* @param resources The file resources
|
|
64
|
+
*/
|
|
65
|
+
static async resolveFiles(resources) {
|
|
66
|
+
return Promise.all(resources.map(r => this.resolveFile(r)));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolves a color to a number
|
|
70
|
+
* @param color The color to resolve
|
|
71
|
+
*/
|
|
72
|
+
static resolveColor(color) {
|
|
73
|
+
if (color === null)
|
|
74
|
+
return null;
|
|
75
|
+
if (typeof color === 'number') {
|
|
76
|
+
if (color < 0 || color > 0xFFFFFF)
|
|
77
|
+
throw new RangeError('Color must be between 0 and 16777215');
|
|
78
|
+
return color;
|
|
79
|
+
}
|
|
80
|
+
if (typeof color === 'string') {
|
|
81
|
+
if (color.startsWith('#')) {
|
|
82
|
+
return parseInt(color.slice(1), 16);
|
|
83
|
+
}
|
|
84
|
+
// Named colors
|
|
85
|
+
const namedColors = {
|
|
86
|
+
default: 0x000000,
|
|
87
|
+
white: 0xFFFFFF,
|
|
88
|
+
aqua: 0x1ABC9C,
|
|
89
|
+
green: 0x57F287,
|
|
90
|
+
blue: 0x3498DB,
|
|
91
|
+
yellow: 0xFEE75C,
|
|
92
|
+
purple: 0x9B59B6,
|
|
93
|
+
fuchsia: 0xEB459E,
|
|
94
|
+
gold: 0xF1C40F,
|
|
95
|
+
orange: 0xE67E22,
|
|
96
|
+
red: 0xED4245,
|
|
97
|
+
grey: 0x95A5A6,
|
|
98
|
+
navy: 0x34495E,
|
|
99
|
+
blurple: 0x5865F2,
|
|
100
|
+
};
|
|
101
|
+
const lower = color.toLowerCase();
|
|
102
|
+
if (lower in namedColors)
|
|
103
|
+
return namedColors[lower];
|
|
104
|
+
return parseInt(color, 16);
|
|
105
|
+
}
|
|
106
|
+
if (Array.isArray(color)) {
|
|
107
|
+
return (color[0] << 16) + (color[1] << 8) + color[2];
|
|
108
|
+
}
|
|
109
|
+
throw new TypeError('Invalid color type');
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Resolves a string to a snowflake ID
|
|
113
|
+
* @param value The value to resolve
|
|
114
|
+
*/
|
|
115
|
+
static resolveSnowflake(value) {
|
|
116
|
+
if (typeof value === 'object' && 'id' in value) {
|
|
117
|
+
return String(value.id);
|
|
118
|
+
}
|
|
119
|
+
return String(value);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Resolves an image to a base64 data URI
|
|
123
|
+
* @param image The image to resolve
|
|
124
|
+
*/
|
|
125
|
+
static async resolveImage(image) {
|
|
126
|
+
const buffer = await this.resolveBuffer(image);
|
|
127
|
+
// Detect MIME type from magic bytes
|
|
128
|
+
let mimeType = 'image/png';
|
|
129
|
+
if (buffer[0] === 0xFF && buffer[1] === 0xD8) {
|
|
130
|
+
mimeType = 'image/jpeg';
|
|
131
|
+
}
|
|
132
|
+
else if (buffer[0] === 0x47 && buffer[1] === 0x49 && buffer[2] === 0x46) {
|
|
133
|
+
mimeType = 'image/gif';
|
|
134
|
+
}
|
|
135
|
+
else if (buffer[0] === 0x52 && buffer[1] === 0x49 && buffer[2] === 0x46 && buffer[3] === 0x46) {
|
|
136
|
+
mimeType = 'image/webp';
|
|
137
|
+
}
|
|
138
|
+
return `data:${mimeType};base64,${buffer.toString('base64')}`;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
export default DataResolver;
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL0RhdGFSZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtoQzs7R0FFRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQTBCO1FBQ25ELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUUvQyxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLDRCQUE0QjtZQUM1QixJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDdkgsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUVELHNCQUFzQjtZQUN0QixJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN0RSxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdkMsTUFBTSxXQUFXLEdBQUcsTUFBTSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBRUQsdUJBQXVCO1lBQ3ZC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QUFDO1FBRS9DLG9DQUFvQztRQUNwQyxJQUFJLFFBQVEsR0FBRyxXQUFXLENBQUM7UUFDM0IsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3QyxRQUFRLEdBQUcsWUFBWSxDQUFDO1FBQzFCLENBQUM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUUsUUFBUSxHQUFHLFdBQVcsQ0FBQztRQUN6QixDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDaEcsUUFBUSxHQUFHLFlBQVksQ0FBQztRQUMxQixDQUFDO1FBRUQsT0FBTyxRQUFRLFFBQVEsV0FBVyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDaEUsQ0FBQztDQUNGO0FBRUQsZUFBZSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERhdGEgcmVzb2x2ZXIgdXRpbGl0aWVzIGZvciBoYW5kbGluZyB2YXJpb3VzIGRhdGEgdHlwZXNcbiAqL1xuXG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAncGF0aCc7XG5cbmV4cG9ydCB0eXBlIEJ1ZmZlclJlc29sdmFibGUgPSBCdWZmZXIgfCBzdHJpbmc7XG5leHBvcnQgdHlwZSBCYXNlNjRSZXNvbHZhYmxlID0gQnVmZmVyIHwgc3RyaW5nO1xuXG4vKipcbiAqIFJlc29sdmVzIHZhcmlvdXMgZGF0YSB0eXBlcyB0byB1c2FibGUgZm9ybWF0c1xuICovXG5leHBvcnQgY2xhc3MgRGF0YVJlc29sdmVyIHtcbiAgLyoqXG4gICAqIFJlc29sdmVzIGEgQnVmZmVyUmVzb2x2YWJsZSB0byBhIEJ1ZmZlclxuICAgKiBAcGFyYW0gcmVzb3VyY2UgVGhlIHJlc291cmNlIHRvIHJlc29sdmVcbiAgICovXG4gIHN0YXRpYyBhc3luYyByZXNvbHZlQnVmZmVyKHJlc291cmNlOiBCdWZmZXJSZXNvbHZhYmxlKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKHJlc291cmNlKSkgcmV0dXJuIHJlc291cmNlO1xuICAgIFxuICAgIGlmICh0eXBlb2YgcmVzb3VyY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBDaGVjayBpZiBpdCdzIGEgZmlsZSBwYXRoXG4gICAgICBpZiAocmVzb3VyY2Uuc3RhcnRzV2l0aCgnLycpIHx8IHJlc291cmNlLnN0YXJ0c1dpdGgoJy4vJykgfHwgcmVzb3VyY2Uuc3RhcnRzV2l0aCgnLi4vJykgfHwgL15bYS16QS1aXTovLnRlc3QocmVzb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiByZWFkRmlsZShyZXNvdXJjZSk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIENoZWNrIGlmIGl0J3MgYSBVUkxcbiAgICAgIGlmIChyZXNvdXJjZS5zdGFydHNXaXRoKCdodHRwOi8vJykgfHwgcmVzb3VyY2Uuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHJlc291cmNlKTtcbiAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpO1xuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oYXJyYXlCdWZmZXIpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDaGVjayBpZiBpdCdzIGJhc2U2NFxuICAgICAgaWYgKHJlc291cmNlLnN0YXJ0c1dpdGgoJ2RhdGE6JykpIHtcbiAgICAgICAgY29uc3QgYmFzZTY0RGF0YSA9IHJlc291cmNlLnNwbGl0KCcsJylbMV07XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShiYXNlNjREYXRhLCAnYmFzZTY0Jyk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIEFzc3VtZSBpdCdzIGEgZmlsZSBwYXRoXG4gICAgICByZXR1cm4gcmVhZEZpbGUocmVzb3VyY2UpO1xuICAgIH1cbiAgICBcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHJlc291cmNlIHR5cGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhIEJhc2U2NFJlc29sdmFibGUgdG8gYSBiYXNlNjQgc3RyaW5nXG4gICAqIEBwYXJhbSByZXNvdXJjZSBUaGUgcmVzb3VyY2UgdG8gcmVzb2x2ZVxuICAgKiBAcGFyYW0gbWltZVR5cGUgVGhlIE1JTUUgdHlwZSBmb3IgdGhlIGRhdGEgVVJJXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgcmVzb2x2ZUJhc2U2NChyZXNvdXJjZTogQmFzZTY0UmVzb2x2YWJsZSwgbWltZVR5cGUgPSAnaW1hZ2UvcG5nJyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy5yZXNvbHZlQnVmZmVyKHJlc291cmNlKTtcbiAgICByZXR1cm4gYGRhdGE6JHttaW1lVHlwZX07YmFzZTY0LCR7YnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGEgZmlsZSB0byBhIG5hbWUgYW5kIGJ1ZmZlclxuICAgKiBAcGFyYW0gcmVzb3VyY2UgVGhlIGZpbGUgcmVzb3VyY2VcbiAgICovXG4gIHN0YXRpYyBhc3luYyByZXNvbHZlRmlsZShyZXNvdXJjZTogQnVmZmVyUmVzb2x2YWJsZSB8IHsgbmFtZT86IHN0cmluZzsgYXR0YWNobWVudDogQnVmZmVyUmVzb2x2YWJsZSB9KTogUHJvbWlzZTx7IG5hbWU6IHN0cmluZzsgZGF0YTogQnVmZmVyIH0+IHtcbiAgICBpZiAodHlwZW9mIHJlc291cmNlID09PSAnb2JqZWN0JyAmJiAnYXR0YWNobWVudCcgaW4gcmVzb3VyY2UpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMucmVzb2x2ZUJ1ZmZlcihyZXNvdXJjZS5hdHRhY2htZW50KTtcbiAgICAgIGNvbnN0IG5hbWUgPSByZXNvdXJjZS5uYW1lID8/ICdmaWxlJztcbiAgICAgIHJldHVybiB7IG5hbWUsIGRhdGE6IGJ1ZmZlciB9O1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCB0aGlzLnJlc29sdmVCdWZmZXIocmVzb3VyY2UpO1xuICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgcmVzb3VyY2UgPT09ICdzdHJpbmcnID8gYmFzZW5hbWUocmVzb3VyY2UpIDogJ2ZpbGUnO1xuICAgIHJldHVybiB7IG5hbWUsIGRhdGE6IGJ1ZmZlciB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIG11bHRpcGxlIGZpbGVzXG4gICAqIEBwYXJhbSByZXNvdXJjZXMgVGhlIGZpbGUgcmVzb3VyY2VzXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgcmVzb2x2ZUZpbGVzKHJlc291cmNlczogKEJ1ZmZlclJlc29sdmFibGUgfCB7IG5hbWU/OiBzdHJpbmc7IGF0dGFjaG1lbnQ6IEJ1ZmZlclJlc29sdmFibGUgfSlbXSk6IFByb21pc2U8eyBuYW1lOiBzdHJpbmc7IGRhdGE6IEJ1ZmZlciB9W10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzb3VyY2VzLm1hcChyID0+IHRoaXMucmVzb2x2ZUZpbGUocikpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhIGNvbG9yIHRvIGEgbnVtYmVyXG4gICAqIEBwYXJhbSBjb2xvciBUaGUgY29sb3IgdG8gcmVzb2x2ZVxuICAgKi9cbiAgc3RhdGljIHJlc29sdmVDb2xvcihjb2xvcjogbnVtYmVyIHwgc3RyaW5nIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgbnVsbCk6IG51bWJlciB8IG51bGwge1xuICAgIGlmIChjb2xvciA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgXG4gICAgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ251bWJlcicpIHtcbiAgICAgIGlmIChjb2xvciA8IDAgfHwgY29sb3IgPiAweEZGRkZGRikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0NvbG9yIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxNjc3NzIxNScpO1xuICAgICAgcmV0dXJuIGNvbG9yO1xuICAgIH1cbiAgICBcbiAgICBpZiAodHlwZW9mIGNvbG9yID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKGNvbG9yLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMSksIDE2KTtcbiAgICAgIH1cbiAgICAgIC8vIE5hbWVkIGNvbG9yc1xuICAgICAgY29uc3QgbmFtZWRDb2xvcnM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gICAgICAgIGRlZmF1bHQ6IDB4MDAwMDAwLFxuICAgICAgICB3aGl0ZTogMHhGRkZGRkYsXG4gICAgICAgIGFxdWE6IDB4MUFCQzlDLFxuICAgICAgICBncmVlbjogMHg1N0YyODcsXG4gICAgICAgIGJsdWU6IDB4MzQ5OERCLFxuICAgICAgICB5ZWxsb3c6IDB4RkVFNzVDLFxuICAgICAgICBwdXJwbGU6IDB4OUI1OUI2LFxuICAgICAgICBmdWNoc2lhOiAweEVCNDU5RSxcbiAgICAgICAgZ29sZDogMHhGMUM0MEYsXG4gICAgICAgIG9yYW5nZTogMHhFNjdFMjIsXG4gICAgICAgIHJlZDogMHhFRDQyNDUsXG4gICAgICAgIGdyZXk6IDB4OTVBNUE2LFxuICAgICAgICBuYXZ5OiAweDM0NDk1RSxcbiAgICAgICAgYmx1cnBsZTogMHg1ODY1RjIsXG4gICAgICB9O1xuICAgICAgY29uc3QgbG93ZXIgPSBjb2xvci50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKGxvd2VyIGluIG5hbWVkQ29sb3JzKSByZXR1cm4gbmFtZWRDb2xvcnNbbG93ZXJdO1xuICAgICAgcmV0dXJuIHBhcnNlSW50KGNvbG9yLCAxNik7XG4gICAgfVxuICAgIFxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgICAgcmV0dXJuIChjb2xvclswXSA8PCAxNikgKyAoY29sb3JbMV0gPDwgOCkgKyBjb2xvclsyXTtcbiAgICB9XG4gICAgXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjb2xvciB0eXBlJyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgYSBzdHJpbmcgdG8gYSBzbm93Zmxha2UgSURcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byByZXNvbHZlXG4gICAqL1xuICBzdGF0aWMgcmVzb2x2ZVNub3dmbGFrZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgeyBpZDogc3RyaW5nIHwgbnVtYmVyIH0pOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdpZCcgaW4gdmFsdWUpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUuaWQpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbiBpbWFnZSB0byBhIGJhc2U2NCBkYXRhIFVSSVxuICAgKiBAcGFyYW0gaW1hZ2UgVGhlIGltYWdlIHRvIHJlc29sdmVcbiAgICovXG4gIHN0YXRpYyBhc3luYyByZXNvbHZlSW1hZ2UoaW1hZ2U6IEJ1ZmZlclJlc29sdmFibGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMucmVzb2x2ZUJ1ZmZlcihpbWFnZSk7XG4gICAgXG4gICAgLy8gRGV0ZWN0IE1JTUUgdHlwZSBmcm9tIG1hZ2ljIGJ5dGVzXG4gICAgbGV0IG1pbWVUeXBlID0gJ2ltYWdlL3BuZyc7XG4gICAgaWYgKGJ1ZmZlclswXSA9PT0gMHhGRiAmJiBidWZmZXJbMV0gPT09IDB4RDgpIHtcbiAgICAgIG1pbWVUeXBlID0gJ2ltYWdlL2pwZWcnO1xuICAgIH0gZWxzZSBpZiAoYnVmZmVyWzBdID09PSAweDQ3ICYmIGJ1ZmZlclsxXSA9PT0gMHg0OSAmJiBidWZmZXJbMl0gPT09IDB4NDYpIHtcbiAgICAgIG1pbWVUeXBlID0gJ2ltYWdlL2dpZic7XG4gICAgfSBlbHNlIGlmIChidWZmZXJbMF0gPT09IDB4NTIgJiYgYnVmZmVyWzFdID09PSAweDQ5ICYmIGJ1ZmZlclsyXSA9PT0gMHg0NiAmJiBidWZmZXJbM10gPT09IDB4NDYpIHtcbiAgICAgIG1pbWVUeXBlID0gJ2ltYWdlL3dlYnAnO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gYGRhdGE6JHttaW1lVHlwZX07YmFzZTY0LCR7YnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKX1gO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERhdGFSZXNvbHZlcjtcbiJdfQ==
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formatters for markdown and mentions
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Formats a user mention
|
|
6
|
+
* @param userId The user ID to mention
|
|
7
|
+
*/
|
|
8
|
+
export function userMention(userId) {
|
|
9
|
+
return `<@${userId}>`;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Formats a channel mention
|
|
13
|
+
* @param channelId The channel ID to mention
|
|
14
|
+
*/
|
|
15
|
+
export function channelMention(channelId) {
|
|
16
|
+
return `<#${channelId}>`;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Formats a role mention
|
|
20
|
+
* @param roleId The role ID to mention
|
|
21
|
+
*/
|
|
22
|
+
export function roleMention(roleId) {
|
|
23
|
+
return `<@&${roleId}>`;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Formats a custom emoji
|
|
27
|
+
* @param emojiId The emoji ID
|
|
28
|
+
* @param name The emoji name
|
|
29
|
+
* @param animated Whether the emoji is animated
|
|
30
|
+
*/
|
|
31
|
+
export function formatEmoji(emojiId, name, animated = false) {
|
|
32
|
+
return `<${animated ? 'a' : ''}:${name}:${emojiId}>`;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Formats text as bold
|
|
36
|
+
* @param text The text to format
|
|
37
|
+
*/
|
|
38
|
+
export function bold(text) {
|
|
39
|
+
return `**${text}**`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Formats text as italic
|
|
43
|
+
* @param text The text to format
|
|
44
|
+
*/
|
|
45
|
+
export function italic(text) {
|
|
46
|
+
return `*${text}*`;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Formats text as underline
|
|
50
|
+
* @param text The text to format
|
|
51
|
+
*/
|
|
52
|
+
export function underline(text) {
|
|
53
|
+
return `__${text}__`;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Formats text as strikethrough
|
|
57
|
+
* @param text The text to format
|
|
58
|
+
*/
|
|
59
|
+
export function strikethrough(text) {
|
|
60
|
+
return `~~${text}~~`;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Formats text as spoiler
|
|
64
|
+
* @param text The text to format
|
|
65
|
+
*/
|
|
66
|
+
export function spoiler(text) {
|
|
67
|
+
return `||${text}||`;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Formats text as inline code
|
|
71
|
+
* @param text The text to format
|
|
72
|
+
*/
|
|
73
|
+
export function inlineCode(text) {
|
|
74
|
+
return `\`${text}\``;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Formats text as a code block
|
|
78
|
+
* @param text The text to format
|
|
79
|
+
* @param language The language for syntax highlighting
|
|
80
|
+
*/
|
|
81
|
+
export function codeBlock(text, language) {
|
|
82
|
+
return `\`\`\`${language ?? ''}\n${text}\n\`\`\``;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Formats text as a block quote
|
|
86
|
+
* @param text The text to format
|
|
87
|
+
*/
|
|
88
|
+
export function blockQuote(text) {
|
|
89
|
+
return `>>> ${text}`;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Formats text as a single-line quote
|
|
93
|
+
* @param text The text to format
|
|
94
|
+
*/
|
|
95
|
+
export function quote(text) {
|
|
96
|
+
return `> ${text}`;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Formats a URL as a hyperlink
|
|
100
|
+
* @param text The text to display
|
|
101
|
+
* @param url The URL to link to
|
|
102
|
+
* @param title Optional title for the link
|
|
103
|
+
*/
|
|
104
|
+
export function hyperlink(text, url, title) {
|
|
105
|
+
return title ? `[${text}](${url} "${title}")` : `[${text}](${url})`;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Formats a URL to hide the embed
|
|
109
|
+
* @param url The URL to format
|
|
110
|
+
*/
|
|
111
|
+
export function hideLinkEmbed(url) {
|
|
112
|
+
return `<${url}>`;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Time format styles
|
|
116
|
+
*/
|
|
117
|
+
export var TimestampStyles;
|
|
118
|
+
(function (TimestampStyles) {
|
|
119
|
+
/** Short time format (e.g., 16:20) */
|
|
120
|
+
TimestampStyles["ShortTime"] = "t";
|
|
121
|
+
/** Long time format (e.g., 16:20:30) */
|
|
122
|
+
TimestampStyles["LongTime"] = "T";
|
|
123
|
+
/** Short date format (e.g., 20/04/2021) */
|
|
124
|
+
TimestampStyles["ShortDate"] = "d";
|
|
125
|
+
/** Long date format (e.g., 20 April 2021) */
|
|
126
|
+
TimestampStyles["LongDate"] = "D";
|
|
127
|
+
/** Short date/time format (e.g., 20 April 2021 16:20) */
|
|
128
|
+
TimestampStyles["ShortDateTime"] = "f";
|
|
129
|
+
/** Long date/time format (e.g., Tuesday, 20 April 2021 16:20) */
|
|
130
|
+
TimestampStyles["LongDateTime"] = "F";
|
|
131
|
+
/** Relative time format (e.g., 2 months ago) */
|
|
132
|
+
TimestampStyles["RelativeTime"] = "R";
|
|
133
|
+
})(TimestampStyles || (TimestampStyles = {}));
|
|
134
|
+
/**
|
|
135
|
+
* Formats a timestamp
|
|
136
|
+
* @param timestamp The timestamp (Date, number in ms, or seconds)
|
|
137
|
+
* @param style The style to use
|
|
138
|
+
*/
|
|
139
|
+
export function time(timestamp, style) {
|
|
140
|
+
const seconds = timestamp instanceof Date
|
|
141
|
+
? Math.floor(timestamp.getTime() / 1000)
|
|
142
|
+
: typeof timestamp === 'number' && timestamp > 1e12
|
|
143
|
+
? Math.floor(timestamp / 1000)
|
|
144
|
+
: timestamp;
|
|
145
|
+
return style ? `<t:${seconds}:${style}>` : `<t:${seconds}>`;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Formats a heading (H1)
|
|
149
|
+
* @param text The text to format
|
|
150
|
+
*/
|
|
151
|
+
export function heading(text, level = 1) {
|
|
152
|
+
return `${'#'.repeat(level)} ${text}`;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Formats an unordered list
|
|
156
|
+
* @param items The items to list
|
|
157
|
+
*/
|
|
158
|
+
export function unorderedList(items) {
|
|
159
|
+
return items.map(item => `- ${item}`).join('\n');
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Formats an ordered list
|
|
163
|
+
* @param items The items to list
|
|
164
|
+
*/
|
|
165
|
+
export function orderedList(items) {
|
|
166
|
+
return items.map((item, i) => `${i + 1}. ${item}`).join('\n');
|
|
167
|
+
}
|
|
168
|
+
// Export all formatters as a namespace too (DJS compatibility)
|
|
169
|
+
export const Formatters = {
|
|
170
|
+
userMention,
|
|
171
|
+
channelMention,
|
|
172
|
+
roleMention,
|
|
173
|
+
formatEmoji,
|
|
174
|
+
bold,
|
|
175
|
+
italic,
|
|
176
|
+
underline,
|
|
177
|
+
strikethrough,
|
|
178
|
+
spoiler,
|
|
179
|
+
inlineCode,
|
|
180
|
+
codeBlock,
|
|
181
|
+
blockQuote,
|
|
182
|
+
quote,
|
|
183
|
+
hyperlink,
|
|
184
|
+
hideLinkEmbed,
|
|
185
|
+
time,
|
|
186
|
+
heading,
|
|
187
|
+
unorderedList,
|
|
188
|
+
orderedList,
|
|
189
|
+
TimestampStyles,
|
|
190
|
+
};
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybWF0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9Gb3JtYXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUg7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUF1QjtJQUNqRCxPQUFPLEtBQUssTUFBTSxHQUFHLENBQUM7QUFDeEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBMEI7SUFDdkQsT0FBTyxLQUFLLFNBQVMsR0FBRyxDQUFDO0FBQzNCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQXVCO0lBQ2pELE9BQU8sTUFBTSxNQUFNLEdBQUcsQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQXdCLEVBQUUsSUFBWSxFQUFFLFFBQVEsR0FBRyxLQUFLO0lBQ2xGLE9BQU8sSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUN2RCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FBQyxJQUFZO0lBQy9CLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQztBQUN2QixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxJQUFZO0lBQ2pDLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQztBQUNyQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFZO0lBQ3BDLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQztBQUN2QixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFZO0lBQ3hDLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQztBQUN2QixDQUFD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QUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixXQUFXO0lBQ1gsY0FBYztJQUNkLFdBQVc7SUFDWCxXQUFXO0lBQ1gsSUFBSTtJQUNKLE1BQU07SUFDTixTQUFTO0lBQ1QsYUFBYTtJQUNiLE9BQU87SUFDUCxVQUFVO0lBQ1YsU0FBUztJQUNULFVBQVU7SUFDVixLQUFLO0lBQ0wsU0FBUztJQUNULGFBQWE7SUFDYixJQUFJO0lBQ0osT0FBTztJQUNQLGFBQWE7SUFDYixXQUFXO0lBQ1gsZUFBZTtDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtYXR0ZXJzIGZvciBtYXJrZG93biBhbmQgbWVudGlvbnNcbiAqL1xuXG4vKipcbiAqIEZvcm1hdHMgYSB1c2VyIG1lbnRpb25cbiAqIEBwYXJhbSB1c2VySWQgVGhlIHVzZXIgSUQgdG8gbWVudGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlck1lbnRpb24odXNlcklkOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYDxAJHt1c2VySWR9PmA7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIGNoYW5uZWwgbWVudGlvblxuICogQHBhcmFtIGNoYW5uZWxJZCBUaGUgY2hhbm5lbCBJRCB0byBtZW50aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFubmVsTWVudGlvbihjaGFubmVsSWQ6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBgPCMke2NoYW5uZWxJZH0+YDtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgcm9sZSBtZW50aW9uXG4gKiBAcGFyYW0gcm9sZUlkIFRoZSByb2xlIElEIHRvIG1lbnRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVNZW50aW9uKHJvbGVJZDogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGA8QCYke3JvbGVJZH0+YDtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgY3VzdG9tIGVtb2ppXG4gKiBAcGFyYW0gZW1vamlJZCBUaGUgZW1vamkgSURcbiAqIEBwYXJhbSBuYW1lIFRoZSBlbW9qaSBuYW1lXG4gKiBAcGFyYW0gYW5pbWF0ZWQgV2hldGhlciB0aGUgZW1vamkgaXMgYW5pbWF0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVtb2ppKGVtb2ppSWQ6IHN0cmluZyB8IG51bWJlciwgbmFtZTogc3RyaW5nLCBhbmltYXRlZCA9IGZhbHNlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGA8JHthbmltYXRlZCA/ICdhJyA6ICcnfToke25hbWV9OiR7ZW1vamlJZH0+YDtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIHRleHQgYXMgYm9sZFxuICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gZm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib2xkKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgKioke3RleHR9KipgO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgdGV4dCBhcyBpdGFsaWNcbiAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXRhbGljKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgKiR7dGV4dH0qYDtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIHRleHQgYXMgdW5kZXJsaW5lXG4gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBmb3JtYXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuZGVybGluZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYF9fJHt0ZXh0fV9fYDtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIHRleHQgYXMgc3RyaWtldGhyb3VnaFxuICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gZm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpa2V0aHJvdWdoKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgfn4ke3RleHR9fn5gO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgdGV4dCBhcyBzcG9pbGVyXG4gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBmb3JtYXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwb2lsZXIodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGB8fCR7dGV4dH18fGA7XG59XG5cbi8qKlxuICogRm9ybWF0cyB0ZXh0IGFzIGlubGluZSBjb2RlXG4gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBmb3JtYXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlubGluZUNvZGUodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBcXGAke3RleHR9XFxgYDtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIHRleHQgYXMgYSBjb2RlIGJsb2NrXG4gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBmb3JtYXRcbiAqIEBwYXJhbSBsYW5ndWFnZSBUaGUgbGFuZ3VhZ2UgZm9yIHN5bnRheCBoaWdobGlnaHRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvZGVCbG9jayh0ZXh0OiBzdHJpbmcsIGxhbmd1YWdlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBcXGBcXGBcXGAke2xhbmd1YWdlID8/ICcnfVxcbiR7dGV4dH1cXG5cXGBcXGBcXGBgO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgdGV4dCBhcyBhIGJsb2NrIHF1b3RlXG4gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBmb3JtYXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJsb2NrUXVvdGUodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGA+Pj4gJHt0ZXh0fWA7XG59XG5cbi8qKlxuICogRm9ybWF0cyB0ZXh0IGFzIGEgc2luZ2xlLWxpbmUgcXVvdGVcbiAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcXVvdGUodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGA+ICR7dGV4dH1gO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgYSBVUkwgYXMgYSBoeXBlcmxpbmtcbiAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB1cmwgVGhlIFVSTCB0byBsaW5rIHRvXG4gKiBAcGFyYW0gdGl0bGUgT3B0aW9uYWwgdGl0bGUgZm9yIHRoZSBsaW5rXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoeXBlcmxpbmsodGV4dDogc3RyaW5nLCB1cmw6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGl0bGUgPyBgWyR7dGV4dH1dKCR7dXJsfSBcIiR7dGl0bGV9XCIpYCA6IGBbJHt0ZXh0fV0oJHt1cmx9KWA7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIFVSTCB0byBoaWRlIHRoZSBlbWJlZFxuICogQHBhcmFtIHVybCBUaGUgVVJMIHRvIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGlkZUxpbmtFbWJlZCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgPCR7dXJsfT5gO1xufVxuXG4vKipcbiAqIFRpbWUgZm9ybWF0IHN0eWxlc1xuICovXG5leHBvcnQgZW51bSBUaW1lc3RhbXBTdHlsZXMge1xuICAvKiogU2hvcnQgdGltZSBmb3JtYXQgKGUuZy4sIDE2OjIwKSAqL1xuICBTaG9ydFRpbWUgPSAndCcsXG4gIC8qKiBMb25nIHRpbWUgZm9ybWF0IChlLmcuLCAxNjoyMDozMCkgKi9cbiAgTG9uZ1RpbWUgPSAnVCcsXG4gIC8qKiBTaG9ydCBkYXRlIGZvcm1hdCAoZS5nLiwgMjAvMDQvMjAyMSkgKi9cbiAgU2hvcnREYXRlID0gJ2QnLFxuICAvKiogTG9uZyBkYXRlIGZvcm1hdCAoZS5nLiwgMjAgQXByaWwgMjAyMSkgKi9cbiAgTG9uZ0RhdGUgPSAnRCcsXG4gIC8qKiBTaG9ydCBkYXRlL3RpbWUgZm9ybWF0IChlLmcuLCAyMCBBcHJpbCAyMDIxIDE2OjIwKSAqL1xuICBTaG9ydERhdGVUaW1lID0gJ2YnLFxuICAvKiogTG9uZyBkYXRlL3RpbWUgZm9ybWF0IChlLmcuLCBUdWVzZGF5LCAyMCBBcHJpbCAyMDIxIDE2OjIwKSAqL1xuICBMb25nRGF0ZVRpbWUgPSAnRicsXG4gIC8qKiBSZWxhdGl2ZSB0aW1lIGZvcm1hdCAoZS5nLiwgMiBtb250aHMgYWdvKSAqL1xuICBSZWxhdGl2ZVRpbWUgPSAnUicsXG59XG5cbi8qKlxuICogRm9ybWF0cyBhIHRpbWVzdGFtcFxuICogQHBhcmFtIHRpbWVzdGFtcCBUaGUgdGltZXN0YW1wIChEYXRlLCBudW1iZXIgaW4gbXMsIG9yIHNlY29uZHMpXG4gKiBAcGFyYW0gc3R5bGUgVGhlIHN0eWxlIHRvIHVzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZSh0aW1lc3RhbXA6IERhdGUgfCBudW1iZXIsIHN0eWxlPzogVGltZXN0YW1wU3R5bGVzKTogc3RyaW5nIHtcbiAgY29uc3Qgc2Vjb25kcyA9IHRpbWVzdGFtcCBpbnN0YW5jZW9mIERhdGUgXG4gICAgPyBNYXRoLmZsb29yKHRpbWVzdGFtcC5nZXRUaW1lKCkgLyAxMDAwKSBcbiAgICA6IHR5cGVvZiB0aW1lc3RhbXAgPT09ICdudW1iZXInICYmIHRpbWVzdGFtcCA+IDFlMTIgXG4gICAgICA/IE1hdGguZmxvb3IodGltZXN0YW1wIC8gMTAwMCkgXG4gICAgICA6IHRpbWVzdGFtcDtcbiAgXG4gIHJldHVybiBzdHlsZSA/IGA8dDoke3NlY29uZHN9OiR7c3R5bGV9PmAgOiBgPHQ6JHtzZWNvbmRzfT5gO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgYSBoZWFkaW5nIChIMSlcbiAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGVhZGluZyh0ZXh0OiBzdHJpbmcsIGxldmVsOiAxIHwgMiB8IDMgPSAxKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAkeycjJy5yZXBlYXQobGV2ZWwpfSAke3RleHR9YDtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGFuIHVub3JkZXJlZCBsaXN0XG4gKiBAcGFyYW0gaXRlbXMgVGhlIGl0ZW1zIHRvIGxpc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVub3JkZXJlZExpc3QoaXRlbXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGAtICR7aXRlbX1gKS5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGFuIG9yZGVyZWQgbGlzdFxuICogQHBhcmFtIGl0ZW1zIFRoZSBpdGVtcyB0byBsaXN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcmRlcmVkTGlzdChpdGVtczogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gaXRlbXMubWFwKChpdGVtLCBpKSA9PiBgJHtpICsgMX0uICR7aXRlbX1gKS5qb2luKCdcXG4nKTtcbn1cblxuLy8gRXhwb3J0IGFsbCBmb3JtYXR0ZXJzIGFzIGEgbmFtZXNwYWNlIHRvbyAoREpTIGNvbXBhdGliaWxpdHkpXG5leHBvcnQgY29uc3QgRm9ybWF0dGVycyA9IHtcbiAgdXNlck1lbnRpb24sXG4gIGNoYW5uZWxNZW50aW9uLFxuICByb2xlTWVudGlvbixcbiAgZm9ybWF0RW1vamksXG4gIGJvbGQsXG4gIGl0YWxpYyxcbiAgdW5kZXJsaW5lLFxuICBzdHJpa2V0aHJvdWdoLFxuICBzcG9pbGVyLFxuICBpbmxpbmVDb2RlLFxuICBjb2RlQmxvY2ssXG4gIGJsb2NrUXVvdGUsXG4gIHF1b3RlLFxuICBoeXBlcmxpbmssXG4gIGhpZGVMaW5rRW1iZWQsXG4gIHRpbWUsXG4gIGhlYWRpbmcsXG4gIHVub3JkZXJlZExpc3QsXG4gIG9yZGVyZWRMaXN0LFxuICBUaW1lc3RhbXBTdHlsZXMsXG59O1xuIl19
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intents BitField for calculating gateway intents
|
|
3
|
+
*/
|
|
4
|
+
import { BitField } from './BitField';
|
|
5
|
+
/**
|
|
6
|
+
* Gateway Intent Bits
|
|
7
|
+
*/
|
|
8
|
+
export const GatewayIntentBits = {
|
|
9
|
+
Guilds: 1 << 0,
|
|
10
|
+
GuildMembers: 1 << 1,
|
|
11
|
+
GuildModeration: 1 << 2,
|
|
12
|
+
GuildEmojisAndStickers: 1 << 3,
|
|
13
|
+
GuildIntegrations: 1 << 4,
|
|
14
|
+
GuildWebhooks: 1 << 5,
|
|
15
|
+
GuildInvites: 1 << 6,
|
|
16
|
+
GuildVoiceStates: 1 << 7,
|
|
17
|
+
GuildPresences: 1 << 8,
|
|
18
|
+
GuildMessages: 1 << 9,
|
|
19
|
+
GuildMessageReactions: 1 << 10,
|
|
20
|
+
GuildMessageTyping: 1 << 11,
|
|
21
|
+
DirectMessages: 1 << 12,
|
|
22
|
+
DirectMessageReactions: 1 << 13,
|
|
23
|
+
DirectMessageTyping: 1 << 14,
|
|
24
|
+
MessageContent: 1 << 15,
|
|
25
|
+
GuildScheduledEvents: 1 << 16,
|
|
26
|
+
AutoModerationConfiguration: 1 << 20,
|
|
27
|
+
AutoModerationExecution: 1 << 21,
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* All non-privileged intents
|
|
31
|
+
*/
|
|
32
|
+
export const IntentsAll = Object.values(GatewayIntentBits).reduce((all, i) => all | i, 0);
|
|
33
|
+
/**
|
|
34
|
+
* Privileged intents that require approval
|
|
35
|
+
*/
|
|
36
|
+
export const PrivilegedIntents = GatewayIntentBits.GuildMembers |
|
|
37
|
+
GatewayIntentBits.GuildPresences |
|
|
38
|
+
GatewayIntentBits.MessageContent;
|
|
39
|
+
/**
|
|
40
|
+
* Data structure for gateway intents
|
|
41
|
+
*/
|
|
42
|
+
export class IntentsBitField extends BitField {
|
|
43
|
+
static Flags = GatewayIntentBits;
|
|
44
|
+
static DefaultBit = 0;
|
|
45
|
+
constructor(bits = 0) {
|
|
46
|
+
super(bits);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if any privileged intents are enabled
|
|
50
|
+
*/
|
|
51
|
+
hasPrivileged() {
|
|
52
|
+
return this.any(PrivilegedIntents);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get all privileged intents that are enabled
|
|
56
|
+
*/
|
|
57
|
+
getPrivileged() {
|
|
58
|
+
const privileged = [];
|
|
59
|
+
if (this.has(GatewayIntentBits.GuildMembers))
|
|
60
|
+
privileged.push('GuildMembers');
|
|
61
|
+
if (this.has(GatewayIntentBits.GuildPresences))
|
|
62
|
+
privileged.push('GuildPresences');
|
|
63
|
+
if (this.has(GatewayIntentBits.MessageContent))
|
|
64
|
+
privileged.push('MessageContent');
|
|
65
|
+
return privileged;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Calculate intents from an array of intent names or values
|
|
70
|
+
*/
|
|
71
|
+
export function calculateIntents(intents) {
|
|
72
|
+
return intents.reduce((acc, intent) => {
|
|
73
|
+
if (typeof intent === 'number')
|
|
74
|
+
return acc | intent;
|
|
75
|
+
if (intent in GatewayIntentBits)
|
|
76
|
+
return acc | GatewayIntentBits[intent];
|
|
77
|
+
return acc;
|
|
78
|
+
}, 0);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get all intent names from a bitfield value
|
|
82
|
+
*/
|
|
83
|
+
export function resolveIntents(bits) {
|
|
84
|
+
const names = [];
|
|
85
|
+
for (const [name, value] of Object.entries(GatewayIntentBits)) {
|
|
86
|
+
if ((bits & value) === value) {
|
|
87
|
+
names.push(name);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return names;
|
|
91
|
+
}
|
|
92
|
+
export default IntentsBitField;
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50ZW50c0JpdEZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL0ludGVudHNCaXRGaWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxRQUFRLEVBQXNCLE1BQU0sWUFBWSxDQUFDO0FBTzFEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2QsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3BCLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQztJQUN2QixzQkFBc0IsRUFBRSxDQUFDLElBQUksQ0FBQztJQUM5QixpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQztJQUN6QixhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDckIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3BCLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3hCLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQztJQUN0QixhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDckIscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEVBQUU7SUFDOUIsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLEVBQUU7SUFDM0IsY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFO0lBQ3ZCLHNCQUFzQixFQUFFLENBQUMsSUFBSSxFQUFFO0lBQy9CLG1CQUFtQixFQUFFLENBQUMsSUFBSSxFQUFFO0lBQzVCLGNBQWMsRUFBRSxDQUFDLElBQUksRUFBRTtJQUN2QixvQkFBb0IsRUFBRSxDQUFDLElBQUksRUFBRTtJQUM3QiwyQkFBMkIsRUFBRSxDQUFDLElBQUksRUFBRTtJQUNwQyx1QkFBdUIsRUFBRSxDQUFDLElBQUksRUFBRTtDQUN4QixDQUFDO0FBRVg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFMUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FDNUIsaUJBQWlCLENBQUMsWUFBWTtJQUM5QixpQkFBaUIsQ0FBQyxjQUFjO0lBQ2hDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQztBQUVuQzs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLFFBQW1DO0lBQ3RFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUM7SUFDakMsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFFdEIsWUFBWSxPQUFzRCxDQUFDO1FBQ2pFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsTUFBTSxVQUFVLEdBQXdCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDO1lBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5RSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDO1lBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xGLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUM7WUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEYsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzs7QUFHSDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUF1QztJQUN0RSxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDNUMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO1lBQUUsT0FBTyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ3BELElBQUksTUFBTSxJQUFJLGlCQUFpQjtZQUFFLE9BQU8sR0FBRyxHQUFHLGlCQUFpQixDQUFDLE1BQXdDLENBQUMsQ0FBQztRQUMxRyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN6QyxNQUFNLEtBQUssR0FBd0IsRUFBRSxDQUFDO0lBQ3RDLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzdCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBeUIsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsZUFBZSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEludGVudHMgQml0RmllbGQgZm9yIGNhbGN1bGF0aW5nIGdhdGV3YXkgaW50ZW50c1xuICovXG5cbmltcG9ydCB7IEJpdEZpZWxkLCBCaXRGaWVsZFJlc29sdmFibGUgfSBmcm9tICcuL0JpdEZpZWxkJztcblxuLyoqXG4gKiBJbnRlbnQgZmxhZyBuYW1lc1xuICovXG5leHBvcnQgdHlwZSBJbnRlbnRGbGFnc1N0cmluZyA9IGtleW9mIHR5cGVvZiBJbnRlbnRzQml0RmllbGQuRmxhZ3M7XG5cbi8qKlxuICogR2F0ZXdheSBJbnRlbnQgQml0c1xuICovXG5leHBvcnQgY29uc3QgR2F0ZXdheUludGVudEJpdHMgPSB7XG4gIEd1aWxkczogMSA8PCAwLFxuICBHdWlsZE1lbWJlcnM6IDEgPDwgMSxcbiAgR3VpbGRNb2RlcmF0aW9uOiAxIDw8IDIsXG4gIEd1aWxkRW1vamlzQW5kU3RpY2tlcnM6IDEgPDwgMyxcbiAgR3VpbGRJbnRlZ3JhdGlvbnM6IDEgPDwgNCxcbiAgR3VpbGRXZWJob29rczogMSA8PCA1LFxuICBHdWlsZEludml0ZXM6IDEgPDwgNixcbiAgR3VpbGRWb2ljZVN0YXRlczogMSA8PCA3LFxuICBHdWlsZFByZXNlbmNlczogMSA8PCA4LFxuICBHdWlsZE1lc3NhZ2VzOiAxIDw8IDksXG4gIEd1aWxkTWVzc2FnZVJlYWN0aW9uczogMSA8PCAxMCxcbiAgR3VpbGRNZXNzYWdlVHlwaW5nOiAxIDw8IDExLFxuICBEaXJlY3RNZXNzYWdlczogMSA8PCAxMixcbiAgRGlyZWN0TWVzc2FnZVJlYWN0aW9uczogMSA8PCAxMyxcbiAgRGlyZWN0TWVzc2FnZVR5cGluZzogMSA8PCAxNCxcbiAgTWVzc2FnZUNvbnRlbnQ6IDEgPDwgMTUsXG4gIEd1aWxkU2NoZWR1bGVkRXZlbnRzOiAxIDw8IDE2LFxuICBBdXRvTW9kZXJhdGlvbkNvbmZpZ3VyYXRpb246IDEgPDwgMjAsXG4gIEF1dG9Nb2RlcmF0aW9uRXhlY3V0aW9uOiAxIDw8IDIxLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBBbGwgbm9uLXByaXZpbGVnZWQgaW50ZW50c1xuICovXG5leHBvcnQgY29uc3QgSW50ZW50c0FsbCA9IE9iamVjdC52YWx1ZXMoR2F0ZXdheUludGVudEJpdHMpLnJlZHVjZSgoYWxsLCBpKSA9PiBhbGwgfCBpLCAwKTtcblxuLyoqXG4gKiBQcml2aWxlZ2VkIGludGVudHMgdGhhdCByZXF1aXJlIGFwcHJvdmFsXG4gKi9cbmV4cG9ydCBjb25zdCBQcml2aWxlZ2VkSW50ZW50cyA9IFxuICBHYXRld2F5SW50ZW50Qml0cy5HdWlsZE1lbWJlcnMgfCBcbiAgR2F0ZXdheUludGVudEJpdHMuR3VpbGRQcmVzZW5jZXMgfCBcbiAgR2F0ZXdheUludGVudEJpdHMuTWVzc2FnZUNvbnRlbnQ7XG5cbi8qKlxuICogRGF0YSBzdHJ1Y3R1cmUgZm9yIGdhdGV3YXkgaW50ZW50c1xuICovXG5leHBvcnQgY2xhc3MgSW50ZW50c0JpdEZpZWxkIGV4dGVuZHMgQml0RmllbGQ8SW50ZW50RmxhZ3NTdHJpbmcsIG51bWJlcj4ge1xuICBzdGF0aWMgRmxhZ3MgPSBHYXRld2F5SW50ZW50Qml0cztcbiAgc3RhdGljIERlZmF1bHRCaXQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKGJpdHM6IEJpdEZpZWxkUmVzb2x2YWJsZTxJbnRlbnRGbGFnc1N0cmluZywgbnVtYmVyPiA9IDApIHtcbiAgICBzdXBlcihiaXRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbnkgcHJpdmlsZWdlZCBpbnRlbnRzIGFyZSBlbmFibGVkXG4gICAqL1xuICBoYXNQcml2aWxlZ2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFueShQcml2aWxlZ2VkSW50ZW50cyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBwcml2aWxlZ2VkIGludGVudHMgdGhhdCBhcmUgZW5hYmxlZFxuICAgKi9cbiAgZ2V0UHJpdmlsZWdlZCgpOiBJbnRlbnRGbGFnc1N0cmluZ1tdIHtcbiAgICBjb25zdCBwcml2aWxlZ2VkOiBJbnRlbnRGbGFnc1N0cmluZ1tdID0gW107XG4gICAgaWYgKHRoaXMuaGFzKEdhdGV3YXlJbnRlbnRCaXRzLkd1aWxkTWVtYmVycykpIHByaXZpbGVnZWQucHVzaCgnR3VpbGRNZW1iZXJzJyk7XG4gICAgaWYgKHRoaXMuaGFzKEdhdGV3YXlJbnRlbnRCaXRzLkd1aWxkUHJlc2VuY2VzKSkgcHJpdmlsZWdlZC5wdXNoKCdHdWlsZFByZXNlbmNlcycpO1xuICAgIGlmICh0aGlzLmhhcyhHYXRld2F5SW50ZW50Qml0cy5NZXNzYWdlQ29udGVudCkpIHByaXZpbGVnZWQucHVzaCgnTWVzc2FnZUNvbnRlbnQnKTtcbiAgICByZXR1cm4gcHJpdmlsZWdlZDtcbiAgfVxufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBpbnRlbnRzIGZyb20gYW4gYXJyYXkgb2YgaW50ZW50IG5hbWVzIG9yIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlSW50ZW50cyhpbnRlbnRzOiAoSW50ZW50RmxhZ3NTdHJpbmcgfCBudW1iZXIpW10pOiBudW1iZXIge1xuICByZXR1cm4gaW50ZW50cy5yZWR1Y2U8bnVtYmVyPigoYWNjLCBpbnRlbnQpID0+IHtcbiAgICBpZiAodHlwZW9mIGludGVudCA9PT0gJ251bWJlcicpIHJldHVybiBhY2MgfCBpbnRlbnQ7XG4gICAgaWYgKGludGVudCBpbiBHYXRld2F5SW50ZW50Qml0cykgcmV0dXJuIGFjYyB8IEdhdGV3YXlJbnRlbnRCaXRzW2ludGVudCBhcyBrZXlvZiB0eXBlb2YgR2F0ZXdheUludGVudEJpdHNdO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIDApO1xufVxuXG4vKipcbiAqIEdldCBhbGwgaW50ZW50IG5hbWVzIGZyb20gYSBiaXRmaWVsZCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUludGVudHMoYml0czogbnVtYmVyKTogSW50ZW50RmxhZ3NTdHJpbmdbXSB7XG4gIGNvbnN0IG5hbWVzOiBJbnRlbnRGbGFnc1N0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhHYXRld2F5SW50ZW50Qml0cykpIHtcbiAgICBpZiAoKGJpdHMgJiB2YWx1ZSkgPT09IHZhbHVlKSB7XG4gICAgICBuYW1lcy5wdXNoKG5hbWUgYXMgSW50ZW50RmxhZ3NTdHJpbmcpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmFtZXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEludGVudHNCaXRGaWVsZDtcbiJdfQ==
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Partials - Handle uncached/partial data structures
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Partial types that can be enabled
|
|
6
|
+
*/
|
|
7
|
+
export var Partials;
|
|
8
|
+
(function (Partials) {
|
|
9
|
+
Partials[Partials["User"] = 0] = "User";
|
|
10
|
+
Partials[Partials["Channel"] = 1] = "Channel";
|
|
11
|
+
Partials[Partials["GuildMember"] = 2] = "GuildMember";
|
|
12
|
+
Partials[Partials["Message"] = 3] = "Message";
|
|
13
|
+
Partials[Partials["Reaction"] = 4] = "Reaction";
|
|
14
|
+
Partials[Partials["GuildScheduledEvent"] = 5] = "GuildScheduledEvent";
|
|
15
|
+
})(Partials || (Partials = {}));
|
|
16
|
+
/**
|
|
17
|
+
* Check if a structure is partial (missing data)
|
|
18
|
+
*/
|
|
19
|
+
export function isPartial(obj) {
|
|
20
|
+
return obj?.partial === true;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create a partial user structure
|
|
24
|
+
*/
|
|
25
|
+
export function createPartialUser(id) {
|
|
26
|
+
return {
|
|
27
|
+
id,
|
|
28
|
+
partial: true,
|
|
29
|
+
username: null,
|
|
30
|
+
discriminator: null,
|
|
31
|
+
avatar: null,
|
|
32
|
+
bot: null,
|
|
33
|
+
async fetch() {
|
|
34
|
+
throw new Error('Cannot fetch partial user without client context');
|
|
35
|
+
},
|
|
36
|
+
toString() {
|
|
37
|
+
return `<@${id}>`;
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a partial channel structure
|
|
43
|
+
*/
|
|
44
|
+
export function createPartialChannel(id) {
|
|
45
|
+
return {
|
|
46
|
+
id,
|
|
47
|
+
partial: true,
|
|
48
|
+
type: null,
|
|
49
|
+
name: null,
|
|
50
|
+
async fetch() {
|
|
51
|
+
throw new Error('Cannot fetch partial channel without client context');
|
|
52
|
+
},
|
|
53
|
+
toString() {
|
|
54
|
+
return `<#${id}>`;
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Create a partial message structure
|
|
60
|
+
*/
|
|
61
|
+
export function createPartialMessage(id, channelId) {
|
|
62
|
+
return {
|
|
63
|
+
id,
|
|
64
|
+
channelId,
|
|
65
|
+
partial: true,
|
|
66
|
+
content: null,
|
|
67
|
+
author: null,
|
|
68
|
+
embeds: null,
|
|
69
|
+
attachments: null,
|
|
70
|
+
async fetch() {
|
|
71
|
+
throw new Error('Cannot fetch partial message without client context');
|
|
72
|
+
},
|
|
73
|
+
toString() {
|
|
74
|
+
return `Message(${id})`;
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create a partial guild member structure
|
|
80
|
+
*/
|
|
81
|
+
export function createPartialGuildMember(userId, guildId) {
|
|
82
|
+
return {
|
|
83
|
+
id: userId,
|
|
84
|
+
guildId,
|
|
85
|
+
partial: true,
|
|
86
|
+
user: null,
|
|
87
|
+
nick: null,
|
|
88
|
+
roles: null,
|
|
89
|
+
joinedAt: null,
|
|
90
|
+
async fetch() {
|
|
91
|
+
throw new Error('Cannot fetch partial member without client context');
|
|
92
|
+
},
|
|
93
|
+
toString() {
|
|
94
|
+
return `<@${userId}>`;
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create a partial reaction structure
|
|
100
|
+
*/
|
|
101
|
+
export function createPartialReaction(messageId, emoji) {
|
|
102
|
+
return {
|
|
103
|
+
messageId,
|
|
104
|
+
emoji,
|
|
105
|
+
partial: true,
|
|
106
|
+
count: null,
|
|
107
|
+
me: null,
|
|
108
|
+
async fetch() {
|
|
109
|
+
throw new Error('Cannot fetch partial reaction without client context');
|
|
110
|
+
},
|
|
111
|
+
toString() {
|
|
112
|
+
return emoji;
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Make a structure partial-aware with fetch capability
|
|
118
|
+
*/
|
|
119
|
+
export function makePartialAware(structure, client, fetchFn) {
|
|
120
|
+
return {
|
|
121
|
+
...structure,
|
|
122
|
+
partial: false,
|
|
123
|
+
async fetch() {
|
|
124
|
+
const fetched = await fetchFn(structure.id);
|
|
125
|
+
Object.assign(this, fetched, { partial: false });
|
|
126
|
+
return this;
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check if partials are enabled for a type
|
|
132
|
+
*/
|
|
133
|
+
export function hasPartial(client, partial) {
|
|
134
|
+
return client.options?.partials?.includes(partial) ?? false;
|
|
135
|
+
}
|
|
136
|
+
export default Partials;
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFydGlhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvUGFydGlhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFFBT1g7QUFQRCxXQUFZLFFBQVE7SUFDbEIsdUNBQVEsQ0FBQTtJQUNSLDZDQUFXLENBQUE7SUFDWCxxREFBZSxDQUFBO0lBQ2YsNkNBQVcsQ0FBQTtJQUNYLCtDQUFZLENBQUE7SUFDWixxRUFBdUIsQ0FBQTtBQUN6QixDQUFDLEVBUFcsUUFBUSxLQUFSLFFBQVEsUUFPbkI7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBUTtJQUNoQyxPQUFPLEdBQUcsRUFBRSxPQUFPLEtBQUssSUFBSSxDQUFDO0FBQy9CLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxFQUFVO0lBQzFDLE9BQU87UUFDTCxFQUFFO1FBQ0YsT0FBTyxFQUFFLElBQUk7UUFDYixRQUFRLEVBQUUsSUFBSTtRQUNkLGFBQWEsRUFBRSxJQUFJO1FBQ25CLE1BQU0sRUFBRSxJQUFJO1FBQ1osR0FBRyxFQUFFLElBQUk7UUFFVCxLQUFLLENBQUMsS0FBSztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsUUFBUTtZQUNOLE9BQU8sS0FBSyxFQUFFLEdBQUcsQ0FBQztRQUNwQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxFQUFVO0lBQzdDLE9BQU87UUFDTCxFQUFFO1FBQ0YsT0FBTyxFQUFFLElBQUk7UUFDYixJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxJQUFJO1FBRVYsS0FBSyxDQUFDLEtBQUs7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELFFBQVE7WUFDTixPQUFPLEtBQUssRUFBRSxHQUFHLENBQUM7UUFDcEIsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsRUFBVSxFQUFFLFNBQWlCO0lBQ2hFLE9BQU87UUFDTCxFQUFFO1FBQ0YsU0FBUztRQUNULE9BQU8sRUFBRSxJQUFJO1FBQ2IsT0FBTyxFQUFFLElBQUk7UUFDYixNQUFNLEVBQUUsSUFBSTtRQUNaLE1BQU0sRUFBRSxJQUFJO1FBQ1osV0FBVyxFQUFFLElBQUk7UUFFakIsS0FBSyxDQUFDLEtBQUs7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELFFBQVE7WUFDTixPQUFPLFdBQVcsRUFBRSxHQUFHLENBQUM7UUFDMUIsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsTUFBYyxFQUFFLE9BQWU7SUFDdEUsT0FBTztRQUNMLEVBQUUsRUFBRSxNQUFNO1FBQ1YsT0FBTztRQUNQLE9BQU8sRUFBRSxJQUFJO1FBQ2IsSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsSUFBSTtRQUNWLEtBQUssRUFBRSxJQUFJO1FBQ1gsUUFBUSxFQUFFLElBQUk7UUFFZCxLQUFLLENBQUMsS0FBSztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsUUFBUTtZQUNOLE9BQU8sS0FBSyxNQUFNLEdBQUcsQ0FBQztRQUN4QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxTQUFpQixFQUFFLEtBQWE7SUFDcEUsT0FBTztRQUNMLFNBQVM7UUFDVCxLQUFLO1FBQ0wsT0FBTyxFQUFFLElBQUk7UUFDYixLQUFLLEVBQUUsSUFBSTtRQUNYLEVBQUUsRUFBRSxJQUFJO1FBRVIsS0FBSyxDQUFDLEtBQUs7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVELFFBQVE7WUFDTixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQTJERDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsU0FBWSxFQUNaLE1BQVcsRUFDWCxPQUFtQztJQUVuQyxPQUFPO1FBQ0wsR0FBRyxTQUFTO1FBQ1osT0FBTyxFQUFFLEtBQUs7UUFDZCxLQUFLLENBQUMsS0FBSztZQUNULE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNqRCxPQUFPLElBQVMsQ0FBQztRQUNuQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBVyxFQUFFLE9BQWlCO0lBQ3ZELE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUM5RCxDQUFDO0FBRUQsZUFBZSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBhcnRpYWxzIC0gSGFuZGxlIHVuY2FjaGVkL3BhcnRpYWwgZGF0YSBzdHJ1Y3R1cmVzXG4gKi9cblxuLyoqXG4gKiBQYXJ0aWFsIHR5cGVzIHRoYXQgY2FuIGJlIGVuYWJsZWRcbiAqL1xuZXhwb3J0IGVudW0gUGFydGlhbHMge1xuICBVc2VyID0gMCxcbiAgQ2hhbm5lbCA9IDEsXG4gIEd1aWxkTWVtYmVyID0gMixcbiAgTWVzc2FnZSA9IDMsXG4gIFJlYWN0aW9uID0gNCxcbiAgR3VpbGRTY2hlZHVsZWRFdmVudCA9IDUsXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdHJ1Y3R1cmUgaXMgcGFydGlhbCAobWlzc2luZyBkYXRhKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQYXJ0aWFsKG9iajogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBvYmo/LnBhcnRpYWwgPT09IHRydWU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgcGFydGlhbCB1c2VyIHN0cnVjdHVyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFydGlhbFVzZXIoaWQ6IHN0cmluZyk6IFBhcnRpYWxVc2VyIHtcbiAgcmV0dXJuIHtcbiAgICBpZCxcbiAgICBwYXJ0aWFsOiB0cnVlLFxuICAgIHVzZXJuYW1lOiBudWxsLFxuICAgIGRpc2NyaW1pbmF0b3I6IG51bGwsXG4gICAgYXZhdGFyOiBudWxsLFxuICAgIGJvdDogbnVsbCxcbiAgICBcbiAgICBhc3luYyBmZXRjaCgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZldGNoIHBhcnRpYWwgdXNlciB3aXRob3V0IGNsaWVudCBjb250ZXh0Jyk7XG4gICAgfSxcbiAgICBcbiAgICB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBgPEAke2lkfT5gO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgcGFydGlhbCBjaGFubmVsIHN0cnVjdHVyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFydGlhbENoYW5uZWwoaWQ6IHN0cmluZyk6IFBhcnRpYWxDaGFubmVsIHtcbiAgcmV0dXJuIHtcbiAgICBpZCxcbiAgICBwYXJ0aWFsOiB0cnVlLFxuICAgIHR5cGU6IG51bGwsXG4gICAgbmFtZTogbnVsbCxcbiAgICBcbiAgICBhc3luYyBmZXRjaCgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZldGNoIHBhcnRpYWwgY2hhbm5lbCB3aXRob3V0IGNsaWVudCBjb250ZXh0Jyk7XG4gICAgfSxcbiAgICBcbiAgICB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBgPCMke2lkfT5gO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgcGFydGlhbCBtZXNzYWdlIHN0cnVjdHVyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFydGlhbE1lc3NhZ2UoaWQ6IHN0cmluZywgY2hhbm5lbElkOiBzdHJpbmcpOiBQYXJ0aWFsTWVzc2FnZSB7XG4gIHJldHVybiB7XG4gICAgaWQsXG4gICAgY2hhbm5lbElkLFxuICAgIHBhcnRpYWw6IHRydWUsXG4gICAgY29udGVudDogbnVsbCxcbiAgICBhdXRob3I6IG51bGwsXG4gICAgZW1iZWRzOiBudWxsLFxuICAgIGF0dGFjaG1lbnRzOiBudWxsLFxuICAgIFxuICAgIGFzeW5jIGZldGNoKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmV0Y2ggcGFydGlhbCBtZXNzYWdlIHdpdGhvdXQgY2xpZW50IGNvbnRleHQnKTtcbiAgICB9LFxuICAgIFxuICAgIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIGBNZXNzYWdlKCR7aWR9KWA7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBwYXJ0aWFsIGd1aWxkIG1lbWJlciBzdHJ1Y3R1cmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhcnRpYWxHdWlsZE1lbWJlcih1c2VySWQ6IHN0cmluZywgZ3VpbGRJZDogc3RyaW5nKTogUGFydGlhbEd1aWxkTWVtYmVyIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogdXNlcklkLFxuICAgIGd1aWxkSWQsXG4gICAgcGFydGlhbDogdHJ1ZSxcbiAgICB1c2VyOiBudWxsLFxuICAgIG5pY2s6IG51bGwsXG4gICAgcm9sZXM6IG51bGwsXG4gICAgam9pbmVkQXQ6IG51bGwsXG4gICAgXG4gICAgYXN5bmMgZmV0Y2goKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmZXRjaCBwYXJ0aWFsIG1lbWJlciB3aXRob3V0IGNsaWVudCBjb250ZXh0Jyk7XG4gICAgfSxcbiAgICBcbiAgICB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBgPEAke3VzZXJJZH0+YDtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHBhcnRpYWwgcmVhY3Rpb24gc3RydWN0dXJlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXJ0aWFsUmVhY3Rpb24obWVzc2FnZUlkOiBzdHJpbmcsIGVtb2ppOiBzdHJpbmcpOiBQYXJ0aWFsUmVhY3Rpb24ge1xuICByZXR1cm4ge1xuICAgIG1lc3NhZ2VJZCxcbiAgICBlbW9qaSxcbiAgICBwYXJ0aWFsOiB0cnVlLFxuICAgIGNvdW50OiBudWxsLFxuICAgIG1lOiBudWxsLFxuICAgIFxuICAgIGFzeW5jIGZldGNoKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmV0Y2ggcGFydGlhbCByZWFjdGlvbiB3aXRob3V0IGNsaWVudCBjb250ZXh0Jyk7XG4gICAgfSxcbiAgICBcbiAgICB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBlbW9qaTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIFBhcnRpYWwgc3RydWN0dXJlIHR5cGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFydGlhbFVzZXIge1xuICBpZDogc3RyaW5nO1xuICBwYXJ0aWFsOiB0cnVlO1xuICB1c2VybmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgZGlzY3JpbWluYXRvcjogc3RyaW5nIHwgbnVsbDtcbiAgYXZhdGFyOiBzdHJpbmcgfCBudWxsO1xuICBib3Q6IGJvb2xlYW4gfCBudWxsO1xuICBmZXRjaCgpOiBQcm9taXNlPGFueT47XG4gIHRvU3RyaW5nKCk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aWFsQ2hhbm5lbCB7XG4gIGlkOiBzdHJpbmc7XG4gIHBhcnRpYWw6IHRydWU7XG4gIHR5cGU6IG51bWJlciB8IG51bGw7XG4gIG5hbWU6IHN0cmluZyB8IG51bGw7XG4gIGZldGNoKCk6IFByb21pc2U8YW55PjtcbiAgdG9TdHJpbmcoKTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpYWxNZXNzYWdlIHtcbiAgaWQ6IHN0cmluZztcbiAgY2hhbm5lbElkOiBzdHJpbmc7XG4gIHBhcnRpYWw6IHRydWU7XG4gIGNvbnRlbnQ6IHN0cmluZyB8IG51bGw7XG4gIGF1dGhvcjogYW55IHwgbnVsbDtcbiAgZW1iZWRzOiBhbnlbXSB8IG51bGw7XG4gIGF0dGFjaG1lbnRzOiBhbnlbXSB8IG51bGw7XG4gIGZldGNoKCk6IFByb21pc2U8YW55PjtcbiAgdG9TdHJpbmcoKTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpYWxHdWlsZE1lbWJlciB7XG4gIGlkOiBzdHJpbmc7XG4gIGd1aWxkSWQ6IHN0cmluZztcbiAgcGFydGlhbDogdHJ1ZTtcbiAgdXNlcjogYW55IHwgbnVsbDtcbiAgbmljazogc3RyaW5nIHwgbnVsbDtcbiAgcm9sZXM6IHN0cmluZ1tdIHwgbnVsbDtcbiAgam9pbmVkQXQ6IERhdGUgfCBudWxsO1xuICBmZXRjaCgpOiBQcm9taXNlPGFueT47XG4gIHRvU3RyaW5nKCk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aWFsUmVhY3Rpb24ge1xuICBtZXNzYWdlSWQ6IHN0cmluZztcbiAgZW1vamk6IHN0cmluZztcbiAgcGFydGlhbDogdHJ1ZTtcbiAgY291bnQ6IG51bWJlciB8IG51bGw7XG4gIG1lOiBib29sZWFuIHwgbnVsbDtcbiAgZmV0Y2goKTogUHJvbWlzZTxhbnk+O1xuICB0b1N0cmluZygpOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWFrZSBhIHN0cnVjdHVyZSBwYXJ0aWFsLWF3YXJlIHdpdGggZmV0Y2ggY2FwYWJpbGl0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVBhcnRpYWxBd2FyZTxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIH0+KFxuICBzdHJ1Y3R1cmU6IFQsXG4gIGNsaWVudDogYW55LFxuICBmZXRjaEZuOiAoaWQ6IHN0cmluZykgPT4gUHJvbWlzZTxUPlxuKTogVCAmIHsgcGFydGlhbDogYm9vbGVhbjsgZmV0Y2g6ICgpID0+IFByb21pc2U8VD4gfSB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RydWN0dXJlLFxuICAgIHBhcnRpYWw6IGZhbHNlLFxuICAgIGFzeW5jIGZldGNoKCkge1xuICAgICAgY29uc3QgZmV0Y2hlZCA9IGF3YWl0IGZldGNoRm4oc3RydWN0dXJlLmlkKTtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZmV0Y2hlZCwgeyBwYXJ0aWFsOiBmYWxzZSB9KTtcbiAgICAgIHJldHVybiB0aGlzIGFzIFQ7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBwYXJ0aWFscyBhcmUgZW5hYmxlZCBmb3IgYSB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQYXJ0aWFsKGNsaWVudDogYW55LCBwYXJ0aWFsOiBQYXJ0aWFscyk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2xpZW50Lm9wdGlvbnM/LnBhcnRpYWxzPy5pbmNsdWRlcyhwYXJ0aWFsKSA/PyBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFydGlhbHM7XG4iXX0=
|