token cache

This commit is contained in:
2025-02-26 23:59:42 +08:00
parent 26c6248d10
commit c01820d1c6
12 changed files with 433 additions and 44 deletions

View File

@@ -1,12 +1,44 @@
import { program as app, Command } from '@/program.ts';
import { getConfig, query, writeConfig } from '@/module/index.ts';
import inquirer from 'inquirer';
import util from 'util';
import { saveToken, switchToken, deleteToken, getTokenList } from './login.ts';
const token = new Command('token').description('show token').action(async () => {
const config = getConfig();
console.log('token', config.token);
});
const tokenList = new Command('list')
.description('show token list')
.option('-r --remove <number>', 'remove token by number')
.action(async (opts) => {
const res = await getTokenList();
if (res.code !== 200) {
console.error('get token list failed', res.message || '');
return;
}
console.log(util.inspect(res.data.value, { colors: true, depth: 4 }));
const list = res.data.value || [];
if (opts.remove) {
const index = Number(opts.remove) - 1;
if (index < 0 || index >= list.length) {
console.log('index out of range');
return;
}
const removeBase = list.splice(index, 1);
const baseURL = removeBase[0];
if (baseURL.baseURL) {
const res = await deleteToken(baseURL?.baseURL);
if (res.code !== 200) {
return;
}
}
console.log('delete token success', 'delete', baseURL);
return;
}
});
token.addCommand(tokenList);
app.addCommand(token);
const baseURL = new Command('baseURL')
@@ -20,7 +52,7 @@ const baseURL = new Command('baseURL')
.option('-c, --clear', 'clear baseURL')
.action(async (opts) => {
const config = getConfig();
let list = config.baseURLList || [];
let list = (config.baseURLList as Array<string>) || [];
const quineList = (list: string[]) => {
const newList = new Set(list);
return Array.from(newList);
@@ -49,20 +81,23 @@ const baseURL = new Command('baseURL')
console.log('index out of range');
return;
}
list.splice(index, 1);
const removeBase = list.splice(index, 1);
list = quineList(list);
showList(list);
writeConfig({ ...config, baseURLList: list });
removeBase[0] && deleteToken(removeBase[0]);
return;
}
if (opts.set) {
const isNumber = !isNaN(Number(opts.set));
let baseURL = '';
if (isNumber) {
const index = Number(opts.set) - 1;
if (index < 0 || index >= list.length) {
console.log('index out of range');
return;
}
baseURL = list[index];
writeConfig({ ...config, baseURL: list[index] });
console.log('set baseURL success:', list[index]);
} else {
@@ -72,9 +107,11 @@ const baseURL = new Command('baseURL')
console.log('invalid baseURL:', opts.set);
return;
}
baseURL = opts.set;
writeConfig({ ...config, baseURL: opts.set });
console.log('set baseURL success:', opts.set);
}
baseURL && switchToken(baseURL);
return;
}
if (opts.list) {
@@ -100,6 +137,7 @@ const setBaseURL = new Command('set').description('set baseURL').action(async ()
]);
const baseURL = answers.baseURL;
writeConfig({ ...config, baseURL });
baseURL && switchToken(baseURL);
});
baseURL.addCommand(setBaseURL);