diff --git a/examples/simple/shadow-cljs.edn b/examples/simple/shadow-cljs.edn index ab65934f8..e509e747a 100644 --- a/examples/simple/shadow-cljs.edn +++ b/examples/simple/shadow-cljs.edn @@ -24,4 +24,8 @@ :output-dir "resources/public/js" :modules {:client - {:init-fn simple.core/run}}}}} + {:init-fn simple.core/run}} + :dev + {:compiler-options + {:closure-defines + {re-frame.interop.debug-enabled? false}}}}}} diff --git a/src/re_frame/events.cljc b/src/re_frame/events.cljc index 95bf8208a..e115a9ca4 100644 --- a/src/re_frame/events.cljc +++ b/src/re_frame/events.cljc @@ -1,7 +1,7 @@ (ns re-frame.events (:require [re-frame.db :refer [app-db]] [re-frame.utils :refer [first-in-vector]] - [re-frame.interop :refer [empty-queue debug-enabled?]] + [re-frame.interop :refer [empty-queue is-debug-enabled?]] [re-frame.registrar :refer [get-handler register-handler]] [re-frame.loggers :refer [console]] [re-frame.interceptor :as interceptor] @@ -16,7 +16,7 @@ This function is 9/10 about giving good error messages." [id interceptors] (let [make-chain #(->> % flatten (remove nil?))] - (if-not debug-enabled? + (if-not is-debug-enabled? (make-chain interceptors) (do ;; do a whole lot of development time checks (when-not (coll? interceptors) diff --git a/src/re_frame/interceptor.cljc b/src/re_frame/interceptor.cljc index 329212f7f..f95acda9e 100644 --- a/src/re_frame/interceptor.cljc +++ b/src/re_frame/interceptor.cljc @@ -1,7 +1,7 @@ (ns re-frame.interceptor (:require [re-frame.loggers :refer [console]] - [re-frame.interop :refer [empty-queue debug-enabled?]] + [re-frame.interop :refer [empty-queue is-debug-enabled?]] [re-frame.trace :as trace :include-macros true] [clojure.set :as set])) @@ -14,7 +14,7 @@ (defn ->interceptor [& {:as m :keys [id before after]}] - (when debug-enabled? + (when is-debug-enabled? (if-let [unknown-keys (seq (set/difference (-> m keys set) mandatory-interceptor-keys))] diff --git a/src/re_frame/interop.clj b/src/re_frame/interop.clj index 34ab29cb1..500b99522 100644 --- a/src/re_frame/interop.clj +++ b/src/re_frame/interop.clj @@ -35,7 +35,7 @@ (def after-render next-tick) -(def debug-enabled? true) +(def is-debug-enabled? true) (defn ratom [x] (atom x)) diff --git a/src/re_frame/interop.cljs b/src/re_frame/interop.cljs index 14f51d2a8..ecf83c3fe 100644 --- a/src/re_frame/interop.cljs +++ b/src/re_frame/interop.cljs @@ -17,11 +17,13 @@ (def after-render reagent.core/after-render) +(goog-define ^boolean debug-enabled? goog/DEBUG) + ;; Make sure the Google Closure compiler sees this as a boolean constant, ;; otherwise Dead Code Elimination won't happen in `:advanced` builds. ;; Type hints have been liberally sprinkled. ;; https://developers.google.com/closure/compiler/docs/js-for-compiler -(def ^boolean debug-enabled? "@define {boolean}" ^boolean goog/DEBUG) +(def ^boolean is-debug-enabled? "@define {boolean}" debug-enabled?) (defn ratom [x] (reagent.core/atom x)) diff --git a/src/re_frame/registrar.cljc b/src/re_frame/registrar.cljc index 0f4d03dcb..e783ccf33 100644 --- a/src/re_frame/registrar.cljc +++ b/src/re_frame/registrar.cljc @@ -2,7 +2,7 @@ "In many places, re-frame asks you to associate an `id` (keyword) with a `handler` (function). This namespace contains the central registry of such associations." - (:require [re-frame.interop :refer [debug-enabled?]] + (:require [re-frame.interop :refer [is-debug-enabled?]] [re-frame.loggers :refer [console]] [re-frame.settings :as settings])) @@ -25,14 +25,14 @@ ([kind id required?] (let [handler (get-handler kind id)] - (when debug-enabled? ;; This is in a separate `when` so Closure DCE can run ... + (when is-debug-enabled? ;; This is in a separate `when` so Closure DCE can run ... (when (and required? (nil? handler)) ;; ...otherwise you'd need to type-hint the `and` with a ^boolean for DCE. (console :error "re-frame: no" (str kind) "handler registered for:" id))) handler))) (defn register-handler [kind id handler-fn] - (when debug-enabled? ;; This is in a separate when so Closure DCE can run + (when is-debug-enabled? ;; This is in a separate when so Closure DCE can run (when (and (not (settings/loaded?)) (get-handler kind id false)) (console :warn "re-frame: overwriting" (str kind) "handler for:" id))) ;; allow it, but warn. Happens on figwheel reloads. (swap! kind->id->handler assoc-in [kind id] handler-fn) diff --git a/src/re_frame/settings.cljc b/src/re_frame/settings.cljc index 2ab6a64de..cb5258f5a 100644 --- a/src/re_frame/settings.cljc +++ b/src/re_frame/settings.cljc @@ -24,7 +24,7 @@ (if (= (:id interceptor) (:id existing-interceptor)) (do - (when interop/debug-enabled? + (when interop/is-debug-enabled? (when (not (loaded?)) (console :warn "re-frame: replacing duplicate global interceptor id: " (:id interceptor)))) (conj ret interceptor)) diff --git a/src/re_frame/subs.cljc b/src/re_frame/subs.cljc index 70d1550d1..cc3f0eb1e 100644 --- a/src/re_frame/subs.cljc +++ b/src/re_frame/subs.cljc @@ -1,7 +1,7 @@ (ns re-frame.subs (:require [re-frame.db :refer [app-db]] - [re-frame.interop :refer [add-on-dispose! debug-enabled? make-reaction ratom? deref? dispose! reagent-id reactive?]] + [re-frame.interop :refer [add-on-dispose! is-debug-enabled? make-reaction ratom? deref? dispose! reagent-id reactive?]] [re-frame.loggers :refer [console]] [re-frame.utils :refer [first-in-vector]] [re-frame.registrar :refer [get-handler clear-handlers register-handler]] @@ -48,7 +48,7 @@ query-cache))))) ;; cache this reaction, so it can be used to deduplicate other, later "=" subscriptions (swap! query->reaction (fn [query-cache] - (when debug-enabled? + (when is-debug-enabled? (when (contains? query-cache cache-key) (console :warn "re-frame: Adding a new subscription to the cache while there is an existing subscription in the cache" cache-key))) (assoc query-cache cache-key r))) @@ -65,7 +65,7 @@ (defn warn-when-not-reactive [] - (when (and debug-enabled? (not (reactive?))) + (when (and is-debug-enabled? (not (reactive?))) (console :warn "re-frame: Subscribe was called outside of a reactive context.\n" "See: https://day8.github.io/re-frame/FAQs/UseASubscriptionInAJsEvent/\n" @@ -105,7 +105,7 @@ (let [query-id (first-in-vector query) handler-fn (get-handler kind query-id)] (trace/merge-trace! {:tags {:cached? false}}) - (when debug-enabled? + (when is-debug-enabled? (when-let [not-reactive (not-empty (remove ratom? dynv))] (console :warn "re-frame: your subscription's dynamic parameters that don't implement IReactiveAtom:" not-reactive))) (if (nil? handler-fn)