159 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
 | |
|     if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
 | |
|         if (ar || !(i in from)) {
 | |
|             if (!ar) ar = Array.prototype.slice.call(from, 0, i);
 | |
|             ar[i] = from[i];
 | |
|         }
 | |
|     }
 | |
|     return to.concat(ar || Array.prototype.slice.call(from));
 | |
| };
 | |
| Object.defineProperty(exports, "__esModule", { value: true });
 | |
| exports.FileHandle = void 0;
 | |
| function promisify(vol, fn, getResult) {
 | |
|     if (getResult === void 0) { getResult = function (input) { return input; }; }
 | |
|     return function () {
 | |
|         var args = [];
 | |
|         for (var _i = 0; _i < arguments.length; _i++) {
 | |
|             args[_i] = arguments[_i];
 | |
|         }
 | |
|         return new Promise(function (resolve, reject) {
 | |
|             vol[fn].bind(vol).apply(void 0, __spreadArray(__spreadArray([], args, false), [function (error, result) {
 | |
|                     if (error)
 | |
|                         return reject(error);
 | |
|                     return resolve(getResult(result));
 | |
|                 }], false));
 | |
|         });
 | |
|     };
 | |
| }
 | |
| var FileHandle = /** @class */ (function () {
 | |
|     function FileHandle(vol, fd) {
 | |
|         this.vol = vol;
 | |
|         this.fd = fd;
 | |
|     }
 | |
|     FileHandle.prototype.appendFile = function (data, options) {
 | |
|         return promisify(this.vol, 'appendFile')(this.fd, data, options);
 | |
|     };
 | |
|     FileHandle.prototype.chmod = function (mode) {
 | |
|         return promisify(this.vol, 'fchmod')(this.fd, mode);
 | |
|     };
 | |
|     FileHandle.prototype.chown = function (uid, gid) {
 | |
|         return promisify(this.vol, 'fchown')(this.fd, uid, gid);
 | |
|     };
 | |
|     FileHandle.prototype.close = function () {
 | |
|         return promisify(this.vol, 'close')(this.fd);
 | |
|     };
 | |
|     FileHandle.prototype.datasync = function () {
 | |
|         return promisify(this.vol, 'fdatasync')(this.fd);
 | |
|     };
 | |
|     FileHandle.prototype.read = function (buffer, offset, length, position) {
 | |
|         return promisify(this.vol, 'read', function (bytesRead) { return ({ bytesRead: bytesRead, buffer: buffer }); })(this.fd, buffer, offset, length, position);
 | |
|     };
 | |
|     FileHandle.prototype.readFile = function (options) {
 | |
|         return promisify(this.vol, 'readFile')(this.fd, options);
 | |
|     };
 | |
|     FileHandle.prototype.stat = function (options) {
 | |
|         return promisify(this.vol, 'fstat')(this.fd, options);
 | |
|     };
 | |
|     FileHandle.prototype.sync = function () {
 | |
|         return promisify(this.vol, 'fsync')(this.fd);
 | |
|     };
 | |
|     FileHandle.prototype.truncate = function (len) {
 | |
|         return promisify(this.vol, 'ftruncate')(this.fd, len);
 | |
|     };
 | |
|     FileHandle.prototype.utimes = function (atime, mtime) {
 | |
|         return promisify(this.vol, 'futimes')(this.fd, atime, mtime);
 | |
|     };
 | |
|     FileHandle.prototype.write = function (buffer, offset, length, position) {
 | |
|         return promisify(this.vol, 'write', function (bytesWritten) { return ({ bytesWritten: bytesWritten, buffer: buffer }); })(this.fd, buffer, offset, length, position);
 | |
|     };
 | |
|     FileHandle.prototype.writeFile = function (data, options) {
 | |
|         return promisify(this.vol, 'writeFile')(this.fd, data, options);
 | |
|     };
 | |
|     return FileHandle;
 | |
| }());
 | |
| exports.FileHandle = FileHandle;
 | |
