@discordeno/utils 19.0.0-next.d525fba → 19.0.0-next.d75a3fa

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 (53) hide show
  1. package/README.md +6 -10
  2. package/dist/Collection.js +113 -2
  3. package/dist/Collection.js.map +1 -0
  4. package/dist/base64.js +262 -2
  5. package/dist/base64.js.map +1 -0
  6. package/dist/bucket.d.ts +36 -48
  7. package/dist/bucket.d.ts.map +1 -1
  8. package/dist/bucket.js +76 -2
  9. package/dist/bucket.js.map +1 -0
  10. package/dist/casing.d.ts +2 -2
  11. package/dist/casing.d.ts.map +1 -1
  12. package/dist/casing.js +51 -2
  13. package/dist/casing.js.map +1 -0
  14. package/dist/colors.d.ts +6 -2
  15. package/dist/colors.d.ts.map +1 -1
  16. package/dist/colors.js +467 -2
  17. package/dist/colors.js.map +1 -0
  18. package/dist/hash.d.ts.map +1 -1
  19. package/dist/hash.js +19 -2
  20. package/dist/hash.js.map +1 -0
  21. package/dist/images.d.ts.map +1 -1
  22. package/dist/images.js +66 -2
  23. package/dist/images.js.map +1 -0
  24. package/dist/index.d.ts +2 -2
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +17 -2
  27. package/dist/index.js.map +1 -0
  28. package/dist/logger.d.ts.map +1 -1
  29. package/dist/logger.js +130 -2
  30. package/dist/logger.js.map +1 -0
  31. package/dist/oauth2.d.ts +58 -0
  32. package/dist/oauth2.d.ts.map +1 -0
  33. package/dist/oauth2.js +16 -0
  34. package/dist/oauth2.js.map +1 -0
  35. package/dist/permissions.js +17 -2
  36. package/dist/permissions.js.map +1 -0
  37. package/dist/reactions.js +11 -2
  38. package/dist/reactions.js.map +1 -0
  39. package/dist/token.d.ts +1 -1
  40. package/dist/token.d.ts.map +1 -1
  41. package/dist/token.js +21 -2
  42. package/dist/token.js.map +1 -0
  43. package/dist/typeguards.js +15 -2
  44. package/dist/typeguards.js.map +1 -0
  45. package/dist/urlToBase64.js +9 -2
  46. package/dist/urlToBase64.js.map +1 -0
  47. package/dist/utils.d.ts.map +1 -1
  48. package/dist/utils.js +15 -2
  49. package/dist/utils.js.map +1 -0
  50. package/package.json +12 -12
  51. package/dist/files.d.ts +0 -4
  52. package/dist/files.d.ts.map +0 -1
  53. package/dist/files.js +0 -2
