refactor: statusbar、companion、herdr 外掛改名加上 jsc- 前綴

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
root
2026-10-13 07:43:50 +00:00
co-authored by Claude Sonnet 5.5
parent f10b168c28
commit 58e2b2d26a
53 changed files with 28 additions and 25 deletions
@@ -0,0 +1,33 @@
// 檔案系統與時鐘由外部注入,核心不直接碰真實環境
export interface Fs {
read(path: string): Promise<string | null>
/** 原子寫入:先寫暫存檔再改名 */
write(path: string, data: string): Promise<void>
}
export type Clock = () => number
export function memoryFs(): Fs & { files: Map<string, string> } {
const files = new Map<string, string>()
return {
files,
async read(p) {
return files.get(p) ?? null
},
async write(p, d) {
files.set(p, d)
},
}
}
export async function readJson<T>(fs: Fs, path: string, fallback: T): Promise<T> {
const raw = await fs.read(path)
if (raw === null) return fallback
try {
return JSON.parse(raw) as T
} catch {
return fallback
}
}
export const writeJson = (fs: Fs, path: string, value: unknown) => fs.write(path, JSON.stringify(value, null, 2))