UNPKG

appcenter-cli

Version:

Command line tool for Visual Studio App Center

66 lines (65 loc) 3.11 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.logout = void 0; const profile_1 = require("../../util/profile"); const interaction_1 = require("../../util/interaction"); const debug = require("debug")("appcenter-cli:commands:lib:logout"); // How long to wait before giving up on the token being deleted const maxTokenDeletionTimeoutSec = 10; function logout(client, user) { return __awaiter(this, void 0, void 0, function* () { yield interaction_1.out.progress("Logging out current user...", performLogout(client, user)); }); } exports.logout = logout; function performLogout(client, user) { return __awaiter(this, void 0, void 0, function* () { // Only delete token off the server if CLI created it. if (!(user === null || user === void 0 ? void 0 : user.tokenSuppliedByUser)) { let tokenId; try { yield Promise.race([ () => __awaiter(this, void 0, void 0, function* () { try { tokenId = yield user.accessTokenId; if (!tokenId || tokenId === "null") { tokenId = "current"; } debug(`Attempting to delete token id ${tokenId} off server`); client.userApiTokens.delete(tokenId); } catch (err) { debug("Could not retrieve current token from token store"); // cb(err, null, null, null); } }), new Promise((resolve, reject) => setTimeout(() => { // TODO: Investigate if there's a way to explicitly cancel the outstanding call. resolve(); }, maxTokenDeletionTimeoutSec * 1000)), ]); } catch (err) { // Noop, it's ok if deletion fails debug(`Deletion of token id ${tokenId} from server failed, error ${err}`); } } try { debug("Deleting user token from token store"); yield profile_1.deleteUser(); } catch (err) { // Noop, it's ok if deletion fails debug("User token deletion failed"); } }); }