coz-bud-loader
Version:
Bud loader for coz.
174 lines (139 loc) • 9.21 kB
JavaScript
/**
* Require a module.
* @memberof module:coz-bud-loader/lib
* @function requireBud
* @param {Bud} bud - Bud to require.
* @returns {Promise}
*/
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var fs = require('fs');
var path = require('path');
/** @lends requireBud */
function requireBud(_x) {
return _requireBud.apply(this, arguments);
}
function _requireBud() {
_requireBud = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(buds) {
var results, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, _ret;
return _regenerator.default.wrap(function _callee$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
buds = [].concat(buds || []);
results = [];
_iteratorNormalCompletion = true;
_didIteratorError = false;
_iteratorError = undefined;
_context2.prev = 5;
_loop =
/*#__PURE__*/
_regenerator.default.mark(function _loop() {
var bud, src, filename, exists, name;
return _regenerator.default.wrap(function _loop$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
bud = _step.value;
src = bud.src || bud;
if (!((0, _typeof2.default)(src) === 'object')) {
_context.next = 5;
break;
}
// Seems already required.
results.push(bud);
return _context.abrupt("return", "continue");
case 5:
filename = path.resolve(src);
_context.next = 8;
return new Promise(function (resolve) {
return fs.exists(filename, function (exists) {
return resolve(exists);
});
});
case 8:
exists = _context.sent;
name = exists ? filename : src;
_context.prev = 10;
bud = require(name);
_context.next = 17;
break;
case 14:
_context.prev = 14;
_context.t0 = _context["catch"](10);
throw new Error("Failed to load ".concat(name, ": ").concat(_context.t0));
case 17:
results.push([].concat(bud).map(function (bud) {
bud.src = path.resolve(src);
return bud;
}));
case 18:
case "end":
return _context.stop();
}
}
}, _loop, null, [[10, 14]]);
});
_iterator = buds[Symbol.iterator]();
case 8:
if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
_context2.next = 16;
break;
}
return _context2.delegateYield(_loop(), "t0", 10);
case 10:
_ret = _context2.t0;
if (!(_ret === "continue")) {
_context2.next = 13;
break;
}
return _context2.abrupt("continue", 13);
case 13:
_iteratorNormalCompletion = true;
_context2.next = 8;
break;
case 16:
_context2.next = 22;
break;
case 18:
_context2.prev = 18;
_context2.t1 = _context2["catch"](5);
_didIteratorError = true;
_iteratorError = _context2.t1;
case 22:
_context2.prev = 22;
_context2.prev = 23;
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
case 25:
_context2.prev = 25;
if (!_didIteratorError) {
_context2.next = 28;
break;
}
throw _iteratorError;
case 28:
return _context2.finish(25);
case 29:
return _context2.finish(22);
case 30:
return _context2.abrupt("return", results.reduce(function (a, b) {
return [].concat(a, b);
}, []));
case 31:
case "end":
return _context2.stop();
}
}
}, _callee, null, [[5, 18, 22, 30], [23,, 25, 29]]);
}));
return _requireBud.apply(this, arguments);
}
module.exports = requireBud;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlcXVpcmVfYnVkLmpzIl0sIm5hbWVzIjpbImZzIiwicmVxdWlyZSIsInBhdGgiLCJyZXF1aXJlQnVkIiwiYnVkcyIsImNvbmNhdCIsInJlc3VsdHMiLCJidWQiLCJzcmMiLCJwdXNoIiwiZmlsZW5hbWUiLCJyZXNvbHZlIiwiUHJvbWlzZSIsImV4aXN0cyIsIm5hbWUiLCJFcnJvciIsIm1hcCIsInJlZHVjZSIsImEiLCJiIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7QUFRQTs7Ozs7Ozs7OztBQUVBLElBQU1BLEVBQUUsR0FBR0MsT0FBTyxDQUFDLElBQUQsQ0FBbEI7O0FBQ0EsSUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjtBQUVBOzs7U0FDZUUsVTs7Ozs7Ozs0QkFBZixpQkFBMEJDLElBQTFCO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDRUEsWUFBQUEsSUFBSSxHQUFHLEdBQUdDLE1BQUgsQ0FBVUQsSUFBSSxJQUFJLEVBQWxCLENBQVA7QUFFSUUsWUFBQUEsT0FITixHQUdnQixFQUhoQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlXQyxzQkFBQUEsR0FKWDtBQUtRQyxzQkFBQUEsR0FMUixHQUtjRCxHQUFHLENBQUNDLEdBQUosSUFBV0QsR0FMekI7O0FBQUEsNEJBTVEsc0JBQU9DLEdBQVAsTUFBZSxRQU52QjtBQUFBO0FBQUE7QUFBQTs7QUFPTTtBQUNBRixzQkFBQUEsT0FBTyxDQUFDRyxJQUFSLENBQWFGLEdBQWI7QUFSTjs7QUFBQTtBQVdRRyxzQkFBQUEsUUFYUixHQVdtQlIsSUFBSSxDQUFDUyxPQUFMLENBQWFILEdBQWIsQ0FYbkI7QUFBQTtBQUFBLDZCQVl1QixJQUFJSSxPQUFKLENBQVksVUFBQ0QsT0FBRDtBQUFBLCtCQUM3QlgsRUFBRSxDQUFDYSxNQUFILENBQVVILFFBQVYsRUFBb0IsVUFBQ0csTUFBRDtBQUFBLGlDQUFZRixPQUFPLENBQUNFLE1BQUQsQ0FBbkI7QUFBQSx5QkFBcEIsQ0FENkI7QUFBQSx1QkFBWixDQVp2Qjs7QUFBQTtBQVlRQSxzQkFBQUEsTUFaUjtBQWVRQyxzQkFBQUEsSUFmUixHQWVlRCxNQUFNLEdBQUdILFFBQUgsR0FBY0YsR0FmbkM7QUFBQTtBQWlCTUQsc0JBQUFBLEdBQUcsR0FBR04sT0FBTyxDQUFDYSxJQUFELENBQWI7QUFqQk47QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQSw0QkFtQlksSUFBSUMsS0FBSiwwQkFBNEJELElBQTVCLDRCQW5CWjs7QUFBQTtBQXFCSVIsc0JBQUFBLE9BQU8sQ0FBQ0csSUFBUixDQUNFLEdBQUdKLE1BQUgsQ0FBVUUsR0FBVixFQUFlUyxHQUFmLENBQW1CLFVBQUNULEdBQUQsRUFBUztBQUMxQkEsd0JBQUFBLEdBQUcsQ0FBQ0MsR0FBSixHQUFVTixJQUFJLENBQUNTLE9BQUwsQ0FBYUgsR0FBYixDQUFWO0FBQ0EsK0JBQU9ELEdBQVA7QUFDRCx1QkFIRCxDQURGOztBQXJCSjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdCQUlrQkgsSUFKbEI7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTs7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTs7QUFBQTtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQSw4Q0E0QlNFLE9BQU8sQ0FBQ1csTUFBUixDQUFlLFVBQUNDLENBQUQsRUFBSUMsQ0FBSjtBQUFBLHFCQUFVLEdBQUdkLE1BQUgsQ0FBVWEsQ0FBVixFQUFhQyxDQUFiLENBQVY7QUFBQSxhQUFmLEVBQTBDLEVBQTFDLENBNUJUOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEc7Ozs7QUErQkFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmxCLFVBQWpCIiwic291cmNlUm9vdCI6Ii4uLy4uL2xpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVxdWlyZSBhIG1vZHVsZS5cbiAqIEBtZW1iZXJvZiBtb2R1bGU6Y296LWJ1ZC1sb2FkZXIvbGliXG4gKiBAZnVuY3Rpb24gcmVxdWlyZUJ1ZFxuICogQHBhcmFtIHtCdWR9IGJ1ZCAtIEJ1ZCB0byByZXF1aXJlLlxuICogQHJldHVybnMge1Byb21pc2V9XG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKVxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuXG4vKiogQGxlbmRzIHJlcXVpcmVCdWQgKi9cbmFzeW5jIGZ1bmN0aW9uIHJlcXVpcmVCdWQoYnVkcykge1xuICBidWRzID0gW10uY29uY2F0KGJ1ZHMgfHwgW10pXG5cbiAgbGV0IHJlc3VsdHMgPSBbXVxuICBmb3IgKGxldCBidWQgb2YgYnVkcykge1xuICAgIGxldCBzcmMgPSBidWQuc3JjIHx8IGJ1ZFxuICAgIGlmICh0eXBlb2Ygc3JjID09PSAnb2JqZWN0Jykge1xuICAgICAgLy8gU2VlbXMgYWxyZWFkeSByZXF1aXJlZC5cbiAgICAgIHJlc3VsdHMucHVzaChidWQpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBsZXQgZmlsZW5hbWUgPSBwYXRoLnJlc29sdmUoc3JjKVxuICAgIGxldCBleGlzdHMgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT5cbiAgICAgIGZzLmV4aXN0cyhmaWxlbmFtZSwgKGV4aXN0cykgPT4gcmVzb2x2ZShleGlzdHMpKVxuICAgIClcbiAgICBsZXQgbmFtZSA9IGV4aXN0cyA/IGZpbGVuYW1lIDogc3JjXG4gICAgdHJ5IHtcbiAgICAgIGJ1ZCA9IHJlcXVpcmUobmFtZSlcbiAgICB9IGNhdGNoIChjYXRjaGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkICR7bmFtZX06ICR7Y2F0Y2hlZH1gKVxuICAgIH1cbiAgICByZXN1bHRzLnB1c2goXG4gICAgICBbXS5jb25jYXQoYnVkKS5tYXAoKGJ1ZCkgPT4ge1xuICAgICAgICBidWQuc3JjID0gcGF0aC5yZXNvbHZlKHNyYylcbiAgICAgICAgcmV0dXJuIGJ1ZFxuICAgICAgfSlcbiAgICApXG4gIH1cbiAgcmV0dXJuIHJlc3VsdHMucmVkdWNlKChhLCBiKSA9PiBbXS5jb25jYXQoYSwgYiksIFtdKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmVCdWRcbiJdfQ==