UNPKG

koa-quick-service

Version:
334 lines (260 loc) 12 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _mid = require('./mid.wares'); var _asyncEventsListener = require('async-events-listener'); var _asyncEventsListener2 = _interopRequireDefault(_asyncEventsListener); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Created by evio on 2017/1/26. */ var EngineProcess = function (_EventEmitter) { (0, _inherits3.default)(EngineProcess, _EventEmitter); function EngineProcess() { (0, _classCallCheck3.default)(this, EngineProcess); var _this = (0, _possibleConstructorReturn3.default)(this, (EngineProcess.__proto__ || (0, _getPrototypeOf2.default)(EngineProcess)).call(this)); _this.stacks = {}; _this.children = []; for (var _len = arguments.length, options = Array(_len), _key = 0; _key < _len; _key++) { options[_key] = arguments[_key]; } for (var i = 0; i < options.length; i++) { if (!options[i].process) { throw new Error('EngineProcess子组件缺少process方法'); } _this.children.push(options[i].process(_this)); } return _this; } (0, _createClass3.default)(EngineProcess, [{ key: 'init', value: function () { var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(key) { var keys, type, name, engine, options; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: keys = key.split(':'), type = keys[0], name = keys[1]; engine = _mid.Engines[type]; _context.prev = 2; if (!engine) { _context.next = 9; break; } options = engine.get(name); if (!(options && engine.value)) { _context.next = 9; break; } _context.next = 8; return engine.value.create(options); case 8: return _context.abrupt('return', _context.sent); case 9: _context.next = 18; break; case 11: _context.prev = 11; _context.t0 = _context['catch'](2); _context.next = 15; return this.emit('error', _context.t0); case 15: _context.next = 17; return this.destroy(); case 17: throw _context.t0; case 18: case 'end': return _context.stop(); } } }, _callee, this, [[2, 11]]); })); function init(_x) { return _ref.apply(this, arguments); } return init; }() }, { key: 'create', value: function () { var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2() { for (var _len2 = arguments.length, keys = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { keys[_key2] = arguments[_key2]; } var stacks, i, name; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: stacks = []; i = 0; case 2: if (!(i < keys.length)) { _context2.next = 12; break; } name = keys[i]; if (this.stacks[name]) { _context2.next = 8; break; } _context2.next = 7; return this.init(name); case 7: this.stacks[name] = _context2.sent; case 8: stacks.push(this.stacks[name]); case 9: i++; _context2.next = 2; break; case 12: return _context2.abrupt('return', stacks); case 13: case 'end': return _context2.stop(); } } }, _callee2, this); })); function create() { return _ref2.apply(this, arguments); } return create; }() }, { key: 'tryCatch', value: function () { var _ref3 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(callback) { var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var res; return _regenerator2.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: if (!(typeof callback === 'function')) { _context3.next = 18; break; } _context3.prev = 1; args = this.children.concat(args); _context3.next = 5; return callback.apply(this, args); case 5: res = _context3.sent; _context3.next = 8; return this.destroy(); case 8: return _context3.abrupt('return', res); case 11: _context3.prev = 11; _context3.t0 = _context3['catch'](1); _context3.next = 15; return this.emit('error', _context3.t0); case 15: _context3.next = 17; return this.destroy(); case 17: throw _context3.t0; case 18: case 'end': return _context3.stop(); } } }, _callee3, this, [[1, 11]]); })); function tryCatch(_x2) { return _ref3.apply(this, arguments); } return tryCatch; }() }, { key: 'destroy', value: function () { var _ref4 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4() { var i; return _regenerator2.default.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: _context4.t0 = _regenerator2.default.keys(this.stacks); case 1: if ((_context4.t1 = _context4.t0()).done) { _context4.next = 7; break; } i = _context4.t1.value; _context4.next = 5; return this.stacks[i].end(); case 5: _context4.next = 1; break; case 7: this.stacks = {}; case 8: case 'end': return _context4.stop(); } } }, _callee4, this); })); function destroy() { return _ref4.apply(this, arguments); } return destroy; }() }], [{ key: 'create', value: function () { var _ref5 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee5(keys, callback) { var Processor, args; return _regenerator2.default.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: if (typeof keys === 'string') { keys = [keys]; } Processor = new EngineProcess(); _context5.next = 4; return Processor.create(keys); case 4: args = _context5.sent; _context5.next = 7; return Processor.tryCatch(callback, args); case 7: return _context5.abrupt('return', _context5.sent); case 8: case 'end': return _context5.stop(); } } }, _callee5, this); })); function create(_x4, _x5) { return _ref5.apply(this, arguments); } return create; }() }]); return EngineProcess; }(_asyncEventsListener2.default); exports.default = EngineProcess; module.exports = exports['default'];