diff --git a/lib/__tests__/promise.test.js b/lib/__tests__/promise.test.js new file mode 100644 index 00000000..c1b139f3 --- /dev/null +++ b/lib/__tests__/promise.test.js @@ -0,0 +1,32 @@ +'use strict' + +/* eslint-env mocha */ + +const fse = require('..') + +const methods = [ + 'copy', + 'emptyDir', + 'ensureFile', + 'ensureDir', + 'ensureLink', + 'ensureSymlink', + 'mkdirs', + 'move', + 'outputFile', + 'outputJson', + 'outputJSON', + 'readJson', + 'readJSON', + 'remove', + 'writeJson', + 'writeJSON' +] + +describe('promise support', () => { + methods.forEach(method => { + it(method, done => { + fse[method]().catch(() => done()) + }) + }) +}) diff --git a/lib/copy/index.js b/lib/copy/index.js index 3e090161..a6a51da6 100644 --- a/lib/copy/index.js +++ b/lib/copy/index.js @@ -1,3 +1,4 @@ +const u = require('universalify').fromCallback module.exports = { - copy: require('./copy') + copy: u(require('./copy')) } diff --git a/lib/empty/index.js b/lib/empty/index.js index 180c3f79..db05c171 100644 --- a/lib/empty/index.js +++ b/lib/empty/index.js @@ -1,11 +1,12 @@ 'use strict' +const u = require('universalify').fromCallback const fs = require('fs') const path = require('path') const mkdir = require('../mkdirs') const remove = require('../remove') -function emptyDir (dir, callback) { +const emptyDir = u(function emptyDir (dir, callback) { callback = callback || function () {} fs.readdir(dir, (err, items) => { if (err) return mkdir.mkdirs(dir, callback) @@ -23,7 +24,7 @@ function emptyDir (dir, callback) { }) } }) -} +}) function emptyDirSync (dir) { let items diff --git a/lib/ensure/file.js b/lib/ensure/file.js index 031d1303..c562bc86 100644 --- a/lib/ensure/file.js +++ b/lib/ensure/file.js @@ -1,5 +1,6 @@ 'use strict' +const u = require('universalify').fromCallback const path = require('path') const fs = require('graceful-fs') const mkdir = require('../mkdirs') @@ -37,9 +38,6 @@ function createFileSync (file) { } module.exports = { - createFile, - createFileSync, - // alias - ensureFile: createFile, - ensureFileSync: createFileSync + createFile: u(createFile), + createFileSync } diff --git a/lib/ensure/link.js b/lib/ensure/link.js index 8284fae3..12796383 100644 --- a/lib/ensure/link.js +++ b/lib/ensure/link.js @@ -1,5 +1,6 @@ 'use strict' +const u = require('universalify').fromCallback const path = require('path') const fs = require('graceful-fs') const mkdir = require('../mkdirs') @@ -52,9 +53,6 @@ function createLinkSync (srcpath, dstpath, callback) { } module.exports = { - createLink, - createLinkSync, - // alias - ensureLink: createLink, - ensureLinkSync: createLinkSync + createLink: u(createLink), + createLinkSync } diff --git a/lib/ensure/symlink.js b/lib/ensure/symlink.js index 2ea9e062..d879f514 100644 --- a/lib/ensure/symlink.js +++ b/lib/ensure/symlink.js @@ -1,5 +1,6 @@ 'use strict' +const u = require('universalify').fromCallback const path = require('path') const fs = require('graceful-fs') const _mkdirs = require('../mkdirs') @@ -56,9 +57,6 @@ function createSymlinkSync (srcpath, dstpath, type, callback) { } module.exports = { - createSymlink, - createSymlinkSync, - // alias - ensureSymlink: createSymlink, - ensureSymlinkSync: createSymlinkSync + createSymlink: u(createSymlink), + createSymlinkSync } diff --git a/lib/fs/index.js b/lib/fs/index.js index 85d96a82..e20ae762 100644 --- a/lib/fs/index.js +++ b/lib/fs/index.js @@ -4,36 +4,37 @@ const u = require('universalify').fromCallback const fs = require('graceful-fs') const api = [ - 'rename', - 'ftruncate', - 'chown', - 'fchown', - 'lchown', + 'access', + 'appendFile', 'chmod', + 'chown', + 'close', 'fchmod', - 'stat', - 'lstat', + 'fchown', + 'fdatasync', 'fstat', + 'fsync', + 'ftruncate', + 'futimes', + 'lchown', 'link', - 'symlink', + 'lstat', + 'mkdir', + 'open', + 'read', + 'readFile', + 'readdir', 'readlink', 'realpath', - 'unlink', + 'rename', 'rmdir', - 'mkdir', - 'readdir', - 'close', - 'open', + 'stat', + 'symlink', + 'truncate', + 'unlink', 'utimes', - 'futimes', - 'fsync', - 'fdatasync', 'write', - 'read', - 'readFile', - 'writeFile', - 'appendFile', - 'truncate' + 'writeFile' ] // fs.mkdtemp() was added in Node.js v5.10.0, so check if it exists typeof fs.mkdtemp === 'function' && api.push('mkdtemp') @@ -52,13 +53,9 @@ api.forEach(method => { // since we are a drop-in replacement for the native module exports.exists = function (filename, callback) { if (typeof callback === 'function') { - return fs.exists(filename, function (exists) { - callback(exists) - }) + return fs.exists(filename, callback) } - return new Promise(function (resolve) { - return fs.exists(filename, function (exists) { - resolve(exists) - }) + return new Promise(resolve => { + return fs.exists(filename, resolve) }) } diff --git a/lib/json/index.js b/lib/json/index.js index 42293113..717d48f4 100644 --- a/lib/json/index.js +++ b/lib/json/index.js @@ -1,11 +1,16 @@ 'use strict' +const u = require('universalify').fromCallback const jsonFile = require('./jsonfile') jsonFile.outputJsonSync = require('./output-json-sync') -jsonFile.outputJson = require('./output-json') +jsonFile.outputJson = u(require('./output-json')) // aliases -jsonFile.outputJSONSync = require('./output-json-sync') -jsonFile.outputJSON = require('./output-json') +jsonFile.outputJSONSync = jsonFile.outputJSONSync +jsonFile.outputJSON = jsonFile.outputJson +jsonFile.writeJSON = jsonFile.writeJson +jsonFile.writeJSONSync = jsonFile.writeJsonSync +jsonFile.readJSON = jsonFile.readJson +jsonFile.readJSONSync = jsonFile.readJsonSync module.exports = jsonFile diff --git a/lib/json/jsonfile.js b/lib/json/jsonfile.js index ad235eba..59cdb3e4 100644 --- a/lib/json/jsonfile.js +++ b/lib/json/jsonfile.js @@ -1,15 +1,12 @@ 'use strict' +const u = require('universalify').fromCallback const jsonFile = require('jsonfile') module.exports = { // jsonfile exports - readJson: jsonFile.readFile, - readJSON: jsonFile.readFile, + readJson: u(jsonFile.readFile), readJsonSync: jsonFile.readFileSync, - readJSONSync: jsonFile.readFileSync, - writeJson: jsonFile.writeFile, - writeJSON: jsonFile.writeFile, - writeJsonSync: jsonFile.writeFileSync, - writeJSONSync: jsonFile.writeFileSync + writeJson: u(jsonFile.writeFile), + writeJsonSync: jsonFile.writeFileSync } diff --git a/lib/mkdirs/index.js b/lib/mkdirs/index.js index 2611217c..29975c5b 100644 --- a/lib/mkdirs/index.js +++ b/lib/mkdirs/index.js @@ -1,9 +1,14 @@ +'use strict' +const u = require('universalify').fromCallback +const mkdirs = u(require('./mkdirs')) +const mkdirsSync = require('./mkdirs-sync') + module.exports = { - mkdirs: require('./mkdirs'), - mkdirsSync: require('./mkdirs-sync'), + mkdirs: mkdirs, + mkdirsSync: mkdirsSync, // alias - mkdirp: require('./mkdirs'), - mkdirpSync: require('./mkdirs-sync'), - ensureDir: require('./mkdirs'), - ensureDirSync: require('./mkdirs-sync') + mkdirp: mkdirs, + mkdirpSync: mkdirsSync, + ensureDir: mkdirs, + ensureDirSync: mkdirsSync } diff --git a/lib/move/index.js b/lib/move/index.js index 6bbdaf48..c44e66be 100644 --- a/lib/move/index.js +++ b/lib/move/index.js @@ -6,6 +6,7 @@ // this needs a cleanup +const u = require('universalify').fromCallback const fs = require('graceful-fs') const ncp = require('../copy/ncp') const path = require('path') @@ -157,5 +158,5 @@ function moveDirAcrossDevice (source, dest, overwrite, callback) { } module.exports = { - move + move: u(move) } diff --git a/lib/output/index.js b/lib/output/index.js index f4eb9bb6..14187478 100644 --- a/lib/output/index.js +++ b/lib/output/index.js @@ -1,5 +1,6 @@ 'use strict' +const u = require('universalify').fromCallback const fs = require('graceful-fs') const path = require('path') const mkdir = require('../mkdirs') @@ -32,6 +33,6 @@ function outputFileSync (file, data, encoding) { } module.exports = { - outputFile, + outputFile: u(outputFile), outputFileSync } diff --git a/lib/remove/index.js b/lib/remove/index.js index 0e3b5dd1..cee53400 100644 --- a/lib/remove/index.js +++ b/lib/remove/index.js @@ -1,17 +1,9 @@ 'use strict' +const u = require('universalify').fromCallback const rimraf = require('./rimraf') -function removeSync (dir) { - return rimraf.sync(dir, {disableGlob: true}) -} - -function remove (dir, callback) { - const options = {disableGlob: true} - return callback ? rimraf(dir, options, callback) : rimraf(dir, options, function () {}) -} - module.exports = { - remove, - removeSync + remove: u(rimraf), + removeSync: rimraf.sync } diff --git a/package.json b/package.json index d4894948..e7c00773 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,8 @@ "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0" + "jsonfile": "^2.1.0", + "universalify": "0.0.1" }, "devDependencies": { "coveralls": "^2.11.2",