@discordeno/utils 19.0.0-next.523ffe3 → 19.0.0-next.53d2bb6

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 (100) hide show
  1. package/README.md +6 -10
  2. package/dist/cjs/Collection.cjs +123 -0
  3. package/dist/cjs/base64.cjs +276 -0
  4. package/dist/cjs/bucket.cjs +95 -0
  5. package/dist/cjs/builders/embeds.cjs +292 -0
  6. package/dist/cjs/builders.cjs +27 -0
  7. package/dist/cjs/casing.cjs +75 -0
  8. package/dist/cjs/colors.cjs +456 -0
  9. package/dist/cjs/hash.cjs +37 -0
  10. package/dist/cjs/images.cjs +61 -0
  11. package/dist/cjs/index.cjs +35 -0
  12. package/dist/cjs/logger.cjs +157 -0
  13. package/dist/cjs/oauth2.cjs +26 -0
  14. package/dist/cjs/permissions.cjs +35 -0
  15. package/dist/cjs/reactions.cjs +21 -0
  16. package/dist/cjs/token.cjs +39 -0
  17. package/dist/cjs/typeguards.cjs +45 -0
  18. package/dist/cjs/urlToBase64.cjs +19 -0
  19. package/dist/cjs/utils.cjs +30 -0
  20. package/dist/esm/Collection.js +113 -0
  21. package/dist/esm/base64.js +262 -0
  22. package/dist/esm/bucket.js +80 -0
  23. package/dist/esm/builders/embeds.js +295 -0
  24. package/dist/esm/builders.js +5 -0
  25. package/dist/esm/casing.js +51 -0
  26. package/dist/esm/colors.js +467 -0
  27. package/dist/esm/hash.js +19 -0
  28. package/dist/esm/images.js +66 -0
  29. package/dist/esm/index.js +18 -0
  30. package/dist/esm/logger.js +130 -0
  31. package/dist/esm/oauth2.js +16 -0
  32. package/dist/esm/permissions.js +17 -0
  33. package/dist/esm/reactions.js +11 -0
  34. package/dist/esm/token.js +21 -0
  35. package/dist/esm/typeguards.js +18 -0
  36. package/dist/esm/urlToBase64.js +9 -0
  37. package/dist/esm/utils.js +15 -0
  38. package/dist/{Collection.d.ts → types/Collection.d.ts} +2 -2
  39. package/dist/types/Collection.d.ts.map +1 -0
  40. package/dist/types/base64.d.ts.map +1 -0
  41. package/dist/types/bucket.d.ts +43 -0
  42. package/dist/types/bucket.d.ts.map +1 -0
  43. package/dist/types/builders/embeds.d.ts +146 -0
  44. package/dist/types/builders/embeds.d.ts.map +1 -0
  45. package/dist/types/builders.d.ts +4 -0
  46. package/dist/types/builders.d.ts.map +1 -0
  47. package/dist/types/casing.d.ts +6 -0
  48. package/dist/types/casing.d.ts.map +1 -0
  49. package/dist/types/colors.d.ts +275 -0
  50. package/dist/types/colors.d.ts.map +1 -0
  51. package/dist/types/hash.d.ts.map +1 -0
  52. package/dist/types/images.d.ts +68 -0
  53. package/dist/types/images.d.ts.map +1 -0
  54. package/dist/{index.d.ts → types/index.d.ts} +7 -1
  55. package/dist/types/index.d.ts.map +1 -0
  56. package/dist/types/logger.d.ts +36 -0
  57. package/dist/types/logger.d.ts.map +1 -0
  58. package/dist/types/oauth2.d.ts +58 -0
  59. package/dist/types/oauth2.d.ts.map +1 -0
  60. package/dist/types/permissions.d.ts.map +1 -0
  61. package/dist/types/reactions.d.ts +3 -0
  62. package/dist/types/reactions.d.ts.map +1 -0
  63. package/dist/{token.d.ts → types/token.d.ts} +1 -1
  64. package/dist/types/token.d.ts.map +1 -0
  65. package/dist/types/typeguards.d.ts +7 -0
  66. package/dist/types/typeguards.d.ts.map +1 -0
  67. package/dist/types/urlToBase64.d.ts.map +1 -0
  68. package/dist/types/utils.d.ts +5 -0
  69. package/dist/types/utils.d.ts.map +1 -0
  70. package/package.json +24 -18
  71. package/dist/Collection.d.ts.map +0 -1
  72. package/dist/Collection.js +0 -2
  73. package/dist/base64.d.ts.map +0 -1
  74. package/dist/base64.js +0 -2
  75. package/dist/bucket.d.ts +0 -49
  76. package/dist/bucket.d.ts.map +0 -1
  77. package/dist/bucket.js +0 -2
  78. package/dist/casing.d.ts +0 -4
  79. package/dist/casing.d.ts.map +0 -1
  80. package/dist/casing.js +0 -2
  81. package/dist/hash.d.ts.map +0 -1
  82. package/dist/hash.js +0 -2
  83. package/dist/images.d.ts +0 -23
  84. package/dist/images.d.ts.map +0 -1
  85. package/dist/images.js +0 -2
  86. package/dist/index.d.ts.map +0 -1
  87. package/dist/index.js +0 -2
  88. package/dist/permissions.d.ts.map +0 -1
  89. package/dist/permissions.js +0 -2
  90. package/dist/token.d.ts.map +0 -1
  91. package/dist/token.js +0 -2
  92. package/dist/urlToBase64.d.ts.map +0 -1
  93. package/dist/urlToBase64.js +0 -2
  94. package/dist/utils.d.ts +0 -6
  95. package/dist/utils.d.ts.map +0 -1
  96. package/dist/utils.js +0 -2
  97. /package/dist/{base64.d.ts → types/base64.d.ts} +0 -0
  98. /package/dist/{hash.d.ts → types/hash.d.ts} +0 -0
  99. /package/dist/{permissions.d.ts → types/permissions.d.ts} +0 -0
  100. /package/dist/{urlToBase64.d.ts → types/urlToBase64.d.ts} +0 -0
