@web4/bitdrive
Version:
Bitdrive is a secure, real time distributed file system
378 lines (325 loc) • 8.32 kB
JavaScript
/**
* A promisified version of the Bitdrive API
*
* Note: The promises API does not currently include file descriptor operations.
*/
module.exports = class BitdrivePromises {
constructor (drive) {
this.drive = drive
}
get key () {
return this.drive.key
}
get discoveryKey () {
return this.drive.discoveryKey
}
get version () {
return this.drive.version
}
get metadata () {
return this.drive.metadata
}
get writable () {
return this.drive.metadata.writable
}
ready () {
return new Promise((resolve, reject) => {
this.drive.ready(err => {
if (err) return reject(err)
return resolve(null)
})
})
}
close () {
return new Promise((resolve, reject) => {
this.drive.close(err => {
if (err) return reject(err)
return resolve(null)
})
})
}
create (name, opts) {
return new Promise((resolve, reject) => {
this.drive.create(name, opts, (err, st) => {
if (err) return reject(err)
return resolve(st)
})
})
}
createReadStream (name, opts) {
return this.drive.createReadStream(name, opts)
}
readFile (name, opts) {
return new Promise((resolve, reject) => {
this.drive.readFile(name, opts, (err, contents) => {
if (err) return reject(err)
return resolve(contents)
})
})
}
createWriteStream (name, opts) {
return this.drive.createWriteStream(name, opts)
}
writeFile (name, buf, opts) {
return new Promise((resolve, reject) => {
this.drive.writeFile(name, buf, opts, err => {
if (err) return reject(err)
return resolve(null)
})
})
}
createDiffStream (other, prefix, opts) {
return this.drive.createDiffStream(other, prefix, opts)
}
createDirectoryStream (name, opts) {
return this.drive.createDirectoryStream(name, opts)
}
replicate (isInitiator, opts) {
return this.drive.replicate(isInitiator, opts)
}
truncate (name, size) {
return new Promise((resolve, reject) => {
this.drive.truncate(name, size, err => {
if (err) return reject(err)
return resolve(null)
})
})
}
mkdir (name, opts) {
return new Promise((resolve, reject) => {
this.drive.mkdir(name, opts, (err, st) => {
if (err) return reject(err)
return resolve(st)
})
})
}
lstat (name, opts) {
return new Promise((resolve, reject) => {
this.drive.lstat(name, opts, (err, st) => {
if (err) return reject(err)
return resolve(st)
})
})
}
stat (name, opts) {
return new Promise((resolve, reject) => {
this.drive.stat(name, opts, (err, st) => {
if (err) return reject(err)
return resolve(st)
})
})
}
info (name) {
return new Promise((resolve, reject) => {
this.drive.info(name, (err, info) => {
if (err) return reject(err)
return resolve(info)
})
})
}
access (name, opts) {
return new Promise((resolve, reject) => {
this.drive.access(name, opts, err => {
if (err) return reject(err)
return resolve(null)
})
})
}
exists (name, opts) {
return new Promise((resolve, reject) => {
this.drive.exists(name, opts, (exists) => {
return resolve(exists)
})
})
}
readdir (name, opts) {
return new Promise((resolve, reject) => {
this.drive.readdir(name, opts, (err, entries) => {
if (err) return reject(err)
return resolve(entries)
})
})
}
unlink (name) {
return new Promise((resolve, reject) => {
this.drive.unlink(name, err => {
if (err) return reject(err)
return resolve(null)
})
})
}
rmdir (name, opts) {
return new Promise((resolve, reject) => {
this.drive.rmdir(name, opts, err => {
if (err) return reject(err)
return resolve(null)
})
})
}
cp (nameFrom, nameTo, opts) {
return new Promise((resolve, reject) => {
this.drive.cp(nameFrom, nameTo, opts, err => {
if (err) return reject(err)
return resolve(null)
})
})
}
mv (nameFrom, nameTo) {
return new Promise((resolve, reject) => {
this.drive.mv(nameFrom, nameTo, err => {
if (err) return reject(err)
return resolve(null)
})
})
}
rename (nameFrom, nameTo) {
return new Promise((resolve, reject) => {
this.drive.rename(nameFrom, nameTo, err => {
if (err) return reject(err)
return resolve(null)
})
})
}
checkout (version, opts) {
return this.drive.checkout(version, opts).promises
}
destroyStorage () {
return new Promise((resolve, reject) => {
this.drive.destroyStorage(err => {
if (err) return reject(err)
return resolve(null)
})
})
}
stats (path, opts) {
return new Promise((resolve, reject) => {
this.drive.stats(path, opts, (err, stats) => {
if (err) return reject(err)
return resolve(stats)
})
})
}
watchStats (path, opts) {
return this.drive.watchStats(path, opts)
}
mirror () {
return this.drive.mirror()
}
download (path, opts) {
var handle = null
const prom = new Promise((resolve, reject) => {
handle = this.drive.download(path, opts, err => {
if (err) return reject(err)
return resolve(handle)
})
})
prom.destroy = handle.destroy
prom.catch(() => {})
return prom
}
watch (name, onchange) {
return this.drive.watch(name, onchange)
}
mount (path, key, opts) {
return new Promise((resolve, reject) => {
this.drive.mount(path, key, opts, err => {
if (err) return reject(err)
return resolve(null)
})
})
}
extension (name, message) {
return this.drive.extension(name, message)
}
createMountStream (opts) {
return this.drive.createMountStream(opts)
}
unmount (path) {
return new Promise((resolve, reject) => {
this.drive.unmount(path, err => {
if (err) return reject(err)
return resolve(null)
})
})
}
symlink (target, linkname) {
return new Promise((resolve, reject) => {
this.drive.symlink(target, linkname, (err, st) => {
if (err) return reject(err)
return resolve(st)
})
})
}
readlink (name) {
return new Promise((resolve, reject) => {
this.drive.readlink(name, (err, linkname) => {
if (err) return reject(err)
return resolve(linkname)
})
})
}
getAllMounts (opts) {
return new Promise((resolve, reject) => {
this.drive.getAllMounts(opts, (err, allMounts) => {
if (err) return reject(err)
return resolve(allMounts)
})
})
}
setMetadata (path, key, value) {
return new Promise((resolve, reject) => {
this.drive.setMetadata(path, key, value, (err, st) => {
if (err) return reject(err)
return resolve(st)
})
})
}
removeMetadata (path, key) {
return new Promise((resolve, reject) => {
this.drive.removeMetadata(path, key, (err, st) => {
if (err) return reject(err)
return resolve(st)
})
})
}
copy (from, to) {
return new Promise((resolve, reject) => {
this.drive.copy(from, to, (err, st) => {
if (err) return reject(err)
return resolve(st)
})
})
}
createTag (name, version) {
return new Promise((resolve, reject) => {
this.drive.createTag(name, version, (err) => {
if (err) return reject(err)
return resolve(null)
})
})
}
getAllTags () {
return new Promise((resolve, reject) => {
this.drive.getAllTags((err, allTags) => {
if (err) return reject(err)
return resolve(allTags)
})
})
}
deleteTag (name) {
return new Promise((resolve, reject) => {
this.drive.deleteTag(name, (err) => {
if (err) return reject(err)
return resolve(null)
})
})
}
getTaggedVersion (name) {
return new Promise((resolve, reject) => {
this.drive.getTaggedVersion(name, (err, version) => {
if (err) return reject(err)
return resolve(version)
})
})
}
}