mira-app-server
Version:
Mira Server - standalone server application using mira-app-core
108 lines • 3.52 kB
JavaScript
;
/**
* MiraClient 工厂与 server 解析
*
* 统一从全局选项 / 当前 profile / 默认值解析出 server 与 token,
* 为各命令提供已配置好鉴权的 MiraClient 实例。
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.DEFAULT_SERVER = void 0;
exports.resolveServer = resolveServer;
exports.resolveToken = resolveToken;
exports.resolveConnection = resolveConnection;
exports.getClient = getClient;
exports.getAnonymousClient = getAnonymousClient;
const commander_1 = require("commander");
const sdk_1 = require("mira-app-core/shared/sdk");
const credentials_1 = require("./credentials");
/** 默认服务器地址 */
exports.DEFAULT_SERVER = 'http://localhost:8081';
/**
* 解析目标 server 地址:
* 1. 全局 --server 参数
* 2. --profile 指定的 profile 的 server
* 3. 当前 profile 的 server
* 4. 默认 DEFAULT_SERVER
*/
function resolveServer(opts) {
if (opts?.server)
return opts.server;
if (opts?.profile) {
const profile = (0, credentials_1.getProfile)(opts.profile);
if (profile?.server)
return profile.server;
}
const current = (0, credentials_1.getCurrentProfile)();
if (current?.profile.server)
return current.profile.server;
return exports.DEFAULT_SERVER;
}
/**
* 解析 token:
* 1. 全局 --token 参数
* 2. --profile 指定的 profile 的 token
* 3. 当前 profile 的 token
*/
function resolveToken(opts) {
if (opts?.token)
return opts.token;
if (opts?.profile) {
return (0, credentials_1.getProfile)(opts.profile)?.token;
}
return (0, credentials_1.getCurrentProfile)()?.profile.token;
}
/**
* 解析出完整的连接信息(server + token + 来源 profile)
*/
function resolveConnection(opts) {
// 确定 profile 来源
let profile;
if (opts?.profile) {
profile = (0, credentials_1.getProfile)(opts.profile);
}
else {
profile = (0, credentials_1.getCurrentProfile)()?.profile;
}
const server = opts?.server || profile?.server || exports.DEFAULT_SERVER;
const token = opts?.token || profile?.token;
return { server, token, profile };
}
/**
* 从全局 program opts 读取连接覆盖项
*/
function readGlobalOpts() {
const opts = commander_1.program.opts() || {};
return {
server: opts.server,
token: opts.token,
profile: opts.profile,
};
}
/**
* 创建已配置鉴权的 MiraClient(合并全局选项)
*
* @param requireAuth 是否要求已登录(为 true 且无 token 时直接 fatal)
* @param overrides 命令级行为覆盖(一般留空,从全局选项读取)
*/
function getClient(requireAuth = true, overrides) {
const conn = resolveConnection({ ...readGlobalOpts(), ...overrides });
if (requireAuth && !conn.token) {
console.error('❌ 未登录,请先运行: mira-app-server login');
process.exit(1);
}
const client = new sdk_1.MiraClient(conn.server);
if (conn.token) {
client.setToken(conn.token);
}
return { client, connection: conn };
}
/**
* 创建无需鉴权的 MiraClient(用于 login/register/health 等公开接口)
*/
function getAnonymousClient(overrides) {
const globalOpts = readGlobalOpts();
const server = overrides?.server || globalOpts.server || exports.DEFAULT_SERVER;
const client = new sdk_1.MiraClient(server);
return { client, connection: { server } };
}
//# sourceMappingURL=client.js.map