UNPKG

appcenter-cli

Version:

Command line tool for Visual Studio App Center

65 lines (64 loc) 3.03 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const apis_1 = require("../../util/apis"); 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.tokenSuppliedByUser) { let tokenId; try { yield Promise.race([ apis_1.clientRequest((cb) => __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.apiTokens.deleteMethod(tokenId, cb); } 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"); } }); }