Skip to content

Commit 03b2080

Browse files
committed
Universalify fs-extra methods
1 parent dba0cbb commit 03b2080

File tree

15 files changed

+111
-75
lines changed

15 files changed

+111
-75
lines changed

lib/__tests__/promise.test.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
'use strict'
2+
3+
/* eslint-env mocha */
4+
5+
const fse = require('..')
6+
7+
const methods = [
8+
'copy',
9+
'emptyDir',
10+
'ensureFile',
11+
'ensureDir',
12+
'ensureLink',
13+
'ensureSymlink',
14+
'mkdirs',
15+
'move',
16+
'readJson',
17+
'readJSON',
18+
'remove',
19+
'writeJson',
20+
'writeJSON'
21+
]
22+
23+
describe('promise support', () => {
24+
methods.forEach(method => {
25+
it(method, done => {
26+
fse[method]().catch(() => done())
27+
})
28+
})
29+
})

lib/copy/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
const u = require('universalify').fromCallback
12
module.exports = {
2-
copy: require('./copy')
3+
copy: u(require('./copy'))
34
}

lib/empty/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
'use strict'
22

3+
const u = require('universalify').fromCallback
34
const fs = require('fs')
45
const path = require('path')
56
const mkdir = require('../mkdirs')
67
const remove = require('../remove')
78

8-
function emptyDir (dir, callback) {
9+
const emptyDir = u(function emptyDir (dir, callback) {
910
callback = callback || function () {}
1011
fs.readdir(dir, (err, items) => {
1112
if (err) return mkdir.mkdirs(dir, callback)
@@ -23,7 +24,7 @@ function emptyDir (dir, callback) {
2324
})
2425
}
2526
})
26-
}
27+
})
2728