package/dist/images.js CHANGED
@@ -1,2 +1,66 @@
1
- import{iconBigintToHash as r}from"./hash.js";export function formatImageUrl(r,t=128,a){return`${r}.${a??(r.includes("/a_")?"gif":"jpg")}?size=${t}`}export function emojiUrl(r,t=!1){return`https://cdn.discordapp.com/emojis/${r}.${t?"gif":"png"}`}export function avatarUrl(t,a,n){return n?.avatar?formatImageUrl(`https://cdn.discordapp.com/avatars/${t}/${"string"==typeof n?.avatar?n.avatar:r(n?.avatar)}`,n?.size??128,n?.format):`https://cdn.discordapp.com/embed/avatars/${Number(a)%5}.png`}export function guildBannerUrl(t,a){return a.banner?formatImageUrl(`https://cdn.discordapp.com/banners/${t}/${"string"==typeof a.banner?a.banner:r(a.banner)}`,a.size??128,a.format):void 0}export function guildIconUrl(t,a,n){return a?formatImageUrl(`https://cdn.discordapp.com/icons/${t}/${"string"==typeof a?a:r(a)}`,n?.size??128,n?.format):void 0}export function guildSplashUrl(t,a,n){return a?formatImageUrl(`https://cdn.discordapp.com/splashes/${t}/${"string"==typeof a?a:r(a)}`,n?.size??128,n?.format):void 0}export function getWidgetImageUrl(r,t){let a=`https://cdn.discordapp.com/guilds/${r}/widget.png`;return t?.style&&(a+=`?style=${t.style}`),a}
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbWFnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zICovXG5pbXBvcnQgdHlwZSB7IEJpZ1N0cmluZywgR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5LCBJbWFnZUZvcm1hdCwgSW1hZ2VTaXplIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBpY29uQmlnaW50VG9IYXNoIH0gZnJvbSAnLi9oYXNoLmpzJ1xuXG4vKiogSGVscCBmb3JtYXQgYW4gaW1hZ2UgdXJsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEltYWdlVXJsKHVybDogc3RyaW5nLCBzaXplOiBJbWFnZVNpemUgPSAxMjgsIGZvcm1hdD86IEltYWdlRm9ybWF0KTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3VybH0uJHtmb3JtYXQgPz8gKHVybC5pbmNsdWRlcygnL2FfJykgPyAnZ2lmJyA6ICdqcGcnKX0/c2l6ZT0ke3NpemV9YFxufVxuXG4vKipcbiAqIEdldCB0aGUgdXJsIGZvciBhbiBlbW9qaS5cbiAqXG4gKiBAcGFyYW0gZW1vamlJZCBUaGUgaWQgb2YgdGhlIGVtb2ppXG4gKiBAcGFyYW0gYW5pbWF0ZWQgV2hldGhlciBvciBub3QgdGhlIGVtb2ppIGlzIGFuaW1hdGVkXG4gKiBAcmV0dXJucyBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtb2ppVXJsKGVtb2ppSWQ6IEJpZ1N0cmluZywgYW5pbWF0ZWQgPSBmYWxzZSk6IHN0cmluZyB7XG4gIHJldHVybiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZW1vamlzLyR7ZW1vamlJZH0uJHthbmltYXRlZCA/ICdnaWYnIDogJ3BuZyd9YFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byBhIHVzZXIncyBhdmF0YXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGdldCB0aGUgYXZhdGFyIG9mLlxuICogQHBhcmFtIGRpc2NyaW1pbmF0b3IgLSBUaGUgdXNlcidzIGRpc2NyaW1pbmF0b3IuICg0LWRpZ2l0IHRhZyBhZnRlciB0aGUgaGFzaHRhZy4pXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF2YXRhclVybChcbiAgdXNlcklkOiBCaWdTdHJpbmcsXG4gIGRpc2NyaW1pbmF0b3I6IHN0cmluZyxcbiAgb3B0aW9ucz86IHtcbiAgICBhdmF0YXI6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZFxuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmF2YXRhclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hdmF0YXJzLyR7dXNlcklkfS8ke3R5cGVvZiBvcHRpb25zPy5hdmF0YXIgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5hdmF0YXIgOiBpY29uQmlnaW50VG9IYXNoKG9wdGlvbnM/LmF2YXRhcil9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9lbWJlZC9hdmF0YXJzLyR7TnVtYmVyKGRpc2NyaW1pbmF0b3IpICUgNX0ucG5nYFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byB0aGUgZ3VpbGQgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgYmFubmVyIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIG5vIGJhbm5lciBoYXMgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZEJhbm5lclVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zOiB7XG4gICAgYmFubmVyPzogc3RyaW5nIHwgYmlnaW50XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9ucy5iYW5uZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYmFubmVycy8ke2d1aWxkSWR9LyR7dHlwZW9mIG9wdGlvbnMuYmFubmVyID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuYmFubmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmJhbm5lcil9YCxcbiAgICAgICAgb3B0aW9ucy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gdGhlIGd1aWxkIGljb24gc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaW5rIHRvIHRoZSBiYW5uZXIgZm9yLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAgaWYgbm8gYmFubmVyIGhhcyBiZWVuIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWxkSWNvblVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICBpbWFnZUhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGltYWdlSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vaWNvbnMvJHtndWlsZElkfS8ke3R5cGVvZiBpbWFnZUhhc2ggPT09ICdzdHJpbmcnXG4gICAgICA/IGltYWdlSGFzaFxuICAgICAgOiBpY29uQmlnaW50VG9IYXNoKGltYWdlSGFzaCl9YCxcbiAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgb3B0aW9ucz8uZm9ybWF0XG4gICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSBndWlsZCBzcGxhc2ggc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBzcGxhc2ggb2YuXG4gKiBAcGFyYW0gaW1hZ2VIYXNoIC0gVGhlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHNwbGFzaCBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBndWlsZCBkb2VzIG5vdCBoYXZlIGEgc3BsYXNoIGltYWdlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWxkU3BsYXNoVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIGltYWdlSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9XG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaW1hZ2VIYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9zcGxhc2hlcy8ke2d1aWxkSWR9LyR7dHlwZW9mIGltYWdlSGFzaCA9PT0gJ3N0cmluZydcbiAgICAgID8gaW1hZ2VIYXNoXG4gICAgICA6IGljb25CaWdpbnRUb0hhc2goaW1hZ2VIYXNoKX1gLFxuICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICBvcHRpb25zPy5mb3JtYXRcbiAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gdGhlIGd1aWxkIHdpZGdldCBpbWFnZSBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpbmsgdG8gdGhlIHdpZGdldCBpbWFnZSBmb3IuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdpZGdldEltYWdlVXJsIChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zPzogR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5XG4pOiBzdHJpbmcge1xuICBsZXQgdXJsID0gYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2d1aWxkcy8ke2d1aWxkSWR9L3dpZGdldC5wbmdgXG5cbiAgaWYgKG9wdGlvbnM/LnN0eWxlKSB7XG4gICAgdXJsICs9IGA/c3R5bGU9JHtvcHRpb25zLnN0eWxlfWBcbiAgfVxuXG4gIHJldHVybiB1cmxcbn1cbiJdLCJuYW1lcyI6WyJpY29uQmlnaW50VG9IYXNoIiwiZm9ybWF0SW1hZ2VVcmwiLCJ1cmwiLCJzaXplIiwiZm9ybWF0IiwiaW5jbHVkZXMiLCJlbW9qaVVybCIsImVtb2ppSWQiLCJhbmltYXRlZCIsImF2YXRhclVybCIsInVzZXJJZCIsImRpc2NyaW1pbmF0b3IiLCJvcHRpb25zIiwiYXZhdGFyIiwiTnVtYmVyIiwiZ3VpbGRCYW5uZXJVcmwiLCJndWlsZElkIiwiYmFubmVyIiwidW5kZWZpbmVkIiwiZ3VpbGRJY29uVXJsIiwiaW1hZ2VIYXNoIiwiZ3VpbGRTcGxhc2hVcmwiLCJnZXRXaWRnZXRJbWFnZVVybCIsInN0eWxlIl0sIm1hcHBpbmdzIjoiQUFFQSxPQUFTQSxvQkFBQUEsQ0FBZ0IsS0FBUSxXQUFXLEFBRzVDLFFBQU8sU0FBU0MsZUFBZUMsQ0FBVyxDQUFFQyxFQUFrQixHQUFHLENBQUVDLENBQW9CLENBQVUsQ0FDL0YsTUFBTyxDQUFDLEVBQUVGLEVBQUksQ0FBQyxFQUFFRSxHQUFXRixDQUFBQSxFQUFJRyxRQUFRLENBQUMsT0FBUyxNQUFRLEtBQUssQUFBRCxFQUFHLE1BQU0sRUFBRUYsRUFBSyxDQUFDLEFBQ2pGLENBQUMsQUFTRCxPQUFPLFNBQVNHLFNBQVNDLENBQWtCLENBQUVDLEVBQVcsQ0FBQSxDQUFLLENBQVUsQ0FDckUsTUFBTyxDQUFDLGtDQUFrQyxFQUFFRCxFQUFRLENBQUMsRUFBRUMsRUFBVyxNQUFRLEtBQUssQ0FBQyxDQUFDLEFBQ25GLENBQUMsQUFVRCxPQUFPLFNBQVNDLFVBQ2RDLENBQWlCLENBQ2pCQyxDQUFxQixDQUNyQkMsQ0FJQyxDQUNPLENBQ1IsT0FBT0EsR0FBU0MsT0FDWlosZUFDRSxDQUFDLG1DQUFtQyxFQUFFUyxFQUFPLENBQUMsRUFBRSxBQUEyQixVQUEzQixPQUFPRSxHQUFTQyxPQUFzQkQsRUFBUUMsTUFBTSxDQUFHYixFQUFpQlksR0FBU0MsT0FBTyxDQUFDLENBQUMsQ0FDMUlELEdBQVNULE1BQVEsSUFDakJTLEdBQVNSLFFBRVgsQ0FBQyx5Q0FBeUMsRUFBRVUsT0FBT0gsR0FBaUIsRUFBRSxJQUFJLENBQUMsQUFDakYsQ0FBQyxBQVNELE9BQU8sU0FBU0ksZUFDZEMsQ0FBa0IsQ0FDbEJKLENBSUMsQ0FDbUIsQ0FDcEIsT0FBT0EsRUFBUUssTUFBTSxDQUNqQmhCLGVBQ0UsQ0FBQyxtQ0FBbUMsRUFBRWUsRUFBUSxDQUFDLEVBQUUsQUFBMEIsVUFBMUIsT0FBT0osRUFBUUssTUFBTSxDQUFnQkwsRUFBUUssTUFBTSxDQUFHakIsRUFBaUJZLEVBQVFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDeklMLEVBQVFULElBQUksRUFBSSxJQUNoQlMsRUFBUVIsTUFBTSxFQUVoQmMsS0FBQUEsQ0FBUyxBQUNmLENBQUMsQUFTRCxPQUFPLFNBQVNDLGFBQ2RILENBQWtCLENBQ2xCSSxDQUFnQyxDQUNoQ1IsQ0FHQyxDQUNtQixDQUNwQixPQUFPUSxFQUNIbkIsZUFDQSxDQUFDLGlDQUFpQyxFQUFFZSxFQUFRLENBQUMsRUFBRSxBQUFxQixVQUFyQixPQUFPSSxFQUNwREEsRUFDQXBCLEVBQWlCb0IsRUFBVSxDQUFDLENBQUMsQ0FDL0JSLEdBQVNULE1BQVEsSUFDakJTLEdBQVNSLFFBRVRjLEtBQUFBLENBQVMsQUFDZixDQUFDLEFBVUQsT0FBTyxTQUFTRyxlQUNkTCxDQUFrQixDQUNsQkksQ0FBZ0MsQ0FDaENSLENBR0MsQ0FDbUIsQ0FDcEIsT0FBT1EsRUFDSG5CLGVBQ0EsQ0FBQyxvQ0FBb0MsRUFBRWUsRUFBUSxDQUFDLEVBQUUsQUFBcUIsVUFBckIsT0FBT0ksRUFDdkRBLEVBQ0FwQixFQUFpQm9CLEVBQVUsQ0FBQyxDQUFDLENBQy9CUixHQUFTVCxNQUFRLElBQ2pCUyxHQUFTUixRQUVUYyxLQUFBQSxDQUFTLEFBQ2YsQ0FBQyxBQVNELE9BQU8sU0FBU0ksa0JBQ2ROLENBQWtCLENBQ2xCSixDQUFrQyxDQUMxQixDQUNSLElBQUlWLEVBQU0sQ0FBQyxrQ0FBa0MsRUFBRWMsRUFBUSxXQUFXLENBQUMsQ0FNbkUsT0FKSUosR0FBU1csT0FDWHJCLENBQUFBLEdBQU8sQ0FBQyxPQUFPLEVBQUVVLEVBQVFXLEtBQUssQ0FBQyxDQUFDLEFBQUQsRUFHMUJyQixDQUNULENBQUMifQ==
1
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */ import { iconBigintToHash } from './hash.js';
2
+ /** Help format an image url. */ export function formatImageUrl(url, size = 128, format) {
3
+ return `${url}.${format ?? (url.includes('/a_') ? 'gif' : 'jpg')}?size=${size}`;
4
+ }
5
+ /**
6
+ * Get the url for an emoji.
7
+ *
8
+ * @param emojiId The id of the emoji
9
+ * @param animated Whether or not the emoji is animated
10
+ * @returns string
11
+ */ export function emojiUrl(emojiId, animated = false) {
12
+ return `https://cdn.discordapp.com/emojis/${emojiId}.${animated ? 'gif' : 'png'}`;
13
+ }
14
+ /**
15
+ * Builds a URL to a user's avatar stored in the Discord CDN.
16
+ *
17
+ * @param userId - The ID of the user to get the avatar of.
18
+ * @param discriminator - The user's discriminator. (4-digit tag after the hashtag.)
19
+ * @param options - The parameters for the building of the URL.
20
+ * @returns The link to the resource.
21
+ */ export function avatarUrl(userId, discriminator, options) {
22
+ return options?.avatar ? formatImageUrl(`https://cdn.discordapp.com/avatars/${userId}/${typeof options.avatar === 'string' ? options.avatar : iconBigintToHash(options.avatar)}`, options?.size ?? 128, options?.format) : `https://cdn.discordapp.com/embed/avatars/${discriminator === '0' ? (BigInt(userId) >> BigInt(22)) % BigInt(6) : Number(discriminator) % 5}.png`;
23
+ }
24
+ /**
25
+ * Builds a URL to the guild banner stored in the Discord CDN.
26
+ *
27
+ * @param guildId - The ID of the guild to get the link to the banner for.
28
+ * @param options - The parameters for the building of the URL.
29
+ * @returns The link to the resource or `undefined` if no banner has been set.
30
+ */ export function guildBannerUrl(guildId, options) {
31
+ return options.banner ? formatImageUrl(`https://cdn.discordapp.com/banners/${guildId}/${typeof options.banner === 'string' ? options.banner : iconBigintToHash(options.banner)}`, options.size ?? 128, options.format) : undefined;
32
+ }
33
+ /**
34
+ * Builds a URL to the guild icon stored in the Discord CDN.
35
+ *
36
+ * @param guildId - The ID of the guild to get the link to the banner for.
37
+ * @param options - The parameters for the building of the URL.
38
+ * @returns The link to the resource or `undefined` if no banner has been set.
39
+ */ export function guildIconUrl(guildId, imageHash, options) {
40
+ return imageHash ? formatImageUrl(`https://cdn.discordapp.com/icons/${guildId}/${typeof imageHash === 'string' ? imageHash : iconBigintToHash(imageHash)}`, options?.size ?? 128, options?.format) : undefined;
41
+ }
42
+ /**
43
+ * Builds the URL to a guild splash stored in the Discord CDN.
44
+ *
45
+ * @param guildId - The ID of the guild to get the splash of.
46
+ * @param imageHash - The hash identifying the splash image.
47
+ * @param options - The parameters for the building of the URL.
48
+ * @returns The link to the resource or `undefined` if the guild does not have a splash image set.
49
+ */ export function guildSplashUrl(guildId, imageHash, options) {
50
+ return imageHash ? formatImageUrl(`https://cdn.discordapp.com/splashes/${guildId}/${typeof imageHash === 'string' ? imageHash : iconBigintToHash(imageHash)}`, options?.size ?? 128, options?.format) : undefined;
51
+ }
52
+ /**
53
+ * Builds a URL to the guild widget image stored in the Discord CDN.
54
+ *
55
+ * @param guildId - The ID of the guild to get the link to the widget image for.
56
+ * @param options - The parameters for the building of the URL.
57
+ * @returns The link to the resource.
58
+ */ export function getWidgetImageUrl(guildId, options) {
59
+ let url = `https://discordapp.com/api/guilds/${guildId}/widget.png`;
60
+ if (options?.style) {
61
+ url += `?style=${options.style}`;
62
+ }
63
+ return url;
64
+ }
65
+
66
+ //# sourceMappingURL=images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/images.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/restrict-template-expressions */\nimport type { BigString, GetGuildWidgetImageQuery, ImageFormat, ImageSize } from '@discordeno/types'\nimport { iconBigintToHash } from './hash.js'\n\n/** Help format an image url. */\nexport function formatImageUrl(url: string, size: ImageSize = 128, format?: ImageFormat): string {\n return `${url}.${format ?? (url.includes('/a_') ? 'gif' : 'jpg')}?size=${size}`\n}\n\n/**\n * Get the url for an emoji.\n *\n * @param emojiId The id of the emoji\n * @param animated Whether or not the emoji is animated\n * @returns string\n */\nexport function emojiUrl(emojiId: BigString, animated = false): string {\n return `https://cdn.discordapp.com/emojis/${emojiId}.${animated ? 'gif' : 'png'}`\n}\n\n/**\n * Builds a URL to a user's avatar stored in the Discord CDN.\n *\n * @param userId - The ID of the user to get the avatar of.\n * @param discriminator - The user's discriminator. (4-digit tag after the hashtag.)\n * @param options - The parameters for the building of the URL.\n * @returns The link to the resource.\n */\nexport function avatarUrl(\n userId: BigString,\n discriminator: string,\n options?: {\n avatar: BigString | undefined\n size?: ImageSize\n format?: ImageFormat\n },\n): string {\n return options?.avatar\n ? formatImageUrl(\n `https://cdn.discordapp.com/avatars/${userId}/${typeof options.avatar === 'string' ? options.avatar : iconBigintToHash(options.avatar)}`,\n options?.size ?? 128,\n options?.format,\n )\n : `https://cdn.discordapp.com/embed/avatars/${discriminator === '0' ? (BigInt(userId) >> BigInt(22)) % BigInt(6) : Number(discriminator) % 5}.png`\n}\n\n/**\n * Builds a URL to the guild banner stored in the Discord CDN.\n *\n * @param guildId - The ID of the guild to get the link to the banner for.\n * @param options - The parameters for the building of the URL.\n * @returns The link to the resource or `undefined` if no banner has been set.\n */\nexport function guildBannerUrl(\n guildId: BigString,\n options: {\n banner?: string | bigint\n size?: ImageSize\n format?: ImageFormat\n },\n): string | undefined {\n return options.banner\n ? formatImageUrl(\n `https://cdn.discordapp.com/banners/${guildId}/${typeof options.banner === 'string' ? options.banner : iconBigintToHash(options.banner)}`,\n options.size ?? 128,\n options.format,\n )\n : undefined\n}\n\n/**\n * Builds a URL to the guild icon stored in the Discord CDN.\n *\n * @param guildId - The ID of the guild to get the link to the banner for.\n * @param options - The parameters for the building of the URL.\n * @returns The link to the resource or `undefined` if no banner has been set.\n */\nexport function guildIconUrl(\n guildId: BigString,\n imageHash: BigString | undefined,\n options?: {\n size?: ImageSize\n format?: ImageFormat\n },\n): string | undefined {\n return imageHash\n ? formatImageUrl(\n `https://cdn.discordapp.com/icons/${guildId}/${typeof imageHash === 'string' ? imageHash : iconBigintToHash(imageHash)}`,\n options?.size ?? 128,\n options?.format,\n )\n : undefined\n}\n\n/**\n * Builds the URL to a guild splash stored in the Discord CDN.\n *\n * @param guildId - The ID of the guild to get the splash of.\n * @param imageHash - The hash identifying the splash image.\n * @param options - The parameters for the building of the URL.\n * @returns The link to the resource or `undefined` if the guild does not have a splash image set.\n */\nexport function guildSplashUrl(\n guildId: BigString,\n imageHash: BigString | undefined,\n options?: {\n size?: ImageSize\n format?: ImageFormat\n },\n): string | undefined {\n return imageHash\n ? formatImageUrl(\n `https://cdn.discordapp.com/splashes/${guildId}/${typeof imageHash === 'string' ? imageHash : iconBigintToHash(imageHash)}`,\n options?.size ?? 128,\n options?.format,\n )\n : undefined\n}\n\n/**\n * Builds a URL to the guild widget image stored in the Discord CDN.\n *\n * @param guildId - The ID of the guild to get the link to the widget image for.\n * @param options - The parameters for the building of the URL.\n * @returns The link to the resource.\n */\nexport function getWidgetImageUrl(guildId: BigString, options?: GetGuildWidgetImageQuery): string {\n let url = `https://discordapp.com/api/guilds/${guildId}/widget.png`\n\n if (options?.style) {\n url += `?style=${options.style}`\n }\n\n return url\n}\n"],"names":["iconBigintToHash","formatImageUrl","url","size","format","includes","emojiUrl","emojiId","animated","avatarUrl","userId","discriminator","options","avatar","BigInt","Number","guildBannerUrl","guildId","banner","undefined","guildIconUrl","imageHash","guildSplashUrl","getWidgetImageUrl","style"],"mappings":"AAAA,mEAAmE,GAEnE,SAASA,gBAAgB,QAAQ,YAAW;AAE5C,8BAA8B,GAC9B,OAAO,SAASC,eAAeC,GAAW,EAAEC,OAAkB,GAAG,EAAEC,MAAoB,EAAU;IAC/F,OAAO,CAAC,EAAEF,IAAI,CAAC,EAAEE,UAAWF,CAAAA,IAAIG,QAAQ,CAAC,SAAS,QAAQ,KAAK,AAAD,EAAG,MAAM,EAAEF,KAAK,CAAC;AACjF,CAAC;AAED;;;;;;CAMC,GACD,OAAO,SAASG,SAASC,OAAkB,EAAEC,WAAW,KAAK,EAAU;IACrE,OAAO,CAAC,kCAAkC,EAAED,QAAQ,CAAC,EAAEC,WAAW,QAAQ,KAAK,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;;CAOC,GACD,OAAO,SAASC,UACdC,MAAiB,EACjBC,aAAqB,EACrBC,OAIC,EACO;IACR,OAAOA,SAASC,SACZZ,eACE,CAAC,mCAAmC,EAAES,OAAO,CAAC,EAAE,OAAOE,QAAQC,MAAM,KAAK,WAAWD,QAAQC,MAAM,GAAGb,iBAAiBY,QAAQC,MAAM,CAAC,CAAC,CAAC,EACxID,SAAST,QAAQ,KACjBS,SAASR,UAEX,CAAC,yCAAyC,EAAEO,kBAAkB,MAAM,AAACG,CAAAA,OAAOJ,WAAWI,OAAO,GAAE,IAAKA,OAAO,KAAKC,OAAOJ,iBAAiB,CAAC,CAAC,IAAI,CAAC;AACtJ,CAAC;AAED;;;;;;CAMC,GACD,OAAO,SAASK,eACdC,OAAkB,EAClBL,OAIC,EACmB;IACpB,OAAOA,QAAQM,MAAM,GACjBjB,eACE,CAAC,mCAAmC,EAAEgB,QAAQ,CAAC,EAAE,OAAOL,QAAQM,MAAM,KAAK,WAAWN,QAAQM,MAAM,GAAGlB,iBAAiBY,QAAQM,MAAM,CAAC,CAAC,CAAC,EACzIN,QAAQT,IAAI,IAAI,KAChBS,QAAQR,MAAM,IAEhBe,SAAS;AACf,CAAC;AAED;;;;;;CAMC,GACD,OAAO,SAASC,aACdH,OAAkB,EAClBI,SAAgC,EAChCT,OAGC,EACmB;IACpB,OAAOS,YACHpB,eACE,CAAC,iCAAiC,EAAEgB,QAAQ,CAAC,EAAE,OAAOI,cAAc,WAAWA,YAAYrB,iBAAiBqB,UAAU,CAAC,CAAC,EACxHT,SAAST,QAAQ,KACjBS,SAASR,UAEXe,SAAS;AACf,CAAC;AAED;;;;;;;CAOC,GACD,OAAO,SAASG,eACdL,OAAkB,EAClBI,SAAgC,EAChCT,OAGC,EACmB;IACpB,OAAOS,YACHpB,eACE,CAAC,oCAAoC,EAAEgB,QAAQ,CAAC,EAAE,OAAOI,cAAc,WAAWA,YAAYrB,iBAAiBqB,UAAU,CAAC,CAAC,EAC3HT,SAAST,QAAQ,KACjBS,SAASR,UAEXe,SAAS;AACf,CAAC;AAED;;;;;;CAMC,GACD,OAAO,SAASI,kBAAkBN,OAAkB,EAAEL,OAAkC,EAAU;IAChG,IAAIV,MAAM,CAAC,kCAAkC,EAAEe,QAAQ,WAAW,CAAC;IAEnE,IAAIL,SAASY,OAAO;QAClBtB,OAAO,CAAC,OAAO,EAAEU,QAAQY,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,OAAOtB;AACT,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
+ export * from './Collection.js';
1
2
  export * from './base64.js';
