@jubbio/core 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/cjs/Client.d.ts +157 -0
  2. package/dist/cjs/Client.js +640 -0
  3. package/dist/cjs/builders/ActionRowBuilder.d.ts +53 -0
  4. package/dist/cjs/builders/ActionRowBuilder.js +68 -0
  5. package/dist/cjs/builders/ButtonBuilder.d.ts +77 -0
  6. package/dist/cjs/builders/ButtonBuilder.js +96 -0
  7. package/dist/cjs/builders/EmbedBuilder.d.ts +157 -0
  8. package/dist/cjs/builders/EmbedBuilder.js +208 -0
  9. package/dist/cjs/builders/ModalBuilder.d.ts +122 -0
  10. package/dist/cjs/builders/ModalBuilder.js +162 -0
  11. package/dist/cjs/builders/SelectMenuBuilder.d.ts +123 -0
  12. package/dist/cjs/builders/SelectMenuBuilder.js +165 -0
  13. package/dist/cjs/builders/SlashCommandBuilder.d.ts +197 -0
  14. package/dist/cjs/builders/SlashCommandBuilder.js +324 -0
  15. package/dist/cjs/builders/index.d.ts +9 -0
  16. package/dist/cjs/builders/index.js +26 -0
  17. package/dist/cjs/enums.d.ts +191 -0
  18. package/dist/cjs/enums.js +211 -0
  19. package/dist/cjs/index.d.ts +25 -0
  20. package/dist/cjs/index.js +130 -0
  21. package/dist/cjs/managers/BaseManager.d.ts +69 -0
  22. package/dist/cjs/managers/BaseManager.js +106 -0
  23. package/dist/cjs/managers/ChannelManager.d.ts +95 -0
  24. package/dist/cjs/managers/ChannelManager.js +205 -0
  25. package/dist/cjs/managers/GuildMemberManager.d.ts +74 -0
  26. package/dist/cjs/managers/GuildMemberManager.js +157 -0
  27. package/dist/cjs/managers/RoleManager.d.ts +84 -0
  28. package/dist/cjs/managers/RoleManager.js +207 -0
  29. package/dist/cjs/managers/index.d.ts +7 -0
  30. package/dist/cjs/managers/index.js +24 -0
  31. package/dist/cjs/rest/REST.d.ts +527 -0
  32. package/dist/cjs/rest/REST.js +904 -0
  33. package/dist/cjs/rest/index.d.ts +1 -0
  34. package/dist/cjs/rest/index.js +18 -0
  35. package/dist/cjs/sharding/ShardingManager.d.ts +179 -0
  36. package/dist/cjs/sharding/ShardingManager.js +375 -0
  37. package/dist/cjs/sharding/index.d.ts +4 -0
  38. package/dist/cjs/sharding/index.js +21 -0
  39. package/dist/cjs/structures/Channel.d.ts +122 -0
  40. package/dist/cjs/structures/Channel.js +240 -0
  41. package/dist/cjs/structures/Collection.d.ts +53 -0
  42. package/dist/cjs/structures/Collection.js +115 -0
  43. package/dist/cjs/structures/Guild.d.ts +59 -0
  44. package/dist/cjs/structures/Guild.js +94 -0
  45. package/dist/cjs/structures/GuildMember.d.ts +174 -0
  46. package/dist/cjs/structures/GuildMember.js +311 -0
  47. package/dist/cjs/structures/Interaction.d.ts +245 -0
  48. package/dist/cjs/structures/Interaction.js +450 -0
  49. package/dist/cjs/structures/Message.d.ts +98 -0
  50. package/dist/cjs/structures/Message.js +195 -0
  51. package/dist/cjs/structures/User.d.ts +37 -0
  52. package/dist/cjs/structures/User.js +65 -0
  53. package/dist/cjs/structures/index.d.ts +7 -0
  54. package/dist/cjs/structures/index.js +25 -0
  55. package/dist/cjs/structures.d.ts +1 -0
  56. package/dist/cjs/structures.js +19 -0
  57. package/dist/cjs/types.d.ts +255 -0
  58. package/dist/cjs/types.js +3 -0
  59. package/dist/cjs/utils/BitField.d.ts +66 -0
  60. package/dist/cjs/utils/BitField.js +138 -0
  61. package/dist/cjs/utils/Collection.d.ts +116 -0
  62. package/dist/cjs/utils/Collection.js +265 -0
  63. package/dist/cjs/utils/Collector.d.ts +152 -0
  64. package/dist/cjs/utils/Collector.js +314 -0
  65. package/dist/cjs/utils/DataResolver.d.ts +61 -0
  66. package/dist/cjs/utils/DataResolver.js +146 -0
  67. package/dist/cjs/utils/Formatters.d.ts +145 -0
  68. package/dist/cjs/utils/Formatters.js +213 -0
  69. package/dist/cjs/utils/IntentsBitField.d.ts +85 -0
  70. package/dist/cjs/utils/IntentsBitField.js +99 -0
  71. package/dist/cjs/utils/Partials.d.ts +104 -0
  72. package/dist/cjs/utils/Partials.js +148 -0
  73. package/dist/cjs/utils/PermissionsBitField.d.ts +118 -0
  74. package/dist/cjs/utils/PermissionsBitField.js +145 -0
  75. package/dist/cjs/utils/SnowflakeUtil.d.ts +63 -0
  76. package/dist/cjs/utils/SnowflakeUtil.js +93 -0
  77. package/dist/cjs/utils/Sweepers.d.ts +119 -0
  78. package/dist/cjs/utils/Sweepers.js +249 -0
  79. package/dist/cjs/utils/index.d.ts +13 -0
  80. package/dist/cjs/utils/index.js +30 -0
  81. package/dist/esm/Client.js +634 -0
  82. package/dist/esm/builders/ActionRowBuilder.js +64 -0
  83. package/dist/esm/builders/ButtonBuilder.js +92 -0
  84. package/dist/esm/builders/EmbedBuilder.js +204 -0
  85. package/dist/esm/builders/ModalBuilder.js +157 -0
  86. package/dist/esm/builders/SelectMenuBuilder.js +161 -0
  87. package/dist/esm/builders/SlashCommandBuilder.js +311 -0
  88. package/dist/esm/builders/index.js +10 -0
  89. package/dist/esm/enums.js +208 -0
  90. package/dist/esm/index.js +34 -0
  91. package/dist/esm/managers/BaseManager.js +100 -0
  92. package/dist/esm/managers/ChannelManager.js +200 -0
  93. package/dist/esm/managers/GuildMemberManager.js +153 -0
  94. package/dist/esm/managers/RoleManager.js +203 -0
  95. package/dist/esm/managers/index.js +8 -0
  96. package/dist/esm/rest/REST.js +900 -0
  97. package/dist/esm/rest/index.js +2 -0
  98. package/dist/esm/sharding/ShardingManager.js +366 -0
  99. package/dist/esm/sharding/index.js +5 -0
  100. package/dist/esm/structures/Channel.js +232 -0
  101. package/dist/esm/structures/Collection.js +111 -0
  102. package/dist/esm/structures/Guild.js +90 -0
  103. package/dist/esm/structures/GuildMember.js +306 -0
  104. package/dist/esm/structures/Interaction.js +438 -0
  105. package/dist/esm/structures/Message.js +191 -0
  106. package/dist/esm/structures/User.js +61 -0
  107. package/dist/esm/structures/index.js +9 -0
  108. package/dist/esm/structures.js +3 -0
  109. package/dist/esm/types.js +2 -0
  110. package/dist/esm/utils/BitField.js +134 -0
  111. package/dist/esm/utils/Collection.js +261 -0
  112. package/dist/esm/utils/Collector.js +305 -0
  113. package/dist/esm/utils/DataResolver.js +142 -0
  114. package/dist/esm/utils/Formatters.js +191 -0
  115. package/dist/esm/utils/IntentsBitField.js +93 -0
  116. package/dist/esm/utils/Partials.js +137 -0
  117. package/dist/esm/utils/PermissionsBitField.js +141 -0
  118. package/dist/esm/utils/SnowflakeUtil.js +89 -0
  119. package/dist/esm/utils/Sweepers.js +245 -0
  120. package/dist/esm/utils/index.js +14 -0
  121. package/package.json +14 -4
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Snowflake utilities
3
+ * API compatible with Discord.js SnowflakeUtil
4
+ */
5
+ /**
6
+ * A container for useful snowflake-related methods
7
+ */
8
+ export declare class SnowflakeUtil {
9
+ /**
10
+ * Jubbio's epoch value
11
+ */
12
+ static readonly EPOCH = 1420070400000n;
13
+ /**
14
+ * Generates a snowflake ID
15
+ * @param timestamp Timestamp or date to generate from
16
+ */
17
+ static generate(timestamp?: number | Date): string;
18
+ /**
19
+ * Deconstructs a snowflake ID
20
+ * @param snowflake Snowflake to deconstruct
21
+ */
22
+ static deconstruct(snowflake: string): DeconstructedSnowflake;
23
+ /**
24
+ * Retrieves the timestamp from a snowflake
25
+ * @param snowflake Snowflake to get the timestamp from
26
+ */
27
+ static timestampFrom(snowflake: string): number;
28
+ /**
29
+ * Retrieves the date from a snowflake
30
+ * @param snowflake Snowflake to get the date from
31
+ */
32
+ static dateFrom(snowflake: string): Date;
33
+ /**
34
+ * Compares two snowflakes
35
+ * @param a First snowflake
36
+ * @param b Second snowflake
37
+ * @returns -1 if a < b, 0 if a === b, 1 if a > b
38
+ */
39
+ static compare(a: string, b: string): -1 | 0 | 1;
40
+ /**
41
+ * Checks if a value is a valid snowflake
42
+ * @param value Value to check
43
+ */
44
+ static isValid(value: unknown): value is string;
45
+ }
46
+ /**
47
+ * Deconstructed snowflake data
48
+ */
49
+ export interface DeconstructedSnowflake {
50
+ /** Timestamp the snowflake was created */
51
+ timestamp: number;
52
+ /** Date the snowflake was created */
53
+ date: Date;
54
+ /** Worker ID in the snowflake */
55
+ workerId: number;
56
+ /** Process ID in the snowflake */
57
+ processId: number;
58
+ /** Increment in the snowflake */
59
+ increment: number;
60
+ /** Binary representation of the snowflake */
61
+ binary: string;
62
+ }
63
+ export default SnowflakeUtil;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * Snowflake utilities
4
+ * API compatible with Discord.js SnowflakeUtil
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SnowflakeUtil = void 0;
8
+ // Jubbio epoch (same as Discord: 2015-01-01T00:00:00.000Z)
9
+ const EPOCH = 1420070400000n;
10
+ /**
11
+ * A container for useful snowflake-related methods
12
+ */
13
+ class SnowflakeUtil {
14
+ /**
15
+ * Jubbio's epoch value
16
+ */
17
+ static EPOCH = EPOCH;
18
+ /**
19
+ * Generates a snowflake ID
20
+ * @param timestamp Timestamp or date to generate from
21
+ */
22
+ static generate(timestamp = Date.now()) {
23
+ const time = timestamp instanceof Date ? timestamp.getTime() : timestamp;
24
+ return ((BigInt(time) - EPOCH) << 22n).toString();
25
+ }
26
+ /**
27
+ * Deconstructs a snowflake ID
28
+ * @param snowflake Snowflake to deconstruct
29
+ */
30
+ static deconstruct(snowflake) {
31
+ const bigIntSnowflake = BigInt(snowflake);
32
+ return {
33
+ timestamp: Number((bigIntSnowflake >> 22n) + EPOCH),
34
+ get date() {
35
+ return new Date(this.timestamp);
36
+ },
37
+ workerId: Number((bigIntSnowflake & 0x3e0000n) >> 17n),
38
+ processId: Number((bigIntSnowflake & 0x1f000n) >> 12n),
39
+ increment: Number(bigIntSnowflake & 0xfffn),
40
+ binary: bigIntSnowflake.toString(2).padStart(64, '0'),
41
+ };
42
+ }
43
+ /**
44
+ * Retrieves the timestamp from a snowflake
45
+ * @param snowflake Snowflake to get the timestamp from
46
+ */
47
+ static timestampFrom(snowflake) {
48
+ return Number((BigInt(snowflake) >> 22n) + EPOCH);
49
+ }
50
+ /**
51
+ * Retrieves the date from a snowflake
52
+ * @param snowflake Snowflake to get the date from
53
+ */
54
+ static dateFrom(snowflake) {
55
+ return new Date(SnowflakeUtil.timestampFrom(snowflake));
56
+ }
57
+ /**
58
+ * Compares two snowflakes
59
+ * @param a First snowflake
60
+ * @param b Second snowflake
61
+ * @returns -1 if a < b, 0 if a === b, 1 if a > b
62
+ */
63
+ static compare(a, b) {
64
+ const bigA = BigInt(a);
65
+ const bigB = BigInt(b);
66
+ if (bigA < bigB)
67
+ return -1;
68
+ if (bigA > bigB)
69
+ return 1;
70
+ return 0;
71
+ }
72
+ /**
73
+ * Checks if a value is a valid snowflake
74
+ * @param value Value to check
75
+ */
76
+ static isValid(value) {
77
+ if (typeof value !== 'string')
78
+ return false;
79
+ if (!/^\d{17,20}$/.test(value))
80
+ return false;
81
+ try {
82
+ const timestamp = SnowflakeUtil.timestampFrom(value);
83
+ return timestamp > Number(EPOCH) && timestamp < Date.now() + 1000 * 60 * 60 * 24 * 365; // Within reasonable range
84
+ }
85
+ catch {
86
+ return false;
87
+ }
88
+ }
89
+ }
90
+ exports.SnowflakeUtil = SnowflakeUtil;
91
+ // Export as default too for convenience
92
+ exports.default = SnowflakeUtil;
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU25vd2ZsYWtlVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9Tbm93Zmxha2VVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVILDJEQUEyRDtBQUMzRCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUM7QUFFN0I7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFDeEI7O09BRUc7SUFDSCxNQUFNLENBQVUsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUU5Qjs7O09BR0c7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQTJCLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDbkQsTUFBTSxJQUFJLEdBQUcsU0FBUyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDekUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQWlCO1FBQ2xDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxPQUFPO1lBQ0wsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLGVBQWUsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDbkQsSUFBSSxJQUFJO2dCQUNOLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUN0RCxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUN0RCxTQUFTLEVBQUUsTUFBTSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7WUFDM0MsTUFBTSxFQUFFLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7U0FDdEQsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQWlCO1FBQ3BDLE9BQU8sTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQWlCO1FBQy9CLE9BQU8sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDakMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixJQUFJLElBQUksR0FBRyxJQUFJO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMzQixJQUFJLElBQUksR0FBRyxJQUFJO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFjO1FBQzNCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzdDLElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsT0FBTyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLDBCQUEwQjtRQUNwSCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQzs7QUE1RUgsc0NBNkVDO0FBb0JELHdDQUF3QztBQUN4QyxrQkFBZSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNub3dmbGFrZSB1dGlsaXRpZXNcbiAqIEFQSSBjb21wYXRpYmxlIHdpdGggRGlzY29yZC5qcyBTbm93Zmxha2VVdGlsXG4gKi9cblxuLy8gSnViYmlvIGVwb2NoIChzYW1lIGFzIERpc2NvcmQ6IDIwMTUtMDEtMDFUMDA6MDA6MDAuMDAwWilcbmNvbnN0IEVQT0NIID0gMTQyMDA3MDQwMDAwMG47XG5cbi8qKlxuICogQSBjb250YWluZXIgZm9yIHVzZWZ1bCBzbm93Zmxha2UtcmVsYXRlZCBtZXRob2RzXG4gKi9cbmV4cG9ydCBjbGFzcyBTbm93Zmxha2VVdGlsIHtcbiAgLyoqXG4gICAqIEp1YmJpbydzIGVwb2NoIHZhbHVlXG4gICAqL1xuICBzdGF0aWMgcmVhZG9ubHkgRVBPQ0ggPSBFUE9DSDtcblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgc25vd2ZsYWtlIElEXG4gICAqIEBwYXJhbSB0aW1lc3RhbXAgVGltZXN0YW1wIG9yIGRhdGUgdG8gZ2VuZXJhdGUgZnJvbVxuICAgKi9cbiAgc3RhdGljIGdlbmVyYXRlKHRpbWVzdGFtcDogbnVtYmVyIHwgRGF0ZSA9IERhdGUubm93KCkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRpbWUgPSB0aW1lc3RhbXAgaW5zdGFuY2VvZiBEYXRlID8gdGltZXN0YW1wLmdldFRpbWUoKSA6IHRpbWVzdGFtcDtcbiAgICByZXR1cm4gKChCaWdJbnQodGltZSkgLSBFUE9DSCkgPDwgMjJuKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29uc3RydWN0cyBhIHNub3dmbGFrZSBJRFxuICAgKiBAcGFyYW0gc25vd2ZsYWtlIFNub3dmbGFrZSB0byBkZWNvbnN0cnVjdFxuICAgKi9cbiAgc3RhdGljIGRlY29uc3RydWN0KHNub3dmbGFrZTogc3RyaW5nKTogRGVjb25zdHJ1Y3RlZFNub3dmbGFrZSB7XG4gICAgY29uc3QgYmlnSW50U25vd2ZsYWtlID0gQmlnSW50KHNub3dmbGFrZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpbWVzdGFtcDogTnVtYmVyKChiaWdJbnRTbm93Zmxha2UgPj4gMjJuKSArIEVQT0NIKSxcbiAgICAgIGdldCBkYXRlKCkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy50aW1lc3RhbXApO1xuICAgICAgfSxcbiAgICAgIHdvcmtlcklkOiBOdW1iZXIoKGJpZ0ludFNub3dmbGFrZSAmIDB4M0UwMDAwbikgPj4gMTduKSxcbiAgICAgIHByb2Nlc3NJZDogTnVtYmVyKChiaWdJbnRTbm93Zmxha2UgJiAweDFGMDAwbikgPj4gMTJuKSxcbiAgICAgIGluY3JlbWVudDogTnVtYmVyKGJpZ0ludFNub3dmbGFrZSAmIDB4RkZGbiksXG4gICAgICBiaW5hcnk6IGJpZ0ludFNub3dmbGFrZS50b1N0cmluZygyKS5wYWRTdGFydCg2NCwgJzAnKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgdGltZXN0YW1wIGZyb20gYSBzbm93Zmxha2VcbiAgICogQHBhcmFtIHNub3dmbGFrZSBTbm93Zmxha2UgdG8gZ2V0IHRoZSB0aW1lc3RhbXAgZnJvbVxuICAgKi9cbiAgc3RhdGljIHRpbWVzdGFtcEZyb20oc25vd2ZsYWtlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiBOdW1iZXIoKEJpZ0ludChzbm93Zmxha2UpID4+IDIybikgKyBFUE9DSCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBkYXRlIGZyb20gYSBzbm93Zmxha2VcbiAgICogQHBhcmFtIHNub3dmbGFrZSBTbm93Zmxha2UgdG8gZ2V0IHRoZSBkYXRlIGZyb21cbiAgICovXG4gIHN0YXRpYyBkYXRlRnJvbShzbm93Zmxha2U6IHN0cmluZyk6IERhdGUge1xuICAgIHJldHVybiBuZXcgRGF0ZShTbm93Zmxha2VVdGlsLnRpbWVzdGFtcEZyb20oc25vd2ZsYWtlKSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIHNub3dmbGFrZXNcbiAgICogQHBhcmFtIGEgRmlyc3Qgc25vd2ZsYWtlXG4gICAqIEBwYXJhbSBiIFNlY29uZCBzbm93Zmxha2VcbiAgICogQHJldHVybnMgLTEgaWYgYSA8IGIsIDAgaWYgYSA9PT0gYiwgMSBpZiBhID4gYlxuICAgKi9cbiAgc3RhdGljIGNvbXBhcmUoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiAtMSB8IDAgfCAxIHtcbiAgICBjb25zdCBiaWdBID0gQmlnSW50KGEpO1xuICAgIGNvbnN0IGJpZ0IgPSBCaWdJbnQoYik7XG4gICAgaWYgKGJpZ0EgPCBiaWdCKSByZXR1cm4gLTE7XG4gICAgaWYgKGJpZ0EgPiBiaWdCKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB2YWx1ZSBpcyBhIHZhbGlkIHNub3dmbGFrZVxuICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcbiAgICovXG4gIHN0YXRpYyBpc1ZhbGlkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghL15cXGR7MTcsMjB9JC8udGVzdCh2YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gU25vd2ZsYWtlVXRpbC50aW1lc3RhbXBGcm9tKHZhbHVlKTtcbiAgICAgIHJldHVybiB0aW1lc3RhbXAgPiBOdW1iZXIoRVBPQ0gpICYmIHRpbWVzdGFtcCA8IERhdGUubm93KCkgKyAxMDAwICogNjAgKiA2MCAqIDI0ICogMzY1OyAvLyBXaXRoaW4gcmVhc29uYWJsZSByYW5nZVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIERlY29uc3RydWN0ZWQgc25vd2ZsYWtlIGRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWNvbnN0cnVjdGVkU25vd2ZsYWtlIHtcbiAgLyoqIFRpbWVzdGFtcCB0aGUgc25vd2ZsYWtlIHdhcyBjcmVhdGVkICovXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICAvKiogRGF0ZSB0aGUgc25vd2ZsYWtlIHdhcyBjcmVhdGVkICovXG4gIGRhdGU6IERhdGU7XG4gIC8qKiBXb3JrZXIgSUQgaW4gdGhlIHNub3dmbGFrZSAqL1xuICB3b3JrZXJJZDogbnVtYmVyO1xuICAvKiogUHJvY2VzcyBJRCBpbiB0aGUgc25vd2ZsYWtlICovXG4gIHByb2Nlc3NJZDogbnVtYmVyO1xuICAvKiogSW5jcmVtZW50IGluIHRoZSBzbm93Zmxha2UgKi9cbiAgaW5jcmVtZW50OiBudW1iZXI7XG4gIC8qKiBCaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNub3dmbGFrZSAqL1xuICBiaW5hcnk6IHN0cmluZztcbn1cblxuLy8gRXhwb3J0IGFzIGRlZmF1bHQgdG9vIGZvciBjb252ZW5pZW5jZVxuZXhwb3J0IGRlZmF1bHQgU25vd2ZsYWtlVXRpbDtcbiJdfQ==
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Sweepers - Automatic cache cleanup utilities
3
+ */
4
+ import { Collection } from './Collection';
5
+ /**
6
+ * Sweeper options for a specific cache
7
+ */
8
+ export interface SweeperOptions {
9
+ /** Interval in seconds between sweeps */
10
+ interval: number;
11
+ /** Filter function to determine what to sweep */
12
+ filter: () => (value: any, key: string, collection: Collection<string, any>) => boolean;
13
+ }
14
+ /**
15
+ * Global sweeper configuration
16
+ */
17
+ export interface SweeperDefinitions {
18
+ /** Sweep application commands */
19
+ applicationCommands?: SweeperOptions;
20
+ /** Sweep bans */
21
+ bans?: SweeperOptions;
22
+ /** Sweep emojis */
23
+ emojis?: SweeperOptions;
24
+ /** Sweep invites */
25
+ invites?: SweeperOptions;
26
+ /** Sweep guild members */
27
+ guildMembers?: SweeperOptions;
28
+ /** Sweep messages */
29
+ messages?: SweeperOptions;
30
+ /** Sweep presences */
31
+ presences?: SweeperOptions;
32
+ /** Sweep reactions */
33
+ reactions?: SweeperOptions;
34
+ /** Sweep stage instances */
35
+ stageInstances?: SweeperOptions;
36
+ /** Sweep stickers */
37
+ stickers?: SweeperOptions;
38
+ /** Sweep users */
39
+ users?: SweeperOptions;
40
+ /** Sweep voice states */
41
+ voiceStates?: SweeperOptions;
42
+ }
43
+ /**
44
+ * Sweeper filters - predefined filter functions
45
+ */
46
+ export declare const Sweepers: {
47
+ /**
48
+ * Filter that sweeps items older than a certain lifetime
49
+ */
50
+ filterByLifetime<T extends {
51
+ createdTimestamp?: number;
52
+ createdAt?: Date;
53
+ }>(options?: {
54
+ lifetime?: number;
55
+ getComparisonTimestamp?: (value: T) => number;
56
+ excludeFromSweep?: (value: T) => boolean;
57
+ }): () => (value: T) => boolean;
58
+ /**
59
+ * Filter that sweeps expired invites
60
+ */
61
+ expiredInviteSweepFilter(): () => (invite: any) => boolean;
62
+ /**
63
+ * Filter that sweeps outdated presences
64
+ */
65
+ outdatedPresenceSweepFilter(lifetime?: number): () => (presence: any) => boolean;
66
+ /**
67
+ * Filter that sweeps all items (use with caution)
68
+ */
69
+ sweepAll(): () => () => boolean;
70
+ /**
71
+ * Filter that sweeps nothing
72
+ */
73
+ sweepNone(): () => () => boolean;
74
+ };
75
+ /**
76
+ * Sweeper manager class
77
+ */
78
+ export declare class SweeperManager {
79
+ private client;
80
+ private intervals;
81
+ private options;
82
+ constructor(client: any, options?: SweeperDefinitions);
83
+ /**
84
+ * Start all configured sweepers
85
+ */
86
+ start(): void;
87
+ /**
88
+ * Start a specific sweeper
89
+ */
90
+ private startSweeper;
91
+ /**
92
+ * Stop a specific sweeper
93
+ */
94
+ stopSweeper(name: keyof SweeperDefinitions): void;
95
+ /**
96
+ * Stop all sweepers
97
+ */
98
+ stop(): void;
99
+ /**
100
+ * Manually trigger a sweep
101
+ */
102
+ sweep(name: keyof SweeperDefinitions, filter?: () => (value: any, key: string, collection: Collection<string, any>) => boolean): number;
103
+ /**
104
+ * Get the cache for a sweeper type
105
+ */
106
+ private getCache;
107
+ /**
108
+ * Get sweeper statistics
109
+ */
110
+ getStats(): Record<string, {
111
+ interval: number;
112
+ running: boolean;
113
+ }>;
114
+ }
115
+ /**
116
+ * Default sweeper options for common use cases
117
+ */
118
+ export declare const DefaultSweeperOptions: SweeperDefinitions;
119
+ export default SweeperManager;
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ /**
3
+ * Sweepers - Automatic cache cleanup utilities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DefaultSweeperOptions = exports.SweeperManager = exports.Sweepers = void 0;
7
+ /**
8
+ * Sweeper filters - predefined filter functions
9
+ */
10
+ exports.Sweepers = {
11
+ /**
12
+ * Filter that sweeps items older than a certain lifetime
13
+ */
14
+ filterByLifetime(options = {}) {
15
+ const lifetime = options.lifetime ?? 14400; // 4 hours default
16
+ const getTimestamp = options.getComparisonTimestamp ??
17
+ ((v) => v.createdTimestamp ?? v.createdAt?.getTime() ?? 0);
18
+ const exclude = options.excludeFromSweep ?? (() => false);
19
+ return () => {
20
+ const now = Date.now();
21
+ const cutoff = now - (lifetime * 1000);
22
+ return (value) => {
23
+ if (exclude(value))
24
+ return false;
25
+ const timestamp = getTimestamp(value);
26
+ return timestamp < cutoff;
27
+ };
28
+ };
29
+ },
30
+ /**
31
+ * Filter that sweeps expired invites
32
+ */
33
+ expiredInviteSweepFilter() {
34
+ return () => {
35
+ const now = Date.now();
36
+ return (invite) => {
37
+ if (!invite.expiresAt && !invite.expiresTimestamp)
38
+ return false;
39
+ const expiresAt = invite.expiresAt?.getTime() ?? invite.expiresTimestamp ?? Infinity;
40
+ return expiresAt < now;
41
+ };
42
+ };
43
+ },
44
+ /**
45
+ * Filter that sweeps outdated presences
46
+ */
47
+ outdatedPresenceSweepFilter(lifetime = 21600) {
48
+ return () => {
49
+ const now = Date.now();
50
+ const cutoff = now - (lifetime * 1000);
51
+ return (presence) => {
52
+ const lastUpdate = presence.lastModified ?? presence.updatedAt?.getTime() ?? 0;
53
+ return lastUpdate < cutoff;
54
+ };
55
+ };
56
+ },
57
+ /**
58
+ * Filter that sweeps all items (use with caution)
59
+ */
60
+ sweepAll() {
61
+ return () => () => true;
62
+ },
63
+ /**
64
+ * Filter that sweeps nothing
65
+ */
66
+ sweepNone() {
67
+ return () => () => false;
68
+ },
69
+ };
70
+ /**
71
+ * Sweeper manager class
72
+ */
73
+ class SweeperManager {
74
+ client;
75
+ intervals = new Map();
76
+ options;
77
+ constructor(client, options = {}) {
78
+ this.client = client;
79
+ this.options = options;
80
+ }
81
+ /**
82
+ * Start all configured sweepers
83
+ */
84
+ start() {
85
+ for (const [key, config] of Object.entries(this.options)) {
86
+ if (config && config.interval > 0) {
87
+ this.startSweeper(key, config);
88
+ }
89
+ }
90
+ }
91
+ /**
92
+ * Start a specific sweeper
93
+ */
94
+ startSweeper(name, config) {
95
+ // Clear existing interval if any
96
+ this.stopSweeper(name);
97
+ const interval = setInterval(() => {
98
+ this.sweep(name, config.filter);
99
+ }, config.interval * 1000);
100
+ this.intervals.set(name, interval);
101
+ }
102
+ /**
103
+ * Stop a specific sweeper
104
+ */
105
+ stopSweeper(name) {
106
+ const interval = this.intervals.get(name);
107
+ if (interval) {
108
+ clearInterval(interval);
109
+ this.intervals.delete(name);
110
+ }
111
+ }
112
+ /**
113
+ * Stop all sweepers
114
+ */
115
+ stop() {
116
+ for (const name of this.intervals.keys()) {
117
+ this.stopSweeper(name);
118
+ }
119
+ }
120
+ /**
121
+ * Manually trigger a sweep
122
+ */
123
+ sweep(name, filter) {
124
+ const cache = this.getCache(name);
125
+ if (!cache)
126
+ return 0;
127
+ const filterFn = filter ?? this.options[name]?.filter;
128
+ if (!filterFn)
129
+ return 0;
130
+ return cache.sweep(filterFn());
131
+ }
132
+ /**
133
+ * Get the cache for a sweeper type
134
+ */
135
+ getCache(name) {
136
+ switch (name) {
137
+ case 'users':
138
+ return this.client.users?.cache ?? null;
139
+ case 'guildMembers':
140
+ // Sweep across all guilds
141
+ let memberCount = 0;
142
+ this.client.guilds?.cache.forEach((guild) => {
143
+ if (guild.members?.cache) {
144
+ const filter = this.options.guildMembers?.filter;
145
+ if (filter)
146
+ memberCount += guild.members.cache.sweep(filter());
147
+ }
148
+ });
149
+ return null; // Already handled
150
+ case 'messages':
151
+ // Sweep across all channels
152
+ this.client.channels?.cache.forEach((channel) => {
153
+ if (channel.messages?.cache) {
154
+ const filter = this.options.messages?.filter;
155
+ if (filter)
156
+ channel.messages.cache.sweep(filter());
157
+ }
158
+ });
159
+ return null;
160
+ case 'presences':
161
+ // Sweep across all guilds
162
+ this.client.guilds?.cache.forEach((guild) => {
163
+ if (guild.presences?.cache) {
164
+ const filter = this.options.presences?.filter;
165
+ if (filter)
166
+ guild.presences.cache.sweep(filter());
167
+ }
168
+ });
169
+ return null;
170
+ case 'voiceStates':
171
+ this.client.guilds?.cache.forEach((guild) => {
172
+ if (guild.voiceStates?.cache) {
173
+ const filter = this.options.voiceStates?.filter;
174
+ if (filter)
175
+ guild.voiceStates.cache.sweep(filter());
176
+ }
177
+ });
178
+ return null;
179
+ case 'reactions':
180
+ // Sweep reactions from all messages
181
+ this.client.channels?.cache.forEach((channel) => {
182
+ channel.messages?.cache.forEach((message) => {
183
+ if (message.reactions?.cache) {
184
+ const filter = this.options.reactions?.filter;
185
+ if (filter)
186
+ message.reactions.cache.sweep(filter());
187
+ }
188
+ });
189
+ });
190
+ return null;
191
+ case 'emojis':
192
+ return this.client.emojis?.cache ?? null;
193
+ case 'stickers':
194
+ return this.client.stickers?.cache ?? null;
195
+ case 'invites':
196
+ // Sweep across all guilds
197
+ this.client.guilds?.cache.forEach((guild) => {
198
+ if (guild.invites?.cache) {
199
+ const filter = this.options.invites?.filter;
200
+ if (filter)
201
+ guild.invites.cache.sweep(filter());
202
+ }
203
+ });
204
+ return null;
205
+ case 'bans':
206
+ this.client.guilds?.cache.forEach((guild) => {
207
+ if (guild.bans?.cache) {
208
+ const filter = this.options.bans?.filter;
209
+ if (filter)
210
+ guild.bans.cache.sweep(filter());
211
+ }
212
+ });
213
+ return null;
214
+ default:
215
+ return null;
216
+ }
217
+ }
218
+ /**
219
+ * Get sweeper statistics
220
+ */
221
+ getStats() {
222
+ const stats = {};
223
+ for (const [name, config] of Object.entries(this.options)) {
224
+ if (config) {
225
+ stats[name] = {
226
+ interval: config.interval,
227
+ running: this.intervals.has(name),
228
+ };
229
+ }
230
+ }
231
+ return stats;
232
+ }
233
+ }
234
+ exports.SweeperManager = SweeperManager;
235
+ /**
236
+ * Default sweeper options for common use cases
237
+ */
238
+ exports.DefaultSweeperOptions = {
239
+ messages: {
240
+ interval: 3600, // 1 hour
241
+ filter: exports.Sweepers.filterByLifetime({ lifetime: 1800 }), // 30 minutes
242
+ },
243
+ invites: {
244
+ interval: 3600,
245
+ filter: exports.Sweepers.expiredInviteSweepFilter(),
246
+ },
247
+ };
248
+ exports.default = SweeperManager;
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dlZXBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvU3dlZXBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUE0Q0g7O0dBRUc7QUFDVSxRQUFBLFFBQVEsR0FBRztJQUN0Qjs7T0FFRztJQUNILGdCQUFnQixDQUE0RCxVQUl4RSxFQUFFO1FBQ0osTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxrQkFBa0I7UUFDOUQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLHNCQUFzQjtZQUNqRCxDQUFDLENBQUMsQ0FBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoRSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxRCxPQUFPLEdBQUcsRUFBRTtZQUNWLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QixNQUFNLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFFdkMsT0FBTyxDQUFDLEtBQVEsRUFBRSxFQUFFO2dCQUNsQixJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUM7b0JBQUUsT0FBTyxLQUFLLENBQUM7Z0JBQ2pDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEMsT0FBTyxTQUFTLEdBQUcsTUFBTSxDQUFDO1lBQzVCLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLEdBQUcsRUFBRTtZQUNWLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QixPQUFPLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtvQkFBRSxPQUFPLEtBQUssQ0FBQztnQkFDaEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDO2dCQUNyRixPQUFPLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDekIsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsMkJBQTJCLENBQUMsUUFBUSxHQUFHLEtBQUs7UUFDMUMsT0FBTyxHQUFHLEVBQUU7WUFDVixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRXZDLE9BQU8sQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDdkIsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDL0UsT0FBTyxVQUFVLEdBQUcsTUFBTSxDQUFDO1lBQzdCLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztDQUNGLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQWEsY0FBYztJQUNqQixNQUFNLENBQU07SUFDWixTQUFTLEdBQWdDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbkQsT0FBTyxDQUFxQjtJQUVwQyxZQUFZLE1BQVcsRUFBRSxVQUE4QixFQUFFO1FBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQStCLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDN0QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxZQUFZLENBQUMsSUFBOEIsRUFBRSxNQUFzQjtRQUN6RSxpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLElBQThCO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILElBQUk7UUFDRixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQWdDLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLElBQThCLEVBQUUsTUFBd0Y7UUFDNUgsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXJCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNLLFFBQVEsQ0FBQyxJQUE4QjtRQUM3QyxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxPQUFPO2dCQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztZQUMxQyxLQUFLLGNBQWM7Z0JBQ2pCLDBCQUEwQjtnQkFDMUIsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7b0JBQy9DLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQzt3QkFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDO3dCQUNqRCxJQUFJLE1BQU07NEJBQUUsV0FBVyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUNqRSxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDLENBQUMsa0JBQWtCO1lBQ2pDLEtBQUssVUFBVTtnQkFDYiw0QkFBNEI7Z0JBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtvQkFDbkQsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO3dCQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7d0JBQzdDLElBQUksTUFBTTs0QkFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztvQkFDckQsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssV0FBVztnQkFDZCwwQkFBMEI7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtvQkFDL0MsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3dCQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUM7d0JBQzlDLElBQUksTUFBTTs0QkFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztvQkFDcEQsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssYUFBYTtnQkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO29CQUMvQyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7d0JBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQzt3QkFDaEQsSUFBSSxNQUFNOzRCQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUN0RCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxXQUFXO2dCQUNkLG9DQUFvQztnQkFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO29CQUNuRCxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTt3QkFDL0MsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDOzRCQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUM7NEJBQzlDLElBQUksTUFBTTtnQ0FBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQzt3QkFDdEQsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUM7WUFDM0MsS0FBSyxVQUFVO2dCQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztZQUM3QyxLQUFLLFNBQVM7Z0JBQ1osMEJBQTBCO2dCQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7b0JBQy9DLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQzt3QkFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO3dCQUM1QyxJQUFJLE1BQU07NEJBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQ2xELENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO29CQUMvQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7d0JBQ3RCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQzt3QkFDekMsSUFBSSxNQUFNOzRCQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUMvQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixNQUFNLEtBQUssR0FBMkQsRUFBRSxDQUFDO1FBRXpFLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHO29CQUNaLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtvQkFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztpQkFDbEMsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUFyS0Qsd0NBcUtDO0FBRUQ7O0dBRUc7QUFDVSxRQUFBLHFCQUFxQixHQUF1QjtJQUN2RCxRQUFRLEVBQUU7UUFDUixRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVM7UUFDekIsTUFBTSxFQUFFLGdCQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxhQUFhO0tBQ3JFO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsUUFBUSxFQUFFLElBQUk7UUFDZCxNQUFNLEVBQUUsZ0JBQVEsQ0FBQyx3QkFBd0IsRUFBRTtLQUM1QztDQUNGLENBQUM7QUFFRixrQkFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN3ZWVwZXJzIC0gQXV0b21hdGljIGNhY2hlIGNsZWFudXAgdXRpbGl0aWVzXG4gKi9cblxuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vQ29sbGVjdGlvbic7XG5cbi8qKlxuICogU3dlZXBlciBvcHRpb25zIGZvciBhIHNwZWNpZmljIGNhY2hlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dlZXBlck9wdGlvbnMge1xuICAvKiogSW50ZXJ2YWwgaW4gc2Vjb25kcyBiZXR3ZWVuIHN3ZWVwcyAqL1xuICBpbnRlcnZhbDogbnVtYmVyO1xuICAvKiogRmlsdGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGF0IHRvIHN3ZWVwICovXG4gIGZpbHRlcjogKCkgPT4gKHZhbHVlOiBhbnksIGtleTogc3RyaW5nLCBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPHN0cmluZywgYW55PikgPT4gYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHbG9iYWwgc3dlZXBlciBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dlZXBlckRlZmluaXRpb25zIHtcbiAgLyoqIFN3ZWVwIGFwcGxpY2F0aW9uIGNvbW1hbmRzICovXG4gIGFwcGxpY2F0aW9uQ29tbWFuZHM/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
@@ -0,0 +1,13 @@
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';
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * Utility exports
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./Collection"), exports);
21
+ __exportStar(require("./Formatters"), exports);
22
+ __exportStar(require("./SnowflakeUtil"), exports);
23
+ __exportStar(require("./BitField"), exports);
24
+ __exportStar(require("./PermissionsBitField"), exports);
25
+ __exportStar(require("./IntentsBitField"), exports);
26
+ __exportStar(require("./DataResolver"), exports);
27
+ __exportStar(require("./Collector"), exports);
28
+ __exportStar(require("./Partials"), exports);
29
+ __exportStar(require("./Sweepers"), exports);
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsK0NBQTZCO0FBQzdCLCtDQUE2QjtBQUM3QixrREFBZ0M7QUFDaEMsNkNBQTJCO0FBQzNCLHdEQUFzQztBQUN0QyxvREFBa0M7QUFDbEMsaURBQStCO0FBQy9CLDhDQUE0QjtBQUM1Qiw2Q0FBMkI7QUFDM0IsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXR5IGV4cG9ydHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL0NvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9Gb3JtYXR0ZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vU25vd2ZsYWtlVXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL0JpdEZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vUGVybWlzc2lvbnNCaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL0ludGVudHNCaXRGaWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL0RhdGFSZXNvbHZlcic7XG5leHBvcnQgKiBmcm9tICcuL0NvbGxlY3Rvcic7XG5leHBvcnQgKiBmcm9tICcuL1BhcnRpYWxzJztcbmV4cG9ydCAqIGZyb20gJy4vU3dlZXBlcnMnO1xuIl19