UNPKG

@amplitude/ampli

Version:

Amplitude CLI

81 lines (80 loc) 2.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const chalk_1 = require("chalk"); const inquirer = require("inquirer"); const open = require("open"); const base_1 = require("./base"); const server_1 = require("../auth/server"); const auth_1 = require("../auth"); const ampli_1 = require("../ampli"); const UserInfo_1 = require("../components/UserInfo"); const constants_1 = require("../constants"); const types_1 = require("../types"); const string_1 = require("../util/string"); const { bold, green } = chalk_1.default; class LoginAction extends base_1.default { async run(loginPrompt = true) { if (loginPrompt) { const { login } = await inquirer.prompt([{ name: 'login', message: `You are not logged in. Would you like to log in?`, type: 'confirm', default: true, }]); if (!login) { return null; } } let zone; if (this.flags.zone) { zone = this.flags.zone; } else { const { zone: selectedZone } = await inquirer.prompt([{ name: 'zone', message: `Select a zone`, type: 'autocomplete', source: (_, input) => types_1.ALL_ZONES.filter(z => string_1.matchPattern(z, input)), default: types_1.DEFAULT_ZONE, }]); if (!selectedZone) { return null; } zone = selectedZone; } this.println(`\ Welcome to ${green('Amplitude')}. To initialize ${bold('ampli')}, log into your account in the browser window that just opened. ___ ___ / | ____ ___ ____ / (_) / /| | / __ \`__ \\/ __ \\/ / / / ___ |/ / / / / / /_/ / / / /_/ |_/_/ /_/ /_/ .___/_/_/ /_/ `); const serverPort = 13222; const server = new server_1.default(serverPort, zone); try { const authorizationUri = auth_1.default.getAuthorizationUri(server.port, zone); if (authorizationUri) { await server.start(); open(authorizationUri, { wait: false }); } this.println(`Waiting for you to log in...`); await auth_1.default.waitForAuthorizationToComplete(); } finally { server.stop(); } const user = await this.getUser(zone); base_1.default.identifyUser(user); ampli_1.ampli.userSignedIn(user.id, { platform: process.platform, version: constants_1.APP_SETTINGS.app.version, }); const settings = this.getSettings(); auth_1.default.writeTokensToSettings({ id: user.id, zone: user.zone }); UserInfo_1.PrintUsersInfo(settings.users(), user); return user; } } exports.default = LoginAction;