code: function determineNextSemver(categorizedCommits) {
      const breaking = categorizedCommits.Breaking;
      const newFeatures = categorizedCommits.New;
      const updates = categorizedCommits.Update;
      // get last version from git, split so we can increment
      const lastReleasedVersion = git.getLastReleasedVersion();
  
      // if undefined, this is the first release ever.
      if (typeof lastReleasedVersion === 'undefined') {
          return {
              version: '1.0.0',
              type: 'major'
          };
      }
  
      // if we have breaking commits, rev major version
      if (breaking && breaking.length >= 1) {
          return {
              version: semver.major(lastReleasedVersion),
              type: 'major'
          };
      }
      // any backwards compatible updates or new features are a minor rev
      else if ((newFeatures && newFeatures.length >= 1) ||
                 (updates && updates.length >= 1)) {
          return {
              version: semver.minor(lastReleasedVersion),
              type: 'minor'
          };
      }
      // for patch version, rev just last item
      else {
          return {
              version: semver.patch(lastReleasedVersion),
              type: 'patch'
          };
      }
  }
docs: given categorized commits, determine what the semver of the next semver
  should be using the latest commit from origin/master as the last version.
  @param {Object} categorizedCommits an object where keys are commit types
  and values are an array of commits of that commit type
  @return {String}