UNPKG

react-discord-login

Version:

A React component for easy integration of 'Sign in with Discord' functionality into web applications

95 lines 3.35 kB
import { __awaiter, __generator } from "tslib"; export var normalizeDiscordConfig = function (_a) { var clientId = _a.clientId, uri = _a.redirectUri, type = _a.responseType, scopesArray = _a.scopes; var redirectUri = uri || window.location.origin; var responseType = type || 'code'; var scopes = scopesArray || ['identify']; return { clientId: clientId, redirectUri: redirectUri, responseType: responseType, scopes: scopes, }; }; export var generateUrl = function (_a) { var clientId = _a.clientId, redirectUri = _a.redirectUri, responseType = _a.responseType, scopes = _a.scopes; var searchParams = new URLSearchParams(); searchParams.append('client_id', clientId); searchParams.append('response_type', responseType); searchParams.append('redirect_uri', redirectUri); searchParams.append('scope', scopes.join(' ')); return 'https://discord.com/api/oauth2/authorize?' + searchParams.toString(); }; var getQueryAndHash = function () { var params = new URLSearchParams(); var query = new URLSearchParams(window.location.search); query.forEach(function (value, key) { params.set(key, value); }); var fragment = new URLSearchParams(window.location.hash.slice(1)); fragment.forEach(function (value, key) { params.set(key, value); }); return params; }; export var getCallbackResponse = function () { var params = getQueryAndHash(); var error = params.get('error'); var error_description = params.get('error_description'); var token_type = params.get('token_type'); var code = params.get('code'); if (error || error_description) { return { type: 'error', error: { error: String(error), description: String(error_description), }, }; } if (token_type) { return { type: 'token', token: { token_type: String(token_type), access_token: String(params.get('access_token')), expires_in: Number(params.get('expires_in')), scope: String(params.get('scope')).split(' '), }, }; } if (code) { return { type: 'code', code: { code: String(code), }, }; } return { type: null, }; }; export var fetchUser = function (token) { return __awaiter(void 0, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, fetch('https://discord.com/api/users/@me', { headers: { authorization: "".concat(token.token_type, " ").concat(token.access_token), }, })]; case 1: result = _a.sent(); return [4 /*yield*/, result.json()]; case 2: return [2 /*return*/, (_a.sent())]; } }); }); }; export var shouldHandleCallback = function () { var params = getQueryAndHash(); var keys = Array.from(params.keys()); var targets = ['code', 'error', 'token_type']; return targets.some(function (target) { return keys.includes(target); }); }; //# sourceMappingURL=utils.js.map