tiny-essentials 1.0.0

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 (302) hide show
  1. package/.github/FUNDING.yml +4 -0
  2. package/.github/workflows/node.js.yml +31 -0
  3. package/LICENSE +674 -0
  4. package/README.md +67 -0
  5. package/dist/TinyEssentials.min.js +1 -0
  6. package/dist/_virtual/_commonjsHelpers.cjs +7 -0
  7. package/dist/_virtual/common.cjs +5 -0
  8. package/dist/_virtual/index.cjs +9 -0
  9. package/dist/_virtual/index2.cjs +5 -0
  10. package/dist/_virtual/trace.cjs +5 -0
  11. package/dist/legacy/crypto/decrypt.cjs +57 -0
  12. package/dist/legacy/crypto/decrypt.d.mts +18 -0
  13. package/dist/legacy/crypto/decrypt.mjs +47 -0
  14. package/dist/legacy/crypto/default.cjs +23 -0
  15. package/dist/legacy/crypto/default.d.mts +35 -0
  16. package/dist/legacy/crypto/default.mjs +19 -0
  17. package/dist/legacy/crypto/encrypt.cjs +54 -0
  18. package/dist/legacy/crypto/encrypt.d.mts +19 -0
  19. package/dist/legacy/crypto/encrypt.mjs +46 -0
  20. package/dist/legacy/crypto/index.cjs +11 -0
  21. package/dist/legacy/crypto/index.d.mts +4 -0
  22. package/dist/legacy/crypto/index.mjs +6 -0
  23. package/dist/legacy/firebase/cookieSession.cjs +121 -0
  24. package/dist/legacy/firebase/cookieSession.d.mts +56 -0
  25. package/dist/legacy/firebase/cookieSession.mjs +114 -0
  26. package/dist/legacy/firebase/database/index.cjs +11 -0
  27. package/dist/legacy/firebase/database/index.d.mts +7 -0
  28. package/dist/legacy/firebase/database/index.mjs +7 -0
  29. package/dist/legacy/firebase/database/presence.cjs +131 -0
  30. package/dist/legacy/firebase/database/presence.d.mts +9 -0
  31. package/dist/legacy/firebase/database/presence.mjs +111 -0
  32. package/dist/legacy/firebase/database/saveAsync.cjs +147 -0
  33. package/dist/legacy/firebase/database/saveAsync.d.mts +54 -0
  34. package/dist/legacy/firebase/database/saveAsync.mjs +147 -0
  35. package/dist/legacy/firebase/databaseEscape.cjs +42 -0
  36. package/dist/legacy/firebase/databaseEscape.d.mts +11 -0
  37. package/dist/legacy/firebase/databaseEscape.mjs +37 -0
  38. package/dist/legacy/firebase/databaseLogger.cjs +258 -0
  39. package/dist/legacy/firebase/databaseLogger.d.mts +7 -0
  40. package/dist/legacy/firebase/databaseLogger.mjs +234 -0
  41. package/dist/legacy/firebase/discord/api/addGuildMember.cjs +71 -0
  42. package/dist/legacy/firebase/discord/api/addGuildMember.d.mts +38 -0
  43. package/dist/legacy/firebase/discord/api/addGuildMember.mjs +64 -0
  44. package/dist/legacy/firebase/discord/api/getGuildWidget.cjs +47 -0
  45. package/dist/legacy/firebase/discord/api/getGuildWidget.d.mts +17 -0
  46. package/dist/legacy/firebase/discord/api/getGuildWidget.mjs +43 -0
  47. package/dist/legacy/firebase/discord/api/getToken.cjs +67 -0
  48. package/dist/legacy/firebase/discord/api/getToken.d.mts +35 -0
  49. package/dist/legacy/firebase/discord/api/getToken.mjs +63 -0
  50. package/dist/legacy/firebase/discord/api/getUser.cjs +58 -0
  51. package/dist/legacy/firebase/discord/api/getUser.d.mts +27 -0
  52. package/dist/legacy/firebase/discord/api/getUser.mjs +54 -0
  53. package/dist/legacy/firebase/discord/api/getUserConnections.cjs +57 -0
  54. package/dist/legacy/firebase/discord/api/getUserConnections.d.mts +26 -0
  55. package/dist/legacy/firebase/discord/api/getUserConnections.mjs +53 -0
  56. package/dist/legacy/firebase/discord/api/getUserGuilds.cjs +56 -0
  57. package/dist/legacy/firebase/discord/api/getUserGuilds.d.mts +25 -0
  58. package/dist/legacy/firebase/discord/api/getUserGuilds.mjs +52 -0
  59. package/dist/legacy/firebase/discord/api/index.cjs +24 -0
  60. package/dist/legacy/firebase/discord/api/index.d.mts +19 -0
  61. package/dist/legacy/firebase/discord/api/index.mjs +20 -0
  62. package/dist/legacy/firebase/discord/api/refreshToken.cjs +77 -0
  63. package/dist/legacy/firebase/discord/api/refreshToken.d.mts +45 -0
  64. package/dist/legacy/firebase/discord/api/refreshToken.mjs +73 -0
  65. package/dist/legacy/firebase/discord/api/revokeToken.cjs +61 -0
  66. package/dist/legacy/firebase/discord/api/revokeToken.d.mts +29 -0
  67. package/dist/legacy/firebase/discord/api/revokeToken.mjs +58 -0
  68. package/dist/legacy/firebase/discord/config.cjs +21 -0
  69. package/dist/legacy/firebase/discord/config.d.mts +27 -0
  70. package/dist/legacy/firebase/discord/config.mjs +17 -0
  71. package/dist/legacy/firebase/discord/firebase_redirect/index.cjs +11 -0
  72. package/dist/legacy/firebase/discord/firebase_redirect/index.d.mts +7 -0
  73. package/dist/legacy/firebase/discord/firebase_redirect/index.mjs +7 -0
  74. package/dist/legacy/firebase/discord/firebase_redirect/login.cjs +110 -0
  75. package/dist/legacy/firebase/discord/firebase_redirect/login.d.mts +4 -0
  76. package/dist/legacy/firebase/discord/firebase_redirect/login.mjs +107 -0
  77. package/dist/legacy/firebase/discord/firebase_redirect/logout.cjs +100 -0
  78. package/dist/legacy/firebase/discord/firebase_redirect/logout.d.mts +4 -0
  79. package/dist/legacy/firebase/discord/firebase_redirect/logout.mjs +97 -0
  80. package/dist/legacy/firebase/discord/get/authURLGenerator.cjs +76 -0
  81. package/dist/legacy/firebase/discord/get/authURLGenerator.d.mts +23 -0
  82. package/dist/legacy/firebase/discord/get/authURLGenerator.mjs +67 -0
  83. package/dist/legacy/firebase/discord/get/cookie-session.cjs +32 -0
  84. package/dist/legacy/firebase/discord/get/cookie-session.d.mts +20 -0
  85. package/dist/legacy/firebase/discord/get/cookie-session.mjs +28 -0
  86. package/dist/legacy/firebase/discord/get/credentials.cjs +24 -0
  87. package/dist/legacy/firebase/discord/get/credentials.d.mts +19 -0
  88. package/dist/legacy/firebase/discord/get/credentials.mjs +20 -0
  89. package/dist/legacy/firebase/discord/get/errorValidator.cjs +60 -0
  90. package/dist/legacy/firebase/discord/get/errorValidator.d.mts +28 -0
  91. package/dist/legacy/firebase/discord/get/errorValidator.mjs +55 -0
  92. package/dist/legacy/firebase/discord/get/index.cjs +17 -0
  93. package/dist/legacy/firebase/discord/get/index.d.mts +13 -0
  94. package/dist/legacy/firebase/discord/get/index.mjs +13 -0
  95. package/dist/legacy/firebase/discord/get/randomAvatar.cjs +37 -0
  96. package/dist/legacy/firebase/discord/get/randomAvatar.d.mts +22 -0
  97. package/dist/legacy/firebase/discord/get/randomAvatar.mjs +30 -0
  98. package/dist/legacy/firebase/discord/http/index.cjs +15 -0
  99. package/dist/legacy/firebase/discord/http/index.d.mts +11 -0
  100. package/dist/legacy/firebase/discord/http/index.mjs +11 -0
  101. package/dist/legacy/firebase/discord/http/login.cjs +127 -0
  102. package/dist/legacy/firebase/discord/http/login.d.mts +21 -0
  103. package/dist/legacy/firebase/discord/http/login.mjs +123 -0
  104. package/dist/legacy/firebase/discord/http/logout.cjs +155 -0
  105. package/dist/legacy/firebase/discord/http/logout.d.mts +22 -0
  106. package/dist/legacy/firebase/discord/http/logout.mjs +143 -0
  107. package/dist/legacy/firebase/discord/http/redirect.cjs +188 -0
  108. package/dist/legacy/firebase/discord/http/redirect.d.mts +24 -0
  109. package/dist/legacy/firebase/discord/http/redirect.mjs +178 -0
  110. package/dist/legacy/firebase/discord/http/refreshToken.cjs +133 -0
  111. package/dist/legacy/firebase/discord/http/refreshToken.d.mts +24 -0
  112. package/dist/legacy/firebase/discord/http/refreshToken.mjs +121 -0
  113. package/dist/legacy/firebase/discord/index.cjs +19 -0
  114. package/dist/legacy/firebase/discord/index.d.mts +15 -0
  115. package/dist/legacy/firebase/discord/index.mjs +15 -0
  116. package/dist/legacy/firebase/discord/template/cookie-session.cjs +1430 -0
  117. package/dist/legacy/firebase/discord/template/cookie-session.d.mts +22 -0
  118. package/dist/legacy/firebase/discord/template/cookie-session.mjs +1159 -0
  119. package/dist/legacy/firebase/domainRedirect.cjs +35 -0
  120. package/dist/legacy/firebase/domainRedirect.d.mts +12 -0
  121. package/dist/legacy/firebase/domainRedirect.mjs +27 -0
  122. package/dist/legacy/firebase/escape.cjs +75 -0
  123. package/dist/legacy/firebase/escape.d.mts +17 -0
  124. package/dist/legacy/firebase/escape.mjs +58 -0
  125. package/dist/legacy/firebase/getDBAsync.cjs +33 -0
  126. package/dist/legacy/firebase/getDBAsync.d.mts +10 -0
  127. package/dist/legacy/firebase/getDBAsync.mjs +26 -0
  128. package/dist/legacy/firebase/getDBData.cjs +21 -0
  129. package/dist/legacy/firebase/getDBData.d.mts +1 -0
  130. package/dist/legacy/firebase/getDBData.mjs +17 -0
  131. package/dist/legacy/firebase/getDBValue.cjs +17 -0
  132. package/dist/legacy/firebase/getDBValue.d.mts +9 -0
  133. package/dist/legacy/firebase/getDBValue.mjs +14 -0
  134. package/dist/legacy/firebase/index.cjs +261 -0
  135. package/dist/legacy/firebase/index.d.mts +51 -0
  136. package/dist/legacy/firebase/index.mjs +234 -0
  137. package/dist/legacy/firebase/isEmulator.cjs +14 -0
  138. package/dist/legacy/firebase/isEmulator.d.mts +8 -0
  139. package/dist/legacy/firebase/isEmulator.mjs +10 -0
  140. package/dist/legacy/firebase/logger.cjs +137 -0
  141. package/dist/legacy/firebase/logger.d.mts +7 -0
  142. package/dist/legacy/firebase/logger.mjs +125 -0
  143. package/dist/legacy/firebase/mySQL.cjs +26 -0
  144. package/dist/legacy/firebase/mySQL.d.mts +10 -0
  145. package/dist/legacy/firebase/mySQL.mjs +22 -0
  146. package/dist/legacy/firebase/mysqlConnector/create.cjs +119 -0
  147. package/dist/legacy/firebase/mysqlConnector/create.d.mts +36 -0
  148. package/dist/legacy/firebase/mysqlConnector/create.mjs +109 -0
  149. package/dist/legacy/firebase/mysqlConnector/index.cjs +23 -0
  150. package/dist/legacy/firebase/mysqlConnector/index.d.mts +11 -0
  151. package/dist/legacy/firebase/mysqlConnector/index.mjs +16 -0
  152. package/dist/legacy/firebase/mysqlConnector/nextPrev.cjs +75 -0
  153. package/dist/legacy/firebase/mysqlConnector/nextPrev.d.mts +31 -0
  154. package/dist/legacy/firebase/mysqlConnector/nextPrev.mjs +63 -0
  155. package/dist/legacy/firebase/mysqlConnector/pagination.cjs +91 -0
  156. package/dist/legacy/firebase/mysqlConnector/pagination.d.mts +33 -0
  157. package/dist/legacy/firebase/mysqlConnector/pagination.mjs +87 -0
  158. package/dist/legacy/firebase/mysqlConnector/sameUser.cjs +28 -0
  159. package/dist/legacy/firebase/mysqlConnector/sameUser.d.mts +12 -0
  160. package/dist/legacy/firebase/mysqlConnector/sameUser.mjs +23 -0
  161. package/dist/legacy/firebase/transactionDBAsync.cjs +33 -0
  162. package/dist/legacy/firebase/transactionDBAsync.d.mts +11 -0
  163. package/dist/legacy/firebase/transactionDBAsync.mjs +27 -0
  164. package/dist/legacy/get/countObj.cjs +24 -0
  165. package/dist/legacy/get/countObj.d.mts +11 -0
  166. package/dist/legacy/get/countObj.mjs +21 -0
  167. package/dist/legacy/get/decimalColor.cjs +60 -0
  168. package/dist/legacy/get/decimalColor.d.mts +12 -0
  169. package/dist/legacy/get/decimalColor.mjs +54 -0
  170. package/dist/legacy/get/objType.cjs +43 -0
  171. package/dist/legacy/get/objType.d.mts +19 -0
  172. package/dist/legacy/get/objType.mjs +40 -0
  173. package/dist/legacy/get/pagination.cjs +100 -0
  174. package/dist/legacy/get/pagination.d.mts +25 -0
  175. package/dist/legacy/get/pagination.mjs +91 -0
  176. package/dist/legacy/get/queryUrlByName.cjs +31 -0
  177. package/dist/legacy/get/queryUrlByName.d.mts +20 -0
  178. package/dist/legacy/get/queryUrlByName.mjs +28 -0
  179. package/dist/legacy/get/queryUrlJSON.cjs +54 -0
  180. package/dist/legacy/get/queryUrlJSON.d.mts +23 -0
  181. package/dist/legacy/get/queryUrlJSON.mjs +57 -0
  182. package/dist/legacy/get/super_string_filter.cjs +97 -0
  183. package/dist/legacy/get/super_string_filter.d.mts +25 -0
  184. package/dist/legacy/get/super_string_filter.mjs +83 -0
  185. package/dist/legacy/get/versionCheck.cjs +49 -0
  186. package/dist/legacy/get/versionCheck.d.mts +17 -0
  187. package/dist/legacy/get/versionCheck.mjs +38 -0
  188. package/dist/legacy/http/HTTP-1.0.cjs +151 -0
  189. package/dist/legacy/http/HTTP-1.0.d.mts +8 -0
  190. package/dist/legacy/http/HTTP-1.0.mjs +136 -0
  191. package/dist/legacy/http/auth.cjs +70 -0
  192. package/dist/legacy/http/auth.d.mts +41 -0
  193. package/dist/legacy/http/auth.mjs +63 -0
  194. package/dist/legacy/http/check_domain.cjs +84 -0
  195. package/dist/legacy/http/check_domain.d.mts +10 -0
  196. package/dist/legacy/http/check_domain.mjs +82 -0
  197. package/dist/legacy/http/csrfTokenAnalyze.cjs +46 -0
  198. package/dist/legacy/http/csrfTokenAnalyze.d.mts +21 -0
  199. package/dist/legacy/http/csrfTokenAnalyze.mjs +40 -0
  200. package/dist/legacy/http/domainValidator.cjs +98 -0
  201. package/dist/legacy/http/domainValidator.d.mts +30 -0
  202. package/dist/legacy/http/domainValidator.mjs +82 -0
  203. package/dist/legacy/http/errorsCallback.cjs +55 -0
  204. package/dist/legacy/http/errorsCallback.d.mts +29 -0
  205. package/dist/legacy/http/errorsCallback.mjs +48 -0
  206. package/dist/legacy/http/fetch/json.cjs +48 -0
  207. package/dist/legacy/http/fetch/json.d.mts +22 -0
  208. package/dist/legacy/http/fetch/json.mjs +41 -0
  209. package/dist/legacy/http/fetch/text.cjs +47 -0
  210. package/dist/legacy/http/fetch/text.d.mts +21 -0
  211. package/dist/legacy/http/fetch/text.mjs +40 -0
  212. package/dist/legacy/http/fileCache.cjs +79 -0
  213. package/dist/legacy/http/fileCache.d.mts +35 -0
  214. package/dist/legacy/http/fileCache.mjs +70 -0
  215. package/dist/legacy/http/getDomainURL.cjs +59 -0
  216. package/dist/legacy/http/getDomainURL.d.mts +18 -0
  217. package/dist/legacy/http/getDomainURL.mjs +54 -0
  218. package/dist/legacy/http/userIP.cjs +59 -0
  219. package/dist/legacy/http/userIP.d.mts +21 -0
  220. package/dist/legacy/http/userIP.mjs +48 -0
  221. package/dist/legacy/index.cjs +122 -0
  222. package/dist/legacy/index.d.mts +89 -0
  223. package/dist/legacy/index.mjs +92 -0
  224. package/dist/legacy/libs/arraySortPositions.cjs +30 -0
  225. package/dist/legacy/libs/arraySortPositions.d.mts +16 -0
  226. package/dist/legacy/libs/arraySortPositions.mjs +27 -0
  227. package/dist/legacy/libs/capitalize.cjs +21 -0
  228. package/dist/legacy/libs/capitalize.d.mts +13 -0
  229. package/dist/legacy/libs/capitalize.mjs +17 -0
  230. package/dist/legacy/libs/convertBytes.cjs +64 -0
  231. package/dist/legacy/libs/convertBytes.d.mts +17 -0
  232. package/dist/legacy/libs/convertBytes.mjs +55 -0
  233. package/dist/legacy/libs/custom_module_loader.cjs +82 -0
  234. package/dist/legacy/libs/custom_module_loader.d.mts +5 -0
  235. package/dist/legacy/libs/custom_module_loader.mjs +79 -0
  236. package/dist/legacy/libs/dice.cjs +35 -0
  237. package/dist/legacy/libs/dice.d.mts +5 -0
  238. package/dist/legacy/libs/dice.mjs +31 -0
  239. package/dist/legacy/libs/markdown.cjs +85 -0
  240. package/dist/legacy/libs/markdown.d.mts +75 -0
  241. package/dist/legacy/libs/markdown.mjs +78 -0
  242. package/dist/legacy/libs/percentage.cjs +22 -0
  243. package/dist/legacy/libs/percentage.d.mts +4 -0
  244. package/dist/legacy/libs/percentage.mjs +19 -0
  245. package/dist/legacy/libs/regex/getLetter.cjs +22 -0
  246. package/dist/legacy/libs/regex/getLetter.d.mts +12 -0
  247. package/dist/legacy/libs/regex/getLetter.mjs +19 -0
  248. package/dist/legacy/libs/replaceAsync.cjs +32 -0
  249. package/dist/legacy/libs/replaceAsync.d.mts +15 -0
  250. package/dist/legacy/libs/replaceAsync.mjs +25 -0
  251. package/dist/legacy/libs/rule3.cjs +58 -0
  252. package/dist/legacy/libs/rule3.d.mts +5 -0
  253. package/dist/legacy/libs/rule3.mjs +54 -0
  254. package/dist/legacy/libs/userLevel.cjs +134 -0
  255. package/dist/legacy/libs/userLevel.d.mts +69 -0
  256. package/dist/legacy/libs/userLevel.mjs +123 -0
  257. package/dist/legacy/momentjs/getAge.cjs +28 -0
  258. package/dist/legacy/momentjs/getAge.d.mts +8 -0
  259. package/dist/legacy/momentjs/getAge.mjs +22 -0
  260. package/dist/legacy/momentjs/index.cjs +9 -0
  261. package/dist/legacy/momentjs/index.d.mts +3 -0
  262. package/dist/legacy/momentjs/index.mjs +3 -0
  263. package/dist/legacy/momentjs/timeDuration.cjs +29 -0
  264. package/dist/legacy/momentjs/timeDuration.d.mts +9 -0
  265. package/dist/legacy/momentjs/timeDuration.mjs +23 -0
  266. package/dist/legacy/socket.io/antiFlood/index.cjs +9 -0
  267. package/dist/legacy/socket.io/antiFlood/index.d.mts +3 -0
  268. package/dist/legacy/socket.io/antiFlood/index.mjs +3 -0
  269. package/dist/legacy/socket.io/antiFlood/install.cjs +32 -0
  270. package/dist/legacy/socket.io/antiFlood/install.d.mts +14 -0
  271. package/dist/legacy/socket.io/antiFlood/install.mjs +27 -0
  272. package/dist/legacy/socket.io/antiFlood/verify.cjs +87 -0
  273. package/dist/legacy/socket.io/antiFlood/verify.d.mts +15 -0
  274. package/dist/legacy/socket.io/antiFlood/verify.mjs +73 -0
  275. package/dist/legacy/socket.io/cookie-session.cjs +25 -0
  276. package/dist/legacy/socket.io/cookie-session.d.mts +9 -0
  277. package/dist/legacy/socket.io/cookie-session.mjs +20 -0
  278. package/dist/legacy/socket.io/discord.cjs +61 -0
  279. package/dist/legacy/socket.io/discord.d.mts +10 -0
  280. package/dist/legacy/socket.io/discord.mjs +52 -0
  281. package/dist/legacy/socket.io/index.cjs +13 -0
  282. package/dist/legacy/socket.io/index.d.mts +9 -0
  283. package/dist/legacy/socket.io/index.mjs +9 -0
  284. package/dist/v1/basics/array.cjs +31 -0
  285. package/dist/v1/basics/array.d.mts +10 -0
  286. package/dist/v1/basics/array.mjs +22 -0
  287. package/dist/v1/basics/clock.cjs +187 -0
  288. package/dist/v1/basics/clock.d.mts +37 -0
  289. package/dist/v1/basics/clock.mjs +152 -0
  290. package/dist/v1/basics/objFilter.cjs +55 -0
  291. package/dist/v1/basics/objFilter.d.mts +27 -0
  292. package/dist/v1/basics/objFilter.mjs +52 -0
  293. package/dist/v1/basics/simpleMath.cjs +88 -0
  294. package/dist/v1/basics/simpleMath.d.mts +54 -0
  295. package/dist/v1/basics/simpleMath.mjs +75 -0
  296. package/dist/v1/basics/text.cjs +34 -0
  297. package/dist/v1/basics/text.d.mts +20 -0
  298. package/dist/v1/basics/text.mjs +25 -0
  299. package/dist/v1/index.cjs +26 -0
  300. package/dist/v1/index.d.mts +15 -0
  301. package/dist/v1/index.mjs +8 -0
  302. package/package.json +72 -0
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Handles the logout process by signing out from Firebase Auth,
3
+ * verifying CSRF token, and redirecting the user.
4
+ *
5
+ * The `run` function signs out the user, sends a logout request to the server
6
+ * along with CSRF protection, and then redirects the user to the specified URL
7
+ * or executes a custom callback.
8
+ *
9
+ * @namespace logout
10
+ */
11
+ const logout = {
12
+ /**
13
+ * Executes the logout process, verifying CSRF token, signing out
14
+ * the user, and handling redirection.
15
+ *
16
+ * @param {string} token - The authentication token used to identify the user.
17
+ * @param {string} redirect_url - The relative URL to redirect the user after logout.
18
+ * If it starts with "/", it will be adjusted.
19
+ * @param {string} csrfToken - The CSRF token provided in the request.
20
+ * @param {string} original_csrfToken - The CSRF token that was initially generated.
21
+ * @param {function} [callback] - Optional callback to be called after logout.
22
+ * Signature: `(err, redirectFunction)`
23
+ * - If omitted, default redirection is used.
24
+ *
25
+ * @example
26
+ * logout.run(userToken, '/home', csrfToken, originalCsrfToken);
27
+ *
28
+ * @example
29
+ * logout.run(userToken, '/home', csrfToken, originalCsrfToken, (err, redirect) => {
30
+ * if (err) {
31
+ * console.error('Logout failed:', err);
32
+ * return;
33
+ * }
34
+ * console.log('Logged out successfully');
35
+ * redirect(); // manually trigger the redirect
36
+ * });
37
+ */
38
+ run: function (token, redirect_url, csrfToken, original_csrfToken, callback) {
39
+ // Compare CSRF Token
40
+ if (original_csrfToken.length < 1 || original_csrfToken === csrfToken) {
41
+ // Fix Redirect
42
+ if (typeof redirect_url === 'string') {
43
+ if (redirect_url.startsWith('/'))
44
+ redirect_url = redirect_url.substring(1);
45
+ }
46
+ // Nope
47
+ else
48
+ redirect_url = '';
49
+ // Prepare Redirect
50
+ const final_redirect = function (err) {
51
+ // The Redirect
52
+ const start_redirect = function () {
53
+ window.location.href = window.location.origin + '/' + redirect_url;
54
+ };
55
+ // Default Redirect
56
+ if (typeof callback !== 'function') {
57
+ // Show Error
58
+ if (err)
59
+ alert(err.message);
60
+ // Redirect Now
61
+ start_redirect();
62
+ }
63
+ // Custom Redirect
64
+ else
65
+ callback(err, start_redirect);
66
+ };
67
+ // Sign Out
68
+ firebase
69
+ .auth()
70
+ .signOut()
71
+ // Success
72
+ .then(() => {
73
+ fetch(window.location.pathname, {
74
+ method: 'POST',
75
+ headers: {
76
+ Accept: 'application/json',
77
+ 'Content-Type': 'application/json',
78
+ },
79
+ body: JSON.stringify({ token: token, csrfToken: csrfToken }),
80
+ })
81
+ .then((response) => {
82
+ response
83
+ .json()
84
+ .then(() => final_redirect())
85
+ .catch(final_redirect);
86
+ })
87
+ .catch(final_redirect);
88
+ })
89
+ // Fail
90
+ .catch(final_redirect);
91
+ }
92
+ // Invalid
93
+ else
94
+ final_redirect(new Error('Invalid csrfToken!'));
95
+ },
96
+ };
97
+ export default logout;
@@ -0,0 +1,76 @@
1
+ 'use strict';
2
+
3
+ var encrypt = require('../../../crypto/encrypt.cjs');
4
+ var config = require('../config.cjs');
5
+
6
+ /**
7
+ * Generates an authorization URL for either login or webhook requests,
8
+ * including scopes, state, and redirect URIs. This URL can be used in OAuth2
9
+ * authentication flows, such as logging in or connecting a webhook.
10
+ *
11
+ * @function
12
+ * @param {Object} tinyCfg - The configuration object containing the app's OAuth2 settings.
13
+ * @param {Object} jsonState - The state object to be encrypted and passed in the authorization URL.
14
+ * @param {Object} tinyCrypto - The crypto object used to encrypt the state.
15
+ * @param {string} type - The type of the request, which determines the URL generation process.
16
+ * Can be `'login'`, `'login_command'`, or `'webhook'`.
17
+ *
18
+ * @returns {string} The generated authorization URL for OAuth2 authorization.
19
+ *
20
+ * @example
21
+ * const authUrl = authURLGenerator(tinyCfg, jsonState, tinyCrypto, 'login');
22
+ * console.log(authUrl);
23
+ *
24
+ * @example
25
+ * const webhookAuthUrl = authURLGenerator(tinyCfg, jsonState, tinyCrypto, 'webhook');
26
+ * console.log(webhookAuthUrl);
27
+ */
28
+ function authURLGenerator(tinyCfg, jsonState, tinyCrypto, type) {
29
+ // Scopes
30
+ let tinyScopeURI = '';
31
+
32
+ // Login
33
+ let needRedirect = false;
34
+ if (type === 'login' || type === 'login_command') {
35
+ // Normal Login
36
+ if (type === 'login') needRedirect = true;
37
+
38
+ // Read Scope
39
+ if (Array.isArray(tinyCfg.discordScope)) {
40
+ for (const item in tinyCfg.discordScope) {
41
+ if (tinyScopeURI) tinyScopeURI += '%20';
42
+ if (tinyCfg.discordScope[item] === 'applications.commands.update') needRedirect = true;
43
+ tinyScopeURI += encodeURIComponent(tinyCfg.discordScope[item]);
44
+ }
45
+ }
46
+ }
47
+
48
+ // Webhook
49
+ else if (type === 'webhook') {
50
+ needRedirect = true;
51
+ tinyScopeURI += 'webhook.incoming';
52
+ }
53
+
54
+ // Redirect Fixed
55
+ let tinyRedirect = '';
56
+ if (needRedirect && typeof tinyCfg.redirect === 'string')
57
+ tinyRedirect = '&redirect_uri=' + encodeURIComponent(tinyCfg.redirect);
58
+
59
+ // State
60
+ let tinyState = '';
61
+ let responseType = '';
62
+ if (needRedirect) {
63
+ // Crypto
64
+ tinyState = encrypt.encrypt(tinyCrypto, JSON.stringify(jsonState));
65
+ tinyState = '&state=' + encodeURIComponent(tinyState);
66
+ responseType = '&response_type=code';
67
+ }
68
+
69
+ // API URL
70
+ const apiURL = config.url;
71
+
72
+ // Redirect URL
73
+ return `${apiURL}oauth2/authorize?client_id=${encodeURIComponent(tinyCfg.client_id)}&scope=${tinyScopeURI}${responseType}${tinyRedirect}${tinyState}`;
74
+ }
75
+
76
+ module.exports = authURLGenerator;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Generates an authorization URL for either login or webhook requests,
3
+ * including scopes, state, and redirect URIs. This URL can be used in OAuth2
4
+ * authentication flows, such as logging in or connecting a webhook.
5
+ *
6
+ * @function
7
+ * @param {Object} tinyCfg - The configuration object containing the app's OAuth2 settings.
8
+ * @param {Object} jsonState - The state object to be encrypted and passed in the authorization URL.
9
+ * @param {Object} tinyCrypto - The crypto object used to encrypt the state.
10
+ * @param {string} type - The type of the request, which determines the URL generation process.
11
+ * Can be `'login'`, `'login_command'`, or `'webhook'`.
12
+ *
13
+ * @returns {string} The generated authorization URL for OAuth2 authorization.
14
+ *
15
+ * @example
16
+ * const authUrl = authURLGenerator(tinyCfg, jsonState, tinyCrypto, 'login');
17
+ * console.log(authUrl);
18
+ *
19
+ * @example
20
+ * const webhookAuthUrl = authURLGenerator(tinyCfg, jsonState, tinyCrypto, 'webhook');
21
+ * console.log(webhookAuthUrl);
22
+ */
23
+ export default function authURLGenerator(tinyCfg: Object, jsonState: Object, tinyCrypto: Object, type: string): string;
@@ -0,0 +1,67 @@
1
+ import { encrypt } from '../../../crypto/encrypt.mjs';
2
+ import config from '../config.mjs';
3
+ /**
4
+ * Generates an authorization URL for either login or webhook requests,
5
+ * including scopes, state, and redirect URIs. This URL can be used in OAuth2
6
+ * authentication flows, such as logging in or connecting a webhook.
7
+ *
8
+ * @function
9
+ * @param {Object} tinyCfg - The configuration object containing the app's OAuth2 settings.
10
+ * @param {Object} jsonState - The state object to be encrypted and passed in the authorization URL.
11
+ * @param {Object} tinyCrypto - The crypto object used to encrypt the state.
12
+ * @param {string} type - The type of the request, which determines the URL generation process.
13
+ * Can be `'login'`, `'login_command'`, or `'webhook'`.
14
+ *
15
+ * @returns {string} The generated authorization URL for OAuth2 authorization.
16
+ *
17
+ * @example
18
+ * const authUrl = authURLGenerator(tinyCfg, jsonState, tinyCrypto, 'login');
19
+ * console.log(authUrl);
20
+ *
21
+ * @example
22
+ * const webhookAuthUrl = authURLGenerator(tinyCfg, jsonState, tinyCrypto, 'webhook');
23
+ * console.log(webhookAuthUrl);
24
+ */
25
+ export default function authURLGenerator(tinyCfg, jsonState, tinyCrypto, type) {
26
+ // Scopes
27
+ let tinyScopeURI = '';
28
+ // Login
29
+ let needRedirect = false;
30
+ if (type === 'login' || type === 'login_command') {
31
+ // Normal Login
32
+ if (type === 'login')
33
+ needRedirect = true;
34
+ // Read Scope
35
+ if (Array.isArray(tinyCfg.discordScope)) {
36
+ for (const item in tinyCfg.discordScope) {
37
+ if (tinyScopeURI)
38
+ tinyScopeURI += '%20';
39
+ if (tinyCfg.discordScope[item] === 'applications.commands.update')
40
+ needRedirect = true;
41
+ tinyScopeURI += encodeURIComponent(tinyCfg.discordScope[item]);
42
+ }
43
+ }
44
+ }
45
+ // Webhook
46
+ else if (type === 'webhook') {
47
+ needRedirect = true;
48
+ tinyScopeURI += 'webhook.incoming';
49
+ }
50
+ // Redirect Fixed
51
+ let tinyRedirect = '';
52
+ if (needRedirect && typeof tinyCfg.redirect === 'string')
53
+ tinyRedirect = '&redirect_uri=' + encodeURIComponent(tinyCfg.redirect);
54
+ // State
55
+ let tinyState = '';
56
+ let responseType = '';
57
+ if (needRedirect) {
58
+ // Crypto
59
+ tinyState = encrypt(tinyCrypto, JSON.stringify(jsonState));
60
+ tinyState = '&state=' + encodeURIComponent(tinyState);
61
+ responseType = '&response_type=code';
62
+ }
63
+ // API URL
64
+ const apiURL = config.url;
65
+ // Redirect URL
66
+ return `${apiURL}oauth2/authorize?client_id=${encodeURIComponent(tinyCfg.client_id)}&scope=${tinyScopeURI}${responseType}${tinyRedirect}${tinyState}`;
67
+ }
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var objType = require('../../../get/objType.cjs');
4
+
5
+ /**
6
+ * Retrieves a session value from the request's session object based on the provided key.
7
+ * If the session object and the specific session key exist and are of the expected type,
8
+ * the value is returned. Otherwise, `null` is returned.
9
+ *
10
+ * @function
11
+ * @param {Object} req - The request object, which contains the session data.
12
+ * @param {string} where - The key for which the session value is being retrieved.
13
+ *
14
+ * @returns {string|null} The session value associated with the provided key, or `null` if it doesn't exist or isn't valid.
15
+ *
16
+ * @example
17
+ * const userToken = cookieSession(req, 'authToken');
18
+ * if (userToken) {
19
+ * console.log('Session token:', userToken);
20
+ * } else {
21
+ * console.log('No valid token in session');
22
+ * }
23
+ */
24
+ function cookieSession(req, where) {
25
+ // Get Token
26
+ if (objType(req.session, 'object') && typeof req.session[where] === 'string')
27
+ return req.session[where];
28
+ // Nope
29
+ else return null;
30
+ }
31
+
32
+ module.exports = cookieSession;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Retrieves a session value from the request's session object based on the provided key.
3
+ * If the session object and the specific session key exist and are of the expected type,
4
+ * the value is returned. Otherwise, `null` is returned.
5
+ *
6
+ * @function
7
+ * @param {Object} req - The request object, which contains the session data.
8
+ * @param {string} where - The key for which the session value is being retrieved.
9
+ *
10
+ * @returns {string|null} The session value associated with the provided key, or `null` if it doesn't exist or isn't valid.
11
+ *
12
+ * @example
13
+ * const userToken = cookieSession(req, 'authToken');
14
+ * if (userToken) {
15
+ * console.log('Session token:', userToken);
16
+ * } else {
17
+ * console.log('No valid token in session');
18
+ * }
19
+ */
20
+ export default function cookieSession(req: Object, where: string): string | null;
@@ -0,0 +1,28 @@
1
+ import objType from '../../../get/objType.mjs';
2
+ /**
3
+ * Retrieves a session value from the request's session object based on the provided key.
4
+ * If the session object and the specific session key exist and are of the expected type,
5
+ * the value is returned. Otherwise, `null` is returned.
6
+ *
7
+ * @function
8
+ * @param {Object} req - The request object, which contains the session data.
9
+ * @param {string} where - The key for which the session value is being retrieved.
10
+ *
11
+ * @returns {string|null} The session value associated with the provided key, or `null` if it doesn't exist or isn't valid.
12
+ *
13
+ * @example
14
+ * const userToken = cookieSession(req, 'authToken');
15
+ * if (userToken) {
16
+ * console.log('Session token:', userToken);
17
+ * } else {
18
+ * console.log('No valid token in session');
19
+ * }
20
+ */
21
+ export default function cookieSession(req, where) {
22
+ // Get Token
23
+ if (objType(req.session, 'object') && typeof req.session[where] === 'string')
24
+ return req.session[where];
25
+ // Nope
26
+ else
27
+ return null;
28
+ }
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Generates a Base64-encoded string for HTTP Basic Authentication using the provided `client_id` and `client_secret`.
5
+ * The string is formatted as `client_id:client_secret`, then encoded in Base64 for use in Authorization headers.
6
+ *
7
+ * @function
8
+ * @param {Object} tinyAuth - The object containing authentication credentials.
9
+ * @param {string} tinyAuth.client_id - The client ID for the authentication process.
10
+ * @param {string} tinyAuth.client_secret - The client secret associated with the client ID.
11
+ *
12
+ * @returns {string} The Base64-encoded string in the format `client_id:client_secret`.
13
+ *
14
+ * @example
15
+ * const authHeader = credentials({ client_id: 'myClientId', client_secret: 'mySecret' });
16
+ * console.log(authHeader); // Outputs: 'bXlDbGllZW50SWQ6bXlTZWNyZXQ='
17
+ */
18
+ function credentials(tinyAuth) {
19
+ // Result
20
+ const result = Buffer.from(`${tinyAuth.client_id}:${tinyAuth.client_secret}`).toString('base64');
21
+ return result;
22
+ }
23
+
24
+ module.exports = credentials;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Generates a Base64-encoded string for HTTP Basic Authentication using the provided `client_id` and `client_secret`.
3
+ * The string is formatted as `client_id:client_secret`, then encoded in Base64 for use in Authorization headers.
4
+ *
5
+ * @function
6
+ * @param {Object} tinyAuth - The object containing authentication credentials.
7
+ * @param {string} tinyAuth.client_id - The client ID for the authentication process.
8
+ * @param {string} tinyAuth.client_secret - The client secret associated with the client ID.
9
+ *
10
+ * @returns {string} The Base64-encoded string in the format `client_id:client_secret`.
11
+ *
12
+ * @example
13
+ * const authHeader = credentials({ client_id: 'myClientId', client_secret: 'mySecret' });
14
+ * console.log(authHeader); // Outputs: 'bXlDbGllZW50SWQ6bXlTZWNyZXQ='
15
+ */
16
+ export default function credentials(tinyAuth: {
17
+ client_id: string;
18
+ client_secret: string;
19
+ }): string;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Generates a Base64-encoded string for HTTP Basic Authentication using the provided `client_id` and `client_secret`.
3
+ * The string is formatted as `client_id:client_secret`, then encoded in Base64 for use in Authorization headers.
4
+ *
5
+ * @function
6
+ * @param {Object} tinyAuth - The object containing authentication credentials.
7
+ * @param {string} tinyAuth.client_id - The client ID for the authentication process.
8
+ * @param {string} tinyAuth.client_secret - The client secret associated with the client ID.
9
+ *
10
+ * @returns {string} The Base64-encoded string in the format `client_id:client_secret`.
11
+ *
12
+ * @example
13
+ * const authHeader = credentials({ client_id: 'myClientId', client_secret: 'mySecret' });
14
+ * console.log(authHeader); // Outputs: 'bXlDbGllZW50SWQ6bXlTZWNyZXQ='
15
+ */
16
+ export default function credentials(tinyAuth) {
17
+ // Result
18
+ const result = Buffer.from(`${tinyAuth.client_id}:${tinyAuth.client_secret}`).toString('base64');
19
+ return result;
20
+ }
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ var objType = require('../../../get/objType.cjs');
4
+
5
+ /**
6
+ * Validates the provided data and returns an object with either the parsed data or an error message.
7
+ * The function checks if the data is an object, array, or an invalid response, and processes it accordingly.
8
+ * If the data contains a `401 Unauthorized` error, it is handled specifically.
9
+ *
10
+ * @function
11
+ * @param {Object|Array} data - The response data to validate. This can be either an object or an array.
12
+ *
13
+ * @returns {Object} The result object containing:
14
+ * - `data` (Object|null): The validated data if no error occurred or null if an error was found.
15
+ * - `error` (Object|null): The error object if there was an issue, or null if no error was found.
16
+ *
17
+ * @example
18
+ * const response = { error: 'invalid_request', error_description: 'Invalid request format' };
19
+ * const result = errorValidator(response);
20
+ * console.log(result); // { data: null, error: { code: 401, message: 'Invalid request format' } }
21
+ *
22
+ * @example
23
+ * const response = [{ id: 1, name: 'John' }];
24
+ * const result = errorValidator(response);
25
+ * console.log(result); // { data: [{ id: 1, name: 'John' }], error: null }
26
+ *
27
+ * @example
28
+ * const response = 'Invalid Response';
29
+ * const result = errorValidator(response);
30
+ * console.log(result); // { data: null, error: { code: 500, message: 'Invalid HTTP Result!' } }
31
+ */
32
+ function errorValidator(data) {
33
+ // Result
34
+ const result = { data: null, error: null };
35
+
36
+ // Exist Object
37
+ if (objType(data, 'object')) {
38
+ // Success
39
+ if (typeof data.message !== 'string' || data.message !== '401: Unauthorized') {
40
+ // Success Complete
41
+ if (typeof data.error !== 'string' || typeof data.error_description !== 'string')
42
+ result.data = data;
43
+ // Nope
44
+ else result.error = { code: 401, message: data.error_description };
45
+ }
46
+
47
+ // Nope
48
+ else result.error = { code: 401, message: data.message };
49
+ }
50
+
51
+ // Exist Array
52
+ else if (Array.isArray(data)) result.data = data;
53
+ // Nope
54
+ else result.error = { code: 500, message: 'Invalid HTTP Result!' };
55
+
56
+ // Complete
57
+ return result;
58
+ }
59
+
60
+ module.exports = errorValidator;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Validates the provided data and returns an object with either the parsed data or an error message.
3
+ * The function checks if the data is an object, array, or an invalid response, and processes it accordingly.
4
+ * If the data contains a `401 Unauthorized` error, it is handled specifically.
5
+ *
6
+ * @function
7
+ * @param {Object|Array} data - The response data to validate. This can be either an object or an array.
8
+ *
9
+ * @returns {Object} The result object containing:
10
+ * - `data` (Object|null): The validated data if no error occurred or null if an error was found.
11
+ * - `error` (Object|null): The error object if there was an issue, or null if no error was found.
12
+ *
13
+ * @example
14
+ * const response = { error: 'invalid_request', error_description: 'Invalid request format' };
15
+ * const result = errorValidator(response);
16
+ * console.log(result); // { data: null, error: { code: 401, message: 'Invalid request format' } }
17
+ *
18
+ * @example
19
+ * const response = [{ id: 1, name: 'John' }];
20
+ * const result = errorValidator(response);
21
+ * console.log(result); // { data: [{ id: 1, name: 'John' }], error: null }
22
+ *
23
+ * @example
24
+ * const response = 'Invalid Response';
25
+ * const result = errorValidator(response);
26
+ * console.log(result); // { data: null, error: { code: 500, message: 'Invalid HTTP Result!' } }
27
+ */
28
+ export default function errorValidator(data: Object | any[]): Object;
@@ -0,0 +1,55 @@
1
+ import objType from '../../../get/objType.mjs';
2
+ /**
3
+ * Validates the provided data and returns an object with either the parsed data or an error message.
4
+ * The function checks if the data is an object, array, or an invalid response, and processes it accordingly.
5
+ * If the data contains a `401 Unauthorized` error, it is handled specifically.
6
+ *
7
+ * @function
8
+ * @param {Object|Array} data - The response data to validate. This can be either an object or an array.
9
+ *
10
+ * @returns {Object} The result object containing:
11
+ * - `data` (Object|null): The validated data if no error occurred or null if an error was found.
12
+ * - `error` (Object|null): The error object if there was an issue, or null if no error was found.
13
+ *
14
+ * @example
15
+ * const response = { error: 'invalid_request', error_description: 'Invalid request format' };
16
+ * const result = errorValidator(response);
17
+ * console.log(result); // { data: null, error: { code: 401, message: 'Invalid request format' } }
18
+ *
19
+ * @example
20
+ * const response = [{ id: 1, name: 'John' }];
21
+ * const result = errorValidator(response);
22
+ * console.log(result); // { data: [{ id: 1, name: 'John' }], error: null }
23
+ *
24
+ * @example
25
+ * const response = 'Invalid Response';
26
+ * const result = errorValidator(response);
27
+ * console.log(result); // { data: null, error: { code: 500, message: 'Invalid HTTP Result!' } }
28
+ */
29
+ export default function errorValidator(data) {
30
+ // Result
31
+ const result = { data: null, error: null };
32
+ // Exist Object
33
+ if (objType(data, 'object')) {
34
+ // Success
35
+ if (typeof data.message !== 'string' || data.message !== '401: Unauthorized') {
36
+ // Success Complete
37
+ if (typeof data.error !== 'string' || typeof data.error_description !== 'string')
38
+ result.data = data;
39
+ // Nope
40
+ else
41
+ result.error = { code: 401, message: data.error_description };
42
+ }
43
+ // Nope
44
+ else
45
+ result.error = { code: 401, message: data.message };
46
+ }
47
+ // Exist Array
48
+ else if (Array.isArray(data))
49
+ result.data = data;
50
+ // Nope
51
+ else
52
+ result.error = { code: 500, message: 'Invalid HTTP Result!' };
53
+ // Complete
54
+ return result;
55
+ }
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var authURLGenerator = require('./authURLGenerator.cjs');
4
+ var cookieSession = require('./cookie-session.cjs');
5
+ var credentials = require('./credentials.cjs');
6
+ var errorValidator = require('./errorValidator.cjs');
7
+ var randomAvatar = require('./randomAvatar.cjs');
8
+
9
+ const getItems = {
10
+ cookieSession,
11
+ authURLGenerator,
12
+ credentials,
13
+ errorValidator,
14
+ randomAvatar,
15
+ };
16
+
17
+ module.exports = getItems;
@@ -0,0 +1,13 @@
1
+ export default getItems;
2
+ declare namespace getItems {
3
+ export { cookieSession };
4
+ export { authURLGenerator };
5
+ export { credentials };
6
+ export { errorValidator };
7
+ export { randomAvatar };
8
+ }
9
+ import cookieSession from './cookie-session.mjs';
10
+ import authURLGenerator from './authURLGenerator.mjs';
11
+ import credentials from './credentials.mjs';
12
+ import errorValidator from './errorValidator.mjs';
13
+ import randomAvatar from './randomAvatar.mjs';
@@ -0,0 +1,13 @@
1
+ import authURLGenerator from './authURLGenerator.mjs';
2
+ import cookieSession from './cookie-session.mjs';
3
+ import credentials from './credentials.mjs';
4
+ import errorValidator from './errorValidator.mjs';
5
+ import randomAvatar from './randomAvatar.mjs';
6
+ const getItems = {
7
+ cookieSession,
8
+ authURLGenerator,
9
+ credentials,
10
+ errorValidator,
11
+ randomAvatar,
12
+ };
13
+ export default getItems;
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var dice = require('../../../libs/dice.cjs');
4
+
5
+ /**
6
+ * Generates a random Discord avatar URL or returns a specified avatar URL based on the provided value.
7
+ * If no value is provided, a random avatar from the Discord CDN is selected.
8
+ *
9
+ * @function
10
+ * @param {string|number|null} [value=null] - The avatar number or string. If provided, it will return the avatar associated with that number or string.
11
+ * If no value is provided or the value is invalid, a random avatar will be generated.
12
+ * @param {string} [url='https://cdn.discordapp.com/embed/avatars/'] - The base URL for the Discord avatars. By default, it uses the CDN URL.
13
+ *
14
+ * @returns {string} The URL of the avatar image.
15
+ *
16
+ * @example
17
+ * // Returns a random avatar URL
18
+ * const avatarURL = randomAvatar();
19
+ * console.log(avatarURL); // Example output: https://cdn.discordapp.com/embed/avatars/1234.png
20
+ *
21
+ * @example
22
+ * // Returns a specific avatar URL based on the value
23
+ * const avatarURL = randomAvatar(2);
24
+ * console.log(avatarURL); // Example output: https://cdn.discordapp.com/embed/avatars/2.png
25
+ */
26
+ function randomAvatar(
27
+ value = null,
28
+ url = 'https://cdn.discordapp.com/embed/avatars/',
29
+ ) {
30
+ // Random
31
+ if (typeof value !== 'number' && typeof value !== 'string')
32
+ return url + dice.vanilla(4) + '.png';
33
+ // Nope
34
+ else return url + 'https://cdn.discordapp.com/embed/avatars/' + value + '.png';
35
+ }
36
+
37
+ module.exports = randomAvatar;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Generates a random Discord avatar URL or returns a specified avatar URL based on the provided value.
3
+ * If no value is provided, a random avatar from the Discord CDN is selected.
4
+ *
5
+ * @function
6
+ * @param {string|number|null} [value=null] - The avatar number or string. If provided, it will return the avatar associated with that number or string.
7
+ * If no value is provided or the value is invalid, a random avatar will be generated.
8
+ * @param {string} [url='https://cdn.discordapp.com/embed/avatars/'] - The base URL for the Discord avatars. By default, it uses the CDN URL.
9
+ *
10
+ * @returns {string} The URL of the avatar image.
11
+ *
12
+ * @example
13
+ * // Returns a random avatar URL
14
+ * const avatarURL = randomAvatar();
15
+ * console.log(avatarURL); // Example output: https://cdn.discordapp.com/embed/avatars/1234.png
16
+ *
17
+ * @example
18
+ * // Returns a specific avatar URL based on the value
19
+ * const avatarURL = randomAvatar(2);
20
+ * console.log(avatarURL); // Example output: https://cdn.discordapp.com/embed/avatars/2.png
21
+ */
22
+ export default function randomAvatar(value?: string | number | null, url?: string): string;