UNPKG

mira-app-server

Version:

Mira Server - standalone server application using mira-app-core

108 lines 3.52 kB
"use strict"; /** * 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