@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,63 +0,0 @@
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;
@@ -1,93 +0,0 @@
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==
@@ -1,119 +0,0 @@
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;
@@ -1,249 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dlZXBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvU3dlZXBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUE0Q0g7O0dBRUc7QUFDVSxRQUFBLFFBQVEsR0FBRztJQUN0Qjs7T0FFRztJQUNILGdCQUFnQixDQUE0RCxVQUl4RSxFQUFFO1FBQ0osTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxrQkFBa0I7UUFDOUQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLHNCQUFzQjtZQUNqRCxDQUFDLENBQUMsQ0FBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoRSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxRCxPQUFPLEdBQUcsRUFBRTtZQUNWLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QixNQUFNLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFFdkMsT0FBTyxDQUFDLEtBQVEsRUFBRSxFQUFFO2dCQUNsQixJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUM7b0JBQUUsT0FBTyxLQUFLLENBQUM7Z0JBQ2pDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEMsT0FBTyxTQUFTLEdBQUcsTUFBTSxDQUFDO1lBQzVCLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLEdBQUcsRUFBRTtZQUNWLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFH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LElBQUksQ0FBQyxHQUFHO29CQUNaLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtvQkFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztpQkFDbEMsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUFyS0Qsd0NBcUtDO0FBRUQ7O0dBRUc7QUFDVSxRQUFBLHFCQUFxQixHQUF1QjtJQUN2RCxRQUFRLEVBQUU7UUFDUixRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVM7UUFDekIsTUFBTSxFQUFFLGdCQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxhQUFhO0tBQ3JFO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsUUFBUSxFQUFFLElBQUk7UUFDZCxNQUFNLEVBQUUsZ0JBQVEsQ0FBQyx3QkFBd0IsRUFBRTtLQUM1QztDQUNGLENBQUM7QUFFRixrQkFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN3ZWVwZXJzIC0gQXV0b21hdGljIGNhY2hlIGNsZWFudXAgdXRpbGl0aWVzXG4gKi9cblxuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vQ29sbGVjdGlvbic7XG5cbi8qKlxuICogU3dlZXBlciBvcHRpb25zIGZvciBhIHNwZWNpZmljIGNhY2hlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dlZXBlck9wdGlvbnMge1xuICAvKiogSW50ZXJ2YWwgaW4gc2Vjb25kcyBiZXR3ZWVuIHN3ZWVwcyAqL1xuICBpbnRlcnZhbDogbnVtYmVyO1xuICAvKiogRmlsdGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGF0IHRvIHN3ZWVwICovXG4gIGZpbHRlcjogKCkgPT4gKHZhbHVlOiBhbnksIGtleTogc3RyaW5nLCBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPHN0cmluZywgYW55PikgPT4gYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHbG9iYWwgc3dlZXBlciBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dlZXBlckRlZmluaXRpb25zIHtcbiAgLyoqIFN3ZWVwIGFwcGxpY2F0aW9uIGNvbW1hbmRzICovXG4gIGFwcGxpY2F0aW9uQ29tbWFuZHM/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,13 +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';
@@ -1,30 +0,0 @@
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