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.
- package/.github/FUNDING.yml +4 -0
- package/.github/workflows/node.js.yml +31 -0
- package/LICENSE +674 -0
- package/README.md +67 -0
- package/dist/TinyEssentials.min.js +1 -0
- package/dist/_virtual/_commonjsHelpers.cjs +7 -0
- package/dist/_virtual/common.cjs +5 -0
- package/dist/_virtual/index.cjs +9 -0
- package/dist/_virtual/index2.cjs +5 -0
- package/dist/_virtual/trace.cjs +5 -0
- package/dist/legacy/crypto/decrypt.cjs +57 -0
- package/dist/legacy/crypto/decrypt.d.mts +18 -0
- package/dist/legacy/crypto/decrypt.mjs +47 -0
- package/dist/legacy/crypto/default.cjs +23 -0
- package/dist/legacy/crypto/default.d.mts +35 -0
- package/dist/legacy/crypto/default.mjs +19 -0
- package/dist/legacy/crypto/encrypt.cjs +54 -0
- package/dist/legacy/crypto/encrypt.d.mts +19 -0
- package/dist/legacy/crypto/encrypt.mjs +46 -0
- package/dist/legacy/crypto/index.cjs +11 -0
- package/dist/legacy/crypto/index.d.mts +4 -0
- package/dist/legacy/crypto/index.mjs +6 -0
- package/dist/legacy/firebase/cookieSession.cjs +121 -0
- package/dist/legacy/firebase/cookieSession.d.mts +56 -0
- package/dist/legacy/firebase/cookieSession.mjs +114 -0
- package/dist/legacy/firebase/database/index.cjs +11 -0
- package/dist/legacy/firebase/database/index.d.mts +7 -0
- package/dist/legacy/firebase/database/index.mjs +7 -0
- package/dist/legacy/firebase/database/presence.cjs +131 -0
- package/dist/legacy/firebase/database/presence.d.mts +9 -0
- package/dist/legacy/firebase/database/presence.mjs +111 -0
- package/dist/legacy/firebase/database/saveAsync.cjs +147 -0
- package/dist/legacy/firebase/database/saveAsync.d.mts +54 -0
- package/dist/legacy/firebase/database/saveAsync.mjs +147 -0
- package/dist/legacy/firebase/databaseEscape.cjs +42 -0
- package/dist/legacy/firebase/databaseEscape.d.mts +11 -0
- package/dist/legacy/firebase/databaseEscape.mjs +37 -0
- package/dist/legacy/firebase/databaseLogger.cjs +258 -0
- package/dist/legacy/firebase/databaseLogger.d.mts +7 -0
- package/dist/legacy/firebase/databaseLogger.mjs +234 -0
- package/dist/legacy/firebase/discord/api/addGuildMember.cjs +71 -0
- package/dist/legacy/firebase/discord/api/addGuildMember.d.mts +38 -0
- package/dist/legacy/firebase/discord/api/addGuildMember.mjs +64 -0
- package/dist/legacy/firebase/discord/api/getGuildWidget.cjs +47 -0
- package/dist/legacy/firebase/discord/api/getGuildWidget.d.mts +17 -0
- package/dist/legacy/firebase/discord/api/getGuildWidget.mjs +43 -0
- package/dist/legacy/firebase/discord/api/getToken.cjs +67 -0
- package/dist/legacy/firebase/discord/api/getToken.d.mts +35 -0
- package/dist/legacy/firebase/discord/api/getToken.mjs +63 -0
- package/dist/legacy/firebase/discord/api/getUser.cjs +58 -0
- package/dist/legacy/firebase/discord/api/getUser.d.mts +27 -0
- package/dist/legacy/firebase/discord/api/getUser.mjs +54 -0
- package/dist/legacy/firebase/discord/api/getUserConnections.cjs +57 -0
- package/dist/legacy/firebase/discord/api/getUserConnections.d.mts +26 -0
- package/dist/legacy/firebase/discord/api/getUserConnections.mjs +53 -0
- package/dist/legacy/firebase/discord/api/getUserGuilds.cjs +56 -0
- package/dist/legacy/firebase/discord/api/getUserGuilds.d.mts +25 -0
- package/dist/legacy/firebase/discord/api/getUserGuilds.mjs +52 -0
- package/dist/legacy/firebase/discord/api/index.cjs +24 -0
- package/dist/legacy/firebase/discord/api/index.d.mts +19 -0
- package/dist/legacy/firebase/discord/api/index.mjs +20 -0
- package/dist/legacy/firebase/discord/api/refreshToken.cjs +77 -0
- package/dist/legacy/firebase/discord/api/refreshToken.d.mts +45 -0
- package/dist/legacy/firebase/discord/api/refreshToken.mjs +73 -0
- package/dist/legacy/firebase/discord/api/revokeToken.cjs +61 -0
- package/dist/legacy/firebase/discord/api/revokeToken.d.mts +29 -0
- package/dist/legacy/firebase/discord/api/revokeToken.mjs +58 -0
- package/dist/legacy/firebase/discord/config.cjs +21 -0
- package/dist/legacy/firebase/discord/config.d.mts +27 -0
- package/dist/legacy/firebase/discord/config.mjs +17 -0
- package/dist/legacy/firebase/discord/firebase_redirect/index.cjs +11 -0
- package/dist/legacy/firebase/discord/firebase_redirect/index.d.mts +7 -0
- package/dist/legacy/firebase/discord/firebase_redirect/index.mjs +7 -0
- package/dist/legacy/firebase/discord/firebase_redirect/login.cjs +110 -0
- package/dist/legacy/firebase/discord/firebase_redirect/login.d.mts +4 -0
- package/dist/legacy/firebase/discord/firebase_redirect/login.mjs +107 -0
- package/dist/legacy/firebase/discord/firebase_redirect/logout.cjs +100 -0
- package/dist/legacy/firebase/discord/firebase_redirect/logout.d.mts +4 -0
- package/dist/legacy/firebase/discord/firebase_redirect/logout.mjs +97 -0
- package/dist/legacy/firebase/discord/get/authURLGenerator.cjs +76 -0
- package/dist/legacy/firebase/discord/get/authURLGenerator.d.mts +23 -0
- package/dist/legacy/firebase/discord/get/authURLGenerator.mjs +67 -0
- package/dist/legacy/firebase/discord/get/cookie-session.cjs +32 -0
- package/dist/legacy/firebase/discord/get/cookie-session.d.mts +20 -0
- package/dist/legacy/firebase/discord/get/cookie-session.mjs +28 -0
- package/dist/legacy/firebase/discord/get/credentials.cjs +24 -0
- package/dist/legacy/firebase/discord/get/credentials.d.mts +19 -0
- package/dist/legacy/firebase/discord/get/credentials.mjs +20 -0
- package/dist/legacy/firebase/discord/get/errorValidator.cjs +60 -0
- package/dist/legacy/firebase/discord/get/errorValidator.d.mts +28 -0
- package/dist/legacy/firebase/discord/get/errorValidator.mjs +55 -0
- package/dist/legacy/firebase/discord/get/index.cjs +17 -0
- package/dist/legacy/firebase/discord/get/index.d.mts +13 -0
- package/dist/legacy/firebase/discord/get/index.mjs +13 -0
- package/dist/legacy/firebase/discord/get/randomAvatar.cjs +37 -0
- package/dist/legacy/firebase/discord/get/randomAvatar.d.mts +22 -0
- package/dist/legacy/firebase/discord/get/randomAvatar.mjs +30 -0
- package/dist/legacy/firebase/discord/http/index.cjs +15 -0
- package/dist/legacy/firebase/discord/http/index.d.mts +11 -0
- package/dist/legacy/firebase/discord/http/index.mjs +11 -0
- package/dist/legacy/firebase/discord/http/login.cjs +127 -0
- package/dist/legacy/firebase/discord/http/login.d.mts +21 -0
- package/dist/legacy/firebase/discord/http/login.mjs +123 -0
- package/dist/legacy/firebase/discord/http/logout.cjs +155 -0
- package/dist/legacy/firebase/discord/http/logout.d.mts +22 -0
- package/dist/legacy/firebase/discord/http/logout.mjs +143 -0
- package/dist/legacy/firebase/discord/http/redirect.cjs +188 -0
- package/dist/legacy/firebase/discord/http/redirect.d.mts +24 -0
- package/dist/legacy/firebase/discord/http/redirect.mjs +178 -0
- package/dist/legacy/firebase/discord/http/refreshToken.cjs +133 -0
- package/dist/legacy/firebase/discord/http/refreshToken.d.mts +24 -0
- package/dist/legacy/firebase/discord/http/refreshToken.mjs +121 -0
- package/dist/legacy/firebase/discord/index.cjs +19 -0
- package/dist/legacy/firebase/discord/index.d.mts +15 -0
- package/dist/legacy/firebase/discord/index.mjs +15 -0
- package/dist/legacy/firebase/discord/template/cookie-session.cjs +1430 -0
- package/dist/legacy/firebase/discord/template/cookie-session.d.mts +22 -0
- package/dist/legacy/firebase/discord/template/cookie-session.mjs +1159 -0
- package/dist/legacy/firebase/domainRedirect.cjs +35 -0
- package/dist/legacy/firebase/domainRedirect.d.mts +12 -0
- package/dist/legacy/firebase/domainRedirect.mjs +27 -0
- package/dist/legacy/firebase/escape.cjs +75 -0
- package/dist/legacy/firebase/escape.d.mts +17 -0
- package/dist/legacy/firebase/escape.mjs +58 -0
- package/dist/legacy/firebase/getDBAsync.cjs +33 -0
- package/dist/legacy/firebase/getDBAsync.d.mts +10 -0
- package/dist/legacy/firebase/getDBAsync.mjs +26 -0
- package/dist/legacy/firebase/getDBData.cjs +21 -0
- package/dist/legacy/firebase/getDBData.d.mts +1 -0
- package/dist/legacy/firebase/getDBData.mjs +17 -0
- package/dist/legacy/firebase/getDBValue.cjs +17 -0
- package/dist/legacy/firebase/getDBValue.d.mts +9 -0
- package/dist/legacy/firebase/getDBValue.mjs +14 -0
- package/dist/legacy/firebase/index.cjs +261 -0
- package/dist/legacy/firebase/index.d.mts +51 -0
- package/dist/legacy/firebase/index.mjs +234 -0
- package/dist/legacy/firebase/isEmulator.cjs +14 -0
- package/dist/legacy/firebase/isEmulator.d.mts +8 -0
- package/dist/legacy/firebase/isEmulator.mjs +10 -0
- package/dist/legacy/firebase/logger.cjs +137 -0
- package/dist/legacy/firebase/logger.d.mts +7 -0
- package/dist/legacy/firebase/logger.mjs +125 -0
- package/dist/legacy/firebase/mySQL.cjs +26 -0
- package/dist/legacy/firebase/mySQL.d.mts +10 -0
- package/dist/legacy/firebase/mySQL.mjs +22 -0
- package/dist/legacy/firebase/mysqlConnector/create.cjs +119 -0
- package/dist/legacy/firebase/mysqlConnector/create.d.mts +36 -0
- package/dist/legacy/firebase/mysqlConnector/create.mjs +109 -0
- package/dist/legacy/firebase/mysqlConnector/index.cjs +23 -0
- package/dist/legacy/firebase/mysqlConnector/index.d.mts +11 -0
- package/dist/legacy/firebase/mysqlConnector/index.mjs +16 -0
- package/dist/legacy/firebase/mysqlConnector/nextPrev.cjs +75 -0
- package/dist/legacy/firebase/mysqlConnector/nextPrev.d.mts +31 -0
- package/dist/legacy/firebase/mysqlConnector/nextPrev.mjs +63 -0
- package/dist/legacy/firebase/mysqlConnector/pagination.cjs +91 -0
- package/dist/legacy/firebase/mysqlConnector/pagination.d.mts +33 -0
- package/dist/legacy/firebase/mysqlConnector/pagination.mjs +87 -0
- package/dist/legacy/firebase/mysqlConnector/sameUser.cjs +28 -0
- package/dist/legacy/firebase/mysqlConnector/sameUser.d.mts +12 -0
- package/dist/legacy/firebase/mysqlConnector/sameUser.mjs +23 -0
- package/dist/legacy/firebase/transactionDBAsync.cjs +33 -0
- package/dist/legacy/firebase/transactionDBAsync.d.mts +11 -0
- package/dist/legacy/firebase/transactionDBAsync.mjs +27 -0
- package/dist/legacy/get/countObj.cjs +24 -0
- package/dist/legacy/get/countObj.d.mts +11 -0
- package/dist/legacy/get/countObj.mjs +21 -0
- package/dist/legacy/get/decimalColor.cjs +60 -0
- package/dist/legacy/get/decimalColor.d.mts +12 -0
- package/dist/legacy/get/decimalColor.mjs +54 -0
- package/dist/legacy/get/objType.cjs +43 -0
- package/dist/legacy/get/objType.d.mts +19 -0
- package/dist/legacy/get/objType.mjs +40 -0
- package/dist/legacy/get/pagination.cjs +100 -0
- package/dist/legacy/get/pagination.d.mts +25 -0
- package/dist/legacy/get/pagination.mjs +91 -0
- package/dist/legacy/get/queryUrlByName.cjs +31 -0
- package/dist/legacy/get/queryUrlByName.d.mts +20 -0
- package/dist/legacy/get/queryUrlByName.mjs +28 -0
- package/dist/legacy/get/queryUrlJSON.cjs +54 -0
- package/dist/legacy/get/queryUrlJSON.d.mts +23 -0
- package/dist/legacy/get/queryUrlJSON.mjs +57 -0
- package/dist/legacy/get/super_string_filter.cjs +97 -0
- package/dist/legacy/get/super_string_filter.d.mts +25 -0
- package/dist/legacy/get/super_string_filter.mjs +83 -0
- package/dist/legacy/get/versionCheck.cjs +49 -0
- package/dist/legacy/get/versionCheck.d.mts +17 -0
- package/dist/legacy/get/versionCheck.mjs +38 -0
- package/dist/legacy/http/HTTP-1.0.cjs +151 -0
- package/dist/legacy/http/HTTP-1.0.d.mts +8 -0
- package/dist/legacy/http/HTTP-1.0.mjs +136 -0
- package/dist/legacy/http/auth.cjs +70 -0
- package/dist/legacy/http/auth.d.mts +41 -0
- package/dist/legacy/http/auth.mjs +63 -0
- package/dist/legacy/http/check_domain.cjs +84 -0
- package/dist/legacy/http/check_domain.d.mts +10 -0
- package/dist/legacy/http/check_domain.mjs +82 -0
- package/dist/legacy/http/csrfTokenAnalyze.cjs +46 -0
- package/dist/legacy/http/csrfTokenAnalyze.d.mts +21 -0
- package/dist/legacy/http/csrfTokenAnalyze.mjs +40 -0
- package/dist/legacy/http/domainValidator.cjs +98 -0
- package/dist/legacy/http/domainValidator.d.mts +30 -0
- package/dist/legacy/http/domainValidator.mjs +82 -0
- package/dist/legacy/http/errorsCallback.cjs +55 -0
- package/dist/legacy/http/errorsCallback.d.mts +29 -0
- package/dist/legacy/http/errorsCallback.mjs +48 -0
- package/dist/legacy/http/fetch/json.cjs +48 -0
- package/dist/legacy/http/fetch/json.d.mts +22 -0
- package/dist/legacy/http/fetch/json.mjs +41 -0
- package/dist/legacy/http/fetch/text.cjs +47 -0
- package/dist/legacy/http/fetch/text.d.mts +21 -0
- package/dist/legacy/http/fetch/text.mjs +40 -0
- package/dist/legacy/http/fileCache.cjs +79 -0
- package/dist/legacy/http/fileCache.d.mts +35 -0
- package/dist/legacy/http/fileCache.mjs +70 -0
- package/dist/legacy/http/getDomainURL.cjs +59 -0
- package/dist/legacy/http/getDomainURL.d.mts +18 -0
- package/dist/legacy/http/getDomainURL.mjs +54 -0
- package/dist/legacy/http/userIP.cjs +59 -0
- package/dist/legacy/http/userIP.d.mts +21 -0
- package/dist/legacy/http/userIP.mjs +48 -0
- package/dist/legacy/index.cjs +122 -0
- package/dist/legacy/index.d.mts +89 -0
- package/dist/legacy/index.mjs +92 -0
- package/dist/legacy/libs/arraySortPositions.cjs +30 -0
- package/dist/legacy/libs/arraySortPositions.d.mts +16 -0
- package/dist/legacy/libs/arraySortPositions.mjs +27 -0
- package/dist/legacy/libs/capitalize.cjs +21 -0
- package/dist/legacy/libs/capitalize.d.mts +13 -0
- package/dist/legacy/libs/capitalize.mjs +17 -0
- package/dist/legacy/libs/convertBytes.cjs +64 -0
- package/dist/legacy/libs/convertBytes.d.mts +17 -0
- package/dist/legacy/libs/convertBytes.mjs +55 -0
- package/dist/legacy/libs/custom_module_loader.cjs +82 -0
- package/dist/legacy/libs/custom_module_loader.d.mts +5 -0
- package/dist/legacy/libs/custom_module_loader.mjs +79 -0
- package/dist/legacy/libs/dice.cjs +35 -0
- package/dist/legacy/libs/dice.d.mts +5 -0
- package/dist/legacy/libs/dice.mjs +31 -0
- package/dist/legacy/libs/markdown.cjs +85 -0
- package/dist/legacy/libs/markdown.d.mts +75 -0
- package/dist/legacy/libs/markdown.mjs +78 -0
- package/dist/legacy/libs/percentage.cjs +22 -0
- package/dist/legacy/libs/percentage.d.mts +4 -0
- package/dist/legacy/libs/percentage.mjs +19 -0
- package/dist/legacy/libs/regex/getLetter.cjs +22 -0
- package/dist/legacy/libs/regex/getLetter.d.mts +12 -0
- package/dist/legacy/libs/regex/getLetter.mjs +19 -0
- package/dist/legacy/libs/replaceAsync.cjs +32 -0
- package/dist/legacy/libs/replaceAsync.d.mts +15 -0
- package/dist/legacy/libs/replaceAsync.mjs +25 -0
- package/dist/legacy/libs/rule3.cjs +58 -0
- package/dist/legacy/libs/rule3.d.mts +5 -0
- package/dist/legacy/libs/rule3.mjs +54 -0
- package/dist/legacy/libs/userLevel.cjs +134 -0
- package/dist/legacy/libs/userLevel.d.mts +69 -0
- package/dist/legacy/libs/userLevel.mjs +123 -0
- package/dist/legacy/momentjs/getAge.cjs +28 -0
- package/dist/legacy/momentjs/getAge.d.mts +8 -0
- package/dist/legacy/momentjs/getAge.mjs +22 -0
- package/dist/legacy/momentjs/index.cjs +9 -0
- package/dist/legacy/momentjs/index.d.mts +3 -0
- package/dist/legacy/momentjs/index.mjs +3 -0
- package/dist/legacy/momentjs/timeDuration.cjs +29 -0
- package/dist/legacy/momentjs/timeDuration.d.mts +9 -0
- package/dist/legacy/momentjs/timeDuration.mjs +23 -0
- package/dist/legacy/socket.io/antiFlood/index.cjs +9 -0
- package/dist/legacy/socket.io/antiFlood/index.d.mts +3 -0
- package/dist/legacy/socket.io/antiFlood/index.mjs +3 -0
- package/dist/legacy/socket.io/antiFlood/install.cjs +32 -0
- package/dist/legacy/socket.io/antiFlood/install.d.mts +14 -0
- package/dist/legacy/socket.io/antiFlood/install.mjs +27 -0
- package/dist/legacy/socket.io/antiFlood/verify.cjs +87 -0
- package/dist/legacy/socket.io/antiFlood/verify.d.mts +15 -0
- package/dist/legacy/socket.io/antiFlood/verify.mjs +73 -0
- package/dist/legacy/socket.io/cookie-session.cjs +25 -0
- package/dist/legacy/socket.io/cookie-session.d.mts +9 -0
- package/dist/legacy/socket.io/cookie-session.mjs +20 -0
- package/dist/legacy/socket.io/discord.cjs +61 -0
- package/dist/legacy/socket.io/discord.d.mts +10 -0
- package/dist/legacy/socket.io/discord.mjs +52 -0
- package/dist/legacy/socket.io/index.cjs +13 -0
- package/dist/legacy/socket.io/index.d.mts +9 -0
- package/dist/legacy/socket.io/index.mjs +9 -0
- package/dist/v1/basics/array.cjs +31 -0
- package/dist/v1/basics/array.d.mts +10 -0
- package/dist/v1/basics/array.mjs +22 -0
- package/dist/v1/basics/clock.cjs +187 -0
- package/dist/v1/basics/clock.d.mts +37 -0
- package/dist/v1/basics/clock.mjs +152 -0
- package/dist/v1/basics/objFilter.cjs +55 -0
- package/dist/v1/basics/objFilter.d.mts +27 -0
- package/dist/v1/basics/objFilter.mjs +52 -0
- package/dist/v1/basics/simpleMath.cjs +88 -0
- package/dist/v1/basics/simpleMath.d.mts +54 -0
- package/dist/v1/basics/simpleMath.mjs +75 -0
- package/dist/v1/basics/text.cjs +34 -0
- package/dist/v1/basics/text.d.mts +20 -0
- package/dist/v1/basics/text.mjs +25 -0
- package/dist/v1/index.cjs +26 -0
- package/dist/v1/index.d.mts +15 -0
- package/dist/v1/index.mjs +8 -0
- 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;
|