@qmuse/qmuse-cli 1.0.5-dev.3 → 1.0.5-dev.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -634,7 +634,8 @@ async function cmdWhoami(flags) {
634
634
  log.info(`本地空间 : ${cfg.spaceId}`);
635
635
  return;
636
636
  }
637
- const result = await api.whoami(cfg);
637
+ // 身份发现不能被上一个账号遗留的空间选择阻断。
638
+ const result = await api.whoami({ ...cfg, spaceId: undefined });
638
639
  if (!result.ok || !result.data?.userId) {
639
640
  if (result.status === 401) {
640
641
  if (flags['--json'] === true) {
@@ -703,7 +704,8 @@ async function cmdSpace(command, flags) {
703
704
  const sub = command[1];
704
705
  requireAuth(cfg);
705
706
  if (sub === 'list') {
706
- const r = await api.listSpaces(num(flags, '--page-index', 1), num(flags, '--page-size', 20), cfg);
707
+ // 空间发现接口不携带当前空间,确保账号切换后仍能列出新账号的空间。
708
+ const r = await api.listSpaces(num(flags, '--page-index', 1), num(flags, '--page-size', 20), { ...cfg, spaceId: undefined });
707
709
  if (!r.ok || !r.data)
708
710
  fail(`查询空间失败: ${r.errorMessage ?? r.errorCode ?? `HTTP ${r.status}`}`);
709
711
  if (flags['--json'] === true) {
@@ -763,12 +765,14 @@ async function cmdLogin(flags) {
763
765
  }
764
766
  async function cmdLogout(flags) {
765
767
  const cfg = resolveCfg(flags);
766
- if (!(cfg.sessionId || '').trim()) {
767
- log.warn('当前未配置登录态,无需退出');
768
- return;
769
- }
768
+ const hadSession = !!(cfg.sessionId || '').trim();
770
769
  deleteSession(cfg);
771
- log.success('已从系统凭证库清除当前环境的登录态');
770
+ if (hadSession) {
771
+ log.success('已清除当前环境的登录态和空间选择');
772
+ }
773
+ else {
774
+ log.info('当前未配置登录态;已清除空间选择');
775
+ }
772
776
  }
773
777
  // ---------------- 帮助 & 入口 ----------------
774
778
  const HELP = `QMuse CLI —— 将本地 React 项目导入 QMuse
@@ -786,7 +790,7 @@ const HELP = `QMuse CLI —— 将本地 React 项目导入 QMuse
786
790
  命令:
787
791
  whoami 查看当前环境、登录和空间状态
788
792
  login [--status] [--log] [--json] 通过 QMuse 网页登录
789
- logout 清除保存的登录态
793
+ logout 清除保存的登录态和空间选择
790
794
  config [get|path] 查看配置
791
795
 
792
796
  cloud init -d "<应用功能描述>" 校验当前空间的 QMuse 云服务权益
package/dist/config.js CHANGED
@@ -160,7 +160,7 @@ export function saveSession(sessionId, cfg, options = {}) {
160
160
  const user = migrateLegacy(path, credentials);
161
161
  storeVerified(credentials, origin, sessionId);
162
162
  writeConfig(path, {
163
- spaceId: user.spaceId,
163
+ spaceId: options.clearSpaceId ? undefined : user.spaceId,
164
164
  credentialOrigins: [...new Set([...credentialOrigins(user), origin])],
165
165
  });
166
166
  }
@@ -175,7 +175,9 @@ export function deleteSession(cfg, options = {}) {
175
175
  credentials.delete(origin);
176
176
  if (credentials.get(origin))
177
177
  throw new Error('系统凭证库删除校验失败,请重试退出登录');
178
- writeConfig(path, { spaceId: user.spaceId, credentialOrigins: credentialOrigins(user).filter(value => value !== origin) });
178
+ writeConfig(path, {
179
+ credentialOrigins: credentialOrigins(user).filter(value => value !== origin),
180
+ });
179
181
  }
180
182
  export function findConfigPath() {
181
183
  for (const path of configPaths()) {
package/dist/login.js CHANGED
@@ -54,11 +54,11 @@ export function closePrompt() {
54
54
  export function openBrowser(url) {
55
55
  return open(url, { wait: false }).then(() => true, () => false);
56
56
  }
57
- export function persistSession(sessionId, targetConfig = loadConfig()) {
57
+ export function persistSession(sessionId, targetConfig = loadConfig(), options = {}) {
58
58
  const origin = apiOrigin(targetConfig.baseUrl);
59
59
  if (!origin)
60
60
  throw new Error('登录目标不是有效的 HTTP(S) 地址');
61
- saveSession(sessionId, targetConfig);
61
+ saveSession(sessionId, targetConfig, options);
62
62
  log.success('登录态已保存到系统凭证库');
63
63
  return origin;
64
64
  }
@@ -118,7 +118,7 @@ export async function loginBrowser(cfg, options = {}, dependencyOverrides) {
118
118
  message: `登录态校验失败:${verified.errorMessage ?? verified.errorCode ?? `HTTP ${verified.status}`}`,
119
119
  };
120
120
  }
121
- dependencies.persist(verified.data.sessionId, cfg);
121
+ dependencies.persist(verified.data.sessionId, cfg, { clearSpaceId: true });
122
122
  return { success: true, sessionId: verified.data.sessionId, method: 'browser' };
123
123
  }
124
124
  if (!SESSION_EXCHANGE_PENDING_CODES.has(exchanged.errorCode || '')) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qmuse/qmuse-cli",
3
- "version": "1.0.5-dev.3",
3
+ "version": "1.0.5-dev.4",
4
4
  "description": "将本地 React 项目安全导入 QMuse 的命令行客户端",
5
5
  "type": "module",
6
6
  "bin": {