docs: function processOutputs(outputs) {
    var removeSourceMaps = require('./sourcemaps').removeSourceMaps;
  
    var offset = 0;
  
    var outputObj = {};
  
    var sources = outputObj.sources = [];
    var sourceMapsWithOffsets = outputObj.sourceMapsWithOffsets = [];
  
    outputs.forEach(function(output) {
      var source;
      if (typeof output == 'object') {
        source = output.source || '';
        var offset_ = output.sourceMapOffset || 0;
        var map = output.sourceMap;
        if (map) {
          sourceMapsWithOffsets.push([offset + offset_, map]);
        }
      }
      // NB perhaps we should enforce output is always an object down the chain?
      else if (typeof output == 'string') {
        source = output;
      }
      else {
        var format = output ? output.toString() : typeof output;
        throw new Error("Unexpected output format: " + format);
      }
      source = removeSourceMaps(source || '');
      offset += countLines(source);
      sources.push(source);
    });
  
    return outputObj;
  }