@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.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +166 -0
  3. package/dist/Client.d.ts +147 -0
  4. package/dist/Client.js +471 -0
  5. package/dist/builders/ActionRowBuilder.d.ts +53 -0
  6. package/dist/builders/ActionRowBuilder.js +68 -0
  7. package/dist/builders/ButtonBuilder.d.ts +77 -0
  8. package/dist/builders/ButtonBuilder.js +96 -0
  9. package/dist/builders/EmbedBuilder.d.ts +157 -0
  10. package/dist/builders/EmbedBuilder.js +199 -0
  11. package/dist/builders/ModalBuilder.d.ts +122 -0
  12. package/dist/builders/ModalBuilder.js +162 -0
  13. package/dist/builders/SelectMenuBuilder.d.ts +123 -0
  14. package/dist/builders/SelectMenuBuilder.js +165 -0
  15. package/dist/builders/SlashCommandBuilder.d.ts +197 -0
  16. package/dist/builders/SlashCommandBuilder.js +324 -0
  17. package/dist/builders/index.d.ts +9 -0
  18. package/dist/builders/index.js +26 -0
  19. package/dist/enums.d.ts +196 -0
  20. package/dist/enums.js +216 -0
  21. package/dist/index.d.ts +25 -0
  22. package/dist/index.js +128 -0
  23. package/dist/managers/BaseManager.d.ts +69 -0
  24. package/dist/managers/BaseManager.js +106 -0
  25. package/dist/managers/ChannelManager.d.ts +98 -0
  26. package/dist/managers/ChannelManager.js +209 -0
  27. package/dist/managers/GuildMemberManager.d.ts +74 -0
  28. package/dist/managers/GuildMemberManager.js +156 -0
  29. package/dist/managers/RoleManager.d.ts +84 -0
  30. package/dist/managers/RoleManager.js +207 -0
  31. package/dist/managers/index.d.ts +7 -0
  32. package/dist/managers/index.js +24 -0
  33. package/dist/rest/REST.d.ts +483 -0
  34. package/dist/rest/REST.js +805 -0
  35. package/dist/rest/index.d.ts +1 -0
  36. package/dist/rest/index.js +18 -0
  37. package/dist/sharding/ShardingManager.d.ts +179 -0
  38. package/dist/sharding/ShardingManager.js +375 -0
  39. package/dist/sharding/index.d.ts +4 -0
  40. package/dist/sharding/index.js +21 -0
  41. package/dist/structures/Channel.d.ts +120 -0
  42. package/dist/structures/Channel.js +224 -0
  43. package/dist/structures/Collection.d.ts +53 -0
  44. package/dist/structures/Collection.js +115 -0
  45. package/dist/structures/Guild.d.ts +59 -0
  46. package/dist/structures/Guild.js +90 -0
  47. package/dist/structures/GuildMember.d.ts +130 -0
  48. package/dist/structures/GuildMember.js +208 -0
  49. package/dist/structures/Interaction.d.ts +224 -0
  50. package/dist/structures/Interaction.js +404 -0
  51. package/dist/structures/Message.d.ts +93 -0
  52. package/dist/structures/Message.js +145 -0
  53. package/dist/structures/User.d.ts +37 -0
  54. package/dist/structures/User.js +65 -0
  55. package/dist/structures/index.d.ts +7 -0
  56. package/dist/structures/index.js +25 -0
  57. package/dist/structures.d.ts +1 -0
  58. package/dist/structures.js +19 -0
  59. package/dist/types.d.ts +255 -0
  60. package/dist/types.js +3 -0
  61. package/dist/utils/BitField.d.ts +66 -0
  62. package/dist/utils/BitField.js +138 -0
  63. package/dist/utils/Collection.d.ts +116 -0
  64. package/dist/utils/Collection.js +265 -0
  65. package/dist/utils/Collector.d.ts +152 -0
  66. package/dist/utils/Collector.js +314 -0
  67. package/dist/utils/DataResolver.d.ts +61 -0
  68. package/dist/utils/DataResolver.js +146 -0
  69. package/dist/utils/Formatters.d.ts +145 -0
  70. package/dist/utils/Formatters.js +213 -0
  71. package/dist/utils/IntentsBitField.d.ts +85 -0
  72. package/dist/utils/IntentsBitField.js +99 -0
  73. package/dist/utils/Partials.d.ts +105 -0
  74. package/dist/utils/Partials.js +149 -0
  75. package/dist/utils/PermissionsBitField.d.ts +118 -0
  76. package/dist/utils/PermissionsBitField.js +145 -0
  77. package/dist/utils/SnowflakeUtil.d.ts +63 -0
  78. package/dist/utils/SnowflakeUtil.js +93 -0
  79. package/dist/utils/Sweepers.d.ts +127 -0
  80. package/dist/utils/Sweepers.js +270 -0
  81. package/dist/utils/index.d.ts +13 -0
  82. package/dist/utils/index.js +30 -0
  83. package/package.json +37 -0
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ /**
3
+ * Data resolver utilities for handling various data types
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DataResolver = void 0;
7
+ const promises_1 = require("fs/promises");
8
+ const path_1 = require("path");
9
+ /**
10
+ * Resolves various data types to usable formats
11
+ */
12
+ class DataResolver {
13
+ /**
14
+ * Resolves a BufferResolvable to a Buffer
15
+ * @param resource The resource to resolve
16
+ */
17
+ static async resolveBuffer(resource) {
18
+ if (Buffer.isBuffer(resource))
19
+ return resource;
20
+ if (typeof resource === 'string') {
21
+ // Check if it's a file path
22
+ if (resource.startsWith('/') || resource.startsWith('./') || resource.startsWith('../') || /^[a-zA-Z]:/.test(resource)) {
23
+ return (0, promises_1.readFile)(resource);
24
+ }
25
+ // Check if it's a URL
26
+ if (resource.startsWith('http://') || resource.startsWith('https://')) {
27
+ const response = await fetch(resource);
28
+ const arrayBuffer = await response.arrayBuffer();
29
+ return Buffer.from(arrayBuffer);
30
+ }
31
+ // Check if it's base64
32
+ if (resource.startsWith('data:')) {
33
+ const base64Data = resource.split(',')[1];
34
+ return Buffer.from(base64Data, 'base64');
35
+ }
36
+ // Assume it's a file path
37
+ return (0, promises_1.readFile)(resource);
38
+ }
39
+ throw new TypeError('Invalid resource type');
40
+ }
41
+ /**
42
+ * Resolves a Base64Resolvable to a base64 string
43
+ * @param resource The resource to resolve
44
+ * @param mimeType The MIME type for the data URI
45
+ */
46
+ static async resolveBase64(resource, mimeType = 'image/png') {
47
+ const buffer = await this.resolveBuffer(resource);
48
+ return `data:${mimeType};base64,${buffer.toString('base64')}`;
49
+ }
50
+ /**
51
+ * Resolves a file to a name and buffer
52
+ * @param resource The file resource
53
+ */
54
+ static async resolveFile(resource) {
55
+ if (typeof resource === 'object' && 'attachment' in resource) {
56
+ const buffer = await this.resolveBuffer(resource.attachment);
57
+ const name = resource.name ?? 'file';
58
+ return { name, data: buffer };
59
+ }
60
+ const buffer = await this.resolveBuffer(resource);
61
+ const name = typeof resource === 'string' ? (0, path_1.basename)(resource) : 'file';
62
+ return { name, data: buffer };
63
+ }
64
+ /**
65
+ * Resolves multiple files
66
+ * @param resources The file resources
67
+ */
68
+ static async resolveFiles(resources) {
69
+ return Promise.all(resources.map(r => this.resolveFile(r)));
70
+ }
71
+ /**
72
+ * Resolves a color to a number
73
+ * @param color The color to resolve
74
+ */
75
+ static resolveColor(color) {
76
+ if (color === null)
77
+ return null;
78
+ if (typeof color === 'number') {
79
+ if (color < 0 || color > 0xFFFFFF)
80
+ throw new RangeError('Color must be between 0 and 16777215');
81
+ return color;
82
+ }
83
+ if (typeof color === 'string') {
84
+ if (color.startsWith('#')) {
85
+ return parseInt(color.slice(1), 16);
86
+ }
87
+ // Named colors
88
+ const namedColors = {
89
+ default: 0x000000,
90
+ white: 0xFFFFFF,
91
+ aqua: 0x1ABC9C,
92
+ green: 0x57F287,
93
+ blue: 0x3498DB,
94
+ yellow: 0xFEE75C,
95
+ purple: 0x9B59B6,
96
+ fuchsia: 0xEB459E,
97
+ gold: 0xF1C40F,
98
+ orange: 0xE67E22,
99
+ red: 0xED4245,
100
+ grey: 0x95A5A6,
101
+ navy: 0x34495E,
102
+ blurple: 0x5865F2,
103
+ };
104
+ const lower = color.toLowerCase();
105
+ if (lower in namedColors)
106
+ return namedColors[lower];
107
+ return parseInt(color, 16);
108
+ }
109
+ if (Array.isArray(color)) {
110
+ return (color[0] << 16) + (color[1] << 8) + color[2];
111
+ }
112
+ throw new TypeError('Invalid color type');
113
+ }
114
+ /**
115
+ * Resolves a string to a snowflake ID
116
+ * @param value The value to resolve
117
+ */
118
+ static resolveSnowflake(value) {
119
+ if (typeof value === 'object' && 'id' in value) {
120
+ return String(value.id);
121
+ }
122
+ return String(value);
123
+ }
124
+ /**
125
+ * Resolves an image to a base64 data URI
126
+ * @param image The image to resolve
127
+ */
128
+ static async resolveImage(image) {
129
+ const buffer = await this.resolveBuffer(image);
130
+ // Detect MIME type from magic bytes
131
+ let mimeType = 'image/png';
132
+ if (buffer[0] === 0xFF && buffer[1] === 0xD8) {
133
+ mimeType = 'image/jpeg';
134
+ }
135
+ else if (buffer[0] === 0x47 && buffer[1] === 0x49 && buffer[2] === 0x46) {
136
+ mimeType = 'image/gif';
137
+ }
138
+ else if (buffer[0] === 0x52 && buffer[1] === 0x49 && buffer[2] === 0x46 && buffer[3] === 0x46) {
139
+ mimeType = 'image/webp';
140
+ }
141
+ return `data:${mimeType};base64,${buffer.toString('base64')}`;
142
+ }
143
+ }
144
+ exports.DataResolver = DataResolver;
145
+ exports.default = DataResolver;
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL0RhdGFSZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUVILDBDQUF1QztBQUN2QywrQkFBZ0M7QUFLaEM7O0dBRUc7QUFDSCxNQUFhLFlBQVk7SUFDdkI7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBMEI7UUFDbkQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUFFLE9BQU8sUUFBUSxDQUFDO1FBRS9DLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDakMsNEJBQTRCO1lBQzVCLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN2SCxPQUFPLElBQUEsbUJBQVEsRUFBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBRUQsc0JBQXNCO1lBQ3RCLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RFLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN2QyxNQUFNLFdBQVcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFFRCx1QkFBdUI7WUFDdkIsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLE1B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QUFDO1FBQzNCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDN0MsUUFBUSxHQUFHLFlBQVksQ0FBQztRQUMxQixDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzFFLFFBQVEsR0FBRyxXQUFXLENBQUM7UUFDekIsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2hHLFFBQVEsR0FBRyxZQUFZLENBQUM7UUFDMUIsQ0FBQztRQUVELE9BQU8sUUFBUSxRQUFRLFdBQVcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ2hFLENBQUM7Q0FDRjtBQS9JRCxvQ0ErSUM7QUFFRCxrQkFBZSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogRGF0YSByZXNvbHZlciB1dGlsaXRpZXMgZm9yIGhhbmRsaW5nIHZhcmlvdXMgZGF0YSB0eXBlc1xyXG4gKi9cclxuXHJcbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnZnMvcHJvbWlzZXMnO1xyXG5pbXBvcnQgeyBiYXNlbmFtZSB9IGZyb20gJ3BhdGgnO1xyXG5cclxuZXhwb3J0IHR5cGUgQnVmZmVyUmVzb2x2YWJsZSA9IEJ1ZmZlciB8IHN0cmluZztcclxuZXhwb3J0IHR5cGUgQmFzZTY0UmVzb2x2YWJsZSA9IEJ1ZmZlciB8IHN0cmluZztcclxuXHJcbi8qKlxyXG4gKiBSZXNvbHZlcyB2YXJpb3VzIGRhdGEgdHlwZXMgdG8gdXNhYmxlIGZvcm1hdHNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBEYXRhUmVzb2x2ZXIge1xyXG4gIC8qKlxyXG4gICAqIFJlc29sdmVzIGEgQnVmZmVyUmVzb2x2YWJsZSB0byBhIEJ1ZmZlclxyXG4gICAqIEBwYXJhbSByZXNvdXJjZSBUaGUgcmVzb3VyY2UgdG8gcmVzb2x2ZVxyXG4gICAqL1xyXG4gIHN0YXRpYyBhc3luYyByZXNvbHZlQnVmZmVyKHJlc291cmNlOiBCdWZmZXJSZXNvbHZhYmxlKTogUHJvbWlzZTxCdWZmZXI+IHtcclxuICAgIGlmIChCdWZmZXIuaXNCdWZmZXIocmVzb3VyY2UpKSByZXR1cm4gcmVzb3VyY2U7XHJcbiAgICBcclxuICAgIGlmICh0eXBlb2YgcmVzb3VyY2UgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIC8vIENoZWNrIGlmIGl0J3MgYSBmaWxlIHBhdGhcclxuICAgICAgaWYgKHJlc291cmNlLnN0YXJ0c1dpdGgoJy8nKSB8fCByZXNvdXJjZS5zdGFydHNXaXRoKCcuLycpIHx8IHJlc291cmNlLnN0YXJ0c1dpdGgoJy4uLycpIHx8IC9eW2EtekEtWl06Ly50ZXN0KHJlc291cmNlKSkge1xyXG4gICAgICAgIHJldHVybiByZWFkRmlsZShyZXNvdXJjZSk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIENoZWNrIGlmIGl0J3MgYSBVUkxcclxuICAgICAgaWYgKHJlc291cmNlLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSB8fCByZXNvdXJjZS5zdGFydHNXaXRoKCdodHRwczovLycpKSB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZXNvdXJjZSk7XHJcbiAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpO1xyXG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlcik7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIENoZWNrIGlmIGl0J3MgYmFzZTY0XHJcbiAgICAgIGlmIChyZXNvdXJjZS5zdGFydHNXaXRoKCdkYXRhOicpKSB7XHJcbiAgICAgICAgY29uc3QgYmFzZTY0RGF0YSA9IHJlc291cmNlLnNwbGl0KCcsJylbMV07XHJcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGJhc2U2NERhdGEsICdiYXNlNjQnKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gQXNzdW1lIGl0J3MgYSBmaWxlIHBhdGhcclxuICAgICAgcmV0dXJuIHJlYWRGaWxlKHJlc291cmNlKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCByZXNvdXJjZSB0eXBlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlcyBhIEJhc2U2NFJlc29sdmFibGUgdG8gYSBiYXNlNjQgc3RyaW5nXHJcbiAgICogQHBhcmFtIHJlc291cmNlIFRoZSByZXNvdXJjZSB0byByZXNvbHZlXHJcbiAgICogQHBhcmFtIG1pbWVUeXBlIFRoZSBNSU1FIHR5cGUgZm9yIHRoZSBkYXRhIFVSSVxyXG4gICAqL1xyXG4gIHN0YXRpYyBhc3luYyByZXNvbHZlQmFzZTY0KHJlc291cmNlOiBCYXNlNjRSZXNvbHZhYmxlLCBtaW1lVHlwZSA9ICdpbWFnZS9wbmcnKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMucmVzb2x2ZUJ1ZmZlcihyZXNvdXJjZSk7XHJcbiAgICByZXR1cm4gYGRhdGE6JHttaW1lVHlwZX07YmFzZTY0LCR7YnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKX1gO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb2x2ZXMgYSBmaWxlIHRvIGEgbmFtZSBhbmQgYnVmZmVyXHJcbiAgICogQHBhcmFtIHJlc291cmNlIFRoZSBmaWxlIHJlc291cmNlXHJcbiAgICovXHJcbiAgc3RhdGljIGFzeW5jIHJlc29sdmVGaWxlKHJlc291cmNlOiBCdWZmZXJSZXNvbHZhYmxlIHwgeyBuYW1lPzogc3RyaW5nOyBhdHRhY2htZW50OiBCdWZmZXJSZXNvbHZhYmxlIH0pOiBQcm9taXNlPHsgbmFtZTogc3RyaW5nOyBkYXRhOiBCdWZmZXIgfT4ge1xyXG4gICAgaWYgKHR5cGVvZiByZXNvdXJjZSA9PT0gJ29iamVjdCcgJiYgJ2F0dGFjaG1lbnQnIGluIHJlc291cmNlKSB7XHJcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMucmVzb2x2ZUJ1ZmZlcihyZXNvdXJjZS5hdHRhY2htZW50KTtcclxuICAgICAgY29uc3QgbmFtZSA9IHJlc291cmNlLm5hbWUgPz8gJ2ZpbGUnO1xyXG4gICAgICByZXR1cm4geyBuYW1lLCBkYXRhOiBidWZmZXIgfTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy5yZXNvbHZlQnVmZmVyKHJlc291cmNlKTtcclxuICAgIGNvbnN0IG5hbWUgPSB0eXBlb2YgcmVzb3VyY2UgPT09ICdzdHJpbmcnID8gYmFzZW5hbWUocmVzb3VyY2UpIDogJ2ZpbGUnO1xyXG4gICAgcmV0dXJuIHsgbmFtZSwgZGF0YTogYnVmZmVyIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlcyBtdWx0aXBsZSBmaWxlc1xyXG4gICAqIEBwYXJhbSByZXNvdXJjZXMgVGhlIGZpbGUgcmVzb3VyY2VzXHJcbiAgICovXHJcbiAgc3RhdGljIGFzeW5jIHJlc29sdmVGaWxlcyhyZXNvdXJjZXM6IChCdWZmZXJSZXNvbHZhYmxlIHwgeyBuYW1lPzogc3RyaW5nOyBhdHRhY2htZW50OiBCdWZmZXJSZXNvbHZhYmxlIH0pW10pOiBQcm9taXNlPHsgbmFtZTogc3RyaW5nOyBkYXRhOiBCdWZmZXIgfVtdPiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzb3VyY2VzLm1hcChyID0+IHRoaXMucmVzb2x2ZUZpbGUocikpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc29sdmVzIGEgY29sb3IgdG8gYSBudW1iZXJcclxuICAgKiBAcGFyYW0gY29sb3IgVGhlIGNvbG9yIHRvIHJlc29sdmVcclxuICAgKi9cclxuICBzdGF0aWMgcmVzb2x2ZUNvbG9yKGNvbG9yOiBudW1iZXIgfCBzdHJpbmcgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBudWxsKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBpZiAoY29sb3IgPT09IG51bGwpIHJldHVybiBudWxsO1xyXG4gICAgXHJcbiAgICBpZiAodHlwZW9mIGNvbG9yID09PSAnbnVtYmVyJykge1xyXG4gICAgICBpZiAoY29sb3IgPCAwIHx8IGNvbG9yID4gMHhGRkZGRkYpIHRocm93IG5ldyBSYW5nZUVycm9yKCdDb2xvciBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTY3NzcyMTUnKTtcclxuICAgICAgcmV0dXJuIGNvbG9yO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAodHlwZW9mIGNvbG9yID09PSAnc3RyaW5nJykge1xyXG4gICAgICBpZiAoY29sb3Iuc3RhcnRzV2l0aCgnIycpKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KGNvbG9yLnNsaWNlKDEpLCAxNik7XHJcbiAgICAgIH1cclxuICAgICAgLy8gTmFtZWQgY29sb3JzXHJcbiAgICAgIGNvbnN0IG5hbWVkQ29sb3JzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xyXG4gICAgICAgIGRlZmF1bHQ6IDB4MDAwMDAwLFxyXG4gICAgICAgIHdoaXRlOiAweEZGRkZGRixcclxuICAgICAgICBhcXVhOiAweDFBQkM5QyxcclxuICAgICAgICBncmVlbjogMHg1N0YyODcsXHJcbiAgICAgICAgYmx1ZTogMHgzNDk4REIsXHJcbiAgICAgICAgeWVsbG93OiAweEZFRTc1QyxcclxuICAgICAgICBwdXJwbGU6IDB4OUI1OUI2LFxyXG4gICAgICAgIGZ1Y2hzaWE6IDB4RUI0NTlFLFxyXG4gICAgICAgIGdvbGQ6IDB4RjFDNDBGLFxyXG4gICAgICAgIG9yYW5nZTogMHhFNjdFMjIsXHJcbiAgICAgICAgcmVkOiAweEVENDI0NSxcclxuICAgICAgICBncmV5OiAweDk1QTVBNixcclxuICAgICAgICBuYXZ5OiAweDM0NDk1RSxcclxuICAgICAgICBibHVycGxlOiAweDU4NjVGMixcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgbG93ZXIgPSBjb2xvci50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBpZiAobG93ZXIgaW4gbmFtZWRDb2xvcnMpIHJldHVybiBuYW1lZENvbG9yc1tsb3dlcl07XHJcbiAgICAgIHJldHVybiBwYXJzZUludChjb2xvciwgMTYpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb2xvcikpIHtcclxuICAgICAgcmV0dXJuIChjb2xvclswXSA8PCAxNikgKyAoY29sb3JbMV0gPDwgOCkgKyBjb2xvclsyXTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjb2xvciB0eXBlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlcyBhIHN0cmluZyB0byBhIHNub3dmbGFrZSBJRFxyXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVzb2x2ZVxyXG4gICAqL1xyXG4gIHN0YXRpYyByZXNvbHZlU25vd2ZsYWtlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCB7IGlkOiBzdHJpbmcgfCBudW1iZXIgfSk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAnaWQnIGluIHZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUuaWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlcyBhbiBpbWFnZSB0byBhIGJhc2U2NCBkYXRhIFVSSVxyXG4gICAqIEBwYXJhbSBpbWFnZSBUaGUgaW1hZ2UgdG8gcmVzb2x2ZVxyXG4gICAqL1xyXG4gIHN0YXRpYyBhc3luYyByZXNvbHZlSW1hZ2UoaW1hZ2U6IEJ1ZmZlclJlc29sdmFibGUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy5yZXNvbHZlQnVmZmVyKGltYWdlKTtcclxuICAgIFxyXG4gICAgLy8gRGV0ZWN0IE1JTUUgdHlwZSBmcm9tIG1hZ2ljIGJ5dGVzXHJcbiAgICBsZXQgbWltZVR5cGUgPSAnaW1hZ2UvcG5nJztcclxuICAgIGlmIChidWZmZXJbMF0gPT09IDB4RkYgJiYgYnVmZmVyWzFdID09PSAweEQ4KSB7XHJcbiAgICAgIG1pbWVUeXBlID0gJ2ltYWdlL2pwZWcnO1xyXG4gICAgfSBlbHNlIGlmIChidWZmZXJbMF0gPT09IDB4NDcgJiYgYnVmZmVyWzFdID09PSAweDQ5ICYmIGJ1ZmZlclsyXSA9PT0gMHg0Nikge1xyXG4gICAgICBtaW1lVHlwZSA9ICdpbWFnZS9naWYnO1xyXG4gICAgfSBlbHNlIGlmIChidWZmZXJbMF0gPT09IDB4NTIgJiYgYnVmZmVyWzFdID09PSAweDQ5ICYmIGJ1ZmZlclsyXSA9PT0gMHg0NiAmJiBidWZmZXJbM10gPT09IDB4NDYpIHtcclxuICAgICAgbWltZVR5cGUgPSAnaW1hZ2Uvd2VicCc7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiBgZGF0YToke21pbWVUeXBlfTtiYXNlNjQsJHtidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpfWA7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBEYXRhUmVzb2x2ZXI7XHJcbiJdfQ==
@@ -0,0 +1,145 @@
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 declare function userMention(userId: string | number): string;
9
+ /**
10
+ * Formats a channel mention
11
+ * @param channelId The channel ID to mention
12
+ */
13
+ export declare function channelMention(channelId: string | number): string;
14
+ /**
15
+ * Formats a role mention
16
+ * @param roleId The role ID to mention
17
+ */
18
+ export declare function roleMention(roleId: string | number): string;
19
+ /**
20
+ * Formats a custom emoji
21
+ * @param emojiId The emoji ID
22
+ * @param name The emoji name
23
+ * @param animated Whether the emoji is animated
24
+ */
25
+ export declare function formatEmoji(emojiId: string | number, name: string, animated?: boolean): string;
26
+ /**
27
+ * Formats text as bold
28
+ * @param text The text to format
29
+ */
30
+ export declare function bold(text: string): string;
31
+ /**
32
+ * Formats text as italic
33
+ * @param text The text to format
34
+ */
35
+ export declare function italic(text: string): string;
36
+ /**
37
+ * Formats text as underline
38
+ * @param text The text to format
39
+ */
40
+ export declare function underline(text: string): string;
41
+ /**
42
+ * Formats text as strikethrough
43
+ * @param text The text to format
44
+ */
45
+ export declare function strikethrough(text: string): string;
46
+ /**
47
+ * Formats text as spoiler
48
+ * @param text The text to format
49
+ */
50
+ export declare function spoiler(text: string): string;
51
+ /**
52
+ * Formats text as inline code
53
+ * @param text The text to format
54
+ */
55
+ export declare function inlineCode(text: string): string;
56
+ /**
57
+ * Formats text as a code block
58
+ * @param text The text to format
59
+ * @param language The language for syntax highlighting
60
+ */
61
+ export declare function codeBlock(text: string, language?: string): string;
62
+ /**
63
+ * Formats text as a block quote
64
+ * @param text The text to format
65
+ */
66
+ export declare function blockQuote(text: string): string;
67
+ /**
68
+ * Formats text as a single-line quote
69
+ * @param text The text to format
70
+ */
71
+ export declare function quote(text: string): string;
72
+ /**
73
+ * Formats a URL as a hyperlink
74
+ * @param text The text to display
75
+ * @param url The URL to link to
76
+ * @param title Optional title for the link
77
+ */
78
+ export declare function hyperlink(text: string, url: string, title?: string): string;
79
+ /**
80
+ * Formats a URL to hide the embed
81
+ * @param url The URL to format
82
+ */
83
+ export declare function hideLinkEmbed(url: string): string;
84
+ /**
85
+ * Time format styles
86
+ */
87
+ export declare enum TimestampStyles {
88
+ /** Short time format (e.g., 16:20) */
89
+ ShortTime = "t",
90
+ /** Long time format (e.g., 16:20:30) */
91
+ LongTime = "T",
92
+ /** Short date format (e.g., 20/04/2021) */
93
+ ShortDate = "d",
94
+ /** Long date format (e.g., 20 April 2021) */
95
+ LongDate = "D",
96
+ /** Short date/time format (e.g., 20 April 2021 16:20) */
97
+ ShortDateTime = "f",
98
+ /** Long date/time format (e.g., Tuesday, 20 April 2021 16:20) */
99
+ LongDateTime = "F",
100
+ /** Relative time format (e.g., 2 months ago) */
101
+ RelativeTime = "R"
102
+ }
103
+ /**
104
+ * Formats a timestamp
105
+ * @param timestamp The timestamp (Date, number in ms, or seconds)
106
+ * @param style The style to use
107
+ */
108
+ export declare function time(timestamp: Date | number, style?: TimestampStyles): string;
109
+ /**
110
+ * Formats a heading (H1)
111
+ * @param text The text to format
112
+ */
113
+ export declare function heading(text: string, level?: 1 | 2 | 3): string;
114
+ /**
115
+ * Formats an unordered list
116
+ * @param items The items to list
117
+ */
118
+ export declare function unorderedList(items: string[]): string;
119
+ /**
120
+ * Formats an ordered list
121
+ * @param items The items to list
122
+ */
123
+ export declare function orderedList(items: string[]): string;
124
+ export declare const Formatters: {
125
+ userMention: typeof userMention;
126
+ channelMention: typeof channelMention;
127
+ roleMention: typeof roleMention;
128
+ formatEmoji: typeof formatEmoji;
129
+ bold: typeof bold;
130
+ italic: typeof italic;
131
+ underline: typeof underline;
132
+ strikethrough: typeof strikethrough;
133
+ spoiler: typeof spoiler;
134
+ inlineCode: typeof inlineCode;
135
+ codeBlock: typeof codeBlock;
136
+ blockQuote: typeof blockQuote;
137
+ quote: typeof quote;
138
+ hyperlink: typeof hyperlink;
139
+ hideLinkEmbed: typeof hideLinkEmbed;
140
+ time: typeof time;
141
+ heading: typeof heading;
142
+ unorderedList: typeof unorderedList;
143
+ orderedList: typeof orderedList;
144
+ TimestampStyles: typeof TimestampStyles;
145
+ };
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ /**
3
+ * Formatters for markdown and mentions
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Formatters = exports.TimestampStyles = void 0;
7
+ exports.userMention = userMention;
8
+ exports.channelMention = channelMention;
9
+ exports.roleMention = roleMention;
10
+ exports.formatEmoji = formatEmoji;
11
+ exports.bold = bold;
12
+ exports.italic = italic;
13
+ exports.underline = underline;
14
+ exports.strikethrough = strikethrough;
15
+ exports.spoiler = spoiler;
16
+ exports.inlineCode = inlineCode;
17
+ exports.codeBlock = codeBlock;
18
+ exports.blockQuote = blockQuote;
19
+ exports.quote = quote;
20
+ exports.hyperlink = hyperlink;
21
+ exports.hideLinkEmbed = hideLinkEmbed;
22
+ exports.time = time;
23
+ exports.heading = heading;
24
+ exports.unorderedList = unorderedList;
25
+ exports.orderedList = orderedList;
26
+ /**
27
+ * Formats a user mention
28
+ * @param userId The user ID to mention
29
+ */
30
+ function userMention(userId) {
31
+ return `<@${userId}>`;
32
+ }
33
+ /**
34
+ * Formats a channel mention
35
+ * @param channelId The channel ID to mention
36
+ */
37
+ function channelMention(channelId) {
38
+ return `<#${channelId}>`;
39
+ }
40
+ /**
41
+ * Formats a role mention
42
+ * @param roleId The role ID to mention
43
+ */
44
+ function roleMention(roleId) {
45
+ return `<@&${roleId}>`;
46
+ }
47
+ /**
48
+ * Formats a custom emoji
49
+ * @param emojiId The emoji ID
50
+ * @param name The emoji name
51
+ * @param animated Whether the emoji is animated
52
+ */
53
+ function formatEmoji(emojiId, name, animated = false) {
54
+ return `<${animated ? 'a' : ''}:${name}:${emojiId}>`;
55
+ }
56
+ /**
57
+ * Formats text as bold
58
+ * @param text The text to format
59
+ */
60
+ function bold(text) {
61
+ return `**${text}**`;
62
+ }
63
+ /**
64
+ * Formats text as italic
65
+ * @param text The text to format
66
+ */
67
+ function italic(text) {
68
+ return `*${text}*`;
69
+ }
70
+ /**
71
+ * Formats text as underline
72
+ * @param text The text to format
73
+ */
74
+ function underline(text) {
75
+ return `__${text}__`;
76
+ }
77
+ /**
78
+ * Formats text as strikethrough
79
+ * @param text The text to format
80
+ */
81
+ function strikethrough(text) {
82
+ return `~~${text}~~`;
83
+ }
84
+ /**
85
+ * Formats text as spoiler
86
+ * @param text The text to format
87
+ */
88
+ function spoiler(text) {
89
+ return `||${text}||`;
90
+ }
91
+ /**
92
+ * Formats text as inline code
93
+ * @param text The text to format
94
+ */
95
+ function inlineCode(text) {
96
+ return `\`${text}\``;
97
+ }
98
+ /**
99
+ * Formats text as a code block
100
+ * @param text The text to format
101
+ * @param language The language for syntax highlighting
102
+ */
103
+ function codeBlock(text, language) {
104
+ return `\`\`\`${language ?? ''}\n${text}\n\`\`\``;
105
+ }
106
+ /**
107
+ * Formats text as a block quote
108
+ * @param text The text to format
109
+ */
110
+ function blockQuote(text) {
111
+ return `>>> ${text}`;
112
+ }
113
+ /**
114
+ * Formats text as a single-line quote
115
+ * @param text The text to format
116
+ */
117
+ function quote(text) {
118
+ return `> ${text}`;
119
+ }
120
+ /**
121
+ * Formats a URL as a hyperlink
122
+ * @param text The text to display
123
+ * @param url The URL to link to
124
+ * @param title Optional title for the link
125
+ */
126
+ function hyperlink(text, url, title) {
127
+ return title ? `[${text}](${url} "${title}")` : `[${text}](${url})`;
128
+ }
129
+ /**
130
+ * Formats a URL to hide the embed
131
+ * @param url The URL to format
132
+ */
133
+ function hideLinkEmbed(url) {
134
+ return `<${url}>`;
135
+ }
136
+ /**
137
+ * Time format styles
138
+ */
139
+ var TimestampStyles;
140
+ (function (TimestampStyles) {
141
+ /** Short time format (e.g., 16:20) */
142
+ TimestampStyles["ShortTime"] = "t";
143
+ /** Long time format (e.g., 16:20:30) */
144
+ TimestampStyles["LongTime"] = "T";
145
+ /** Short date format (e.g., 20/04/2021) */
146
+ TimestampStyles["ShortDate"] = "d";
147
+ /** Long date format (e.g., 20 April 2021) */
148
+ TimestampStyles["LongDate"] = "D";
149
+ /** Short date/time format (e.g., 20 April 2021 16:20) */
150
+ TimestampStyles["ShortDateTime"] = "f";
151
+ /** Long date/time format (e.g., Tuesday, 20 April 2021 16:20) */
152
+ TimestampStyles["LongDateTime"] = "F";
153
+ /** Relative time format (e.g., 2 months ago) */
154
+ TimestampStyles["RelativeTime"] = "R";
155
+ })(TimestampStyles || (exports.TimestampStyles = TimestampStyles = {}));
156
+ /**
157
+ * Formats a timestamp
158
+ * @param timestamp The timestamp (Date, number in ms, or seconds)
159
+ * @param style The style to use
160
+ */
161
+ function time(timestamp, style) {
162
+ const seconds = timestamp instanceof Date
163
+ ? Math.floor(timestamp.getTime() / 1000)
164
+ : typeof timestamp === 'number' && timestamp > 1e12
165
+ ? Math.floor(timestamp / 1000)
166
+ : timestamp;
167
+ return style ? `<t:${seconds}:${style}>` : `<t:${seconds}>`;
168
+ }
169
+ /**
170
+ * Formats a heading (H1)
171
+ * @param text The text to format
172
+ */
173
+ function heading(text, level = 1) {
174
+ return `${'#'.repeat(level)} ${text}`;
175
+ }
176
+ /**
177
+ * Formats an unordered list
178
+ * @param items The items to list
179
+ */
180
+ function unorderedList(items) {
181
+ return items.map(item => `- ${item}`).join('\n');
182
+ }
183
+ /**
184
+ * Formats an ordered list
185
+ * @param items The items to list
186
+ */
187
+ function orderedList(items) {
188
+ return items.map((item, i) => `${i + 1}. ${item}`).join('\n');
189
+ }
190
+ // Export all formatters as a namespace too (DJS compatibility)
191
+ exports.Formatters = {
192
+ userMention,
193
+ channelMention,
194
+ roleMention,
195
+ formatEmoji,
196
+ bold,
197
+ italic,
198
+ underline,
199
+ strikethrough,
200
+ spoiler,
201
+ inlineCode,
202
+ codeBlock,
203
+ blockQuote,
204
+ quote,
205
+ hyperlink,
206
+ hideLinkEmbed,
207
+ time,
208
+ heading,
209
+ unorderedList,
210
+ orderedList,
211
+ TimestampStyles,
212
+ };
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybWF0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9Gb3JtYXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBTUgsa0NBRUM7QUFNRCx3Q0FFQztBQU1ELGtDQUVDO0FBUUQsa0NBRUM7QUFNRCxvQkFFQztBQU1ELHdCQUVDO0FBTUQsOEJBRUM7QUFNRCxzQ0FFQztBQU1ELDBCQUVDO0FBTUQsZ0NBRUM7QUFPRCw4QkFFQztBQU1ELGdDQUVDO0FBTUQsc0JBRUM7QUFRRCw4QkFFQztBQU1ELHNDQUVDO0FBMkJELG9CQVFDO0FBTUQsMEJBRUM7QUFNRCxzQ0FFQztBQU1ELGtDQUVDO0FBdExEOzs7R0FHRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxNQUF1QjtJQUNqRCxPQUFPLEtBQUssTUFBTSxHQUFHLENBQUM7QUFDeEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxTQUEwQjtJQUN2RCxPQUFPLEtBQUssU0FBUyxHQUFHLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxNQUF1QjtJQUNqRCxPQUFPLE1BQU0sTUFBTSxHQUFHLENBQUM7QUFDekIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLE9BQXdCLEVBQUUsSUFBWSxFQUFFLFFBQVEsR0FBRyxLQUFLO0lBQ2xGLE9BQU8sSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUN2RCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsSUFBSSxDQUFDLElBQVk7SUFDL0IsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDO0FBQ3ZCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixNQUFNLENBQUMsSUFBWTtJQUNqQyxPQUFPLElBQUksSUFBSSxH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Q0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxLQUFlO0lBQ3pDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsK0RBQStEO0FBQ2xELFFBQUEsVUFBVSxHQUFHO0lBQ3hCLFdBQVc7SUFDWCxjQUFjO0lBQ2QsV0FBVztJQUNYLFdBQVc7SUFDWCxJQUFJO0lBQ0osTUFBTTtJQUNOLFNBQVM7SUFDVCxhQUFhO0lBQ2IsT0FBTztJQUNQLFVBQVU7SUFDVixTQUFTO0lBQ1QsVUFBVTtJQUNWLEtBQUs7SUFDTCxTQUFTO0lBQ1QsYUFBYTtJQUNiLElBQUk7SUFDSixPQUFPO0lBQ1AsYUFBYTtJQUNiLFdBQVc7SUFDWCxlQUFlO0NBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogRm9ybWF0dGVycyBmb3IgbWFya2Rvd24gYW5kIG1lbnRpb25zXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEZvcm1hdHMgYSB1c2VyIG1lbnRpb25cclxuICogQHBhcmFtIHVzZXJJZCBUaGUgdXNlciBJRCB0byBtZW50aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdXNlck1lbnRpb24odXNlcklkOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xyXG4gIHJldHVybiBgPEAke3VzZXJJZH0+YDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdHMgYSBjaGFubmVsIG1lbnRpb25cclxuICogQHBhcmFtIGNoYW5uZWxJZCBUaGUgY2hhbm5lbCBJRCB0byBtZW50aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY2hhbm5lbE1lbnRpb24oY2hhbm5lbElkOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xyXG4gIHJldHVybiBgPCMke2NoYW5uZWxJZH0+YDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdHMgYSByb2xlIG1lbnRpb25cclxuICogQHBhcmFtIHJvbGVJZCBUaGUgcm9sZSBJRCB0byBtZW50aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcm9sZU1lbnRpb24ocm9sZUlkOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xyXG4gIHJldHVybiBgPEAmJHtyb2xlSWR9PmA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGb3JtYXRzIGEgY3VzdG9tIGVtb2ppXHJcbiAqIEBwYXJhbSBlbW9qaUlkIFRoZSBlbW9qaSBJRFxyXG4gKiBAcGFyYW0gbmFtZSBUaGUgZW1vamkgbmFtZVxyXG4gKiBAcGFyYW0gYW5pbWF0ZWQgV2hldGhlciB0aGUgZW1vamkgaXMgYW5pbWF0ZWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFbW9qaShlbW9qaUlkOiBzdHJpbmcgfCBudW1iZXIsIG5hbWU6IHN0cmluZywgYW5pbWF0ZWQgPSBmYWxzZSk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIGA8JHthbmltYXRlZCA/ICdhJyA6ICcnfToke25hbWV9OiR7ZW1vamlJZH0+YDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdHMgdGV4dCBhcyBib2xkXHJcbiAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGZvcm1hdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGJvbGQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gYCoqJHt0ZXh0fSoqYDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdHMgdGV4dCBhcyBpdGFsaWNcclxuICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gZm9ybWF0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXRhbGljKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIGAqJHt0ZXh0fSpgO1xyXG59XHJcblxyXG4vKipcclxuICogRm9ybWF0cyB0ZXh0IGFzIHVuZGVybGluZVxyXG4gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBmb3JtYXRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB1bmRlcmxpbmUodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gYF9fJHt0ZXh0fV9fYDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdHMgdGV4dCBhcyBzdHJpa2V0aHJvdWdoXHJcbiAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGZvcm1hdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlrZXRocm91Z2godGV4dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gYH5+JHt0ZXh0fX5+YDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdHMgdGV4dCBhcyBzcG9pbGVyXHJcbiAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGZvcm1hdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNwb2lsZXIodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gYHx8JHt0ZXh0fXx8YDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdHMgdGV4dCBhcyBpbmxpbmUgY29kZVxyXG4gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBmb3JtYXRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpbmxpbmVDb2RlKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIGBcXGAke3RleHR9XFxgYDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdHMgdGV4dCBhcyBhIGNvZGUgYmxvY2tcclxuICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gZm9ybWF0XHJcbiAqIEBwYXJhbSBsYW5ndWFnZSBUaGUgbGFuZ3VhZ2UgZm9yIHN5bnRheCBoaWdobGlnaHRpbmdcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjb2RlQmxvY2sodGV4dDogc3RyaW5nLCBsYW5ndWFnZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIGBcXGBcXGBcXGAke2xhbmd1YWdlID8/ICcnfVxcbiR7dGV4dH1cXG5cXGBcXGBcXGBgO1xyXG59XHJcblxyXG4vKipcclxuICogRm9ybWF0cyB0ZXh0IGFzIGEgYmxvY2sgcXVvdGVcclxuICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gZm9ybWF0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tRdW90ZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBgPj4+ICR7dGV4dH1gO1xyXG59XHJcblxyXG4vKipcclxuICogRm9ybWF0cyB0ZXh0IGFzIGEgc2luZ2xlLWxpbmUgcXVvdGVcclxuICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gZm9ybWF0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcXVvdGUodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gYD4gJHt0ZXh0fWA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGb3JtYXRzIGEgVVJMIGFzIGEgaHlwZXJsaW5rXHJcbiAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGRpc3BsYXlcclxuICogQHBhcmFtIHVybCBUaGUgVVJMIHRvIGxpbmsgdG9cclxuICogQHBhcmFtIHRpdGxlIE9wdGlvbmFsIHRpdGxlIGZvciB0aGUgbGlua1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGh5cGVybGluayh0ZXh0OiBzdHJpbmcsIHVybDogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHRpdGxlID8gYFske3RleHR9XSgke3VybH0gXCIke3RpdGxlfVwiKWAgOiBgWyR7dGV4dH1dKCR7dXJsfSlgO1xyXG59XHJcblxyXG4vKipcclxuICogRm9ybWF0cyBhIFVSTCB0byBoaWRlIHRoZSBlbWJlZFxyXG4gKiBAcGFyYW0gdXJsIFRoZSBVUkwgdG8gZm9ybWF0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaGlkZUxpbmtFbWJlZCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIGA8JHt1cmx9PmA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaW1lIGZvcm1hdCBzdHlsZXNcclxuICovXHJcbmV4cG9ydCBlbnVtIFRpbWVzdGFtcFN0eWxlcyB7XHJcbiAgLyoqIFNob3J0IHRpbWUgZm9ybWF0IChlLmcuLCAxNjoyMCkgKi9cclxuICBTaG9ydFRpbWUgPSAndCcsXHJcbiAgLyoqIExvbmcgdGltZSBmb3JtYXQgKGUuZy4sIDE2OjIwOjMwKSAqL1xyXG4gIExvbmdUaW1lID0gJ1QnLFxyXG4gIC8qKiBTaG9ydCBkYXRlIGZvcm1hdCAoZS5nLiwgMjAvMDQvMjAyMSkgKi9cclxuICBTaG9ydERhdGUgPSAnZCcsXHJcbiAgLyoqIExvbmcgZGF0ZSBmb3JtYXQgKGUuZy4sIDIwIEFwcmlsIDIwMjEpICovXHJcbiAgTG9uZ0RhdGUgPSAnRCcsXHJcbiAgLyoqIFNob3J0IGRhdGUvdGltZSBmb3JtYXQgKGUuZy4sIDIwIEFwcmlsIDIwMjEgMTY6MjApICovXHJcbiAgU2hvcnREYXRlVGltZSA9ICdmJyxcclxuICAvKiogTG9uZyBkYXRlL3RpbWUgZm9ybWF0IChlLmcuLCBUdWVzZGF5LCAyMCBBcHJpbCAyMDIxIDE2OjIwKSAqL1xyXG4gIExvbmdEYXRlVGltZSA9ICdGJyxcclxuICAvKiogUmVsYXRpdmUgdGltZSBmb3JtYXQgKGUuZy4sIDIgbW9udGhzIGFnbykgKi9cclxuICBSZWxhdGl2ZVRpbWUgPSAnUicsXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGb3JtYXRzIGEgdGltZXN0YW1wXHJcbiAqIEBwYXJhbSB0aW1lc3RhbXAgVGhlIHRpbWVzdGFtcCAoRGF0ZSwgbnVtYmVyIGluIG1zLCBvciBzZWNvbmRzKVxyXG4gKiBAcGFyYW0gc3R5bGUgVGhlIHN0eWxlIHRvIHVzZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRpbWUodGltZXN0YW1wOiBEYXRlIHwgbnVtYmVyLCBzdHlsZT86IFRpbWVzdGFtcFN0eWxlcyk6IHN0cmluZyB7XHJcbiAgY29uc3Qgc2Vjb25kcyA9IHRpbWVzdGFtcCBpbnN0YW5jZW9mIERhdGUgXHJcbiAgICA/IE1hdGguZmxvb3IodGltZXN0YW1wLmdldFRpbWUoKSAvIDEwMDApIFxyXG4gICAgOiB0eXBlb2YgdGltZXN0YW1wID09PSAnbnVtYmVyJyAmJiB0aW1lc3RhbXAgPiAxZTEyIFxyXG4gICAgICA/IE1hdGguZmxvb3IodGltZXN0YW1wIC8gMTAwMCkgXHJcbiAgICAgIDogdGltZXN0YW1wO1xyXG4gIFxyXG4gIHJldHVybiBzdHlsZSA/IGA8dDoke3NlY29uZHN9OiR7c3R5bGV9PmAgOiBgPHQ6JHtzZWNvbmRzfT5gO1xyXG59XHJcblxyXG4vKipcclxuICogRm9ybWF0cyBhIGhlYWRpbmcgKEgxKVxyXG4gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBmb3JtYXRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoZWFkaW5nKHRleHQ6IHN0cmluZywgbGV2ZWw6IDEgfCAyIHwgMyA9IDEpOiBzdHJpbmcge1xyXG4gIHJldHVybiBgJHsnIycucmVwZWF0KGxldmVsKX0gJHt0ZXh0fWA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGb3JtYXRzIGFuIHVub3JkZXJlZCBsaXN0XHJcbiAqIEBwYXJhbSBpdGVtcyBUaGUgaXRlbXMgdG8gbGlzdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHVub3JkZXJlZExpc3QoaXRlbXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICByZXR1cm4gaXRlbXMubWFwKGl0ZW0gPT4gYC0gJHtpdGVtfWApLmpvaW4oJ1xcbicpO1xyXG59XHJcblxyXG4vKipcclxuICogRm9ybWF0cyBhbiBvcmRlcmVkIGxpc3RcclxuICogQHBhcmFtIGl0ZW1zIFRoZSBpdGVtcyB0byBsaXN0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gb3JkZXJlZExpc3QoaXRlbXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICByZXR1cm4gaXRlbXMubWFwKChpdGVtLCBpKSA9PiBgJHtpICsgMX0uICR7aXRlbX1gKS5qb2luKCdcXG4nKTtcclxufVxyXG5cclxuLy8gRXhwb3J0IGFsbCBmb3JtYXR0ZXJzIGFzIGEgbmFtZXNwYWNlIHRvbyAoREpTIGNvbXBhdGliaWxpdHkpXHJcbmV4cG9ydCBjb25zdCBGb3JtYXR0ZXJzID0ge1xyXG4gIHVzZXJNZW50aW9uLFxyXG4gIGNoYW5uZWxNZW50aW9uLFxyXG4gIHJvbGVNZW50aW9uLFxyXG4gIGZvcm1hdEVtb2ppLFxyXG4gIGJvbGQsXHJcbiAgaXRhbGljLFxyXG4gIHVuZGVybGluZSxcclxuICBzdHJpa2V0aHJvdWdoLFxyXG4gIHNwb2lsZXIsXHJcbiAgaW5saW5lQ29kZSxcclxuICBjb2RlQmxvY2ssXHJcbiAgYmxvY2tRdW90ZSxcclxuICBxdW90ZSxcclxuICBoeXBlcmxpbmssXHJcbiAgaGlkZUxpbmtFbWJlZCxcclxuICB0aW1lLFxyXG4gIGhlYWRpbmcsXHJcbiAgdW5vcmRlcmVkTGlzdCxcclxuICBvcmRlcmVkTGlzdCxcclxuICBUaW1lc3RhbXBTdHlsZXMsXHJcbn07XHJcbiJdfQ==
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Intents BitField for calculating gateway intents
3
+ */
4
+ import { BitField, BitFieldResolvable } from './BitField';
5
+ /**
6
+ * Intent flag names
7
+ */
8
+ export type IntentFlagsString = keyof typeof IntentsBitField.Flags;
9
+ /**
10
+ * Gateway Intent Bits
11
+ */
12
+ export declare const GatewayIntentBits: {
13
+ readonly Guilds: number;
14
+ readonly GuildMembers: number;
15
+ readonly GuildModeration: number;
16
+ readonly GuildEmojisAndStickers: number;
17
+ readonly GuildIntegrations: number;
18
+ readonly GuildWebhooks: number;
19
+ readonly GuildInvites: number;
20
+ readonly GuildVoiceStates: number;
21
+ readonly GuildPresences: number;
22
+ readonly GuildMessages: number;
23
+ readonly GuildMessageReactions: number;
24
+ readonly GuildMessageTyping: number;
25
+ readonly DirectMessages: number;
26
+ readonly DirectMessageReactions: number;
27
+ readonly DirectMessageTyping: number;
28
+ readonly MessageContent: number;
29
+ readonly GuildScheduledEvents: number;
30
+ readonly AutoModerationConfiguration: number;
31
+ readonly AutoModerationExecution: number;
32
+ };
33
+ /**
34
+ * All non-privileged intents
35
+ */
36
+ export declare const IntentsAll: number;
37
+ /**
38
+ * Privileged intents that require approval
39
+ */
40
+ export declare const PrivilegedIntents: number;
41
+ /**
42
+ * Data structure for gateway intents
43
+ */
44
+ export declare class IntentsBitField extends BitField<IntentFlagsString, number> {
45
+ static Flags: {
46
+ readonly Guilds: number;
47
+ readonly GuildMembers: number;
48
+ readonly GuildModeration: number;
49
+ readonly GuildEmojisAndStickers: number;
50
+ readonly GuildIntegrations: number;
51
+ readonly GuildWebhooks: number;
52
+ readonly GuildInvites: number;
53
+ readonly GuildVoiceStates: number;
54
+ readonly GuildPresences: number;
55
+ readonly GuildMessages: number;
56
+ readonly GuildMessageReactions: number;
57
+ readonly GuildMessageTyping: number;
58
+ readonly DirectMessages: number;
59
+ readonly DirectMessageReactions: number;
60
+ readonly DirectMessageTyping: number;
61
+ readonly MessageContent: number;
62
+ readonly GuildScheduledEvents: number;
63
+ readonly AutoModerationConfiguration: number;
64
+ readonly AutoModerationExecution: number;
65
+ };
66
+ static DefaultBit: number;
67
+ constructor(bits?: BitFieldResolvable<IntentFlagsString, number>);
68
+ /**
69
+ * Check if any privileged intents are enabled
70
+ */
71
+ hasPrivileged(): boolean;
72
+ /**
73
+ * Get all privileged intents that are enabled
74
+ */
75
+ getPrivileged(): IntentFlagsString[];
76
+ }
77
+ /**
78
+ * Calculate intents from an array of intent names or values
79
+ */
80
+ export declare function calculateIntents(intents: (IntentFlagsString | number)[]): number;
81
+ /**
82
+ * Get all intent names from a bitfield value
83
+ */
84
+ export declare function resolveIntents(bits: number): IntentFlagsString[];
85
+ export default IntentsBitField;