     '{:input deref
       :output string
       :type (either :js :cljs)
-      :jar boolean
+      :from-jar boolean
       :last-modified long
       :requires #{name}
       :provides #{name}

(defn maybe-compile-cljs
  "take current state and cljs resource to compile
   make sure you are in with-compiler-env"
  [{:keys [cache-dir cache-level] :as state} {:keys [jar file] :as src}]
  (let [cache? (and cache-dir
                    ;; i don't trust the register-constant! stuff for now
                    (not (:emit-constants state))
                    ;; even with :all only cache resources that are in jars or have a file
                    ;; cljs.user (from repl) or runtime-setup should never be cached
                    (or (and (= cache-level :all)
                             (or jar file))
                        (and (= cache-level :jars)
                             jar)))]
    (or (when cache?
          (load-cached-cljs-resource state src))
        (let [src (do-compile-cljs-resource state src)]

    (first rcs)))

(defn- get-deps-for-src* [state name]
  {:pre [(compiler-state? state)]}
  (when-not (string? name)
    (throw (ex-info (format "trying to get deps for \"%s\"" (pr-str name)) {})))

  (if (contains? (:deps-visited state) name)
    state
    (let [requires (get-in state [:sources name :requires])]
