1.0.2 • Published 12 months ago

@wwog/idbfs v1.0.2

Weekly downloads
-
License
MIT
Repository
-
Last release
12 months ago

IndexedDB File System

A file system built on the front end of the web, using indexedDB as the back-end storage, as an alternative storage solution or compatible solution for Opfs. It supports reading and writing of file stream and can be used for uploading and downloading large files..Most of the APIs refer to NodeJS, which is used in a similar way.

Features

  • Support Stream Api
  • Store file data in chunks to IndexedDB
  • Maintain metadata of files
  • Support Save disk

Useage

import { mount } from "@wwog/idbfs";

const fs = await mount();

const result = await fs.readdir("/");
console.log(result); // {dirs:[], files:[]}

Write the file to the disk

const handle = await window.showSaveFilePicker();
//Use the stream internally
await fs.saveFile(handle, "/bigFile");

Streams the selected file into IDBFS

const file = fileInput.files?.[0];
if (!file) {
  return alert("please select file");
}
const path = "/" + file.name;
const idbFile = await fs.createFile(path, { mimeType: file.type });
const wStream = fs.createWriteStream(idbFile);
await file.stream().pipeTo(wStream);

Read the file from the disk

import { streamToAsyncIterator } from "@wwog/idbfs";
const rStream = fs.createReadStream(path);
for await (chunk of streamToAsyncIterator(rStream)) {
  console.log(chunk);
}

FS API

  • async appendFile(path: string|IDBFile, data: ArrayBuffer): Promise;
  • async getFile(path: string): Promise
  • async save(dbHandle: FileSystemFileHandle, path: string): Promise
  • async createFile(path: string, desc: FileDesc): Promise
  • createWriteStream(file: IDBFile): WritableStream
  • createReadStream(path: string): ReadableStream
  • async rm(path: string, recursive?: boolean): Promise
  • async readdir(path: string): Promise<{ dirs: Directory[]; files: IDBFile[] }>
  • async writeFileByWebFile(path: string, file: File): Promise
  • async writeFile(path: string,data: ArrayBuffer,desc: FileDesc): Promise
  • async readFile(path: string): Promise
  • async mkdir(path: string): Promise
  • async stat(path: string): Promise
  • async exists(path: string): Promise
1.0.2

12 months ago

1.0.1

12 months ago

1.0.0

12 months ago