       (assoc-in [:tempids e] eid)
       (update-in [:db-after] advance-max-eid eid))))
 
-(defn- ^Boolean tx-id? [e]
+(defn- #?@(:clj  [^Boolean tx-id?]
+           :cljs [^boolean tx-id?]) [e]
   (or (= e :db/current-tx)
       (= e ":db/current-tx"))) ;; for datascript.js interop
 

      (update-in [:db-after] with-datom datom)
      (update-in [:tx-data] conj datom)))

(defn ^Boolean reverse-ref? [attr]
  (cond
    (keyword? attr)
    (= "_" (nth (name attr) 0))


(defrecord TxReport [db-before db-after tx-data tempids tx-meta])

(defn #?@(:clj  [^Boolean is-attr?]
          :cljs [^boolean is-attr?]) [db attr property]
  (contains? (-attrs-by db property) attr))

(defn #?@(:clj  [^Boolean multival?]
          :cljs [^boolean multival?]) [db attr]
  (is-attr? db attr :db.cardinality/many))

(defn #?@(:clj  [^Boolean ref?]
          :cljs [^boolean ref?]) [db attr]
  (is-attr? db attr :db.type/ref))

(defn #?@(:clj  [^Boolean component?]
          :cljs [^boolean component?]) [db attr]
  (is-attr? db attr :db/isComponent))

(defn entid [db eid]
