UNPKG

@tdb/web

Version:

Common condiguration for serving a web-site and testing web-based UI components.

44 lines (35 loc) 1.53 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise")); var _symbol = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/symbol")); var kCustomPromisifyArgsSymbol = (0, _symbol.default)('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. var argumentNames = original[kCustomPromisifyArgsSymbol]; return function fn() { var _this = this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return new _promise.default(function (resolve, reject) { try { original.call.apply(original, [_this].concat(args, [function (err) { if (err) { reject(err); } else if (argumentNames !== undefined && (arguments.length <= 1 ? 0 : arguments.length - 1) > 1) { var obj = {}; for (var i = 0; i < argumentNames.length; i++) { obj[argumentNames[i]] = i + 1 < 1 || arguments.length <= i + 1 ? undefined : arguments[i + 1]; } resolve(obj); } else { resolve(arguments.length <= 1 ? undefined : arguments[1]); } }])); } catch (err) { reject(err); } }); }; };