Remove use of specific loggers. Everything now goes through re-frame.loggers/console.

This commit is contained in:
Mike Thompson 2016-06-24 22:56:30 +10:00
parent 72397eb6e7
commit cbef1ec268
7 changed files with 45 additions and 48 deletions

View File

@ -1,7 +1,7 @@
(ns re-frame.handlers
(:require [re-frame.db :refer [app-db]]
[re-frame.utils :refer [first-in-vector]]
[re-frame.loggers :refer [warn error]]))
[re-frame.loggers :refer [console]]))
;; -- composing middleware -----------------------------------------------------------------------
@ -17,7 +17,7 @@
[v]
(remove nil? (map name-of-factory v)))]
(doseq [name (factory-names-in v)]
(error "re-frame: \"" name "\" is a factory. It must be called like this \"(" name " ...)\", whereas you just used \"" name "\"."))))
(console :error "re-frame: \"" name "\" is a factory. It must be called like this \"(" name " ...)\", whereas you just used \"" name "\"."))))
(defn comp-middleware
@ -28,11 +28,11 @@
(comp-middleware [pure (when debug? debug)]) ;; that 'when' might leave a nil"
[v]
(cond
(fn? v) v ;; assumed to be existing middleware
(coll? v) (let [v (remove nil? (flatten v))]
(report-middleware-factories v)
(apply comp v))
:else (warn "re-frame: comp-middleware expects a vector, got: " v)))
(fn? v) v ;; assumed to be existing middleware
(coll? v) (let [v (remove nil? (flatten v))]
(report-middleware-factories v)
(apply comp v))
:else (console :warn "re-frame: comp-middleware expects a vector, got: " v)))
;; -- the register of event handlers --------------------------------------------------------------
@ -57,7 +57,7 @@
generally be used."
([event-id handler-fn]
(when (contains? @id->fn event-id)
(warn "re-frame: overwriting an event-handler for: " event-id)) ;; allow it, but warn.
(console :warn "re-frame: overwriting an event-handler for: " event-id)) ;; allow it, but warn.
(swap! id->fn assoc event-id handler-fn))
([event-id middleware handler-fn]
@ -85,9 +85,9 @@
(let [event-id (first-in-vector event-v)
handler-fn (lookup-handler event-id)]
(if (nil? handler-fn)
(error "re-frame: no event handler registered for: \"" event-id "\". Ignoring.")
(console :error "re-frame: no event handler registered for: \"" event-id "\". Ignoring.")
(if *handling*
(error "re-frame: while handling \"" *handling* "\" dispatch-sync was called for \"" event-v "\". You can't call dispatch-sync in an event handler.")
(console :error "re-frame: while handling \"" *handling* "\" dispatch-sync was called for \"" event-v "\". You can't call dispatch-sync in an event handler.")
(binding [*handling* event-v]
(handler-fn app-db event-v))))))

View File

