@jubbio/core 1.3.3 → 1.3.5

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 (131) hide show
  1. package/dist/Client.js +50 -10
  2. package/dist/rest/REST.d.ts +1 -0
  3. package/dist/rest/REST.js +1 -1
  4. package/dist/structures/Channel.d.ts +1 -1
  5. package/dist/structures/Channel.js +11 -4
  6. package/dist/structures/Guild.d.ts +1 -1
  7. package/dist/structures/Guild.js +7 -3
  8. package/dist/structures/Interaction.js +11 -3
  9. package/dist/structures/Message.d.ts +2 -0
  10. package/dist/structures/Message.js +13 -33
  11. package/package.json +4 -14
  12. package/dist/cjs/Client.d.ts +0 -157
  13. package/dist/cjs/Client.js +0 -640
  14. package/dist/cjs/builders/ActionRowBuilder.d.ts +0 -53
  15. package/dist/cjs/builders/ActionRowBuilder.js +0 -68
  16. package/dist/cjs/builders/ButtonBuilder.d.ts +0 -77
  17. package/dist/cjs/builders/ButtonBuilder.js +0 -96
  18. package/dist/cjs/builders/EmbedBuilder.d.ts +0 -157
  19. package/dist/cjs/builders/EmbedBuilder.js +0 -208
  20. package/dist/cjs/builders/ModalBuilder.d.ts +0 -122
  21. package/dist/cjs/builders/ModalBuilder.js +0 -162
  22. package/dist/cjs/builders/SelectMenuBuilder.d.ts +0 -123
  23. package/dist/cjs/builders/SelectMenuBuilder.js +0 -165
  24. package/dist/cjs/builders/SlashCommandBuilder.d.ts +0 -197
  25. package/dist/cjs/builders/SlashCommandBuilder.js +0 -324
  26. package/dist/cjs/builders/index.d.ts +0 -9
  27. package/dist/cjs/builders/index.js +0 -26
  28. package/dist/cjs/enums.d.ts +0 -191
  29. package/dist/cjs/enums.js +0 -211
  30. package/dist/cjs/index.d.ts +0 -25
  31. package/dist/cjs/index.js +0 -130
  32. package/dist/cjs/managers/BaseManager.d.ts +0 -69
  33. package/dist/cjs/managers/BaseManager.js +0 -106
  34. package/dist/cjs/managers/ChannelManager.d.ts +0 -95
  35. package/dist/cjs/managers/ChannelManager.js +0 -205
  36. package/dist/cjs/managers/GuildMemberManager.d.ts +0 -74
  37. package/dist/cjs/managers/GuildMemberManager.js +0 -157
  38. package/dist/cjs/managers/RoleManager.d.ts +0 -84
  39. package/dist/cjs/managers/RoleManager.js +0 -207
  40. package/dist/cjs/managers/index.d.ts +0 -7
  41. package/dist/cjs/managers/index.js +0 -24
  42. package/dist/cjs/rest/REST.d.ts +0 -527
  43. package/dist/cjs/rest/REST.js +0 -904
  44. package/dist/cjs/rest/index.d.ts +0 -1
  45. package/dist/cjs/rest/index.js +0 -18
  46. package/dist/cjs/sharding/ShardingManager.d.ts +0 -179
  47. package/dist/cjs/sharding/ShardingManager.js +0 -375
  48. package/dist/cjs/sharding/index.d.ts +0 -4
  49. package/dist/cjs/sharding/index.js +0 -21
  50. package/dist/cjs/structures/Channel.d.ts +0 -122
  51. package/dist/cjs/structures/Channel.js +0 -240
  52. package/dist/cjs/structures/Collection.d.ts +0 -53
  53. package/dist/cjs/structures/Collection.js +0 -115
  54. package/dist/cjs/structures/Guild.d.ts +0 -59
  55. package/dist/cjs/structures/Guild.js +0 -94
  56. package/dist/cjs/structures/GuildMember.d.ts +0 -174
  57. package/dist/cjs/structures/GuildMember.js +0 -311
  58. package/dist/cjs/structures/Interaction.d.ts +0 -245
  59. package/dist/cjs/structures/Interaction.js +0 -450
  60. package/dist/cjs/structures/Message.d.ts +0 -98
  61. package/dist/cjs/structures/Message.js +0 -195
  62. package/dist/cjs/structures/User.d.ts +0 -37
  63. package/dist/cjs/structures/User.js +0 -65
  64. package/dist/cjs/structures/index.d.ts +0 -7
  65. package/dist/cjs/structures/index.js +0 -25
  66. package/dist/cjs/structures.d.ts +0 -1
  67. package/dist/cjs/structures.js +0 -19
  68. package/dist/cjs/types.d.ts +0 -255
  69. package/dist/cjs/types.js +0 -3
  70. package/dist/cjs/utils/BitField.d.ts +0 -66
  71. package/dist/cjs/utils/BitField.js +0 -138
  72. package/dist/cjs/utils/Collection.d.ts +0 -116
  73. package/dist/cjs/utils/Collection.js +0 -265
  74. package/dist/cjs/utils/Collector.d.ts +0 -152
  75. package/dist/cjs/utils/Collector.js +0 -314
  76. package/dist/cjs/utils/DataResolver.d.ts +0 -61
  77. package/dist/cjs/utils/DataResolver.js +0 -146
  78. package/dist/cjs/utils/Formatters.d.ts +0 -145
  79. package/dist/cjs/utils/Formatters.js +0 -213
  80. package/dist/cjs/utils/IntentsBitField.d.ts +0 -85
  81. package/dist/cjs/utils/IntentsBitField.js +0 -99
  82. package/dist/cjs/utils/Partials.d.ts +0 -104
  83. package/dist/cjs/utils/Partials.js +0 -148
  84. package/dist/cjs/utils/PermissionsBitField.d.ts +0 -118
  85. package/dist/cjs/utils/PermissionsBitField.js +0 -145
  86. package/dist/cjs/utils/SnowflakeUtil.d.ts +0 -63
  87. package/dist/cjs/utils/SnowflakeUtil.js +0 -93
  88. package/dist/cjs/utils/Sweepers.d.ts +0 -119
  89. package/dist/cjs/utils/Sweepers.js +0 -249
  90. package/dist/cjs/utils/index.d.ts +0 -13
  91. package/dist/cjs/utils/index.js +0 -30
  92. package/dist/esm/Client.js +0 -634
  93. package/dist/esm/builders/ActionRowBuilder.js +0 -64
  94. package/dist/esm/builders/ButtonBuilder.js +0 -92
  95. package/dist/esm/builders/EmbedBuilder.js +0 -204
  96. package/dist/esm/builders/ModalBuilder.js +0 -157
  97. package/dist/esm/builders/SelectMenuBuilder.js +0 -161
  98. package/dist/esm/builders/SlashCommandBuilder.js +0 -311
  99. package/dist/esm/builders/index.js +0 -10
  100. package/dist/esm/enums.js +0 -208
  101. package/dist/esm/index.js +0 -34
  102. package/dist/esm/managers/BaseManager.js +0 -100
  103. package/dist/esm/managers/ChannelManager.js +0 -200
  104. package/dist/esm/managers/GuildMemberManager.js +0 -153
  105. package/dist/esm/managers/RoleManager.js +0 -203
  106. package/dist/esm/managers/index.js +0 -8
  107. package/dist/esm/rest/REST.js +0 -900
  108. package/dist/esm/rest/index.js +0 -2
  109. package/dist/esm/sharding/ShardingManager.js +0 -366
  110. package/dist/esm/sharding/index.js +0 -5
  111. package/dist/esm/structures/Channel.js +0 -232
  112. package/dist/esm/structures/Collection.js +0 -111
  113. package/dist/esm/structures/Guild.js +0 -90
  114. package/dist/esm/structures/GuildMember.js +0 -306
  115. package/dist/esm/structures/Interaction.js +0 -438
  116. package/dist/esm/structures/Message.js +0 -191
  117. package/dist/esm/structures/User.js +0 -61
  118. package/dist/esm/structures/index.js +0 -9
  119. package/dist/esm/structures.js +0 -3
  120. package/dist/esm/types.js +0 -2
  121. package/dist/esm/utils/BitField.js +0 -134
  122. package/dist/esm/utils/Collection.js +0 -261
  123. package/dist/esm/utils/Collector.js +0 -305
  124. package/dist/esm/utils/DataResolver.js +0 -142
  125. package/dist/esm/utils/Formatters.js +0 -191
  126. package/dist/esm/utils/IntentsBitField.js +0 -93
  127. package/dist/esm/utils/Partials.js +0 -137
  128. package/dist/esm/utils/PermissionsBitField.js +0 -141
  129. package/dist/esm/utils/SnowflakeUtil.js +0 -89
  130. package/dist/esm/utils/Sweepers.js +0 -245
  131. package/dist/esm/utils/index.js +0 -14
