MumuTW
|
f0b08f95c3
|
chore(usage): decompose services/usage.ts into per-provider usage/* leaves (999 → 253) (#8545)
* chore(usage): extract crof, nanogpt, qoder, opencode, deepseek, bailian, vertex, xiaomi-mimo, xai, github usage fetchers into usage/* leaves
Decompose services/usage.ts (god-file phase 1): move the remaining per-provider
usage fetcher/parser logic into co-located leaves under open-sse/services/usage/
so usage.ts becomes a thin dispatcher (imports + USAGE_FETCHER_PROVIDERS +
getUsageForProvider switch + __testing re-exports).
New leaves (each a pure data transform or independent fetcher, no orchestration):
- usage/github.ts getGitHubUsage, formatGitHubQuotaSnapshot, inferGitHubPlanName, shouldDisplayGitHubQuota
- usage/crof.ts getCrofUsage
- usage/nanogpt.ts getNanoGptUsage
- usage/qoder.ts getQoderUsage, parseQoderUserStatusUsage
- usage/opencode.ts getOpencodeUsage
- usage/deepseek.ts getDeepseekUsage
- usage/bailian.ts getBailianCodingPlanUsage
- usage/vertex.ts getVertexUsage
- usage/xiaomi-mimo.ts getXiaomiMimoUsage
- usage/xai.ts getXaiUsage
usage.ts re-exports parseQoderUserStatusUsage (named) and threads every helper
the existing __testing contract exposes (usage-utils / usage-service-hardening /
qoder-usage-quota / xiaomi-mimo-selftrack / xai-usage / vertex-spend suites read
them from services/usage). External importers unchanged.
open-sse/services/usage.ts: 1065 -> 256 lines (cap 800).
npm run check:file-size: OK. typecheck:core: OK. eslint: clean. check:cycles: OK.
Added characterization tests (tests/unit/usage-<provider>-split.test.ts) that
import each leaf directly and pin its export surface + key edges, mirroring the
existing usage-quota-core-split / usage-scalars-split pattern.
* docs(changelog): add fragment for this PR
|
2026-07-26 03:52:19 -03:00 |
|