@discordeno/utils 19.0.0-next.f6bd769 → 19.0.0-next.f98bb9b

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 (67) 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 -42
  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/builders/embeds.d.ts +146 -0
  11. package/dist/builders/embeds.d.ts.map +1 -0
  12. package/dist/builders/embeds.js +295 -0
  13. package/dist/builders/embeds.js.map +1 -0
  14. package/dist/builders.d.ts +4 -0
  15. package/dist/builders.d.ts.map +1 -0
  16. package/dist/builders.js +5 -0
  17. package/dist/builders.js.map +1 -0
  18. package/dist/casing.d.ts +3 -2
  19. package/dist/casing.d.ts.map +1 -1
  20. package/dist/casing.js +51 -2
  21. package/dist/casing.js.map +1 -0
  22. package/dist/colors.d.ts +6 -2
  23. package/dist/colors.d.ts.map +1 -1
  24. package/dist/colors.js +467 -2
  25. package/dist/colors.js.map +1 -0
  26. package/dist/hash.d.ts.map +1 -1
  27. package/dist/hash.js +19 -2
  28. package/dist/hash.js.map +1 -0
  29. package/dist/images.d.ts +47 -2
  30. package/dist/images.d.ts.map +1 -1
  31. package/dist/images.js +66 -2
  32. package/dist/images.js.map +1 -0
  33. package/dist/index.d.ts +5 -2
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +18 -2
  36. package/dist/index.js.map +1 -0
  37. package/dist/logger.d.ts.map +1 -1
  38. package/dist/logger.js +130 -2
  39. package/dist/logger.js.map +1 -0
  40. package/dist/oauth2.d.ts +58 -0
  41. package/dist/oauth2.d.ts.map +1 -0
  42. package/dist/oauth2.js +16 -0
  43. package/dist/oauth2.js.map +1 -0
  44. package/dist/permissions.js +17 -2
  45. package/dist/permissions.js.map +1 -0
  46. package/dist/reactions.d.ts +3 -0
  47. package/dist/reactions.d.ts.map +1 -0
  48. package/dist/reactions.js +11 -0
  49. package/dist/reactions.js.map +1 -0
  50. package/dist/token.d.ts +1 -1
  51. package/dist/token.d.ts.map +1 -1
  52. package/dist/token.js +21 -2
  53. package/dist/token.js.map +1 -0
  54. package/dist/typeguards.d.ts +7 -0
  55. package/dist/typeguards.d.ts.map +1 -0
  56. package/dist/typeguards.js +18 -0
  57. package/dist/typeguards.js.map +1 -0
  58. package/dist/urlToBase64.js +9 -2
  59. package/dist/urlToBase64.js.map +1 -0
  60. package/dist/utils.d.ts +2 -3
  61. package/dist/utils.d.ts.map +1 -1
  62. package/dist/utils.js +15 -2
  63. package/dist/utils.js.map +1 -0
  64. package/package.json +12 -12
  65. package/dist/files.d.ts +0 -4
  66. package/dist/files.d.ts.map +0 -1
  67. package/dist/files.js +0 -2
@@ -0,0 +1,11 @@
1
+ /** Converts an reaction emoji unicode string to the discord required form of name:id */ export function processReactionString(reaction) {
2
+ if (reaction.startsWith('<:')) {
3
+ return reaction.substring(2, reaction.length - 1);
4
+ }
5
+ if (reaction.startsWith('<a:')) {
6
+ return reaction.substring(3, reaction.length - 1);
7
+ }
8
+ return reaction;
9
+ }
10
+
11
+ //# sourceMappingURL=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"}
@@ -0,0 +1,7 @@
1
+ import type { DiscordInviteCreate, DiscordInviteMetadata, GetMessagesAfter, GetMessagesAround, GetMessagesBefore, GetMessagesLimit, GetMessagesOptions } from '@discordeno/types';
2
+ export declare function isGetMessagesAfter(options: GetMessagesOptions): options is GetMessagesAfter;
3
+ export declare function isGetMessagesBefore(options: GetMessagesOptions): options is GetMessagesBefore;
4
+ export declare function isGetMessagesAround(options: GetMessagesOptions): options is GetMessagesAround;
5
+ export declare function isGetMessagesLimit(options: GetMessagesOptions): options is GetMessagesLimit;
6
+ export declare function isInviteWithMetadata(options: DiscordInviteCreate | DiscordInviteMetadata): options is DiscordInviteMetadata;
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,CAAA;AAG1B,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=typeguards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/typeguards.ts"],"sourcesContent":["import type {\n DiscordInviteCreate,\n DiscordInviteMetadata,\n GetMessagesAfter,\n GetMessagesAround,\n GetMessagesBefore,\n GetMessagesLimit,\n GetMessagesOptions,\n} 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\nexport function isInviteWithMetadata(options: DiscordInviteCreate | DiscordInviteMetadata): options is DiscordInviteMetadata {\n return !hasProperty(options, 'channel_id')\n}\n"],"names":["hasProperty","isGetMessagesAfter","options","isGetMessagesBefore","isGetMessagesAround","isGetMessagesLimit","isInviteWithMetadata"],"mappings":"AASA,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;AAED,OAAO,SAASI,qBAAqBJ,OAAoD,EAAoC;IAC3H,OAAO,CAACF,YAAYE,SAAS;AAC/B,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"}
package/dist/utils.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- import type { ImageFormat, ImageSize } from '@discordeno/types';
2
1
  /** Pause the execution for a given amount of milliseconds. */
