Submit
Path:
~
/
/
proc
/
self
/
root
/
usr
/
lib
/
node_modules
/
npm
/
node_modules
/
util-promisify
/
File Content:
index.js
'use strict'; const ObjectGetOwnPropertyDescriptors = require('object.getownpropertydescriptors'); const util = require('util'); const timers = require('timers'); const kCustomPromisifiedSymbol = util.promisify && util.promisify.custom || Symbol('util.promisify.custom'); //const kCustomPromisifyArgsSymbol = Symbol('customPromisifyArgs'); function promisify(orig) { if (typeof orig !== 'function') { //const errors = require('internal/errors'); //throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'original', 'function'); var err = TypeError(`The "original" argument must be of type function`); err.code = 'ERR_INVALID_ARG_TYPE'; err.name = `TypeError [${err.code}]`; throw err } if (orig === timers.setTimeout || orig === timers.setImmediate) { const _orig = orig orig = function () { var args = []; for (var i = 0; i < arguments.length; i ++) args.push(arguments[i]); const _cb = args.pop() const cb = function () { var args = []; for (var i = 0; i < arguments.length; i ++) args.push(arguments[i]); _cb.apply(null, [null].concat(args)) } _orig.apply(timers, [cb].concat(args)) } } if (orig[kCustomPromisifiedSymbol]) { const fn = orig[kCustomPromisifiedSymbol]; if (typeof fn !== 'function') { throw new TypeError('The [util.promisify.custom] property must be ' + 'a function'); } Object.defineProperty(fn, kCustomPromisifiedSymbol, { value: fn, enumerable: false, writable: false, configurable: true }); return fn; } // Names to create an object from in case the callback receives multiple // arguments, e.g. ['stdout', 'stderr'] for child_process.exec. //const argumentNames = orig[kCustomPromisifyArgsSymbol]; function fn() { var args = []; for (var i = 0; i < arguments.length; i ++) args.push(arguments[i]); let resolve, reject; const promise = new Promise(function (_resolve, _reject) { resolve = _resolve; reject = _reject; }); try { orig.apply(this, args.concat(function (err) { var values = []; for (var i = 1; i < arguments.length; i++) values.push(arguments[i]); 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); } return promise; } Object.setPrototypeOf(fn, Object.getPrototypeOf(orig)); Object.defineProperty(fn, kCustomPromisifiedSymbol, { value: fn, enumerable: false, writable: false, configurable: true }); return Object.defineProperties(fn, ObjectGetOwnPropertyDescriptors(orig)); } promisify.custom = kCustomPromisifiedSymbol; module.exports = promisify;
Edit
Rename
Chmod
Delete
FILE
FOLDER
Name
Size
Permission
Action
.npmignore
13 bytes
0644
.travis.yml
69 bytes
0644
LICENSE
54027 bytes
0644
README.md
1086 bytes
0644
index.js
2983 bytes
0644
package.json
1319 bytes
0644
N4ST4R_ID | Naxtarrr