Sha256: a4fe100eb176ab95328881fe9490ac91e72d3d2992ac7fb2b9562d264156a8a3
Contents?: true
Size: 967 Bytes
Versions: 40
Compression:
Stored size: 967 Bytes
Contents
'use strict' const { promisify } = require('util') const handler = { get: function (target, prop, receiver) { if (typeof target[prop] !== 'function') { return target[prop] } if (target[prop][promisify.custom]) { return function () { return Reflect.get(target, prop, receiver)[promisify.custom].apply(target, arguments) } } return function () { return new Promise((resolve, reject) => { Reflect.get(target, prop, receiver).apply(target, [...arguments, function (err, result) { if (err) { return reject(err) } resolve(result) }]) }) } } } module.exports = function (thingToPromisify) { if (typeof thingToPromisify === 'function') { return promisify(thingToPromisify) } if (typeof thingToPromisify === 'object') { return new Proxy(thingToPromisify, handler) } throw new TypeError('Can only promisify functions or objects') }
Version data entries
40 entries across 40 versions & 2 rubygems