Home

Awesome

npm (scoped)

orbit-db-fsstore

an orbit-db store representing a file system

This is a custom OrbitDB store (add this store to your OrbitDB instance)

IMPORTANT: The fsstore creates a root directory named '/r' and every path must be built ontop/contained inside of this!

Install

npm install @tabcat/orbit-db-fsstore
Credit File system on CRDT; Mehdi Ahmed-Nacer, Stéphane Martin, Pascal Urso for filesystem datatype and operation structure

FSStore Instance Methods API

check out ./test for more info

.joinPath(path, name)

returns a new path by combining path and name

const newPath = fsstore.joinPath('/r/this/is/a', 'path')
// '/r/this/is/a/path'

.exists(path)

returns a bool, true if path exists and false if not

const exists = fsstore.exists('/r/file1')
// true

.content(path)

returns the content type at path or undefined if path doesn't exist

const json = fsstore.content('/r')
// 'dir'
const json = fsstore.content('/r/file1')
// 'file'

.read(path)

returns the json data written at path or undefined if path doesn't exist

const json = fsstore.read('/r/file1')
// { hello: 'ipfs cid' }

.tree(path)

return an array of all paths located under the path in the store state

const pathTree = fsstore.tree('/r/dir1')
// ['/r/dir1/file2', '/r/dir1/dir2', '/r/dir1/dir2/file2']

.ls(path)

return an array of only paths located inside the path in the store state

const pathLs = fsstore.ls('/r/dir1')
// ['/r/dir1/file2', '/r/dir1/dir2']

.mkdir(path, name)

makes a new directory at joinPath(path, name) returns a Promise that resolves to a String that is the multihash of the entry.

const entryHash = await fsstore.mkdir('/r', 'dir1')

.rmdir(path)

removes an existing directory at path returns a Promise that resolves to a String that is the multihash of the entry.

const entryHash = await fsstore.rmdir('/r/dir1')

.mvdir(path, dest, name)

moves an existing directory at path to joinPath(dest, name) returns a Promise that resolves to a String that is the multihash of the entry.

const entryHash = await fsstore.mvdir('/r/dir1', '/r', 'dir2')

.cpdir(path, dest, name)

copies an existing directory at path to joinPath(dest, name) returns a Promise that resolves to a String that is the multihash of the entry.

const entryHash = await fsstore.cpdir('/r/dir1', '/r', 'dir1')

.mk(path, name)

make a new file at joinPath(path, name) returns a Promise that resolves to a String that is the multihash of the entry.

const entryHash = await fsstore.mk('/r', 'file1')

.write(path, json)

map json (any JSON-serializable value) to a file path (!!! do not store blob data in orbitdb, ONLY REFERENCES) returns a Promise that resolves to a String that is the multihash of the entry.

const entryHash = await fsstore.write('/r/file1', { hello: 'ipfs cid' })

.rm(path)

remove an existing file at path returns a Promise that resolves to a String that is the multihash of the entry.

const entryHash = await fsstore.rm('/r/file1')

.mv(path, dest, name)

move an existing file at path to joinPath(dest, name) returns a Promise that resolves to a String that is the multihash of the entry.

const entryHash = await fsstore.mv('/r/file1', '/r', 'file2')

.cp(path, dest, name)

copy an existing file at path to joinPath(dest, name) returns a Promise that resolves to a String that is the multihash of the entry.

const entryHash = await fsstore.cp('/r/file1', '/r', 'file2')