1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00
next.js/server/lib/promisify.js
Samatar 56998a6193 Remove mz-fs and glob-promise (#4026)
* Remove mz and add promisify util

* Remove glob-promise and promisify glob

* Use access instead of exists

* Use promisify for access
2018-03-30 20:29:42 +05:30

27 lines
870 B
JavaScript

const kCustomPromisifyArgsSymbol = Symbol('customPromisifyArgs')
module.exports = function promisify (original) {
// Names to create an object from in case the callback receives multiple
// arguments, e.g. ['stdout', 'stderr'] for child_process.exec.
const argumentNames = original[kCustomPromisifyArgsSymbol]
return function fn (...args) {
return new Promise((resolve, reject) => {
try {
original.call(this, ...args, (err, ...values) => {
if (err) {
reject(err)
} else if (argumentNames !== undefined && values.length > 1) {
const obj = {}
for (var i = 0; i < argumentNames.length; i++) { obj[argumentNames[i]] = values[i] }
resolve(obj)
} else {
resolve(values[0])
}
})
} catch (err) {
reject(err)
}
})
}
}