CurrentDirectory

CurrentDirectory

Devices

Devices

Full

Full

Null

Null

Random

Random

Tty

Tty

Zero

Zero

FileDescriptors

FileDescriptors

FileDescriptor

Class representing a File Descriptor

new FileDescriptor(iNode: I, flags: number)
Parameters
iNode (I)
flags (number)
Instance Members
getINode()
getFlags()
setFlags(flags)
getPos()
setPos(pos, flags)
read(buffer, position)
write(buffer, position, extraFlags)

FileDescriptorManager

Class that manages all FileDescriptors

new FileDescriptorManager(iNodeMgr: INodeManager)
Parameters
iNodeMgr (INodeManager)
Instance Members
createFd(iNode, flags)
getFd(index)
dupFd(index)
deleteFd(fdIndex)

INodes

INodes

INode

Class representing an iNode.

new INode(metadata: {ino: number, mode: number, uid: number, gid: number, nlink: number?, size: number}, iNodeMgr: INodeManager)
Parameters
metadata ({ino: number, mode: number, uid: number, gid: number, nlink: number?, size: number})
iNodeMgr (INodeManager)
Instance Members
getMetadata()

File

Class representing a file.

new File(props: {ino: number, mode: number, uid: number, gid: number, data: Buffer?}, iNodeMgr: INodeManager)

Extends INode

Parameters
props ({ino: number, mode: number, uid: number, gid: number, data: Buffer?})
iNodeMgr (INodeManager)
Instance Members
getData()
setData(data)
destructor()

Directory

Class representing a directory.

new Directory(props: {ino: number, mode: number, uid: number, gid: number, parent: number?}, iNodeMgr: INodeManager)

Extends INode

Parameters
props ({ino: number, mode: number, uid: number, gid: number, parent: number?})
iNodeMgr (INodeManager)
Instance Members
getEntries()
getEntryIndex(name)
getEntry(name)
addEntry(name, index)
deleteEntry(name)
renameEntry(oldName, newName)
destructor()

Class representing a Symlink.

new Symlink(props: {ino: number, mode: number, uid: number, gid: number, link: string}, iNodeMgr: INodeManager)

Extends INode

Parameters
props ({ino: number, mode: number, uid: number, gid: number, link: string})
iNodeMgr (INodeManager)
Instance Members
destructor()

CharacterDev

Class representing a character device.

new CharacterDev(props: {ino: number, mode: number, uid: number, gid: number, rdev: number}, iNodeMgr: INodeManager)

Extends INode

Parameters
props ({ino: number, mode: number, uid: number, gid: number, rdev: number})
iNodeMgr (INodeManager)

INodeManager

Class that manages all iNodes including creation and deletion

new INodeManager(devMgr: DeviceManager)
Parameters
devMgr (DeviceManager)
Instance Members
createINode(iNodeConstructor, props)
getINode(index)
linkINode(iNode)
unlinkINode(iNode)
refINode(iNode)
unrefINode(iNode)
_gcINode(iNode)

Permissions

Permissions

DEFAULT_ROOT_UID

Default root uid.

DEFAULT_ROOT_UID

Type: number

DEFAULT_ROOT_GID

Default root gid.

DEFAULT_ROOT_GID

Type: number

DEFAULT_ROOT_PERM

Default root directory permissions of rwxr-xr-x.

DEFAULT_ROOT_PERM

DEFAULT_FILE_PERM

Default file permissions of rw-rw-rw-.

DEFAULT_FILE_PERM

DEFAULT_DIRECTORY_PERM

Default directory permissions of rwxrwxrwx.

DEFAULT_DIRECTORY_PERM

Default symlink permissions of rwxrwxrwx.

DEFAULT_SYMLINK_PERM

applyUmask

Applies umask to default set of permissions.

applyUmask(perms: number, umask: number): number
Parameters
perms (number)
umask (number)
Returns
number

resolveOwnership

Permission checking relies on ownership details of the iNode. If the accessing user is the same as the iNode user, then only user permissions are used. If the accessing group is the same as the iNode group, then only the group permissions are used. Otherwise the other permissions are used.

resolveOwnership(uid: number, gid: number, stat: Stat): number
Parameters
uid (number)
gid (number)
stat (Stat)
Returns
number

checkPermissions

Checks the desired permissions with user id and group id against the metadata of an iNode. The desired permissions can be bitwise combinations of constants.R_OK, constants.W_OK and constants.X_OK.

checkPermissions(access: number, uid: number, gid: number, stat: Stat): boolean
Parameters
access (number)
uid (number)
gid (number)
stat (Stat)
Returns
boolean

Stat

Stat
Instance Members
isFile()
isDirectory()
isBlockDevice()
isCharacterDevice()
isFIFO()
isSocket()

Stat

Class representing Stat metadata.

new Stat(props: Metadata)
Parameters
props (Metadata)
Instance Members
isFile()
isDirectory()
isBlockDevice()
isCharacterDevice()
isFIFO()
isSocket()

Streams

Streams

ReadStream

Class representing a ReadStream.

new ReadStream(path: string, options: optionsStream, fs: VirtualFS)

Extends Readable

Parameters
path (string)
options (optionsStream)
fs (VirtualFS)

WriteStream

Class representing a WriteStream.

new WriteStream(path: string, options: optionsStream, fs: VirtualFS)

Extends Writable

Parameters
path (string)
options (optionsStream)
fs (VirtualFS)

VirtualFS

VirtualFS

VirtualFS

Class representing a virtual filesystem.

new VirtualFS(umask: number, rootIndex: (number | null), devMgr: DeviceManager, iNodeMgr: INodeManager, fdMgr: FileDescriptorManager)
Parameters
umask (number = 0o022)
rootIndex ((number | null) = null)
devMgr (DeviceManager = new DeviceManager())
iNodeMgr (INodeManager = new INodeManager(devMgr))
fdMgr (FileDescriptorManager = new FileDescriptorManager(iNodeMgr))

pathJoin

Prefer the posix join function if it exists. Browser polyfills of the path module may not have the posix property.

pathJoin

callbackUp

Asynchronous callback backup.

callbackUp

Type: callback

Parameters
err (any)

VirtualFSError

Class representing a file system error.

new VirtualFSError(errnoObj: {errno: number, code: string, description: string}, path: string?, dest: string?, syscall: string?)

Extends Error

Parameters
errnoObj ({errno: number, code: string, description: string})
path (string?)
dest (string?)
syscall (string?)

VirtualFSError

VirtualFSError

VirtualFSSingleton

VirtualFSSingleton