@ -6,19 +6,17 @@
;; By default, re-frame uses the functions provided by js/console.
;; Use set-loggers! to change these defaults.
(def loggers
(def ^:private loggers
(atom {:log (js/console.log.bind js/console)
:warn (js/console.warn.bind js/console)
:error (js/console.error.bind js/console)
:group (if (.-group js/console) (js/console.group.bind js/console) default-log) ;; console.group does not exist < IE 11
:group (if (.-group js/console) (js/console.group.bind js/console) (js/console.log.bind js/console)) ;; console.group does not exist < IE 11
:groupEnd (if (.-groupEnd js/console) (js/console.groupEnd.bind js/console) #())})) ;; console.groupEnd does not exist < IE 11
(defn log [& args] (apply (:log @loggers) args))
(defn warn [& args] (apply (:warn @loggers) args))
(defn group [& args] (apply (:group @loggers) args))
(defn groupEnd [& args] (apply (:groupEnd @loggers) args))
(defn error [& args] (apply (:error @loggers) args))
(defn console
[level & args]
(assert (contains? @loggers level) (str "re-frame: log called with unknown level: " level))
(apply (level @loggers) args))
(defn set-loggers!

View File

@ -1,7 +1,7 @@
(ns re-frame.middleware
(:require
[reagent.ratom :refer [IReactiveAtom]]
[re-frame.loggers :refer [warn log group groupEnd error]]
[re-frame.loggers :refer [console]]
[clojure.data :as data]))
@ -25,13 +25,13 @@
(if-not (satisfies? IReactiveAtom app-db)
(do
(if (map? app-db)
(warn "re-frame: Looks like \"pure\" is in the middleware pipeline twice. Ignoring.")
(warn "re-frame: \"pure\" middleware not given a Ratom. Got: " app-db))
(console :warn "re-frame: Looks like \"pure\" is in the middleware pipeline twice. Ignoring.")
(console :warn "re-frame: \"pure\" middleware not given a Ratom. Got: " app-db))
handler) ;; turn this into a noop handler
(let [db @app-db
new-db (handler db event-vec)]
(if (nil? new-db)
(error "re-frame: your pure handler returned nil. It should return the new db state.")
(console :error "re-frame: your pure handler returned nil. It should return the new db state.")
(if-not (identical? db new-db)
(reset! app-db new-db)))))))
@ -46,16 +46,16 @@
[handler]
(fn debug-handler
[db v]
(log "Handling re-frame event: " v)
(console :log "Handling re-frame event: " v)
(let [new-db (handler db v)
[before after] (data/diff db new-db)
db-changed? (or (some? before) (some? after))]
(if db-changed?
(do (group "clojure.data/diff for: " v)
(log "only before: " before)
(log "only after : " after)
(groupEnd))
(log "clojure.data/diff no changes for: " v))
(do (console :group "clojure.data/diff for: " v)
(console :log "only before: " before)
(console :log "only after : " after)
(console :groupEnd))
(console :log "clojure.data/diff no changes for: " v))
new-db)))
@ -92,7 +92,7 @@
[& args]
(let [path (flatten args)]
(when (empty? path)
(error "re-frame: \"path\" middleware given no params."))
(console :error "re-frame: \"path\" middleware given no params."))
(fn path-middleware
[handler]
(fn path-handler

View File

@ -1,7 +1,6 @@
(ns re-frame.router
(:require [reagent.core]
[re-frame.handlers :refer [handle]]
[re-frame.loggers :refer [warn error]]
[goog.async.nextTick]))

View File

@ -3,7 +3,7 @@
[cljs.spec :as s]
[reagent.ratom :as ratom :refer [make-reaction] :refer-macros [reaction]]
[re-frame.db :refer [app-db]]
[re-frame.loggers :refer [warn error]]
[re-frame.loggers :refer [console]]
[re-frame.utils :refer [first-in-vector]]))
@ -16,7 +16,7 @@
"Registers a subscription handler function for an query id"
[query-id handler-fn]
(if (contains? @qid->fn query-id)
(warn "re-frame: overwriting subscription handler for: " query-id)) ;; allow it, but warn. Happens on figwheel reloads.
(console :warn "re-frame: overwriting subscription handler for: " query-id)) ;; allow it, but warn. Happens on figwheel reloads.
(swap! qid->fn assoc query-id handler-fn))
@ -40,7 +40,7 @@
(let [cache-key [query-v dynv]]
;; when this reaction is nolonger being used, remove it from the cache
(ratom/add-on-dispose! r #(do (swap! query->reaction dissoc cache-key)
(warn "Removing subscription: " cache-key)))
(console :warn "Removing subscription: " cache-key)))
(.log js/console "Dispatch site: ")
(.log js/console (:dispatch-site (meta query-v)))
@ -63,31 +63,31 @@
"Returns a Reagent/reaction which contains a computation"
([query-v]
(if-let [cached (cache-lookup query-v)]
(do (warn "Using cached subscription: " query-v)
(do (console :warn "Using cached subscription: " query-v)
cached)
(let [query-id (first-in-vector query-v)
handler-fn (get @qid->fn query-id)]
(warn "Subscription crerated: " query-v)
(console :warn "Subscription crerated: " query-v)
(if-not handler-fn
(error "re-frame: no subscription handler registered for: \"" query-id "\". Returning a nil subscription."))
(console :error "re-frame: no subscription handler registered for: \"" query-id "\". Returning a nil subscription."))
(cache-and-return query-v [] (handler-fn app-db query-v)))))
([v dynv]
(if-let [cached (cache-lookup v dynv)]
(do (warn "Using cached subscription: " v " and " dynv)
(do (console :warn "Using cached subscription: " v " and " dynv)
cached)
(let [query-id (first-in-vector v)
handler-fn (get @qid->fn query-id)]
(when ^boolean js/goog.DEBUG
(when-let [not-reactive (remove #(implements? reagent.ratom/IReactiveAtom %) dynv)]
(warn "re-frame: your subscription's dynamic parameters that don't implement IReactiveAtom: " not-reactive)))
(console :warn "re-frame: your subscription's dynamic parameters that don't implement IReactiveAtom: " not-reactive)))
(if (nil? handler-fn)
(error "re-frame: no subscription handler registered for: \"" query-id "\". Returning a nil subscription.")
(console :error "re-frame: no subscription handler registered for: \"" query-id "\". Returning a nil subscription.")
(let [dyn-vals (reaction (mapv deref dynv))
sub (reaction (handler-fn app-db v @dyn-vals))]
;; handler-fn returns a reaction which is then wrapped in the sub reaction
;; need to double deref it to get to the actual value.
(warn "Subscription created: " v dynv)
(console :warn "Subscription created: " v dynv)
(cache-and-return v dynv (reaction @@sub))))))))
;; -- Helper code for register-pure -------------------

