import type { UXDataWriteOptions } from "@/lib/src/common/types"; import type { IVaultAdapter } from "@/lib/src/serviceModules/adapters"; import { toArrayBuffer } from "@/lib/src/serviceModules/FileAccessBase"; import type { TFile, App, TFolder } from "obsidian"; /** * Vault adapter implementation for Obsidian */ export class ObsidianVaultAdapter implements IVaultAdapter { constructor(private app: App) {} async read(file: TFile): Promise { return await this.app.vault.read(file); } async cachedRead(file: TFile): Promise { return await this.app.vault.cachedRead(file); } async readBinary(file: TFile): Promise { return await this.app.vault.readBinary(file); } async modify(file: TFile, data: string, options?: UXDataWriteOptions): Promise { return await this.app.vault.modify(file, data, options); } async modifyBinary(file: TFile, data: ArrayBuffer, options?: UXDataWriteOptions): Promise { return await this.app.vault.modifyBinary(file, toArrayBuffer(data), options); } async create(path: string, data: string, options?: UXDataWriteOptions): Promise { return await this.app.vault.create(path, data, options); } async createBinary(path: string, data: ArrayBuffer, options?: UXDataWriteOptions): Promise { return await this.app.vault.createBinary(path, toArrayBuffer(data), options); } async delete(file: TFile | TFolder, force = false): Promise { return await this.app.vault.delete(file, force); } async trash(file: TFile | TFolder, force = false): Promise { return await this.app.vault.trash(file, force); } trigger(name: string, ...data: any[]): any { return this.app.vault.trigger(name, ...data); } }