2829
function emptyDirSync (dir) {
2930
let items

lib/ensure/file.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const u = require('universalify').fromCallback
34
const path = require('path')
45
const fs = require('graceful-fs')
56
const mkdir = require('../mkdirs')
@@ -37,9 +38,6 @@ function createFileSync (file) {
3738
}
3839

3940
module.exports = {
40-
createFile,
41-
createFileSync,
42-
// alias
43-
ensureFile: createFile,
44-
ensureFileSync: createFileSync
41+
createFile: u(createFile),
42+
createFileSync
4543
}

lib/ensure/link.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const u = require('universalify').fromCallback
34
const path = require('path')
45
const fs = require('graceful-fs')
56
const mkdir = require('../mkdirs')
@@ -52,9 +53,6 @@ function createLinkSync (srcpath, dstpath, callback) {
5253
}
5354

5455
module.exports = {
55-
createLink,
56-
createLinkSync,
57-
// alias
58-
ensureLink: createLink,
59-
ensureLinkSync: createLinkSync
56+
createLink: u(createLink),
57+
createLinkSync
6058
}

lib/ensure/symlink.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const u = require('universalify').fromCallback
34
const path = require('path')
45
const fs = require('graceful-fs')
56
const _mkdirs = require('../mkdirs')
@@ -56,9 +57,6 @@ function createSymlinkSync (srcpath, dstpath, type, callback) {
5657
}
5758

5859
module.exports = {
59-
createSymlink,
60-
createSymlinkSync,
61-
// alias
62-
ensureSymlink: createSymlink,
63-
ensureSymlinkSync: createSymlinkSync
60+
createSymlink: u(createSymlink),
61+
createSymlinkSync
6462
}

lib/fs/index.js

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,37 @@ const u = require('universalify').fromCallback
44
const fs = require('graceful-fs')
55

66
const api = [
7-
'rename',
8-
'ftruncate',
9-
'chown',
10-
'fchown',
11-
'lchown',
7+
'access',
8+
'appendFile',
129
'chmod',
10+
'chown',
11+
'close',
1312
'fchmod',
14-
'stat',
15-
'lstat',
13+
'fchown',
14+
'fdatasync',
1615
'fstat',
16+
'fsync',
17+
'ftruncate',
18+
'futimes',
19+
'lchown',
1720
'link',
18-
'symlink',
21+
'lstat',
22+
'mkdir',
23+
'open',
24+
'read',
25+
'readFile',
26+
'readdir',
1927
'readlink',
2028
'realpath',
21-
'unlink',
29+
'rename',
2230
'rmdir',
23-
'mkdir',
24-
'readdir',
25-
'close',
26-
'open',
31+
'stat',
32+
'symlink',
33+
'truncate',
34+
'unlink',
2735
'utimes',
28-
'futimes',
29-
'fsync',
30-
'fdatasync',
3136
'write',
32-
'read',
33-
'readFile',
34-
'writeFile',
35-
'appendFile',
36-
'truncate'
37+
'writeFile'
3738
]
3839
// fs.mkdtemp() was added in Node.js v5.10.0, so check if it exists
3940
typeof fs.mkdtemp === 'function' && api.push('mkdtemp')
@@ -52,13 +53,9 @@ api.forEach(method => {
5253
// since we are a drop-in replacement for the native module
5354
exports.exists = function (filename, callback) {
5455
if (typeof callback === 'function') {
55-
return fs.exists(filename, function (exists) {
56-
callback(exists)
57-
})
56+
return fs.exists(filename, callback)
5857
}
59-
return new Promise(function (resolve) {
60-
return fs.exists(filename, function (exists) {
61-
resolve(exists)
62-
})
58+
return new Promise(resolve => {
59+
return fs.exists(filename, resolve)
6360
})
6461
}

lib/json/__tests__/output-json.test.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,14 @@ describe('json', () => {
3434
})
3535
})
3636

37+
it('should support Promises', () => {
38+
const file = path.join(TEST_DIR, 'this-dir', 'prob-does-not', 'exist', 'file.json')
39+
assert(!fs.existsSync(file))
40+
41+
const data = {name: 'JP'}
42+
return outputJson(file, data)
43+
})
44+
3745
describe('> when an option is passed, like JSON replacer', () => {
3846
it('should pass the option along to jsonfile module', done => {
3947
const file = path.join(TEST_DIR, 'this-dir', 'does-not', 'exist', 'really', 'file.json')

lib/json/index.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
'use strict'
22

3+
const u = require('universalify').fromCallback
34
const jsonFile = require('./jsonfile')
45

56
jsonFile.outputJsonSync = require('./output-json-sync')
6-
jsonFile.outputJson = require('./output-json')
7+
jsonFile.outputJson = u(require('./output-json'))
78
// aliases
8-
jsonFile.outputJSONSync = require('./output-json-sync')
9-
jsonFile.outputJSON = require('./output-json')
9+
jsonFile.outputJSONSync = jsonFile.outputJSONSync
10+
jsonFile.outputJSON = jsonFile.outputJson
11+
jsonFile.writeJSON = jsonFile.writeJson
12+
jsonFile.writeJSONSync = jsonFile.writeJsonSync
13+
jsonFile.readJSON = jsonFile.readJson
14+
jsonFile.readJSONSync = jsonFile.readJsonSync
1015

1116
module.exports = jsonFile

lib/json/jsonfile.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
'use strict'
22

3+
const u = require('universalify').fromCallback
34
const jsonFile = require('jsonfile')
45

56
module.exports = {
67
// jsonfile exports
7-
readJson: jsonFile.readFile,
8-
readJSON: jsonFile.readFile,
8+
readJson: u(jsonFile.readFile),
99
readJsonSync: jsonFile.readFileSync,
10-
readJSONSync: jsonFile.readFileSync,
11-
writeJson: jsonFile.writeFile,
12-
writeJSON: jsonFile.writeFile,
13-
writeJsonSync: jsonFile.writeFileSync,
14-
writeJSONSync: jsonFile.writeFileSync
10+
writeJson: u(jsonFile.writeFile),
11+
writeJsonSync: jsonFile.writeFileSync
1512
}

0 commit comments

Comments
 (0)