 (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}]
+  [{:keys [cache-dir cache-level] :as state} {:keys [from-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))
+                             (or from-jar file))
                         (and (= cache-level :jars)
-                             jar)))]
+                             from-jar)))]
     (or (when cache?
           (load-cached-cljs-resource state src))
         (let [src (do-compile-cljs-resource state src)]

   :use-file-min true


   :manifest-cache-dir (let [dir (io/file "target" "shadow-build" "jar-manifest")]
                         (io/make-parents dir)
                         dir)
   :cache-dir (io/file "target" "shadow-build" "cljs-cache")
   :cache-level :jars

   :public-dir (io/file "public" "js")
   :public-path "js"

    (cond
      ;; don't merge .cljc file if a .cljs of the same name exists
      (and cljc? (contains? (:sources state) cljs-name))
      (do (log-warning logger (format "File conflict: \"%s\" -> \"%s\" (using \"%s\")" name cljs-name cljs-name))
          state)

      ;; if a .cljc exists for a .cljs file unmerge the .cljc and merge the .cljs
      (and (is-cljs? name) (contains? (:sources state) cljc-name))
      (do (log-warning logger (format "File conflict: \"%s\" -> \"%s\" (using \"%s\")" name cljc-name name))
          (-> state
              (unmerge-resource cljc-name)
              (assoc-in [:sources name] src)
