            (com.google.javascript.jscomp.deps JsFileParser)
            (java.util.logging Level)
            [java.util.concurrent Executors Future]
-           (com.google.javascript.jscomp ReplaceCLJSConstants CompilerOptions))
+           (com.google.javascript.jscomp ReplaceCLJSConstants CompilerOptions CommandLineRunner))
   (:require [clojure.data.json :as json]
             [clojure.java.io :as io]
             [clojure.set :as set]


  state)

(defn load-externs [{:keys [build-modules] :as state}]
  (->> build-modules
       (mapcat :sources)
       (map #(get-in state [:sources %]))
       (filter :foreign)
       (filter :externs-source)
       (reduce (fn [externs {:keys [js-name externs-source] :as foreign-src}]
                 (conj externs (SourceFile/fromCode (str "externs/" js-name) externs-source)))
         (closure/load-externs state))))


;; added by default in init-state

                           :foreign true
                           :requires (set (map symbol requires))
                           :provides (set (map symbol provides))
                           :externs externs
                           :externs-source (->> externs
                                                (map #(get result %))
                                                (map :input)
