36 lines
1.6 KiB
Clojure
36 lines
1.6 KiB
Clojure
(ns devtools.reporter
|
|
(:require-macros [devtools.oops :refer [oget]])
|
|
(:require [devtools.util :as util]
|
|
[devtools.context :as context]))
|
|
|
|
(def issues-url "https://github.com/binaryage/cljs-devtools/issues")
|
|
|
|
; -- internal errors -------------------------------------------------------------------------------------------------------
|
|
|
|
(defn report-internal-error! [e & [context footer]]
|
|
(let [console (context/get-console)]
|
|
(try
|
|
(let [message (if (instance? js/Error e)
|
|
(or (.-message e) e)
|
|
e)
|
|
header #js ["%cCLJS DevTools Error%c%s"
|
|
"background-color:red;color:white;font-weight:bold;padding:0px 3px;border-radius:2px;"
|
|
"color:red"
|
|
(str " " message)]
|
|
context-msg (str "In " (util/get-lib-info) (if context (str ", " context ".") ".") "\n\n")
|
|
footer-msg (if (some? footer)
|
|
footer
|
|
(str "\n\n" "---\n" "Please report the issue here: " issues-url))
|
|
details #js [context-msg e footer-msg]]
|
|
(let [group-collapsed (oget console "groupCollapsed")
|
|
log (oget console "log")
|
|
group-end (oget console "groupEnd")]
|
|
(assert group-collapsed)
|
|
(assert log)
|
|
(assert group-end)
|
|
(.apply group-collapsed console header)
|
|
(.apply log console details)
|
|
(.call group-end console)))
|
|
(catch :default e
|
|
(.error console "FATAL: report-internal-error! failed" e)))))
|