code: function SourceMap(options) {
      options = defaults(options, {
          file : null,
          root : null,
          orig : null,
  
          orig_line_diff : 0,
          dest_line_diff : 0,
      });
      var generator = new MOZ_SourceMap.SourceMapGenerator({
          file       : options.file,
          sourceRoot : options.root
      });
      var orig_map = options.orig && new MOZ_SourceMap.SourceMapConsumer(options.orig);
  
      if (orig_map && Array.isArray(options.orig.sources)) {
          orig_map._sources.toArray().forEach(function(source) {
              var sourceContent = orig_map.sourceContentFor(source, true);
              if (sourceContent) {
                  generator.setSourceContent(source, sourceContent);
              }
          });
      }
  
      function add(source, gen_line, gen_col, orig_line, orig_col, name) {
          if (orig_map) {
              var info = orig_map.originalPositionFor({
                  line: orig_line,
                  column: orig_col
              });
              if (info.source === null) {
                  return;
              }
              source = info.source;
              orig_line = info.line;
              orig_col = info.column;
              name = info.name || name;
          }
          generator.addMapping({
              generated : { line: gen_line + options.dest_line_diff, column: gen_col },
              original  : { line: orig_line + options.orig_line_diff, column: orig_col },
              source    : source,
              name      : name
          });
      };
      return {
          add        : add,
          get        : function() { return generator },
          toString   : function() { return JSON.stringify(generator.toJSON()); }
      };
  }
docs: a small wrapper around fitzgen's source-map library