summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/storage/opfs-adapter.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/src/lib/storage/opfs-adapter.ts')
-rw-r--r--apps/web/src/lib/storage/opfs-adapter.ts114
1 files changed, 57 insertions, 57 deletions
diff --git a/apps/web/src/lib/storage/opfs-adapter.ts b/apps/web/src/lib/storage/opfs-adapter.ts
index c01954e5..ccd9735d 100644
--- a/apps/web/src/lib/storage/opfs-adapter.ts
+++ b/apps/web/src/lib/storage/opfs-adapter.ts
@@ -1,73 +1,73 @@
import { StorageAdapter } from "./types";
export class OPFSAdapter implements StorageAdapter<File> {
- private directoryName: string;
+ private directoryName: string;
- constructor(directoryName: string = "media") {
- this.directoryName = directoryName;
- }
+ constructor(directoryName: string = "media") {
+ this.directoryName = directoryName;
+ }
- private async getDirectory(): Promise<FileSystemDirectoryHandle> {
- const opfsRoot = await navigator.storage.getDirectory();
- return await opfsRoot.getDirectoryHandle(this.directoryName, {
- create: true,
- });
- }
+ private async getDirectory(): Promise<FileSystemDirectoryHandle> {
+ const opfsRoot = await navigator.storage.getDirectory();
+ return await opfsRoot.getDirectoryHandle(this.directoryName, {
+ create: true,
+ });
+ }
- async get(key: string): Promise<File | null> {
- try {
- const directory = await this.getDirectory();
- const fileHandle = await directory.getFileHandle(key);
- return await fileHandle.getFile();
- } catch (error) {
- if ((error as Error).name === "NotFoundError") {
- return null;
- }
- throw error;
- }
- }
+ async get(key: string): Promise<File | null> {
+ try {
+ const directory = await this.getDirectory();
+ const fileHandle = await directory.getFileHandle(key);
+ return await fileHandle.getFile();
+ } catch (error) {
+ if ((error as Error).name === "NotFoundError") {
+ return null;
+ }
+ throw error;
+ }
+ }
- async set(key: string, file: File): Promise<void> {
- const directory = await this.getDirectory();
- const fileHandle = await directory.getFileHandle(key, { create: true });
- const writable = await fileHandle.createWritable();
+ async set(key: string, file: File): Promise<void> {
+ const directory = await this.getDirectory();
+ const fileHandle = await directory.getFileHandle(key, { create: true });
+ const writable = await fileHandle.createWritable();
- await writable.write(file);
- await writable.close();
- }
+ await writable.write(file);
+ await writable.close();
+ }
- async remove(key: string): Promise<void> {
- try {
- const directory = await this.getDirectory();
- await directory.removeEntry(key);
- } catch (error) {
- if ((error as Error).name !== "NotFoundError") {
- throw error;
- }
- }
- }
+ async remove(key: string): Promise<void> {
+ try {
+ const directory = await this.getDirectory();
+ await directory.removeEntry(key);
+ } catch (error) {
+ if ((error as Error).name !== "NotFoundError") {
+ throw error;
+ }
+ }
+ }
- async list(): Promise<string[]> {
- const directory = await this.getDirectory();
- const keys: string[] = [];
+ async list(): Promise<string[]> {
+ const directory = await this.getDirectory();
+ const keys: string[] = [];
- for await (const name of directory.keys()) {
- keys.push(name);
- }
+ for await (const name of directory.keys()) {
+ keys.push(name);
+ }
- return keys;
- }
+ return keys;
+ }
- async clear(): Promise<void> {
- const directory = await this.getDirectory();
+ async clear(): Promise<void> {
+ const directory = await this.getDirectory();
- for await (const name of directory.keys()) {
- await directory.removeEntry(name);
- }
- }
+ for await (const name of directory.keys()) {
+ await directory.removeEntry(name);
+ }
+ }
- // Helper method to check OPFS support
- static isSupported(): boolean {
- return "storage" in navigator && "getDirectory" in navigator.storage;
- }
+ // Helper method to check OPFS support
+ static isSupported(): boolean {
+ return "storage" in navigator && "getDirectory" in navigator.storage;
+ }
}