Filesystems proposal

Version 0.9
Idea 2023/07/16 - Aleksandr A. Sokolov (https://github.com/AleksandrSokolov)
Created 2023/07/17 - Michael P. Dubner (https://github.com/pyhedgehog)
Modified 2023/07/17 - Michael P. Dubner (https://github.com/pyhedgehog)

Core changes

  1. Migrate config storage_s3_enabled to select one of base storage plugins (local/s3).

References

  • FUSE docs
  • npm fuse-native package
  • npm fuse-bindings package
  • npm @runkit-forks/fuse-native fork package
  • npm uploadfs package – bad example of inserting all funcs/backends to one package (image resizing, s3/azure backend, etc).
  • npm kura package – abstract (in non-JS-way) library with implementations for local fs, browser IDB, S3 and so on.
  • npm univ-fs package – same as kura with same author, but with different API (WTF!?)
  • npm ipfs-unixfs package – can be used as one of FS-plugins
  • npm @swindle/filesystem package – another abstract object api with no implementations except local (reasoning?)
  • npm riakfs package – node:fs drop-in replacement around exotic storage (Kias NoSQL database)
  • npm level-filesystem package – another node:fs replacement on top of key-value database
  • npm tar-stream package – may be readonly source
  • npm memfs package – node:fs replacement on top of in-memory objects. Also there are one other backend (FSA) and two additional (to FS and FSA) interfaces – CRUD (get/put/del/list/... for string names – file paths) and CAS (get/put/del/info for content hashes instead of names – as in IPFS).
  • npm unionfs package – from author of memfs – think of union several FS plugins