UNPKG

1.74 kBJavaScriptView Raw
1'use strict'
2
3var mzfs = require('mz/fs')
4var fsExtra = require('fs-extra')
5var Promise = require('any-promise')
6var thenifyAll = require('thenify-all')
7var slice = Array.prototype.slice
8
9// thenify-all for all fs-extra that make sense to be promises
10var fsExtraKeys = [
11 'copy',
12 'emptyDir',
13 'ensureFile',
14 'ensureDir',
15 'ensureLink',
16 'ensureSymlink',
17 'mkdirs',
18 'move',
19 'outputFile',
20 'outputJson',
21 'readJson',
22 'remove',
23 'writeJson',
24 // aliases
25 'createFile',
26 'createLink',
27 'createSymlink',
28 'emptydir',
29 'mkdirp',
30 'readJSON',
31 'outputJSON',
32 'writeJSON'
33]
34thenifyAll.withCallback(fsExtra, exports, fsExtraKeys)
35
36// Delegate all normal fs to mz/fs
37// (this overwrites anything proxies directly above)
38var mzKeys = [
39 'rename',
40 'ftruncate',
41 'chown',
42 'fchown',
43 'lchown',
44 'chmod',
45 'fchmod',
46 'stat',
47 'lstat',
48 'fstat',
49 'link',
50 'symlink',
51 'readlink',
52 'realpath',
53 'unlink',
54 'rmdir',
55 'mkdir',
56 'readdir',
57 'close',
58 'open',
59 'utimes',
60 'futimes',
61 'fsync',
62 'write',
63 'read',
64 'readFile',
65 'writeFile',
66 'appendFile',
67 'access',
68 'exists'
69]
70mzKeys.forEach(function(key){
71 exports[key] = mzfs[key]
72})
73
74
75// Resolve fs-extra streams as Promise for array
76var streamKeys = [
77 'walk'
78]
79
80streamKeys.forEach(function(key){
81 exports[key] = function(){
82 var func = fsExtra[key]
83 var args = slice.call(arguments)
84
85 return new Promise(function(resolve, reject){
86 var stream = func.apply(fsExtra, args)
87 var items = []
88
89 stream
90 .on('data', function(item){
91 items.push(item)
92 })
93 .on('end', function(){
94 resolve(items)
95 })
96 .on('error', function(error){
97 reject(error)
98 })
99 })
100 }
101})