'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});

var _keys = require('babel-runtime/core-js/object/keys');

var _keys2 = _interopRequireDefault(_keys);

var _extends2 = require('babel-runtime/helpers/extends');

var _extends3 = _interopRequireDefault(_extends2);

var _events = require('events');

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

class Issues extends _events.EventEmitter {
  constructor() {
    super();
    this.issues = {};
  }

  addIssue(issueId, issue) {
    let newIssue = false;
    if (!this.issues[issueId]) {
      newIssue = true;
    }
    this.issues[issueId] = (0, _extends3.default)({}, issue, {
      id: issueId
    });
    if (newIssue) {
      this.emit('ADDED', this.issues[issueId]);
    } else {
      this.emit('UPDATED', this.issues[issueId]);
    }
  }

  clearIssue(issueId) {
    const issue = this.issues[issueId];
    if (issue) {
      delete this.issues[issueId];
      this.emit('DELETED', issue);
    }
  }

  getIssueList() {
    return (0, _keys2.default)(this.issues).map(key => ({
      cursor: key,
      node: this.issues[key]
    }));
  }
}
exports.default = Issues;