code: def encode_sourcemap(filename, mappings, sources, names=[]):
      
  
      return {
          "version": 3,
          "sources": sources,
          "names": names,
          "mappings": encode_mappings(mappings),
          "file": filename,
      }
docs: Take a filename, mappings and names produced from the write function
      and sources.  As the write function currently does not handle the
      tracking of source filenames, the sources should be a list of one
      element with the original filename.
  
      Arguments
  
      filename
          The target filename that the stream was or to be written to.
          The stream being the argument that was supplied to the write
          function
      mappings
          The raw unencoded mappings produced by write, which is returned
          as its second element.
      sources
          List of original source filenames.  When used in conjunction
          with the above write function, it should be a list of one item,
          being the path to the original filename.
      names
          The list of original names generated by write, which is returned
          as its first element.
  
      Returns a dict which can be JSON encoded into a sourcemap file.
  
      Example usage:
  
      >>> from io import StringIO
      >>> from calmjs.parse import es5
      >>> from calmjs.parse.unparsers.es5 import pretty_printer
      >>> from calmjs.parse.sourcemap import write, encode_sourcemap
      >>> program = es5(u"var i = 'hello';")
      >>> stream = StringIO()
      >>> printer = pretty_printer()
      >>> sourcemap = encode_sourcemap(
      ...     'demo.min.js', *write(printer(program), stream))