import { FileBackend } from "../storage.js"; import { Metafile } from "../types.js"; import { createRawBytesWrapper, decodeRawBytesWrapper, isRawBytesWrapper, } from "./encoding.js"; export class ExtensionStorageBackend implements FileBackend { async read(key: string): Promise { const result = await browser.storage.local.get(key); const value = result[key]; if (isRawBytesWrapper(value)) { return decodeRawBytesWrapper(value); } return value; } async write(key: string, value: Metafile): Promise { await browser.storage.local.set({ [key]: value }); } async writeRaw(key: string, value: Uint8Array): Promise { await browser.storage.local.set({ [key]: createRawBytesWrapper(value) }); } async delete(key: string): Promise { await browser.storage.local.remove(key); } }