                     s
                     (slurp (io/reader (-url this))))))
 
-(defrecord JavaScriptFile [foreign ^URL url provides requires]
+(defrecord JavaScriptFile [foreign ^URL url provides requires lines mappings]
   IJavaScript
   (-foreign? [this] foreign)
   (-url [this] url)

  (-requires [this] requires)
  (-source [this] (slurp (io/reader url))))

(defn javascript-file [foreign ^URL url provides requires]
  (JavaScriptFile. foreign url (map name provides) (map name requires)))

(defn map->javascript-file [m]
  (javascript-file (:foreign m)
                   (to-url (:file m))
                   (:provides m)
                   (:requires m)))

(defn read-js
  "Read a JavaScript file returning a map of file information."

  [^File src-dir opts]
  (let [out-dir (output-directory opts)]
    (map compiled-file
         (comp/compile-root src-dir out-dir opts))))

(defn path-from-jarfile
  "Given the URL of a file within a jar, return the path of the file
