StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
StackGenVis/frontend/node_modules/fs-es6/index.js

193 lines
4.7 KiB

import 'babel-polyfill'
import FileSystemSync from './fileSystemSync'
import WriteStreamEs6 from './writeStreamEs6'
class FsEs6 {
constructor(type, size) {
this.fs = new FileSystemSync(type, size)
}
static create(type, size) {
return new FsEs6(type, size)
}
writeFile(file, data, callback) {
this.fs.getFileWriter(file)
.then(writer => {
this._write(writer, data)
callback()
})
.catch(callback)
}
writeFileSync(file, data) {
return this.fs.getFileWriter(file)
.then(writer => this._write(writer, data))
}
appendFile(file, data, callback) {
this.fs.getFileWriter(file, {create: false})
.then(writer => {
writer.seek(writer.length)
this._write(writer, data)
callback()
})
.catch(callback)
}
appendFileSync(file, data) {
return this.fs.getFileWriter(file, {create: false})
.then(writer => {
writer.seek(writer.length)
this._write(writer, data)
})
}
readFile(file, callback) {
this.fs.getFileReader(file)
.then(reader => callback(null, reader.result))
.catch(callback)
}
readFileSync(file) {
return this.fs.getFileReader(file)
.then(reader => reader.result)
}
unlink(path, callback) {
this.fs.getFileEntry(path)
.then(file => file.remove(callback, callback))
.catch(callback)
}
unlinkSync(path) {
return new Promise((resolve, reject) => {
this.fs.getFileEntry(path)
.then(file => file.remove(resolve, reject))
.catch(reject)
})
}
readdir(path, callback) {
this.fs.getDirectoryEntry(path)
.then(directory => this._getFiles(directory.createReader()))
.then(files => callback(null, files))
.catch(callback)
}
readdirSync(path) {
return this.fs.getDirectoryEntry(path)
.then(directory => this._getFiles(directory.createReader()))
}
mkdir(path, callback) {
this.fs.getDirectoryEntry(path, {create: true})
.then(() => callback())
.catch(callback)
}
mkdirSync(path) {
return this.fs.getDirectoryEntry(path, {create: true})
}
rmdir(path, callback) {
this.fs.getDirectoryEntry(path)
.then(directory => directory.removeRecursively(callback, callback))
.catch(callback)
}
rmdirSync(path) {
return new Promise((resolve, reject) => {
return this.fs.getDirectoryEntry(path)
.then(directory => directory.removeRecursively(resolve, reject))
.catch(reject)
})
}
exists(path, callback) {
this.fs.getFileEntry(path)
.then(() => callback(true))
.catch(() => this.fs.getDirectoryEntry(path)
.then(() => callback(true))
.catch(() => callback(false)))
}
existsSync(path) {
return this.fs.getFileEntry(path)
.then(() => true)
.catch(() => this.fs.getDirectoryEntry(path)
.then(() => true)
.catch(() => false))
}
access(path, callback) {
this.fs.getFileEntry(path)
.then(() => callback())
.catch(() => this.fs.getDirectoryEntry(path)
.then(() => callback())
.catch(callback))
}
accessSync(path) {
return this.fs.getFileEntry(path)
.then(() => null)
.catch(() => this.fs.getDirectoryEntry(path)
.then(() => null))
}
stat(path, callback) {
this.fs.getFileEntry(path)
.then(file => file.getMetadata(callback.bind(this, null), callback))
.catch(() => this.fs.getDirectoryEntry(path)
.then(directory => directory.getMetadata(callback.bind(this, null), callback))
.catch(callback))
}
statSync(path) {
return new Promise((resolve, reject) => {
this.fs.getFileEntry(path)
.then(file => file.getMetadata(resolve, reject))
.catch(() => this.fs.getDirectoryEntry(path)
.then(directory => directory.getMetadata(resolve, reject))
.catch(reject))
})
}
// Verify if this method works as the same counterpart in node.js
createWriteStream(path, options) {
const promise = this.fs.getFileWriter(path)
promise.then(file => file.truncate())
.catch(error => Promise.reject({path, error}))
return new WriteStreamEs6(promise, options)
}
_write(file, data) {
if (!data)
return
if (typeof data === 'string')
return file.write(new Blob([data], {type: 'text/plain'}))
file.write(data)
}
_getFiles(directory) {
let files = []
const getFiles = (resolve, reject) => {
directory.readEntries(results => {
if (!results.length) {
resolve(files.sort())
}
else {
files = Array.prototype.slice.call(results, 0).concat(files)
getFiles(resolve, reject)
}
}, reject)
}
return new Promise(getFiles)
}
}
module.exports = new FsEs6()