@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,99 @@
1
+ "use strict";
2
+ /**
3
+ * Intents BitField for calculating gateway intents
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.IntentsBitField = exports.PrivilegedIntents = exports.IntentsAll = exports.GatewayIntentBits = void 0;
7
+ exports.calculateIntents = calculateIntents;
8
+ exports.resolveIntents = resolveIntents;
9
+ const BitField_1 = require("./BitField");
10
+ /**
11
+ * Gateway Intent Bits
12
+ */
13
+ exports.GatewayIntentBits = {
14
+ Guilds: 1 << 0,
15
+ GuildMembers: 1 << 1,
16
+ GuildModeration: 1 << 2,
17
+ GuildEmojisAndStickers: 1 << 3,
18
+ GuildIntegrations: 1 << 4,
19
+ GuildWebhooks: 1 << 5,
20
+ GuildInvites: 1 << 6,
21
+ GuildVoiceStates: 1 << 7,
22
+ GuildPresences: 1 << 8,
23
+ GuildMessages: 1 << 9,
24
+ GuildMessageReactions: 1 << 10,
25
+ GuildMessageTyping: 1 << 11,
26
+ DirectMessages: 1 << 12,
27
+ DirectMessageReactions: 1 << 13,
28
+ DirectMessageTyping: 1 << 14,
29
+ MessageContent: 1 << 15,
30
+ GuildScheduledEvents: 1 << 16,
31
+ AutoModerationConfiguration: 1 << 20,
32
+ AutoModerationExecution: 1 << 21,
33
+ };
34
+ /**
35
+ * All non-privileged intents
36
+ */
37
+ exports.IntentsAll = Object.values(exports.GatewayIntentBits).reduce((all, i) => all | i, 0);
38
+ /**
39
+ * Privileged intents that require approval
40
+ */
41
+ exports.PrivilegedIntents = exports.GatewayIntentBits.GuildMembers |
42
+ exports.GatewayIntentBits.GuildPresences |
43
+ exports.GatewayIntentBits.MessageContent;
44
+ /**
45
+ * Data structure for gateway intents
46
+ */
47
+ class IntentsBitField extends BitField_1.BitField {
48
+ static Flags = exports.GatewayIntentBits;
49
+ static DefaultBit = 0;
50
+ constructor(bits = 0) {
51
+ super(bits);
52
+ }
53
+ /**
54
+ * Check if any privileged intents are enabled
55
+ */
56
+ hasPrivileged() {
57
+ return this.any(exports.PrivilegedIntents);
58
+ }
59
+ /**
60
+ * Get all privileged intents that are enabled
61
+ */
62
+ getPrivileged() {
63
+ const privileged = [];
64
+ if (this.has(exports.GatewayIntentBits.GuildMembers))
65
+ privileged.push('GuildMembers');
66
+ if (this.has(exports.GatewayIntentBits.GuildPresences))
67
+ privileged.push('GuildPresences');
68
+ if (this.has(exports.GatewayIntentBits.MessageContent))
69
+ privileged.push('MessageContent');
70
+ return privileged;
71
+ }
72
+ }
73
+ exports.IntentsBitField = IntentsBitField;
74
+ /**
75
+ * Calculate intents from an array of intent names or values
76
+ */
77
+ function calculateIntents(intents) {
78
+ return intents.reduce((acc, intent) => {
79
+ if (typeof intent === 'number')
80
+ return acc | intent;
81
+ if (intent in exports.GatewayIntentBits)
82
+ return acc | exports.GatewayIntentBits[intent];
83
+ return acc;
84
+ }, 0);
85
+ }
86
+ /**
87
+ * Get all intent names from a bitfield value
88
+ */
89
+ function resolveIntents(bits) {
90
+ const names = [];
91
+ for (const [name, value] of Object.entries(exports.GatewayIntentBits)) {
92
+ if ((bits & value) === value) {
93
+ names.push(name);
94
+ }
95
+ }
96
+ return names;
97
+ }
98
+ exports.default = IntentsBitField;
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50ZW50c0JpdEZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL0ludGVudHNCaXRGaWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQWdGSCw0Q0FNQztBQUtELHdDQVFDO0FBakdELHlDQUEwRDtBQU8xRDs7R0FFRztBQUNVLFFBQUEsaUJBQWlCLEdBQUc7SUFDL0IsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2QsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3BCLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQztJQUN2QixzQkFBc0IsRUFBRSxDQUFDLElBQUksQ0FBQztJQUM5QixpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQztJQUN6QixhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDckIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3BCLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3hCLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQztJQUN0QixhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDckIscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEVBQUU7SUFDOUIsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLEVBQUU7SUFDM0IsY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFO0lBQ3ZCLHNCQUFzQixFQUFFLENBQUMsSUFBSSxFQUFFO0lBQy9CLG1CQUFtQixFQUFFLENBQUMsSUFBSSxFQUFFO0lBQzVCLGNBQWMsRUFBRSxDQUFDLElBQUksRUFBRTtJQUN2QixvQkFBb0IsRUFBRSxDQUFDLElBQUksRUFBRTtJQUM3QiwyQkFBMkIsRUFBRSxDQUFDLElBQUksRUFBRTtJQUNwQyx1QkFBdUIsRUFBRSxDQUFDLElBQUksRUFBRTtDQUN4QixDQUFDO0FBRVg7O0dBRUc7QUFDVSxRQUFBLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLHlCQUFpQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUUxRjs7R0FFRztBQUNVLFFBQUEsaUJBQWlCLEdBQzVCLHlCQUFpQixDQUFDLFlBQVk7SUFDOUIseUJBQWlCLENBQUMsY0FBYztJQUNoQyx5QkFBaUIsQ0FBQyxjQUFjLENBQUM7QUFFbkM7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsbUJBQW1DO0lBQ3RFLE1BQU0sQ0FBQyxLQUFLLEdBQUcseUJBQWlCLENBQUM7SUFDakMsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFFdEIsWUFBWSxPQUFzRCxDQUFDO1FBQ2pFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQWlCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsTUFBTSxVQUFVLEdBQXdCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQWlCLENBQUMsWUFBWSxDQUFDO1lBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5RSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQWlCLENBQUMsY0FBYyxDQUFDO1lBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xGLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBaUIsQ0FBQyxjQUFjLENBQUM7WUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEYsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzs7QUF4QkgsMENBeUJDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxPQUF1QztJQUN0RSxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDNUMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO1lBQUUsT0FBTyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ3BELElBQUksTUFBTSxJQUFJLHlCQUFpQjtZQUFFLE9BQU8sR0FBRyxHQUFHLHlCQUFpQixDQUFDLE1BQXdDLENBQUMsQ0FBQztRQUMxRyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLE1BQU0sS0FBSyxHQUF3QixFQUFFLENBQUM7SUFDdEMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMseUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQzlELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDN0IsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUF5QixDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxrQkFBZSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogSW50ZW50cyBCaXRGaWVsZCBmb3IgY2FsY3VsYXRpbmcgZ2F0ZXdheSBpbnRlbnRzXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQml0RmllbGQsIEJpdEZpZWxkUmVzb2x2YWJsZSB9IGZyb20gJy4vQml0RmllbGQnO1xyXG5cclxuLyoqXHJcbiAqIEludGVudCBmbGFnIG5hbWVzXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBJbnRlbnRGbGFnc1N0cmluZyA9IGtleW9mIHR5cGVvZiBJbnRlbnRzQml0RmllbGQuRmxhZ3M7XHJcblxyXG4vKipcclxuICogR2F0ZXdheSBJbnRlbnQgQml0c1xyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEdhdGV3YXlJbnRlbnRCaXRzID0ge1xyXG4gIEd1aWxkczogMSA8PCAwLFxyXG4gIEd1aWxkTWVtYmVyczogMSA8PCAxLFxyXG4gIEd1aWxkTW9kZXJhdGlvbjogMSA8PCAyLFxyXG4gIEd1aWxkRW1vamlzQW5kU3RpY2tlcnM6IDEgPDwgMyxcclxuICBHdWlsZEludGVncmF0aW9uczogMSA8PCA0LFxyXG4gIEd1aWxkV2ViaG9va3M6IDEgPDwgNSxcclxuICBHdWlsZEludml0ZXM6IDEgPDwgNixcclxuICBHdWlsZFZvaWNlU3RhdGVzOiAxIDw8IDcsXHJcbiAgR3VpbGRQcmVzZW5jZXM6IDEgPDwgOCxcclxuICBHdWlsZE1lc3NhZ2VzOiAxIDw8IDksXHJcbiAgR3VpbGRNZXNzYWdlUmVhY3Rpb25zOiAxIDw8IDEwLFxyXG4gIEd1aWxkTWVzc2FnZVR5cGluZzogMSA8PCAxMSxcclxuICBEaXJlY3RNZXNzYWdlczogMSA8PCAxMixcclxuICBEaXJlY3RNZXNzYWdlUmVhY3Rpb25zOiAxIDw8IDEzLFxyXG4gIERpcmVjdE1lc3NhZ2VUeXBpbmc6IDEgPDwgMTQsXHJcbiAgTWVzc2FnZUNvbnRlbnQ6IDEgPDwgMTUsXHJcbiAgR3VpbGRTY2hlZHVsZWRFdmVudHM6IDEgPDwgMTYsXHJcbiAgQXV0b01vZGVyYXRpb25Db25maWd1cmF0aW9uOiAxIDw8IDIwLFxyXG4gIEF1dG9Nb2RlcmF0aW9uRXhlY3V0aW9uOiAxIDw8IDIxLFxyXG59IGFzIGNvbnN0O1xyXG5cclxuLyoqXHJcbiAqIEFsbCBub24tcHJpdmlsZWdlZCBpbnRlbnRzXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgSW50ZW50c0FsbCA9IE9iamVjdC52YWx1ZXMoR2F0ZXdheUludGVudEJpdHMpLnJlZHVjZSgoYWxsLCBpKSA9PiBhbGwgfCBpLCAwKTtcclxuXHJcbi8qKlxyXG4gKiBQcml2aWxlZ2VkIGludGVudHMgdGhhdCByZXF1aXJlIGFwcHJvdmFsXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgUHJpdmlsZWdlZEludGVudHMgPSBcclxuICBHYXRld2F5SW50ZW50Qml0cy5HdWlsZE1lbWJlcnMgfCBcclxuICBHYXRld2F5SW50ZW50Qml0cy5HdWlsZFByZXNlbmNlcyB8IFxyXG4gIEdhdGV3YXlJbnRlbnRCaXRzLk1lc3NhZ2VDb250ZW50O1xyXG5cclxuLyoqXHJcbiAqIERhdGEgc3RydWN0dXJlIGZvciBnYXRld2F5IGludGVudHNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBJbnRlbnRzQml0RmllbGQgZXh0ZW5kcyBCaXRGaWVsZDxJbnRlbnRGbGFnc1N0cmluZywgbnVtYmVyPiB7XHJcbiAgc3RhdGljIEZsYWdzID0gR2F0ZXdheUludGVudEJpdHM7XHJcbiAgc3RhdGljIERlZmF1bHRCaXQgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihiaXRzOiBCaXRGaWVsZFJlc29sdmFibGU8SW50ZW50RmxhZ3NTdHJpbmcsIG51bWJlcj4gPSAwKSB7XHJcbiAgICBzdXBlcihiaXRzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGFueSBwcml2aWxlZ2VkIGludGVudHMgYXJlIGVuYWJsZWRcclxuICAgKi9cclxuICBoYXNQcml2aWxlZ2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYW55KFByaXZpbGVnZWRJbnRlbnRzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhbGwgcHJpdmlsZWdlZCBpbnRlbnRzIHRoYXQgYXJlIGVuYWJsZWRcclxuICAgKi9cclxuICBnZXRQcml2aWxlZ2VkKCk6IEludGVudEZsYWdzU3RyaW5nW10ge1xyXG4gICAgY29uc3QgcHJpdmlsZWdlZDogSW50ZW50RmxhZ3NTdHJpbmdbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuaGFzKEdhdGV3YXlJbnRlbnRCaXRzLkd1aWxkTWVtYmVycykpIHByaXZpbGVnZWQucHVzaCgnR3VpbGRNZW1iZXJzJyk7XHJcbiAgICBpZiAodGhpcy5oYXMoR2F0ZXdheUludGVudEJpdHMuR3VpbGRQcmVzZW5jZXMpKSBwcml2aWxlZ2VkLnB1c2goJ0d1aWxkUHJlc2VuY2VzJyk7XHJcbiAgICBpZiAodGhpcy5oYXMoR2F0ZXdheUludGVudEJpdHMuTWVzc2FnZUNvbnRlbnQpKSBwcml2aWxlZ2VkLnB1c2goJ01lc3NhZ2VDb250ZW50Jyk7XHJcbiAgICByZXR1cm4gcHJpdmlsZWdlZDtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDYWxjdWxhdGUgaW50ZW50cyBmcm9tIGFuIGFycmF5IG9mIGludGVudCBuYW1lcyBvciB2YWx1ZXNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVJbnRlbnRzKGludGVudHM6IChJbnRlbnRGbGFnc1N0cmluZyB8IG51bWJlcilbXSk6IG51bWJlciB7XHJcbiAgcmV0dXJuIGludGVudHMucmVkdWNlPG51bWJlcj4oKGFjYywgaW50ZW50KSA9PiB7XHJcbiAgICBpZiAodHlwZW9mIGludGVudCA9PT0gJ251bWJlcicpIHJldHVybiBhY2MgfCBpbnRlbnQ7XHJcbiAgICBpZiAoaW50ZW50IGluIEdhdGV3YXlJbnRlbnRCaXRzKSByZXR1cm4gYWNjIHwgR2F0ZXdheUludGVudEJpdHNbaW50ZW50IGFzIGtleW9mIHR5cGVvZiBHYXRld2F5SW50ZW50Qml0c107XHJcbiAgICByZXR1cm4gYWNjO1xyXG4gIH0sIDApO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IGFsbCBpbnRlbnQgbmFtZXMgZnJvbSBhIGJpdGZpZWxkIHZhbHVlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUludGVudHMoYml0czogbnVtYmVyKTogSW50ZW50RmxhZ3NTdHJpbmdbXSB7XHJcbiAgY29uc3QgbmFtZXM6IEludGVudEZsYWdzU3RyaW5nW10gPSBbXTtcclxuICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoR2F0ZXdheUludGVudEJpdHMpKSB7XHJcbiAgICBpZiAoKGJpdHMgJiB2YWx1ZSkgPT09IHZhbHVlKSB7XHJcbiAgICAgIG5hbWVzLnB1c2gobmFtZSBhcyBJbnRlbnRGbGFnc1N0cmluZyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBuYW1lcztcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgSW50ZW50c0JpdEZpZWxkO1xyXG4iXX0=
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Partials - Handle uncached/partial data structures
3
+ */
4
+ /**
5
+ * Partial types that can be enabled
6
+ */
7
+ export declare enum Partials {
8
+ User = 0,
9
+ Channel = 1,
10
+ GuildMember = 2,
11
+ Message = 3,
12
+ Reaction = 4,
13
+ GuildScheduledEvent = 5,
14
+ ThreadMember = 6
15
+ }
16
+ /**
17
+ * Check if a structure is partial (missing data)
18
+ */
19
+ export declare function isPartial(obj: any): boolean;
20
+ /**
21
+ * Create a partial user structure
22
+ */
23
+ export declare function createPartialUser(id: string): PartialUser;
24
+ /**
25
+ * Create a partial channel structure
26
+ */
27
+ export declare function createPartialChannel(id: string): PartialChannel;
28
+ /**
29
+ * Create a partial message structure
30
+ */
31
+ export declare function createPartialMessage(id: string, channelId: string): PartialMessage;
32
+ /**
33
+ * Create a partial guild member structure
34
+ */
35
+ export declare function createPartialGuildMember(userId: string, guildId: string): PartialGuildMember;
36
+ /**
37
+ * Create a partial reaction structure
38
+ */
39
+ export declare function createPartialReaction(messageId: string, emoji: string): PartialReaction;
40
+ /**
41
+ * Partial structure types
42
+ */
43
+ export interface PartialUser {
44
+ id: string;
45
+ partial: true;
46
+ username: string | null;
47
+ discriminator: string | null;
48
+ avatar: string | null;
49
+ bot: boolean | null;
50
+ fetch(): Promise<any>;
51
+ toString(): string;
52
+ }
53
+ export interface PartialChannel {
54
+ id: string;
55
+ partial: true;
56
+ type: number | null;
57
+ name: string | null;
58
+ fetch(): Promise<any>;
59
+ toString(): string;
60
+ }
61
+ export interface PartialMessage {
62
+ id: string;
63
+ channelId: string;
64
+ partial: true;
65
+ content: string | null;
66
+ author: any | null;
67
+ embeds: any[] | null;
68
+ attachments: any[] | null;
69
+ fetch(): Promise<any>;
70
+ toString(): string;
71
+ }
72
+ export interface PartialGuildMember {
73
+ id: string;
74
+ guildId: string;
75
+ partial: true;
76
+ user: any | null;
77
+ nick: string | null;
78
+ roles: string[] | null;
79
+ joinedAt: Date | null;
80
+ fetch(): Promise<any>;
81
+ toString(): string;
82
+ }
83
+ export interface PartialReaction {
84
+ messageId: string;
85
+ emoji: string;
86
+ partial: true;
87
+ count: number | null;
88
+ me: boolean | null;
89
+ fetch(): Promise<any>;
90
+ toString(): string;
91
+ }
92
+ /**
93
+ * Make a structure partial-aware with fetch capability
94
+ */
95
+ export declare function makePartialAware<T extends {
96
+ id: string;
97
+ }>(structure: T, client: any, fetchFn: (id: string) => Promise<T>): T & {
98
+ partial: boolean;
99
+ fetch: () => Promise<T>;
100
+ };
101
+ /**
102
+ * Check if partials are enabled for a type
103
+ */
104
+ export declare function hasPartial(client: any, partial: Partials): boolean;
105
+ export default Partials;
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ /**
3
+ * Partials - Handle uncached/partial data structures
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Partials = void 0;
7
+ exports.isPartial = isPartial;
8
+ exports.createPartialUser = createPartialUser;
9
+ exports.createPartialChannel = createPartialChannel;
10
+ exports.createPartialMessage = createPartialMessage;
11
+ exports.createPartialGuildMember = createPartialGuildMember;
12
+ exports.createPartialReaction = createPartialReaction;
13
+ exports.makePartialAware = makePartialAware;
14
+ exports.hasPartial = hasPartial;
15
+ /**
16
+ * Partial types that can be enabled
17
+ */
18
+ var Partials;
19
+ (function (Partials) {
20
+ Partials[Partials["User"] = 0] = "User";
21
+ Partials[Partials["Channel"] = 1] = "Channel";
22
+ Partials[Partials["GuildMember"] = 2] = "GuildMember";
23
+ Partials[Partials["Message"] = 3] = "Message";
24
+ Partials[Partials["Reaction"] = 4] = "Reaction";
25
+ Partials[Partials["GuildScheduledEvent"] = 5] = "GuildScheduledEvent";
26
+ Partials[Partials["ThreadMember"] = 6] = "ThreadMember";
27
+ })(Partials || (exports.Partials = Partials = {}));
28
+ /**
29
+ * Check if a structure is partial (missing data)
30
+ */
31
+ function isPartial(obj) {
32
+ return obj?.partial === true;
33
+ }
34
+ /**
35
+ * Create a partial user structure
36
+ */
37
+ function createPartialUser(id) {
38
+ return {
39
+ id,
40
+ partial: true,
41
+ username: null,
42
+ discriminator: null,
43
+ avatar: null,
44
+ bot: null,
45
+ async fetch() {
46
+ throw new Error('Cannot fetch partial user without client context');
47
+ },
48
+ toString() {
49
+ return `<@${id}>`;
50
+ },
51
+ };
52
+ }
53
+ /**
54
+ * Create a partial channel structure
55
+ */
56
+ function createPartialChannel(id) {
57
+ return {
58
+ id,
59
+ partial: true,
60
+ type: null,
61
+ name: null,
62
+ async fetch() {
63
+ throw new Error('Cannot fetch partial channel without client context');
64
+ },
65
+ toString() {
66
+ return `<#${id}>`;
67
+ },
68
+ };
69
+ }
70
+ /**
71
+ * Create a partial message structure
72
+ */
73
+ function createPartialMessage(id, channelId) {
74
+ return {
75
+ id,
76
+ channelId,
77
+ partial: true,
78
+ content: null,
79
+ author: null,
80
+ embeds: null,
81
+ attachments: null,
82
+ async fetch() {
83
+ throw new Error('Cannot fetch partial message without client context');
84
+ },
85
+ toString() {
86
+ return `Message(${id})`;
87
+ },
88
+ };
89
+ }
90
+ /**
91
+ * Create a partial guild member structure
92
+ */
93
+ function createPartialGuildMember(userId, guildId) {
94
+ return {
95
+ id: userId,
96
+ guildId,
97
+ partial: true,
98
+ user: null,
99
+ nick: null,
100
+ roles: null,
101
+ joinedAt: null,
102
+ async fetch() {
103
+ throw new Error('Cannot fetch partial member without client context');
104
+ },
105
+ toString() {
106
+ return `<@${userId}>`;
107
+ },
108
+ };
109
+ }
110
+ /**
111
+ * Create a partial reaction structure
112
+ */
113
+ function createPartialReaction(messageId, emoji) {
114
+ return {
115
+ messageId,
116
+ emoji,
117
+ partial: true,
118
+ count: null,
119
+ me: null,
120
+ async fetch() {
121
+ throw new Error('Cannot fetch partial reaction without client context');
122
+ },
123
+ toString() {
124
+ return emoji;
125
+ },
126
+ };
127
+ }
128
+ /**
129
+ * Make a structure partial-aware with fetch capability
130
+ */
131
+ function makePartialAware(structure, client, fetchFn) {
132
+ return {
133
+ ...structure,
134
+ partial: false,
135
+ async fetch() {
136
+ const fetched = await fetchFn(structure.id);
137
+ Object.assign(this, fetched, { partial: false });
138
+ return this;
139
+ },
140
+ };
141
+ }
142
+ /**
143
+ * Check if partials are enabled for a type
144
+ */
145
+ function hasPartial(client, partial) {
146
+ return client.options?.partials?.includes(partial) ?? false;
147
+ }
148
+ exports.default = Partials;
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFydGlhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvUGFydGlhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFrQkgsOEJBRUM7QUFLRCw4Q0FpQkM7QUFLRCxvREFlQztBQUtELG9EQWtCQztBQUtELDREQWtCQztBQUtELHNEQWdCQztBQThERCw0Q0FjQztBQUtELGdDQUVDO0FBbE5EOztHQUVHO0FBQ0gsSUFBWSxRQVFYO0FBUkQsV0FBWSxRQUFRO0lBQ2xCLHVDQUFRLENBQUE7SUFDUiw2Q0FBVyxDQUFBO0lBQ1gscURBQWUsQ0FBQTtJQUNmLDZDQUFXLENBQUE7SUFDWCwrQ0FBWSxDQUFBO0lBQ1oscUVBQXVCLENBQUE7SUFDdkIsdURBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQVJXLFFBQVEsd0JBQVIsUUFBUSxRQVFuQjtBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLEdBQVE7SUFDaEMsT0FBTyxHQUFHLEVBQUUsT0FBTyxLQUFLLElBQUksQ0FBQztBQUMvQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxFQUFVO0lBQzFDLE9BQU87UUFDTCxFQUFFO1FBQ0YsT0FBTyxFQUFFLElBQUk7UUFDYixRQUFRLEVBQUUsSUFBSTtRQUNkLGFBQWEsRUFBRSxJQUFJO1FBQ25CLE1BQU0sRUFBRSxJQUFJO1FBQ1osR0FBRyxFQUFFLElBQUk7UUFFVCxLQUFLLENBQUMsS0FBSztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsUUFBUTtZQUNOLE9BQU8sS0FBSyxFQUFFLEdBQUcsQ0FBQztRQUNwQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLEVBQVU7SUFDN0MsT0FBTztRQUNMLEVBQUU7UUFDRixPQUFPLEVBQUUsSUFBSTtRQUNiLElBQUksRUFBRSxJQUFJO1FBQ1YsSUFBSSxFQUFFLElBQUk7UUFFVixLQUFLLENBQUMsS0FBSztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsUUFBUTtZQUNOLE9BQU8sS0FBSyxFQUFFLEdBQUcsQ0FBQztRQUNwQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLEVBQVUsRUFBRSxTQUFpQjtJQUNoRSxPQUFPO1FBQ0wsRUFBRTtRQUNGLFNBQVM7UUFDVCxPQUFPLEVBQUUsSUFBSTtRQUNiLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLElBQUk7UUFDWixNQUFNLEVBQUUsSUFBSTtRQUNaLFdBQVcsRUFBRSxJQUFJO1FBRWpCLEtBQUssQ0FBQyxLQUFLO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxRQUFRO1lBQ04sT0FBTyxXQUFXLEVBQUUsR0FBRyxDQUFDO1FBQzFCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsTUFBYyxFQUFFLE9BQWU7SUFDdEUsT0FBTztRQUNMLEVBQUUsRUFBRSxNQUFNO1FBQ1YsT0FBTztRQUNQLE9BQU8sRUFBRSxJQUFJO1FBQ2IsSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsSUFBSTtRQUNWLEtBQUssRUFBRSxJQUFJO1FBQ1gsUUFBUSxFQUFFLElBQUk7UUFFZCxLQUFLLENBQUMsS0FBSztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsUUFBUTtZQUNOLE9BQU8sS0FBSyxNQUFNLEdBQUcsQ0FBQztRQUN4QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLFNBQWlCLEVBQUUsS0FBYTtJQUNwRSxPQUFPO1FBQ0wsU0FBUztRQUNULEtBQUs7UUFDTCxPQUFPLEVBQUUsSUFBSTtRQUNiLEtBQUssRUFBRSxJQUFJO1FBQ1gsRUFBRSxFQUFFLElBQUk7UUFFUixLQUFLLENBQUMsS0FBSztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsUUFBUTtZQUNOLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBMkREOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLFNBQVksRUFDWixNQUFXLEVBQ1gsT0FBbUM7SUFFbkMsT0FBTztRQUNMLEdBQUcsU0FBUztRQUNaLE9BQU8sRUFBRSxLQUFLO1FBQ2QsS0FBSyxDQUFDLEtBQUs7WUFDVCxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDakQsT0FBTyxJQUFTLENBQUM7UUFDbkIsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixVQUFVLENBQUMsTUFBVyxFQUFFLE9BQWlCO0lBQ3ZELE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUM5RCxDQUFDO0FBRUQsa0JBQWUsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFBhcnRpYWxzIC0gSGFuZGxlIHVuY2FjaGVkL3BhcnRpYWwgZGF0YSBzdHJ1Y3R1cmVzXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIFBhcnRpYWwgdHlwZXMgdGhhdCBjYW4gYmUgZW5hYmxlZFxyXG4gKi9cclxuZXhwb3J0IGVudW0gUGFydGlhbHMge1xyXG4gIFVzZXIgPSAwLFxyXG4gIENoYW5uZWwgPSAxLFxyXG4gIEd1aWxkTWVtYmVyID0gMixcclxuICBNZXNzYWdlID0gMyxcclxuICBSZWFjdGlvbiA9IDQsXHJcbiAgR3VpbGRTY2hlZHVsZWRFdmVudCA9IDUsXHJcbiAgVGhyZWFkTWVtYmVyID0gNixcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrIGlmIGEgc3RydWN0dXJlIGlzIHBhcnRpYWwgKG1pc3NpbmcgZGF0YSlcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1BhcnRpYWwob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICByZXR1cm4gb2JqPy5wYXJ0aWFsID09PSB0cnVlO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlIGEgcGFydGlhbCB1c2VyIHN0cnVjdHVyZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhcnRpYWxVc2VyKGlkOiBzdHJpbmcpOiBQYXJ0aWFsVXNlciB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGlkLFxyXG4gICAgcGFydGlhbDogdHJ1ZSxcclxuICAgIHVzZXJuYW1lOiBudWxsLFxyXG4gICAgZGlzY3JpbWluYXRvcjogbnVsbCxcclxuICAgIGF2YXRhcjogbnVsbCxcclxuICAgIGJvdDogbnVsbCxcclxuICAgIFxyXG4gICAgYXN5bmMgZmV0Y2goKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZldGNoIHBhcnRpYWwgdXNlciB3aXRob3V0IGNsaWVudCBjb250ZXh0Jyk7XHJcbiAgICB9LFxyXG4gICAgXHJcbiAgICB0b1N0cmluZygpIHtcclxuICAgICAgcmV0dXJuIGA8QCR7aWR9PmA7XHJcbiAgICB9LFxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGUgYSBwYXJ0aWFsIGNoYW5uZWwgc3RydWN0dXJlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFydGlhbENoYW5uZWwoaWQ6IHN0cmluZyk6IFBhcnRpYWxDaGFubmVsIHtcclxuICByZXR1cm4ge1xyXG4gICAgaWQsXHJcbiAgICBwYXJ0aWFsOiB0cnVlLFxyXG4gICAgdHlwZTogbnVsbCxcclxuICAgIG5hbWU6IG51bGwsXHJcbiAgICBcclxuICAgIGFzeW5jIGZldGNoKCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmZXRjaCBwYXJ0aWFsIGNoYW5uZWwgd2l0aG91dCBjbGllbnQgY29udGV4dCcpO1xyXG4gICAgfSxcclxuICAgIFxyXG4gICAgdG9TdHJpbmcoKSB7XHJcbiAgICAgIHJldHVybiBgPCMke2lkfT5gO1xyXG4gICAgfSxcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlIGEgcGFydGlhbCBtZXNzYWdlIHN0cnVjdHVyZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhcnRpYWxNZXNzYWdlKGlkOiBzdHJpbmcsIGNoYW5uZWxJZDogc3RyaW5nKTogUGFydGlhbE1lc3NhZ2Uge1xyXG4gIHJldHVybiB7XHJcbiAgICBpZCxcclxuICAgIGNoYW5uZWxJZCxcclxuICAgIHBhcnRpYWw6IHRydWUsXHJcbiAgICBjb250ZW50OiBudWxsLFxyXG4gICAgYXV0aG9yOiBudWxsLFxyXG4gICAgZW1iZWRzOiBudWxsLFxyXG4gICAgYXR0YWNobWVudHM6IG51bGwsXHJcbiAgICBcclxuICAgIGFzeW5jIGZldGNoKCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmZXRjaCBwYXJ0aWFsIG1lc3NhZ2Ugd2l0aG91dCBjbGllbnQgY29udGV4dCcpO1xyXG4gICAgfSxcclxuICAgIFxyXG4gICAgdG9TdHJpbmcoKSB7XHJcbiAgICAgIHJldHVybiBgTWVzc2FnZSgke2lkfSlgO1xyXG4gICAgfSxcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlIGEgcGFydGlhbCBndWlsZCBtZW1iZXIgc3RydWN0dXJlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFydGlhbEd1aWxkTWVtYmVyKHVzZXJJZDogc3RyaW5nLCBndWlsZElkOiBzdHJpbmcpOiBQYXJ0aWFsR3VpbGRNZW1iZXIge1xyXG4gIHJldHVybiB7XHJcbiAgICBpZDogdXNlcklkLFxyXG4gICAgZ3VpbGRJZCxcclxuICAgIHBhcnRpYWw6IHRydWUsXHJcbiAgICB1c2VyOiBudWxsLFxyXG4gICAgbmljazogbnVsbCxcclxuICAgIHJvbGVzOiBudWxsLFxyXG4gICAgam9pbmVkQXQ6IG51bGwsXHJcbiAgICBcclxuICAgIGFzeW5jIGZldGNoKCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmZXRjaCBwYXJ0aWFsIG1lbWJlciB3aXRob3V0IGNsaWVudCBjb250ZXh0Jyk7XHJcbiAgICB9LFxyXG4gICAgXHJcbiAgICB0b1N0cmluZygpIHtcclxuICAgICAgcmV0dXJuIGA8QCR7dXNlcklkfT5gO1xyXG4gICAgfSxcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlIGEgcGFydGlhbCByZWFjdGlvbiBzdHJ1Y3R1cmVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXJ0aWFsUmVhY3Rpb24obWVzc2FnZUlkOiBzdHJpbmcsIGVtb2ppOiBzdHJpbmcpOiBQYXJ0aWFsUmVhY3Rpb24ge1xyXG4gIHJldHVybiB7XHJcbiAgICBtZXNzYWdlSWQsXHJcbiAgICBlbW9qaSxcclxuICAgIHBhcnRpYWw6IHRydWUsXHJcbiAgICBjb3VudDogbnVsbCxcclxuICAgIG1lOiBudWxsLFxyXG4gICAgXHJcbiAgICBhc3luYyBmZXRjaCgpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmV0Y2ggcGFydGlhbCByZWFjdGlvbiB3aXRob3V0IGNsaWVudCBjb250ZXh0Jyk7XHJcbiAgICB9LFxyXG4gICAgXHJcbiAgICB0b1N0cmluZygpIHtcclxuICAgICAgcmV0dXJuIGVtb2ppO1xyXG4gICAgfSxcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogUGFydGlhbCBzdHJ1Y3R1cmUgdHlwZXNcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFydGlhbFVzZXIge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgcGFydGlhbDogdHJ1ZTtcclxuICB1c2VybmFtZTogc3RyaW5nIHwgbnVsbDtcclxuICBkaXNjcmltaW5hdG9yOiBzdHJpbmcgfCBudWxsO1xyXG4gIGF2YXRhcjogc3RyaW5nIHwgbnVsbDtcclxuICBib3Q6IGJvb2xlYW4gfCBudWxsO1xyXG4gIGZldGNoKCk6IFByb21pc2U8YW55PjtcclxuICB0b1N0cmluZygpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFydGlhbENoYW5uZWwge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgcGFydGlhbDogdHJ1ZTtcclxuICB0eXBlOiBudW1iZXIgfCBudWxsO1xyXG4gIG5hbWU6IHN0cmluZyB8IG51bGw7XHJcbiAgZmV0Y2goKTogUHJvbWlzZTxhbnk+O1xyXG4gIHRvU3RyaW5nKCk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aWFsTWVzc2FnZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBjaGFubmVsSWQ6IHN0cmluZztcclxuICBwYXJ0aWFsOiB0cnVlO1xyXG4gIGNvbnRlbnQ6IHN0cmluZyB8IG51bGw7XHJcbiAgYXV0aG9yOiBhbnkgfCBudWxsO1xyXG4gIGVtYmVkczogYW55W10gfCBudWxsO1xyXG4gIGF0dGFjaG1lbnRzOiBhbnlbXSB8IG51bGw7XHJcbiAgZmV0Y2goKTogUHJvbWlzZTxhbnk+O1xyXG4gIHRvU3RyaW5nKCk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aWFsR3VpbGRNZW1iZXIge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgZ3VpbGRJZDogc3RyaW5nO1xyXG4gIHBhcnRpYWw6IHRydWU7XHJcbiAgdXNlcjogYW55IHwgbnVsbDtcclxuICBuaWNrOiBzdHJpbmcgfCBudWxsO1xyXG4gIHJvbGVzOiBzdHJpbmdbXSB8IG51bGw7XHJcbiAgam9pbmVkQXQ6IERhdGUgfCBudWxsO1xyXG4gIGZldGNoKCk6IFByb21pc2U8YW55PjtcclxuICB0b1N0cmluZygpOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFydGlhbFJlYWN0aW9uIHtcclxuICBtZXNzYWdlSWQ6IHN0cmluZztcclxuICBlbW9qaTogc3RyaW5nO1xyXG4gIHBhcnRpYWw6IHRydWU7XHJcbiAgY291bnQ6IG51bWJlciB8IG51bGw7XHJcbiAgbWU6IGJvb2xlYW4gfCBudWxsO1xyXG4gIGZldGNoKCk6IFByb21pc2U8YW55PjtcclxuICB0b1N0cmluZygpOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNYWtlIGEgc3RydWN0dXJlIHBhcnRpYWwtYXdhcmUgd2l0aCBmZXRjaCBjYXBhYmlsaXR5XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbWFrZVBhcnRpYWxBd2FyZTxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIH0+KFxyXG4gIHN0cnVjdHVyZTogVCxcclxuICBjbGllbnQ6IGFueSxcclxuICBmZXRjaEZuOiAoaWQ6IHN0cmluZykgPT4gUHJvbWlzZTxUPlxyXG4pOiBUICYgeyBwYXJ0aWFsOiBib29sZWFuOyBmZXRjaDogKCkgPT4gUHJvbWlzZTxUPiB9IHtcclxuICByZXR1cm4ge1xyXG4gICAgLi4uc3RydWN0dXJlLFxyXG4gICAgcGFydGlhbDogZmFsc2UsXHJcbiAgICBhc3luYyBmZXRjaCgpIHtcclxuICAgICAgY29uc3QgZmV0Y2hlZCA9IGF3YWl0IGZldGNoRm4oc3RydWN0dXJlLmlkKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBmZXRjaGVkLCB7IHBhcnRpYWw6IGZhbHNlIH0pO1xyXG4gICAgICByZXR1cm4gdGhpcyBhcyBUO1xyXG4gICAgfSxcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2sgaWYgcGFydGlhbHMgYXJlIGVuYWJsZWQgZm9yIGEgdHlwZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhhc1BhcnRpYWwoY2xpZW50OiBhbnksIHBhcnRpYWw6IFBhcnRpYWxzKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIGNsaWVudC5vcHRpb25zPy5wYXJ0aWFscz8uaW5jbHVkZXMocGFydGlhbCkgPz8gZmFsc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFBhcnRpYWxzO1xyXG4iXX0=
@@ -0,0 +1,118 @@
1
+ import { PermissionFlagsBits } from '../enums';
2
+ /**
3
+ * Permission names type
4
+ */
5
+ export type PermissionString = keyof typeof PermissionFlagsBits;
6
+ /**
7
+ * Resolvable permission type
8
+ */
9
+ export type PermissionResolvable = bigint | bigint[] | PermissionString | PermissionString[] | PermissionsBitField;
10
+ /**
11
+ * Bit field for permissions
12
+ * API compatible with Discord.js PermissionsBitField
13
+ */
14
+ export declare class PermissionsBitField {
15
+ /** The raw bits */
16
+ bitfield: bigint;
17
+ /** All permission flags */
18
+ static Flags: {
19
+ readonly CreateInstantInvite: bigint;
20
+ readonly KickMembers: bigint;
21
+ readonly BanMembers: bigint;
22
+ readonly Administrator: bigint;
23
+ readonly ManageChannels: bigint;
24
+ readonly ManageGuild: bigint;
25
+ readonly AddReactions: bigint;
26
+ readonly ViewAuditLog: bigint;
27
+ readonly ViewGuildInsights: bigint;
28
+ readonly Stream: bigint;
29
+ readonly ViewChannel: bigint;
30
+ readonly SendMessages: bigint;
31
+ readonly SendTTSMessages: bigint;
32
+ readonly ManageMessages: bigint;
33
+ readonly EmbedLinks: bigint;
34
+ readonly AttachFiles: bigint;
35
+ readonly ReadMessageHistory: bigint;
36
+ readonly UseExternalEmojis: bigint;
37
+ readonly UseSlashCommands: bigint;
38
+ readonly MentionEveryone: bigint;
39
+ readonly Connect: bigint;
40
+ readonly Speak: bigint;
41
+ readonly MuteMembers: bigint;
42
+ readonly DeafenMembers: bigint;
43
+ readonly MoveMembers: bigint;
44
+ readonly UseVAD: bigint;
45
+ readonly ChangeCodec: bigint;
46
+ readonly AudioQualityAdmin: bigint;
47
+ readonly VideoCall: bigint;
48
+ readonly ShareScreen: bigint;
49
+ readonly ShareCamera: bigint;
50
+ readonly ControlQuality: bigint;
51
+ readonly RequestToSpeak: bigint;
52
+ readonly ManageEvents: bigint;
53
+ readonly AddMembers: bigint;
54
+ readonly RemoveMembers: bigint;
55
+ readonly ChangeGroupIcon: bigint;
56
+ readonly ChangeDMSettings: bigint;
57
+ readonly ManageGroup: bigint;
58
+ readonly UseActivities: bigint;
59
+ readonly ModerateMembers: bigint;
60
+ readonly ManageRoles: bigint;
61
+ readonly ManageEmojis: bigint;
62
+ readonly PrioritySpeaker: bigint;
63
+ };
64
+ /** All permissions combined */
65
+ static All: bigint;
66
+ /** Default permissions */
67
+ static Default: bigint;
68
+ constructor(bits?: PermissionResolvable);
69
+ /**
70
+ * Check if this bitfield has a permission
71
+ */
72
+ has(permission: PermissionResolvable, checkAdmin?: boolean): boolean;
73
+ /**
74
+ * Check if this bitfield has any of the permissions
75
+ */
76
+ any(permissions: PermissionResolvable, checkAdmin?: boolean): boolean;
77
+ /**
78
+ * Check if this bitfield is missing any permissions
79
+ */
80
+ missing(permissions: PermissionResolvable, checkAdmin?: boolean): PermissionString[];
81
+ /**
82
+ * Add permissions to this bitfield
83
+ */
84
+ add(...permissions: PermissionResolvable[]): this;
85
+ /**
86
+ * Remove permissions from this bitfield
87
+ */
88
+ remove(...permissions: PermissionResolvable[]): this;
89
+ /**
90
+ * Serialize this bitfield to an array of permission names
91
+ */
92
+ toArray(): PermissionString[];
93
+ /**
94
+ * Serialize this bitfield to a JSON-compatible value
95
+ */
96
+ toJSON(): string;
97
+ /**
98
+ * Get the string representation
99
+ */
100
+ toString(): string;
101
+ /**
102
+ * Freeze this bitfield
103
+ */
104
+ freeze(): Readonly<this>;
105
+ /**
106
+ * Check equality with another bitfield
107
+ */
108
+ equals(other: PermissionResolvable): boolean;
109
+ /**
110
+ * Create a new bitfield with the same bits
111
+ */
112
+ clone(): PermissionsBitField;
113
+ /**
114
+ * Resolve a permission to a bigint
115
+ */
116
+ static resolve(permission: PermissionResolvable): bigint;
117
+ }
118
+ export default PermissionsBitField;
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PermissionsBitField = void 0;
4
+ const enums_1 = require("../enums");
5
+ /**
6
+ * Bit field for permissions
7
+ * API compatible with Discord.js PermissionsBitField
8
+ */
9
+ class PermissionsBitField {
10
+ /** The raw bits */
11
+ bitfield;
12
+ /** All permission flags */
13
+ static Flags = enums_1.PermissionFlagsBits;
14
+ /** All permissions combined */
15
+ static All = Object.values(enums_1.PermissionFlagsBits).reduce((acc, val) => acc | val, 0n);
16
+ /** Default permissions */
17
+ static Default = BigInt(0);
18
+ constructor(bits = 0n) {
19
+ this.bitfield = PermissionsBitField.resolve(bits);
20
+ }
21
+ /**
22
+ * Check if this bitfield has a permission
23
+ */
24
+ has(permission, checkAdmin = true) {
25
+ // Admin has all permissions
26
+ if (checkAdmin && this.bitfield & enums_1.PermissionFlagsBits.Administrator) {
27
+ return true;
28
+ }
29
+ const bit = PermissionsBitField.resolve(permission);
30
+ return (this.bitfield & bit) === bit;
31
+ }
32
+ /**
33
+ * Check if this bitfield has any of the permissions
34
+ */
35
+ any(permissions, checkAdmin = true) {
36
+ // Admin has all permissions
37
+ if (checkAdmin && this.bitfield & enums_1.PermissionFlagsBits.Administrator) {
38
+ return true;
39
+ }
40
+ const bit = PermissionsBitField.resolve(permissions);
41
+ return (this.bitfield & bit) !== 0n;
42
+ }
43
+ /**
44
+ * Check if this bitfield is missing any permissions
45
+ */
46
+ missing(permissions, checkAdmin = true) {
47
+ const missing = [];
48
+ for (const [name, bit] of Object.entries(enums_1.PermissionFlagsBits)) {
49
+ const resolved = PermissionsBitField.resolve(permissions);
50
+ if ((resolved & bit) && !this.has(bit, checkAdmin)) {
51
+ missing.push(name);
52
+ }
53
+ }
54
+ return missing;
55
+ }
56
+ /**
57
+ * Add permissions to this bitfield
58
+ */
59
+ add(...permissions) {
60
+ for (const permission of permissions) {
61
+ this.bitfield |= PermissionsBitField.resolve(permission);
62
+ }
63
+ return this;
64
+ }
65
+ /**
66
+ * Remove permissions from this bitfield
67
+ */
68
+ remove(...permissions) {
69
+ for (const permission of permissions) {
70
+ this.bitfield &= ~PermissionsBitField.resolve(permission);
71
+ }
72
+ return this;
73
+ }
74
+ /**
75
+ * Serialize this bitfield to an array of permission names
76
+ */
77
+ toArray() {
78
+ const result = [];
79
+ for (const [name, bit] of Object.entries(enums_1.PermissionFlagsBits)) {
80
+ if (this.bitfield & bit) {
81
+ result.push(name);
82
+ }
83
+ }
84
+ return result;
85
+ }
86
+ /**
87
+ * Serialize this bitfield to a JSON-compatible value
88
+ */
89
+ toJSON() {
90
+ return this.bitfield.toString();
91
+ }
92
+ /**
93
+ * Get the string representation
94
+ */
95
+ toString() {
96
+ return this.bitfield.toString();
97
+ }
98
+ /**
99
+ * Freeze this bitfield
100
+ */
101
+ freeze() {
102
+ return Object.freeze(this);
103
+ }
104
+ /**
105
+ * Check equality with another bitfield
106
+ */
107
+ equals(other) {
108
+ return this.bitfield === PermissionsBitField.resolve(other);
109
+ }
110
+ /**
111
+ * Create a new bitfield with the same bits
112
+ */
113
+ clone() {
114
+ return new PermissionsBitField(this.bitfield);
115
+ }
116
+ /**
117
+ * Resolve a permission to a bigint
118
+ */
119
+ static resolve(permission) {
120
+ if (typeof permission === 'bigint') {
121
+ return permission;
122
+ }
123
+ if (permission instanceof PermissionsBitField) {
124
+ return permission.bitfield;
125
+ }
126
+ if (typeof permission === 'string') {
127
+ const bit = enums_1.PermissionFlagsBits[permission];
128
+ if (bit === undefined) {
129
+ throw new Error(`Unknown permission: ${permission}`);
130
+ }
131
+ return bit;
132
+ }
133
+ if (Array.isArray(permission)) {
134
+ let result = 0n;
135
+ for (const p of permission) {
136
+ result |= PermissionsBitField.resolve(p);
137
+ }
138
+ return result;
139
+ }
140
+ throw new Error(`Invalid permission: ${permission}`);
141
+ }
142
+ }
143
+ exports.PermissionsBitField = PermissionsBitField;
144
+ exports.default = PermissionsBitField;
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVybWlzc2lvbnNCaXRGaWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9QZXJtaXNzaW9uc0JpdEZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9DQUErQztBQWlCL0M7OztHQUdHO0FBQ0gsTUFBYSxtQkFBbUI7SUFDOUIsbUJBQW1CO0lBQ1osUUFBUSxDQUFTO0lBRXhCLDJCQUEyQjtJQUMzQixNQUFNLENBQUMsS0FBSyxHQUFHLDJCQUFtQixDQUFDO0lBRW5DLCtCQUErQjtJQUMvQixNQUFNLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsMkJBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXBGLDBCQUEwQjtJQUMxQixNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzQixZQUFZLE9BQTZCLEVBQUU7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLFVBQWdDLEVBQUUsVUFBVSxHQUFHLElBQUk7UUFDckQsNEJBQTRCO1FBQzVCLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsMkJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDcEUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQUMsV0FB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Z0M7UUFDN0MsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxVQUFVLFlBQVksbUJBQW1CLEVBQUUsQ0FBQztZQUM5QyxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxHQUFHLEdBQUcsMkJBQW1CLENBQUMsVUFBOEIsQ0FBQyxDQUFDO1lBQ2hFLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDaEIsS0FBSyxNQUFNLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxJQUFJLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7QUE5Skgsa0RBK0pDO0FBRUQsa0JBQWUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQZXJtaXNzaW9uRmxhZ3NCaXRzIH0gZnJvbSAnLi4vZW51bXMnO1xyXG5cclxuLyoqXHJcbiAqIFBlcm1pc3Npb24gbmFtZXMgdHlwZVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgUGVybWlzc2lvblN0cmluZyA9IGtleW9mIHR5cGVvZiBQZXJtaXNzaW9uRmxhZ3NCaXRzO1xyXG5cclxuLyoqXHJcbiAqIFJlc29sdmFibGUgcGVybWlzc2lvbiB0eXBlXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uUmVzb2x2YWJsZSA9IFxyXG4gIHwgYmlnaW50IFxyXG4gIHwgYmlnaW50W10gXHJcbiAgfCBQZXJtaXNzaW9uU3RyaW5nIFxyXG4gIHwgUGVybWlzc2lvblN0cmluZ1tdIFxyXG4gIHwgUGVybWlzc2lvbnNCaXRGaWVsZDtcclxuXHJcbi8qKlxyXG4gKiBCaXQgZmllbGQgZm9yIHBlcm1pc3Npb25zXHJcbiAqIEFQSSBjb21wYXRpYmxlIHdpdGggRGlzY29yZC5qcyBQZXJtaXNzaW9uc0JpdEZpZWxkXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNCaXRGaWVsZCB7XHJcbiAgLyoqIFRoZSByYXcgYml0cyAqL1xyXG4gIHB1YmxpYyBiaXRmaWVsZDogYmlnaW50O1xyXG5cclxuICAvKiogQWxsIHBlcm1pc3Npb24gZmxhZ3MgKi9cclxuICBzdGF0aWMgRmxhZ3MgPSBQZXJtaXNzaW9uRmxhZ3NCaXRzO1xyXG5cclxuICAvKiogQWxsIHBlcm1pc3Npb25zIGNvbWJpbmVkICovXHJcbiAgc3RhdGljIEFsbCA9IE9iamVjdC52YWx1ZXMoUGVybWlzc2lvbkZsYWdzQml0cykucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjIHwgdmFsLCAwbik7XHJcblxyXG4gIC8qKiBEZWZhdWx0IHBlcm1pc3Npb25zICovXHJcbiAgc3RhdGljIERlZmF1bHQgPSBCaWdJbnQoMCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGJpdHM6IFBlcm1pc3Npb25SZXNvbHZhYmxlID0gMG4pIHtcclxuICAgIHRoaXMuYml0ZmllbGQgPSBQZXJtaXNzaW9uc0JpdEZpZWxkLnJlc29sdmUoYml0cyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGlzIGJpdGZpZWxkIGhhcyBhIHBlcm1pc3Npb25cclxuICAgKi9cclxuICBoYXMocGVybWlzc2lvbjogUGVybWlzc2lvblJlc29sdmFibGUsIGNoZWNrQWRtaW4gPSB0cnVlKTogYm9vbGVhbiB7XHJcbiAgICAvLyBBZG1pbiBoYXMgYWxsIHBlcm1pc3Npb25zXHJcbiAgICBpZiAoY2hlY2tBZG1pbiAmJiB0aGlzLmJpdGZpZWxkICYgUGVybWlzc2lvbkZsYWdzQml0cy5BZG1pbmlzdHJhdG9yKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGJpdCA9IFBlcm1pc3Npb25zQml0RmllbGQucmVzb2x2ZShwZXJtaXNzaW9uKTtcclxuICAgIHJldHVybiAodGhpcy5iaXRmaWVsZCAmIGJpdCkgPT09IGJpdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIHRoaXMgYml0ZmllbGQgaGFzIGFueSBvZiB0aGUgcGVybWlzc2lvbnNcclxuICAgKi9cclxuICBhbnkocGVybWlzc2lvbnM6IFBlcm1pc3Npb25SZXNvbHZhYmxlLCBjaGVja0FkbWluID0gdHJ1ZSk6IGJvb2xlYW4ge1xyXG4gICAgLy8gQWRtaW4gaGFzIGFsbCBwZXJtaXNzaW9uc1xyXG4gICAgaWYgKGNoZWNrQWRtaW4gJiYgdGhpcy5iaXRmaWVsZCAmIFBlcm1pc3Npb25GbGFnc0JpdHMuQWRtaW5pc3RyYXRvcikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBiaXQgPSBQZXJtaXNzaW9uc0JpdEZpZWxkLnJlc29sdmUocGVybWlzc2lvbnMpO1xyXG4gICAgcmV0dXJuICh0aGlzLmJpdGZpZWxkICYgYml0KSAhPT0gMG47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGlzIGJpdGZpZWxkIGlzIG1pc3NpbmcgYW55IHBlcm1pc3Npb25zXHJcbiAgICovXHJcbiAgbWlzc2luZyhwZXJtaXNzaW9uczogUGVybWlzc2lvblJlc29sdmFibGUsIGNoZWNrQWRtaW4gPSB0cnVlKTogUGVybWlzc2lvblN0cmluZ1tdIHtcclxuICAgIGNvbnN0IG1pc3Npbmc6IFBlcm1pc3Npb25TdHJpbmdbXSA9IFtdO1xyXG4gICAgXHJcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBiaXRdIG9mIE9iamVjdC5lbnRyaWVzKFBlcm1pc3Npb25GbGFnc0JpdHMpKSB7XHJcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gUGVybWlzc2lvbnNCaXRGaWVsZC5yZXNvbHZlKHBlcm1pc3Npb25zKTtcclxuICAgICAgaWYgKChyZXNvbHZlZCAmIGJpdCkgJiYgIXRoaXMuaGFzKGJpdCwgY2hlY2tBZG1pbikpIHtcclxuICAgICAgICBtaXNzaW5nLnB1c2gobmFtZSBhcyBQZXJtaXNzaW9uU3RyaW5nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4gbWlzc2luZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBwZXJtaXNzaW9ucyB0byB0aGlzIGJpdGZpZWxkXHJcbiAgICovXHJcbiAgYWRkKC4uLnBlcm1pc3Npb25zOiBQZXJtaXNzaW9uUmVzb2x2YWJsZVtdKTogdGhpcyB7XHJcbiAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcclxuICAgICAgdGhpcy5iaXRmaWVsZCB8PSBQZXJtaXNzaW9uc0JpdEZpZWxkLnJlc29sdmUocGVybWlzc2lvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBwZXJtaXNzaW9ucyBmcm9tIHRoaXMgYml0ZmllbGRcclxuICAgKi9cclxuICByZW1vdmUoLi4ucGVybWlzc2lvbnM6IFBlcm1pc3Npb25SZXNvbHZhYmxlW10pOiB0aGlzIHtcclxuICAgIGZvciAoY29uc3QgcGVybWlzc2lvbiBvZiBwZXJtaXNzaW9ucykge1xyXG4gICAgICB0aGlzLmJpdGZpZWxkICY9IH5QZXJtaXNzaW9uc0JpdEZpZWxkLnJlc29sdmUocGVybWlzc2lvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlcmlhbGl6ZSB0aGlzIGJpdGZpZWxkIHRvIGFuIGFycmF5IG9mIHBlcm1pc3Npb24gbmFtZXNcclxuICAgKi9cclxuICB0b0FycmF5KCk6IFBlcm1pc3Npb25TdHJpbmdbXSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IFBlcm1pc3Npb25TdHJpbmdbXSA9IFtdO1xyXG4gICAgXHJcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBiaXRdIG9mIE9iamVjdC5lbnRyaWVzKFBlcm1pc3Npb25GbGFnc0JpdHMpKSB7XHJcbiAgICAgIGlmICh0aGlzLmJpdGZpZWxkICYgYml0KSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2gobmFtZSBhcyBQZXJtaXNzaW9uU3RyaW5nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VyaWFsaXplIHRoaXMgYml0ZmllbGQgdG8gYSBKU09OLWNvbXBhdGlibGUgdmFsdWVcclxuICAgKi9cclxuICB0b0pTT04oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmJpdGZpZWxkLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvblxyXG4gICAqL1xyXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5iaXRmaWVsZC50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnJlZXplIHRoaXMgYml0ZmllbGRcclxuICAgKi9cclxuICBmcmVlemUoKTogUmVhZG9ubHk8dGhpcz4ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUodGhpcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBlcXVhbGl0eSB3aXRoIGFub3RoZXIgYml0ZmllbGRcclxuICAgKi9cclxuICBlcXVhbHMob3RoZXI6IFBlcm1pc3Npb25SZXNvbHZhYmxlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5iaXRmaWVsZCA9PT0gUGVybWlzc2lvbnNCaXRGaWVsZC5yZXNvbHZlKG90aGVyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIG5ldyBiaXRmaWVsZCB3aXRoIHRoZSBzYW1lIGJpdHNcclxuICAgKi9cclxuICBjbG9uZSgpOiBQZXJtaXNzaW9uc0JpdEZpZWxkIHtcclxuICAgIHJldHVybiBuZXcgUGVybWlzc2lvbnNCaXRGaWVsZCh0aGlzLmJpdGZpZWxkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc29sdmUgYSBwZXJtaXNzaW9uIHRvIGEgYmlnaW50XHJcbiAgICovXHJcbiAgc3RhdGljIHJlc29sdmUocGVybWlzc2lvbjogUGVybWlzc2lvblJlc29sdmFibGUpOiBiaWdpbnQge1xyXG4gICAgaWYgKHR5cGVvZiBwZXJtaXNzaW9uID09PSAnYmlnaW50Jykge1xyXG4gICAgICByZXR1cm4gcGVybWlzc2lvbjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGVybWlzc2lvbiBpbnN0YW5jZW9mIFBlcm1pc3Npb25zQml0RmllbGQpIHtcclxuICAgICAgcmV0dXJuIHBlcm1pc3Npb24uYml0ZmllbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiBwZXJtaXNzaW9uID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBiaXQgPSBQZXJtaXNzaW9uRmxhZ3NCaXRzW3Blcm1pc3Npb24gYXMgUGVybWlzc2lvblN0cmluZ107XHJcbiAgICAgIGlmIChiaXQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBwZXJtaXNzaW9uOiAke3Blcm1pc3Npb259YCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGJpdDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwZXJtaXNzaW9uKSkge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gMG47XHJcbiAgICAgIGZvciAoY29uc3QgcCBvZiBwZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgcmVzdWx0IHw9IFBlcm1pc3Npb25zQml0RmllbGQucmVzb2x2ZShwKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwZXJtaXNzaW9uOiAke3Blcm1pc3Npb259YCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBQZXJtaXNzaW9uc0JpdEZpZWxkO1xyXG4iXX0=