3
2
  export declare function delay(ms: number): Promise<void>;
4
- /** Help format an image url. */
5
- export declare function formatImageURL(url: string, size?: ImageSize, format?: ImageFormat): string;
3
+ /** TS save way to check if a property exists in an object */
4
+ export declare function hasProperty<T extends {}, Y extends PropertyKey = string>(obj: T, prop: Y): obj is T & Record<Y, unknown>;
6
5
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE/D,8DAA8D;AAC9D,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrD;AAED,gCAAgC;AAChC,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,SAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAE/F"}
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(n=>setTimeout(()=>{n()},e))}export function formatImageURL(e,n=128,t){return`${e}.${t??(e.includes("/a_")?"gif":"jpg")}?size=${n}`}
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgdHlwZSB7IEltYWdlRm9ybWF0LCBJbWFnZVNpemUgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBJbWFnZUZvcm1hdCwgSW1hZ2VTaXplIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5cbi8qKiBQYXVzZSB0aGUgZXhlY3V0aW9uIGZvciBhIGdpdmVuIGFtb3VudCBvZiBtaWxsaXNlY29uZHMuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsYXkobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3JldHVybi1hd2FpdFxuICByZXR1cm4gbmV3IFByb21pc2UoXG4gICAgKHJlc29sdmUpOiBOb2RlSlMuVGltZW91dCA9PlxuICAgICAgc2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgfSwgbXMpLFxuICApXG59XG5cbi8qKiBIZWxwIGZvcm1hdCBhbiBpbWFnZSB1cmwuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0SW1hZ2VVUkwodXJsOiBzdHJpbmcsIHNpemU6IEltYWdlU2l6ZSA9IDEyOCwgZm9ybWF0PzogSW1hZ2VGb3JtYXQpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7dXJsfS4ke2Zvcm1hdCA/PyAodXJsLmluY2x1ZGVzKCcvYV8nKSA/ICdnaWYnIDogJ2pwZycpfT9zaXplPSR7c2l6ZX1gXG59XG5cbi8vIC8vIFR5cGVzY3JpcHQgaXMgbm90IHNvIGdvb2QgYXMgd2UgZGV2ZWxvcGVycyBzbyB3ZSBuZWVkIHRoaXMgbGl0dGxlIHV0aWxpdHkgZnVuY3Rpb24gdG8gaGVscCBpdCBvdXRcbi8vIC8vIFRha2VuIGZyb20gaHR0cHM6Ly9mZXR0YmxvZy5ldS90eXBlc2NyaXB0LWhhc293bnByb3BlcnR5L1xuLy8gLyoqIFRTIHNhdmUgd2F5IHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzIGluIGFuIG9iamVjdCAqL1xuLy8gZXhwb3J0IGZ1bmN0aW9uIGhhc1Byb3BlcnR5PFQgZXh0ZW5kcyB7fSwgWSBleHRlbmRzIFByb3BlcnR5S2V5ID0gc3RyaW5nPiAoXG4vLyAgIG9iajogVCxcbi8vICAgcHJvcDogWVxuLy8gKTogb2JqIGlzIFQgJiBSZWNvcmQ8WSwgdW5rbm93bj4ge1xuLy8gICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4vLyAgIHJldHVybiBvYmouaGFzT3duUHJvcGVydHkocHJvcClcbi8vIH1cbiJdLCJuYW1lcyI6WyJkZWxheSIsIm1zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXRUaW1lb3V0IiwiZm9ybWF0SW1hZ2VVUkwiLCJ1cmwiLCJzaXplIiwiZm9ybWF0IiwiaW5jbHVkZXMiXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sZUFBZUEsTUFBTUMsQ0FBVSxDQUFpQixDQUVyRCxPQUFPLElBQUlDLFFBQ1QsQUFBQ0MsR0FDQ0MsV0FBVyxJQUFZLENBQ3JCRCxHQUNGLEVBQUdGLEdBRVQsQ0FBQyxBQUdELE9BQU8sU0FBU0ksZUFBZUMsQ0FBVyxDQUFFQyxFQUFrQixHQUFHLENBQUVDLENBQW9CLENBQVUsQ0FDL0YsTUFBTyxDQUFDLEVBQUVGLEVBQUksQ0FBQyxFQUFFRSxHQUFXRixDQUFBQSxFQUFJRyxRQUFRLENBQUMsT0FBUyxNQUFRLEtBQUssQUFBRCxFQUFHLE1BQU0sRUFBRUYsRUFBSyxDQUFDLEFBQ2pGLENBQUMifQ==
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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"sourcesContent":["/** Pause the execution for a given amount of milliseconds. */\nexport async function delay(ms: number): Promise<void> {\n // eslint-disable-next-line @typescript-eslint/return-await\n return new Promise(\n (resolve): NodeJS.Timeout =>\n setTimeout((): void => {\n resolve()\n }, ms),\n )\n}\n\n// Typescript is not so good as we developers so we need this little utility function to help it out\n// Taken from https://fettblog.eu/typescript-hasownproperty/\n/** TS save way to check if a property exists in an object */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasProperty<T extends {}, Y extends PropertyKey = string>(obj: T, prop: Y): obj is T & Record<Y, unknown> {\n // eslint-disable-next-line no-prototype-builtins\n return obj.hasOwnProperty(prop)\n}\n"],"names":["delay","ms","Promise","resolve","setTimeout","hasProperty","obj","prop","hasOwnProperty"],"mappings":"AAAA,4DAA4D,GAC5D,OAAO,eAAeA,MAAMC,EAAU,EAAiB;IACrD,2DAA2D;IAC3D,OAAO,IAAIC,QACT,CAACC,UACCC,WAAW,IAAY;YACrBD;QACF,GAAGF;AAET,CAAC;AAED,oGAAoG;AACpG,4DAA4D;AAC5D,2DAA2D,GAC3D,wDAAwD;AACxD,OAAO,SAASI,YAA0DC,GAAM,EAAEC,IAAO,EAAiC;IACxH,iDAAiD;IACjD,OAAOD,IAAIE,cAAc,CAACD;AAC5B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@discordeno/utils",
3
- "version": "19.0.0-next.f6bd769",
3
+ "version": "19.0.0-next.f98bb9b",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "type": "module",
@@ -23,24 +23,24 @@
23
23
  "test:test-type": "tsc --project tsconfig.test.json"
