UNPKG

v-daemon

Version:
109 lines (87 loc) 8.62 kB
/** * Define subject for * @function subjectFor * @param {string} filename */ 'use strict'; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _require = require('child_process'), execFile = _require.execFile; var path = require('path'); var debug = require('debug')('v:daemon:subject'); function parseJSON(str) { try { return JSON.parse(str); } catch (e) { return str; } } /** @lends subjectFor */ function subjectFor(filename) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var _options$verbose = options.verbose, verbose = _options$verbose === undefined ? false : _options$verbose, subject = options.subject; var target = {}; return new Proxy(target, { get: function get(target, name) { var isMethod = !['constructor', 'then', 'catch', 'inspect', 'valueOf'].includes(name); if (!isMethod) { return target[name]; } if ((typeof name === 'undefined' ? 'undefined' : (0, _typeof3.default)(name)) === 'symbol') { return target[name]; } var verb = String(name).trim(); filename = path.resolve(filename); return function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: return _context.abrupt('return', new _promise2.default(function (resolve, reject) { execFile(filename, [verb].concat((0, _toConsumableArray3.default)(args)), function (err, stdout, stderr) { debug('exec', filename, { subject: subject, verb: verb, args: args }); if (verbose) { console.log('[v-daemon] Call "' + subject + '.' + verb + '"'); } if (stderr || err) { var message = String(stderr || stdout).trim() || 'Call failed : "' + name + '"'; reject(new Error(message)); } else { var result = parseJSON(String(stdout).trim()); resolve(result); } }); })); case 1: case 'end': return _context.stop(); } } }, _callee, this); })); function execFileProxy() { return _ref.apply(this, arguments); } return execFileProxy; }(); } }); } module.exports = subjectFor; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN1YmplY3RGb3IuanMiXSwibmFtZXMiOlsicmVxdWlyZSIsImV4ZWNGaWxlIiwicGF0aCIsImRlYnVnIiwicGFyc2VKU09OIiwic3RyIiwiSlNPTiIsInBhcnNlIiwiZSIsInN1YmplY3RGb3IiLCJmaWxlbmFtZSIsIm9wdGlvbnMiLCJ2ZXJib3NlIiwic3ViamVjdCIsInRhcmdldCIsIlByb3h5IiwiZ2V0IiwibmFtZSIsImlzTWV0aG9kIiwiaW5jbHVkZXMiLCJ2ZXJiIiwiU3RyaW5nIiwidHJpbSIsInJlc29sdmUiLCJhcmdzIiwicmVqZWN0IiwiZXJyIiwic3Rkb3V0Iiwic3RkZXJyIiwiY29uc29sZSIsImxvZyIsIm1lc3NhZ2UiLCJFcnJvciIsInJlc3VsdCIsImV4ZWNGaWxlUHJveHkiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFLQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VBRW1CQSxRQUFRLGVBQVIsQztJQUFaQyxRLFlBQUFBLFE7O0FBQ1AsSUFBTUMsT0FBT0YsUUFBUSxNQUFSLENBQWI7QUFDQSxJQUFNRyxRQUFRSCxRQUFRLE9BQVIsRUFBaUIsa0JBQWpCLENBQWQ7O0FBRUEsU0FBU0ksU0FBVCxDQUFvQkMsR0FBcEIsRUFBeUI7QUFDdkIsTUFBSTtBQUNGLFdBQU9DLEtBQUtDLEtBQUwsQ0FBV0YsR0FBWCxDQUFQO0FBQ0QsR0FGRCxDQUVFLE9BQU9HLENBQVAsRUFBVTtBQUNWLFdBQU9ILEdBQVA7QUFDRDtBQUNGOztBQUVEO0FBQ0EsU0FBU0ksVUFBVCxDQUFxQkMsUUFBckIsRUFBNkM7QUFBQSxNQUFkQyxPQUFjLHVFQUFKLEVBQUk7QUFBQSx5QkFJdkNBLE9BSnVDLENBRXpDQyxPQUZ5QztBQUFBLE1BRXpDQSxPQUZ5QyxvQ0FFL0IsS0FGK0I7QUFBQSxNQUd6Q0MsT0FIeUMsR0FJdkNGLE9BSnVDLENBR3pDRSxPQUh5Qzs7O0FBTTNDLE1BQU1DLFNBQVMsRUFBZjtBQUNBLFNBQU8sSUFBSUMsS0FBSixDQUFVRCxNQUFWLEVBQWtCO0FBQ3ZCRSxPQUR1QixlQUNsQkYsTUFEa0IsRUFDVkcsSUFEVSxFQUNKO0FBQ2pCLFVBQU1DLFdBQVcsQ0FBQyxDQUNoQixhQURnQixFQUNELE1BREMsRUFDTyxPQURQLEVBQ2dCLFNBRGhCLEVBQzJCLFNBRDNCLEVBRWhCQyxRQUZnQixDQUVQRixJQUZPLENBQWxCO0FBR0EsVUFBSSxDQUFDQyxRQUFMLEVBQWU7QUFDYixlQUFPSixPQUFPRyxJQUFQLENBQVA7QUFDRDtBQUNELFVBQUksUUFBT0EsSUFBUCx1REFBT0EsSUFBUCxPQUFnQixRQUFwQixFQUE4QjtBQUM1QixlQUFPSCxPQUFPRyxJQUFQLENBQVA7QUFDRDtBQUNELFVBQU1HLE9BQU9DLE9BQU9KLElBQVAsRUFBYUssSUFBYixFQUFiO0FBQ0FaLGlCQUFXUixLQUFLcUIsT0FBTCxDQUFhYixRQUFiLENBQVg7QUFDQTtBQUFBLDRGQUFPO0FBQUEsNENBQWlDYyxJQUFqQztBQUFpQ0EsZ0JBQWpDO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtREFDRSxzQkFBWSxVQUFDRCxPQUFELEVBQVVFLE1BQVYsRUFBcUI7QUFDdEN4Qiw2QkFBU1MsUUFBVCxHQUFvQlUsSUFBcEIsMENBQTZCSSxJQUE3QixJQUFvQyxVQUFDRSxHQUFELEVBQU1DLE1BQU4sRUFBY0MsTUFBZCxFQUF5QjtBQUMzRHpCLDRCQUFNLE1BQU4sRUFBY08sUUFBZCxFQUF3QixFQUFDRyxnQkFBRCxFQUFVTyxVQUFWLEVBQWdCSSxVQUFoQixFQUF4QjtBQUNBLDBCQUFJWixPQUFKLEVBQWE7QUFDWGlCLGdDQUFRQyxHQUFSLHVCQUFnQ2pCLE9BQWhDLFNBQTJDTyxJQUEzQztBQUNEO0FBQ0QsMEJBQUlRLFVBQVVGLEdBQWQsRUFBbUI7QUFDakIsNEJBQU1LLFVBQVVWLE9BQU9PLFVBQVVELE1BQWpCLEVBQXlCTCxJQUF6QiwwQkFBcURMLElBQXJELE1BQWhCO0FBQ0FRLCtCQUFPLElBQUlPLEtBQUosQ0FBVUQsT0FBVixDQUFQO0FBQ0QsdUJBSEQsTUFHTztBQUNMLDRCQUFNRSxTQUFTN0IsVUFBVWlCLE9BQU9NLE1BQVAsRUFBZUwsSUFBZixFQUFWLENBQWY7QUFDQUMsZ0NBQVFVLE1BQVI7QUFDRDtBQUNGLHFCQVpEO0FBYUQsbUJBZE0sQ0FERjs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFQOztBQUFBLGlCQUFzQkMsYUFBdEI7QUFBQTtBQUFBOztBQUFBLGVBQXNCQSxhQUF0QjtBQUFBO0FBaUJEO0FBOUJzQixHQUFsQixDQUFQO0FBZ0NEOztBQUVEQyxPQUFPQyxPQUFQLEdBQWlCM0IsVUFBakIiLCJmaWxlIjoic3ViamVjdEZvci5qcyIsInNvdXJjZVJvb3QiOiJsaWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlZmluZSBzdWJqZWN0IGZvclxuICogQGZ1bmN0aW9uIHN1YmplY3RGb3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlbmFtZVxuICovXG4ndXNlIHN0cmljdCdcblxuY29uc3Qge2V4ZWNGaWxlfSA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKVxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuY29uc3QgZGVidWcgPSByZXF1aXJlKCdkZWJ1ZycpKCd2OmRhZW1vbjpzdWJqZWN0JylcblxuZnVuY3Rpb24gcGFyc2VKU09OIChzdHIpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzdHIpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gc3RyXG4gIH1cbn1cblxuLyoqIEBsZW5kcyBzdWJqZWN0Rm9yICovXG5mdW5jdGlvbiBzdWJqZWN0Rm9yIChmaWxlbmFtZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB2ZXJib3NlID0gZmFsc2UsXG4gICAgc3ViamVjdFxuICB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IHRhcmdldCA9IHt9XG4gIHJldHVybiBuZXcgUHJveHkodGFyZ2V0LCB7XG4gICAgZ2V0ICh0YXJnZXQsIG5hbWUpIHtcbiAgICAgIGNvbnN0IGlzTWV0aG9kID0gIVtcbiAgICAgICAgJ2NvbnN0cnVjdG9yJywgJ3RoZW4nLCAnY2F0Y2gnLCAnaW5zcGVjdCcsICd2YWx1ZU9mJ1xuICAgICAgXS5pbmNsdWRlcyhuYW1lKVxuICAgICAgaWYgKCFpc01ldGhvZCkge1xuICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdXG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIG5hbWUgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHZlcmIgPSBTdHJpbmcobmFtZSkudHJpbSgpXG4gICAgICBmaWxlbmFtZSA9IHBhdGgucmVzb2x2ZShmaWxlbmFtZSlcbiAgICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiBleGVjRmlsZVByb3h5ICguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgZXhlY0ZpbGUoZmlsZW5hbWUsIFt2ZXJiLCAuLi5hcmdzXSwgKGVyciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcbiAgICAgICAgICAgIGRlYnVnKCdleGVjJywgZmlsZW5hbWUsIHtzdWJqZWN0LCB2ZXJiLCBhcmdzfSlcbiAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBbdi1kYWVtb25dIENhbGwgXCIke3N1YmplY3R9LiR7dmVyYn1cImApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RkZXJyIHx8IGVycikge1xuICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gU3RyaW5nKHN0ZGVyciB8fCBzdGRvdXQpLnRyaW0oKSB8fCBgQ2FsbCBmYWlsZWQgOiBcIiR7bmFtZX1cImBcbiAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihtZXNzYWdlKSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlSlNPTihTdHJpbmcoc3Rkb3V0KS50cmltKCkpXG4gICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN1YmplY3RGb3IiXX0=