UNPKG

cz-conventional-changelog-befe

Version:
105 lines (81 loc) 2.71 kB
"use strict"; var _regenerator = require("babel-runtime/regenerator"); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator"); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @file storeFirstCall * @author imcuttle <moyuyc95@gmail.com> * @date 2018/11/2 * */ function storeFirstCallAsync(fn, store) { var saveCall = function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { var result, _args = arguments; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return fn.apply(this, _args); case 2: result = _context.sent; store.set(result); return _context.abrupt("return", result); case 5: case "end": return _context.stop(); } } }, _callee, this); })); return function saveCall() { return _ref.apply(this, arguments); }; }(); var wrap = function () { var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() { var prevResult, _args2 = arguments; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: if (!isFirstTime) { _context2.next = 9; break; } isFirstTime = false; prevResult = store.get(); if (!prevResult) { _context2.next = 6; break; } saveCall.apply(this, _args2); return _context2.abrupt("return", prevResult); case 6: _context2.next = 8; return saveCall.apply(this, _args2); case 8: return _context2.abrupt("return", _context2.sent); case 9: return _context2.abrupt("return", fn.apply(this, _args2)); case 10: case "end": return _context2.stop(); } } }, _callee2, this); })); return function wrap() { return _ref2.apply(this, arguments); }; }(); var isFirstTime = true; Object.setPrototypeOf(wrap, fn); return wrap; } module.exports = storeFirstCallAsync;