25 lines
660 B
JavaScript
25 lines
660 B
JavaScript
|
|
var promisify = require('./_promisify.js')
|
|
|
|
module.exports = function (source, exports, methods) {
|
|
methods.forEach(function (name) {
|
|
if (deprecated(source, name)) return
|
|
if (typeof source[name] === 'function')
|
|
exports[name] = promisify(name, source[name])
|
|
})
|
|
|
|
// proxy the rest
|
|
Object.keys(source).forEach(function (name) {
|
|
if (deprecated(source, name)) return
|
|
if (exports[name]) return
|
|
exports[name] = source[name]
|
|
})
|
|
}
|
|
|
|
function deprecated(source, name) {
|
|
var desc = Object.getOwnPropertyDescriptor(source, name)
|
|
if (!desc || !desc.get) return false
|
|
if (desc.get.name === 'deprecated') return true
|
|
return false
|
|
}
|