UNPKG

7.68 kBJavaScriptView Raw
1/**
2 * A promisified version of the Hyperdrive API
3 *
4 * Note: The promises API does not currently include file descriptor operations.
5*/
6
7module.exports = class HyperdrivePromises {
8 constructor (drive) {
9 this.drive = drive
10 }
11
12 get key () {
13 return this.drive.key
14 }
15 get discoveryKey () {
16 return this.drive.discoveryKey
17 }
18 get version () {
19 return this.drive.version
20 }
21 get metadata () {
22 return this.drive.metadata
23 }
24 get writable () {
25 return this.drive.metadata.writable
26 }
27
28 ready () {
29 return new Promise((resolve, reject) => {
30 this.drive.ready(err => {
31 if (err) return reject(err)
32 return resolve(null)
33 })
34 })
35 }
36
37 close () {
38 return new Promise((resolve, reject) => {
39 this.drive.close(err => {
40 if (err) return reject(err)
41 return resolve(null)
42 })
43 })
44 }
45
46 create (name, opts) {
47 return new Promise((resolve, reject) => {
48 this.drive.create(name, opts, (err, st) => {
49 if (err) return reject(err)
50 return resolve(st)
51 })
52 })
53
54 }
55
56 createReadStream (name, opts) {
57 return this.drive.createReadStream(name, opts)
58 }
59
60 readFile (name, opts) {
61 return new Promise((resolve, reject) => {
62 this.drive.readFile(name, opts, (err, contents) => {
63 if (err) return reject(err)
64 return resolve(contents)
65 })
66 })
67 }
68
69 createWriteStream (name, opts) {
70 return this.drive.createWriteStream(name, opts)
71 }
72
73 writeFile (name, buf, opts) {
74 return new Promise((resolve, reject) => {
75 this.drive.writeFile(name, buf, opts, err => {
76 if (err) return reject(err)
77 return resolve(null)
78 })
79 })
80
81 }
82
83 createDiffStream (other, prefix, opts) {
84 return this.drive.createDiffStream(other, prefix, opts)
85 }
86
87 createDirectoryStream (name, opts) {
88 return this.drive.createDirectoryStream(name, opts)
89 }
90
91 replicate (isInitiator, opts) {
92 return this.drive.replicate(isInitiator, opts)
93 }
94
95 truncate (name, size) {
96 return new Promise((resolve, reject) => {
97 this.drive.truncate(name, size, err => {
98 if (err) return reject(err)
99 return resolve(null)
100 })
101 })
102
103 }
104
105 mkdir (name, opts) {
106 return new Promise((resolve, reject) => {
107 this.drive.mkdir(name, opts, (err, st) => {
108 if (err) return reject(err)
109 return resolve(st)
110 })
111 })
112
113 }
114
115 lstat (name, opts) {
116 return new Promise((resolve, reject) => {
117 this.drive.lstat(name, opts, (err, st) => {
118 if (err) return reject(err)
119 return resolve(st)
120 })
121 })
122 }
123
124 stat (name, opts) {
125 return new Promise((resolve, reject) => {
126 this.drive.stat(name, opts, (err, st) => {
127 if (err) return reject(err)
128 return resolve(st)
129 })
130 })
131 }
132
133 info (name) {
134 return new Promise((resolve, reject) => {
135 this.drive.info(name, (err, info) => {
136 if (err) return reject(err)
137 return resolve(info)
138 })
139 })
140 }
141
142 access (name, opts) {
143 return new Promise((resolve, reject) => {
144 this.drive.access(name, opts, err => {
145 if (err) return reject(err)
146 return resolve(null)
147 })
148 })
149 }
150
151 exists (name, opts) {
152 return new Promise((resolve, reject) => {
153 this.drive.exists(name, opts, (exists) => {
154 return resolve(exists)
155 })
156 })
157 }
158
159 readdir (name, opts) {
160 return new Promise((resolve, reject) => {
161 this.drive.readdir(name, opts, (err, entries) => {
162 if (err) return reject(err)
163 return resolve(entries)
164 })
165 })
166
167 }
168
169 unlink (name) {
170 return new Promise((resolve, reject) => {
171 this.drive.unlink(name, err => {
172 if (err) return reject(err)
173 return resolve(null)
174 })
175 })
176 }
177
178 rmdir (name) {
179 return new Promise((resolve, reject) => {
180 this.drive.rmdir(name, err => {
181 if (err) return reject(err)
182 return resolve(null)
183 })
184 })
185
186 }
187
188 checkout (version, opts) {
189 return this.drive.checkout(version, opts).promises
190 }
191
192 destroyStorage () {
193 return new Promise((resolve, reject) => {
194 this.drive.destroyStorage(err => {
195 if (err) return reject(err)
196 return resolve(null)
197 })
198 })
199 }
200
201 stats (path, opts) {
202 return new Promise((resolve, reject) => {
203 this.drive.stats(path, opts, (err, stats) => {
204 if (err) return reject(err)
205 return resolve(stats)
206 })
207 })
208 }
209
210 watchStats (path, opts) {
211 return this.drive.watchStats(path, opts)
212 }
213
214 mirror () {
215 return this.drive.mirror()
216 }
217
218 download (path, opts) {
219 var handle = null
220 const prom = new Promise((resolve, reject) => {
221 handle = this.drive.download(path, opts, err => {
222 if (err) return reject(err)
223 return resolve(handle)
224 })
225 })
226 prom.destroy = handle.destroy
227 prom.catch(() => {})
228 return prom
229 }
230
231 watch (name, onchange) {
232 return this.drive.watch(name, onchange)
233 }
234
235 mount (path, key, opts) {
236 return new Promise((resolve, reject) => {
237 this.drive.mount(path, key, opts, err => {
238 if (err) return reject(err)
239 return resolve(null)
240 })
241 })
242 }
243
244 extension (name, message) {
245 return this.drive.extension(name, message)
246 }
247
248 createMountStream (opts) {
249 return this.drive.createMountStream(opts)
250 }
251
252 unmount (path) {
253 return new Promise((resolve, reject) => {
254 this.drive.unmount(path, err => {
255 if (err) return reject(err)
256 return resolve(null)
257 })
258 })
259 }
260
261 symlink (target, linkname) {
262 return new Promise((resolve, reject) => {
263 this.drive.symlink(target, linkname, (err, st) => {
264 if (err) return reject(err)
265 return resolve(st)
266 })
267 })
268 }
269
270 readlink (name) {
271 return new Promise((resolve, reject) => {
272 this.drive.readlink(name, (err, linkname) => {
273 if (err) return reject(err)
274 return resolve(linkname)
275 })
276 })
277 }
278
279 getAllMounts (opts) {
280 return new Promise((resolve, reject) => {
281 this.drive.getAllMounts(opts, (err, allMounts) => {
282 if (err) return reject(err)
283 return resolve(allMounts)
284 })
285 })
286 }
287
288 setMetadata (path, key, value) {
289 return new Promise((resolve, reject) => {
290 this.drive.setMetadata(path, key, value, (err, st) => {
291 if (err) return reject(err)
292 return resolve(st)
293 })
294 })
295 }
296
297 removeMetadata (path, key) {
298 return new Promise((resolve, reject) => {
299 this.drive.removeMetadata(path, key, (err, st) => {
300 if (err) return reject(err)
301 return resolve(st)
302 })
303 })
304 }
305
306 copy (from, to) {
307 return new Promise((resolve, reject) => {
308 this.drive.copy(from, to, (err, st) => {
309 if (err) return reject(err)
310 return resolve(st)
311 })
312 })
313 }
314
315 createTag (name, version) {
316 return new Promise((resolve, reject) => {
317 this.drive.createTag(name, version, (err) => {
318 if (err) return reject(err)
319 return resolve(null)
320 })
321 })
322 }
323
324 getAllTags () {
325 return new Promise((resolve, reject) => {
326 this.drive.getAllTags((err, allTags) => {
327 if (err) return reject(err)
328 return resolve(allTags)
329 })
330 })
331 }
332
333 deleteTag (name) {
334 return new Promise((resolve, reject) => {
335 this.drive.deleteTag(name, (err) => {
336 if (err) return reject(err)
337 return resolve(null)
338 })
339 })
340
341 }
342
343 getTaggedVersion (name) {
344 return new Promise((resolve, reject) => {
345 this.drive.getTaggedVersion(name, (err, version) => {
346 if (err) return reject(err)
347 return resolve(version)
348 })
349 })
350 }
351}