24
24
  },
25
25
  "dependencies": {
26
- "@discordeno/types": "19.0.0-next.f6bd769",
26
+ "@discordeno/types": "19.0.0-next.f98bb9b",
27
27
  "tweetnacl": "^1.0.3"
28
28
  },
29
29
  "devDependencies": {
30
- "@swc/cli": "^0.1.57",
31
- "@swc/core": "^1.3.21",
32
- "@types/chai": "^4",
33
- "@types/mocha": "^10",
34
- "@types/node": "^18.11.15",
30
+ "@swc/cli": "^0.1.62",
31
+ "@swc/core": "^1.3.40",
32
+ "@types/chai": "^4.3.4",
33
+ "@types/mocha": "^10.0.1",
34
+ "@types/node": "^18.15.3",
35
35
  "@types/sinon": "^10.0.13",
36
- "c8": "^7.12.0",
36
+ "c8": "^7.13.0",
37
37
  "chai": "^4.3.7",
38
- "eslint": "^8.0.1",
38
+ "eslint": "^8.36.0",
39
39
  "eslint-config-discordeno": "*",
40
- "mocha": "^10.1.0",
41
- "sinon": "^15.0.0",
40
+ "mocha": "^10.2.0",
41
+ "sinon": "^15.0.2",
42
42
  "ts-node": "^10.9.1",
43
43
  "tsconfig": "*",
44
- "typescript": "^4.9.3"
44
+ "typescript": "^4.9.5"
45
45
  }
46
46
  }
