Download packages/tui/src/util/persistence.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 1.13 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/tui/src/util/persistence.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/tui/src/util/persistence.ts
-
curl -L -o persistence.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/tui/src/util/persistence.ts
1.13 kB
| import path from "path" | |
| import { appendFile, mkdir, rename, rm } from "fs/promises" | |
| export function readText(filePath: string) { | |
| return Bun.file(filePath).text() | |
| } | |
| export function readJson<T>(filePath: string) { | |
| return Bun.file(filePath).json() as Promise<T> | |
| } | |
| export async function writeText(filePath: string, content: string) { | |
| await mkdir(path.dirname(filePath), { recursive: true }) | |
| await Bun.write(filePath, content) | |
| } | |
| export async function appendText(filePath: string, content: string) { | |
| await mkdir(path.dirname(filePath), { recursive: true }) | |
| await appendFile(filePath, content) | |
| } | |
| export async function writeJsonAtomic(filePath: string, value: unknown) { | |
| await mkdir(path.dirname(filePath), { recursive: true }) | |
| const temporary = `${filePath}.${process.pid}.${crypto.randomUUID()}.tmp` | |
| await Bun.write(temporary, JSON.stringify(value)).catch(async (error) => { | |
| await rm(temporary, { force: true }).catch(() => undefined) | |
| throw error | |
| }) | |
| await rename(temporary, filePath).catch(async (error) => { | |
| await rm(temporary, { force: true }).catch(() => undefined) | |
| throw error | |
| }) | |
| } | |