UNPKG

6.23 kBJavaScriptView Raw
1"use strict";
2var __spreadArrays = (this && this.__spreadArrays) || function () {
3 for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
4 for (var r = Array(s), k = 0, i = 0; i < il; i++)
5 for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
6 r[k] = a[j];
7 return r;
8};
9Object.defineProperty(exports, "__esModule", { value: true });
10exports.FileHandle = void 0;
11function promisify(vol, fn, getResult) {
12 if (getResult === void 0) { getResult = function (input) { return input; }; }
13 return function () {
14 var args = [];
15 for (var _i = 0; _i < arguments.length; _i++) {
16 args[_i] = arguments[_i];
17 }
18 return new Promise(function (resolve, reject) {
19 vol[fn].bind(vol).apply(void 0, __spreadArrays(args, [function (error, result) {
20 if (error)
21 return reject(error);
22 return resolve(getResult(result));
23 }]));
24 });
25 };
26}
27var FileHandle = /** @class */ (function () {
28 function FileHandle(vol, fd) {
29 this.vol = vol;
30 this.fd = fd;
31 }
32 FileHandle.prototype.appendFile = function (data, options) {
33 return promisify(this.vol, 'appendFile')(this.fd, data, options);
34 };
35 FileHandle.prototype.chmod = function (mode) {
36 return promisify(this.vol, 'fchmod')(this.fd, mode);
37 };
38 FileHandle.prototype.chown = function (uid, gid) {
39 return promisify(this.vol, 'fchown')(this.fd, uid, gid);
40 };
41 FileHandle.prototype.close = function () {
42 return promisify(this.vol, 'close')(this.fd);
43 };
44 FileHandle.prototype.datasync = function () {
45 return promisify(this.vol, 'fdatasync')(this.fd);
46 };
47 FileHandle.prototype.read = function (buffer, offset, length, position) {
48 return promisify(this.vol, 'read', function (bytesRead) { return ({ bytesRead: bytesRead, buffer: buffer }); })(this.fd, buffer, offset, length, position);
49 };
50 FileHandle.prototype.readFile = function (options) {
51 return promisify(this.vol, 'readFile')(this.fd, options);
52 };
53 FileHandle.prototype.stat = function (options) {
54 return promisify(this.vol, 'fstat')(this.fd, options);
55 };
56 FileHandle.prototype.sync = function () {
57 return promisify(this.vol, 'fsync')(this.fd);
58 };
59 FileHandle.prototype.truncate = function (len) {
60 return promisify(this.vol, 'ftruncate')(this.fd, len);
61 };
62 FileHandle.prototype.utimes = function (atime, mtime) {
63 return promisify(this.vol, 'futimes')(this.fd, atime, mtime);
64 };
65 FileHandle.prototype.write = function (buffer, offset, length, position) {
66 return promisify(this.vol, 'write', function (bytesWritten) { return ({ bytesWritten: bytesWritten, buffer: buffer }); })(this.fd, buffer, offset, length, position);
67 };
68 FileHandle.prototype.writeFile = function (data, options) {
69 return promisify(this.vol, 'writeFile')(this.fd, data, options);
70 };
71 return FileHandle;
72}());
73exports.FileHandle = FileHandle;
74function createPromisesApi(vol) {
75 if (typeof Promise === 'undefined')
76 return null;
77 return {
78 FileHandle: FileHandle,
79 access: function (path, mode) {
80 return promisify(vol, 'access')(path, mode);
81 },
82 appendFile: function (path, data, options) {
83 return promisify(vol, 'appendFile')(path instanceof FileHandle ? path.fd : path, data, options);
84 },
85 chmod: function (path, mode) {
86 return promisify(vol, 'chmod')(path, mode);
87 },
88 chown: function (path, uid, gid) {
89 return promisify(vol, 'chown')(path, uid, gid);
90 },
91 copyFile: function (src, dest, flags) {
92 return promisify(vol, 'copyFile')(src, dest, flags);
93 },
94 lchmod: function (path, mode) {
95 return promisify(vol, 'lchmod')(path, mode);
96 },
97 lchown: function (path, uid, gid) {
98 return promisify(vol, 'lchown')(path, uid, gid);
99 },
100 link: function (existingPath, newPath) {
101 return promisify(vol, 'link')(existingPath, newPath);
102 },
103 lstat: function (path, options) {
104 return promisify(vol, 'lstat')(path, options);
105 },
106 mkdir: function (path, options) {
107 return promisify(vol, 'mkdir')(path, options);
108 },
109 mkdtemp: function (prefix, options) {
110 return promisify(vol, 'mkdtemp')(prefix, options);
111 },
112 open: function (path, flags, mode) {
113 return promisify(vol, 'open', function (fd) { return new FileHandle(vol, fd); })(path, flags, mode);
114 },
115 readdir: function (path, options) {
116 return promisify(vol, 'readdir')(path, options);
117 },
118 readFile: function (id, options) {
119 return promisify(vol, 'readFile')(id instanceof FileHandle ? id.fd : id, options);
120 },
121 readlink: function (path, options) {
122 return promisify(vol, 'readlink')(path, options);
123 },
124 realpath: function (path, options) {
125 return promisify(vol, 'realpath')(path, options);
126 },
127 rename: function (oldPath, newPath) {
128 return promisify(vol, 'rename')(oldPath, newPath);
129 },
130 rmdir: function (path) {
131 return promisify(vol, 'rmdir')(path);
132 },
133 stat: function (path, options) {
134 return promisify(vol, 'stat')(path, options);
135 },
136 symlink: function (target, path, type) {
137 return promisify(vol, 'symlink')(target, path, type);
138 },
139 truncate: function (path, len) {
140 return promisify(vol, 'truncate')(path, len);
141 },
142 unlink: function (path) {
143 return promisify(vol, 'unlink')(path);
144 },
145 utimes: function (path, atime, mtime) {
146 return promisify(vol, 'utimes')(path, atime, mtime);
147 },
148 writeFile: function (id, data, options) {
149 return promisify(vol, 'writeFile')(id instanceof FileHandle ? id.fd : id, data, options);
150 },
151 };
152}
153exports.default = createPromisesApi;