Files
jackwener__opencli/clis/weibo/utils.ts
jackwener 314bc6f231 refactor: simplify core modules — remove root shims, consolidate error classification, streamline cascade/interceptor, clean up synthesize
1. Remove root-level shim files (errors.ts, logger.ts, registry.ts, types.ts, utils.ts, launcher.ts) — update all ~840 adapter imports to reference src/ directly
2. Consolidate interceptor: reuse shared DISGUISE_FN in tap interceptor instead of reimplementing
3. Unify error classification: single ClassifiedError type with icon/exitCode/hint lookup table, eliminating duplicated pattern matching between resolveExitCode and renderError
4. Simplify cascade probe: replace repetitive switch cases with PROBE_OPTIONS lookup map
12. Clean up synthesize.ts: remove deprecated snake_case field aliases (recommended_args, recommended_columns, recommendedColumnsLegacy) and unnecessary constant aliases

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 03:06:47 +08:00

33 lines
1.0 KiB
TypeScript

/**
* Shared Weibo utilities — uid extraction.
*/
import type { IPage } from '../../src/types.js';
import { AuthRequiredError } from '../../src/errors.js';
/** Get the currently logged-in user's uid from Vue store or config API. */
export async function getSelfUid(page: IPage): Promise<string> {
const uid = await page.evaluate(`
(() => {
const app = document.querySelector('#app')?.__vue_app__;
const store = app?.config?.globalProperties?.$store;
const uid = store?.state?.config?.config?.uid;
if (uid) return String(uid);
return null;
})()
`);
if (uid) return uid as string;
// Fallback: config API
const config = await page.evaluate(`
(async () => {
const resp = await fetch('/ajax/config/get_config', {credentials: 'include'});
if (!resp.ok) return null;
const data = await resp.json();
return data.ok && data.data?.uid ? String(data.data.uid) : null;
})()
`);
if (config) return config as string;
throw new AuthRequiredError('weibo.com');
}