@discordeno/utils 21.0.1-next.fca0b40 → 22.0.1-next.0090dd2
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.
- package/dist/Collection.d.ts.map +1 -0
- package/dist/Collection.js +112 -0
- package/dist/{types/base64.d.ts → base64.d.ts} +7 -1
- package/dist/base64.d.ts.map +1 -0
- package/dist/base64.js +339 -0
- package/dist/bucket.d.ts.map +1 -0
- package/dist/bucket.js +81 -0
- package/dist/builders/embeds.d.ts.map +1 -0
- package/dist/builders/embeds.js +305 -0
- package/dist/builders.d.ts.map +1 -0
- package/dist/builders.js +5 -0
- package/dist/casing.d.ts.map +1 -0
- package/dist/casing.js +53 -0
- package/dist/colors.d.ts.map +1 -0
- package/dist/colors.js +467 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +3 -0
- package/dist/hash.d.ts.map +1 -0
- package/dist/hash.js +19 -0
- package/dist/{types/images.d.ts → images.d.ts} +40 -64
- package/dist/images.d.ts.map +1 -0
- package/dist/images.js +228 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +115 -0
- package/dist/oauth2.d.ts +107 -0
- package/dist/oauth2.d.ts.map +1 -0
- package/dist/oauth2.js +48 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +17 -0
- package/dist/reactions.d.ts.map +1 -0
- package/dist/{esm/reactions.js → reactions.js} +1 -1
- package/dist/snowflakes.d.ts.map +1 -0
- package/dist/snowflakes.js +11 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +20 -0
- package/dist/{types/typeguards.d.ts → typeguards.d.ts} +1 -2
- package/dist/typeguards.d.ts.map +1 -0
- package/dist/typeguards.js +18 -0
- package/dist/urlToBase64.d.ts.map +1 -0
- package/dist/urlToBase64.js +9 -0
- package/dist/urls.d.ts.map +1 -0
- package/dist/urls.js +11 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +21 -0
- package/package.json +21 -30
- package/dist/cjs/Collection.cjs +0 -122
- package/dist/cjs/base64.cjs +0 -276
- package/dist/cjs/bucket.cjs +0 -96
- package/dist/cjs/builders/embeds.cjs +0 -306
- package/dist/cjs/builders.cjs +0 -27
- package/dist/cjs/casing.cjs +0 -79
- package/dist/cjs/colors.cjs +0 -456
- package/dist/cjs/constants.cjs +0 -13
- package/dist/cjs/hash.cjs +0 -37
- package/dist/cjs/images.cjs +0 -149
- package/dist/cjs/index.cjs +0 -38
- package/dist/cjs/logger.cjs +0 -139
- package/dist/cjs/oauth2.cjs +0 -26
- package/dist/cjs/permissions.cjs +0 -35
- package/dist/cjs/reactions.cjs +0 -21
- package/dist/cjs/snowflakes.cjs +0 -32
- package/dist/cjs/token.cjs +0 -38
- package/dist/cjs/typeguards.cjs +0 -52
- package/dist/cjs/urlToBase64.cjs +0 -19
- package/dist/cjs/urls.cjs +0 -32
- package/dist/cjs/utils.cjs +0 -40
- package/dist/esm/Collection.js +0 -112
- package/dist/esm/base64.js +0 -262
- package/dist/esm/bucket.js +0 -81
- package/dist/esm/builders/embeds.js +0 -305
- package/dist/esm/builders.js +0 -5
- package/dist/esm/casing.js +0 -55
- package/dist/esm/colors.js +0 -467
- package/dist/esm/constants.js +0 -3
- package/dist/esm/hash.js +0 -19
- package/dist/esm/images.js +0 -204
- package/dist/esm/index.js +0 -21
- package/dist/esm/logger.js +0 -115
- package/dist/esm/oauth2.js +0 -16
- package/dist/esm/permissions.js +0 -17
- package/dist/esm/snowflakes.js +0 -11
- package/dist/esm/token.js +0 -20
- package/dist/esm/typeguards.js +0 -22
- package/dist/esm/urlToBase64.js +0 -9
- package/dist/esm/urls.js +0 -11
- package/dist/esm/utils.js +0 -21
- package/dist/types/Collection.d.ts.map +0 -1
- package/dist/types/base64.d.ts.map +0 -1
- package/dist/types/bucket.d.ts.map +0 -1
- package/dist/types/builders/embeds.d.ts.map +0 -1
- package/dist/types/builders.d.ts.map +0 -1
- package/dist/types/casing.d.ts.map +0 -1
- package/dist/types/colors.d.ts.map +0 -1
- package/dist/types/constants.d.ts +0 -2
- package/dist/types/constants.d.ts.map +0 -1
- package/dist/types/hash.d.ts.map +0 -1
- package/dist/types/images.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/logger.d.ts.map +0 -1
- package/dist/types/oauth2.d.ts +0 -69
- package/dist/types/oauth2.d.ts.map +0 -1
- package/dist/types/permissions.d.ts.map +0 -1
- package/dist/types/reactions.d.ts.map +0 -1
- package/dist/types/snowflakes.d.ts.map +0 -1
- package/dist/types/token.d.ts.map +0 -1
- package/dist/types/typeguards.d.ts.map +0 -1
- package/dist/types/urlToBase64.d.ts.map +0 -1
- package/dist/types/urls.d.ts.map +0 -1
- package/dist/types/utils.d.ts.map +0 -1
- /package/dist/{types/Collection.d.ts → Collection.d.ts} +0 -0
- /package/dist/{types/bucket.d.ts → bucket.d.ts} +0 -0
- /package/dist/{types/builders → builders}/embeds.d.ts +0 -0
- /package/dist/{types/builders.d.ts → builders.d.ts} +0 -0
- /package/dist/{types/casing.d.ts → casing.d.ts} +0 -0
- /package/dist/{types/colors.d.ts → colors.d.ts} +0 -0
- /package/dist/{types/hash.d.ts → hash.d.ts} +0 -0
- /package/dist/{types/index.d.ts → index.d.ts} +0 -0
- /package/dist/{types/logger.d.ts → logger.d.ts} +0 -0
- /package/dist/{types/permissions.d.ts → permissions.d.ts} +0 -0
- /package/dist/{types/reactions.d.ts → reactions.d.ts} +0 -0
- /package/dist/{types/snowflakes.d.ts → snowflakes.d.ts} +0 -0
- /package/dist/{types/token.d.ts → token.d.ts} +0 -0
- /package/dist/{types/urlToBase64.d.ts → urlToBase64.d.ts} +0 -0
- /package/dist/{types/urls.d.ts → urls.d.ts} +0 -0
- /package/dist/{types/utils.d.ts → utils.d.ts} +0 -0
package/dist/logger.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { bgBrightMagenta, black, bold, cyan, gray, italic, red, yellow } from './colors.js';
|
|
2
|
+
export var LogLevels = /*#__PURE__*/ function(LogLevels) {
|
|
3
|
+
LogLevels[LogLevels["Debug"] = 0] = "Debug";
|
|
4
|
+
LogLevels[LogLevels["Info"] = 1] = "Info";
|
|
5
|
+
LogLevels[LogLevels["Warn"] = 2] = "Warn";
|
|
6
|
+
LogLevels[LogLevels["Error"] = 3] = "Error";
|
|
7
|
+
LogLevels[LogLevels["Fatal"] = 4] = "Fatal";
|
|
8
|
+
return LogLevels;
|
|
9
|
+
}({});
|
|
10
|
+
const prefixes = new Map([
|
|
11
|
+
[
|
|
12
|
+
0,
|
|
13
|
+
'DEBUG'
|
|
14
|
+
],
|
|
15
|
+
[
|
|
16
|
+
1,
|
|
17
|
+
'INFO'
|
|
18
|
+
],
|
|
19
|
+
[
|
|
20
|
+
2,
|
|
21
|
+
'WARN'
|
|
22
|
+
],
|
|
23
|
+
[
|
|
24
|
+
3,
|
|
25
|
+
'ERROR'
|
|
26
|
+
],
|
|
27
|
+
[
|
|
28
|
+
4,
|
|
29
|
+
'FATAL'
|
|
30
|
+
]
|
|
31
|
+
]);
|
|
32
|
+
const noColor = (msg)=>msg;
|
|
33
|
+
const colorFunctions = new Map([
|
|
34
|
+
[
|
|
35
|
+
0,
|
|
36
|
+
gray
|
|
37
|
+
],
|
|
38
|
+
[
|
|
39
|
+
1,
|
|
40
|
+
cyan
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
2,
|
|
44
|
+
yellow
|
|
45
|
+
],
|
|
46
|
+
[
|
|
47
|
+
3,
|
|
48
|
+
(str)=>red(str)
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
4,
|
|
52
|
+
(str)=>red(bold(italic(str)))
|
|
53
|
+
]
|
|
54
|
+
]);
|
|
55
|
+
export function createLogger({ logLevel = 1, name } = {}) {
|
|
56
|
+
function log(level, ...args) {
|
|
57
|
+
if (level < logLevel) return;
|
|
58
|
+
let color = colorFunctions.get(level);
|
|
59
|
+
if (!color) color = noColor;
|
|
60
|
+
const date = new Date();
|
|
61
|
+
const log1 = [
|
|
62
|
+
bgBrightMagenta(black(`[${date.toLocaleDateString()} ${date.toLocaleTimeString()}]`)),
|
|
63
|
+
color(prefixes.get(level) ?? 'DEBUG'),
|
|
64
|
+
name ? `${name} >` : '>',
|
|
65
|
+
...args
|
|
66
|
+
];
|
|
67
|
+
switch(level){
|
|
68
|
+
case 0:
|
|
69
|
+
return console.debug(...log1);
|
|
70
|
+
case 1:
|
|
71
|
+
return console.info(...log1);
|
|
72
|
+
case 2:
|
|
73
|
+
return console.warn(...log1);
|
|
74
|
+
case 3:
|
|
75
|
+
return console.error(...log1);
|
|
76
|
+
case 4:
|
|
77
|
+
return console.error(...log1);
|
|
78
|
+
default:
|
|
79
|
+
return console.log(...log1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function setLevel(level) {
|
|
83
|
+
logLevel = level;
|
|
84
|
+
}
|
|
85
|
+
function debug(...args) {
|
|
86
|
+
log(0, ...args);
|
|
87
|
+
}
|
|
88
|
+
function info(...args) {
|
|
89
|
+
log(1, ...args);
|
|
90
|
+
}
|
|
91
|
+
function warn(...args) {
|
|
92
|
+
log(2, ...args);
|
|
93
|
+
}
|
|
94
|
+
function error(...args) {
|
|
95
|
+
log(3, ...args);
|
|
96
|
+
}
|
|
97
|
+
function fatal(...args) {
|
|
98
|
+
log(4, ...args);
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
log,
|
|
102
|
+
setLevel,
|
|
103
|
+
debug,
|
|
104
|
+
info,
|
|
105
|
+
warn,
|
|
106
|
+
error,
|
|
107
|
+
fatal
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export const logger = createLogger({
|
|
111
|
+
name: 'Discordeno'
|
|
112
|
+
});
|
|
113
|
+
export default logger;
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2dnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmdCcmlnaHRNYWdlbnRhLCBibGFjaywgYm9sZCwgY3lhbiwgZ3JheSwgaXRhbGljLCByZWQsIHllbGxvdyB9IGZyb20gJy4vY29sb3JzLmpzJztcblxuZXhwb3J0IGVudW0gTG9nTGV2ZWxzIHtcbiAgRGVidWcsXG4gIEluZm8sXG4gIFdhcm4sXG4gIEVycm9yLFxuICBGYXRhbCxcbn1cblxuY29uc3QgcHJlZml4ZXMgPSBuZXcgTWFwPExvZ0xldmVscywgc3RyaW5nPihbXG4gIFtMb2dMZXZlbHMuRGVidWcsICdERUJVRyddLFxuICBbTG9nTGV2ZWxzLkluZm8sICdJTkZPJ10sXG4gIFtMb2dMZXZlbHMuV2FybiwgJ1dBUk4nXSxcbiAgW0xvZ0xldmVscy5FcnJvciwgJ0VSUk9SJ10sXG4gIFtMb2dMZXZlbHMuRmF0YWwsICdGQVRBTCddLFxuXSk7XG5cbmNvbnN0IG5vQ29sb3I6IChzdHI6IHN0cmluZykgPT4gc3RyaW5nID0gKG1zZykgPT4gbXNnO1xuY29uc3QgY29sb3JGdW5jdGlvbnMgPSBuZXcgTWFwPExvZ0xldmVscywgKHN0cjogc3RyaW5nKSA9PiBzdHJpbmc+KFtcbiAgW0xvZ0xldmVscy5EZWJ1ZywgZ3JheV0sXG4gIFtMb2dMZXZlbHMuSW5mbywgY3lhbl0sXG4gIFtMb2dMZXZlbHMuV2FybiwgeWVsbG93XSxcbiAgW0xvZ0xldmVscy5FcnJvciwgKHN0cjogc3RyaW5nKSA9PiByZWQoc3RyKV0sXG4gIFtMb2dMZXZlbHMuRmF0YWwsIChzdHI6IHN0cmluZykgPT4gcmVkKGJvbGQoaXRhbGljKHN0cikpKV0sXG5dKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvZ2dlcih7IGxvZ0xldmVsID0gTG9nTGV2ZWxzLkluZm8sIG5hbWUgfTogeyBsb2dMZXZlbD86IExvZ0xldmVsczsgbmFtZT86IHN0cmluZyB9ID0ge30pIHtcbiAgZnVuY3Rpb24gbG9nKGxldmVsOiBMb2dMZXZlbHMsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKGxldmVsIDwgbG9nTGV2ZWwpIHJldHVybjtcblxuICAgIGxldCBjb2xvciA9IGNvbG9yRnVuY3Rpb25zLmdldChsZXZlbCk7XG4gICAgaWYgKCFjb2xvcikgY29sb3IgPSBub0NvbG9yO1xuXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgbG9nID0gW1xuICAgICAgYmdCcmlnaHRNYWdlbnRhKGJsYWNrKGBbJHtkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpfSAke2RhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKCl9XWApKSxcbiAgICAgIGNvbG9yKHByZWZpeGVzLmdldChsZXZlbCkgPz8gJ0RFQlVHJyksXG4gICAgICBuYW1lID8gYCR7bmFtZX0gPmAgOiAnPicsXG4gICAgICAuLi5hcmdzLFxuICAgIF07XG5cbiAgICBzd2l0Y2ggKGxldmVsKSB7XG4gICAgICBjYXNlIExvZ0xldmVscy5EZWJ1ZzpcbiAgICAgICAgcmV0dXJuIGNvbnNvbGUuZGVidWcoLi4ubG9nKTtcbiAgICAgIGNhc2UgTG9nTGV2ZWxzLkluZm86XG4gICAgICAgIHJldHVybiBjb25zb2xlLmluZm8oLi4ubG9nKTtcbiAgICAgIGNhc2UgTG9nTGV2ZWxzLldhcm46XG4gICAgICAgIHJldHVybiBjb25zb2xlLndhcm4oLi4ubG9nKTtcbiAgICAgIGNhc2UgTG9nTGV2ZWxzLkVycm9yOlxuICAgICAgICByZXR1cm4gY29uc29sZS5lcnJvciguLi5sb2cpO1xuICAgICAgY2FzZSBMb2dMZXZlbHMuRmF0YWw6XG4gICAgICAgIHJldHVybiBjb25zb2xlLmVycm9yKC4uLmxvZyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gY29uc29sZS5sb2coLi4ubG9nKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzZXRMZXZlbChsZXZlbDogTG9nTGV2ZWxzKSB7XG4gICAgbG9nTGV2ZWwgPSBsZXZlbDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYnVnKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgbG9nKExvZ0xldmVscy5EZWJ1ZywgLi4uYXJncyk7XG4gIH1cblxuICBmdW5jdGlvbiBpbmZvKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgbG9nKExvZ0xldmVscy5JbmZvLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdhcm4oLi4uYXJnczogYW55W10pIHtcbiAgICBsb2coTG9nTGV2ZWxzLldhcm4sIC4uLmFyZ3MpO1xuICB9XG5cbiAgZnVuY3Rpb24gZXJyb3IoLi4uYXJnczogYW55W10pIHtcbiAgICBsb2coTG9nTGV2ZWxzLkVycm9yLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZhdGFsKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgbG9nKExvZ0xldmVscy5GYXRhbCwgLi4uYXJncyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxvZyxcbiAgICBzZXRMZXZlbCxcbiAgICBkZWJ1ZyxcbiAgICBpbmZvLFxuICAgIHdhcm4sXG4gICAgZXJyb3IsXG4gICAgZmF0YWwsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoeyBuYW1lOiAnRGlzY29yZGVubycgfSk7XG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXSwibmFtZXMiOlsiYmdCcmlnaHRNYWdlbnRhIiwiYmxhY2siLCJib2xkIiwiY3lhbiIsImdyYXkiLCJpdGFsaWMiLCJyZWQiLCJ5ZWxsb3ciLCJMb2dMZXZlbHMiLCJwcmVmaXhlcyIsIk1hcCIsIm5vQ29sb3IiLCJtc2ciLCJjb2xvckZ1bmN0aW9ucyIsInN0ciIsImNyZWF0ZUxvZ2dlciIsImxvZ0xldmVsIiwibmFtZSIsImxvZyIsImxldmVsIiwiYXJncyIsImNvbG9yIiwiZ2V0IiwiZGF0ZSIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJ0b0xvY2FsZVRpbWVTdHJpbmciLCJjb25zb2xlIiwiZGVidWciLCJpbmZvIiwid2FybiIsImVycm9yIiwic2V0TGV2ZWwiLCJmYXRhbCIsImxvZ2dlciJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZUFBZSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsR0FBRyxFQUFFQyxNQUFNLFFBQVEsY0FBYztBQUU1RixPQUFPLElBQUEsQUFBS0MsbUNBQUFBOzs7Ozs7V0FBQUE7TUFNWDtBQUVELE1BQU1DLFdBQVcsSUFBSUMsSUFBdUI7SUFDMUM7O1FBQWtCO0tBQVE7SUFDMUI7O1FBQWlCO0tBQU87SUFDeEI7O1FBQWlCO0tBQU87SUFDeEI7O1FBQWtCO0tBQVE7SUFDMUI7O1FBQWtCO0tBQVE7Q0FDM0I7QUFFRCxNQUFNQyxVQUFtQyxDQUFDQyxNQUFRQTtBQUNsRCxNQUFNQyxpQkFBaUIsSUFBSUgsSUFBd0M7SUFDakU7O1FBQWtCTjtLQUFLO0lBQ3ZCOztRQUFpQkQ7S0FBSztJQUN0Qjs7UUFBaUJJO0tBQU87SUFDeEI7O1FBQWtCLENBQUNPLE1BQWdCUixJQUFJUTtLQUFLO0lBQzVDOztRQUFrQixDQUFDQSxNQUFnQlIsSUFBSUosS0FBS0csT0FBT1M7S0FBTztDQUMzRDtBQUVELE9BQU8sU0FBU0MsYUFBYSxFQUFFQyxZQUF5QixFQUFFQyxJQUFJLEVBQTJDLEdBQUcsQ0FBQyxDQUFDO0lBQzVHLFNBQVNDLElBQUlDLEtBQWdCLEVBQUUsR0FBR0MsSUFBVztRQUMzQyxJQUFJRCxRQUFRSCxVQUFVO1FBRXRCLElBQUlLLFFBQVFSLGVBQWVTLEdBQUcsQ0FBQ0g7UUFDL0IsSUFBSSxDQUFDRSxPQUFPQSxRQUFRVjtRQUVwQixNQUFNWSxPQUFPLElBQUlDO1FBQ2pCLE1BQU1OLE9BQU07WUFDVmxCLGdCQUFnQkMsTUFBTSxDQUFDLENBQUMsRUFBRXNCLEtBQUtFLGtCQUFrQixHQUFHLENBQUMsRUFBRUYsS0FBS0csa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1lBQ25GTCxNQUFNWixTQUFTYSxHQUFHLENBQUNILFVBQVU7WUFDN0JGLE9BQU8sR0FBR0EsS0FBSyxFQUFFLENBQUMsR0FBRztlQUNsQkc7U0FDSjtRQUVELE9BQVFEO1lBQ047Z0JBQ0UsT0FBT1EsUUFBUUMsS0FBSyxJQUFJVjtZQUMxQjtnQkFDRSxPQUFPUyxRQUFRRSxJQUFJLElBQUlYO1lBQ3pCO2dCQUNFLE9BQU9TLFFBQVFHLElBQUksSUFBSVo7WUFDekI7Z0JBQ0UsT0FBT1MsUUFBUUksS0FBSyxJQUFJYjtZQUMxQjtnQkFDRSxPQUFPUyxRQUFRSSxLQUFLLElBQUliO1lBQzFCO2dCQUNFLE9BQU9TLFFBQVFULEdBQUcsSUFBSUE7UUFDMUI7SUFDRjtJQUVBLFNBQVNjLFNBQVNiLEtBQWdCO1FBQ2hDSCxXQUFXRztJQUNiO0lBRUEsU0FBU1MsTUFBTSxHQUFHUixJQUFXO1FBQzNCRixVQUF3QkU7SUFDMUI7SUFFQSxTQUFTUyxLQUFLLEdBQUdULElBQVc7UUFDMUJGLFVBQXVCRTtJQUN6QjtJQUVBLFNBQVNVLEtBQUssR0FBR1YsSUFBVztRQUMxQkYsVUFBdUJFO0lBQ3pCO0lBRUEsU0FBU1csTUFBTSxHQUFHWCxJQUFXO1FBQzNCRixVQUF3QkU7SUFDMUI7SUFFQSxTQUFTYSxNQUFNLEdBQUdiLElBQVc7UUFDM0JGLFVBQXdCRTtJQUMxQjtJQUVBLE9BQU87UUFDTEY7UUFDQWM7UUFDQUo7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUU7SUFDRjtBQUNGO0FBRUEsT0FBTyxNQUFNQyxTQUFTbkIsYUFBYTtJQUFFRSxNQUFNO0FBQWEsR0FBRztBQUMzRCxlQUFlaUIsT0FBTyJ9
|
package/dist/oauth2.d.ts
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { BigString, DiscordApplicationIntegrationType, OAuth2Scope, PermissionStrings } from '@discordeno/types';
|
|
2
|
+
export declare function createOAuth2Link(options: CreateOAuth2LinkOptions): string;
|
|
3
|
+
/**
|
|
4
|
+
* Generates a code verifier for use in the PKCE extension to OAuth2.
|
|
5
|
+
*
|
|
6
|
+
* @param octetLength - The length of the code verifier in octets (default is 32).
|
|
7
|
+
* @return The base64url encoded code verifier
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* The entropy of the code verifier should be between 256 and 768 bits (32 to 96 octets), as the resulting base64url encoded string has to be between 43 and 128 characters long.
|
|
11
|
+
*
|
|
12
|
+
* @see https://datatracker.ietf.org/doc/html/rfc7636#section-7.1 for the octet length
|
|
13
|
+
* @see https://datatracker.ietf.org/doc/html/rfc7636#section-4.1 for why 32 octets is the default
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateCodeVerifier(octetLength?: number): string;
|
|
16
|
+
/**
|
|
17
|
+
* Creates a code challenge from the code verifier using the specified method.
|
|
18
|
+
*
|
|
19
|
+
* @param verifier - The code verifier to use.
|
|
20
|
+
* @returns The code challenge.
|
|
21
|
+
*
|
|
22
|
+
* @remarks
|
|
23
|
+
* This performs a SHA-256 hash on the verifier and encodes it using base64url encoding. Discord only supports 'S256' as the code challenge method.
|
|
24
|
+
*/
|
|
25
|
+
export declare function createCodeChallenge(verifier: string): Promise<string>;
|
|
26
|
+
export interface CreateOAuth2LinkOptions {
|
|
27
|
+
/**
|
|
28
|
+
* The type of response
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* Should be defined only if using either OAuth2 authorization, implicit or not, or [advanced bot authorization](https://docs.discord.com/developers/topics/oauth2#advanced-bot-authorization)
|
|
32
|
+
*/
|
|
33
|
+
responseType?: 'code' | 'token';
|
|
34
|
+
/** The id of the application */
|
|
35
|
+
clientId: BigString;
|
|
36
|
+
/** The scopes for the application */
|
|
37
|
+
scope: OAuth2Scope[];
|
|
38
|
+
/**
|
|
39
|
+
* The optional state for security
|
|
40
|
+
*
|
|
41
|
+
* @see https://docs.discord.com/developers/topics/oauth2#state-and-security
|
|
42
|
+
*/
|
|
43
|
+
state?: string;
|
|
44
|
+
/**
|
|
45
|
+
* The redirect uri for after the authentication
|
|
46
|
+
*
|
|
47
|
+
* @remarks
|
|
48
|
+
* Should be defined only if using either OAuth2 authorization, implicit or not, or [advanced bot authorization](https://docs.discord.com/developers/topics/oauth2#advanced-bot-authorization)
|
|
49
|
+
*/
|
|
50
|
+
redirectUri?: string;
|
|
51
|
+
/**
|
|
52
|
+
* The type of prompt to give to the user
|
|
53
|
+
*
|
|
54
|
+
* @remarks
|
|
55
|
+
* If set to `none`, it will skip the authorization screen and redirect them back to your redirect URI without requesting their authorization.
|
|
56
|
+
* For passthrough scopes, like bot and webhook.incoming, authorization is always required.
|
|
57
|
+
*/
|
|
58
|
+
prompt?: 'consent' | 'none';
|
|
59
|
+
/**
|
|
60
|
+
* The permissions of the invited bot
|
|
61
|
+
*
|
|
62
|
+
* @remarks
|
|
63
|
+
* Should be defined only in a [bot authorization flow](https://docs.discord.com/developers/topics/oauth2#bot-authorization-flow) or with [advanced bot authorization](https://docs.discord.com/developers/topics/oauth2#advanced-bot-authorization)
|
|
64
|
+
*/
|
|
65
|
+
permissions?: BigString | PermissionStrings[];
|
|
66
|
+
/**
|
|
67
|
+
* Pre-fills the dropdown picker with a guild for the user
|
|
68
|
+
*
|
|
69
|
+
* @remarks
|
|
70
|
+
* Should be defined only in a [bot authorization flow](https://docs.discord.com/developers/topics/oauth2#bot-authorization-flow) or with [advanced bot authorization](https://docs.discord.com/developers/topics/oauth2#advanced-bot-authorization) or with the `webhook.incoming` scope
|
|
71
|
+
*/
|
|
72
|
+
guildId?: BigString;
|
|
73
|
+
/**
|
|
74
|
+
* Disallows the user from changing the guild dropdown if set to true
|
|
75
|
+
*
|
|
76
|
+
* @remarks
|
|
77
|
+
* Should be defined only in a [bot authorization flow](https://docs.discord.com/developers/topics/oauth2#bot-authorization-flow), with [advanced bot authorization](https://docs.discord.com/developers/topics/oauth2#advanced-bot-authorization) or with the `webhook.incoming` scope
|
|
78
|
+
*/
|
|
79
|
+
disableGuildSelect?: boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Specifies the installation context for the authorization
|
|
82
|
+
*
|
|
83
|
+
* @remarks
|
|
84
|
+
* Should be defined only when {@link scope} includes {@link OAuth2Scope.ApplicationsCommands}.
|
|
85
|
+
*
|
|
86
|
+
* When set to GuildInstall (0) the application will be authorized for installation to a server, and when set to UserInstall (1) the application will be authorized for installation to a user.
|
|
87
|
+
*
|
|
88
|
+
* The application must be configured in the Developer Portal to support the provided `integrationType`.
|
|
89
|
+
*/
|
|
90
|
+
integrationType?: DiscordApplicationIntegrationType;
|
|
91
|
+
/**
|
|
92
|
+
* The code challenge used to verify the authorization request
|
|
93
|
+
*
|
|
94
|
+
* @see https://datatracker.ietf.org/doc/html/rfc7636#section-4.1
|
|
95
|
+
*/
|
|
96
|
+
codeChallenge?: string;
|
|
97
|
+
/**
|
|
98
|
+
* The challenge method used to generate the code challenge
|
|
99
|
+
*
|
|
100
|
+
* @remarks
|
|
101
|
+
* While the RFC allows for the 'plain' value to be set, discord does not allow it
|
|
102
|
+
*
|
|
103
|
+
* @see https://datatracker.ietf.org/doc/html/rfc7636#section-4.2
|
|
104
|
+
*/
|
|
105
|
+
codeChallengeMethod?: 'S256';
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=oauth2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2.d.ts","sourceRoot":"","sources":["../src/oauth2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iCAAiC,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAItH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAmBzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,GAAE,MAAW,UAI5D;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,mBAGzD;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,gCAAgC;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,qCAAqC;IACrC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,GAAG,iBAAiB,EAAE,CAAC;IAC9C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,iCAAiC,CAAC;IACpD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B"}
|
package/dist/oauth2.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { encodeBase64Url } from './base64.js';
|
|
2
|
+
import { calculateBits } from './permissions.js';
|
|
3
|
+
export function createOAuth2Link(options) {
|
|
4
|
+
const joinedScopeString = options.scope.join('%20');
|
|
5
|
+
let url = `https://discord.com/oauth2/authorize?client_id=${options.clientId}&scope=${joinedScopeString}`;
|
|
6
|
+
if (options.responseType) url += `&response_type=${options.responseType}`;
|
|
7
|
+
if (options.state) url += `&state=${encodeURIComponent(options.state)}`;
|
|
8
|
+
if (options.redirectUri) url += `&redirect_uri=${encodeURIComponent(options.redirectUri)}`;
|
|
9
|
+
if (options.prompt) url += `&prompt=${options.prompt}`;
|
|
10
|
+
if (options.permissions) url += `&permissions=${Array.isArray(options.permissions) ? calculateBits(options.permissions) : options.permissions}`;
|
|
11
|
+
if (options.guildId) url += `&guild_id=${options.guildId}`;
|
|
12
|
+
if (options.disableGuildSelect !== undefined) url += `&disable_guild_select=${options.disableGuildSelect}`;
|
|
13
|
+
if (options.integrationType) url += `&integration_type=${options.integrationType}`;
|
|
14
|
+
// Options defined by RFC 7636 (https://datatracker.ietf.org/doc/html/rfc7636)
|
|
15
|
+
if (options.codeChallenge) url += `&code_challenge=${options.codeChallenge}`;
|
|
16
|
+
if (options.codeChallengeMethod) url += `&code_challenge_method=${options.codeChallengeMethod}`;
|
|
17
|
+
return url;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Generates a code verifier for use in the PKCE extension to OAuth2.
|
|
21
|
+
*
|
|
22
|
+
* @param octetLength - The length of the code verifier in octets (default is 32).
|
|
23
|
+
* @return The base64url encoded code verifier
|
|
24
|
+
*
|
|
25
|
+
* @remarks
|
|
26
|
+
* The entropy of the code verifier should be between 256 and 768 bits (32 to 96 octets), as the resulting base64url encoded string has to be between 43 and 128 characters long.
|
|
27
|
+
*
|
|
28
|
+
* @see https://datatracker.ietf.org/doc/html/rfc7636#section-7.1 for the octet length
|
|
29
|
+
* @see https://datatracker.ietf.org/doc/html/rfc7636#section-4.1 for why 32 octets is the default
|
|
30
|
+
*/ export function generateCodeVerifier(octetLength = 32) {
|
|
31
|
+
const randomBytes = new Uint8Array(octetLength);
|
|
32
|
+
crypto.getRandomValues(randomBytes);
|
|
33
|
+
return encodeBase64Url(randomBytes);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Creates a code challenge from the code verifier using the specified method.
|
|
37
|
+
*
|
|
38
|
+
* @param verifier - The code verifier to use.
|
|
39
|
+
* @returns The code challenge.
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
* This performs a SHA-256 hash on the verifier and encodes it using base64url encoding. Discord only supports 'S256' as the code challenge method.
|
|
43
|
+
*/ export async function createCodeChallenge(verifier) {
|
|
44
|
+
const hashed = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(verifier));
|
|
45
|
+
return encodeBase64Url(hashed);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9vYXV0aDIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCaWdTdHJpbmcsIERpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZSwgT0F1dGgyU2NvcGUsIFBlcm1pc3Npb25TdHJpbmdzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuaW1wb3J0IHsgZW5jb2RlQmFzZTY0VXJsIH0gZnJvbSAnLi9iYXNlNjQuanMnO1xuaW1wb3J0IHsgY2FsY3VsYXRlQml0cyB9IGZyb20gJy4vcGVybWlzc2lvbnMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT0F1dGgyTGluayhvcHRpb25zOiBDcmVhdGVPQXV0aDJMaW5rT3B0aW9ucyk6IHN0cmluZyB7XG4gIGNvbnN0IGpvaW5lZFNjb3BlU3RyaW5nID0gb3B0aW9ucy5zY29wZS5qb2luKCclMjAnKTtcblxuICBsZXQgdXJsID0gYGh0dHBzOi8vZGlzY29yZC5jb20vb2F1dGgyL2F1dGhvcml6ZT9jbGllbnRfaWQ9JHtvcHRpb25zLmNsaWVudElkfSZzY29wZT0ke2pvaW5lZFNjb3BlU3RyaW5nfWA7XG5cbiAgaWYgKG9wdGlvbnMucmVzcG9uc2VUeXBlKSB1cmwgKz0gYCZyZXNwb25zZV90eXBlPSR7b3B0aW9ucy5yZXNwb25zZVR5cGV9YDtcbiAgaWYgKG9wdGlvbnMuc3RhdGUpIHVybCArPSBgJnN0YXRlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9wdGlvbnMuc3RhdGUpfWA7XG4gIGlmIChvcHRpb25zLnJlZGlyZWN0VXJpKSB1cmwgKz0gYCZyZWRpcmVjdF91cmk9JHtlbmNvZGVVUklDb21wb25lbnQob3B0aW9ucy5yZWRpcmVjdFVyaSl9YDtcbiAgaWYgKG9wdGlvbnMucHJvbXB0KSB1cmwgKz0gYCZwcm9tcHQ9JHtvcHRpb25zLnByb21wdH1gO1xuICBpZiAob3B0aW9ucy5wZXJtaXNzaW9ucykgdXJsICs9IGAmcGVybWlzc2lvbnM9JHtBcnJheS5pc0FycmF5KG9wdGlvbnMucGVybWlzc2lvbnMpID8gY2FsY3VsYXRlQml0cyhvcHRpb25zLnBlcm1pc3Npb25zKSA6IG9wdGlvbnMucGVybWlzc2lvbnN9YDtcbiAgaWYgKG9wdGlvbnMuZ3VpbGRJZCkgdXJsICs9IGAmZ3VpbGRfaWQ9JHtvcHRpb25zLmd1aWxkSWR9YDtcbiAgaWYgKG9wdGlvbnMuZGlzYWJsZUd1aWxkU2VsZWN0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgJmRpc2FibGVfZ3VpbGRfc2VsZWN0PSR7b3B0aW9ucy5kaXNhYmxlR3VpbGRTZWxlY3R9YDtcbiAgaWYgKG9wdGlvbnMuaW50ZWdyYXRpb25UeXBlKSB1cmwgKz0gYCZpbnRlZ3JhdGlvbl90eXBlPSR7b3B0aW9ucy5pbnRlZ3JhdGlvblR5cGV9YDtcblxuICAvLyBPcHRpb25zIGRlZmluZWQgYnkgUkZDIDc2MzYgKGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzYzNilcbiAgaWYgKG9wdGlvbnMuY29kZUNoYWxsZW5nZSkgdXJsICs9IGAmY29kZV9jaGFsbGVuZ2U9JHtvcHRpb25zLmNvZGVDaGFsbGVuZ2V9YDtcbiAgaWYgKG9wdGlvbnMuY29kZUNoYWxsZW5nZU1ldGhvZCkgdXJsICs9IGAmY29kZV9jaGFsbGVuZ2VfbWV0aG9kPSR7b3B0aW9ucy5jb2RlQ2hhbGxlbmdlTWV0aG9kfWA7XG5cbiAgcmV0dXJuIHVybDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBjb2RlIHZlcmlmaWVyIGZvciB1c2UgaW4gdGhlIFBLQ0UgZXh0ZW5zaW9uIHRvIE9BdXRoMi5cbiAqXG4gKiBAcGFyYW0gb2N0ZXRMZW5ndGggLSBUaGUgbGVuZ3RoIG9mIHRoZSBjb2RlIHZlcmlmaWVyIGluIG9jdGV0cyAoZGVmYXVsdCBpcyAzMikuXG4gKiBAcmV0dXJuIFRoZSBiYXNlNjR1cmwgZW5jb2RlZCBjb2RlIHZlcmlmaWVyXG4gKlxuICogQHJlbWFya3NcbiAqIFRoZSBlbnRyb3B5IG9mIHRoZSBjb2RlIHZlcmlmaWVyIHNob3VsZCBiZSBiZXR3ZWVuIDI1NiBhbmQgNzY4IGJpdHMgKDMyIHRvIDk2IG9jdGV0cyksIGFzIHRoZSByZXN1bHRpbmcgYmFzZTY0dXJsIGVuY29kZWQgc3RyaW5nIGhhcyB0byBiZSBiZXR3ZWVuIDQzIGFuZCAxMjggY2hhcmFjdGVycyBsb25nLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM3NjM2I3NlY3Rpb24tNy4xIGZvciB0aGUgb2N0ZXQgbGVuZ3RoXG4gKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzYzNiNzZWN0aW9uLTQuMSBmb3Igd2h5IDMyIG9jdGV0cyBpcyB0aGUgZGVmYXVsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVDb2RlVmVyaWZpZXIob2N0ZXRMZW5ndGg6IG51bWJlciA9IDMyKSB7XG4gIGNvbnN0IHJhbmRvbUJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkob2N0ZXRMZW5ndGgpO1xuICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHJhbmRvbUJ5dGVzKTtcbiAgcmV0dXJuIGVuY29kZUJhc2U2NFVybChyYW5kb21CeXRlcyk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvZGUgY2hhbGxlbmdlIGZyb20gdGhlIGNvZGUgdmVyaWZpZXIgdXNpbmcgdGhlIHNwZWNpZmllZCBtZXRob2QuXG4gKlxuICogQHBhcmFtIHZlcmlmaWVyIC0gVGhlIGNvZGUgdmVyaWZpZXIgdG8gdXNlLlxuICogQHJldHVybnMgVGhlIGNvZGUgY2hhbGxlbmdlLlxuICpcbiAqIEByZW1hcmtzXG4gKiBUaGlzIHBlcmZvcm1zIGEgU0hBLTI1NiBoYXNoIG9uIHRoZSB2ZXJpZmllciBhbmQgZW5jb2RlcyBpdCB1c2luZyBiYXNlNjR1cmwgZW5jb2RpbmcuIERpc2NvcmQgb25seSBzdXBwb3J0cyAnUzI1NicgYXMgdGhlIGNvZGUgY2hhbGxlbmdlIG1ldGhvZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvZGVDaGFsbGVuZ2UodmVyaWZpZXI6IHN0cmluZykge1xuICBjb25zdCBoYXNoZWQgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnU0hBLTI1NicsIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh2ZXJpZmllcikpO1xuICByZXR1cm4gZW5jb2RlQmFzZTY0VXJsKGhhc2hlZCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT0F1dGgyTGlua09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgcmVzcG9uc2VcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogU2hvdWxkIGJlIGRlZmluZWQgb25seSBpZiB1c2luZyBlaXRoZXIgT0F1dGgyIGF1dGhvcml6YXRpb24sIGltcGxpY2l0IG9yIG5vdCwgb3IgW2FkdmFuY2VkIGJvdCBhdXRob3JpemF0aW9uXShodHRwczovL2RvY3MuZGlzY29yZC5jb20vZGV2ZWxvcGVycy90b3BpY3Mvb2F1dGgyI2FkdmFuY2VkLWJvdC1hdXRob3JpemF0aW9uKVxuICAgKi9cbiAgcmVzcG9uc2VUeXBlPzogJ2NvZGUnIHwgJ3Rva2VuJztcbiAgLyoqIFRoZSBpZCBvZiB0aGUgYXBwbGljYXRpb24gKi9cbiAgY2xpZW50SWQ6IEJpZ1N0cmluZztcbiAgLyoqIFRoZSBzY29wZXMgZm9yIHRoZSBhcHBsaWNhdGlvbiAqL1xuICBzY29wZTogT0F1dGgyU2NvcGVbXTtcbiAgLyoqXG4gICAqIFRoZSBvcHRpb25hbCBzdGF0ZSBmb3Igc2VjdXJpdHlcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuZGlzY29yZC5jb20vZGV2ZWxvcGVycy90b3BpY3Mvb2F1dGgyI3N0YXRlLWFuZC1zZWN1cml0eVxuICAgKi9cbiAgc3RhdGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcmVkaXJlY3QgdXJpIGZvciBhZnRlciB0aGUgYXV0aGVudGljYXRpb25cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogU2hvdWxkIGJlIGRlZmluZWQgb25seSBpZiB1c2luZyBlaXRoZXIgT0F1dGgyIGF1dGhvcml6YXRpb24sIGltcGxpY2l0IG9yIG5vdCwgb3IgW2FkdmFuY2VkIGJvdCBhdXRob3JpemF0aW9uXShodHRwczovL2RvY3MuZGlzY29yZC5jb20vZGV2ZWxvcGVycy90b3BpY3Mvb2F1dGgyI2FkdmFuY2VkLWJvdC1hdXRob3JpemF0aW9uKVxuICAgKi9cbiAgcmVkaXJlY3RVcmk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBwcm9tcHQgdG8gZ2l2ZSB0byB0aGUgdXNlclxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiBzZXQgdG8gYG5vbmVgLCBpdCB3aWxsIHNraXAgdGhlIGF1dGhvcml6YXRpb24gc2NyZWVuIGFuZCByZWRpcmVjdCB0aGVtIGJhY2sgdG8geW91ciByZWRpcmVjdCBVUkkgd2l0aG91dCByZXF1ZXN0aW5nIHRoZWlyIGF1dGhvcml6YXRpb24uXG4gICAqIEZvciBwYXNzdGhyb3VnaCBzY29wZXMsIGxpa2UgYm90IGFuZCB3ZWJob29rLmluY29taW5nLCBhdXRob3JpemF0aW9uIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICovXG4gIHByb21wdD86ICdjb25zZW50JyB8ICdub25lJztcbiAgLyoqXG4gICAqIFRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgaW52aXRlZCBib3RcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogU2hvdWxkIGJlIGRlZmluZWQgb25seSBpbiBhIFtib3QgYXV0aG9yaXphdGlvbiBmbG93XShodHRwczovL2RvY3MuZGlzY29yZC5jb20vZGV2ZWxvcGVycy90b3BpY3Mvb2F1dGgyI2JvdC1hdXRob3JpemF0aW9uLWZsb3cpIG9yIHdpdGggW2FkdmFuY2VkIGJvdCBhdXRob3JpemF0aW9uXShodHRwczovL2RvY3MuZGlzY29yZC5jb20vZGV2ZWxvcGVycy90b3BpY3Mvb2F1dGgyI2FkdmFuY2VkLWJvdC1hdXRob3JpemF0aW9uKVxuICAgKi9cbiAgcGVybWlzc2lvbnM/OiBCaWdTdHJpbmcgfCBQZXJtaXNzaW9uU3RyaW5nc1tdO1xuICAvKipcbiAgICogUHJlLWZpbGxzIHRoZSBkcm9wZG93biBwaWNrZXIgd2l0aCBhIGd1aWxkIGZvciB0aGUgdXNlclxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBTaG91bGQgYmUgZGVmaW5lZCBvbmx5IGluIGEgW2JvdCBhdXRob3JpemF0aW9uIGZsb3ddKGh0dHBzOi8vZG9jcy5kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL3RvcGljcy9vYXV0aDIjYm90LWF1dGhvcml6YXRpb24tZmxvdykgb3Igd2l0aCBbYWR2YW5jZWQgYm90IGF1dGhvcml6YXRpb25dKGh0dHBzOi8vZG9jcy5kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL3RvcGljcy9vYXV0aDIjYWR2YW5jZWQtYm90LWF1dGhvcml6YXRpb24pIG9yIHdpdGggdGhlIGB3ZWJob29rLmluY29taW5nYCBzY29wZVxuICAgKi9cbiAgZ3VpbGRJZD86IEJpZ1N0cmluZztcbiAgLyoqXG4gICAqIERpc2FsbG93cyB0aGUgdXNlciBmcm9tIGNoYW5naW5nIHRoZSBndWlsZCBkcm9wZG93biBpZiBzZXQgdG8gdHJ1ZVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBTaG91bGQgYmUgZGVmaW5lZCBvbmx5IGluIGEgW2JvdCBhdXRob3JpemF0aW9uIGZsb3ddKGh0dHBzOi8vZG9jcy5kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL3RvcGljcy9vYXV0aDIjYm90LWF1dGhvcml6YXRpb24tZmxvdyksIHdpdGggW2FkdmFuY2VkIGJvdCBhdXRob3JpemF0aW9uXShodHRwczovL2RvY3MuZGlzY29yZC5jb20vZGV2ZWxvcGVycy90b3BpY3Mvb2F1dGgyI2FkdmFuY2VkLWJvdC1hdXRob3JpemF0aW9uKSBvciB3aXRoIHRoZSBgd2ViaG9vay5pbmNvbWluZ2Agc2NvcGVcbiAgICovXG4gIGRpc2FibGVHdWlsZFNlbGVjdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGluc3RhbGxhdGlvbiBjb250ZXh0IGZvciB0aGUgYXV0aG9yaXphdGlvblxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBTaG91bGQgYmUgZGVmaW5lZCBvbmx5IHdoZW4ge0BsaW5rIHNjb3BlfSBpbmNsdWRlcyB7QGxpbmsgT0F1dGgyU2NvcGUuQXBwbGljYXRpb25zQ29tbWFuZHN9LlxuICAgKlxuICAgKiBXaGVuIHNldCB0byBHdWlsZEluc3RhbGwgKDApIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGJlIGF1dGhvcml6ZWQgZm9yIGluc3RhbGxhdGlvbiB0byBhIHNlcnZlciwgYW5kIHdoZW4gc2V0IHRvIFVzZXJJbnN0YWxsICgxKSB0aGUgYXBwbGljYXRpb24gd2lsbCBiZSBhdXRob3JpemVkIGZvciBpbnN0YWxsYXRpb24gdG8gYSB1c2VyLlxuICAgKlxuICAgKiBUaGUgYXBwbGljYXRpb24gbXVzdCBiZSBjb25maWd1cmVkIGluIHRoZSBEZXZlbG9wZXIgUG9ydGFsIHRvIHN1cHBvcnQgdGhlIHByb3ZpZGVkIGBpbnRlZ3JhdGlvblR5cGVgLlxuICAgKi9cbiAgaW50ZWdyYXRpb25UeXBlPzogRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlO1xuICAvKipcbiAgICogVGhlIGNvZGUgY2hhbGxlbmdlIHVzZWQgdG8gdmVyaWZ5IHRoZSBhdXRob3JpemF0aW9uIHJlcXVlc3RcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzc2MzYjc2VjdGlvbi00LjFcbiAgICovXG4gIGNvZGVDaGFsbGVuZ2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY2hhbGxlbmdlIG1ldGhvZCB1c2VkIHRvIGdlbmVyYXRlIHRoZSBjb2RlIGNoYWxsZW5nZVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBXaGlsZSB0aGUgUkZDIGFsbG93cyBmb3IgdGhlICdwbGFpbicgdmFsdWUgdG8gYmUgc2V0LCBkaXNjb3JkIGRvZXMgbm90IGFsbG93IGl0XG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM3NjM2I3NlY3Rpb24tNC4yXG4gICAqL1xuICBjb2RlQ2hhbGxlbmdlTWV0aG9kPzogJ1MyNTYnO1xufVxuIl0sIm5hbWVzIjpbImVuY29kZUJhc2U2NFVybCIsImNhbGN1bGF0ZUJpdHMiLCJjcmVhdGVPQXV0aDJMaW5rIiwib3B0aW9ucyIsImpvaW5lZFNjb3BlU3RyaW5nIiwic2NvcGUiLCJqb2luIiwidXJsIiwiY2xpZW50SWQiLCJyZXNwb25zZVR5cGUiLCJzdGF0ZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInJlZGlyZWN0VXJpIiwicHJvbXB0IiwicGVybWlzc2lvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJndWlsZElkIiwiZGlzYWJsZUd1aWxkU2VsZWN0IiwidW5kZWZpbmVkIiwiaW50ZWdyYXRpb25UeXBlIiwiY29kZUNoYWxsZW5nZSIsImNvZGVDaGFsbGVuZ2VNZXRob2QiLCJnZW5lcmF0ZUNvZGVWZXJpZmllciIsIm9jdGV0TGVuZ3RoIiwicmFuZG9tQnl0ZXMiLCJVaW50OEFycmF5IiwiY3J5cHRvIiwiZ2V0UmFuZG9tVmFsdWVzIiwiY3JlYXRlQ29kZUNoYWxsZW5nZSIsInZlcmlmaWVyIiwiaGFzaGVkIiwic3VidGxlIiwiZGlnZXN0IiwiVGV4dEVuY29kZXIiLCJlbmNvZGUiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLGVBQWUsUUFBUSxjQUFjO0FBQzlDLFNBQVNDLGFBQWEsUUFBUSxtQkFBbUI7QUFFakQsT0FBTyxTQUFTQyxpQkFBaUJDLE9BQWdDO0lBQy9ELE1BQU1DLG9CQUFvQkQsUUFBUUUsS0FBSyxDQUFDQyxJQUFJLENBQUM7SUFFN0MsSUFBSUMsTUFBTSxDQUFDLCtDQUErQyxFQUFFSixRQUFRSyxRQUFRLENBQUMsT0FBTyxFQUFFSixtQkFBbUI7SUFFekcsSUFBSUQsUUFBUU0sWUFBWSxFQUFFRixPQUFPLENBQUMsZUFBZSxFQUFFSixRQUFRTSxZQUFZLEVBQUU7SUFDekUsSUFBSU4sUUFBUU8sS0FBSyxFQUFFSCxPQUFPLENBQUMsT0FBTyxFQUFFSSxtQkFBbUJSLFFBQVFPLEtBQUssR0FBRztJQUN2RSxJQUFJUCxRQUFRUyxXQUFXLEVBQUVMLE9BQU8sQ0FBQyxjQUFjLEVBQUVJLG1CQUFtQlIsUUFBUVMsV0FBVyxHQUFHO0lBQzFGLElBQUlULFFBQVFVLE1BQU0sRUFBRU4sT0FBTyxDQUFDLFFBQVEsRUFBRUosUUFBUVUsTUFBTSxFQUFFO0lBQ3RELElBQUlWLFFBQVFXLFdBQVcsRUFBRVAsT0FBTyxDQUFDLGFBQWEsRUFBRVEsTUFBTUMsT0FBTyxDQUFDYixRQUFRVyxXQUFXLElBQUliLGNBQWNFLFFBQVFXLFdBQVcsSUFBSVgsUUFBUVcsV0FBVyxFQUFFO0lBQy9JLElBQUlYLFFBQVFjLE9BQU8sRUFBRVYsT0FBTyxDQUFDLFVBQVUsRUFBRUosUUFBUWMsT0FBTyxFQUFFO0lBQzFELElBQUlkLFFBQVFlLGtCQUFrQixLQUFLQyxXQUFXWixPQUFPLENBQUMsc0JBQXNCLEVBQUVKLFFBQVFlLGtCQUFrQixFQUFFO0lBQzFHLElBQUlmLFFBQVFpQixlQUFlLEVBQUViLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRUosUUFBUWlCLGVBQWUsRUFBRTtJQUVsRiw4RUFBOEU7SUFDOUUsSUFBSWpCLFFBQVFrQixhQUFhLEVBQUVkLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRUosUUFBUWtCLGFBQWEsRUFBRTtJQUM1RSxJQUFJbEIsUUFBUW1CLG1CQUFtQixFQUFFZixPQUFPLENBQUMsdUJBQXVCLEVBQUVKLFFBQVFtQixtQkFBbUIsRUFBRTtJQUUvRixPQUFPZjtBQUNUO0FBRUE7Ozs7Ozs7Ozs7O0NBV0MsR0FDRCxPQUFPLFNBQVNnQixxQkFBcUJDLGNBQXNCLEVBQUU7SUFDM0QsTUFBTUMsY0FBYyxJQUFJQyxXQUFXRjtJQUNuQ0csT0FBT0MsZUFBZSxDQUFDSDtJQUN2QixPQUFPekIsZ0JBQWdCeUI7QUFDekI7QUFFQTs7Ozs7Ozs7Q0FRQyxHQUNELE9BQU8sZUFBZUksb0JBQW9CQyxRQUFnQjtJQUN4RCxNQUFNQyxTQUFTLE1BQU1KLE9BQU9LLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLFdBQVcsSUFBSUMsY0FBY0MsTUFBTSxDQUFDTDtJQUM5RSxPQUFPOUIsZ0JBQWdCK0I7QUFDekIifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAOhF;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,WAAW,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAOtE"}
|
|
@@ -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 & 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 |= BitwisePermissionFlags[perm];
|
|
13
|
+
return bits;
|
|
14
|
+
}, 0n).toString();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wZXJtaXNzaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBlcm1pc3Npb25TdHJpbmdzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuaW1wb3J0IHsgQml0d2lzZVBlcm1pc3Npb25GbGFncyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJztcblxuLyoqIFRoaXMgZnVuY3Rpb24gY29udmVydHMgYSBiaXR3aXNlIHN0cmluZyB0byBwZXJtaXNzaW9uIHN0cmluZ3MgKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVQZXJtaXNzaW9ucyhwZXJtaXNzaW9uQml0czogYmlnaW50KTogUGVybWlzc2lvblN0cmluZ3NbXSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhCaXR3aXNlUGVybWlzc2lvbkZsYWdzKS5maWx0ZXIoKHBlcm1pc3Npb24pID0+IHtcbiAgICAvLyBTaW5jZSBPYmplY3Qua2V5cygpIG5vdCBvbmx5IHJldHVybnMgdGhlIHBlcm1pc3Npb24gbmFtZXMgYnV0IGFsc28gdGhlIGJpdCB2YWx1ZXMgd2UgbmVlZCB0byByZXR1cm4gZmFsc2UgaWYgaXQgaXMgYSBOdW1iZXJcbiAgICBpZiAoTnVtYmVyKHBlcm1pc3Npb24pKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gQ2hlY2sgaWYgcGVybWlzc2lvbkJpdHMgaGFzIHRoaXMgcGVybWlzc2lvblxuICAgIHJldHVybiBwZXJtaXNzaW9uQml0cyAmIEJpdHdpc2VQZXJtaXNzaW9uRmxhZ3NbcGVybWlzc2lvbiBhcyBQZXJtaXNzaW9uU3RyaW5nc107XG4gIH0pIGFzIFBlcm1pc3Npb25TdHJpbmdzW107XG59XG5cbi8qKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIGFuIGFycmF5IG9mIHBlcm1pc3Npb25zIGludG8gdGhlIGJpdHdpc2Ugc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUJpdHMocGVybWlzc2lvbnM6IFBlcm1pc3Npb25TdHJpbmdzW10pOiBzdHJpbmcge1xuICByZXR1cm4gcGVybWlzc2lvbnNcbiAgICAucmVkdWNlKChiaXRzLCBwZXJtKSA9PiB7XG4gICAgICBiaXRzIHw9IEJpdHdpc2VQZXJtaXNzaW9uRmxhZ3NbcGVybV07XG4gICAgICByZXR1cm4gYml0cztcbiAgICB9LCAwbilcbiAgICAudG9TdHJpbmcoKTtcbn1cbiJdLCJuYW1lcyI6WyJCaXR3aXNlUGVybWlzc2lvbkZsYWdzIiwiY2FsY3VsYXRlUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9uQml0cyIsIk9iamVjdCIsImtleXMiLCJmaWx0ZXIiLCJwZXJtaXNzaW9uIiwiTnVtYmVyIiwiY2FsY3VsYXRlQml0cyIsInBlcm1pc3Npb25zIiwicmVkdWNlIiwiYml0cyIsInBlcm0iLCJ0b1N0cmluZyJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0Esc0JBQXNCLFFBQVEsb0JBQW9CO0FBRTNELGtFQUFrRSxHQUNsRSxPQUFPLFNBQVNDLHFCQUFxQkMsY0FBc0I7SUFDekQsT0FBT0MsT0FBT0MsSUFBSSxDQUFDSix3QkFBd0JLLE1BQU0sQ0FBQyxDQUFDQztRQUNqRCw4SEFBOEg7UUFDOUgsSUFBSUMsT0FBT0QsYUFBYSxPQUFPO1FBQy9CLDhDQUE4QztRQUM5QyxPQUFPSixpQkFBaUJGLHNCQUFzQixDQUFDTSxXQUFnQztJQUNqRjtBQUNGO0FBRUEsNEVBQTRFLEdBQzVFLE9BQU8sU0FBU0UsY0FBY0MsV0FBZ0M7SUFDNUQsT0FBT0EsWUFDSkMsTUFBTSxDQUFDLENBQUNDLE1BQU1DO1FBQ2JELFFBQVFYLHNCQUFzQixDQUFDWSxLQUFLO1FBQ3BDLE9BQU9EO0lBQ1QsR0FBRyxFQUFFLEVBQ0pFLFFBQVE7QUFDYiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../src/reactions.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU9D"}
|
|
@@ -8,4 +8,4 @@
|
|
|
8
8
|
return reaction;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIENvbnZlcnRzIGFuIHJlYWN0aW9uIGVtb2ppIHVuaWNvZGUgc3RyaW5nIHRvIHRoZSBkaXNjb3JkIHJlcXVpcmVkIGZvcm0gb2YgbmFtZTppZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NSZWFjdGlvblN0cmluZyhyZWFjdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHJlYWN0aW9uLnN0YXJ0c1dpdGgoJzw6JykpIHtcbiAgICByZXR1cm4gcmVhY3Rpb24uc3Vic3RyaW5nKDIsIHJlYWN0aW9uLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgaWYgKHJlYWN0aW9uLnN0YXJ0c1dpdGgoJzxhOicpKSB7XG4gICAgcmV0dXJuIHJlYWN0aW9uLnN1YnN0cmluZygzLCByZWFjdGlvbi5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHJldHVybiByZWFjdGlvbjtcbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzUmVhY3Rpb25TdHJpbmciLCJyZWFjdGlvbiIsInN0YXJ0c1dpdGgiLCJzdWJzdHJpbmciLCJsZW5ndGgiXSwibWFwcGluZ3MiOiJBQUFBLHNGQUFzRixHQUN0RixPQUFPLFNBQVNBLHNCQUFzQkMsUUFBZ0I7SUFDcEQsSUFBSUEsU0FBU0MsVUFBVSxDQUFDLE9BQU87UUFDN0IsT0FBT0QsU0FBU0UsU0FBUyxDQUFDLEdBQUdGLFNBQVNHLE1BQU0sR0FBRztJQUNqRDtJQUVBLElBQUlILFNBQVNDLFVBQVUsQ0FBQyxRQUFRO1FBQzlCLE9BQU9ELFNBQVNFLFNBQVMsQ0FBQyxHQUFHRixTQUFTRyxNQUFNLEdBQUc7SUFDakQ7SUFFQSxPQUFPSDtBQUNUIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snowflakes.d.ts","sourceRoot":"","sources":["../src/snowflakes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAE9D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAE9D;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAEjE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function snowflakeToBigint(snowflake) {
|
|
2
|
+
return BigInt(snowflake);
|
|
3
|
+
}
|
|
4
|
+
export function bigintToSnowflake(snowflake) {
|
|
5
|
+
return snowflake.toString();
|
|
6
|
+
}
|
|
7
|
+
export function snowflakeToTimestamp(snowflake) {
|
|
8
|
+
return Number(BigInt(snowflake) >> 22n) + 1420070400000;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zbm93Zmxha2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQmlnU3RyaW5nIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc25vd2ZsYWtlVG9CaWdpbnQoc25vd2ZsYWtlOiBCaWdTdHJpbmcpOiBiaWdpbnQge1xuICByZXR1cm4gQmlnSW50KHNub3dmbGFrZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaWdpbnRUb1Nub3dmbGFrZShzbm93Zmxha2U6IEJpZ1N0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzbm93Zmxha2UudG9TdHJpbmcoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNub3dmbGFrZVRvVGltZXN0YW1wKHNub3dmbGFrZTogQmlnU3RyaW5nKTogbnVtYmVyIHtcbiAgcmV0dXJuIE51bWJlcihCaWdJbnQoc25vd2ZsYWtlKSA+PiAyMm4pICsgMTQyMDA3MDQwMDAwMDtcbn1cbiJdLCJuYW1lcyI6WyJzbm93Zmxha2VUb0JpZ2ludCIsInNub3dmbGFrZSIsIkJpZ0ludCIsImJpZ2ludFRvU25vd2ZsYWtlIiwidG9TdHJpbmciLCJzbm93Zmxha2VUb1RpbWVzdGFtcCIsIk51bWJlciJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxTQUFTQSxrQkFBa0JDLFNBQW9CO0lBQ3BELE9BQU9DLE9BQU9EO0FBQ2hCO0FBRUEsT0FBTyxTQUFTRSxrQkFBa0JGLFNBQW9CO0lBQ3BELE9BQU9BLFVBQVVHLFFBQVE7QUFDM0I7QUFFQSxPQUFPLFNBQVNDLHFCQUFxQkosU0FBb0I7SUFDdkQsT0FBT0ssT0FBT0osT0FBT0QsY0FBYyxHQUFHLElBQUk7QUFDNUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAEA,+CAA+C;AAC/C,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,SAAS,GAAG,MAAe,GAAG,MAAM,CAY3F;AAED,0LAA0L;AAC1L,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
package/dist/token.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const validTokenPrefixes = [
|
|
2
|
+
'Bot',
|
|
3
|
+
'Bearer'
|
|
4
|
+
];
|
|
5
|
+
/** Removes the Bot/Bearer before the token. */ export function removeTokenPrefix(token, type = 'REST') {
|
|
6
|
+
// If no token is provided, throw an error
|
|
7
|
+
if (token === undefined) {
|
|
8
|
+
throw new Error(`The ${type} was not given a token. Please provide a token and try again.`);
|
|
9
|
+
}
|
|
10
|
+
const splittedToken = token.split(' ');
|
|
11
|
+
// If the token does not have a prefix just return token
|
|
12
|
+
if (splittedToken.length < 2 || !validTokenPrefixes.includes(splittedToken[0])) return token;
|
|
13
|
+
// Remove the prefix and return only the token.
|
|
14
|
+
return splittedToken.splice(1).join(' ');
|
|
15
|
+
}
|
|
16
|
+
/** 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) {
|
|
17
|
+
return BigInt(atob(token.split('.')[0]));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90b2tlbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB2YWxpZFRva2VuUHJlZml4ZXMgPSBbJ0JvdCcsICdCZWFyZXInXTtcblxuLyoqIFJlbW92ZXMgdGhlIEJvdC9CZWFyZXIgYmVmb3JlIHRoZSB0b2tlbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUb2tlblByZWZpeCh0b2tlbj86IHN0cmluZywgdHlwZTogJ0dBVEVXQVknIHwgJ1JFU1QnID0gJ1JFU1QnKTogc3RyaW5nIHtcbiAgLy8gSWYgbm8gdG9rZW4gaXMgcHJvdmlkZWQsIHRocm93IGFuIGVycm9yXG4gIGlmICh0b2tlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgJHt0eXBlfSB3YXMgbm90IGdpdmVuIGEgdG9rZW4uIFBsZWFzZSBwcm92aWRlIGEgdG9rZW4gYW5kIHRyeSBhZ2Fpbi5gKTtcbiAgfVxuXG4gIGNvbnN0IHNwbGl0dGVkVG9rZW4gPSB0b2tlbi5zcGxpdCgnICcpO1xuXG4gIC8vIElmIHRoZSB0b2tlbiBkb2VzIG5vdCBoYXZlIGEgcHJlZml4IGp1c3QgcmV0dXJuIHRva2VuXG4gIGlmIChzcGxpdHRlZFRva2VuLmxlbmd0aCA8IDIgfHwgIXZhbGlkVG9rZW5QcmVmaXhlcy5pbmNsdWRlcyhzcGxpdHRlZFRva2VuWzBdKSkgcmV0dXJuIHRva2VuO1xuICAvLyBSZW1vdmUgdGhlIHByZWZpeCBhbmQgcmV0dXJuIG9ubHkgdGhlIHRva2VuLlxuICByZXR1cm4gc3BsaXR0ZWRUb2tlbi5zcGxpY2UoMSkuam9pbignICcpO1xufVxuXG4vKiogR2V0IHRoZSBib3QgaWQgZnJvbSB0aGUgYm90IHRva2VuLiBXQVJOSU5HOiBEaXNjb3JkIHN0YWZmIGhhcyBtZW50aW9uZWQgdGhpcyBtYXkgbm90IGJlIHN0YWJsZSBmb3JldmVyLiBVc2UgYXQgeW91ciBvd24gcmlzay4gSG93ZXZlciwgbm90ZSBmb3Igb3ZlciA1IHllYXJzIHRoaXMgaGFzIG5ldmVyIGJyb2tlbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb3RJZEZyb21Ub2tlbih0b2tlbjogc3RyaW5nKTogYmlnaW50IHtcbiAgcmV0dXJuIEJpZ0ludChhdG9iKHRva2VuLnNwbGl0KCcuJylbMF0pKTtcbn1cbiJdLCJuYW1lcyI6WyJ2YWxpZFRva2VuUHJlZml4ZXMiLCJyZW1vdmVUb2tlblByZWZpeCIsInRva2VuIiwidHlwZSIsInVuZGVmaW5lZCIsIkVycm9yIiwic3BsaXR0ZWRUb2tlbiIsInNwbGl0IiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJzcGxpY2UiLCJqb2luIiwiZ2V0Qm90SWRGcm9tVG9rZW4iLCJCaWdJbnQiLCJhdG9iIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxxQkFBcUI7SUFBQztJQUFPO0NBQVM7QUFFNUMsNkNBQTZDLEdBQzdDLE9BQU8sU0FBU0Msa0JBQWtCQyxLQUFjLEVBQUVDLE9BQTJCLE1BQU07SUFDakYsMENBQTBDO0lBQzFDLElBQUlELFVBQVVFLFdBQVc7UUFDdkIsTUFBTSxJQUFJQyxNQUFNLENBQUMsSUFBSSxFQUFFRixLQUFLLDZEQUE2RCxDQUFDO0lBQzVGO0lBRUEsTUFBTUcsZ0JBQWdCSixNQUFNSyxLQUFLLENBQUM7SUFFbEMsd0RBQXdEO0lBQ3hELElBQUlELGNBQWNFLE1BQU0sR0FBRyxLQUFLLENBQUNSLG1CQUFtQlMsUUFBUSxDQUFDSCxhQUFhLENBQUMsRUFBRSxHQUFHLE9BQU9KO0lBQ3ZGLCtDQUErQztJQUMvQyxPQUFPSSxjQUFjSSxNQUFNLENBQUMsR0FBR0MsSUFBSSxDQUFDO0FBQ3RDO0FBRUEsd0xBQXdMLEdBQ3hMLE9BQU8sU0FBU0Msa0JBQWtCVixLQUFhO0lBQzdDLE9BQU9XLE9BQU9DLEtBQUtaLE1BQU1LLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN4QyJ9
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { DiscordInviteCreate, DiscordInviteMetadata, GetMessagesAfter, GetMessagesAround, GetMessagesBefore, GetMessagesLimit, GetMessagesOptions } from '@discordeno/types';
|
|
2
2
|
export declare function isGetMessagesAfter(options: GetMessagesOptions): options is GetMessagesAfter;
|
|
3
3
|
export declare function isGetMessagesBefore(options: GetMessagesOptions): options is GetMessagesBefore;
|
|
4
4
|
export declare function isGetMessagesAround(options: GetMessagesOptions): options is GetMessagesAround;
|
|
5
5
|
export declare function isGetMessagesLimit(options: GetMessagesOptions): options is GetMessagesLimit;
|
|
6
6
|
export declare function isInviteWithMetadata(options: DiscordInviteCreate | DiscordInviteMetadata): options is DiscordInviteMetadata;
|
|
7
|
-
export declare function isContextApplicationCommand(command: CreateApplicationCommand): command is CreateContextApplicationCommand;
|
|
8
7
|
//# sourceMappingURL=typeguards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeguards.d.ts","sourceRoot":"","sources":["../src/typeguards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAG3B,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,IAAI,gBAAgB,CAE3F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,IAAI,iBAAiB,CAE7F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,IAAI,iBAAiB,CAE7F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,IAAI,gBAAgB,CAE3F;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,qBAAqB,GAAG,OAAO,IAAI,qBAAqB,CAE3H"}
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlZ3VhcmRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRGlzY29yZEludml0ZUNyZWF0ZSxcbiAgRGlzY29yZEludml0ZU1ldGFkYXRhLFxuICBHZXRNZXNzYWdlc0FmdGVyLFxuICBHZXRNZXNzYWdlc0Fyb3VuZCxcbiAgR2V0TWVzc2FnZXNCZWZvcmUsXG4gIEdldE1lc3NhZ2VzTGltaXQsXG4gIEdldE1lc3NhZ2VzT3B0aW9ucyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuaW1wb3J0IHsgaGFzUHJvcGVydHkgfSBmcm9tICcuL3V0aWxzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzR2V0TWVzc2FnZXNBZnRlcihvcHRpb25zOiBHZXRNZXNzYWdlc09wdGlvbnMpOiBvcHRpb25zIGlzIEdldE1lc3NhZ2VzQWZ0ZXIge1xuICByZXR1cm4gaGFzUHJvcGVydHkob3B0aW9ucywgJ2FmdGVyJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dldE1lc3NhZ2VzQmVmb3JlKG9wdGlvbnM6IEdldE1lc3NhZ2VzT3B0aW9ucyk6IG9wdGlvbnMgaXMgR2V0TWVzc2FnZXNCZWZvcmUge1xuICByZXR1cm4gaGFzUHJvcGVydHkob3B0aW9ucywgJ2JlZm9yZScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNHZXRNZXNzYWdlc0Fyb3VuZChvcHRpb25zOiBHZXRNZXNzYWdlc09wdGlvbnMpOiBvcHRpb25zIGlzIEdldE1lc3NhZ2VzQXJvdW5kIHtcbiAgcmV0dXJuIGhhc1Byb3BlcnR5KG9wdGlvbnMsICdhcm91bmQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzR2V0TWVzc2FnZXNMaW1pdChvcHRpb25zOiBHZXRNZXNzYWdlc09wdGlvbnMpOiBvcHRpb25zIGlzIEdldE1lc3NhZ2VzTGltaXQge1xuICByZXR1cm4gaGFzUHJvcGVydHkob3B0aW9ucywgJ2xpbWl0Jyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ludml0ZVdpdGhNZXRhZGF0YShvcHRpb25zOiBEaXNjb3JkSW52aXRlQ3JlYXRlIHwgRGlzY29yZEludml0ZU1ldGFkYXRhKTogb3B0aW9ucyBpcyBEaXNjb3JkSW52aXRlTWV0YWRhdGEge1xuICByZXR1cm4gIWhhc1Byb3BlcnR5KG9wdGlvbnMsICdjaGFubmVsX2lkJyk7XG59XG4iXSwibmFtZXMiOlsiaGFzUHJvcGVydHkiLCJpc0dldE1lc3NhZ2VzQWZ0ZXIiLCJvcHRpb25zIiwiaXNHZXRNZXNzYWdlc0JlZm9yZSIsImlzR2V0TWVzc2FnZXNBcm91bmQiLCJpc0dldE1lc3NhZ2VzTGltaXQiLCJpc0ludml0ZVdpdGhNZXRhZGF0YSJdLCJtYXBwaW5ncyI6IkFBU0EsU0FBU0EsV0FBVyxRQUFRLGFBQWE7QUFFekMsT0FBTyxTQUFTQyxtQkFBbUJDLE9BQTJCO0lBQzVELE9BQU9GLFlBQVlFLFNBQVM7QUFDOUI7QUFFQSxPQUFPLFNBQVNDLG9CQUFvQkQsT0FBMkI7SUFDN0QsT0FBT0YsWUFBWUUsU0FBUztBQUM5QjtBQUVBLE9BQU8sU0FBU0Usb0JBQW9CRixPQUEyQjtJQUM3RCxPQUFPRixZQUFZRSxTQUFTO0FBQzlCO0FBRUEsT0FBTyxTQUFTRyxtQkFBbUJILE9BQTJCO0lBQzVELE9BQU9GLFlBQVlFLFNBQVM7QUFDOUI7QUFFQSxPQUFPLFNBQVNJLHFCQUFxQkosT0FBb0Q7SUFDdkYsT0FBTyxDQUFDRixZQUFZRSxTQUFTO0FBQy9CIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlToBase64.d.ts","sourceRoot":"","sources":["../src/urlToBase64.ts"],"names":[],"mappings":"AAEA,uFAAuF;AACvF,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK9D"}
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91cmxUb0Jhc2U2NC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbmNvZGUgfSBmcm9tICcuL2Jhc2U2NC5qcyc7XG5cbi8qKiBDb252ZXJ0cyBhIHVybCB0byBiYXNlIDY0LiBVc2VmdWwgZm9yIGV4YW1wbGUsIHVwbG9hZGluZy9jcmVhdGluZyBzZXJ2ZXIgZW1vamlzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVybFRvQmFzZTY0KHVybDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgYnVmZmVyID0gYXdhaXQgZmV0Y2godXJsKS50aGVuKGFzeW5jIChyZXMpID0+IGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpKTtcbiAgY29uc3QgaW1hZ2VTdHIgPSBlbmNvZGUoYnVmZmVyKTtcbiAgY29uc3QgdHlwZSA9IHVybC5zdWJzdHJpbmcodXJsLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcbiAgcmV0dXJuIGBkYXRhOmltYWdlLyR7dHlwZX07YmFzZTY0LCR7aW1hZ2VTdHJ9YDtcbn1cbiJdLCJuYW1lcyI6WyJlbmNvZGUiLCJ1cmxUb0Jhc2U2NCIsInVybCIsImJ1ZmZlciIsImZldGNoIiwidGhlbiIsInJlcyIsImFycmF5QnVmZmVyIiwiaW1hZ2VTdHIiLCJ0eXBlIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE1BQU0sUUFBUSxjQUFjO0FBRXJDLHFGQUFxRixHQUNyRixPQUFPLGVBQWVDLFlBQVlDLEdBQVc7SUFDM0MsTUFBTUMsU0FBUyxNQUFNQyxNQUFNRixLQUFLRyxJQUFJLENBQUMsT0FBT0MsTUFBUSxNQUFNQSxJQUFJQyxXQUFXO0lBQ3pFLE1BQU1DLFdBQVdSLE9BQU9HO0lBQ3hCLE1BQU1NLE9BQU9QLElBQUlRLFNBQVMsQ0FBQ1IsSUFBSVMsV0FBVyxDQUFDLE9BQU87SUFDbEQsT0FBTyxDQUFDLFdBQVcsRUFBRUYsS0FBSyxRQUFRLEVBQUVELFVBQVU7QUFDaEQifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../src/urls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAElE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAEpD"}
|
package/dist/urls.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function skuLink(appId, skuId) {
|
|
2
|
+
return `https://discord.com/application-directory/${appId}/store/${skuId}`;
|
|
3
|
+
}
|
|
4
|
+
export function storeLink(appId) {
|
|
5
|
+
return `https://discord.com/application-directory/${appId}/store`;
|
|
6
|
+
}
|
|
7
|
+
export function soundLink(soundId) {
|
|
8
|
+
return `https://cdn.discordapp.com/soundboard-sounds/${soundId}`;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91cmxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQmlnU3RyaW5nIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc2t1TGluayhhcHBJZDogQmlnU3RyaW5nLCBza3VJZDogQmlnU3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBodHRwczovL2Rpc2NvcmQuY29tL2FwcGxpY2F0aW9uLWRpcmVjdG9yeS8ke2FwcElkfS9zdG9yZS8ke3NrdUlkfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdG9yZUxpbmsoYXBwSWQ6IEJpZ1N0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgaHR0cHM6Ly9kaXNjb3JkLmNvbS9hcHBsaWNhdGlvbi1kaXJlY3RvcnkvJHthcHBJZH0vc3RvcmVgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc291bmRMaW5rKHNvdW5kSWQ6IEJpZ1N0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vc291bmRib2FyZC1zb3VuZHMvJHtzb3VuZElkfWA7XG59XG4iXSwibmFtZXMiOlsic2t1TGluayIsImFwcElkIiwic2t1SWQiLCJzdG9yZUxpbmsiLCJzb3VuZExpbmsiLCJzb3VuZElkIl0sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLFNBQVNBLFFBQVFDLEtBQWdCLEVBQUVDLEtBQWdCO0lBQ3hELE9BQU8sQ0FBQywwQ0FBMEMsRUFBRUQsTUFBTSxPQUFPLEVBQUVDLE9BQU87QUFDNUU7QUFFQSxPQUFPLFNBQVNDLFVBQVVGLEtBQWdCO0lBQ3hDLE9BQU8sQ0FBQywwQ0FBMEMsRUFBRUEsTUFBTSxNQUFNLENBQUM7QUFDbkU7QUFFQSxPQUFPLFNBQVNHLFVBQVVDLE9BQWtCO0lBQzFDLE9BQU8sQ0FBQyw2Q0FBNkMsRUFBRUEsU0FBUztBQUNsRSJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrD;AAID,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,WAAW,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAExH;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAQtE"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Pause the execution for a given amount of milliseconds. */ export async function delay(ms) {
|
|
2
|
+
return new Promise((resolve)=>setTimeout(()=>{
|
|
3
|
+
resolve();
|
|
4
|
+
}, ms));
|
|
5
|
+
}
|
|
6
|
+
// Typescript is not so good as we developers so we need this little utility function to help it out
|
|
7
|
+
// Taken from https://fettblog.eu/typescript-hasownproperty/
|
|
8
|
+
/** TS save way to check if a property exists in an object */ export function hasProperty(obj, prop) {
|
|
9
|
+
return obj.hasOwnProperty(prop);
|
|
10
|
+
}
|
|
11
|
+
/** Convert `JSON.stringify`-unserializable record values for debugging purposes. */ export function jsonSafeReplacer(_key, value) {
|
|
12
|
+
switch(typeof value){
|
|
13
|
+
case 'bigint':
|
|
14
|
+
// Bigints are unserializable by `JSON.stringify`.
|
|
15
|
+
return String(value);
|
|
16
|
+
default:
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUGF1c2UgdGhlIGV4ZWN1dGlvbiBmb3IgYSBnaXZlbiBhbW91bnQgb2YgbWlsbGlzZWNvbmRzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGF5KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlKTogTm9kZUpTLlRpbWVvdXQgPT5cbiAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9LCBtcyksXG4gICk7XG59XG5cbi8vIFR5cGVzY3JpcHQgaXMgbm90IHNvIGdvb2QgYXMgd2UgZGV2ZWxvcGVycyBzbyB3ZSBuZWVkIHRoaXMgbGl0dGxlIHV0aWxpdHkgZnVuY3Rpb24gdG8gaGVscCBpdCBvdXRcbi8vIFRha2VuIGZyb20gaHR0cHM6Ly9mZXR0YmxvZy5ldS90eXBlc2NyaXB0LWhhc293bnByb3BlcnR5L1xuLyoqIFRTIHNhdmUgd2F5IHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzIGluIGFuIG9iamVjdCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1Byb3BlcnR5PFQgZXh0ZW5kcyB7fSwgWSBleHRlbmRzIFByb3BlcnR5S2V5ID0gc3RyaW5nPihvYmo6IFQsIHByb3A6IFkpOiBvYmogaXMgVCAmIFJlY29yZDxZLCB1bmtub3duPiB7XG4gIHJldHVybiBvYmouaGFzT3duUHJvcGVydHkocHJvcCk7XG59XG5cbi8qKiBDb252ZXJ0IGBKU09OLnN0cmluZ2lmeWAtdW5zZXJpYWxpemFibGUgcmVjb3JkIHZhbHVlcyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25TYWZlUmVwbGFjZXIoX2tleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgIGNhc2UgJ2JpZ2ludCc6XG4gICAgICAvLyBCaWdpbnRzIGFyZSB1bnNlcmlhbGl6YWJsZSBieSBgSlNPTi5zdHJpbmdpZnlgLlxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgZGVmYXVsdDogLy8gQW55IG90aGVyIHVuaGFuZGxlZCB0eXBlIHRoYXQgaXNuJ3Qgc3VwcG9zZWQgdG8gcmVxdWlyZSBjb252ZXJzaW9uLlxuICAgICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iXSwibmFtZXMiOlsiZGVsYXkiLCJtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsImhhc1Byb3BlcnR5Iiwib2JqIiwicHJvcCIsImhhc093blByb3BlcnR5IiwianNvblNhZmVSZXBsYWNlciIsIl9rZXkiLCJ2YWx1ZSIsIlN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTRELEdBQzVELE9BQU8sZUFBZUEsTUFBTUMsRUFBVTtJQUNwQyxPQUFPLElBQUlDLFFBQ1QsQ0FBQ0MsVUFDQ0MsV0FBVztZQUNURDtRQUNGLEdBQUdGO0FBRVQ7QUFFQSxvR0FBb0c7QUFDcEcsNERBQTREO0FBQzVELDJEQUEyRCxHQUMzRCxPQUFPLFNBQVNJLFlBQTBEQyxHQUFNLEVBQUVDLElBQU87SUFDdkYsT0FBT0QsSUFBSUUsY0FBYyxDQUFDRDtBQUM1QjtBQUVBLGtGQUFrRixHQUNsRixPQUFPLFNBQVNFLGlCQUFpQkMsSUFBWSxFQUFFQyxLQUFjO0lBQzNELE9BQVEsT0FBT0E7UUFDYixLQUFLO1lBQ0gsa0RBQWtEO1lBQ2xELE9BQU9DLE9BQU9EO1FBQ2hCO1lBQ0UsT0FBT0E7SUFDWDtBQUNGIn0=
|
package/package.json
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@discordeno/utils",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"types": "./dist/types/index.d.ts",
|
|
6
|
-
"exports": {
|
|
7
|
-
"types": "./dist/types/index.d.ts",
|
|
8
|
-
"import": "./dist/esm/index.js",
|
|
9
|
-
"require": "./dist/cjs/index.cjs"
|
|
10
|
-
},
|
|
3
|
+
"version": "22.0.1-next.0090dd2",
|
|
4
|
+
"exports": "./dist/index.js",
|
|
11
5
|
"type": "module",
|
|
12
6
|
"license": "Apache-2.0",
|
|
13
7
|
"repository": {
|
|
@@ -19,36 +13,33 @@
|
|
|
19
13
|
"!dist/.tsbuildinfo"
|
|
20
14
|
],
|
|
21
15
|
"scripts": {
|
|
22
|
-
"build": "swc src --strip-leading-paths
|
|
23
|
-
"build:type": "tsc --
|
|
16
|
+
"build": "swc src --strip-leading-paths src --out-dir dist",
|
|
17
|
+
"build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist",
|
|
24
18
|
"release-build": "yarn build && yarn build:type",
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"test:unit
|
|
28
|
-
"test:unit": "
|
|
29
|
-
"test:
|
|
30
|
-
"test:
|
|
31
|
-
"test:bun-unit": "bun ../../node_modules/mocha/bin/mocha.js --config ../../.mocharc.base.cjs 'tests/**/*.spec.ts'",
|
|
32
|
-
"test:type": "tsc --noEmit",
|
|
33
|
-
"test:test-type": "tsc --project tests/tsconfig.json"
|
|
19
|
+
"check": "biome check --write",
|
|
20
|
+
"test:unit": "c8 -r lcov mocha 'tests/**/*.spec.ts' && node ../../scripts/coveragePathFixing.js utils",
|
|
21
|
+
"test:deno-unit": "deno -A npm:mocha 'tests/**/*.spec.ts'",
|
|
22
|
+
"test:bun-unit": "bun --bun mocha 'tests/**/*.spec.ts'",
|
|
23
|
+
"test:test-type": "tsc --project tests/tsconfig.json",
|
|
24
|
+
"test:type": "tsc --noEmit"
|
|
34
25
|
},
|
|
35
26
|
"dependencies": {
|
|
36
|
-
"@discordeno/types": "
|
|
27
|
+
"@discordeno/types": "22.0.1-next.0090dd2"
|
|
37
28
|
},
|
|
38
29
|
"devDependencies": {
|
|
39
|
-
"@biomejs/biome": "2.1
|
|
40
|
-
"@swc/cli": "^0.
|
|
41
|
-
"@swc/core": "^1.13
|
|
42
|
-
"@types/chai": "^5.2.
|
|
30
|
+
"@biomejs/biome": "2.4.1",
|
|
31
|
+
"@swc/cli": "^0.8.0",
|
|
32
|
+
"@swc/core": "^1.15.13",
|
|
33
|
+
"@types/chai": "^5.2.3",
|
|
43
34
|
"@types/mocha": "^10.0.10",
|
|
44
|
-
"@types/node": "^
|
|
45
|
-
"@types/sinon": "^
|
|
35
|
+
"@types/node": "^25.3.0",
|
|
36
|
+
"@types/sinon": "^21.0.0",
|
|
46
37
|
"c8": "^10.1.3",
|
|
47
|
-
"chai": "^
|
|
48
|
-
"mocha": "
|
|
49
|
-
"sinon": "^21.0.
|
|
38
|
+
"chai": "^6.2.2",
|
|
39
|
+
"mocha": "^11.7.5",
|
|
40
|
+
"sinon": "^21.0.1",
|
|
50
41
|
"ts-node": "^10.9.2",
|
|
51
42
|
"tsconfig": "*",
|
|
52
|
-
"typescript": "^5.
|
|
43
|
+
"typescript": "^5.9.3"
|
|
53
44
|
}
|
|
54
45
|
}
|