UNPKG

@vizzly-testing/cli

Version:

Visual review platform for UI developers and designers

74 lines (68 loc) 1.87 kB
/** * Logout command implementation * Clears stored authentication tokens */ import { createAuthClient, createTokenStore, getAuthTokens, logout } from '../auth/index.js'; import { getApiUrl } from '../utils/environment-config.js'; import * as output from '../utils/output.js'; /** * Logout command implementation * @param {Object} options - Command options * @param {Object} globalOptions - Global CLI options */ export async function logoutCommand(options = {}, globalOptions = {}) { output.configure({ json: globalOptions.json, verbose: globalOptions.verbose, color: !globalOptions.noColor }); try { // Check if user is logged in let auth = await getAuthTokens(); if (!auth || !auth.accessToken) { if (globalOptions.json) { output.data({ loggedOut: false, reason: 'not_logged_in' }); } else { output.header('logout'); output.print(' Not logged in'); } output.cleanup(); return; } // Logout output.startSpinner('Logging out...'); let client = createAuthClient({ baseUrl: options.apiUrl || getApiUrl() }); let tokenStore = createTokenStore(); await logout(client, tokenStore); output.stopSpinner(); if (globalOptions.json) { output.data({ loggedOut: true }); } else { output.header('logout'); output.complete('Logged out'); output.blank(); output.hint('Run "vizzly login" to authenticate again'); } output.cleanup(); } catch (error) { output.stopSpinner(); output.error('Logout failed', error); process.exit(1); } } /** * Validate logout options * @param {Object} options - Command options */ export function validateLogoutOptions() { const errors = []; // No specific validation needed for logout command return errors; }