@@ -0,0 +1,130 @@
1
+ /* eslint-disable @typescript-eslint/no-confusing-void-expression */ /* eslint-disable @typescript-eslint/explicit-function-return-type */ import { bgBrightMagenta, black, bold, cyan, gray, italic, red, yellow } from './colors.js';
2
+ export var LogLevels;
3
+ (function(LogLevels) {
4
+ LogLevels[LogLevels["Debug"] = 0] = "Debug";
5
+ LogLevels[LogLevels["Info"] = 1] = "Info";
6
+ LogLevels[LogLevels["Warn"] = 2] = "Warn";
7
+ LogLevels[LogLevels["Error"] = 3] = "Error";
8
+ LogLevels[LogLevels["Fatal"] = 4] = "Fatal";
9
+ })(LogLevels || (LogLevels = {}));
10
+ export var LogDepth;
11
+ (function(LogDepth) {
12
+ LogDepth[LogDepth["Minimal"] = 0] = "Minimal";
13
+ LogDepth[LogDepth["Full"] = 1] = "Full";
14
+ })(LogDepth || (LogDepth = {}));
15
+ const prefixes = new Map([
16
+ [
17
+ 0,
18
+ 'DEBUG'
19
+ ],
20
+ [
21
+ 1,
22
+ 'INFO'
23
+ ],
24
+ [
25
+ 2,
26
+ 'WARN'
27
+ ],
28
+ [
29
+ 3,
30
+ 'ERROR'
31
+ ],
32
+ [
33
+ 4,
34
+ 'FATAL'
35
+ ]
36
+ ]);
37
+ const noColor = (msg)=>msg;
38
+ const colorFunctions = new Map([
39
+ [
40
+ 0,
41
+ gray
42
+ ],
43
+ [
44
+ 1,
45
+ cyan
46
+ ],
47
+ [
48
+ 2,
49
+ yellow
50
+ ],
51
+ [
52
+ 3,
53
+ (str)=>red(str)
54
+ ],
55
+ [
56
+ 4,
57
+ (str)=>red(bold(italic(str)))
58
+ ]
59
+ ]);
60
+ export function createLogger({ logLevel = 1, name } = {}) {
61
+ let depth = 0;
62
+ function log(level, ...args) {
63
+ if (level < logLevel) return;
64
+ let color = colorFunctions.get(level);
65
+ if (!color) color = noColor;
66
+ const date = new Date();
67
+ const log1 = [
68
+ bgBrightMagenta(black(`[${date.toLocaleDateString()} ${date.toLocaleTimeString()}]`)),
69
+ color(prefixes.get(level) ?? 'DEBUG'),
70
+ name ? `${name} >` : '>',
71
+ ...args
72
+ ];
73
+ switch(level){
74
+ case 0:
75
+ return console.debug(...log1);
76
+ case 1:
77
+ return console.info(...log1);
78
+ case 2:
79
+ return console.warn(...log1);
80
+ case 3:
81
+ return console.error(...log1);
82
+ case 4:
83
+ return console.error(...log1);
84
+ default:
85
+ return console.log(...log1);
86
+ }
87
+ }
88
+ function setLevel(level) {
89
+ logLevel = level;
90
+ }
91
+ function setDepth(level) {
92
+ depth = level;
93
+ }
94
+ function debug(...args) {
95
+ if (0 === depth) log(0, args[0]);
96
+ else log(0, ...args);
97
+ }
98
+ function info(...args) {
99
+ if (0 === depth) log(1, args[0]);
100
+ else log(1, ...args);
101
+ }
102
+ function warn(...args) {
103
+ if (0 === depth) log(2, args[0]);
104
+ else log(2, ...args);
105
+ }
106
+ function error(...args) {
107
+ if (0 === depth) log(3, args[0]);
108
+ else log(3, ...args);
109
+ }
110
+ function fatal(...args) {
111
+ if (0 === depth) log(4, args[0]);
112
+ else log(4, ...args);
113
+ }
114
+ return {
115
+ log,
116
+ setDepth,
117
+ setLevel,
118
+ debug,
119
+ info,
120
+ warn,
121
+ error,
122
+ fatal
123
+ };
124
+ }
125
+ export const logger = createLogger({
126
+ name: 'Discordeno'
127
+ });
128
+ export default logger;
129
+
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWNvbmZ1c2luZy12b2lkLWV4cHJlc3Npb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZSAqL1xuaW1wb3J0IHsgYmdCcmlnaHRNYWdlbnRhLCBibGFjaywgYm9sZCwgY3lhbiwgZ3JheSwgaXRhbGljLCByZWQsIHllbGxvdyB9IGZyb20gJy4vY29sb3JzLmpzJ1xuXG5leHBvcnQgZW51bSBMb2dMZXZlbHMge1xuICBEZWJ1ZyxcbiAgSW5mbyxcbiAgV2FybixcbiAgRXJyb3IsXG4gIEZhdGFsLFxufVxuXG5leHBvcnQgZW51bSBMb2dEZXB0aCB7XG4gIE1pbmltYWwsXG4gIEZ1bGwsXG59XG5cbmNvbnN0IHByZWZpeGVzID0gbmV3IE1hcDxMb2dMZXZlbHMsIHN0cmluZz4oW1xuICBbTG9nTGV2ZWxzLkRlYnVnLCAnREVCVUcnXSxcbiAgW0xvZ0xldmVscy5JbmZvLCAnSU5GTyddLFxuICBbTG9nTGV2ZWxzLldhcm4sICdXQVJOJ10sXG4gIFtMb2dMZXZlbHMuRXJyb3IsICdFUlJPUiddLFxuICBbTG9nTGV2ZWxzLkZhdGFsLCAnRkFUQUwnXSxcbl0pXG5cbmNvbnN0IG5vQ29sb3I6IChzdHI6IHN0cmluZykgPT4gc3RyaW5nID0gKG1zZykgPT4gbXNnXG5jb25zdCBjb2xvckZ1bmN0aW9ucyA9IG5ldyBNYXA8TG9nTGV2ZWxzLCAoc3RyOiBzdHJpbmcpID0+IHN0cmluZz4oW1xuICBbTG9nTGV2ZWxzLkRlYnVnLCBncmF5XSxcbiAgW0xvZ0xldmVscy5JbmZvLCBjeWFuXSxcbiAgW0xvZ0xldmVscy5XYXJuLCB5ZWxsb3ddLFxuICBbTG9nTGV2ZWxzLkVycm9yLCAoc3RyOiBzdHJpbmcpID0+IHJlZChzdHIpXSxcbiAgW0xvZ0xldmVscy5GYXRhbCwgKHN0cjogc3RyaW5nKSA9PiByZWQoYm9sZChpdGFsaWMoc3RyKSkpXSxcbl0pXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dnZXIoe1xuICBsb2dMZXZlbCA9IExvZ0xldmVscy5JbmZvLFxuICBuYW1lLFxufToge1xuICBsb2dMZXZlbD86IExvZ0xldmVsc1xuICBuYW1lPzogc3RyaW5nXG59ID0ge30pIHtcbiAgbGV0IGRlcHRoID0gTG9nRGVwdGguTWluaW1hbFxuXG4gIGZ1bmN0aW9uIGxvZyhsZXZlbDogTG9nTGV2ZWxzLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmIChsZXZlbCA8IGxvZ0xldmVsKSByZXR1cm5cblxuICAgIGxldCBjb2xvciA9IGNvbG9yRnVuY3Rpb25zLmdldChsZXZlbClcbiAgICBpZiAoIWNvbG9yKSBjb2xvciA9IG5vQ29sb3JcblxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpXG4gICAgY29uc3QgbG9nID0gW1xuICAgICAgYmdCcmlnaHRNYWdlbnRhKGJsYWNrKGBbJHtkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpfSAke2RhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKCl9XWApKSxcbiAgICAgIGNvbG9yKHByZWZpeGVzLmdldChsZXZlbCkgPz8gJ0RFQlVHJyksXG4gICAgICBuYW1lID8gYCR7bmFtZX0gPmAgOiAnPicsXG4gICAgICAuLi5hcmdzLFxuICAgIF1cblxuICAgIHN3aXRjaCAobGV2ZWwpIHtcbiAgICAgIGNhc2UgTG9nTGV2ZWxzLkRlYnVnOlxuICAgICAgICByZXR1cm4gY29uc29sZS5kZWJ1ZyguLi5sb2cpXG4gICAgICBjYXNlIExvZ0xldmVscy5JbmZvOlxuICAgICAgICByZXR1cm4gY29uc29sZS5pbmZvKC4uLmxvZylcbiAgICAgIGNhc2UgTG9nTGV2ZWxzLldhcm46XG4gICAgICAgIHJldHVybiBjb25zb2xlLndhcm4oLi4ubG9nKVxuICAgICAgY2FzZSBMb2dMZXZlbHMuRXJyb3I6XG4gICAgICAgIHJldHVybiBjb25zb2xlLmVycm9yKC4uLmxvZylcbiAgICAgIGNhc2UgTG9nTGV2ZWxzLkZhdGFsOlxuICAgICAgICByZXR1cm4gY29uc29sZS5lcnJvciguLi5sb2cpXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gY29uc29sZS5sb2coLi4ubG9nKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNldExldmVsKGxldmVsOiBMb2dMZXZlbHMpIHtcbiAgICBsb2dMZXZlbCA9IGxldmVsXG4gIH1cblxuICBmdW5jdGlvbiBzZXREZXB0aChsZXZlbDogTG9nRGVwdGgpIHtcbiAgICBkZXB0aCA9IGxldmVsXG4gIH1cblxuICBmdW5jdGlvbiBkZWJ1ZyguLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmIChMb2dEZXB0aC5NaW5pbWFsID09PSBkZXB0aCkgbG9nKExvZ0xldmVscy5EZWJ1ZywgYXJnc1swXSlcbiAgICBlbHNlIGxvZyhMb2dMZXZlbHMuRGVidWcsIC4uLmFyZ3MpXG4gIH1cblxuICBmdW5jdGlvbiBpbmZvKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKExvZ0RlcHRoLk1pbmltYWwgPT09IGRlcHRoKSBsb2coTG9nTGV2ZWxzLkluZm8sIGFyZ3NbMF0pXG4gICAgZWxzZSBsb2coTG9nTGV2ZWxzLkluZm8sIC4uLmFyZ3MpXG4gIH1cblxuICBmdW5jdGlvbiB3YXJuKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKExvZ0RlcHRoLk1pbmltYWwgPT09IGRlcHRoKSBsb2coTG9nTGV2ZWxzLldhcm4sIGFyZ3NbMF0pXG4gICAgZWxzZSBsb2coTG9nTGV2ZWxzLldhcm4sIC4uLmFyZ3MpXG4gIH1cblxuICBmdW5jdGlvbiBlcnJvciguLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmIChMb2dEZXB0aC5NaW5pbWFsID09PSBkZXB0aCkgbG9nKExvZ0xldmVscy5FcnJvciwgYXJnc1swXSlcbiAgICBlbHNlIGxvZyhMb2dMZXZlbHMuRXJyb3IsIC4uLmFyZ3MpXG4gIH1cblxuICBmdW5jdGlvbiBmYXRhbCguLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmIChMb2dEZXB0aC5NaW5pbWFsID09PSBkZXB0aCkgbG9nKExvZ0xldmVscy5GYXRhbCwgYXJnc1swXSlcbiAgICBlbHNlIGxvZyhMb2dMZXZlbHMuRmF0YWwsIC4uLmFyZ3MpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxvZyxcbiAgICBzZXREZXB0aCxcbiAgICBzZXRMZXZlbCxcbiAgICBkZWJ1ZyxcbiAgICBpbmZvLFxuICAgIHdhcm4sXG4gICAgZXJyb3IsXG4gICAgZmF0YWwsXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcih7IG5hbWU6ICdEaXNjb3JkZW5vJyB9KVxuZXhwb3J0IGRlZmF1bHQgbG9nZ2VyXG4iXSwibmFtZXMiOlsiYmdCcmlnaHRNYWdlbnRhIiwiYmxhY2siLCJib2xkIiwiY3lhbiIsImdyYXkiLCJpdGFsaWMiLCJyZWQiLCJ5ZWxsb3ciLCJMb2dMZXZlbHMiLCJMb2dEZXB0aCIsInByZWZpeGVzIiwiTWFwIiwibm9Db2xvciIsIm1zZyIsImNvbG9yRnVuY3Rpb25zIiwic3RyIiwiY3JlYXRlTG9nZ2VyIiwibG9nTGV2ZWwiLCJuYW1lIiwiZGVwdGgiLCJsb2ciLCJsZXZlbCIsImFyZ3MiLCJjb2xvciIsImdldCIsImRhdGUiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwidG9Mb2NhbGVUaW1lU3RyaW5nIiwiY29uc29sZSIsImRlYnVnIiwiaW5mbyIsIndhcm4iLCJlcnJvciIsInNldExldmVsIiwic2V0RGVwdGgiLCJmYXRhbCIsImxvZ2dlciJdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFLEdBQ2xFLG1FQUFtRSxHQUNuRSxTQUFTQSxlQUFlLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxHQUFHLEVBQUVDLE1BQU0sUUFBUSxjQUFhOztVQUUvRUM7Ozs7OztHQUFBQSxjQUFBQTs7VUFRQUM7OztHQUFBQSxhQUFBQTtB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
@@ -0,0 +1,16 @@
1
+ import { calculateBits } from './permissions.js';
2
+ export function createOAuth2Link(options) {
3
+ const joinedScopeString = options.scope.join(' ');
4
+ let url = `https://discord.com/oauth2/authorize?client_id=${options.clientId}&scope=${joinedScopeString}`;
5
+ if (options.responseType) url += `&response_type=${options.responseType}`;
6
+ if (options.state) url += `&state=${encodeURIComponent(options.state)}`;
7
+ if (options.redirectUri) url += `&redirect_uri=${encodeURIComponent(options.redirectUri)}`;
8
+ if (options.prompt) url += `&prompt=${options.prompt}`;
9
+ if (options.permissions) url += `&permissions=${Array.isArray(options.permissions) ? calculateBits(options.permissions) : options.permissions}`;
10
+ if (options.guildId) url += `&guild_id=${options.guildId}`;
11
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
12
+ if (options.disableGuildSelect !== undefined) url += `&disable_guild_select=${options.disableGuildSelect}`;
13
+ return url;
14
+ }
15
+
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vYXV0aDIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCaWdTdHJpbmcsIE9BdXRoMlNjb3BlLCBQZXJtaXNzaW9uU3RyaW5ncyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgY2FsY3VsYXRlQml0cyB9IGZyb20gJy4vcGVybWlzc2lvbnMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPQXV0aDJMaW5rKG9wdGlvbnM6IENyZWF0ZU9BdXRoMkxpbmtPcHRpb25zKTogc3RyaW5nIHtcbiAgY29uc3Qgam9pbmVkU2NvcGVTdHJpbmcgPSBvcHRpb25zLnNjb3BlLmpvaW4oJyAnKVxuXG4gIGxldCB1cmwgPSBgaHR0cHM6Ly9kaXNjb3JkLmNvbS9vYXV0aDIvYXV0aG9yaXplP2NsaWVudF9pZD0ke29wdGlvbnMuY2xpZW50SWR9JnNjb3BlPSR7am9pbmVkU2NvcGVTdHJpbmd9YFxuXG4gIGlmIChvcHRpb25zLnJlc3BvbnNlVHlwZSkgdXJsICs9IGAmcmVzcG9uc2VfdHlwZT0ke29wdGlvbnMucmVzcG9uc2VUeXBlfWBcbiAgaWYgKG9wdGlvbnMuc3RhdGUpIHVybCArPSBgJnN0YXRlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9wdGlvbnMuc3RhdGUpfWBcbiAgaWYgKG9wdGlvbnMucmVkaXJlY3RVcmkpIHVybCArPSBgJnJlZGlyZWN0X3VyaT0ke2VuY29kZVVSSUNvbXBvbmVudChvcHRpb25zLnJlZGlyZWN0VXJpKX1gXG4gIGlmIChvcHRpb25zLnByb21wdCkgdXJsICs9IGAmcHJvbXB0PSR7b3B0aW9ucy5wcm9tcHR9YFxuICBpZiAob3B0aW9ucy5wZXJtaXNzaW9ucykgdXJsICs9IGAmcGVybWlzc2lvbnM9JHtBcnJheS5pc0FycmF5KG9wdGlvbnMucGVybWlzc2lvbnMpID8gY2FsY3VsYXRlQml0cyhvcHRpb25zLnBlcm1pc3Npb25zKSA6IG9wdGlvbnMucGVybWlzc2lvbnN9YFxuICBpZiAob3B0aW9ucy5ndWlsZElkKSB1cmwgKz0gYCZndWlsZF9pZD0ke29wdGlvbnMuZ3VpbGRJZH1gXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgaWYgKG9wdGlvbnMuZGlzYWJsZUd1aWxkU2VsZWN0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgJmRpc2FibGVfZ3VpbGRfc2VsZWN0PSR7b3B0aW9ucy5kaXNhYmxlR3VpbGRTZWxlY3R9YFxuXG4gIHJldHVybiB1cmxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVPQXV0aDJMaW5rT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiByZXNwb25zZVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBTaG91bGQgYmUgZGVmaW5lZCBvbmx5IGlmIHVzaW5nIGVpdGhlciBPQXV0aDIgYXV0aG9yaXphdGlvbiwgaW1wbGljaXQgb3Igbm90LCBvciBbYWR2YW5jZWQgYm90IGF1dGhvcml6YXRpb25dKGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9vYXV0aDIjYWR2YW5jZWQtYm90LWF1dGhvcml6YXRpb24pXG4gICAqL1xuICByZXNwb25zZVR5cGU/OiAnY29kZScgfCAndG9rZW4nXG4gIC8qKiBUaGUgaWQgb2YgdGhlIGFwcGxpY2F0aW9uICovXG4gIGNsaWVudElkOiBCaWdTdHJpbmdcbiAgLyoqIFRoZSBzY29wZXMgZm9yIHRoZSBhcHBsaWNhdGlvbiAqL1xuICBzY29wZTogT0F1dGgyU2NvcGVbXVxuICAvKipcbiAgICogVGhlIG9wdGlvbmFsIHN0YXRlIGZvciBzZWN1cml0eVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9vYXV0aDIjc3RhdGUtYW5kLXNlY3VyaXR5XG4gICAqL1xuICBzdGF0ZT86IHN0cmluZ1xuICAvKipcbiAgICogVGhlIHJlZGlyZWN0IHVyaSBmb3IgYWZ0ZXIgdGhlIGF1dGhlbnRpY2F0aW9uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFNob3VsZCBiZSBkZWZpbmVkIG9ubHkgaWYgdXNpbmcgZWl0aGVyIE9BdXRoMiBhdXRob3JpemF0aW9uLCBpbXBsaWNpdCBvciBub3QsIG9yIFthZHZhbmNlZCBib3QgYXV0aG9yaXphdGlvbl0oaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL29hdXRoMiNhZHZhbmNlZC1ib3QtYXV0aG9yaXphdGlvbilcbiAgICovXG4gIHJlZGlyZWN0VXJpPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBwcm9tcHQgdG8gZ2l2ZSB0byB0aGUgdXNlclxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiBzZXQgdG8gYG5vbmVgLCBpdCB3aWxsIHNraXAgdGhlIGF1dGhvcml6YXRpb24gc2NyZWVuIGFuZCByZWRpcmVjdCB0aGVtIGJhY2sgdG8geW91ciByZWRpcmVjdCBVUkkgd2l0aG91dCByZXF1ZXN0aW5nIHRoZWlyIGF1dGhvcml6YXRpb24uXG4gICAqIEZvciBwYXNzdGhyb3VnaCBzY29wZXMsIGxpa2UgYm90IGFuZCB3ZWJob29rLmluY29taW5nLCBhdXRob3JpemF0aW9uIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICovXG4gIHByb21wdD86ICdjb25zZW50JyB8ICdub25lJ1xuICAvKipcbiAgICogVGhlIHBlcm1pc3Npb25zIG9mIHRoZSBpbnZpdGVkIGJvdFxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBTaG91bGQgYmUgZGVmaW5lZCBvbmx5IGluIGEgW2JvdCBhdXRob3JpemF0aW9uIGZsb3ddKGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9vYXV0aDIjYm90LWF1dGhvcml6YXRpb24tZmxvdykgb3Igd2l0aCBbYWR2YW5jZWQgYm90IGF1dGhvcml6YXRpb25dKGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9vYXV0aDIjYWR2YW5jZWQtYm90LWF1dGhvcml6YXRpb24pXG4gICAqL1xuICBwZXJtaXNzaW9ucz86IEJpZ1N0cmluZyB8IFBlcm1pc3Npb25TdHJpbmdzW11cbiAgLyoqXG4gICAqIFByZS1maWxscyB0aGUgZHJvcGRvd24gcGlja2VyIHdpdGggYSBndWlsZCBmb3IgdGhlIHVzZXJcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogU2hvdWxkIGJlIGRlZmluZWQgb25seSBpbiBhIFtib3QgYXV0aG9yaXphdGlvbiBmbG93XShodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3Mvb2F1dGgyI2JvdC1hdXRob3JpemF0aW9uLWZsb3cpIG9yIHdpdGggW2FkdmFuY2VkIGJvdCBhdXRob3JpemF0aW9uXShodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3Mvb2F1dGgyI2FkdmFuY2VkLWJvdC1hdXRob3JpemF0aW9uKSBvciB3aXRoIHRoZSBgd2ViaG9vay5pbmNvbWluZ2Agc2NvcGVcbiAgICovXG4gIGd1aWxkSWQ/OiBCaWdTdHJpbmdcbiAgLyoqXG4gICAqIERpc2FsbG93cyB0aGUgdXNlciBmcm9tIGNoYW5naW5nIHRoZSBndWlsZCBkcm9wZG93biBpZiBzZXQgdG8gdHJ1ZVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBTaG91bGQgYmUgZGVmaW5lZCBvbmx5IGluIGEgW2JvdCBhdXRob3JpemF0aW9uIGZsb3ddKGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9vYXV0aDIjYm90LWF1dGhvcml6YXRpb24tZmxvdyksIHdpdGggW2FkdmFuY2VkIGJvdCBhdXRob3JpemF0aW9uXShodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3Mvb2F1dGgyI2FkdmFuY2VkLWJvdC1hdXRob3JpemF0aW9uKSBvciB3aXRoIHRoZSBgd2ViaG9vay5pbmNvbWluZ2Agc2NvcGVcbiAgICovXG4gIGRpc2FibGVHdWlsZFNlbGVjdD86IGJvb2xlYW5cbn1cbiJdLCJuYW1lcyI6WyJjYWxjdWxhdGVCaXRzIiwiY3JlYXRlT0F1dGgyTGluayIsIm9wdGlvbnMiLCJqb2luZWRTY29wZVN0cmluZyIsInNjb3BlIiwiam9pbiIsInVybCIsImNsaWVudElkIiwicmVzcG9uc2VUeXBlIiwic3RhdGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJyZWRpcmVjdFVyaSIsInByb21wdCIsInBlcm1pc3Npb25zIiwiQXJyYXkiLCJpc0FycmF5IiwiZ3VpbGRJZCIsImRpc2FibGVHdWlsZFNlbGVjdCIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsYUFBYSxRQUFRLG1CQUFrQjtBQUVoRCxPQUFPLFNBQVNDLGlCQUFpQkMsT0FBZ0M7SUFDL0QsTUFBTUMsb0JBQW9CRCxRQUFRRSxLQUFLLENBQUNDLElBQUksQ0FBQztJQUU3QyxJQUFJQyxNQUFNLENBQUMsK0NBQStDLEVBQUVKLFFBQVFLLFFBQVEsQ0FBQyxPQUFPLEVBQUVKLGtCQUFrQixDQUFDO0lBRXpHLElBQUlELFFBQVFNLFlBQVksRUFBRUYsT0FBTyxDQUFDLGVBQWUsRUFBRUosUUFBUU0sWUFBWSxDQUFDLENBQUM7SUFDekUsSUFBSU4sUUFBUU8sS0FBSyxFQUFFSCxPQUFPLENBQUMsT0FBTyxFQUFFSSxtQkFBbUJSLFFBQVFPLEtBQUssRUFBRSxDQUFDO0lBQ3ZFLElBQUlQLFFBQVFTLFdBQVcsRUFBRUwsT0FBTyxDQUFDLGNBQWMsRUFBRUksbUJBQW1CUixRQUFRUyxXQUFXLEVBQUUsQ0FBQztJQUMxRixJQUFJVCxRQUFRVSxNQUFNLEVBQUVOLE9BQU8sQ0FBQyxRQUFRLEVBQUVKLFFBQVFVLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELElBQUlWLFFBQVFXLFdBQVcsRUFBRVAsT0FBTyxDQUFDLGFBQWEsRUFBRVEsTUFBTUMsT0FBTyxDQUFDYixRQUFRVyxXQUFXLElBQUliLGNBQWNFLFFBQVFXLFdBQVcsSUFBSVgsUUFBUVcsV0FBVyxDQUFDLENBQUM7SUFDL0ksSUFBSVgsUUFBUWMsT0FBTyxFQUFFVixPQUFPLENBQUMsVUFBVSxFQUFFSixRQUFRYyxPQUFPLENBQUMsQ0FBQztJQUMxRCw0RUFBNEU7SUFDNUUsSUFBSWQsUUFBUWUsa0JBQWtCLEtBQUtDLFdBQVdaLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRUosUUFBUWUsa0JBQWtCLENBQUMsQ0FBQztJQUUxRyxPQUFPWDtBQUNUIn0=
@@ -0,0 +1,17 @@
1
+ import { BitwisePermissionFlags } from '@discordeno/types';
2
+ /** This function converts a bitwise string to permission strings */ export function calculatePermissions(permissionBits) {
3
+ return Object.keys(BitwisePermissionFlags).filter((permission)=>{
4
+ // Since Object.keys() not only returns the permission names but also the bit values we need to return false if it is a Number
5
+ if (Number(permission)) return false;
6
+ // Check if permissionBits has this permission
7
+ return permissionBits & BigInt(BitwisePermissionFlags[permission]);
8
+ });
9
+ }
10
+ /** This function converts an array of permissions into the bitwise string. */ export function calculateBits(permissions) {
11
+ return permissions.reduce((bits, perm)=>{
12
+ bits |= BigInt(BitwisePermissionFlags[perm]);
13
+ return bits;
14
+ }, 0n).toString();
15
+ }
16
+
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wZXJtaXNzaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBlcm1pc3Npb25TdHJpbmdzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBCaXR3aXNlUGVybWlzc2lvbkZsYWdzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5cbi8qKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIGEgYml0d2lzZSBzdHJpbmcgdG8gcGVybWlzc2lvbiBzdHJpbmdzICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlUGVybWlzc2lvbnMocGVybWlzc2lvbkJpdHM6IGJpZ2ludCk6IFBlcm1pc3Npb25TdHJpbmdzW10ge1xuICByZXR1cm4gT2JqZWN0LmtleXMoQml0d2lzZVBlcm1pc3Npb25GbGFncykuZmlsdGVyKChwZXJtaXNzaW9uKSA9PiB7XG4gICAgLy8gU2luY2UgT2JqZWN0LmtleXMoKSBub3Qgb25seSByZXR1cm5zIHRoZSBwZXJtaXNzaW9uIG5hbWVzIGJ1dCBhbHNvIHRoZSBiaXQgdmFsdWVzIHdlIG5lZWQgdG8gcmV0dXJuIGZhbHNlIGlmIGl0IGlzIGEgTnVtYmVyXG4gICAgaWYgKE51bWJlcihwZXJtaXNzaW9uKSkgcmV0dXJuIGZhbHNlXG4gICAgLy8gQ2hlY2sgaWYgcGVybWlzc2lvbkJpdHMgaGFzIHRoaXMgcGVybWlzc2lvblxuICAgIHJldHVybiBwZXJtaXNzaW9uQml0cyAmIEJpZ0ludChCaXR3aXNlUGVybWlzc2lvbkZsYWdzW3Blcm1pc3Npb24gYXMgUGVybWlzc2lvblN0cmluZ3NdKVxuICB9KSBhcyBQZXJtaXNzaW9uU3RyaW5nc1tdXG59XG5cbi8qKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIGFuIGFycmF5IG9mIHBlcm1pc3Npb25zIGludG8gdGhlIGJpdHdpc2Ugc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUJpdHMocGVybWlzc2lvbnM6IFBlcm1pc3Npb25TdHJpbmdzW10pOiBzdHJpbmcge1xuICByZXR1cm4gcGVybWlzc2lvbnNcbiAgICAucmVkdWNlKChiaXRzLCBwZXJtKSA9PiB7XG4gICAgICBiaXRzIHw9IEJpZ0ludChCaXR3aXNlUGVybWlzc2lvbkZsYWdzW3Blcm1dKVxuICAgICAgcmV0dXJuIGJpdHNcbiAgICB9LCAwbilcbiAgICAudG9TdHJpbmcoKVxufVxuIl0sIm5hbWVzIjpbIkJpdHdpc2VQZXJtaXNzaW9uRmxhZ3MiLCJjYWxjdWxhdGVQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25CaXRzIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsInBlcm1pc3Npb24iLCJOdW1iZXIiLCJCaWdJbnQiLCJjYWxjdWxhdGVCaXRzIiwicGVybWlzc2lvbnMiLCJyZWR1Y2UiLCJiaXRzIiwicGVybSIsInRvU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxzQkFBc0IsUUFBUSxvQkFBbUI7QUFFMUQsa0VBQWtFLEdBQ2xFLE9BQU8sU0FBU0MscUJBQXFCQyxjQUFzQjtJQUN6RCxPQUFPQyxPQUFPQyxJQUFJLENBQUNKLHdCQUF3QkssTUFBTSxDQUFDLENBQUNDO1FBQ2pELDhIQUE4SDtRQUM5SCxJQUFJQyxPQUFPRCxhQUFhLE9BQU87UUFDL0IsOENBQThDO1FBQzlDLE9BQU9KLGlCQUFpQk0sT0FBT1Isc0JBQXNCLENBQUNNLFdBQWdDO0lBQ3hGO0FBQ0Y7QUFFQSw0RUFBNEUsR0FDNUUsT0FBTyxTQUFTRyxjQUFjQyxXQUFnQztJQUM1RCxPQUFPQSxZQUNKQyxNQUFNLENBQUMsQ0FBQ0MsTUFBTUM7UUFDYkQsUUFBUUosT0FBT1Isc0JBQXNCLENBQUNhLEtBQUs7UUFDM0MsT0FBT0Q7SUFDVCxHQUFHLEVBQUUsRUFDSkUsUUFBUTtBQUNiIn0=
@@ -0,0 +1,11 @@
1
+ /** Converts an reaction emoji unicode string to the discord required form of name:id */ export function processReactionString(reaction) {
2
+ if (reaction.startsWith('<:')) {
3
+ return reaction.substring(2, reaction.length - 1);
4
+ }
5
+ if (reaction.startsWith('<a:')) {
6
+ return reaction.substring(3, reaction.length - 1);
7
+ }
8
+ return reaction;
9
+ }
10
+
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIENvbnZlcnRzIGFuIHJlYWN0aW9uIGVtb2ppIHVuaWNvZGUgc3RyaW5nIHRvIHRoZSBkaXNjb3JkIHJlcXVpcmVkIGZvcm0gb2YgbmFtZTppZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NSZWFjdGlvblN0cmluZyhyZWFjdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHJlYWN0aW9uLnN0YXJ0c1dpdGgoJzw6JykpIHtcbiAgICByZXR1cm4gcmVhY3Rpb24uc3Vic3RyaW5nKDIsIHJlYWN0aW9uLmxlbmd0aCAtIDEpXG4gIH1cblxuICBpZiAocmVhY3Rpb24uc3RhcnRzV2l0aCgnPGE6JykpIHtcbiAgICByZXR1cm4gcmVhY3Rpb24uc3Vic3RyaW5nKDMsIHJlYWN0aW9uLmxlbmd0aCAtIDEpXG4gIH1cblxuICByZXR1cm4gcmVhY3Rpb25cbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzUmVhY3Rpb25TdHJpbmciLCJyZWFjdGlvbiIsInN0YXJ0c1dpdGgiLCJzdWJzdHJpbmciLCJsZW5ndGgiXSwibWFwcGluZ3MiOiJBQUFBLHNGQUFzRixHQUN0RixPQUFPLFNBQVNBLHNCQUFzQkMsUUFBZ0I7SUFDcEQsSUFBSUEsU0FBU0MsVUFBVSxDQUFDLE9BQU87UUFDN0IsT0FBT0QsU0FBU0UsU0FBUyxDQUFDLEdBQUdGLFNBQVNHLE1BQU0sR0FBRztJQUNqRDtJQUVBLElBQUlILFNBQVNDLFVBQVUsQ0FBQyxRQUFRO1FBQzlCLE9BQU9ELFNBQVNFLFNBQVMsQ0FBQyxHQUFHRixTQUFTRyxNQUFNLEdBQUc7SUFDakQ7SUFFQSxPQUFPSDtBQUNUIn0=
@@ -0,0 +1,21 @@
1
+ import { Buffer } from 'node:buffer';
2
+ const validTokenPrefixes = [
3
+ 'Bot',
4
+ 'Bearer'
5
+ ];
6
+ /** Removes the Bot/Bearer before the token. */ export function removeTokenPrefix(token, type = 'REST') {
7
+ // If no token is provided, throw an error
8
+ if (token === undefined) {
9
+ throw new Error(`The ${type} was not given a token. Please provide a token and try again.`);
10
+ }
11
+ const splittedToken = token.split(' ');
12
+ // If the token does not have a prefix just return token
13
+ if (splittedToken.length < 2 || !validTokenPrefixes.includes(splittedToken[0])) return token;
14
+ // Remove the prefix and return only the token.
15
+ return splittedToken.splice(1).join(' ');
16
+ }
17
+ /** Get the bot id from the bot token. WARNING: Discord staff has mentioned this may not be stable forever. Use at your own risk. However, note for over 5 years this has never broken. */ export function getBotIdFromToken(token) {
18
+ return BigInt(Buffer.from(token.split('.')[0], 'base64').toString());
19
+ }
20
+
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdub2RlOmJ1ZmZlcidcblxuY29uc3QgdmFsaWRUb2tlblByZWZpeGVzID0gWydCb3QnLCAnQmVhcmVyJ11cblxuLyoqIFJlbW92ZXMgdGhlIEJvdC9CZWFyZXIgYmVmb3JlIHRoZSB0b2tlbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUb2tlblByZWZpeCh0b2tlbj86IHN0cmluZywgdHlwZTogJ0dBVEVXQVknIHwgJ1JFU1QnID0gJ1JFU1QnKTogc3RyaW5nIHtcbiAgLy8gSWYgbm8gdG9rZW4gaXMgcHJvdmlkZWQsIHRocm93IGFuIGVycm9yXG4gIGlmICh0b2tlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgJHt0eXBlfSB3YXMgbm90IGdpdmVuIGEgdG9rZW4uIFBsZWFzZSBwcm92aWRlIGEgdG9rZW4gYW5kIHRyeSBhZ2Fpbi5gKVxuICB9XG5cbiAgY29uc3Qgc3BsaXR0ZWRUb2tlbiA9IHRva2VuLnNwbGl0KCcgJylcblxuICAvLyBJZiB0aGUgdG9rZW4gZG9lcyBub3QgaGF2ZSBhIHByZWZpeCBqdXN0IHJldHVybiB0b2tlblxuICBpZiAoc3BsaXR0ZWRUb2tlbi5sZW5ndGggPCAyIHx8ICF2YWxpZFRva2VuUHJlZml4ZXMuaW5jbHVkZXMoc3BsaXR0ZWRUb2tlblswXSkpIHJldHVybiB0b2tlblxuICAvLyBSZW1vdmUgdGhlIHByZWZpeCBhbmQgcmV0dXJuIG9ubHkgdGhlIHRva2VuLlxuICByZXR1cm4gc3BsaXR0ZWRUb2tlbi5zcGxpY2UoMSkuam9pbignICcpXG59XG5cbi8qKiBHZXQgdGhlIGJvdCBpZCBmcm9tIHRoZSBib3QgdG9rZW4uIFdBUk5JTkc6IERpc2NvcmQgc3RhZmYgaGFzIG1lbnRpb25lZCB0aGlzIG1heSBub3QgYmUgc3RhYmxlIGZvcmV2ZXIuIFVzZSBhdCB5b3VyIG93biByaXNrLiBIb3dldmVyLCBub3RlIGZvciBvdmVyIDUgeWVhcnMgdGhpcyBoYXMgbmV2ZXIgYnJva2VuLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJvdElkRnJvbVRva2VuKHRva2VuOiBzdHJpbmcpOiBiaWdpbnQge1xuICByZXR1cm4gQmlnSW50KEJ1ZmZlci5mcm9tKHRva2VuLnNwbGl0KCcuJylbMF0sICdiYXNlNjQnKS50b1N0cmluZygpKVxufVxuIl0sIm5hbWVzIjpbIkJ1ZmZlciIsInZhbGlkVG9rZW5QcmVmaXhlcyIsInJlbW92ZVRva2VuUHJlZml4IiwidG9rZW4iLCJ0eXBlIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJzcGxpdHRlZFRva2VuIiwic3BsaXQiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInNwbGljZSIsImpvaW4iLCJnZXRCb3RJZEZyb21Ub2tlbiIsIkJpZ0ludCIsImZyb20iLCJ0b1N0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsTUFBTSxRQUFRLGNBQWE7QUFFcEMsTUFBTUMscUJBQXFCO0lBQUM7SUFBTztDQUFTO0FBRTVDLDZDQUE2QyxHQUM3QyxPQUFPLFNBQVNDLGtCQUFrQkMsS0FBYyxFQUFFQyxPQUEyQixNQUFNO0lBQ2pGLDBDQUEwQztJQUMxQyxJQUFJRCxVQUFVRSxXQUFXO1FBQ3ZCLE1BQU0sSUFBSUMsTUFBTSxDQUFDLElBQUksRUFBRUYsS0FBSyw2REFBNkQsQ0FBQztJQUM1RjtJQUVBLE1BQU1HLGdCQUFnQkosTUFBTUssS0FBSyxDQUFDO0lBRWxDLHdEQUF3RDtJQUN4RCxJQUFJRCxjQUFjRSxNQUFNLEdBQUcsS0FBSyxDQUFDUixtQkFBbUJTLFFBQVEsQ0FBQ0gsYUFBYSxDQUFDLEVBQUUsR0FBRyxPQUFPSjtJQUN2RiwrQ0FBK0M7SUFDL0MsT0FBT0ksY0FBY0ksTUFBTSxDQUFDLEdBQUdDLElBQUksQ0FBQztBQUN0QztBQUVBLHdMQUF3TCxHQUN4TCxPQUFPLFNBQVNDLGtCQUFrQlYsS0FBYTtJQUM3QyxPQUFPVyxPQUFPZCxPQUFPZSxJQUFJLENBQUNaLE1BQU1LLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVVRLFFBQVE7QUFDbkUifQ==
@@ -0,0 +1,18 @@
1
+ import { hasProperty } from './utils.js';
2
+ export function isGetMessagesAfter(options) {
3
+ return hasProperty(options, 'after');
4
+ }
5
+ export function isGetMessagesBefore(options) {
6
+ return hasProperty(options, 'before');
7
+ }
8
+ export function isGetMessagesAround(options) {
9
+ return hasProperty(options, 'around');
10
+ }
11
+ export function isGetMessagesLimit(options) {
12
+ return hasProperty(options, 'limit');
13
+ }
14
+ export function isInviteWithMetadata(options) {
15
+ return !hasProperty(options, 'channel_id');
16
+ }
17
+
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlZ3VhcmRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRGlzY29yZEludml0ZUNyZWF0ZSxcbiAgRGlzY29yZEludml0ZU1ldGFkYXRhLFxuICBHZXRNZXNzYWdlc0FmdGVyLFxuICBHZXRNZXNzYWdlc0Fyb3VuZCxcbiAgR2V0TWVzc2FnZXNCZWZvcmUsXG4gIEdldE1lc3NhZ2VzTGltaXQsXG4gIEdldE1lc3NhZ2VzT3B0aW9ucyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBoYXNQcm9wZXJ0eSB9IGZyb20gJy4vdXRpbHMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dldE1lc3NhZ2VzQWZ0ZXIob3B0aW9uczogR2V0TWVzc2FnZXNPcHRpb25zKTogb3B0aW9ucyBpcyBHZXRNZXNzYWdlc0FmdGVyIHtcbiAgcmV0dXJuIGhhc1Byb3BlcnR5KG9wdGlvbnMsICdhZnRlcicpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dldE1lc3NhZ2VzQmVmb3JlKG9wdGlvbnM6IEdldE1lc3NhZ2VzT3B0aW9ucyk6IG9wdGlvbnMgaXMgR2V0TWVzc2FnZXNCZWZvcmUge1xuICByZXR1cm4gaGFzUHJvcGVydHkob3B0aW9ucywgJ2JlZm9yZScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dldE1lc3NhZ2VzQXJvdW5kKG9wdGlvbnM6IEdldE1lc3NhZ2VzT3B0aW9ucyk6IG9wdGlvbnMgaXMgR2V0TWVzc2FnZXNBcm91bmQge1xuICByZXR1cm4gaGFzUHJvcGVydHkob3B0aW9ucywgJ2Fyb3VuZCcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dldE1lc3NhZ2VzTGltaXQob3B0aW9uczogR2V0TWVzc2FnZXNPcHRpb25zKTogb3B0aW9ucyBpcyBHZXRNZXNzYWdlc0xpbWl0IHtcbiAgcmV0dXJuIGhhc1Byb3BlcnR5KG9wdGlvbnMsICdsaW1pdCcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ludml0ZVdpdGhNZXRhZGF0YShvcHRpb25zOiBEaXNjb3JkSW52aXRlQ3JlYXRlIHwgRGlzY29yZEludml0ZU1ldGFkYXRhKTogb3B0aW9ucyBpcyBEaXNjb3JkSW52aXRlTWV0YWRhdGEge1xuICByZXR1cm4gIWhhc1Byb3BlcnR5KG9wdGlvbnMsICdjaGFubmVsX2lkJylcbn1cbiJdLCJuYW1lcyI6WyJoYXNQcm9wZXJ0eSIsImlzR2V0TWVzc2FnZXNBZnRlciIsIm9wdGlvbnMiLCJpc0dldE1lc3NhZ2VzQmVmb3JlIiwiaXNHZXRNZXNzYWdlc0Fyb3VuZCIsImlzR2V0TWVzc2FnZXNMaW1pdCIsImlzSW52aXRlV2l0aE1ldGFkYXRhIl0sIm1hcHBpbmdzIjoiQUFTQSxTQUFTQSxXQUFXLFFBQVEsYUFBWTtBQUV4QyxPQUFPLFNBQVNDLG1CQUFtQkMsT0FBMkI7SUFDNUQsT0FBT0YsWUFBWUUsU0FBUztBQUM5QjtBQUVBLE9BQU8sU0FBU0Msb0JBQW9CRCxPQUEyQjtJQUM3RCxPQUFPRixZQUFZRSxTQUFTO0FBQzlCO0FBRUEsT0FBTyxTQUFTRSxvQkFBb0JGLE9BQTJCO0lBQzdELE9BQU9GLFlBQVlFLFNBQVM7QUFDOUI7QUFFQSxPQUFPLFNBQVNHLG1CQUFtQkgsT0FBMkI7SUFDNUQsT0FBT0YsWUFBWUUsU0FBUztBQUM5QjtBQUVBLE9BQU8sU0FBU0kscUJBQXFCSixPQUFvRDtJQUN2RixPQUFPLENBQUNGLFlBQVlFLFNBQVM7QUFDL0IifQ==
@@ -0,0 +1,9 @@
1
+ import { encode } from './base64.js';
2
+ /** Converts a url to base 64. Useful for example, uploading/creating server emojis. */ export async function urlToBase64(url) {
3
+ const buffer = await fetch(url).then(async (res)=>await res.arrayBuffer());
4
+ const imageStr = encode(buffer);
5
+ const type = url.substring(url.lastIndexOf('.') + 1);
6
+ return `data:image/${type};base64,${imageStr}`;
7
+ }
8
+
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cmxUb0Jhc2U2NC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbmNvZGUgfSBmcm9tICcuL2Jhc2U2NC5qcydcblxuLyoqIENvbnZlcnRzIGEgdXJsIHRvIGJhc2UgNjQuIFVzZWZ1bCBmb3IgZXhhbXBsZSwgdXBsb2FkaW5nL2NyZWF0aW5nIHNlcnZlciBlbW9qaXMuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXJsVG9CYXNlNjQodXJsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBidWZmZXIgPSBhd2FpdCBmZXRjaCh1cmwpLnRoZW4oYXN5bmMgKHJlcykgPT4gYXdhaXQgcmVzLmFycmF5QnVmZmVyKCkpXG4gIGNvbnN0IGltYWdlU3RyID0gZW5jb2RlKGJ1ZmZlcilcbiAgY29uc3QgdHlwZSA9IHVybC5zdWJzdHJpbmcodXJsLmxhc3RJbmRleE9mKCcuJykgKyAxKVxuICByZXR1cm4gYGRhdGE6aW1hZ2UvJHt0eXBlfTtiYXNlNjQsJHtpbWFnZVN0cn1gXG59XG4iXSwibmFtZXMiOlsiZW5jb2RlIiwidXJsVG9CYXNlNjQiLCJ1cmwiLCJidWZmZXIiLCJmZXRjaCIsInRoZW4iLCJyZXMiLCJhcnJheUJ1ZmZlciIsImltYWdlU3RyIiwidHlwZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxNQUFNLFFBQVEsY0FBYTtBQUVwQyxxRkFBcUYsR0FDckYsT0FBTyxlQUFlQyxZQUFZQyxHQUFXO0lBQzNDLE1BQU1DLFNBQVMsTUFBTUMsTUFBTUYsS0FBS0csSUFBSSxDQUFDLE9BQU9DLE1BQVEsTUFBTUEsSUFBSUMsV0FBVztJQUN6RSxNQUFNQyxXQUFXUixPQUFPRztJQUN4QixNQUFNTSxPQUFPUCxJQUFJUSxTQUFTLENBQUNSLElBQUlTLFdBQVcsQ0FBQyxPQUFPO0lBQ2xELE9BQU8sQ0FBQyxXQUFXLEVBQUVGLEtBQUssUUFBUSxFQUFFRCxTQUFTLENBQUM7QUFDaEQifQ==
@@ -0,0 +1,15 @@
1
+ /** Pause the execution for a given amount of milliseconds. */ export async function delay(ms) {
2
+ // eslint-disable-next-line @typescript-eslint/return-await
3
+ return new Promise((resolve)=>setTimeout(()=>{
4
+ resolve();
5
+ }, ms));
6
+ }
7
+ // Typescript is not so good as we developers so we need this little utility function to help it out
8
+ // Taken from https://fettblog.eu/typescript-hasownproperty/
9
+ /** TS save way to check if a property exists in an object */ // eslint-disable-next-line @typescript-eslint/ban-types
10
+ export function hasProperty(obj, prop) {
11
+ // eslint-disable-next-line no-prototype-builtins
12
+ return obj.hasOwnProperty(prop);
13
+ }
14
+
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUGF1c2UgdGhlIGV4ZWN1dGlvbiBmb3IgYSBnaXZlbiBhbW91bnQgb2YgbWlsbGlzZWNvbmRzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGF5KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXR1cm4tYXdhaXRcbiAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlKTogTm9kZUpTLlRpbWVvdXQgPT5cbiAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuICAgICAgICByZXNvbHZlKClcbiAgICAgIH0sIG1zKSxcbiAgKVxufVxuXG4vLyBUeXBlc2NyaXB0IGlzIG5vdCBzbyBnb29kIGFzIHdlIGRldmVsb3BlcnMgc28gd2UgbmVlZCB0aGlzIGxpdHRsZSB1dGlsaXR5IGZ1bmN0aW9uIHRvIGhlbHAgaXQgb3V0XG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZmV0dGJsb2cuZXUvdHlwZXNjcmlwdC1oYXNvd25wcm9wZXJ0eS9cbi8qKiBUUyBzYXZlIHdheSB0byBjaGVjayBpZiBhIHByb3BlcnR5IGV4aXN0cyBpbiBhbiBvYmplY3QgKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG5leHBvcnQgZnVuY3Rpb24gaGFzUHJvcGVydHk8VCBleHRlbmRzIHt9LCBZIGV4dGVuZHMgUHJvcGVydHlLZXkgPSBzdHJpbmc+KG9iajogVCwgcHJvcDogWSk6IG9iaiBpcyBUICYgUmVjb3JkPFksIHVua25vd24+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KHByb3ApXG59XG4iXSwibmFtZXMiOlsiZGVsYXkiLCJtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsImhhc1Byb3BlcnR5Iiwib2JqIiwicHJvcCIsImhhc093blByb3BlcnR5Il0sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQsR0FDNUQsT0FBTyxlQUFlQSxNQUFNQyxFQUFVO0lBQ3BDLDJEQUEyRDtJQUMzRCxPQUFPLElBQUlDLFFBQ1QsQ0FBQ0MsVUFDQ0MsV0FBVztZQUNURDtRQUNGLEdBQUdGO0FBRVQ7QUFFQSxvR0FBb0c7QUFDcEcsNERBQTREO0FBQzVELDJEQUEyRCxHQUMzRCx3REFBd0Q7QUFDeEQsT0FBTyxTQUFTSSxZQUEwREMsR0FBTSxFQUFFQyxJQUFPO0lBQ3ZGLGlEQUFpRDtJQUNqRCxPQUFPRCxJQUFJRSxjQUFjLENBQUNEO0FBQzVCIn0=
@@ -9,10 +9,10 @@ export declare class Collection<K, V> extends Map<K, V> {
9
9
  maxSize: number | undefined;
10
10
  /** Handler to remove items from the collection every so often. */
11
11
  sweeper: (CollectionSweeper<K, V> & {
12
- intervalId?: NodeJS.Timer;
12
+ intervalId?: NodeJS.Timeout;
13
13
  }) | undefined;
14
14
  constructor(entries?: (ReadonlyArray<readonly [K, V]> | null) | Map<K, V>, options?: CollectionOptions<K, V>);
15
- startSweeper(options: CollectionSweeper<K, V>): NodeJS.Timer;
15
+ startSweeper(options: CollectionSweeper<K, V>): NodeJS.Timeout;
16
16
  stopSweeper(): void;
17
17
  changeSweeperInterval(newInterval: number): void;
18
18
  changeSweeperFilter(newFilter: (value: V, key: K, bot: PlaceHolderBot) => boolean): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../src/Collection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/base64.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAyBzD;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAuB/C"}
@@ -0,0 +1,43 @@
1
+ /// <reference types="node" />
2
+ export declare class LeakyBucket implements LeakyBucketOptions {
3
+ max: number;
4
+ refillInterval: number;
5
+ refillAmount: number;
6
+ /** The amount of requests that have been used up already. */
7
+ used: number;
8
+ /** The queue of requests to acquire an available request. Mapped by <shardId, resolve()> */
9
+ queue: Array<(value: void | PromiseLike<void>) => void>;
10
+ /** Whether or not the queue is already processing. */
11
+ processing: boolean;
12
+ /** The timeout id for the timer to reduce the used amount by the refill amount. */
13
+ timeoutId?: NodeJS.Timeout;
14
+ /** The timestamp in milliseconds when the next refill is scheduled. */
15
+ refillsAt?: number;
16
+ constructor(options?: LeakyBucketOptions);
17
+ /** The amount of requests that still remain. */
18
+ get remaining(): number;
19
+ /** Refills the bucket as needed. */
20
+ refillBucket(): void;
21
+ /** Begin processing the queue. */
22
+ processQueue(): Promise<void>;
23
+ /** Pauses the execution until the request is available to be made. */
24
+ acquire(highPriority?: boolean): Promise<void>;
25
+ }
26
+ export interface LeakyBucketOptions {
27
+ /**
28
+ * Max requests allowed at once.
29
+ * @default 1
30
+ */
31
+ max?: number;
32
+ /**
33
+ * Interval in milliseconds between refills.
34
+ * @default 5000
35
+ */
36
+ refillInterval?: number;
37
+ /**
38
+ * Amount of requests to refill at each interval.
39
+ * @default 1
40
+ */
41
+ refillAmount?: number;
42
+ }
43
+ //# sourceMappingURL=bucket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucket.d.ts","sourceRoot":"","sources":["../../src/bucket.ts"],"names":[],"mappings":";AAGA,qBAAa,WAAY,YAAW,kBAAkB;IACpD,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IAEpB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAI;IAChB,4FAA4F;IAC5F,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAK;IAC5D,sDAAsD;IACtD,UAAU,EAAE,OAAO,CAAQ;IAC3B,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;IAC1B,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAA;gBAEN,OAAO,CAAC,EAAE,kBAAkB;IAMxC,gDAAgD;IAChD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,oCAAoC;IACpC,YAAY,IAAI,IAAI;IAkBpB,kCAAkC;IAC5B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAmDnC,sEAAsE;IAChE,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAWrD;AAED,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB"}
@@ -0,0 +1,146 @@
1
+ import type { DiscordEmbed, DiscordEmbedAuthor, DiscordEmbedField, DiscordEmbedFooter, DiscordEmbedImage, DiscordEmbedThumbnail, DiscordEmbedVideo } from '@discordeno/types';
2
+ /**
3
+ * A builder to help create Discord embeds.
4
+ *
5
+ * @export
6
+ * @class EmbedsBuilder
7
+ * @typedef {EmbedsBuilder}
8
+ * @extends {Array<DiscordEmbed>}
9
+ * @example
10
+ * const embeds = new EmbedBuilder()
11
+ * .setTitle('My Embed')
12
+ * .setDescription('This is my new embed')
13
+ * .newEmbed()
14
+ * .setTitle('My Second Embed')
15
+ */
16
+ export declare class EmbedsBuilder extends Array<DiscordEmbed> {
17
+ #private;
18
+ /**
19
+ * Adds a new field to the embed fields array.
20
+ *
21
+ * @param {string} name - Field name
22
+ * @param {string} value - Field value
23
+ * @param {?boolean} [inline=false] - Field should be inline or not.
24
+ * @returns {EmbedsBuilder}
25
+ */
26
+ addField(name: string, value: string, inline?: boolean): EmbedsBuilder;
27
+ /**
28
+ * Creates a blank embed.
29
+ *
30
+ * @returns {EmbedsBuilder}
31
+ */
32
+ newEmbed(): EmbedsBuilder;
33
+ /**
34
+ * Set the current embed author.
35
+ *
36
+ * @param {string} name - Name of the author
37
+ * @param {?Omit<DiscordEmbedAuthor, 'name'>} [options] - Extra author options
38
+ * @returns {EmbedsBuilder}
39
+ */
40
+ setAuthor(name: string, options?: Omit<DiscordEmbedAuthor, 'name'>): EmbedsBuilder;
41
+ /**
42
+ * Set the color on the side of the current embed.
43
+ *
44
+ * @param {(number | string)} color - The color, in base16 or hex color code
45
+ * @returns {EmbedsBuilder}
46
+ */
47
+ setColor(color: number | string): EmbedsBuilder;
48
+ /**
49
+ * Set the current embed to a different index.
50
+ *
51
+ * WARNING: Only use this method if you know what you're doing. Make sure to set it back to the latest when you're done.
52
+ *
53
+ * @param {?number} [index] - The index of the embed in the EmbedsBuilder array
54
+ * @returns {EmbedsBuilder}
55
+ */
56
+ setCurrentEmbed(index?: number): EmbedsBuilder;
57
+ /**
58
+ * Set the description of the current embed.
59
+ *
60
+ * @param {string} description - Description
61
+ * @returns {EmbedsBuilder}
62
+ */
63
+ setDescription(description: string): EmbedsBuilder;
64
+ /**
65
+ * Overwrite all fields on the current embed.
66
+ *
67
+ * @param {DiscordEmbedField[]} fields
68
+ * @returns {EmbedsBuilder}
69
+ */
70
+ setFields(fields: DiscordEmbedField[]): EmbedsBuilder;
71
+ /**
72
+ * Set the footer in the current embed.
73
+ *
74
+ * @param {string} text - The text to display in the footer
75
+ * @param {?Omit<DiscordEmbedFooter, 'text'>} [options]
76
+ * @returns {EmbedsBuilder}
77
+ */
78
+ setFooter(text: string, options?: Omit<DiscordEmbedFooter, 'text'>): EmbedsBuilder;
79
+ /**
80
+ * Set the image in the current embed.
81
+ *
82
+ * @param {string} url - URL of the image
83
+ * @param {?Omit<DiscordEmbedImage, 'url'>} [options]
84
+ * @returns {EmbedsBuilder}
85
+ */
86
+ setImage(url: string, options?: Omit<DiscordEmbedImage, 'url'>): EmbedsBuilder;
87
+ /**
88
+ * Set the provider of the current embed.
89
+ *
90
+ * @param {string} name
91
+ * @param {?string} [url]
92
+ * @returns {EmbedsBuilder}
93
+ */
94
+ setProvider(name: string, url?: string): EmbedsBuilder;
95
+ /**
96
+ * Set the color of the current embed to a random value.
97
+ *
98
+ * @returns {EmbedsBuilder}
99
+ */
100
+ setRandomColor(): EmbedsBuilder;
101
+ /**
102
+ * Set the title of the current embed.
103
+ *
104
+ * @param {string} title
105
+ * @param {?string} [url]
106
+ * @returns {EmbedsBuilder}
107
+ */
108
+ setTitle(title: string, url?: string): EmbedsBuilder;
109
+ /**
110
+ * Set the timestamp of the current embed.
111
+ *
112
+ * @param {?(string | number | Date)} [timestamp]
113
+ * @returns {EmbedsBuilder}
114
+ */
115
+ setTimestamp(timestamp?: string | number | Date): EmbedsBuilder;
116
+ /**
117
+ * Set the thumbnail of the current embed.
118
+ *
119
+ * @param {string} url - URL of the image
120
+ * @param {?Omit<DiscordEmbedThumbnail, 'url'>} [options]
121
+ * @returns {EmbedsBuilder}
122
+ */
123
+ setThumbnail(url: string, options?: Omit<DiscordEmbedThumbnail, 'url'>): EmbedsBuilder;
124
+ /**
125
+ * Set the URL of the current embed title.
126
+ *
127
+ * @param {string} url
128
+ * @returns {EmbedsBuilder}
129
+ */
130
+ setUrl(url: string): EmbedsBuilder;
131
+ /**
132
+ * Set the video of the current embed.
133
+ *
134
+ * @param {string} url
135
+ * @param {?Omit<DiscordEmbedVideo, 'url'>} [options]
136
+ * @returns {EmbedsBuilder}
137
+ */
138
+ setVideo(url: string, options?: Omit<DiscordEmbedVideo, 'url'>): EmbedsBuilder;
139
+ /**
140
+ * Validate all embeds available against current known Discord limits to help prevent bad requests.
141
+ *
142
+ * @returns {EmbedsBuilder}
143
+ */
144
+ validate(): EmbedsBuilder;
145
+ }
146
+ //# sourceMappingURL=embeds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeds.d.ts","sourceRoot":"","sources":["../../../src/builders/embeds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,mBAAmB,CAAA;AAE1B;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAc,SAAQ,KAAK,CAAC,YAAY,CAAC;;IAGpD;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,aAAa;IActE;;;;OAIG;IACH,QAAQ,IAAI,aAAa;IAWzB;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,aAAa;IAUlF;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa;IAW/C;;;;;;;OAOG;IACH,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa;IAgB9C;;;;;OAKG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa;IAMlD;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,aAAa;IAMrD;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,aAAa;IAUlF;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG,aAAa;IAU9E;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa;IAStD;;;;OAIG;IACH,cAAc,IAAI,aAAa;IAI/B;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa;IAUpD;;;;;OAKG;IACH,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,aAAa;IAM/D;;;;;;OAMG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,GAAG,aAAa;IAUtF;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAMlC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG,aAAa;IAU9E;;;;OAIG;IACH,QAAQ,IAAI,aAAa;CA4F1B"}
@@ -0,0 +1,4 @@
1
+ import { EmbedsBuilder } from './builders/embeds.js';
2
+ export * from './builders/embeds.js';
3
+ export declare const createEmbeds: () => EmbedsBuilder;
4
+ //# sourceMappingURL=builders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,cAAc,sBAAsB,CAAA;AAEpC,eAAO,MAAM,YAAY,QAAO,aAAoC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { Camelize, Snakelize } from '@discordeno/types';
2
+ export declare function camelize<T>(object: T): Camelize<T>;
3
+ export declare function snakelize<T>(object: T): Snakelize<T>;
4
+ export declare function snakeToCamelCase(str: string): string;
5
+ export declare function camelToSnakeCase(str: string): string;
6
+ //# sourceMappingURL=casing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"casing.d.ts","sourceRoot":"","sources":["../../src/casing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE5D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAclD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAcpD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAepD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAapD"}