init
This commit is contained in:
252
src/routes/token-ls.ts
Normal file
252
src/routes/token-ls.ts
Normal file
@@ -0,0 +1,252 @@
|
||||
import { app } from '../app.ts';
|
||||
import { z } from 'zod';
|
||||
import { getConfig, getEnvToken, writeConfig } from '@/module/get-config.ts';
|
||||
import { queryLogin, storage } from '@/module/query.ts';
|
||||
import { Kevisual } from '@/module/kevisual.ts';
|
||||
import { showMore } from '@/uitls/show-more.ts';
|
||||
|
||||
function isNumeric(str: string) {
|
||||
return /^-?\d+\.?\d*$/.test(str);
|
||||
}
|
||||
|
||||
const showList = (list: string[]) => {
|
||||
if (list.length === 0) {
|
||||
console.log('expand baseURLList is empty');
|
||||
return;
|
||||
}
|
||||
const config = getConfig();
|
||||
console.log('----current baseURL:' + config.baseURL + '----\n');
|
||||
list.forEach((item, index) => {
|
||||
console.log(`${index + 1}: ${item}`);
|
||||
});
|
||||
};
|
||||
|
||||
app.route({
|
||||
path: 'token',
|
||||
key: 'ls',
|
||||
description: '显示 token 列表',
|
||||
metadata: {
|
||||
args: {}
|
||||
}
|
||||
}).define(async () => {
|
||||
console.log('show token list');
|
||||
queryLogin.cacheStore.init();
|
||||
console.log(queryLogin.cacheStore.cacheData);
|
||||
}).addTo(app)
|
||||
|
||||
app.route({
|
||||
path: 'token',
|
||||
key: 'info',
|
||||
description: '显示 token 信息',
|
||||
metadata: {
|
||||
args: {
|
||||
env: z.boolean().optional().describe('显示环境变量中的 token'),
|
||||
}
|
||||
}
|
||||
}).define(async (ctx) => {
|
||||
const { env } = ctx.args;
|
||||
const token = storage.getItem('token');
|
||||
if (env) {
|
||||
console.log('token in env', getEnvToken());
|
||||
} else {
|
||||
console.log('token', token);
|
||||
}
|
||||
}).addTo(app)
|
||||
|
||||
app.route({
|
||||
path: 'token',
|
||||
key: 'create',
|
||||
description: '创建 jwks token',
|
||||
metadata: {
|
||||
args: {}
|
||||
}
|
||||
}).define(async () => {
|
||||
const kevisual = new Kevisual();
|
||||
const res = await kevisual.getAdminToken();
|
||||
if (res.code === 200) {
|
||||
const jwtToken = res.data?.accessToken;
|
||||
console.log('============jwt token============\n\n');
|
||||
console.log(jwtToken);
|
||||
} else {
|
||||
console.log('create token failed', showMore(res));
|
||||
}
|
||||
}).addTo(app)
|
||||
|
||||
app.route({
|
||||
path: 'baseURL',
|
||||
key: 'info',
|
||||
description: '显示 baseURL',
|
||||
metadata: {
|
||||
args: {
|
||||
add: z.string().optional().describe('添加 baseURL'),
|
||||
remove: z.number().optional().describe('按编号移除 baseURL'),
|
||||
set: z.union([z.number(), z.string()]).optional().describe('设置 baseURL'),
|
||||
list: z.boolean().optional().describe('列出 baseURL'),
|
||||
clear: z.boolean().optional().describe('清除 baseURL'),
|
||||
}
|
||||
}
|
||||
}).define(async (ctx) => {
|
||||
let { add, remove, set, list, clear } = ctx.args;
|
||||
let config = getConfig();
|
||||
let baseList = (config.baseURLList as Array<string>) || [];
|
||||
if (!config.baseURL) {
|
||||
baseList = ['https://kevisual.cn'];
|
||||
writeConfig({ ...config, baseURL: 'https://kevisual.cn', baseURLList: baseList });
|
||||
config = getConfig();
|
||||
}
|
||||
const quineList = (list: string[]) => {
|
||||
const newList = new Set(list);
|
||||
return Array.from(newList);
|
||||
};
|
||||
|
||||
if (add || set) {
|
||||
let change = false;
|
||||
if (add) {
|
||||
change = true;
|
||||
baseList.push(add);
|
||||
} else if (set) {
|
||||
if (!isNumeric(String(set))) {
|
||||
change = true;
|
||||
baseList.push(String(set));
|
||||
writeConfig({ ...config, baseURL: String(set) });
|
||||
config = getConfig();
|
||||
}
|
||||
}
|
||||
if (change) {
|
||||
baseList = quineList(baseList);
|
||||
writeConfig({ ...config, baseURLList: baseList });
|
||||
config = getConfig();
|
||||
showList(baseList);
|
||||
}
|
||||
}
|
||||
if (remove !== undefined) {
|
||||
const index = remove - 1;
|
||||
if (index < 0 || index >= baseList.length) {
|
||||
console.log('index out of range');
|
||||
return;
|
||||
}
|
||||
const removeBase = baseList.splice(index, 1);
|
||||
baseList = quineList(baseList);
|
||||
showList(baseList);
|
||||
writeConfig({ ...config, baseURLList: baseList });
|
||||
removeBase[0];
|
||||
return;
|
||||
}
|
||||
if (set !== undefined) {
|
||||
const isNumber = isNumeric(String(set));
|
||||
if (isNumber) {
|
||||
const index = Number(set) - 1;
|
||||
if (index < 0 || index >= baseList.length) {
|
||||
console.log('index out of range');
|
||||
return;
|
||||
}
|
||||
writeConfig({ ...config, baseURL: baseList[index] });
|
||||
showList(baseList);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (list) {
|
||||
showList(baseList);
|
||||
return;
|
||||
}
|
||||
if (clear) {
|
||||
writeConfig({ ...config, baseURLList: [] });
|
||||
return;
|
||||
}
|
||||
if (!config.baseURL) {
|
||||
config = getConfig();
|
||||
writeConfig({ ...config, baseURL: 'https://kevisual.cn' });
|
||||
config = getConfig();
|
||||
}
|
||||
console.log('current baseURL:', config.baseURL);
|
||||
}).addTo(app)
|
||||
|
||||
app.route({
|
||||
path: 'baseURL',
|
||||
key: 'set',
|
||||
description: '设置 baseURL',
|
||||
metadata: {
|
||||
args: {
|
||||
baseURL: z.string().optional().describe('baseURL 地址'),
|
||||
}
|
||||
}
|
||||
}).define(async (ctx) => {
|
||||
const config = getConfig();
|
||||
let baseURL = ctx.args.baseURL;
|
||||
if (!baseURL) {
|
||||
console.log('baseURL is required');
|
||||
return;
|
||||
}
|
||||
writeConfig({ ...config, baseURL });
|
||||
}).addTo(app)
|
||||
|
||||
app.route({
|
||||
path: 'registry',
|
||||
key: 'manage',
|
||||
description: 'registry 管理',
|
||||
metadata: {
|
||||
args: {
|
||||
list: z.boolean().optional().describe('列出 registry'),
|
||||
set: z.string().optional().describe('设置 registry'),
|
||||
}
|
||||
}
|
||||
}).define(async (ctx) => {
|
||||
const { list, set } = ctx.args;
|
||||
const config = getConfig();
|
||||
const defaultRegistry = ['https://kevisual.cn', 'https://kevisual.silkyai.cn', 'https://kevisual.xiongxiao.me', 'http://localhost:3005'];
|
||||
if (list) {
|
||||
showList(defaultRegistry);
|
||||
return;
|
||||
}
|
||||
if (set) {
|
||||
const isNumber = isNumeric(set);
|
||||
if (isNumber) {
|
||||
const index = Number(set) - 1;
|
||||
if (index < 0 || index >= defaultRegistry.length) {
|
||||
console.log('index out of range');
|
||||
return;
|
||||
}
|
||||
writeConfig({ ...config, baseURL: defaultRegistry[index] });
|
||||
console.log('set registry', defaultRegistry[index]);
|
||||
} else {
|
||||
writeConfig({ ...config, baseURL: set });
|
||||
console.log('set registry', set);
|
||||
}
|
||||
}
|
||||
}).addTo(app)
|
||||
|
||||
app.route({
|
||||
path: 'baseURL',
|
||||
key: 'kevisual',
|
||||
description: 'kevisual registry',
|
||||
metadata: { args: {} }
|
||||
}).define(async () => {
|
||||
const config = getConfig();
|
||||
const defaultRegistry = ['https://kevisual.cn'];
|
||||
writeConfig({ ...config, baseURL: defaultRegistry[0] });
|
||||
showList(defaultRegistry);
|
||||
}).addTo(app)
|
||||
|
||||
app.route({
|
||||
path: 'baseURL',
|
||||
key: 'silky',
|
||||
description: 'silky registry',
|
||||
metadata: { args: {} }
|
||||
}).define(async () => {
|
||||
const config = getConfig();
|
||||
const defaultRegistry = ['https://kevisual.silkyai.cn'];
|
||||
writeConfig({ ...config, baseURL: defaultRegistry[0] });
|
||||
showList(defaultRegistry);
|
||||
}).addTo(app)
|
||||
|
||||
app.route({
|
||||
path: 'baseURL',
|
||||
key: 'local',
|
||||
description: 'local registry',
|
||||
metadata: { args: {} }
|
||||
}).define(async () => {
|
||||
const config = getConfig();
|
||||
const defaultRegistry = ['http://localhost:3005'];
|
||||
writeConfig({ ...config, baseURL: defaultRegistry[0] });
|
||||
showList(defaultRegistry);
|
||||
}).addTo(app)
|
||||
Reference in New Issue
Block a user