2
3
  export * from './bucket.js';
3
4
  export * from './casing.js';
4
- export * from './Collection.js';
5
5
  export * from './colors.js';
6
- export * from './files.js';
7
6
  export * from './hash.js';
8
7
  export * from './images.js';
9
8
  export * from './logger.js';
9
+ export * from './oauth2.js';
10
10
  export * from './permissions.js';
11
11
  export * from './reactions.js';
12
12
  export * from './token.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -1,2 +1,17 @@
1
- export*from"./base64.js";export*from"./bucket.js";export*from"./casing.js";export*from"./Collection.js";export*from"./colors.js";export*from"./files.js";export*from"./hash.js";export*from"./images.js";export*from"./logger.js";export*from"./permissions.js";export*from"./reactions.js";export*from"./token.js";export*from"./typeguards.js";export*from"./urlToBase64.js";export*from"./utils.js";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Jhc2U2NC5qcydcbmV4cG9ydCAqIGZyb20gJy4vYnVja2V0LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9jYXNpbmcuanMnXG5leHBvcnQgKiBmcm9tICcuL0NvbGxlY3Rpb24uanMnXG5leHBvcnQgKiBmcm9tICcuL2NvbG9ycy5qcydcbmV4cG9ydCAqIGZyb20gJy4vZmlsZXMuanMnXG5leHBvcnQgKiBmcm9tICcuL2hhc2guanMnXG5leHBvcnQgKiBmcm9tICcuL2ltYWdlcy5qcydcbmV4cG9ydCAqIGZyb20gJy4vbG9nZ2VyLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9wZXJtaXNzaW9ucy5qcydcbmV4cG9ydCAqIGZyb20gJy4vcmVhY3Rpb25zLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi90b2tlbi5qcydcbmV4cG9ydCAqIGZyb20gJy4vdHlwZWd1YXJkcy5qcydcbmV4cG9ydCAqIGZyb20gJy4vdXJsVG9CYXNlNjQuanMnXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzLmpzJ1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQWMsYUFBYSxBQUMzQixZQUFjLGFBQWEsQUFDM0IsWUFBYyxhQUFhLEFBQzNCLFlBQWMsaUJBQWlCLEFBQy9CLFlBQWMsYUFBYSxBQUMzQixZQUFjLFlBQVksQUFDMUIsWUFBYyxXQUFXLEFBQ3pCLFlBQWMsYUFBYSxBQUMzQixZQUFjLGFBQWEsQUFDM0IsWUFBYyxrQkFBa0IsQUFDaEMsWUFBYyxnQkFBZ0IsQUFDOUIsWUFBYyxZQUFZLEFBQzFCLFlBQWMsaUJBQWlCLEFBQy9CLFlBQWMsa0JBQWtCLEFBQ2hDLFlBQWMsWUFBWSJ9
1
+ export * from './Collection.js';
2
+ export * from './base64.js';
3
+ export * from './bucket.js';
4
+ export * from './casing.js';
5
+ export * from './colors.js';
6
+ export * from './hash.js';
7
+ export * from './images.js';
8
+ export * from './logger.js';
9
+ export * from './oauth2.js';
10
+ export * from './permissions.js';
11
+ export * from './reactions.js';
12
+ export * from './token.js';
13
+ export * from './typeguards.js';
14
+ export * from './urlToBase64.js';
15
+ export * from './utils.js';
16
+
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './Collection.js'\nexport * from './base64.js'\nexport * from './bucket.js'\nexport * from './casing.js'\nexport * from './colors.js'\nexport * from './hash.js'\nexport * from './images.js'\nexport * from './logger.js'\nexport * from './oauth2.js'\nexport * from './permissions.js'\nexport * from './reactions.js'\nexport * from './token.js'\nexport * from './typeguards.js'\nexport * from './urlToBase64.js'\nexport * from './utils.js'\n"],"names":[],"mappings":"AAAA,cAAc,kBAAiB;AAC/B,cAAc,cAAa;AAC3B,cAAc,cAAa;AAC3B,cAAc,cAAa;AAC3B,cAAc,cAAa;AAC3B,cAAc,YAAW;AACzB,cAAc,cAAa;AAC3B,cAAc,cAAa;AAC3B,cAAc,cAAa;AAC3B,cAAc,mBAAkB;AAChC,cAAc,iBAAgB;AAC9B,cAAc,aAAY;AAC1B,cAAc,kBAAiB;AAC/B,cAAc,mBAAkB;AAChC,cAAc,aAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAGA,oBAAY,SAAS;IACnB,KAAK,IAAA;IACL,IAAI,IAAA;IACJ,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,KAAK,IAAA;CACN;AAED,oBAAY,QAAQ;IAClB,OAAO,IAAA;IACP,IAAI,IAAA;CACL;AAmBD,wBAAgB,YAAY,CAAC,EAC3B,QAAyB,EACzB,IAAI,GACL,GAAE;IACD,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACT;iBAGgB,SAAS,WAAW,GAAG,EAAE;sBAkCpB,QAAQ;sBAJR,SAAS;qBAQV,GAAG,EAAE;oBAKN,GAAG,EAAE;oBAKL,GAAG,EAAE;qBAKJ,GAAG,EAAE;qBAKL,GAAG,EAAE;EAe9B;AAED,eAAO,MAAM,MAAM;iBA3EG,SAAS,WAAW,GAAG,EAAE;sBAkCpB,QAAQ;sBAJR,SAAS;qBAQV,GAAG,EAAE;oBAKN,GAAG,EAAE;oBAKL,GAAG,EAAE;qBAKJ,GAAG,EAAE;qBAKL,GAAG,EAAE;CAiB2B,CAAA;AAC1D,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAIA,oBAAY,SAAS;IACnB,KAAK,IAAA;IACL,IAAI,IAAA;IACJ,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,KAAK,IAAA;CACN;AAED,oBAAY,QAAQ;IAClB,OAAO,IAAA;IACP,IAAI,IAAA;CACL;AAmBD,wBAAgB,YAAY,CAAC,EAC3B,QAAyB,EACzB,IAAI,GACL,GAAE;IACD,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACT;iBAGgB,SAAS,WAAW,GAAG,EAAE;sBAkCpB,QAAQ;sBAJR,SAAS;qBAQV,GAAG,EAAE;oBAKN,GAAG,EAAE;oBAKL,GAAG,EAAE;qBAKJ,GAAG,EAAE;qBAKL,GAAG,EAAE;EAe9B;AAED,eAAO,MAAM,MAAM;iBA3EG,SAAS,WAAW,GAAG,EAAE;sBAkCpB,QAAQ;sBAJR,SAAS;qBAQV,GAAG,EAAE;oBAKN,GAAG,EAAE;oBAKL,GAAG,EAAE;qBAKJ,GAAG,EAAE;qBAKL,GAAG,EAAE;CAiB2B,CAAA;AAC1D,eAAe,MAAM,CAAA"}
package/dist/logger.js CHANGED
@@ -1,2 +1,130 @@
1
- import{bgBrightMagenta as e,black as o,bold as t,cyan as n,gray as r,italic as L,red as l,yellow as g}from"./colors.js";export var LogLevels;!function(LogLevels){LogLevels[LogLevels.Debug=0]="Debug",LogLevels[LogLevels.Info=1]="Info",LogLevels[LogLevels.Warn=2]="Warn",LogLevels[LogLevels.Error=3]="Error",LogLevels[LogLevels.Fatal=4]="Fatal"}(LogLevels||(LogLevels={}));export var LogDepth;!function(LogDepth){LogDepth[LogDepth.Minimal=0]="Minimal",LogDepth[LogDepth.Full=1]="Full"}(LogDepth||(LogDepth={}));let s=new Map([[0,"DEBUG"],[1,"INFO"],[2,"WARN"],[3,"ERROR"],[4,"FATAL"]]),a=e=>e,c=new Map([[0,r],[1,n],[2,g],[3,e=>l(e)],[4,e=>l(t(L(e)))]]);export function createLogger({logLevel:t=1,name:n}={}){let r=0;function L(r,...L){if(r<t)return;let l=c.get(r);l||(l=a);let g=new Date,u=[e(o(`[${g.toLocaleDateString()} ${g.toLocaleTimeString()}]`)),l(s.get(r)??"DEBUG"),n?`${n} >`:">",...L];switch(r){case 0:return console.debug(...u);case 1:return console.info(...u);case 2:return console.warn(...u);case 3:case 4:return console.error(...u);default:return console.log(...u)}}return{log:L,setDepth:function(e){r=e},setLevel:function(e){t=e},debug:function(...e){0===r?L(0,e[0]):L(0,...e)},info:function(...e){0===r?L(1,e[0]):L(1,...e)},warn:function(...e){0===r?L(2,e[0]):L(2,...e)},error:function(...e){0===r?L(3,e[0]):L(3,...e)},fatal:function(...e){0===r?L(4,e[0]):L(4,...e)}}}export const logger=createLogger({name:"Discordeno"});export default logger;
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2dnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlICovXG5pbXBvcnQgeyBiZ0JyaWdodE1hZ2VudGEsIGJsYWNrLCBib2xkLCBjeWFuLCBncmF5LCBpdGFsaWMsIHJlZCwgeWVsbG93IH0gZnJvbSAnLi9jb2xvcnMuanMnXG5cbmV4cG9ydCBlbnVtIExvZ0xldmVscyB7XG4gIERlYnVnLFxuICBJbmZvLFxuICBXYXJuLFxuICBFcnJvcixcbiAgRmF0YWwsXG59XG5cbmV4cG9ydCBlbnVtIExvZ0RlcHRoIHtcbiAgTWluaW1hbCxcbiAgRnVsbCxcbn1cblxuY29uc3QgcHJlZml4ZXMgPSBuZXcgTWFwPExvZ0xldmVscywgc3RyaW5nPihbXG4gIFtMb2dMZXZlbHMuRGVidWcsICdERUJVRyddLFxuICBbTG9nTGV2ZWxzLkluZm8sICdJTkZPJ10sXG4gIFtMb2dMZXZlbHMuV2FybiwgJ1dBUk4nXSxcbiAgW0xvZ0xldmVscy5FcnJvciwgJ0VSUk9SJ10sXG4gIFtMb2dMZXZlbHMuRmF0YWwsICdGQVRBTCddLFxuXSlcblxuY29uc3Qgbm9Db2xvcjogKHN0cjogc3RyaW5nKSA9PiBzdHJpbmcgPSAobXNnKSA9PiBtc2dcbmNvbnN0IGNvbG9yRnVuY3Rpb25zID0gbmV3IE1hcDxMb2dMZXZlbHMsIChzdHI6IHN0cmluZykgPT4gc3RyaW5nPihbXG4gIFtMb2dMZXZlbHMuRGVidWcsIGdyYXldLFxuICBbTG9nTGV2ZWxzLkluZm8sIGN5YW5dLFxuICBbTG9nTGV2ZWxzLldhcm4sIHllbGxvd10sXG4gIFtMb2dMZXZlbHMuRXJyb3IsIChzdHI6IHN0cmluZykgPT4gcmVkKHN0cildLFxuICBbTG9nTGV2ZWxzLkZhdGFsLCAoc3RyOiBzdHJpbmcpID0+IHJlZChib2xkKGl0YWxpYyhzdHIpKSldLFxuXSlcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvZ2dlcih7XG4gIGxvZ0xldmVsID0gTG9nTGV2ZWxzLkluZm8sXG4gIG5hbWUsXG59OiB7XG4gIGxvZ0xldmVsPzogTG9nTGV2ZWxzXG4gIG5hbWU/OiBzdHJpbmdcbn0gPSB7fSkge1xuICBsZXQgZGVwdGggPSBMb2dEZXB0aC5NaW5pbWFsXG5cbiAgZnVuY3Rpb24gbG9nKGxldmVsOiBMb2dMZXZlbHMsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKGxldmVsIDwgbG9nTGV2ZWwpIHJldHVyblxuXG4gICAgbGV0IGNvbG9yID0gY29sb3JGdW5jdGlvbnMuZ2V0KGxldmVsKVxuICAgIGlmICghY29sb3IpIGNvbG9yID0gbm9Db2xvclxuXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKClcbiAgICBjb25zdCBsb2cgPSBbXG4gICAgICBiZ0JyaWdodE1hZ2VudGEoYmxhY2soYFske2RhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCl9ICR7ZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKX1dYCkpLFxuICAgICAgY29sb3IocHJlZml4ZXMuZ2V0KGxldmVsKSA/PyAnREVCVUcnKSxcbiAgICAgIG5hbWUgPyBgJHtuYW1lfSA+YCA6ICc+JyxcbiAgICAgIC4uLmFyZ3MsXG4gICAgXVxuXG4gICAgc3dpdGNoIChsZXZlbCkge1xuICAgICAgY2FzZSBMb2dMZXZlbHMuRGVidWc6XG4gICAgICAgIHJldHVybiBjb25zb2xlLmRlYnVnKC4uLmxvZylcbiAgICAgIGNhc2UgTG9nTGV2ZWxzLkluZm86XG4gICAgICAgIHJldHVybiBjb25zb2xlLmluZm8oLi4ubG9nKVxuICAgICAgY2FzZSBMb2dMZXZlbHMuV2FybjpcbiAgICAgICAgcmV0dXJuIGNvbnNvbGUud2FybiguLi5sb2cpXG4gICAgICBjYXNlIExvZ0xldmVscy5FcnJvcjpcbiAgICAgICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoLi4ubG9nKVxuICAgICAgY2FzZSBMb2dMZXZlbHMuRmF0YWw6XG4gICAgICAgIHJldHVybiBjb25zb2xlLmVycm9yKC4uLmxvZylcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBjb25zb2xlLmxvZyguLi5sb2cpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2V0TGV2ZWwobGV2ZWw6IExvZ0xldmVscykge1xuICAgIGxvZ0xldmVsID0gbGV2ZWxcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldERlcHRoKGxldmVsOiBMb2dEZXB0aCkge1xuICAgIGRlcHRoID0gbGV2ZWxcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYnVnKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKExvZ0RlcHRoLk1pbmltYWwgPT09IGRlcHRoKSBsb2coTG9nTGV2ZWxzLkRlYnVnLCBhcmdzWzBdKVxuICAgIGVsc2UgbG9nKExvZ0xldmVscy5EZWJ1ZywgLi4uYXJncylcbiAgfVxuXG4gIGZ1bmN0aW9uIGluZm8oLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoTG9nRGVwdGguTWluaW1hbCA9PT0gZGVwdGgpIGxvZyhMb2dMZXZlbHMuSW5mbywgYXJnc1swXSlcbiAgICBlbHNlIGxvZyhMb2dMZXZlbHMuSW5mbywgLi4uYXJncylcbiAgfVxuXG4gIGZ1bmN0aW9uIHdhcm4oLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoTG9nRGVwdGguTWluaW1hbCA9PT0gZGVwdGgpIGxvZyhMb2dMZXZlbHMuV2FybiwgYXJnc1swXSlcbiAgICBlbHNlIGxvZyhMb2dMZXZlbHMuV2FybiwgLi4uYXJncylcbiAgfVxuXG4gIGZ1bmN0aW9uIGVycm9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKExvZ0RlcHRoLk1pbmltYWwgPT09IGRlcHRoKSBsb2coTG9nTGV2ZWxzLkVycm9yLCBhcmdzWzBdKVxuICAgIGVsc2UgbG9nKExvZ0xldmVscy5FcnJvciwgLi4uYXJncylcbiAgfVxuXG4gIGZ1bmN0aW9uIGZhdGFsKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKExvZ0RlcHRoLk1pbmltYWwgPT09IGRlcHRoKSBsb2coTG9nTGV2ZWxzLkZhdGFsLCBhcmdzWzBdKVxuICAgIGVsc2UgbG9nKExvZ0xldmVscy5GYXRhbCwgLi4uYXJncylcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbG9nLFxuICAgIHNldERlcHRoLFxuICAgIHNldExldmVsLFxuICAgIGRlYnVnLFxuICAgIGluZm8sXG4gICAgd2FybixcbiAgICBlcnJvcixcbiAgICBmYXRhbCxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHsgbmFtZTogJ0Rpc2NvcmRlbm8nIH0pXG5leHBvcnQgZGVmYXVsdCBsb2dnZXJcbiJdLCJuYW1lcyI6WyJiZ0JyaWdodE1hZ2VudGEiLCJibGFjayIsImJvbGQiLCJjeWFuIiwiZ3JheSIsIml0YWxpYyIsInJlZCIsInllbGxvdyIsIkxvZ0xldmVscyIsIkRlYnVnIiwiSW5mbyIsIldhcm4iLCJFcnJvciIsIkZhdGFsIiwiTG9nRGVwdGgiLCJNaW5pbWFsIiwiRnVsbCIsInByZWZpeGVzIiwiTWFwIiwibm9Db2xvciIsIm1zZyIsImNvbG9yRnVuY3Rpb25zIiwic3RyIiwiY3JlYXRlTG9nZ2VyIiwibG9nTGV2ZWwiLCJuYW1lIiwiZGVwdGgiLCJsb2ciLCJsZXZlbCIsImFyZ3MiLCJjb2xvciIsImdldCIsImRhdGUiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwidG9Mb2NhbGVUaW1lU3RyaW5nIiwiY29uc29sZSIsImRlYnVnIiwiaW5mbyIsIndhcm4iLCJlcnJvciIsInNldERlcHRoIiwic2V0TGV2ZWwiLCJmYXRhbCIsImxvZ2dlciJdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBU0EsbUJBQUFBLENBQWUsQ0FBRUMsU0FBQUEsQ0FBSyxDQUFFQyxRQUFBQSxDQUFJLENBQUVDLFFBQUFBLENBQUksQ0FBRUMsUUFBQUEsQ0FBSSxDQUFFQyxVQUFBQSxDQUFNLENBQUVDLE9BQUFBLENBQUcsQ0FBRUMsVUFBQUEsQ0FBTSxLQUFRLGFBQWEsWUFFcEYsb0JBQUtDLFNBQVMsRUFBVEEsVUFBQUEsVUFDVkMsTUFBQUEs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
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=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/logger.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-confusing-void-expression */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { bgBrightMagenta, black, bold, cyan, gray, italic, red, yellow } from './colors.js'\n\nexport enum LogLevels {\n Debug,\n Info,\n Warn,\n Error,\n Fatal,\n}\n\nexport enum LogDepth {\n Minimal,\n Full,\n}\n\nconst prefixes = new Map<LogLevels, string>([\n [LogLevels.Debug, 'DEBUG'],\n [LogLevels.Info, 'INFO'],\n [LogLevels.Warn, 'WARN'],\n [LogLevels.Error, 'ERROR'],\n [LogLevels.Fatal, 'FATAL'],\n])\n\nconst noColor: (str: string) => string = (msg) => msg\nconst colorFunctions = new Map<LogLevels, (str: string) => string>([\n [LogLevels.Debug, gray],\n [LogLevels.Info, cyan],\n [LogLevels.Warn, yellow],\n [LogLevels.Error, (str: string) => red(str)],\n [LogLevels.Fatal, (str: string) => red(bold(italic(str)))],\n])\n\nexport function createLogger({\n logLevel = LogLevels.Info,\n name,\n}: {\n logLevel?: LogLevels\n name?: string\n} = {}) {\n let depth = LogDepth.Minimal\n\n function log(level: LogLevels, ...args: any[]) {\n if (level < logLevel) return\n\n let color = colorFunctions.get(level)\n if (!color) color = noColor\n\n const date = new Date()\n const log = [\n bgBrightMagenta(black(`[${date.toLocaleDateString()} ${date.toLocaleTimeString()}]`)),\n color(prefixes.get(level) ?? 'DEBUG'),\n name ? `${name} >` : '>',\n ...args,\n ]\n\n switch (level) {\n case LogLevels.Debug:\n return console.debug(...log)\n case LogLevels.Info:\n return console.info(...log)\n case LogLevels.Warn:\n return console.warn(...log)\n case LogLevels.Error:\n return console.error(...log)\n case LogLevels.Fatal:\n return console.error(...log)\n default:\n return console.log(...log)\n }\n }\n\n function setLevel(level: LogLevels) {\n logLevel = level\n }\n\n function setDepth(level: LogDepth) {\n depth = level\n }\n\n function debug(...args: any[]) {\n if (LogDepth.Minimal === depth) log(LogLevels.Debug, args[0])\n else log(LogLevels.Debug, ...args)\n }\n\n function info(...args: any[]) {\n if (LogDepth.Minimal === depth) log(LogLevels.Info, args[0])\n else log(LogLevels.Info, ...args)\n }\n\n function warn(...args: any[]) {\n if (LogDepth.Minimal === depth) log(LogLevels.Warn, args[0])\n else log(LogLevels.Warn, ...args)\n }\n\n function error(...args: any[]) {\n if (LogDepth.Minimal === depth) log(LogLevels.Error, args[0])\n else log(LogLevels.Error, ...args)\n }\n\n function fatal(...args: any[]) {\n if (LogDepth.Minimal === depth) log(LogLevels.Fatal, args[0])\n else log(LogLevels.Fatal, ...args)\n }\n\n return {\n log,\n setDepth,\n setLevel,\n debug,\n info,\n warn,\n error,\n fatal,\n }\n}\n\nexport const logger = createLogger({ name: 'Discordeno' })\nexport default logger\n"],"names":["bgBrightMagenta","black","bold","cyan","gray","italic","red","yellow","LogLevels","Debug","Info","Warn","Error","Fatal","LogDepth","Minimal","Full","prefixes","Map","noColor","msg","colorFunctions","str","createLogger","logLevel","name","depth","log","level","args","color","get","date","Date","toLocaleDateString","toLocaleTimeString","console","debug","info","warn","error","setLevel","setDepth","fatal","logger"],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { BigString, OAuth2Scope, PermissionStrings } from '@discordeno/types';
2
+ export declare function createOAuth2Link(options: CreateOAuth2LinkOptions): string;
3
+ export interface CreateOAuth2LinkOptions {
4
+ /**
5
+ * The type of response
6
+ *
7
+ * @remarks
8
+ * Should be defined only if using either OAuth2 authorization, implicit or not, or [advanced bot authorization](https://discord.com/developers/docs/topics/oauth2#advanced-bot-authorization)
9
+ */
10
+ responseType?: 'code' | 'token';
11
+ /** The id of the application */
12
+ clientId: BigString;
13
+ /** The scopes for the application */
14
+ scope: OAuth2Scope[];
15
+ /**
16
+ * The optional state for security
17
+ *
18
+ * @see https://discord.com/developers/docs/topics/oauth2#state-and-security
19
+ */
20
+ state?: string;
21
+ /**
22
+ * The redirect uri for after the authentication
23
+ *
24
+ * @remarks
25
+ * Should be defined only if using either OAuth2 authorization, implicit or not, or [advanced bot authorization](https://discord.com/developers/docs/topics/oauth2#advanced-bot-authorization)
26
+ */
27
+ redirectUri?: string;
28
+ /**
29
+ * The type of prompt to give to the user
30
+ *
31
+ * @remarks
32
+ * If set to `none`, it will skip the authorization screen and redirect them back to your redirect URI without requesting their authorization.
33
+ * For passthrough scopes, like bot and webhook.incoming, authorization is always required.
34
+ */
35
+ prompt?: 'consent' | 'none';
36
+ /**
37
+ * The permissions of the invited bot
38
+ *
39
+ * @remarks
40
+ * Should be defined only in a [bot authorization flow](https://discord.com/developers/docs/topics/oauth2#bot-authorization-flow) or with [advanced bot authorization](https://discord.com/developers/docs/topics/oauth2#advanced-bot-authorization)
41
+ */
42
+ permissions?: BigString | PermissionStrings[];
43
+ /**
44
+ * Pre-fills the dropdown picker with a guild for the user
45
+ *
46
+ * @remarks
47
+ * Should be defined only in a [bot authorization flow](https://discord.com/developers/docs/topics/oauth2#bot-authorization-flow) or with [advanced bot authorization](https://discord.com/developers/docs/topics/oauth2#advanced-bot-authorization) or with the `webhook.incoming` scope
48
+ */
49
+ guildId?: BigString;
50
+ /**
51
+ * Disallows the user from changing the guild dropdown if set to true
52
+ *
53
+ * @remarks
54
+ * Should be defined only in a [bot authorization flow](https://discord.com/developers/docs/topics/oauth2#bot-authorization-flow), with [advanced bot authorization](https://discord.com/developers/docs/topics/oauth2#advanced-bot-authorization) or with the `webhook.incoming` scope
55
+ */
56
+ disableGuildSelect?: boolean;
57
+ }
58
+ //# 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,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAGlF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAezE;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/B,gCAAgC;IAChC,QAAQ,EAAE,SAAS,CAAA;IACnB,qCAAqC;IACrC,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC3B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,GAAG,iBAAiB,EAAE,CAAA;IAC7C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B"}
package/dist/oauth2.js ADDED
@@ -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=oauth2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/oauth2.ts"],"sourcesContent":["import type { BigString, OAuth2Scope, PermissionStrings } from '@discordeno/types'\nimport { calculateBits } from './permissions.js'\n\nexport function createOAuth2Link(options: CreateOAuth2LinkOptions): string {\n const joinedScopeString = options.scope.join(' ')\n\n let url = `https://discord.com/oauth2/authorize?client_id=${options.clientId}&scope=${joinedScopeString}`\n\n if (options.responseType) url += `&response_type=${options.responseType}`\n if (options.state) url += `&state=${encodeURIComponent(options.state)}`\n if (options.redirectUri) url += `&redirect_uri=${encodeURIComponent(options.redirectUri)}`\n if (options.prompt) url += `&prompt=${options.prompt}`\n if (options.permissions) url += `&permissions=${Array.isArray(options.permissions) ? calculateBits(options.permissions) : options.permissions}`\n if (options.guildId) url += `&guild_id=${options.guildId}`\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n if (options.disableGuildSelect !== undefined) url += `&disable_guild_select=${options.disableGuildSelect}`\n\n return url\n}\n\nexport interface CreateOAuth2LinkOptions {\n /**\n * The type of response\n *\n * @remarks\n * Should be defined only if using either OAuth2 authorization, implicit or not, or [advanced bot authorization](https://discord.com/developers/docs/topics/oauth2#advanced-bot-authorization)\n */\n responseType?: 'code' | 'token'\n /** The id of the application */\n clientId: BigString\n /** The scopes for the application */\n scope: OAuth2Scope[]\n /**\n * The optional state for security\n *\n * @see https://discord.com/developers/docs/topics/oauth2#state-and-security\n */\n state?: string\n /**\n * The redirect uri for after the authentication\n *\n * @remarks\n * Should be defined only if using either OAuth2 authorization, implicit or not, or [advanced bot authorization](https://discord.com/developers/docs/topics/oauth2#advanced-bot-authorization)\n */\n redirectUri?: string\n /**\n * The type of prompt to give to the user\n *\n * @remarks\n * If set to `none`, it will skip the authorization screen and redirect them back to your redirect URI without requesting their authorization.\n * For passthrough scopes, like bot and webhook.incoming, authorization is always required.\n */\n prompt?: 'consent' | 'none'\n /**\n * The permissions of the invited bot\n *\n * @remarks\n * Should be defined only in a [bot authorization flow](https://discord.com/developers/docs/topics/oauth2#bot-authorization-flow) or with [advanced bot authorization](https://discord.com/developers/docs/topics/oauth2#advanced-bot-authorization)\n */\n permissions?: BigString | PermissionStrings[]\n /**\n * Pre-fills the dropdown picker with a guild for the user\n *\n * @remarks\n * Should be defined only in a [bot authorization flow](https://discord.com/developers/docs/topics/oauth2#bot-authorization-flow) or with [advanced bot authorization](https://discord.com/developers/docs/topics/oauth2#advanced-bot-authorization) or with the `webhook.incoming` scope\n */\n guildId?: BigString\n /**\n * Disallows the user from changing the guild dropdown if set to true\n *\n * @remarks\n * Should be defined only in a [bot authorization flow](https://discord.com/developers/docs/topics/oauth2#bot-authorization-flow), with [advanced bot authorization](https://discord.com/developers/docs/topics/oauth2#advanced-bot-authorization) or with the `webhook.incoming` scope\n */\n disableGuildSelect?: boolean\n}\n"],"names":["calculateBits","createOAuth2Link","options","joinedScopeString","scope","join","url","clientId","responseType","state","encodeURIComponent","redirectUri","prompt","permissions","Array","isArray","guildId","disableGuildSelect","undefined"],"mappings":"AACA,SAASA,aAAa,QAAQ,mBAAkB;AAEhD,OAAO,SAASC,iBAAiBC,OAAgC,EAAU;IACzE,MAAMC,oBAAoBD,QAAQE,KAAK,CAACC,IAAI,CAAC;IAE7C,IAAIC,MAAM,CAAC,+CAA+C,EAAEJ,QAAQK,QAAQ,CAAC,OAAO,EAAEJ,kBAAkB,CAAC;IAEzG,IAAID,QAAQM,YAAY,EAAEF,OAAO,CAAC,eAAe,EAAEJ,QAAQM,YAAY,CAAC,CAAC;IACzE,IAAIN,QAAQO,KAAK,EAAEH,OAAO,CAAC,OAAO,EAAEI,mBAAmBR,QAAQO,KAAK,EAAE,CAAC;IACvE,IAAIP,QAAQS,WAAW,EAAEL,OAAO,CAAC,cAAc,EAAEI,mBAAmBR,QAAQS,WAAW,EAAE,CAAC;IAC1F,IAAIT,QAAQU,MAAM,EAAEN,OAAO,CAAC,QAAQ,EAAEJ,QAAQU,MAAM,CAAC,CAAC;IACtD,IAAIV,QAAQW,WAAW,EAAEP,OAAO,CAAC,aAAa,EAAEQ,MAAMC,OAAO,CAACb,QAAQW,WAAW,IAAIb,cAAcE,QAAQW,WAAW,IAAIX,QAAQW,WAAW,CAAC,CAAC;IAC/I,IAAIX,QAAQc,OAAO,EAAEV,OAAO,CAAC,UAAU,EAAEJ,QAAQc,OAAO,CAAC,CAAC;IAC1D,4EAA4E;IAC5E,IAAId,QAAQe,kBAAkB,KAAKC,WAAWZ,OAAO,CAAC,sBAAsB,EAAEJ,QAAQe,kBAAkB,CAAC,CAAC;IAE1G,OAAOX;AACT,CAAC"}
@@ -1,2 +1,17 @@
1
- import{BitwisePermissionFlags as t}from"@discordeno/types";export function calculatePermissions(e){return Object.keys(t).filter(r=>!Number(r)&&e&BigInt(t[r]))}export function calculateBits(e){return e.reduce((e,r)=>e|=BigInt(t[r]),0n).toString()}
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wZXJtaXNzaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBlcm1pc3Npb25TdHJpbmdzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBCaXR3aXNlUGVybWlzc2lvbkZsYWdzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5cbi8qKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIGEgYml0d2lzZSBzdHJpbmcgdG8gcGVybWlzc2lvbiBzdHJpbmdzICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlUGVybWlzc2lvbnMocGVybWlzc2lvbkJpdHM6IGJpZ2ludCk6IFBlcm1pc3Npb25TdHJpbmdzW10ge1xuICByZXR1cm4gT2JqZWN0LmtleXMoQml0d2lzZVBlcm1pc3Npb25GbGFncykuZmlsdGVyKChwZXJtaXNzaW9uKSA9PiB7XG4gICAgLy8gU2luY2UgT2JqZWN0LmtleXMoKSBub3Qgb25seSByZXR1cm5zIHRoZSBwZXJtaXNzaW9uIG5hbWVzIGJ1dCBhbHNvIHRoZSBiaXQgdmFsdWVzIHdlIG5lZWQgdG8gcmV0dXJuIGZhbHNlIGlmIGl0IGlzIGEgTnVtYmVyXG4gICAgaWYgKE51bWJlcihwZXJtaXNzaW9uKSkgcmV0dXJuIGZhbHNlXG4gICAgLy8gQ2hlY2sgaWYgcGVybWlzc2lvbkJpdHMgaGFzIHRoaXMgcGVybWlzc2lvblxuICAgIHJldHVybiBwZXJtaXNzaW9uQml0cyAmIEJpZ0ludChCaXR3aXNlUGVybWlzc2lvbkZsYWdzW3Blcm1pc3Npb24gYXMgUGVybWlzc2lvblN0cmluZ3NdKVxuICB9KSBhcyBQZXJtaXNzaW9uU3RyaW5nc1tdXG59XG5cbi8qKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIGFuIGFycmF5IG9mIHBlcm1pc3Npb25zIGludG8gdGhlIGJpdHdpc2Ugc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUJpdHMocGVybWlzc2lvbnM6IFBlcm1pc3Npb25TdHJpbmdzW10pOiBzdHJpbmcge1xuICByZXR1cm4gcGVybWlzc2lvbnNcbiAgICAucmVkdWNlKChiaXRzLCBwZXJtKSA9PiB7XG4gICAgICBiaXRzIHw9IEJpZ0ludChCaXR3aXNlUGVybWlzc2lvbkZsYWdzW3Blcm1dKVxuICAgICAgcmV0dXJuIGJpdHNcbiAgICB9LCAwbilcbiAgICAudG9TdHJpbmcoKVxufVxuIl0sIm5hbWVzIjpbIkJpdHdpc2VQZXJtaXNzaW9uRmxhZ3MiLCJjYWxjdWxhdGVQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25CaXRzIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsInBlcm1pc3Npb24iLCJOdW1iZXIiLCJCaWdJbnQiLCJjYWxjdWxhdGVCaXRzIiwicGVybWlzc2lvbnMiLCJyZWR1Y2UiLCJiaXRzIiwicGVybSIsInRvU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFDQSxPQUFTQSwwQkFBQUEsQ0FBc0IsS0FBUSxtQkFBbUIsQUFHMUQsUUFBTyxTQUFTQyxxQkFBcUJDLENBQXNCLENBQXVCLENBQ2hGLE9BQU9DLE9BQU9DLElBQUksQ0FBQ0osR0FBd0JLLE1BQU0sQ0FBQyxBQUFDQyxHQUVqRCxDQUFJQyxPQUFPRCxJQUVKSixFQUFpQk0sT0FBT1IsQ0FBc0IsQ0FBQ00sRUFBZ0MsRUFFMUYsQ0FBQyxBQUdELE9BQU8sU0FBU0csY0FBY0MsQ0FBZ0MsQ0FBVSxDQUN0RSxPQUFPQSxFQUNKQyxNQUFNLENBQUMsQ0FBQ0MsRUFBTUMsSUFDYkQsR0FBUUosT0FBT1IsQ0FBc0IsQ0FBQ2EsRUFBSyxFQUUxQyxDQUFFLEFBQUYsQ0FBRSxFQUNKQyxRQUFRLEVBQ2IsQ0FBQyJ9
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=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/permissions.ts"],"sourcesContent":["import type { PermissionStrings } from '@discordeno/types'\nimport { BitwisePermissionFlags } from '@discordeno/types'\n\n/** This function converts a bitwise string to permission strings */\nexport function calculatePermissions(permissionBits: bigint): PermissionStrings[] {\n return Object.keys(BitwisePermissionFlags).filter((permission) => {\n // Since Object.keys() not only returns the permission names but also the bit values we need to return false if it is a Number\n if (Number(permission)) return false\n // Check if permissionBits has this permission\n return permissionBits & BigInt(BitwisePermissionFlags[permission as PermissionStrings])\n }) as PermissionStrings[]\n}\n\n/** This function converts an array of permissions into the bitwise string. */\nexport function calculateBits(permissions: PermissionStrings[]): string {\n return permissions\n .reduce((bits, perm) => {\n bits |= BigInt(BitwisePermissionFlags[perm])\n return bits\n }, 0n)\n .toString()\n}\n"],"names":["BitwisePermissionFlags","calculatePermissions","permissionBits","Object","keys","filter","permission","Number","BigInt","calculateBits","permissions","reduce","bits","perm","toString"],"mappings":"AACA,SAASA,sBAAsB,QAAQ,oBAAmB;AAE1D,kEAAkE,GAClE,OAAO,SAASC,qBAAqBC,cAAsB,EAAuB;IAChF,OAAOC,OAAOC,IAAI,CAACJ,wBAAwBK,MAAM,CAAC,CAACC,aAAe;QAChE,8HAA8H;QAC9H,IAAIC,OAAOD,aAAa,OAAO,KAAK;QACpC,8CAA8C;QAC9C,OAAOJ,iBAAiBM,OAAOR,sBAAsB,CAACM,WAAgC;IACxF;AACF,CAAC;AAED,4EAA4E,GAC5E,OAAO,SAASG,cAAcC,WAAgC,EAAU;IACtE,OAAOA,YACJC,MAAM,CAAC,CAACC,MAAMC,OAAS;QACtBD,QAAQJ,OAAOR,sBAAsB,CAACa,KAAK;QAC3C,OAAOD;IACT,GAAG,EAAE,EACJE,QAAQ;AACb,CAAC"}
package/dist/reactions.js CHANGED
@@ -1,2 +1,11 @@
1
- export function processReactionString(t){return t.startsWith("<:")?t.substring(2,t.length-1):t.startsWith("<a:")?t.substring(3,t.length-1):t}
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIENvbnZlcnRzIGFuIHJlYWN0aW9uIGVtb2ppIHVuaWNvZGUgc3RyaW5nIHRvIHRoZSBkaXNjb3JkIHJlcXVpcmVkIGZvcm0gb2YgbmFtZTppZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NSZWFjdGlvblN0cmluZyhyZWFjdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHJlYWN0aW9uLnN0YXJ0c1dpdGgoJzw6JykpIHtcbiAgICByZXR1cm4gcmVhY3Rpb24uc3Vic3RyaW5nKDIsIHJlYWN0aW9uLmxlbmd0aCAtIDEpXG4gIH1cblxuICBpZiAocmVhY3Rpb24uc3RhcnRzV2l0aCgnPGE6JykpIHtcbiAgICByZXR1cm4gcmVhY3Rpb24uc3Vic3RyaW5nKDMsIHJlYWN0aW9uLmxlbmd0aCAtIDEpXG4gIH1cblxuICByZXR1cm4gcmVhY3Rpb25cbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzUmVhY3Rpb25TdHJpbmciLCJyZWFjdGlvbiIsInN0YXJ0c1dpdGgiLCJzdWJzdHJpbmciLCJsZW5ndGgiXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sU0FBU0Esc0JBQXNCQyxDQUFnQixDQUFVLFFBQzlELEFBQUlBLEVBQVNDLFVBQVUsQ0FBQyxNQUNmRCxFQUFTRSxTQUFTLENBQUMsRUFBR0YsRUFBU0csTUFBTSxDQUFHLEdBRzdDSCxFQUFTQyxVQUFVLENBQUMsT0FDZkQsRUFBU0UsU0FBUyxDQUFDLEVBQUdGLEVBQVNHLE1BQU0sQ0FBRyxHQUcxQ0gsQ0FOTixBQU9ILENBQUMifQ==
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=reactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/reactions.ts"],"sourcesContent":["/** Converts an reaction emoji unicode string to the discord required form of name:id */\nexport function processReactionString(reaction: string): string {\n if (reaction.startsWith('<:')) {\n return reaction.substring(2, reaction.length - 1)\n }\n\n if (reaction.startsWith('<a:')) {\n return reaction.substring(3, reaction.length - 1)\n }\n\n return reaction\n}\n"],"names":["processReactionString","reaction","startsWith","substring","length"],"mappings":"AAAA,sFAAsF,GACtF,OAAO,SAASA,sBAAsBC,QAAgB,EAAU;IAC9D,IAAIA,SAASC,UAAU,CAAC,OAAO;QAC7B,OAAOD,SAASE,SAAS,CAAC,GAAGF,SAASG,MAAM,GAAG;IACjD,CAAC;IAED,IAAIH,SAASC,UAAU,CAAC,QAAQ;QAC9B,OAAOD,SAASE,SAAS,CAAC,GAAGF,SAASG,MAAM,GAAG;IACjD,CAAC;IAED,OAAOH;AACT,CAAC"}
package/dist/token.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- /** Removes the Bot before the token. */
1
+ /** Removes the Bot/Bearer before the token. */
2
2
  export declare function removeTokenPrefix(token?: string, type?: 'GATEWAY' | 'REST'): string;
3
3
  /** 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. */
4
4
  export declare function getBotIdFromToken(token: string): bigint;
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAEA,wCAAwC;AACxC,wBAAgB,iBAAiB,CAC/B,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,GAAE,SAAS,GAAG,MAAe,GAChC,MAAM,CAWR;AAED,0LAA0L;AAC1L,wBAAgB,iBAAiB,CAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAIA,+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 CHANGED
@@ -1,2 +1,21 @@
1
- import{Buffer as t}from"node:buffer";export function removeTokenPrefix(t,o="REST"){if(void 0===t)throw Error(`The ${o} was not given a token. Please provide a token and try again.`);return t.startsWith("Bot ")?t.substring(t.indexOf(" ")+1):t}export function getBotIdFromToken(o){return BigInt(t.from(o.split(".")[0],"base64").toString())}
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90b2tlbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdub2RlOmJ1ZmZlcidcblxuLyoqIFJlbW92ZXMgdGhlIEJvdCBiZWZvcmUgdGhlIHRva2VuLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRva2VuUHJlZml4IChcbiAgdG9rZW4/OiBzdHJpbmcsXG4gIHR5cGU6ICdHQVRFV0FZJyB8ICdSRVNUJyA9ICdSRVNUJ1xuKTogc3RyaW5nIHtcbiAgLy8gSWYgbm8gdG9rZW4gaXMgcHJvdmlkZWQsIHRocm93IGFuIGVycm9yXG4gIGlmICh0b2tlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRoZSAke3R5cGV9IHdhcyBub3QgZ2l2ZW4gYSB0b2tlbi4gUGxlYXNlIHByb3ZpZGUgYSB0b2tlbiBhbmQgdHJ5IGFnYWluLmBcbiAgICApXG4gIH1cbiAgLy8gSWYgdGhlIHRva2VuIGRvZXMgbm90IGhhdmUgYSBwcmVmaXgganVzdCByZXR1cm4gdG9rZW5cbiAgaWYgKCF0b2tlbi5zdGFydHNXaXRoKCdCb3QgJykpIHJldHVybiB0b2tlblxuICAvLyBSZW1vdmUgdGhlIHByZWZpeCBhbmQgcmV0dXJuIG9ubHkgdGhlIHRva2VuLlxuICByZXR1cm4gdG9rZW4uc3Vic3RyaW5nKHRva2VuLmluZGV4T2YoJyAnKSArIDEpXG59XG5cbi8qKiBHZXQgdGhlIGJvdCBpZCBmcm9tIHRoZSBib3QgdG9rZW4uIFdBUk5JTkc6IERpc2NvcmQgc3RhZmYgaGFzIG1lbnRpb25lZCB0aGlzIG1heSBub3QgYmUgc3RhYmxlIGZvcmV2ZXIuIFVzZSBhdCB5b3VyIG93biByaXNrLiBIb3dldmVyLCBub3RlIGZvciBvdmVyIDUgeWVhcnMgdGhpcyBoYXMgbmV2ZXIgYnJva2VuLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJvdElkRnJvbVRva2VuICh0b2tlbjogc3RyaW5nKTogYmlnaW50IHtcbiAgcmV0dXJuIEJpZ0ludChCdWZmZXIuZnJvbSh0b2tlbi5zcGxpdCgnLicpWzBdLCAnYmFzZTY0JykudG9TdHJpbmcoKSlcbn1cbiJdLCJuYW1lcyI6WyJCdWZmZXIiLCJyZW1vdmVUb2tlblByZWZpeCIsInRva2VuIiwidHlwZSIsInVuZGVmaW5lZCIsIkVycm9yIiwic3RhcnRzV2l0aCIsInN1YnN0cmluZyIsImluZGV4T2YiLCJnZXRCb3RJZEZyb21Ub2tlbiIsIkJpZ0ludCIsImZyb20iLCJzcGxpdCIsInRvU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFTQSxVQUFBQSxDQUFNLEtBQVEsYUFBYSxBQUdwQyxRQUFPLFNBQVNDLGtCQUNkQyxDQUFjLENBQ2RDLEVBQTJCLE1BQU0sQ0FDekIsQ0FFUixHQUFJRCxBQUFVRSxLQUFBQSxJQUFWRixFQUNGLE1BQU0sQUFBSUcsTUFDUixDQUFDLElBQUksRUFBRUYsRUFBSyw2REFBNkQsQ0FBQyxDQUMzRSxBQUNGLFFBRUQsQUFBS0QsRUFBTUksVUFBVSxDQUFDLFFBRWZKLEVBQU1LLFNBQVMsQ0FBQ0wsRUFBTU0sT0FBTyxDQUFDLEtBQU8sR0FGTk4sQ0FBSyxBQUc3QyxDQUFDLEFBR0QsT0FBTyxTQUFTTyxrQkFBbUJQLENBQWEsQ0FBVSxDQUN4RCxPQUFPUSxPQUFPVixFQUFPVyxJQUFJLENBQUNULEVBQU1VLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFFLFVBQVVDLFFBQVEsR0FDbkUsQ0FBQyJ9
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=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/token.ts"],"sourcesContent":["import { Buffer } from 'node:buffer'\n\nconst validTokenPrefixes = ['Bot', 'Bearer']\n\n/** Removes the Bot/Bearer before the token. */\nexport function removeTokenPrefix(token?: string, type: 'GATEWAY' | 'REST' = 'REST'): string {\n // If no token is provided, throw an error\n if (token === undefined) {\n throw new Error(`The ${type} was not given a token. Please provide a token and try again.`)\n }\n\n const splittedToken = token.split(' ')\n\n // If the token does not have a prefix just return token\n if (splittedToken.length < 2 || !validTokenPrefixes.includes(splittedToken[0])) return token\n // Remove the prefix and return only the token.\n return splittedToken.splice(1).join(' ')\n}\n\n/** 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. */\nexport function getBotIdFromToken(token: string): bigint {\n return BigInt(Buffer.from(token.split('.')[0], 'base64').toString())\n}\n"],"names":["Buffer","validTokenPrefixes","removeTokenPrefix","token","type","undefined","Error","splittedToken","split","length","includes","splice","join","getBotIdFromToken","BigInt","from","toString"],"mappings":"AAAA,SAASA,MAAM,QAAQ,cAAa;AAEpC,MAAMC,qBAAqB;IAAC;IAAO;CAAS;AAE5C,6CAA6C,GAC7C,OAAO,SAASC,kBAAkBC,KAAc,EAAEC,OAA2B,MAAM,EAAU;IAC3F,0CAA0C;IAC1C,IAAID,UAAUE,WAAW;QACvB,MAAM,IAAIC,MAAM,CAAC,IAAI,EAAEF,KAAK,6DAA6D,CAAC,EAAC;IAC7F,CAAC;IAED,MAAMG,gBAAgBJ,MAAMK,KAAK,CAAC;IAElC,wDAAwD;IACxD,IAAID,cAAcE,MAAM,GAAG,KAAK,CAACR,mBAAmBS,QAAQ,CAACH,aAAa,CAAC,EAAE,GAAG,OAAOJ;IACvF,+CAA+C;IAC/C,OAAOI,cAAcI,MAAM,CAAC,GAAGC,IAAI,CAAC;AACtC,CAAC;AAED,wLAAwL,GACxL,OAAO,SAASC,kBAAkBV,KAAa,EAAU;IACvD,OAAOW,OAAOd,OAAOe,IAAI,CAACZ,MAAMK,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,UAAUQ,QAAQ;AACnE,CAAC"}
@@ -1,2 +1,15 @@
1
- import{hasProperty as e}from"./utils.js";export function isGetMessagesAfter(t){return e(t,"after")}export function isGetMessagesBefore(t){return e(t,"before")}export function isGetMessagesAround(t){return e(t,"around")}export function isGetMessagesLimit(t){return e(t,"limit")}
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlZ3VhcmRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgR2V0TWVzc2FnZXNBZnRlciwgR2V0TWVzc2FnZXNBcm91bmQsIEdldE1lc3NhZ2VzQmVmb3JlLCBHZXRNZXNzYWdlc0xpbWl0LCBHZXRNZXNzYWdlc09wdGlvbnMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IGhhc1Byb3BlcnR5IH0gZnJvbSAnLi91dGlscy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGlzR2V0TWVzc2FnZXNBZnRlcihvcHRpb25zOiBHZXRNZXNzYWdlc09wdGlvbnMpOiBvcHRpb25zIGlzIEdldE1lc3NhZ2VzQWZ0ZXIge1xuICByZXR1cm4gaGFzUHJvcGVydHkob3B0aW9ucywgJ2FmdGVyJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzR2V0TWVzc2FnZXNCZWZvcmUob3B0aW9uczogR2V0TWVzc2FnZXNPcHRpb25zKTogb3B0aW9ucyBpcyBHZXRNZXNzYWdlc0JlZm9yZSB7XG4gIHJldHVybiBoYXNQcm9wZXJ0eShvcHRpb25zLCAnYmVmb3JlJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzR2V0TWVzc2FnZXNBcm91bmQob3B0aW9uczogR2V0TWVzc2FnZXNPcHRpb25zKTogb3B0aW9ucyBpcyBHZXRNZXNzYWdlc0Fyb3VuZCB7XG4gIHJldHVybiBoYXNQcm9wZXJ0eShvcHRpb25zLCAnYXJvdW5kJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzR2V0TWVzc2FnZXNMaW1pdChvcHRpb25zOiBHZXRNZXNzYWdlc09wdGlvbnMpOiBvcHRpb25zIGlzIEdldE1lc3NhZ2VzTGltaXQge1xuICByZXR1cm4gaGFzUHJvcGVydHkob3B0aW9ucywgJ2xpbWl0Jylcbn1cbiJdLCJuYW1lcyI6WyJoYXNQcm9wZXJ0eSIsImlzR2V0TWVzc2FnZXNBZnRlciIsIm9wdGlvbnMiLCJpc0dldE1lc3NhZ2VzQmVmb3JlIiwiaXNHZXRNZXNzYWdlc0Fyb3VuZCIsImlzR2V0TWVzc2FnZXNMaW1pdCJdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBU0EsZUFBQUEsQ0FBVyxLQUFRLFlBQVksQUFFeEMsUUFBTyxTQUFTQyxtQkFBbUJDLENBQTJCLENBQStCLENBQzNGLE9BQU9GLEVBQVlFLEVBQVMsUUFDOUIsQ0FBQyxBQUVELE9BQU8sU0FBU0Msb0JBQW9CRCxDQUEyQixDQUFnQyxDQUM3RixPQUFPRixFQUFZRSxFQUFTLFNBQzlCLENBQUMsQUFFRCxPQUFPLFNBQVNFLG9CQUFvQkYsQ0FBMkIsQ0FBZ0MsQ0FDN0YsT0FBT0YsRUFBWUUsRUFBUyxTQUM5QixDQUFDLEFBRUQsT0FBTyxTQUFTRyxtQkFBbUJILENBQTJCLENBQStCLENBQzNGLE9BQU9GLEVBQVlFLEVBQVMsUUFDOUIsQ0FBQyJ9
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
+
15
+ //# sourceMappingURL=typeguards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/typeguards.ts"],"sourcesContent":["import type { GetMessagesAfter, GetMessagesAround, GetMessagesBefore, GetMessagesLimit, GetMessagesOptions } from '@discordeno/types'\nimport { hasProperty } from './utils.js'\n\nexport function isGetMessagesAfter(options: GetMessagesOptions): options is GetMessagesAfter {\n return hasProperty(options, 'after')\n}\n\nexport function isGetMessagesBefore(options: GetMessagesOptions): options is GetMessagesBefore {\n return hasProperty(options, 'before')\n}\n\nexport function isGetMessagesAround(options: GetMessagesOptions): options is GetMessagesAround {\n return hasProperty(options, 'around')\n}\n\nexport function isGetMessagesLimit(options: GetMessagesOptions): options is GetMessagesLimit {\n return hasProperty(options, 'limit')\n}\n"],"names":["hasProperty","isGetMessagesAfter","options","isGetMessagesBefore","isGetMessagesAround","isGetMessagesLimit"],"mappings":"AACA,SAASA,WAAW,QAAQ,aAAY;AAExC,OAAO,SAASC,mBAAmBC,OAA2B,EAA+B;IAC3F,OAAOF,YAAYE,SAAS;AAC9B,CAAC;AAED,OAAO,SAASC,oBAAoBD,OAA2B,EAAgC;IAC7F,OAAOF,YAAYE,SAAS;AAC9B,CAAC;AAED,OAAO,SAASE,oBAAoBF,OAA2B,EAAgC;IAC7F,OAAOF,YAAYE,SAAS;AAC9B,CAAC;AAED,OAAO,SAASG,mBAAmBH,OAA2B,EAA+B;IAC3F,OAAOF,YAAYE,SAAS;AAC9B,CAAC"}
@@ -1,2 +1,9 @@
1
- import{encode as a}from"./base64.js";export async function urlToBase64(t){let e=await fetch(t).then(async a=>await a.arrayBuffer()),r=a(e),s=t.substring(t.lastIndexOf(".")+1);return`data:image/${s};base64,${r}`}
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91cmxUb0Jhc2U2NC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbmNvZGUgfSBmcm9tICcuL2Jhc2U2NC5qcydcblxuLyoqIENvbnZlcnRzIGEgdXJsIHRvIGJhc2UgNjQuIFVzZWZ1bCBmb3IgZXhhbXBsZSwgdXBsb2FkaW5nL2NyZWF0aW5nIHNlcnZlciBlbW9qaXMuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXJsVG9CYXNlNjQodXJsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBidWZmZXIgPSBhd2FpdCBmZXRjaCh1cmwpLnRoZW4oYXN5bmMgKHJlcykgPT4gYXdhaXQgcmVzLmFycmF5QnVmZmVyKCkpXG4gIGNvbnN0IGltYWdlU3RyID0gZW5jb2RlKGJ1ZmZlcilcbiAgY29uc3QgdHlwZSA9IHVybC5zdWJzdHJpbmcodXJsLmxhc3RJbmRleE9mKCcuJykgKyAxKVxuICByZXR1cm4gYGRhdGE6aW1hZ2UvJHt0eXBlfTtiYXNlNjQsJHtpbWFnZVN0cn1gXG59XG4iXSwibmFtZXMiOlsiZW5jb2RlIiwidXJsVG9CYXNlNjQiLCJ1cmwiLCJidWZmZXIiLCJmZXRjaCIsInRoZW4iLCJyZXMiLCJhcnJheUJ1ZmZlciIsImltYWdlU3RyIiwidHlwZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFTQSxVQUFBQSxDQUFNLEtBQVEsYUFBYSxBQUdwQyxRQUFPLGVBQWVDLFlBQVlDLENBQVcsQ0FBbUIsQ0FDOUQsSUFBTUMsRUFBUyxNQUFNQyxNQUFNRixHQUFLRyxJQUFJLENBQUMsTUFBT0MsR0FBUSxNQUFNQSxFQUFJQyxXQUFXLElBQ25FQyxFQUFXUixFQUFPRyxHQUNsQk0sRUFBT1AsRUFBSVEsU0FBUyxDQUFDUixFQUFJUyxXQUFXLENBQUMsS0FBTyxHQUNsRCxNQUFPLENBQUMsV0FBVyxFQUFFRixFQUFLLFFBQVEsRUFBRUQsRUFBUyxDQUFDLEFBQ2hELENBQUMifQ==
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=urlToBase64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/urlToBase64.ts"],"sourcesContent":["import { encode } from './base64.js'\n\n/** Converts a url to base 64. Useful for example, uploading/creating server emojis. */\nexport async function urlToBase64(url: string): Promise<string> {\n const buffer = await fetch(url).then(async (res) => await res.arrayBuffer())\n const imageStr = encode(buffer)\n const type = url.substring(url.lastIndexOf('.') + 1)\n return `data:image/${type};base64,${imageStr}`\n}\n"],"names":["encode","urlToBase64","url","buffer","fetch","then","res","arrayBuffer","imageStr","type","substring","lastIndexOf"],"mappings":"AAAA,SAASA,MAAM,QAAQ,cAAa;AAEpC,qFAAqF,GACrF,OAAO,eAAeC,YAAYC,GAAW,EAAmB;IAC9D,MAAMC,SAAS,MAAMC,MAAMF,KAAKG,IAAI,CAAC,OAAOC,MAAQ,MAAMA,IAAIC,WAAW;IACzE,MAAMC,WAAWR,OAAOG;IACxB,MAAMM,OAAOP,IAAIQ,SAAS,CAACR,IAAIS,WAAW,CAAC,OAAO;IAClD,OAAO,CAAC,WAAW,EAAEF,KAAK,QAAQ,EAAED,SAAS,CAAC;AAChD,CAAC"}
@@ -1 +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,CAQrD;AAID,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,WAAW,GAAG,MAAM,EACtE,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,GACN,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAG/B"}
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,CAQrD;AAID,6DAA6D;AAE7D,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,CAGxH"}
package/dist/utils.js CHANGED
@@ -1,2 +1,15 @@
1
- export async function delay(e){return new Promise(r=>setTimeout(()=>{r()},e))}export function hasProperty(e,r){return e.hasOwnProperty(r)}
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUGF1c2UgdGhlIGV4ZWN1dGlvbiBmb3IgYSBnaXZlbiBhbW91bnQgb2YgbWlsbGlzZWNvbmRzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGF5KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXR1cm4tYXdhaXRcbiAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlKTogTm9kZUpTLlRpbWVvdXQgPT5cbiAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuICAgICAgICByZXNvbHZlKClcbiAgICAgIH0sIG1zKSxcbiAgKVxufVxuXG4vLyBUeXBlc2NyaXB0IGlzIG5vdCBzbyBnb29kIGFzIHdlIGRldmVsb3BlcnMgc28gd2UgbmVlZCB0aGlzIGxpdHRsZSB1dGlsaXR5IGZ1bmN0aW9uIHRvIGhlbHAgaXQgb3V0XG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZmV0dGJsb2cuZXUvdHlwZXNjcmlwdC1oYXNvd25wcm9wZXJ0eS9cbi8qKiBUUyBzYXZlIHdheSB0byBjaGVjayBpZiBhIHByb3BlcnR5IGV4aXN0cyBpbiBhbiBvYmplY3QgKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQcm9wZXJ0eTxUIGV4dGVuZHMge30sIFkgZXh0ZW5kcyBQcm9wZXJ0eUtleSA9IHN0cmluZz4gKFxuICBvYmo6IFQsXG4gIHByb3A6IFlcbik6IG9iaiBpcyBUICYgUmVjb3JkPFksIHVua25vd24+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KHByb3ApXG59XG4iXSwibmFtZXMiOlsiZGVsYXkiLCJtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsImhhc1Byb3BlcnR5Iiwib2JqIiwicHJvcCIsImhhc093blByb3BlcnR5Il0sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLGVBQWVBLE1BQU1DLENBQVUsQ0FBaUIsQ0FFckQsT0FBTyxJQUFJQyxRQUNULEFBQUNDLEdBQ0NDLFdBQVcsSUFBWSxDQUNyQkQsR0FDRixFQUFHRixHQUVULENBQUMsQUFLRCxPQUFPLFNBQVNJLFlBQ2RDLENBQU0sQ0FDTkMsQ0FBTyxDQUN3QixDQUUvQixPQUFPRCxFQUFJRSxjQUFjLENBQUNELEVBQzVCLENBQUMifQ==
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=utils.js.map