@@ -1,141 +0,0 @@
1
- import { PermissionFlagsBits } from '../enums';
2
- /**
3
- * Bit field for permissions
4
- * API compatible with Discord.js PermissionsBitField
5
- */
6
- export class PermissionsBitField {
7
- /** The raw bits */
8
- bitfield;
9
- /** All permission flags */
10
- static Flags = PermissionFlagsBits;
11
- /** All permissions combined */
12
- static All = Object.values(PermissionFlagsBits).reduce((acc, val) => acc | val, 0n);
13
- /** Default permissions */
14
- static Default = BigInt(0);
15
- constructor(bits = 0n) {
16
- this.bitfield = PermissionsBitField.resolve(bits);
17
- }
18
- /**
19
- * Check if this bitfield has a permission
20
- */
21
- has(permission, checkAdmin = true) {
22
- // Admin has all permissions
23
- if (checkAdmin && this.bitfield & PermissionFlagsBits.Administrator) {
24
- return true;
25
- }
26
- const bit = PermissionsBitField.resolve(permission);
27
- return (this.bitfield & bit) === bit;
28
- }
29
- /**
30
- * Check if this bitfield has any of the permissions
31
- */
32
- any(permissions, checkAdmin = true) {
33
- // Admin has all permissions
34
- if (checkAdmin && this.bitfield & PermissionFlagsBits.Administrator) {
35
- return true;
36
- }
37
- const bit = PermissionsBitField.resolve(permissions);
38
- return (this.bitfield & bit) !== 0n;
39
- }
40
- /**
41
- * Check if this bitfield is missing any permissions
42
- */
43
- missing(permissions, checkAdmin = true) {
44
- const missing = [];
45
- for (const [name, bit] of Object.entries(PermissionFlagsBits)) {
46
- const resolved = PermissionsBitField.resolve(permissions);
47
- if ((resolved & bit) && !this.has(bit, checkAdmin)) {
48
- missing.push(name);
49
- }
50
- }
51
- return missing;
52
- }
53
- /**
54
- * Add permissions to this bitfield
55
- */
56
- add(...permissions) {
57
- for (const permission of permissions) {
58
- this.bitfield |= PermissionsBitField.resolve(permission);
59
- }
60
- return this;
61
- }
62
- /**
63
- * Remove permissions from this bitfield
64
- */
65
- remove(...permissions) {
66
- for (const permission of permissions) {
67
- this.bitfield &= ~PermissionsBitField.resolve(permission);
68
- }
69
- return this;
70
- }
71
- /**
72
- * Serialize this bitfield to an array of permission names
73
- */
74
- toArray() {
75
- const result = [];
76
- for (const [name, bit] of Object.entries(PermissionFlagsBits)) {
77
- if (this.bitfield & bit) {
78
- result.push(name);
79
- }
80
- }
81
- return result;
82
- }
83
- /**
84
- * Serialize this bitfield to a JSON-compatible value
85
- */
86
- toJSON() {
87
- return this.bitfield.toString();
88
- }
89
- /**
90
- * Get the string representation
91
- */
92
- toString() {
93
- return this.bitfield.toString();
94
- }
95
- /**
96
- * Freeze this bitfield
97
- */
98
- freeze() {
99
- return Object.freeze(this);
100
- }
101
- /**
102
- * Check equality with another bitfield
103
- */
104
- equals(other) {
105
- return this.bitfield === PermissionsBitField.resolve(other);
106
- }
107
- /**
108
- * Create a new bitfield with the same bits
109
- */
110
- clone() {
111
- return new PermissionsBitField(this.bitfield);
112
- }
113
- /**
114
- * Resolve a permission to a bigint
115
- */
116
- static resolve(permission) {
117
- if (typeof permission === 'bigint') {
118
- return permission;
119
- }
120
- if (permission instanceof PermissionsBitField) {
121
- return permission.bitfield;
122
- }
123
- if (typeof permission === 'string') {
124
- const bit = PermissionFlagsBits[permission];
125
- if (bit === undefined) {
126
- throw new Error(`Unknown permission: ${permission}`);
127
- }
128
- return bit;
129
- }
130
- if (Array.isArray(permission)) {
131
- let result = 0n;
132
- for (const p of permission) {
133
- result |= PermissionsBitField.resolve(p);
134
- }
135
- return result;
136
- }
137
- throw new Error(`Invalid permission: ${permission}`);
138
- }
139
- }
140
- export default PermissionsBitField;
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVybWlzc2lvbnNCaXRGaWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9QZXJtaXNzaW9uc0JpdEZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQWlCL0M7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixtQkFBbUI7SUFDWixRQUFRLENBQVM7SUFFeEIsMkJBQTJCO0lBQzNCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUM7SUFFbkMsK0JBQStCO0lBQy9CLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFcEYsMEJBQTBCO0lBQzFCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTNCLFlBQVksT0FBNkIsRUFBRTtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQUMsVUFBZ0MsRUFBRSxVQUFVLEdBQUcsSUFBSTtRQUNyRCw0QkFBNEI7UUFDNUIsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNwRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDO0lBQ3ZD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OztPQUVHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFnQztRQUM3QyxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxJQUFJLFVBQVUsWUFBWSxtQkFBbUIsRUFBRSxDQUFDO1lBQzlDLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUM3QixDQUFDO1FBRUQsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxVQUE4QixDQUFDLENBQUM7WUFDaEUsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNoQixLQUFLLE1BQU0sQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUMzQixNQUFNLElBQUksbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDOztBQUdILGVBQWUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQZXJtaXNzaW9uRmxhZ3NCaXRzIH0gZnJvbSAnLi4vZW51bXMnO1xuXG4vKipcbiAqIFBlcm1pc3Npb24gbmFtZXMgdHlwZVxuICovXG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uU3RyaW5nID0ga2V5b2YgdHlwZW9mIFBlcm1pc3Npb25GbGFnc0JpdHM7XG5cbi8qKlxuICogUmVzb2x2YWJsZSBwZXJtaXNzaW9uIHR5cGVcbiAqL1xuZXhwb3J0IHR5cGUgUGVybWlzc2lvblJlc29sdmFibGUgPSBcbiAgfCBiaWdpbnQgXG4gIHwgYmlnaW50W10gXG4gIHwgUGVybWlzc2lvblN0cmluZyBcbiAgfCBQZXJtaXNzaW9uU3RyaW5nW10gXG4gIHwgUGVybWlzc2lvbnNCaXRGaWVsZDtcblxuLyoqXG4gKiBCaXQgZmllbGQgZm9yIHBlcm1pc3Npb25zXG4gKiBBUEkgY29tcGF0aWJsZSB3aXRoIERpc2NvcmQuanMgUGVybWlzc2lvbnNCaXRGaWVsZFxuICovXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnNCaXRGaWVsZCB7XG4gIC8qKiBUaGUgcmF3IGJpdHMgKi9cbiAgcHVibGljIGJpdGZpZWxkOiBiaWdpbnQ7XG5cbiAgLyoqIEFsbCBwZXJtaXNzaW9uIGZsYWdzICovXG4gIHN0YXRpYyBGbGFncyA9IFBlcm1pc3Npb25GbGFnc0JpdHM7XG5cbiAgLyoqIEFsbCBwZXJtaXNzaW9ucyBjb21iaW5lZCAqL1xuICBzdGF0aWMgQWxsID0gT2JqZWN0LnZhbHVlcyhQZXJtaXNzaW9uRmxhZ3NCaXRzKS5yZWR1Y2UoKGFjYywgdmFsKSA9PiBhY2MgfCB2YWwsIDBuKTtcblxuICAvKiogRGVmYXVsdCBwZXJtaXNzaW9ucyAqL1xuICBzdGF0aWMgRGVmYXVsdCA9IEJpZ0ludCgwKTtcblxuICBjb25zdHJ1Y3RvcihiaXRzOiBQZXJtaXNzaW9uUmVzb2x2YWJsZSA9IDBuKSB7XG4gICAgdGhpcy5iaXRmaWVsZCA9IFBlcm1pc3Npb25zQml0RmllbGQucmVzb2x2ZShiaXRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGlzIGJpdGZpZWxkIGhhcyBhIHBlcm1pc3Npb25cbiAgICovXG4gIGhhcyhwZXJtaXNzaW9uOiBQZXJtaXNzaW9uUmVzb2x2YWJsZSwgY2hlY2tBZG1pbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICAvLyBBZG1pbiBoYXMgYWxsIHBlcm1pc3Npb25zXG4gICAgaWYgKGNoZWNrQWRtaW4gJiYgdGhpcy5iaXRmaWVsZCAmIFBlcm1pc3Npb25GbGFnc0JpdHMuQWRtaW5pc3RyYXRvcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgYml0ID0gUGVybWlzc2lvbnNCaXRGaWVsZC5yZXNvbHZlKHBlcm1pc3Npb24pO1xuICAgIHJldHVybiAodGhpcy5iaXRmaWVsZCAmIGJpdCkgPT09IGJpdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGlzIGJpdGZpZWxkIGhhcyBhbnkgb2YgdGhlIHBlcm1pc3Npb25zXG4gICAqL1xuICBhbnkocGVybWlzc2lvbnM6IFBlcm1pc3Npb25SZXNvbHZhYmxlLCBjaGVja0FkbWluID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIC8vIEFkbWluIGhhcyBhbGwgcGVybWlzc2lvbnNcbiAgICBpZiAoY2hlY2tBZG1pbiAmJiB0aGlzLmJpdGZpZWxkICYgUGVybWlzc2lvbkZsYWdzQml0cy5BZG1pbmlzdHJhdG9yKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBiaXQgPSBQZXJtaXNzaW9uc0JpdEZpZWxkLnJlc29sdmUocGVybWlzc2lvbnMpO1xuICAgIHJldHVybiAodGhpcy5iaXRmaWVsZCAmIGJpdCkgIT09IDBuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoaXMgYml0ZmllbGQgaXMgbWlzc2luZyBhbnkgcGVybWlzc2lvbnNcbiAgICovXG4gIG1pc3NpbmcocGVybWlzc2lvbnM6IFBlcm1pc3Npb25SZXNvbHZhYmxlLCBjaGVja0FkbWluID0gdHJ1ZSk6IFBlcm1pc3Npb25TdHJpbmdbXSB7XG4gICAgY29uc3QgbWlzc2luZzogUGVybWlzc2lvblN0cmluZ1tdID0gW107XG4gICAgXG4gICAgZm9yIChjb25zdCBbbmFtZSwgYml0XSBvZiBPYmplY3QuZW50cmllcyhQZXJtaXNzaW9uRmxhZ3NCaXRzKSkge1xuICAgICAgY29uc3QgcmVzb2x2ZWQgPSBQZXJtaXNzaW9uc0JpdEZpZWxkLnJlc29sdmUocGVybWlzc2lvbnMpO1xuICAgICAgaWYgKChyZXNvbHZlZCAmIGJpdCkgJiYgIXRoaXMuaGFzKGJpdCwgY2hlY2tBZG1pbikpIHtcbiAgICAgICAgbWlzc2luZy5wdXNoKG5hbWUgYXMgUGVybWlzc2lvblN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBtaXNzaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBwZXJtaXNzaW9ucyB0byB0aGlzIGJpdGZpZWxkXG4gICAqL1xuICBhZGQoLi4ucGVybWlzc2lvbnM6IFBlcm1pc3Npb25SZXNvbHZhYmxlW10pOiB0aGlzIHtcbiAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgIHRoaXMuYml0ZmllbGQgfD0gUGVybWlzc2lvbnNCaXRGaWVsZC5yZXNvbHZlKHBlcm1pc3Npb24pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgcGVybWlzc2lvbnMgZnJvbSB0aGlzIGJpdGZpZWxkXG4gICAqL1xuICByZW1vdmUoLi4ucGVybWlzc2lvbnM6IFBlcm1pc3Npb25SZXNvbHZhYmxlW10pOiB0aGlzIHtcbiAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgIHRoaXMuYml0ZmllbGQgJj0gflBlcm1pc3Npb25zQml0RmllbGQucmVzb2x2ZShwZXJtaXNzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIHRoaXMgYml0ZmllbGQgdG8gYW4gYXJyYXkgb2YgcGVybWlzc2lvbiBuYW1lc1xuICAgKi9cbiAgdG9BcnJheSgpOiBQZXJtaXNzaW9uU3RyaW5nW10ge1xuICAgIGNvbnN0IHJlc3VsdDogUGVybWlzc2lvblN0cmluZ1tdID0gW107XG4gICAgXG4gICAgZm9yIChjb25zdCBbbmFtZSwgYml0XSBvZiBPYmplY3QuZW50cmllcyhQZXJtaXNzaW9uRmxhZ3NCaXRzKSkge1xuICAgICAgaWYgKHRoaXMuYml0ZmllbGQgJiBiaXQpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gobmFtZSBhcyBQZXJtaXNzaW9uU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgdGhpcyBiaXRmaWVsZCB0byBhIEpTT04tY29tcGF0aWJsZSB2YWx1ZVxuICAgKi9cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYml0ZmllbGQudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5iaXRmaWVsZC50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZyZWV6ZSB0aGlzIGJpdGZpZWxkXG4gICAqL1xuICBmcmVlemUoKTogUmVhZG9ubHk8dGhpcz4ge1xuICAgIHJldHVybiBPYmplY3QuZnJlZXplKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGVxdWFsaXR5IHdpdGggYW5vdGhlciBiaXRmaWVsZFxuICAgKi9cbiAgZXF1YWxzKG90aGVyOiBQZXJtaXNzaW9uUmVzb2x2YWJsZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmJpdGZpZWxkID09PSBQZXJtaXNzaW9uc0JpdEZpZWxkLnJlc29sdmUob3RoZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBiaXRmaWVsZCB3aXRoIHRoZSBzYW1lIGJpdHNcbiAgICovXG4gIGNsb25lKCk6IFBlcm1pc3Npb25zQml0RmllbGQge1xuICAgIHJldHVybiBuZXcgUGVybWlzc2lvbnNCaXRGaWVsZCh0aGlzLmJpdGZpZWxkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIGEgcGVybWlzc2lvbiB0byBhIGJpZ2ludFxuICAgKi9cbiAgc3RhdGljIHJlc29sdmUocGVybWlzc2lvbjogUGVybWlzc2lvblJlc29sdmFibGUpOiBiaWdpbnQge1xuICAgIGlmICh0eXBlb2YgcGVybWlzc2lvbiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgIHJldHVybiBwZXJtaXNzaW9uO1xuICAgIH1cblxuICAgIGlmIChwZXJtaXNzaW9uIGluc3RhbmNlb2YgUGVybWlzc2lvbnNCaXRGaWVsZCkge1xuICAgICAgcmV0dXJuIHBlcm1pc3Npb24uYml0ZmllbGQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBwZXJtaXNzaW9uID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgYml0ID0gUGVybWlzc2lvbkZsYWdzQml0c1twZXJtaXNzaW9uIGFzIFBlcm1pc3Npb25TdHJpbmddO1xuICAgICAgaWYgKGJpdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBwZXJtaXNzaW9uOiAke3Blcm1pc3Npb259YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYml0O1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHBlcm1pc3Npb24pKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gMG47XG4gICAgICBmb3IgKGNvbnN0IHAgb2YgcGVybWlzc2lvbikge1xuICAgICAgICByZXN1bHQgfD0gUGVybWlzc2lvbnNCaXRGaWVsZC5yZXNvbHZlKHApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGVybWlzc2lvbjogJHtwZXJtaXNzaW9ufWApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBlcm1pc3Npb25zQml0RmllbGQ7XG4iXX0=
@@ -1,89 +0,0 @@
1
- /**
2
- * Snowflake utilities
3
- * API compatible with Discord.js SnowflakeUtil
4
- */
5
- // Jubbio epoch (same as Discord: 2015-01-01T00:00:00.000Z)
6
- const EPOCH = 1420070400000n;
7
- /**
8
- * A container for useful snowflake-related methods
9
- */
10
- export class SnowflakeUtil {
11
- /**
12
- * Jubbio's epoch value
13
- */
14
- static EPOCH = EPOCH;
15
- /**
16
- * Generates a snowflake ID
17
- * @param timestamp Timestamp or date to generate from
18
- */
19
- static generate(timestamp = Date.now()) {
20
- const time = timestamp instanceof Date ? timestamp.getTime() : timestamp;
21
- return ((BigInt(time) - EPOCH) << 22n).toString();
22
- }
23
- /**
24
- * Deconstructs a snowflake ID
25
- * @param snowflake Snowflake to deconstruct
26
- */
27
- static deconstruct(snowflake) {
28
- const bigIntSnowflake = BigInt(snowflake);
29
- return {
30
- timestamp: Number((bigIntSnowflake >> 22n) + EPOCH),
31
- get date() {
32
- return new Date(this.timestamp);
33
- },
34
- workerId: Number((bigIntSnowflake & 0x3e0000n) >> 17n),
35
- processId: Number((bigIntSnowflake & 0x1f000n) >> 12n),
36
- increment: Number(bigIntSnowflake & 0xfffn),
37
- binary: bigIntSnowflake.toString(2).padStart(64, '0'),
38
- };
39
- }
40
- /**
41
- * Retrieves the timestamp from a snowflake
42
- * @param snowflake Snowflake to get the timestamp from
43
- */
44
- static timestampFrom(snowflake) {
45
- return Number((BigInt(snowflake) >> 22n) + EPOCH);
46
- }
47
- /**
48
- * Retrieves the date from a snowflake
49
- * @param snowflake Snowflake to get the date from
50
- */
51
- static dateFrom(snowflake) {
52
- return new Date(SnowflakeUtil.timestampFrom(snowflake));
53
- }
54
- /**
55
- * Compares two snowflakes
56
- * @param a First snowflake
57
- * @param b Second snowflake
58
- * @returns -1 if a < b, 0 if a === b, 1 if a > b
59
- */
60
- static compare(a, b) {
61
- const bigA = BigInt(a);
62
- const bigB = BigInt(b);
63
- if (bigA < bigB)
64
- return -1;
65
- if (bigA > bigB)
66
- return 1;
67
- return 0;
68
- }
69
- /**
70
- * Checks if a value is a valid snowflake
71
- * @param value Value to check
72
- */
73
- static isValid(value) {
74
- if (typeof value !== 'string')
75
- return false;
76
- if (!/^\d{17,20}$/.test(value))
77
- return false;
78
- try {
79
- const timestamp = SnowflakeUtil.timestampFrom(value);
80
- return timestamp > Number(EPOCH) && timestamp < Date.now() + 1000 * 60 * 60 * 24 * 365; // Within reasonable range
81
- }
82
- catch {
83
- return false;
84
- }
85
- }
86
- }
87
- // Export as default too for convenience
88
- export default SnowflakeUtil;
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU25vd2ZsYWtlVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9Tbm93Zmxha2VVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILDJEQUEyRDtBQUMzRCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUM7QUFFN0I7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUN4Qjs7T0FFRztJQUNILE1BQU0sQ0FBVSxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRTlCOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBMkIsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNuRCxNQUFNLElBQUksR0FBRyxTQUFTLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN6RSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBaUI7UUFDbEMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLE9BQU87WUFDTCxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNuRCxJQUFJLElBQUk7Z0JBQ04sT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDO1lBQ3RELFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDO1lBQ3RELFNBQVMsRUFBRSxNQUFNLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztZQUMzQyxNQUFNLEVBQUUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQztTQUN0RCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBaUI7UUFDcEMsT0FBTyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBaUI7UUFDL0IsT0FBTyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUNqQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxHQUFHLElBQUk7WUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksSUFBSSxHQUFHLElBQUk7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWM7UUFDM0IsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDN0MsSUFBSSxDQUFDO1lBQ0gsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxPQUFPLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsMEJBQTBCO1FBQ3BILENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDOztBQXFCSCx3Q0FBd0M7QUFDeEMsZUFBZSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNub3dmbGFrZSB1dGlsaXRpZXNcbiAqIEFQSSBjb21wYXRpYmxlIHdpdGggRGlzY29yZC5qcyBTbm93Zmxha2VVdGlsXG4gKi9cblxuLy8gSnViYmlvIGVwb2NoIChzYW1lIGFzIERpc2NvcmQ6IDIwMTUtMDEtMDFUMDA6MDA6MDAuMDAwWilcbmNvbnN0IEVQT0NIID0gMTQyMDA3MDQwMDAwMG47XG5cbi8qKlxuICogQSBjb250YWluZXIgZm9yIHVzZWZ1bCBzbm93Zmxha2UtcmVsYXRlZCBtZXRob2RzXG4gKi9cbmV4cG9ydCBjbGFzcyBTbm93Zmxha2VVdGlsIHtcbiAgLyoqXG4gICAqIEp1YmJpbydzIGVwb2NoIHZhbHVlXG4gICAqL1xuICBzdGF0aWMgcmVhZG9ubHkgRVBPQ0ggPSBFUE9DSDtcblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgc25vd2ZsYWtlIElEXG4gICAqIEBwYXJhbSB0aW1lc3RhbXAgVGltZXN0YW1wIG9yIGRhdGUgdG8gZ2VuZXJhdGUgZnJvbVxuICAgKi9cbiAgc3RhdGljIGdlbmVyYXRlKHRpbWVzdGFtcDogbnVtYmVyIHwgRGF0ZSA9IERhdGUubm93KCkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRpbWUgPSB0aW1lc3RhbXAgaW5zdGFuY2VvZiBEYXRlID8gdGltZXN0YW1wLmdldFRpbWUoKSA6IHRpbWVzdGFtcDtcbiAgICByZXR1cm4gKChCaWdJbnQodGltZSkgLSBFUE9DSCkgPDwgMjJuKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29uc3RydWN0cyBhIHNub3dmbGFrZSBJRFxuICAgKiBAcGFyYW0gc25vd2ZsYWtlIFNub3dmbGFrZSB0byBkZWNvbnN0cnVjdFxuICAgKi9cbiAgc3RhdGljIGRlY29uc3RydWN0KHNub3dmbGFrZTogc3RyaW5nKTogRGVjb25zdHJ1Y3RlZFNub3dmbGFrZSB7XG4gICAgY29uc3QgYmlnSW50U25vd2ZsYWtlID0gQmlnSW50KHNub3dmbGFrZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpbWVzdGFtcDogTnVtYmVyKChiaWdJbnRTbm93Zmxha2UgPj4gMjJuKSArIEVQT0NIKSxcbiAgICAgIGdldCBkYXRlKCkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy50aW1lc3RhbXApO1xuICAgICAgfSxcbiAgICAgIHdvcmtlcklkOiBOdW1iZXIoKGJpZ0ludFNub3dmbGFrZSAmIDB4M0UwMDAwbikgPj4gMTduKSxcbiAgICAgIHByb2Nlc3NJZDogTnVtYmVyKChiaWdJbnRTbm93Zmxha2UgJiAweDFGMDAwbikgPj4gMTJuKSxcbiAgICAgIGluY3JlbWVudDogTnVtYmVyKGJpZ0ludFNub3dmbGFrZSAmIDB4RkZGbiksXG4gICAgICBiaW5hcnk6IGJpZ0ludFNub3dmbGFrZS50b1N0cmluZygyKS5wYWRTdGFydCg2NCwgJzAnKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgdGltZXN0YW1wIGZyb20gYSBzbm93Zmxha2VcbiAgICogQHBhcmFtIHNub3dmbGFrZSBTbm93Zmxha2UgdG8gZ2V0IHRoZSB0aW1lc3RhbXAgZnJvbVxuICAgKi9cbiAgc3RhdGljIHRpbWVzdGFtcEZyb20oc25vd2ZsYWtlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiBOdW1iZXIoKEJpZ0ludChzbm93Zmxha2UpID4+IDIybikgKyBFUE9DSCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBkYXRlIGZyb20gYSBzbm93Zmxha2VcbiAgICogQHBhcmFtIHNub3dmbGFrZSBTbm93Zmxha2UgdG8gZ2V0IHRoZSBkYXRlIGZyb21cbiAgICovXG4gIHN0YXRpYyBkYXRlRnJvbShzbm93Zmxha2U6IHN0cmluZyk6IERhdGUge1xuICAgIHJldHVybiBuZXcgRGF0ZShTbm93Zmxha2VVdGlsLnRpbWVzdGFtcEZyb20oc25vd2ZsYWtlKSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIHNub3dmbGFrZXNcbiAgICogQHBhcmFtIGEgRmlyc3Qgc25vd2ZsYWtlXG4gICAqIEBwYXJhbSBiIFNlY29uZCBzbm93Zmxha2VcbiAgICogQHJldHVybnMgLTEgaWYgYSA8IGIsIDAgaWYgYSA9PT0gYiwgMSBpZiBhID4gYlxuICAgKi9cbiAgc3RhdGljIGNvbXBhcmUoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiAtMSB8IDAgfCAxIHtcbiAgICBjb25zdCBiaWdBID0gQmlnSW50KGEpO1xuICAgIGNvbnN0IGJpZ0IgPSBCaWdJbnQoYik7XG4gICAgaWYgKGJpZ0EgPCBiaWdCKSByZXR1cm4gLTE7XG4gICAgaWYgKGJpZ0EgPiBiaWdCKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB2YWx1ZSBpcyBhIHZhbGlkIHNub3dmbGFrZVxuICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcbiAgICovXG4gIHN0YXRpYyBpc1ZhbGlkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghL15cXGR7MTcsMjB9JC8udGVzdCh2YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gU25vd2ZsYWtlVXRpbC50aW1lc3RhbXBGcm9tKHZhbHVlKTtcbiAgICAgIHJldHVybiB0aW1lc3RhbXAgPiBOdW1iZXIoRVBPQ0gpICYmIHRpbWVzdGFtcCA8IERhdGUubm93KCkgKyAxMDAwICogNjAgKiA2MCAqIDI0ICogMzY1OyAvLyBXaXRoaW4gcmVhc29uYWJsZSByYW5nZVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIERlY29uc3RydWN0ZWQgc25vd2ZsYWtlIGRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWNvbnN0cnVjdGVkU25vd2ZsYWtlIHtcbiAgLyoqIFRpbWVzdGFtcCB0aGUgc25vd2ZsYWtlIHdhcyBjcmVhdGVkICovXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICAvKiogRGF0ZSB0aGUgc25vd2ZsYWtlIHdhcyBjcmVhdGVkICovXG4gIGRhdGU6IERhdGU7XG4gIC8qKiBXb3JrZXIgSUQgaW4gdGhlIHNub3dmbGFrZSAqL1xuICB3b3JrZXJJZDogbnVtYmVyO1xuICAvKiogUHJvY2VzcyBJRCBpbiB0aGUgc25vd2ZsYWtlICovXG4gIHByb2Nlc3NJZDogbnVtYmVyO1xuICAvKiogSW5jcmVtZW50IGluIHRoZSBzbm93Zmxha2UgKi9cbiAgaW5jcmVtZW50OiBudW1iZXI7XG4gIC8qKiBCaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNub3dmbGFrZSAqL1xuICBiaW5hcnk6IHN0cmluZztcbn1cblxuLy8gRXhwb3J0IGFzIGRlZmF1bHQgdG9vIGZvciBjb252ZW5pZW5jZVxuZXhwb3J0IGRlZmF1bHQgU25vd2ZsYWtlVXRpbDtcbiJdfQ==
@@ -1,245 +0,0 @@
1
- /**
2
- * Sweepers - Automatic cache cleanup utilities
3
- */
4
- /**
5
- * Sweeper filters - predefined filter functions
6
- */
7
- export const Sweepers = {
8
- /**
9
- * Filter that sweeps items older than a certain lifetime
10
- */
11
- filterByLifetime(options = {}) {
12
- const lifetime = options.lifetime ?? 14400; // 4 hours default
13
- const getTimestamp = options.getComparisonTimestamp ??
14
- ((v) => v.createdTimestamp ?? v.createdAt?.getTime() ?? 0);
15
- const exclude = options.excludeFromSweep ?? (() => false);
16
- return () => {
17
- const now = Date.now();
18
- const cutoff = now - (lifetime * 1000);
19
- return (value) => {
20
- if (exclude(value))
21
- return false;
22
- const timestamp = getTimestamp(value);
23
- return timestamp < cutoff;
24
- };
25
- };
26
- },
27
- /**
28
- * Filter that sweeps expired invites
29
- */
30
- expiredInviteSweepFilter() {
31
- return () => {
32
- const now = Date.now();
33
- return (invite) => {
34
- if (!invite.expiresAt && !invite.expiresTimestamp)
35
- return false;
36
- const expiresAt = invite.expiresAt?.getTime() ?? invite.expiresTimestamp ?? Infinity;
37
- return expiresAt < now;
38
- };
39
- };
40
- },
41
- /**
42
- * Filter that sweeps outdated presences
43
- */
44
- outdatedPresenceSweepFilter(lifetime = 21600) {
45
- return () => {
46
- const now = Date.now();
47
- const cutoff = now - (lifetime * 1000);
48
- return (presence) => {
49
- const lastUpdate = presence.lastModified ?? presence.updatedAt?.getTime() ?? 0;
50
- return lastUpdate < cutoff;
51
- };
52
- };
53
- },
54
- /**
55
- * Filter that sweeps all items (use with caution)
56
- */
57
- sweepAll() {
58
- return () => () => true;
59
- },
60
- /**
61
- * Filter that sweeps nothing
62
- */
63
- sweepNone() {
64
- return () => () => false;
65
- },
66
- };
67
- /**
68
- * Sweeper manager class
69
- */
70
- export class SweeperManager {
71
- client;
72
- intervals = new Map();
73
- options;
74
- constructor(client, options = {}) {
75
- this.client = client;
76
- this.options = options;
77
- }
78
- /**
79
- * Start all configured sweepers
80
- */
81
- start() {
82
- for (const [key, config] of Object.entries(this.options)) {
83
- if (config && config.interval > 0) {
84
- this.startSweeper(key, config);
85
- }
86
- }
87
- }
88
- /**
89
- * Start a specific sweeper
90
- */
91
- startSweeper(name, config) {
92
- // Clear existing interval if any
93
- this.stopSweeper(name);
94
- const interval = setInterval(() => {
95
- this.sweep(name, config.filter);
96
- }, config.interval * 1000);
97
- this.intervals.set(name, interval);
98
- }
99
- /**
100
- * Stop a specific sweeper
101
- */
102
- stopSweeper(name) {
103
- const interval = this.intervals.get(name);
104
- if (interval) {
105
- clearInterval(interval);
106
- this.intervals.delete(name);
107
- }
108
- }
109
- /**
110
- * Stop all sweepers
111
- */
112
- stop() {
113
- for (const name of this.intervals.keys()) {
114
- this.stopSweeper(name);
115
- }
116
- }
117
- /**
118
- * Manually trigger a sweep
119
- */
120
- sweep(name, filter) {
121
- const cache = this.getCache(name);
122
- if (!cache)
123
- return 0;
124
- const filterFn = filter ?? this.options[name]?.filter;
125
- if (!filterFn)
126
- return 0;
127
- return cache.sweep(filterFn());
128
- }
129
- /**
130
- * Get the cache for a sweeper type
131
- */
132
- getCache(name) {
133
- switch (name) {
134
- case 'users':
135
- return this.client.users?.cache ?? null;
136
- case 'guildMembers':
137
- // Sweep across all guilds
138
- let memberCount = 0;
139
- this.client.guilds?.cache.forEach((guild) => {
140
- if (guild.members?.cache) {
141
- const filter = this.options.guildMembers?.filter;
142
- if (filter)
143
- memberCount += guild.members.cache.sweep(filter());
144
- }
145
- });
146
- return null; // Already handled
147
- case 'messages':
148
- // Sweep across all channels
149
- this.client.channels?.cache.forEach((channel) => {
150
- if (channel.messages?.cache) {
151
- const filter = this.options.messages?.filter;
152
- if (filter)
153
- channel.messages.cache.sweep(filter());
154
- }
155
- });
156
- return null;
157
- case 'presences':
158
- // Sweep across all guilds
159
- this.client.guilds?.cache.forEach((guild) => {
160
- if (guild.presences?.cache) {
161
- const filter = this.options.presences?.filter;
162
- if (filter)
163
- guild.presences.cache.sweep(filter());
164
- }
165
- });
166
- return null;
167
- case 'voiceStates':
168
- this.client.guilds?.cache.forEach((guild) => {
169
- if (guild.voiceStates?.cache) {
170
- const filter = this.options.voiceStates?.filter;
171
- if (filter)
172
- guild.voiceStates.cache.sweep(filter());
173
- }
174
- });
175
- return null;
176
- case 'reactions':
177
- // Sweep reactions from all messages
178
- this.client.channels?.cache.forEach((channel) => {
179
- channel.messages?.cache.forEach((message) => {
180
- if (message.reactions?.cache) {
181
- const filter = this.options.reactions?.filter;
182
- if (filter)
183
- message.reactions.cache.sweep(filter());
184
- }
185
- });
186
- });
187
- return null;
188
- case 'emojis':
189
- return this.client.emojis?.cache ?? null;
190
- case 'stickers':
191
- return this.client.stickers?.cache ?? null;
192
- case 'invites':
193
- // Sweep across all guilds
194
- this.client.guilds?.cache.forEach((guild) => {
195
- if (guild.invites?.cache) {
196
- const filter = this.options.invites?.filter;
197
- if (filter)
198
- guild.invites.cache.sweep(filter());
199
- }
200
- });
201
- return null;
202
- case 'bans':
203
- this.client.guilds?.cache.forEach((guild) => {
204
- if (guild.bans?.cache) {
205
- const filter = this.options.bans?.filter;
206
- if (filter)
207
- guild.bans.cache.sweep(filter());
208
- }
209
- });
210
- return null;
211
- default:
212
- return null;
213
- }
214
- }
215
- /**
216
- * Get sweeper statistics
217
- */
218
- getStats() {
219
- const stats = {};
220
- for (const [name, config] of Object.entries(this.options)) {
221
- if (config) {
222
- stats[name] = {
223
- interval: config.interval,
224
- running: this.intervals.has(name),
225
- };
226
- }
227
- }
228
- return stats;
229
- }
230
- }
231
- /**
232
- * Default sweeper options for common use cases
233
- */
234
- export const DefaultSweeperOptions = {
235
- messages: {
236
- interval: 3600, // 1 hour
237
- filter: Sweepers.filterByLifetime({ lifetime: 1800 }), // 30 minutes
238
- },
239
- invites: {
240
- interval: 3600,
241
- filter: Sweepers.expiredInviteSweepFilter(),
242
- },
243
- };
244
- export default SweeperManager;
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dlZXBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvU3dlZXBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUE0Q0g7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDdEI7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBNEQsVUFJeEUsRUFBRTtRQUNKLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLENBQUMsa0JBQWtCO1FBQzlELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxzQkFBc0I7WUFDakQsQ0FBQyxDQUFDLENBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUQsT0FBTyxHQUFHLEVBQUU7WUFDVixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRXZDLE9BQU8sQ0FBQyxLQUFRLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUFFLE9BQU8sS0FBSyxDQUFDO2dCQUNqQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RDLE9BQU8sU0FBUyxHQUFHLE1BQU0sQ0FBQztZQUM1QixDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCx3QkFBd0I7UUFDdEIsT0FBTyxHQUFHLEVBQUU7WUFDVixNQUFNLEdBQUcsR0FBRyxJQUFJLENB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Q1gsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHO29CQUNaLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtvQkFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztpQkFDbEMsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUF1QjtJQUN2RCxRQUFRLEVBQUU7UUFDUixRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVM7UUFDekIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLGFBQWE7S0FDckU7SUFDRCxPQUFPLEVBQUU7UUFDUCxRQUFRLEVBQUUsSUFBSTtRQUNkLE1BQU0sRUFBRSxRQUFRLENBQUMsd0JBQXdCLEVBQUU7S0FDNUM7Q0FDRixDQUFDO0FBRUYsZUFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN3ZWVwZXJzIC0gQXV0b21hdGljIGNhY2hlIGNsZWFudXAgdXRpbGl0aWVzXG4gKi9cblxuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vQ29sbGVjdGlvbic7XG5cbi8qKlxuICogU3dlZXBlciBvcHRpb25zIGZvciBhIHNwZWNpZmljIGNhY2hlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dlZXBlck9wdGlvbnMge1xuICAvKiogSW50ZXJ2YWwgaW4gc2Vjb25kcyBiZXR3ZWVuIHN3ZWVwcyAqL1xuICBpbnRlcnZhbDogbnVtYmVyO1xuICAvKiogRmlsdGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGF0IHRvIHN3ZWVwICovXG4gIGZpbHRlcjogKCkgPT4gKHZhbHVlOiBhbnksIGtleTogc3RyaW5nLCBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPHN0cmluZywgYW55PikgPT4gYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHbG9iYWwgc3dlZXBlciBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dlZXBlckRlZmluaXRpb25zIHtcbiAgLyoqIFN3ZWVwIGFwcGxpY2F0aW9uIGNvbW1hbmRzICovXG4gIGFwcGxpY2F0aW9uQ29tbWFuZHM/OiBTd2VlcGVyT3B0aW9ucztcbiAgLyoqIFN3ZWVwIGJhbnMgKi9cbiAgYmFucz86IFN3ZWVwZXJPcHRpb25zO1xuICAvKiogU3dlZXAgZW1vamlzICovXG4gIGVtb2ppcz86IFN3ZWVwZXJPcHRpb25zO1xuICAvKiogU3dlZXAgaW52aXRlcyAqL1xuICBpbnZpdGVzPzogU3dlZXBlck9wdGlvbnM7XG4gIC8qKiBTd2VlcCBndWlsZCBtZW1iZXJzICovXG4gIGd1aWxkTWVtYmVycz86IFN3ZWVwZXJPcHRpb25zO1xuICAvKiogU3dlZXAgbWVzc2FnZXMgKi9cbiAgbWVzc2FnZXM/OiBTd2VlcGVyT3B0aW9ucztcbiAgLyoqIFN3ZWVwIHByZXNlbmNlcyAqL1xuICBwcmVzZW5jZXM/OiBTd2VlcGVyT3B0aW9ucztcbiAgLyoqIFN3ZWVwIHJlYWN0aW9ucyAqL1xuICByZWFjdGlvbnM/OiBTd2VlcGVyT3B0aW9ucztcbiAgLyoqIFN3ZWVwIHN0YWdlIGluc3RhbmNlcyAqL1xuICBzdGFnZUluc3RhbmNlcz86IFN3ZWVwZXJPcHRpb25zO1xuICAvKiogU3dlZXAgc3RpY2tlcnMgKi9cbiAgc3RpY2tlcnM/OiBTd2VlcGVyT3B0aW9ucztcbiAgLyoqIFN3ZWVwIHVzZXJzICovXG4gIHVzZXJzPzogU3dlZXBlck9wdGlvbnM7XG4gIC8qKiBTd2VlcCB2b2ljZSBzdGF0ZXMgKi9cbiAgdm9pY2VTdGF0ZXM/OiBTd2VlcGVyT3B0aW9ucztcbn1cblxuLyoqXG4gKiBTd2VlcGVyIGZpbHRlcnMgLSBwcmVkZWZpbmVkIGZpbHRlciBmdW5jdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IFN3ZWVwZXJzID0ge1xuICAvKipcbiAgICogRmlsdGVyIHRoYXQgc3dlZXBzIGl0ZW1zIG9sZGVyIHRoYW4gYSBjZXJ0YWluIGxpZmV0aW1lXG4gICAqL1xuICBmaWx0ZXJCeUxpZmV0aW1lPFQgZXh0ZW5kcyB7IGNyZWF0ZWRUaW1lc3RhbXA/OiBudW1iZXI7IGNyZWF0ZWRBdD86IERhdGUgfT4ob3B0aW9uczoge1xuICAgIGxpZmV0aW1lPzogbnVtYmVyO1xuICAgIGdldENvbXBhcmlzb25UaW1lc3RhbXA/OiAodmFsdWU6IFQpID0+IG51bWJlcjtcbiAgICBleGNsdWRlRnJvbVN3ZWVwPzogKHZhbHVlOiBUKSA9PiBib29sZWFuO1xuICB9ID0ge30pIHtcbiAgICBjb25zdCBsaWZldGltZSA9IG9wdGlvbnMubGlmZXRpbWUgPz8gMTQ0MDA7IC8vIDQgaG91cnMgZGVmYXVsdFxuICAgIGNvbnN0IGdldFRpbWVzdGFtcCA9IG9wdGlvbnMuZ2V0Q29tcGFyaXNvblRpbWVzdGFtcCA/PyBcbiAgICAgICgodjogVCkgPT4gdi5jcmVhdGVkVGltZXN0YW1wID8/IHYuY3JlYXRlZEF0Py5nZXRUaW1lKCkgPz8gMCk7XG4gICAgY29uc3QgZXhjbHVkZSA9IG9wdGlvbnMuZXhjbHVkZUZyb21Td2VlcCA/PyAoKCkgPT4gZmFsc2UpO1xuICAgIFxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgY3V0b2ZmID0gbm93IC0gKGxpZmV0aW1lICogMTAwMCk7XG4gICAgICBcbiAgICAgIHJldHVybiAodmFsdWU6IFQpID0+IHtcbiAgICAgICAgaWYgKGV4Y2x1ZGUodmFsdWUpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IGdldFRpbWVzdGFtcCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aW1lc3RhbXAgPCBjdXRvZmY7XG4gICAgICB9O1xuICAgIH07XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbHRlciB0aGF0IHN3ZWVwcyBleHBpcmVkIGludml0ZXNcbiAgICovXG4gIGV4cGlyZWRJbnZpdGVTd2VlcEZpbHRlcigpIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgIHJldHVybiAoaW52aXRlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFpbnZpdGUuZXhwaXJlc0F0ICYmICFpbnZpdGUuZXhwaXJlc1RpbWVzdGFtcCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBleHBpcmVzQXQgPSBpbnZpdGUuZXhwaXJlc0F0Py5nZXRUaW1lKCkgPz8gaW52aXRlLmV4cGlyZXNUaW1lc3RhbXAgPz8gSW5maW5pdHk7XG4gICAgICAgIHJldHVybiBleHBpcmVzQXQgPCBub3c7XG4gICAgICB9O1xuICAgIH07XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbHRlciB0aGF0IHN3ZWVwcyBvdXRkYXRlZCBwcmVzZW5jZXNcbiAgICovXG4gIG91dGRhdGVkUHJlc2VuY2VTd2VlcEZpbHRlcihsaWZldGltZSA9IDIxNjAwKSB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCBjdXRvZmYgPSBub3cgLSAobGlmZXRpbWUgKiAxMDAwKTtcbiAgICAgIFxuICAgICAgcmV0dXJuIChwcmVzZW5jZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3RVcGRhdGUgPSBwcmVzZW5jZS5sYXN0TW9kaWZpZWQgPz8gcHJlc2VuY2UudXBkYXRlZEF0Py5nZXRUaW1lKCkgPz8gMDtcbiAgICAgICAgcmV0dXJuIGxhc3RVcGRhdGUgPCBjdXRvZmY7XG4gICAgICB9O1xuICAgIH07XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbHRlciB0aGF0IHN3ZWVwcyBhbGwgaXRlbXMgKHVzZSB3aXRoIGNhdXRpb24pXG4gICAqL1xuICBzd2VlcEFsbCgpIHtcbiAgICByZXR1cm4gKCkgPT4gKCkgPT4gdHJ1ZTtcbiAgfSxcblxuICAvKipcbiAgICogRmlsdGVyIHRoYXQgc3dlZXBzIG5vdGhpbmdcbiAgICovXG4gIHN3ZWVwTm9uZSgpIHtcbiAgICByZXR1cm4gKCkgPT4gKCkgPT4gZmFsc2U7XG4gIH0sXG59O1xuXG4vKipcbiAqIFN3ZWVwZXIgbWFuYWdlciBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgU3dlZXBlck1hbmFnZXIge1xuICBwcml2YXRlIGNsaWVudDogYW55O1xuICBwcml2YXRlIGludGVydmFsczogTWFwPHN0cmluZywgTm9kZUpTLlRpbWVvdXQ+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIG9wdGlvbnM6IFN3ZWVwZXJEZWZpbml0aW9ucztcblxuICBjb25zdHJ1Y3RvcihjbGllbnQ6IGFueSwgb3B0aW9uczogU3dlZXBlckRlZmluaXRpb25zID0ge30pIHtcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGFsbCBjb25maWd1cmVkIHN3ZWVwZXJzXG4gICAqL1xuICBzdGFydCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIGNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5vcHRpb25zKSkge1xuICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcuaW50ZXJ2YWwgPiAwKSB7XG4gICAgICAgIHRoaXMuc3RhcnRTd2VlcGVyKGtleSBhcyBrZXlvZiBTd2VlcGVyRGVmaW5pdGlvbnMsIGNvbmZpZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGEgc3BlY2lmaWMgc3dlZXBlclxuICAgKi9cbiAgcHJpdmF0ZSBzdGFydFN3ZWVwZXIobmFtZToga2V5b2YgU3dlZXBlckRlZmluaXRpb25zLCBjb25maWc6IFN3ZWVwZXJPcHRpb25zKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgZXhpc3RpbmcgaW50ZXJ2YWwgaWYgYW55XG4gICAgdGhpcy5zdG9wU3dlZXBlcihuYW1lKTtcbiAgICBcbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuc3dlZXAobmFtZSwgY29uZmlnLmZpbHRlcik7XG4gICAgfSwgY29uZmlnLmludGVydmFsICogMTAwMCk7XG4gICAgXG4gICAgdGhpcy5pbnRlcnZhbHMuc2V0KG5hbWUsIGludGVydmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGEgc3BlY2lmaWMgc3dlZXBlclxuICAgKi9cbiAgc3RvcFN3ZWVwZXIobmFtZToga2V5b2YgU3dlZXBlckRlZmluaXRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSB0aGlzLmludGVydmFscy5nZXQobmFtZSk7XG4gICAgaWYgKGludGVydmFsKSB7XG4gICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgIHRoaXMuaW50ZXJ2YWxzLmRlbGV0ZShuYW1lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBhbGwgc3dlZXBlcnNcbiAgICovXG4gIHN0b3AoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHRoaXMuaW50ZXJ2YWxzLmtleXMoKSkge1xuICAgICAgdGhpcy5zdG9wU3dlZXBlcihuYW1lIGFzIGtleW9mIFN3ZWVwZXJEZWZpbml0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IHRyaWdnZXIgYSBzd2VlcFxuICAgKi9cbiAgc3dlZXAobmFtZToga2V5b2YgU3dlZXBlckRlZmluaXRpb25zLCBmaWx0ZXI/OiAoKSA9PiAodmFsdWU6IGFueSwga2V5OiBzdHJpbmcsIGNvbGxlY3Rpb246IENvbGxlY3Rpb248c3RyaW5nLCBhbnk+KSA9PiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBjb25zdCBjYWNoZSA9IHRoaXMuZ2V0Q2FjaGUobmFtZSk7XG4gICAgaWYgKCFjYWNoZSkgcmV0dXJuIDA7XG4gICAgXG4gICAgY29uc3QgZmlsdGVyRm4gPSBmaWx0ZXIgPz8gdGhpcy5vcHRpb25zW25hbWVdPy5maWx0ZXI7XG4gICAgaWYgKCFmaWx0ZXJGbikgcmV0dXJuIDA7XG4gICAgXG4gICAgcmV0dXJuIGNhY2hlLnN3ZWVwKGZpbHRlckZuKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY2FjaGUgZm9yIGEgc3dlZXBlciB0eXBlXG4gICAqL1xuICBwcml2YXRlIGdldENhY2hlKG5hbWU6IGtleW9mIFN3ZWVwZXJEZWZpbml0aW9ucyk6IENvbGxlY3Rpb248c3RyaW5nLCBhbnk+IHwgbnVsbCB7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlICd1c2Vycyc6XG4gICAgICAgIHJldHVybiB0aGlzLmNsaWVudC51c2Vycz8uY2FjaGUgPz8gbnVsbDtcbiAgICAgIGNhc2UgJ2d1aWxkTWVtYmVycyc6XG4gICAgICAgIC8vIFN3ZWVwIGFjcm9zcyBhbGwgZ3VpbGRzXG4gICAgICAgIGxldCBtZW1iZXJDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuY2xpZW50Lmd1aWxkcz8uY2FjaGUuZm9yRWFjaCgoZ3VpbGQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChndWlsZC5tZW1iZXJzPy5jYWNoZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5vcHRpb25zLmd1aWxkTWVtYmVycz8uZmlsdGVyO1xuICAgICAgICAgICAgaWYgKGZpbHRlcikgbWVtYmVyQ291bnQgKz0gZ3VpbGQubWVtYmVycy5jYWNoZS5zd2VlcChmaWx0ZXIoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG51bGw7IC8vIEFscmVhZHkgaGFuZGxlZFxuICAgICAgY2FzZSAnbWVzc2FnZXMnOlxuICAgICAgICAvLyBTd2VlcCBhY3Jvc3MgYWxsIGNoYW5uZWxzXG4gICAgICAgIHRoaXMuY2xpZW50LmNoYW5uZWxzPy5jYWNoZS5mb3JFYWNoKChjaGFubmVsOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoY2hhbm5lbC5tZXNzYWdlcz8uY2FjaGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMub3B0aW9ucy5tZXNzYWdlcz8uZmlsdGVyO1xuICAgICAgICAgICAgaWYgKGZpbHRlcikgY2hhbm5lbC5tZXNzYWdlcy5jYWNoZS5zd2VlcChmaWx0ZXIoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjYXNlICdwcmVzZW5jZXMnOlxuICAgICAgICAvLyBTd2VlcCBhY3Jvc3MgYWxsIGd1aWxkc1xuICAgICAgICB0aGlzLmNsaWVudC5ndWlsZHM/LmNhY2hlLmZvckVhY2goKGd1aWxkOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZ3VpbGQucHJlc2VuY2VzPy5jYWNoZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5vcHRpb25zLnByZXNlbmNlcz8uZmlsdGVyO1xuICAgICAgICAgICAgaWYgKGZpbHRlcikgZ3VpbGQucHJlc2VuY2VzLmNhY2hlLnN3ZWVwKGZpbHRlcigpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNhc2UgJ3ZvaWNlU3RhdGVzJzpcbiAgICAgICAgdGhpcy5jbGllbnQuZ3VpbGRzPy5jYWNoZS5mb3JFYWNoKChndWlsZDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGd1aWxkLnZvaWNlU3RhdGVzPy5jYWNoZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5vcHRpb25zLnZvaWNlU3RhdGVzPy5maWx0ZXI7XG4gICAgICAgICAgICBpZiAoZmlsdGVyKSBndWlsZC52b2ljZVN0YXRlcy5jYWNoZS5zd2VlcChmaWx0ZXIoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjYXNlICdyZWFjdGlvbnMnOlxuICAgICAgICAvLyBTd2VlcCByZWFjdGlvbnMgZnJvbSBhbGwgbWVzc2FnZXNcbiAgICAgICAgdGhpcy5jbGllbnQuY2hhbm5lbHM/LmNhY2hlLmZvckVhY2goKGNoYW5uZWw6IGFueSkgPT4ge1xuICAgICAgICAgIGNoYW5uZWwubWVzc2FnZXM/LmNhY2hlLmZvckVhY2goKG1lc3NhZ2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKG1lc3NhZ2UucmVhY3Rpb25zPy5jYWNoZSkge1xuICAgICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLm9wdGlvbnMucmVhY3Rpb25zPy5maWx0ZXI7XG4gICAgICAgICAgICAgIGlmIChmaWx0ZXIpIG1lc3NhZ2UucmVhY3Rpb25zLmNhY2hlLnN3ZWVwKGZpbHRlcigpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgY2FzZSAnZW1vamlzJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50LmVtb2ppcz8uY2FjaGUgPz8gbnVsbDtcbiAgICAgIGNhc2UgJ3N0aWNrZXJzJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50LnN0aWNrZXJzPy5jYWNoZSA/PyBudWxsO1xuICAgICAgY2FzZSAnaW52aXRlcyc6XG4gICAgICAgIC8vIFN3ZWVwIGFjcm9zcyBhbGwgZ3VpbGRzXG4gICAgICAgIHRoaXMuY2xpZW50Lmd1aWxkcz8uY2FjaGUuZm9yRWFjaCgoZ3VpbGQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChndWlsZC5pbnZpdGVzPy5jYWNoZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5vcHRpb25zLmludml0ZXM/LmZpbHRlcjtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIpIGd1aWxkLmludml0ZXMuY2FjaGUuc3dlZXAoZmlsdGVyKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgY2FzZSAnYmFucyc6XG4gICAgICAgIHRoaXMuY2xpZW50Lmd1aWxkcz8uY2FjaGUuZm9yRWFjaCgoZ3VpbGQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChndWlsZC5iYW5zPy5jYWNoZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5vcHRpb25zLmJhbnM/LmZpbHRlcjtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIpIGd1aWxkLmJhbnMuY2FjaGUuc3dlZXAoZmlsdGVyKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzd2VlcGVyIHN0YXRpc3RpY3NcbiAgICovXG4gIGdldFN0YXRzKCk6IFJlY29yZDxzdHJpbmcsIHsgaW50ZXJ2YWw6IG51bWJlcjsgcnVubmluZzogYm9vbGVhbiB9PiB7XG4gICAgY29uc3Qgc3RhdHM6IFJlY29yZDxzdHJpbmcsIHsgaW50ZXJ2YWw6IG51bWJlcjsgcnVubmluZzogYm9vbGVhbiB9PiA9IHt9O1xuICAgIFxuICAgIGZvciAoY29uc3QgW25hbWUsIGNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5vcHRpb25zKSkge1xuICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICBzdGF0c1tuYW1lXSA9IHtcbiAgICAgICAgICBpbnRlcnZhbDogY29uZmlnLmludGVydmFsLFxuICAgICAgICAgIHJ1bm5pbmc6IHRoaXMuaW50ZXJ2YWxzLmhhcyhuYW1lKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHN0YXRzO1xuICB9XG59XG5cbi8qKlxuICogRGVmYXVsdCBzd2VlcGVyIG9wdGlvbnMgZm9yIGNvbW1vbiB1c2UgY2FzZXNcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRTd2VlcGVyT3B0aW9uczogU3dlZXBlckRlZmluaXRpb25zID0ge1xuICBtZXNzYWdlczoge1xuICAgIGludGVydmFsOiAzNjAwLCAvLyAxIGhvdXJcbiAgICBmaWx0ZXI6IFN3ZWVwZXJzLmZpbHRlckJ5TGlmZXRpbWUoeyBsaWZldGltZTogMTgwMCB9KSwgLy8gMzAgbWludXRlc1xuICB9LFxuICBpbnZpdGVzOiB7XG4gICAgaW50ZXJ2YWw6IDM2MDAsXG4gICAgZmlsdGVyOiBTd2VlcGVycy5leHBpcmVkSW52aXRlU3dlZXBGaWx0ZXIoKSxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN3ZWVwZXJNYW5hZ2VyO1xuIl19
@@ -1,14 +0,0 @@
1
- /**
2
- * Utility exports
3
- */
4
- export * from './Collection';
5
- export * from './Formatters';
6
- export * from './SnowflakeUtil';
7
- export * from './BitField';
8
- export * from './PermissionsBitField';
9
- export * from './IntentsBitField';
10
- export * from './DataResolver';
11
- export * from './Collector';
12
- export * from './Partials';
13
- export * from './Sweepers';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXR5IGV4cG9ydHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL0NvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9Gb3JtYXR0ZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vU25vd2ZsYWtlVXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL0JpdEZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vUGVybWlzc2lvbnNCaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL0ludGVudHNCaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL0RhdGFSZXNvbHZlcic7XG5leHBvcnQgKiBmcm9tICcuL0NvbGxlY3Rvcic7XG5leHBvcnQgKiBmcm9tICcuL1BhcnRpYWxzJztcbmV4cG9ydCAqIGZyb20gJy4vU3dlZXBlcnMnO1xuIl19