docs: function effectWatcherCreator(namespace, effectName, effect) {
    var config = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
    var pattern = "".concat(namespace).concat(_constants.NAMESPACE_SEP).concat(effectName);
    var throttleTime = config.throttleTime,
        type = config.type;
  
    switch (type) {
      case 'watcher':
        {
          return defaultWatcherCreator(effect);
        }
  
      case 'takeLatest':
        {
          return (
            /*#__PURE__*/
            regeneratorRuntime.mark(function _callee3() {
              return regeneratorRuntime.wrap(function _callee3$(_context3) {
                while (1) {
                  switch (_context3.prev = _context3.next) {
                    case 0:
                      _context3.next = 2;
                      return _effects.default.takeLatest(pattern, specialTypeWatcherCreator(effect));
  
                    case 2:
                    case "end":
                      return _context3.stop();
                  }
                }
              }, _callee3, this);
            })
          );
        }
  
      case 'throttle':
        {
          return (
            /*#__PURE__*/
            regeneratorRuntime.mark(function _callee4() {
              return regeneratorRuntime.wrap(function _callee4$(_context4) {
                while (1) {
                  switch (_context4.prev = _context4.next) {
                    case 0:
                      _context4.next = 2;
                      return _effects.default.throttle(throttleTime, pattern, specialTypeWatcherCreator(effect));
  
                    case 2:
                    case "end":
                      return _context4.stop();
                  }
                }
              }, _callee4, this);
            })
          );
        }
  
      case 'takeEvery':
      default:
        {
          return (
            /*#__PURE__*/
            regeneratorRuntime.mark(function _callee5() {
              return regeneratorRuntime.wrap(function _callee5$(_context5) {
                while (1) {
                  switch (_context5.prev = _context5.next) {
                    case 0:
                      _context5.next = 2;
                      return _effects.default.takeEvery(pattern, specialTypeWatcherCreator(effect));
  
                    case 2:
                    case "end":
                      return _context5.stop();
                  }
                }
              }, _callee5, this);
            })
          );
        }
    }
  }