View File

@ -2,7 +2,7 @@
(:require-macros [reagent.ratom :refer [reaction]])
(:require
[reagent.core :as reagent]
[re-frame.loggers :refer [warn error]]
[re-frame.loggers :refer [console]]
[re-frame.db :refer [app-db]]
[re-frame.handlers :as handlers]
[re-frame.subs :as subs]))
@ -20,7 +20,7 @@
(defn undo-config!
[new-config]
(if-let [unknown-keys (seq (clojure.set/difference (-> new-config keys set) (-> @config keys set)))]
(warn "re-frame: you called undo-config! within unknown keys: " unknown-keys)
(console :warn "re-frame: you called undo-config! within unknown keys: " unknown-keys)
(swap! config merge new-config)))
@ -150,7 +150,7 @@
(fn handler
[_ [_ n]]
(if-not (undos?)
(warn "re-frame: you did a (dispatch [:undo]), but there is nothing to undo.")
(console :warn "re-frame: you did a (dispatch [:undo]), but there is nothing to undo.")
(undo-n (or n 1)))))
@ -175,7 +175,7 @@
(fn handler ;; if n absent, defaults to 1
[_ [_ n]]
(if-not (redos?)
(warn "re-frame: you did a (dispatch [:redo]), but there is nothing to redo.")
(console :warn "re-frame: you did a (dispatch [:redo]), but there is nothing to redo.")
(redo-n (or n 1)))))
(handlers/register-base ;; not a pure handler
@ -183,7 +183,7 @@
(fn handler
[_ _]
(if-not (redos?)
(warn "re-frame: you did a (dispatch [:purge-redos]), but there is nothing to redo.")
(console :warn "re-frame: you did a (dispatch [:purge-redos]), but there is nothing to redo.")
(clear-redos!))))
@ -205,7 +205,7 @@
(fn? explanation) (explanation db event-vec)
(string? explanation) explanation
(nil? explanation) ""
:else (error "re-frame: \"undoable\" middleware given a bad parameter. Got: " explanation))]
:else (console :error "re-frame: \"undoable\" middleware given a bad parameter. Got: " explanation))]
(store-now! explanation)
(handler db event-vec)))))

View File

@ -1,11 +1,11 @@
(ns re-frame.utils
(:require
[re-frame.loggers :refer [error]]))
[re-frame.loggers :refer [console]]))
(defn first-in-vector
[v]
(if (vector? v)
(first v)
(error "re-frame: expected a vector, but got: " v)))
(console :error "re-frame: expected a vector, but got: " v)))