package/dist/files.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import type { FileContent } from "@discordeno/types";
2
- export declare function findFiles(file: unknown): FileContent[];
3
- export declare function coerceToFileContent(value: unknown): value is FileContent;
4
- //# sourceMappingURL=files.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAGpD,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,EAAE,CAOtD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAyBxE"}
package/dist/files.js DELETED
@@ -1,2 +0,0 @@
1
- import{decode as e}from"./base64.js";export function findFiles(e){if(!e)return[];let t=Array.isArray(e)?e:[e];return t.filter(coerceToFileContent)}export function coerceToFileContent(t){if(!t||"object"!=typeof t)return!1;let r=t;if("string"!=typeof r.name)return!1;switch(typeof r.blob){case"string":{let o=r.blob.match(/^data:(?<mimeType>[a-zA-Z0-9/]*);base64,(?<content>.*)$/);if(o?.groups===void 0)return!1;let{mimeType:n,content:i}=o.groups;return r.blob=new Blob([e(i)],{type:n}),!0}case"object":return r.blob instanceof Blob;default:return!1}}
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9maWxlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZpbGVDb250ZW50IH0gZnJvbSBcIkBkaXNjb3JkZW5vL3R5cGVzXCJcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gXCIuL2Jhc2U2NC5qc1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRmlsZXMoZmlsZTogdW5rbm93bik6IEZpbGVDb250ZW50W10ge1xuICBpZiAoIWZpbGUpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIGNvbnN0IGZpbGVzOiB1bmtub3duW10gPSBBcnJheS5pc0FycmF5KGZpbGUpID8gZmlsZSA6IFtmaWxlXVxuICByZXR1cm4gZmlsZXMuZmlsdGVyKGNvZXJjZVRvRmlsZUNvbnRlbnQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VUb0ZpbGVDb250ZW50KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRmlsZUNvbnRlbnQge1xuICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBpZiAodHlwZW9mIGZpbGUubmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHN3aXRjaCAodHlwZW9mIGZpbGUuYmxvYikge1xuICAgIGNhc2UgJ3N0cmluZyc6IHtcbiAgICAgIGNvbnN0IG1hdGNoID0gZmlsZS5ibG9iLm1hdGNoKC9eZGF0YTooPzxtaW1lVHlwZT5bYS16QS1aMC05L10qKTtiYXNlNjQsKD88Y29udGVudD4uKikkLylcbiAgICAgIGlmIChtYXRjaD8uZ3JvdXBzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCB7IG1pbWVUeXBlLCBjb250ZW50IH0gPSBtYXRjaC5ncm91cHNcbiAgICAgIGZpbGUuYmxvYiA9IG5ldyBCbG9iKFtkZWNvZGUoY29udGVudCldLCB7IHR5cGU6IG1pbWVUeXBlIH0pXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgcmV0dXJuIGZpbGUuYmxvYiBpbnN0YW5jZW9mIEJsb2JcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJkZWNvZGUiLCJmaW5kRmlsZXMiLCJmaWxlIiwiZmlsZXMiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJjb2VyY2VUb0ZpbGVDb250ZW50IiwidmFsdWUiLCJuYW1lIiwiYmxvYiIsIm1hdGNoIiwiZ3JvdXBzIiwidW5kZWZpbmVkIiwibWltZVR5cGUiLCJjb250ZW50IiwiQmxvYiIsInR5cGUiXSwibWFwcGluZ3MiOiJBQUNBLE9BQVNBLFVBQUFBLENBQU0sS0FBUSxhQUFhLEFBRXBDLFFBQU8sU0FBU0MsVUFBVUMsQ0FBYSxDQUFpQixDQUN0RCxHQUFJLENBQUNBLEVBQ0gsTUFBTyxFQUFFLEFBQ1YsQ0FFRCxJQUFNQyxFQUFtQkMsTUFBTUMsT0FBTyxDQUFDSCxHQUFRQSxFQUFPLENBQUNBLEVBQUssQ0FDNUQsT0FBT0MsRUFBTUcsTUFBTSxDQUFDQyxvQkFDdEIsQ0FBQyxBQUVELE9BQU8sU0FBU0Esb0JBQW9CQyxDQUFjLENBQXdCLENBQ3hFLEdBQUksQ0FBQ0EsR0FBUyxBQUFpQixVQUFqQixPQUFPQSxFQUNuQixNQUFPLENBQUEsQ0FDUixDQUVELElBQU1OLEVBQU9NLEVBQ2IsR0FBSSxBQUFxQixVQUFyQixPQUFPTixFQUFLTyxJQUFJLENBQ2xCLE1BQU8sQ0FBQSxDQUNSLENBRUQsT0FBUSxPQUFPUCxFQUFLUSxJQUFJLEVBQ3RCLElBQUssU0FBVSxDQUNiLElBQU1DLEVBQVFULEVBQUtRLElBQUksQ0FBQ0MsS0FBSyxDQUFDLDJEQUM5QixHQUFJQSxHQUFPQyxTQUFXQyxLQUFBQSxFQUNwQixNQUFPLENBQUEsQ0FDUixDQUNELEdBQU0sQ0FBRUMsU0FBQUEsQ0FBUSxDQUFFQyxRQUFBQSxDQUFPLENBQUUsQ0FBR0osRUFBTUMsTUFBTSxDQUUxQyxPQURBVixFQUFLUSxJQUFJLENBQUcsSUFBSU0sS0FBSyxDQUFDaEIsRUFBT2UsR0FBUyxDQUFFLENBQUVFLEtBQU1ILENBQVMsR0FDbEQsQ0FBQSxDQUNULENBQ0EsSUFBSyxTQUNILE9BQU9aLEVBQUtRLElBQUksWUFBWU0sSUFDOUIsU0FDRSxNQUFPLENBQUEsQ0FDWCxDQUNGLENBQUMifQ==