Skip to content

dBrowser VirtualFS

Jared Rice Sr edited this page Jun 30, 2018 · 1 revision

@dbrowser/vfs

This module wraps a number of different dWeb APIs in generic "file" objects. The generic objects can be used to simplify rendering.

The generic interface is used on all objects. It is defined as follows:

class VFSNode {
  get url () { return false }
  get type () { return 'node' }
  get name () { return '' }
  get size () { return 0 }
  get mtime () { return 0 }
  get isEditable () { return false }
  get isContainer () { return false } // is folder-like?
  get isEmpty () { return true }
  get hasChildren () { return !this.isEmpty }
  get children () { return [] }

  // load any data needed to display the node in the sidebar or in the expanded state
  async readData () {}

  // used internally during diffs to copy state from the given node
  copyDataFrom (node) {}

  // sort the items according to the given params
  sort(column, dir) {}

  // mutators
  async rename (newName) {}
  async copy (newPath, targetVaultKey) {}
  async move (newPath, targetVaultKey) {}
  async delete () {}
}

The following classes are exported by this module:

const {
  VFSNode, // root interface for all objects, should be subclassed
  VFSystemContainer, // root interface for all folder-like objects, should be subclassed

  VFSystemRoot, // the root of the VFS
  VFSystemFolder, // a base class for virtually-defined folders
  VFSystemFolder_User, // contains a single user's folders
  VFSystemFolder_Network, // contains network folders
  VFSystemFolder_Trash, // contains the local user's deleted vaults

  VFSystemVaultContainer, // root interface for all folder-like vault objects, should be subclassed
  VFSystemVault, // an vault
  VFSystemVaultFolder, // a folder within an vault
  VFSystemVaultFile, // a file within an vault
  VFSystemVaultFolder_BeingCreated // a temporary virtual folder that's in the process of having a name chosen
} = require('@dbrowser/vfs')
Clone this wiki locally