| function createPromisesApi(vol) {
 | |
|     if (typeof Promise === 'undefined')
 | |
|         return null;
 | |
|     return {
 | |
|         FileHandle: FileHandle,
 | |
|         access: function (path, mode) {
 | |
|             return promisify(vol, 'access')(path, mode);
 | |
|         },
 | |
|         appendFile: function (path, data, options) {
 | |
|             return promisify(vol, 'appendFile')(path instanceof FileHandle ? path.fd : path, data, options);
 | |
|         },
 | |
|         chmod: function (path, mode) {
 | |
|             return promisify(vol, 'chmod')(path, mode);
 | |
|         },
 | |
|         chown: function (path, uid, gid) {
 | |
|             return promisify(vol, 'chown')(path, uid, gid);
 | |
|         },
 | |
|         copyFile: function (src, dest, flags) {
 | |
|             return promisify(vol, 'copyFile')(src, dest, flags);
 | |
|         },
 | |
|         lchmod: function (path, mode) {
 | |
|             return promisify(vol, 'lchmod')(path, mode);
 | |
|         },
 | |
|         lchown: function (path, uid, gid) {
 | |
|             return promisify(vol, 'lchown')(path, uid, gid);
 | |
|         },
 | |
|         link: function (existingPath, newPath) {
 | |
|             return promisify(vol, 'link')(existingPath, newPath);
 | |
|         },
 | |
|         lstat: function (path, options) {
 | |
|             return promisify(vol, 'lstat')(path, options);
 | |
|         },
 | |
|         mkdir: function (path, options) {
 | |
|             return promisify(vol, 'mkdir')(path, options);
 | |
|         },
 | |
|         mkdtemp: function (prefix, options) {
 | |
|             return promisify(vol, 'mkdtemp')(prefix, options);
 | |
|         },
 | |
|         open: function (path, flags, mode) {
 | |
|             return promisify(vol, 'open', function (fd) { return new FileHandle(vol, fd); })(path, flags, mode);
 | |
|         },
 | |
|         readdir: function (path, options) {
 | |
|             return promisify(vol, 'readdir')(path, options);
 | |
|         },
 | |
|         readFile: function (id, options) {
 | |
|             return promisify(vol, 'readFile')(id instanceof FileHandle ? id.fd : id, options);
 | |
|         },
 | |
|         readlink: function (path, options) {
 | |
|             return promisify(vol, 'readlink')(path, options);
 | |
|         },
 | |
|         realpath: function (path, options) {
 | |
|             return promisify(vol, 'realpath')(path, options);
 | |
|         },
 | |
|         rename: function (oldPath, newPath) {
 | |
|             return promisify(vol, 'rename')(oldPath, newPath);
 | |
|         },
 | |
|         rmdir: function (path) {
 | |
|             return promisify(vol, 'rmdir')(path);
 | |
|         },
 | |
|         rm: function (path, options) {
 | |
|             return promisify(vol, 'rm')(path, options);
 | |
|         },
 | |
|         stat: function (path, options) {
 | |
|             return promisify(vol, 'stat')(path, options);
 | |
|         },
 | |
|         symlink: function (target, path, type) {
 | |
|             return promisify(vol, 'symlink')(target, path, type);
 | |
|         },
 | |
|         truncate: function (path, len) {
 | |
|             return promisify(vol, 'truncate')(path, len);
 | |
|         },
 | |
|         unlink: function (path) {
 | |
|             return promisify(vol, 'unlink')(path);
 | |
|         },
 | |
|         utimes: function (path, atime, mtime) {
 | |
|             return promisify(vol, 'utimes')(path, atime, mtime);
 | |
|         },
 | |
|         writeFile: function (id, data, options) {
 | |
|             return promisify(vol, 'writeFile')(id instanceof FileHandle ? id.fd : id, data, options);
 | |
|         },
 | |
|     };
 | |
| }
 | |
| exports.default = createPromisesApi;
 |