added github pages support
This commit is contained in:
1 parent
b14ebdbf63
commit
6ed638a1cc
373 files changed
+185436
-2343
No files matched your search
@@ -0,0 +1,43 @@
|
||||
(ns devtools.async
|
||||
(:require-macros [devtools.oops :refer [oset ocall]])
|
||||
(:require [goog.async.nextTick :as next-tick]))
|
||||
|
||||
(defn ^:dynamic available? []
|
||||
(exists? js/Promise))
|
||||
|
||||
(def ^:dynamic *installed* false)
|
||||
(def ^:dynamic *original-set-immediate* nil)
|
||||
|
||||
; see http://stackoverflow.com/a/30741722/84283
|
||||
(defn rethrow-outside-promise [e]
|
||||
(js/setTimeout #(throw e) 0))
|
||||
|
||||
(defn promise-based-set-immediate [callback]
|
||||
(-> (ocall js/Promise "resolve")
|
||||
(ocall "then" callback)
|
||||
(ocall "catch" rethrow-outside-promise))
|
||||
nil)
|
||||
|
||||
(defn install-async-set-immediate! []
|
||||
(set! *original-set-immediate* next-tick/setImmediate_)
|
||||
(set! next-tick/setImmediate_ promise-based-set-immediate))
|
||||
|
||||
(defn uninstall-async-set-immediate! []
|
||||
(set! next-tick/setImmediate_ *original-set-immediate*))
|
||||
|
||||
; -- installation -----------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn installed? []
|
||||
*installed*)
|
||||
|
||||
(defn install! []
|
||||
(when-not *installed*
|
||||
(set! *installed* true)
|
||||
(oset js/Error ["stackTraceLimit"] js/Infinity)
|
||||
(install-async-set-immediate!)
|
||||
true))
|
||||
|
||||
(defn uninstall! []
|
||||
(when *installed*
|
||||
(set! *installed* false)
|
||||
(uninstall-async-set-immediate!)))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {Promise {}, setTimeout {}, Error {}, Infinity {}}, :use-macros {oset devtools.oops, ocall devtools.oops}, :excludes #{}, :name devtools.async, :imports nil, :requires {next-tick goog.async.nextTick, goog.async.nextTick goog.async.nextTick}, :cljs.spec/speced-vars [], :uses nil, :defs {*installed* {:name devtools.async/*installed*, :file "target/cljsbuild/public/js/out/devtools/async.cljs", :line 8, :column 1, :end-line 8, :end-column 27, :dynamic true, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/async.cljs", :line 8, :column 16, :end-line 8, :end-column 27, :dynamic true}, :tag boolean}, *original-set-immediate* {:name devtools.async/*original-set-immediate*, :file "target/cljsbuild/public/js/out/devtools/async.cljs", :line 9, :column 1, :end-line 9, :end-column 40, :dynamic true, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/async.cljs", :line 9, :column 16, :end-line 9, :end-column 40, :dynamic true}, :tag clj-nil}, install-async-set-immediate! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/async.cljs", :line 21, :column 7, :end-line 21, :end-column 35, :arglists (quote ([]))}, :name devtools.async/install-async-set-immediate!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/async.cljs", :end-column 35, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 21, :end-line 21, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, install! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/async.cljs", :line 33, :column 7, :end-line 33, :end-column 15, :arglists (quote ([]))}, :name devtools.async/install!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/async.cljs", :end-column 15, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 33, :end-line 33, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, available? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/async.cljs", :line 5, :column 17, :end-line 5, :end-column 27, :dynamic true, :arglists (quote ([]))}, :name devtools.async/available?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/async.cljs", :end-column 27, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :dynamic true, :line 5, :end-line 5, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, uninstall-async-set-immediate! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/async.cljs", :line 25, :column 7, :end-line 25, :end-column 37, :arglists (quote ([]))}, :name devtools.async/uninstall-async-set-immediate!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/async.cljs", :end-column 37, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 25, :end-line 25, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, installed? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/async.cljs", :line 30, :column 7, :end-line 30, :end-column 17, :arglists (quote ([]))}, :name devtools.async/installed?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/async.cljs", :end-column 17, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 30, :end-line 30, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, rethrow-outside-promise {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/async.cljs", :line 12, :column 7, :end-line 12, :end-column 30, :arglists (quote ([e]))}, :name devtools.async/rethrow-outside-promise, :variadic false, :file "target/cljsbuild/public/js/out/devtools/async.cljs", :end-column 30, :method-params ([e]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 12, :end-line 12, :max-fixed-arity 1, :fn-var true, :arglists (quote ([e]))}, uninstall! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/async.cljs", :line 40, :column 7, :end-line 40, :end-column 17, :arglists (quote ([]))}, :name devtools.async/uninstall!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/async.cljs", :end-column 17, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 40, :end-line 40, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, promise-based-set-immediate {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/async.cljs", :line 15, :column 7, :end-line 15, :end-column 34, :arglists (quote ([callback]))}, :name devtools.async/promise-based-set-immediate, :variadic false, :file "target/cljsbuild/public/js/out/devLine truncated
|
||||
@@ -0,0 +1,67 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.async');
|
||||
goog.require('cljs.core');
|
||||
goog.require('goog.async.nextTick');
|
||||
devtools.async.available_QMARK_ = (function devtools$async$available_QMARK_(){
|
||||
return typeof Promise !== 'undefined';
|
||||
});
|
||||
devtools.async._STAR_installed_STAR_ = false;
|
||||
devtools.async._STAR_original_set_immediate_STAR_ = null;
|
||||
devtools.async.rethrow_outside_promise = (function devtools$async$rethrow_outside_promise(e){
|
||||
return setTimeout((function (){
|
||||
throw e;
|
||||
}),(0));
|
||||
});
|
||||
devtools.async.promise_based_set_immediate = (function devtools$async$promise_based_set_immediate(callback){
|
||||
var o__37997__auto___40553 = (function (){var o__37997__auto__ = (function (){var o__37997__auto__ = Promise;
|
||||
return (o__37997__auto__["resolve"]).call(o__37997__auto__);
|
||||
})();
|
||||
return (o__37997__auto__["then"]).call(o__37997__auto__,callback);
|
||||
})();
|
||||
(o__37997__auto___40553["catch"]).call(o__37997__auto___40553,devtools.async.rethrow_outside_promise);
|
||||
|
||||
return null;
|
||||
});
|
||||
devtools.async.install_async_set_immediate_BANG_ = (function devtools$async$install_async_set_immediate_BANG_(){
|
||||
devtools.async._STAR_original_set_immediate_STAR_ = goog.async.nextTick.setImmediate_;
|
||||
|
||||
return goog.async.nextTick.setImmediate_ = devtools.async.promise_based_set_immediate;
|
||||
});
|
||||
devtools.async.uninstall_async_set_immediate_BANG_ = (function devtools$async$uninstall_async_set_immediate_BANG_(){
|
||||
return goog.async.nextTick.setImmediate_ = devtools.async._STAR_original_set_immediate_STAR_;
|
||||
});
|
||||
devtools.async.installed_QMARK_ = (function devtools$async$installed_QMARK_(){
|
||||
return devtools.async._STAR_installed_STAR_;
|
||||
});
|
||||
devtools.async.install_BANG_ = (function devtools$async$install_BANG_(){
|
||||
if(devtools.async._STAR_installed_STAR_){
|
||||
return null;
|
||||
} else {
|
||||
devtools.async._STAR_installed_STAR_ = true;
|
||||
|
||||
var G__40554_40555 = Error;
|
||||
var target__38002__auto___40556 = G__40554_40555;
|
||||
if(cljs.core.truth_(target__38002__auto___40556)){
|
||||
} else {
|
||||
throw (new Error(["Assert failed: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(["unable to locate object path ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(null)," in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__40554_40555)].join('')),"\n","target__38002__auto__"].join('')));
|
||||
}
|
||||
|
||||
(target__38002__auto___40556["stackTraceLimit"] = Infinity);
|
||||
|
||||
|
||||
devtools.async.install_async_set_immediate_BANG_.call(null);
|
||||
|
||||
return true;
|
||||
}
|
||||
});
|
||||
devtools.async.uninstall_BANG_ = (function devtools$async$uninstall_BANG_(){
|
||||
if(devtools.async._STAR_installed_STAR_){
|
||||
devtools.async._STAR_installed_STAR_ = false;
|
||||
|
||||
return devtools.async.uninstall_async_set_immediate_BANG_.call(null);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
//# sourceMappingURL=async.js.map?rel=1517021944311
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/async.js","sources":["async.cljs?rel=1517021944311"],"lineCount":67,"mappings":";AAAA;;;AAIA,kCAAA,lCAAgBA;AAAhB,AACE,cAASC;;AAEX,uCAAA,vCAAeC;AACf,oDAAA,pDAAeC;AAGf,yCAAA,zCAAMC,0FAAyBC;AAA\/B,AACE,kBAAA,XAACC;AAAD,AAAgB,MAAOD;GAAvB;;AAEF,6CAAA,7CAAME,kGAA6BC;AAAnC,iEACM,iBAAAC,mBAAOR,xEACP,iBAAAQ,9CACA,IAAAA;AAFA,AAAA,OAAA,CAAAA,iBAAA,iBAAAA;;AACA,AAAA,OAAA,CAAAA,iBAAA,cAAAA,iBAAcD;;AACd,AAAA,AAAA,CAAAC,uBAAA,eAAAA,uBAAeL;;AAHrB;;AAMA,mDAAA,nDAAMM;AAAN,AACE,AAAMP,oDAAyBQ;;AAC\/B,OAAMA,oCAAwBJ;;AAEhC,qDAAA,rDAAMK;AAAN,AACE,OAAMD,oCAAwBR;;AAIhC,kCAAA,lCAAMU;AAAN,AACEX;;AAEF,+BAAA,\/BAAMY;AAAN,AACE,GAAUZ;AAAV;;AAAA,AACE,uCAAA,vCAAMA;;AACN,IAAAa,iBAAME;IAAND,8BAAAD;AAAA,AAAA,oBAAAC;AAAA;AAAA,AAAA,MAAA,KAAAC,MAAA,CAAA,8DAAA,CAAA,4EAAA,MAAA,mDAAAF,2BAAA,KAAA;;;AAAA,CAAAC,4BAAA,qBAAmCE;;AAAnCH;AACA,AAACL;;AAHH;;;AAMF,iCAAA,jCAAMS;AAAN,AACE,GAAMjB;AAAN,AACE,uCAAA,vCAAMA;;AACN,OAACU;;AAFH","names":["devtools.async\/available?","js\/Promise","devtools.async\/*installed*","devtools.async\/*original-set-immediate*","devtools.async\/rethrow-outside-promise","e","js\/setTimeout","devtools.async\/promise-based-set-immediate","callback","o__37997__auto__","devtools.async\/install-async-set-immediate!","goog.async.nextTick\/setImmediate_","devtools.async\/uninstall-async-set-immediate!","devtools.async\/installed?","devtools.async\/install!","G__40554","target__38002__auto__","js\/Error","js\/Infinity","devtools.async\/uninstall!"]}
|
||||
@@ -0,0 +1,8 @@
|
||||
(ns devtools.context)
|
||||
|
||||
; default root javascript context, typically js/window in browser, or the root javascript object in node.js
|
||||
(defn ^:dynamic get-root []
|
||||
goog/global)
|
||||
|
||||
(defn ^:dynamic get-console []
|
||||
(.-console (get-root)))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :use-macros {}, :excludes #{}, :name devtools.context, :imports nil, :requires nil, :cljs.spec/speced-vars [], :uses nil, :defs {get-root {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/context.cljs", :line 4, :column 17, :end-line 4, :end-column 25, :dynamic true, :arglists (quote ([]))}, :name devtools.context/get-root, :variadic false, :file "target/cljsbuild/public/js/out/devtools/context.cljs", :end-column 25, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :dynamic true, :line 4, :end-line 4, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, get-console {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/context.cljs", :line 7, :column 17, :end-line 7, :end-column 28, :dynamic true, :arglists (quote ([]))}, :name devtools.context/get-console, :variadic false, :file "target/cljsbuild/public/js/out/devtools/context.cljs", :end-column 28, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :dynamic true, :line 7, :end-line 7, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}}, :cljs.spec/registry-ref [], :require-macros nil, :doc nil}
|
||||
@@ -0,0 +1,11 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.context');
|
||||
goog.require('cljs.core');
|
||||
devtools.context.get_root = (function devtools$context$get_root(){
|
||||
return goog.global;
|
||||
});
|
||||
devtools.context.get_console = (function devtools$context$get_console(){
|
||||
return devtools.context.get_root.call(null).console;
|
||||
});
|
||||
|
||||
//# sourceMappingURL=context.js.map?rel=1517021941639
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/context.js","sources":["context.cljs?rel=1517021941640"],"lineCount":11,"mappings":";AAAA;;AAGA,4BAAA,5BAAgBA;AAAhB,AACEC;;AAEF,+BAAA,\/BAAgBC;AAAhB,AACE,OAAW,AAACF","names":["devtools.context\/get-root","goog\/global","devtools.context\/get-console"]}
|
||||
@@ -0,0 +1,114 @@
|
||||
(ns devtools.core
|
||||
(:require [devtools.prefs :as prefs]
|
||||
[devtools.hints :as hints]
|
||||
[devtools.defaults :refer [feature-groups]]
|
||||
[devtools.formatters :as formatters]
|
||||
[devtools.async :as async]
|
||||
[devtools.toolbox] ; this auto-requires the toolbox namespace, used by cljs-oops
|
||||
[devtools.context :as context]
|
||||
[devtools.util :refer [display-banner-if-needed! install-feature! resolve-features! make-lib-info
|
||||
print-config-overrides-if-requested!
|
||||
under-advanced-build? display-advanced-build-warning-if-needed!]]))
|
||||
|
||||
; -- public API -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn is-feature-available? [feature]
|
||||
(case feature
|
||||
:formatters (formatters/available?)
|
||||
:hints (hints/available?)
|
||||
:async (async/available?)))
|
||||
|
||||
(defn available?
|
||||
([] (available? (prefs/pref :features-to-install)))
|
||||
([features-desc]
|
||||
(let [features (resolve-features! features-desc @feature-groups)]
|
||||
(if (empty? features)
|
||||
false
|
||||
(every? is-feature-available? features)))))
|
||||
|
||||
(defn is-feature-installed? [feature]
|
||||
(case feature
|
||||
:formatters (formatters/installed?)
|
||||
:hints (hints/installed?)
|
||||
:async (async/installed?)))
|
||||
|
||||
(defn installed?
|
||||
([] (installed? (prefs/pref :features-to-install)))
|
||||
([features-desc]
|
||||
(let [features (resolve-features! features-desc @feature-groups)]
|
||||
(if (empty? features)
|
||||
false
|
||||
(every? is-feature-installed? features)))))
|
||||
|
||||
(defn install!
|
||||
([] (install! (prefs/pref :features-to-install)))
|
||||
([features-desc]
|
||||
(if (under-advanced-build?)
|
||||
(display-advanced-build-warning-if-needed!)
|
||||
(let [features (resolve-features! features-desc @feature-groups)]
|
||||
(display-banner-if-needed! features @feature-groups)
|
||||
(print-config-overrides-if-requested! "config overrides prior install:\n")
|
||||
(install-feature! :formatters features is-feature-available? formatters/install!)
|
||||
(install-feature! :hints features is-feature-available? hints/install!)
|
||||
(install-feature! :async features is-feature-available? async/install!)))))
|
||||
|
||||
(defn uninstall! []
|
||||
(formatters/uninstall!)
|
||||
(hints/uninstall!)
|
||||
(async/uninstall!))
|
||||
|
||||
(defn set-prefs! [new-prefs]
|
||||
(prefs/set-prefs! new-prefs))
|
||||
|
||||
(defn get-prefs []
|
||||
(prefs/get-prefs))
|
||||
|
||||
(defn set-pref! [pref val]
|
||||
(prefs/set-pref! pref val))
|
||||
|
||||
; -- deprecated API ---------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn enable! []
|
||||
(.warn (context/get-console) (str "devtools.core/enable! was removed "
|
||||
"and has no effect in " (make-lib-info) " "
|
||||
"=> remove the call")))
|
||||
|
||||
(defn disable! []
|
||||
(.warn (context/get-console) (str "devtools.core/disable! was removed "
|
||||
"and has no effect in " (make-lib-info) " "
|
||||
"=> remove the call")))
|
||||
|
||||
(defn set-single-feature! [_feature _val]
|
||||
(.warn (context/get-console) (str "devtools.core/set-single-feature! was removed "
|
||||
"and has no effect in " (make-lib-info) " "
|
||||
"=> use (devtools.core/install! features) to install custom features")))
|
||||
|
||||
(defn enable-single-feature! [_feature]
|
||||
(.warn (context/get-console) (str "devtools.core/enable-single-feature! was removed "
|
||||
"and has no effect in " (make-lib-info) " "
|
||||
"=> use (devtools.core/install! features) to install custom features")))
|
||||
|
||||
(defn disable-single-feature! [_feature]
|
||||
(.warn (context/get-console) (str "devtools.core/disable-single-feature! was removed "
|
||||
"and has no effect in " (make-lib-info) " "
|
||||
"=> use (devtools.core/install! features) to install custom features")))
|
||||
|
||||
(defn enable-feature! [& _features]
|
||||
(.warn (context/get-console) (str "devtools.core/enable-feature! was removed "
|
||||
"and has no effect in " (make-lib-info) " "
|
||||
"=> use (devtools.core/install! features) to install custom features")))
|
||||
|
||||
(defn disable-feature! [& _features]
|
||||
(.warn (context/get-console) (str "devtools.core/disable-feature! was removed "
|
||||
"and has no effect in " (make-lib-info) " "
|
||||
"=> use (devtools.core/install! features) to install custom features")))
|
||||
|
||||
(defn single-feature-available? [_feature]
|
||||
(.warn (context/get-console) (str "devtools.core/single-feature-available? was removed "
|
||||
"and has no effect in " (make-lib-info) " "
|
||||
"=> use devtools.core/is-feature-available? instead")))
|
||||
|
||||
(defn feature-available? [& _features]
|
||||
(.warn (context/get-console) (str "devtools.core/feature-available? was removed "
|
||||
"and has no effect in " (make-lib-info) " "
|
||||
"=> use devtools.core/is-feature-available? instead")))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {Error {}}, :use-macros {}, :excludes #{}, :name devtools.core, :imports nil, :requires {prefs devtools.prefs, devtools.toolbox devtools.toolbox, hints devtools.hints, async devtools.async, formatters devtools.formatters, devtools.util devtools.util, devtools.async devtools.async, devtools.formatters devtools.formatters, devtools.hints devtools.hints, devtools.context devtools.context, devtools.defaults devtools.defaults, context devtools.context, devtools.prefs devtools.prefs}, :cljs.spec/speced-vars [], :uses {feature-groups devtools.defaults, under-advanced-build? devtools.util, display-banner-if-needed! devtools.util, install-feature! devtools.util, make-lib-info devtools.util, resolve-features! devtools.util, print-config-overrides-if-requested! devtools.util, display-advanced-build-warning-if-needed! devtools.util}, :defs {is-feature-available? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/core.cljs", :line 15, :column 7, :end-line 15, :end-column 28, :arglists (quote ([feature]))}, :name devtools.core/is-feature-available?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/core.cljs", :end-column 28, :method-params ([feature]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 15, :end-line 15, :max-fixed-arity 1, :fn-var true, :arglists (quote ([feature]))}, enable! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/core.cljs", :line 71, :column 7, :end-line 71, :end-column 14, :arglists (quote ([]))}, :name devtools.core/enable!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/core.cljs", :end-column 14, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 71, :end-line 71, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, get-prefs {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/core.cljs", :line 63, :column 7, :end-line 63, :end-column 16, :arglists (quote ([]))}, :name devtools.core/get-prefs, :variadic false, :file "target/cljsbuild/public/js/out/devtools/core.cljs", :end-column 16, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 63, :end-line 63, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, set-pref! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/core.cljs", :line 66, :column 7, :end-line 66, :end-column 16, :arglists (quote ([pref val]))}, :name devtools.core/set-pref!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/core.cljs", :end-column 16, :method-params ([pref val]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 66, :end-line 66, :max-fixed-arity 2, :fn-var true, :arglists (quote ([pref val]))}, feature-available? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/core.cljs", :line 111, :column 7, :end-line 111, :end-column 25, :arglists (quote ([& _features])), :top-fn {:variadic true, :max-fixed-arity 0, :method-params [(_features)], :arglists ([& _features]), :arglists-meta (nil)}}, :name devtools.core/feature-available?, :variadic true, :file "target/cljsbuild/public/js/out/devtools/core.cljs", :end-column 25, :top-fn {:variadic true, :max-fixed-arity 0, :method-params [(_features)], :arglists ([& _features]), :arglists-meta (nil)}, :method-params [(_features)], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 111, :end-line 111, :max-fixed-arity 0, :fn-var true, :arglists ([& _features])}, set-single-feature! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/core.cljs", :line 81, :column 7, :end-line 81, :end-column 26, :arglists (quote ([_feature _val]))}, :name devtools.core/set-single-feature!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/core.cljs", :end-column 26, :method-params ([_feature _val]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 81, :end-line 81, :max-fixed-arity 2, :fn-var true, :arglists (quote ([_feature _val]))}, install! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/core.cljs", :line 43, :column 7, :end-line 43, :end-column 15, :arglists (quote ([] [features-desc])), :top-fn {:variadic false, :max-fixed-arity 1, :method-params ([] [features-desc]), :arglists ([] [features-desc]), :arglists-meta (nil nil)}}, :name devtools.core/install!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/core.cljs", :end-column 15, :top-fn {:variadic false, :max-fixed-arity 1, :method-params ([] [features-desc]), :arglists ([] [features-desc]), :arglists-meta (nil nil)}, :method-params ([] [features-desc]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 43, :end-line 43, :max-fixedLine truncated
|
||||
@@ -0,0 +1,283 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.core');
|
||||
goog.require('cljs.core');
|
||||
goog.require('devtools.prefs');
|
||||
goog.require('devtools.hints');
|
||||
goog.require('devtools.defaults');
|
||||
goog.require('devtools.formatters');
|
||||
goog.require('devtools.async');
|
||||
goog.require('devtools.toolbox');
|
||||
goog.require('devtools.context');
|
||||
goog.require('devtools.util');
|
||||
devtools.core.is_feature_available_QMARK_ = (function devtools$core$is_feature_available_QMARK_(feature){
|
||||
var G__40801 = feature;
|
||||
var G__40801__$1 = (((G__40801 instanceof cljs.core.Keyword))?G__40801.fqn:null);
|
||||
switch (G__40801__$1) {
|
||||
case "formatters":
|
||||
return devtools.formatters.available_QMARK_.call(null);
|
||||
|
||||
break;
|
||||
case "hints":
|
||||
return devtools.hints.available_QMARK_.call(null);
|
||||
|
||||
break;
|
||||
case "async":
|
||||
return devtools.async.available_QMARK_.call(null);
|
||||
|
||||
break;
|
||||
default:
|
||||
throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__40801__$1)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
devtools.core.available_QMARK_ = (function devtools$core$available_QMARK_(var_args){
|
||||
var G__40804 = arguments.length;
|
||||
switch (G__40804) {
|
||||
case 0:
|
||||
return devtools.core.available_QMARK_.cljs$core$IFn$_invoke$arity$0();
|
||||
|
||||
break;
|
||||
case 1:
|
||||
return devtools.core.available_QMARK_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
||||
|
||||
break;
|
||||
default:
|
||||
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
devtools.core.available_QMARK_.cljs$core$IFn$_invoke$arity$0 = (function (){
|
||||
return devtools.core.available_QMARK_.call(null,devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"features-to-install","features-to-install",102899261)));
|
||||
});
|
||||
|
||||
devtools.core.available_QMARK_.cljs$core$IFn$_invoke$arity$1 = (function (features_desc){
|
||||
var features = devtools.util.resolve_features_BANG_.call(null,features_desc,cljs.core.deref.call(null,devtools.defaults.feature_groups));
|
||||
if(cljs.core.empty_QMARK_.call(null,features)){
|
||||
return false;
|
||||
} else {
|
||||
return cljs.core.every_QMARK_.call(null,devtools.core.is_feature_available_QMARK_,features);
|
||||
}
|
||||
});
|
||||
|
||||
devtools.core.available_QMARK_.cljs$lang$maxFixedArity = 1;
|
||||
|
||||
devtools.core.is_feature_installed_QMARK_ = (function devtools$core$is_feature_installed_QMARK_(feature){
|
||||
var G__40806 = feature;
|
||||
var G__40806__$1 = (((G__40806 instanceof cljs.core.Keyword))?G__40806.fqn:null);
|
||||
switch (G__40806__$1) {
|
||||
case "formatters":
|
||||
return devtools.formatters.installed_QMARK_.call(null);
|
||||
|
||||
break;
|
||||
case "hints":
|
||||
return devtools.hints.installed_QMARK_.call(null);
|
||||
|
||||
break;
|
||||
case "async":
|
||||
return devtools.async.installed_QMARK_.call(null);
|
||||
|
||||
break;
|
||||
default:
|
||||
throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__40806__$1)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
devtools.core.installed_QMARK_ = (function devtools$core$installed_QMARK_(var_args){
|
||||
var G__40809 = arguments.length;
|
||||
switch (G__40809) {
|
||||
case 0:
|
||||
return devtools.core.installed_QMARK_.cljs$core$IFn$_invoke$arity$0();
|
||||
|
||||
break;
|
||||
case 1:
|
||||
return devtools.core.installed_QMARK_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
||||
|
||||
break;
|
||||
default:
|
||||
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
devtools.core.installed_QMARK_.cljs$core$IFn$_invoke$arity$0 = (function (){
|
||||
return devtools.core.installed_QMARK_.call(null,devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"features-to-install","features-to-install",102899261)));
|
||||
});
|
||||
|
||||
devtools.core.installed_QMARK_.cljs$core$IFn$_invoke$arity$1 = (function (features_desc){
|
||||
var features = devtools.util.resolve_features_BANG_.call(null,features_desc,cljs.core.deref.call(null,devtools.defaults.feature_groups));
|
||||
if(cljs.core.empty_QMARK_.call(null,features)){
|
||||
return false;
|
||||
} else {
|
||||
return cljs.core.every_QMARK_.call(null,devtools.core.is_feature_installed_QMARK_,features);
|
||||
}
|
||||
});
|
||||
|
||||
devtools.core.installed_QMARK_.cljs$lang$maxFixedArity = 1;
|
||||
|
||||
devtools.core.install_BANG_ = (function devtools$core$install_BANG_(var_args){
|
||||
var G__40812 = arguments.length;
|
||||
switch (G__40812) {
|
||||
case 0:
|
||||
return devtools.core.install_BANG_.cljs$core$IFn$_invoke$arity$0();
|
||||
|
||||
break;
|
||||
case 1:
|
||||
return devtools.core.install_BANG_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
||||
|
||||
break;
|
||||
default:
|
||||
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
devtools.core.install_BANG_.cljs$core$IFn$_invoke$arity$0 = (function (){
|
||||
return devtools.core.install_BANG_.call(null,devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"features-to-install","features-to-install",102899261)));
|
||||
});
|
||||
|
||||
devtools.core.install_BANG_.cljs$core$IFn$_invoke$arity$1 = (function (features_desc){
|
||||
if(cljs.core.truth_(devtools.util.under_advanced_build_QMARK_.call(null))){
|
||||
return devtools.util.display_advanced_build_warning_if_needed_BANG_.call(null);
|
||||
} else {
|
||||
var features = devtools.util.resolve_features_BANG_.call(null,features_desc,cljs.core.deref.call(null,devtools.defaults.feature_groups));
|
||||
devtools.util.display_banner_if_needed_BANG_.call(null,features,cljs.core.deref.call(null,devtools.defaults.feature_groups));
|
||||
|
||||
devtools.util.print_config_overrides_if_requested_BANG_.call(null,"config overrides prior install:\n");
|
||||
|
||||
devtools.util.install_feature_BANG_.call(null,new cljs.core.Keyword(null,"formatters","formatters",-1875637118),features,devtools.core.is_feature_available_QMARK_,devtools.formatters.install_BANG_);
|
||||
|
||||
devtools.util.install_feature_BANG_.call(null,new cljs.core.Keyword(null,"hints","hints",-991113151),features,devtools.core.is_feature_available_QMARK_,devtools.hints.install_BANG_);
|
||||
|
||||
return devtools.util.install_feature_BANG_.call(null,new cljs.core.Keyword(null,"async","async",1050769601),features,devtools.core.is_feature_available_QMARK_,devtools.async.install_BANG_);
|
||||
}
|
||||
});
|
||||
|
||||
devtools.core.install_BANG_.cljs$lang$maxFixedArity = 1;
|
||||
|
||||
devtools.core.uninstall_BANG_ = (function devtools$core$uninstall_BANG_(){
|
||||
devtools.formatters.uninstall_BANG_.call(null);
|
||||
|
||||
devtools.hints.uninstall_BANG_.call(null);
|
||||
|
||||
return devtools.async.uninstall_BANG_.call(null);
|
||||
});
|
||||
devtools.core.set_prefs_BANG_ = (function devtools$core$set_prefs_BANG_(new_prefs){
|
||||
return devtools.prefs.set_prefs_BANG_.call(null,new_prefs);
|
||||
});
|
||||
devtools.core.get_prefs = (function devtools$core$get_prefs(){
|
||||
return devtools.prefs.get_prefs.call(null);
|
||||
});
|
||||
devtools.core.set_pref_BANG_ = (function devtools$core$set_pref_BANG_(pref,val){
|
||||
return devtools.prefs.set_pref_BANG_.call(null,pref,val);
|
||||
});
|
||||
devtools.core.enable_BANG_ = (function devtools$core$enable_BANG_(){
|
||||
return devtools.context.get_console.call(null).warn(["devtools.core/enable! was removed ","and has no effect in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.make_lib_info.call(null))," ","=> remove the call"].join(''));
|
||||
});
|
||||
devtools.core.disable_BANG_ = (function devtools$core$disable_BANG_(){
|
||||
return devtools.context.get_console.call(null).warn(["devtools.core/disable! was removed ","and has no effect in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.make_lib_info.call(null))," ","=> remove the call"].join(''));
|
||||
});
|
||||
devtools.core.set_single_feature_BANG_ = (function devtools$core$set_single_feature_BANG_(_feature,_val){
|
||||
return devtools.context.get_console.call(null).warn(["devtools.core/set-single-feature! was removed ","and has no effect in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.make_lib_info.call(null))," ","=> use (devtools.core/install! features) to install custom features"].join(''));
|
||||
});
|
||||
devtools.core.enable_single_feature_BANG_ = (function devtools$core$enable_single_feature_BANG_(_feature){
|
||||
return devtools.context.get_console.call(null).warn(["devtools.core/enable-single-feature! was removed ","and has no effect in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.make_lib_info.call(null))," ","=> use (devtools.core/install! features) to install custom features"].join(''));
|
||||
});
|
||||
devtools.core.disable_single_feature_BANG_ = (function devtools$core$disable_single_feature_BANG_(_feature){
|
||||
return devtools.context.get_console.call(null).warn(["devtools.core/disable-single-feature! was removed ","and has no effect in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.make_lib_info.call(null))," ","=> use (devtools.core/install! features) to install custom features"].join(''));
|
||||
});
|
||||
devtools.core.enable_feature_BANG_ = (function devtools$core$enable_feature_BANG_(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___40815 = arguments.length;
|
||||
var i__36778__auto___40816 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___40816 < len__36777__auto___40815)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___40816]));
|
||||
|
||||
var G__40817 = (i__36778__auto___40816 + (1));
|
||||
i__36778__auto___40816 = G__40817;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.core.enable_feature_BANG_.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.core.enable_feature_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (_features){
|
||||
return devtools.context.get_console.call(null).warn(["devtools.core/enable-feature! was removed ","and has no effect in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.make_lib_info.call(null))," ","=> use (devtools.core/install! features) to install custom features"].join(''));
|
||||
});
|
||||
|
||||
devtools.core.enable_feature_BANG_.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.core.enable_feature_BANG_.cljs$lang$applyTo = (function (seq40814){
|
||||
return devtools.core.enable_feature_BANG_.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq40814));
|
||||
});
|
||||
|
||||
devtools.core.disable_feature_BANG_ = (function devtools$core$disable_feature_BANG_(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___40819 = arguments.length;
|
||||
var i__36778__auto___40820 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___40820 < len__36777__auto___40819)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___40820]));
|
||||
|
||||
var G__40821 = (i__36778__auto___40820 + (1));
|
||||
i__36778__auto___40820 = G__40821;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.core.disable_feature_BANG_.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.core.disable_feature_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (_features){
|
||||
return devtools.context.get_console.call(null).warn(["devtools.core/disable-feature! was removed ","and has no effect in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.make_lib_info.call(null))," ","=> use (devtools.core/install! features) to install custom features"].join(''));
|
||||
});
|
||||
|
||||
devtools.core.disable_feature_BANG_.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.core.disable_feature_BANG_.cljs$lang$applyTo = (function (seq40818){
|
||||
return devtools.core.disable_feature_BANG_.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq40818));
|
||||
});
|
||||
|
||||
devtools.core.single_feature_available_QMARK_ = (function devtools$core$single_feature_available_QMARK_(_feature){
|
||||
return devtools.context.get_console.call(null).warn(["devtools.core/single-feature-available? was removed ","and has no effect in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.make_lib_info.call(null))," ","=> use devtools.core/is-feature-available? instead"].join(''));
|
||||
});
|
||||
devtools.core.feature_available_QMARK_ = (function devtools$core$feature_available_QMARK_(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___40823 = arguments.length;
|
||||
var i__36778__auto___40824 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___40824 < len__36777__auto___40823)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___40824]));
|
||||
|
||||
var G__40825 = (i__36778__auto___40824 + (1));
|
||||
i__36778__auto___40824 = G__40825;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.core.feature_available_QMARK_.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.core.feature_available_QMARK_.cljs$core$IFn$_invoke$arity$variadic = (function (_features){
|
||||
return devtools.context.get_console.call(null).warn(["devtools.core/feature-available? was removed ","and has no effect in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.make_lib_info.call(null))," ","=> use devtools.core/is-feature-available? instead"].join(''));
|
||||
});
|
||||
|
||||
devtools.core.feature_available_QMARK_.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.core.feature_available_QMARK_.cljs$lang$applyTo = (function (seq40822){
|
||||
return devtools.core.feature_available_QMARK_.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq40822));
|
||||
});
|
||||
|
||||
|
||||
//# sourceMappingURL=core.js.map?rel=1517021944650
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/core.js","sources":["core.cljs?rel=1517021944651"],"lineCount":283,"mappings":"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","names":["devtools.core\/is-feature-available?","feature","G__40801","cljs.core\/Keyword","js\/Error","devtools.formatters\/available?","devtools.hints\/available?","devtools.async\/available?","var_args","G__40804","devtools.core\/available?","devtools.prefs\/pref","features-desc","features","cljs.core\/deref","devtools.util\/resolve-features!","devtools.defaults\/feature-groups","cljs.core\/empty?","cljs.core\/every?","devtools.core\/is-feature-installed?","G__40806","devtools.formatters\/installed?","devtools.hints\/installed?","devtools.async\/installed?","G__40809","devtools.core\/installed?","G__40812","devtools.core\/install!","devtools.util\/under-advanced-build?","devtools.util\/display-advanceLine truncated
|
||||
@@ -0,0 +1,396 @@
|
||||
(ns devtools.defaults
|
||||
; warning: when touching this ns form, update also eval-css-arg in defaults.clj
|
||||
(:require-macros [devtools.defaults :as d :refer [css span named-color]]))
|
||||
|
||||
(def known-features (delay [:formatters :hints :async]))
|
||||
(def default-features (delay [:formatters]))
|
||||
(def feature-groups (delay {:all @known-features
|
||||
:default @default-features}))
|
||||
|
||||
(def config
|
||||
(delay ; see https://github.com/binaryage/cljs-devtools/issues/37
|
||||
{; -- installation ------------------------------------------------------------------------------------------------------
|
||||
|
||||
; you can specify a list/vector of features from known-features or a keyword from feature-groups
|
||||
:features-to-install :default
|
||||
:print-config-overrides false
|
||||
:suppress-preload-install false
|
||||
:bypass-availability-checks false
|
||||
:disable-advanced-mode-check false
|
||||
:file-reader nil
|
||||
|
||||
; -- feature tweaks ----------------------------------------------------------------------------------------------------
|
||||
|
||||
:render-metas true
|
||||
:render-nils true
|
||||
:render-bools true
|
||||
:render-strings true
|
||||
:render-numbers true
|
||||
:render-keywords true
|
||||
:render-symbols true
|
||||
:render-instances true
|
||||
:render-types true
|
||||
:render-functions true
|
||||
|
||||
:disable-cljs-fn-formatting false ; deprecated, use :render-functions instead
|
||||
|
||||
; -- verbosity controls ------------------------------------------------------------------------------------------------
|
||||
|
||||
:max-print-level 2
|
||||
:body-line-max-print-level 3
|
||||
:max-header-elements 5
|
||||
:min-expandable-sequable-count 0 ; false/nil means "never expandable", 0 means "always expandable" (unless empty)
|
||||
:min-expandable-sequable-count-for-well-known-types 4 ; false/nil means "never expandable", 0 means "always expandable" (unless empty)
|
||||
:max-number-body-items 100
|
||||
:string-prefix-limit 20
|
||||
:string-postfix-limit 20
|
||||
:sanity-hint-min-length 128
|
||||
:max-instance-header-fields 3
|
||||
:max-instance-custom-printing-level 2
|
||||
:max-list-protocols 5
|
||||
:max-protocol-method-arities-list 3
|
||||
:initial-hierarchy-depth-budget (dec 20) ; set to false to disable, issue #22
|
||||
|
||||
; by default, well known types will render only via cljs printer, we won't wrap them in the blue-ish type info
|
||||
:well-known-types #{"cljs.core/Keyword"
|
||||
"cljs.core/Symbol"
|
||||
"cljs.core/TaggedLiteral"
|
||||
"cljs.core/LazySeq"
|
||||
"cljs.core/LazyTransformer"
|
||||
"cljs.core/IndexedSeq"
|
||||
"cljs.core/RSeq"
|
||||
"cljs.core/PersistentQueueSeq"
|
||||
"cljs.core/PersistentTreeMapSeq"
|
||||
"cljs.core/NodeSeq"
|
||||
"cljs.core/ArrayNodeSeq"
|
||||
"cljs.core/List"
|
||||
"cljs.core/Cons"
|
||||
"cljs.core/EmptyList"
|
||||
"cljs.core/PersistentVector"
|
||||
"cljs.core/ChunkedCons"
|
||||
"cljs.core/ChunkedSeq"
|
||||
"cljs.core/Subvec"
|
||||
"cljs.core/BlackNode"
|
||||
"cljs.core/RedNode"
|
||||
"cljs.core/ObjMap"
|
||||
"cljs.core/KeySeq"
|
||||
"cljs.core/ValSeq"
|
||||
"cljs.core/PersistentArrayMapSeq"
|
||||
"cljs.core/PersistentArrayMap"
|
||||
"cljs.core/PersistentHashMap"
|
||||
"cljs.core/PersistentTreeMap"
|
||||
"cljs.core/PersistentHashSet"
|
||||
"cljs.core/PersistentTreeSet"
|
||||
"cljs.core/Range"
|
||||
"cljs.core/ES6IteratorSeq"
|
||||
"cljs.core/Eduction"
|
||||
"cljs.core/UUID"
|
||||
"cljs.core/ExceptionInfo"}
|
||||
|
||||
; -- pluggable markup --------------------------------------------------------------------------------------------------
|
||||
|
||||
:more-marker "…"
|
||||
:body-items-more-label "more…"
|
||||
:string-abbreviation-marker " … "
|
||||
:multi-arity-symbol "…"
|
||||
:more-symbol "…"
|
||||
:plus-symbol "+"
|
||||
:header-field-value-spacer (span (css (str "color:" (named-color :field-spacer) ";")) "=")
|
||||
:body-field-value-spacer (span (css (str "color:" (named-color :field-spacer) ";")) "=")
|
||||
:header-field-separator " "
|
||||
:more-fields-symbol "…"
|
||||
:instance-value-separator ""
|
||||
:fields-header-open-symbol ""
|
||||
:fields-header-close-symbol ""
|
||||
:fields-header-no-fields-symbol (span :header-field-name-style "∅")
|
||||
:rest-symbol " & "
|
||||
:args-open-symbol "["
|
||||
:args-close-symbol "]"
|
||||
:new-line-string-replacer "↵"
|
||||
:line-index-separator ""
|
||||
:dq "\""
|
||||
:protocol-method-arities-more-symbol "…"
|
||||
:protocol-method-arities-list-header-separator " "
|
||||
:spacer " "
|
||||
:nil-label "nil"
|
||||
:default-envelope-header "\uD83D\uDCE8" ; U+1F4E8: INCOMING ENVELOPE, http://www.charbase.com/1f4e8-unicode-incoming-envelope
|
||||
:list-separator " "
|
||||
:list-open-symbol ""
|
||||
:list-close-symbol ""
|
||||
:empty-basis-symbol (span (css) :basis-icon (span :type-basis-item-style "∅"))
|
||||
:expandable-symbol ""
|
||||
:header-expander-symbol (span (css) "~")
|
||||
|
||||
; -- backgrounds -------------------------------------------------------------------------------------------------------
|
||||
|
||||
:instance-custom-printing-background (d/get-custom-printing-background-markup)
|
||||
:type-header-background (d/get-instance-type-header-background-markup)
|
||||
:native-reference-background (d/get-native-reference-background-markup)
|
||||
:protocol-background (d/get-protocol-background-markup)
|
||||
:instance-header-background nil
|
||||
|
||||
; -- icons -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:basis-icon (d/icon "β" (named-color :basis))
|
||||
:protocols-icon (d/icon "⊢" (named-color :protocol))
|
||||
:fields-icon (d/icon "∋" (named-color :field))
|
||||
:method-icon (d/icon "m" (named-color :method))
|
||||
:ns-icon (d/icon "in" (named-color :ns))
|
||||
:native-icon (d/icon "js" (named-color :native))
|
||||
:lambda-icon (d/icon "λ" (named-color :lambda))
|
||||
:fn-icon (d/icon "fn" (named-color :fn))
|
||||
:circular-ref-icon (d/icon "∞" (named-color :circular-ref) :slim)
|
||||
|
||||
; -- tags --------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:cljs-land-tag [:span :cljs-land-style]
|
||||
:header-tag [:span :header-style]
|
||||
:item-tag [:span :item-style]
|
||||
:nil-tag [:span :nil-style]
|
||||
:bool-tag [:span :bool-style]
|
||||
:keyword-tag [:span :keyword-style]
|
||||
:symbol-tag [:span :symbol-style]
|
||||
:integer-tag [:span :integer-style]
|
||||
:float-tag [:span :float-style]
|
||||
:string-tag [:span :string-style]
|
||||
:expanded-string-tag [:span :expanded-string-style]
|
||||
:circular-reference-tag [:span :circular-reference-wrapper-style]
|
||||
:circular-reference-body-tag [:span :circular-reference-body-style]
|
||||
:native-reference-tag [:span :native-reference-style]
|
||||
:native-reference-wrapper-tag [:span :native-reference-wrapper-style]
|
||||
:meta-wrapper-tag [:span :meta-wrapper-style]
|
||||
:meta-header-tag [:span :meta-style]
|
||||
:meta-body-tag [:span :meta-body-style]
|
||||
:meta-reference-tag [:span :meta-reference-style]
|
||||
:body-tag [:span :body-style]
|
||||
:index-tag [:span :index-style]
|
||||
:standard-ol-tag [:ol :standard-ol-style]
|
||||
:standard-ol-no-margin-tag [:ol :standard-ol-no-margin-style]
|
||||
:standard-li-tag [:li :standard-li-style]
|
||||
:standard-li-no-margin-tag [:li :standard-li-no-margin-style]
|
||||
:aligned-li-tag [:li :aligned-li-style]
|
||||
:body-items-more-tag [:span :body-items-more-style]
|
||||
:fn-args-tag [:span :fn-args-style]
|
||||
:fn-name-tag [:span :fn-name-style]
|
||||
:fn-prefix-tag [:span :fn-prefix-style]
|
||||
:fn-header-tag [:span :fn-header-style]
|
||||
:fn-multi-arity-args-indent-tag [:span :fn-multi-arity-args-indent-style]
|
||||
:fn-ns-name-tag [:span :fn-ns-name-style]
|
||||
:type-wrapper-tag [:span :type-wrapper-style]
|
||||
:type-header-tag [:span :type-header-style]
|
||||
:type-name-tag [:span :type-name-style]
|
||||
:type-ref-tag [:span :type-ref-style]
|
||||
:type-basis-tag [:span :type-basis-style]
|
||||
:type-basis-item-tag [:span :type-basis-item-style]
|
||||
:standalone-type-tag [:span :standalone-type-style]
|
||||
:header-field-tag [:span :header-field-style]
|
||||
:header-field-name-tag [:span :header-field-name-style]
|
||||
:header-field-value-tag [:span :header-field-value-style]
|
||||
:instance-body-fields-table-tag [:table :instance-body-fields-table-style]
|
||||
:body-field-tr-tag [:tr :body-field-tr-style]
|
||||
:body-field-td1-tag [:td :body-field-td1-style]
|
||||
:body-field-td2-tag [:td :body-field-td2-style]
|
||||
:body-field-td3-tag [:td :body-field-td3-style]
|
||||
:body-field-name-tag [:span :body-field-name-style]
|
||||
:body-field-value-tag [:span :body-field-value-style]
|
||||
:fields-header-tag [:span :fields-header-style]
|
||||
:protocol-method-arities-header-tag [:span :protocol-method-arities-header-style]
|
||||
:protocol-name-tag [:span :protocol-name-style]
|
||||
:protocol-method-tag [:span :protocol-method-style]
|
||||
:protocol-method-name-tag [:span :protocol-method-name-style]
|
||||
:protocol-ns-name-tag [:span :protocol-ns-name-style]
|
||||
:protocols-header-tag [:span :protocols-header-style]
|
||||
:protocol-more-tag [:span :protocol-more-style]
|
||||
:fast-protocol-tag [:span :fast-protocol-style]
|
||||
:slow-protocol-tag [:span :slow-protocol-style]
|
||||
:instance-value-tag [:span :instance-value-style]
|
||||
:instance-custom-printing-wrapper-tag [:span :instance-custom-printing-wrapper-style]
|
||||
:instance-header-tag [:span :instance-header-style]
|
||||
:instance-type-header-tag [:span :instance-type-header-style]
|
||||
:list-tag [:span :list-style]
|
||||
:expandable-tag [:span :expandable-style]
|
||||
:expandable-inner-tag [:span :expandable-inner-style]
|
||||
:instance-custom-printing-tag [:span :instance-custom-printing-style]
|
||||
:default-envelope-tag [:span :default-envelope-style]
|
||||
|
||||
; -- DOM tags mapping ----------------------------------------------------------------------------------------------------
|
||||
|
||||
:span "span"
|
||||
:div "div"
|
||||
:ol "ol"
|
||||
:li "li"
|
||||
:table "table"
|
||||
:td "td"
|
||||
:tr "tr"
|
||||
|
||||
; -- styles ------------------------------------------------------------------------------------------------------------
|
||||
|
||||
:cljs-land-style (css (str "background-color: " (named-color :signature-background) ";")
|
||||
(str "color: " (named-color :base-text-color) ";") ; prevent leaking in text colors from "outside"
|
||||
"border-radius: 2px;")
|
||||
|
||||
:header-style (css "white-space: nowrap;") ; this prevents jumping of content when expanding sections due to content wrapping
|
||||
:expandable-style (css "white-space: nowrap;"
|
||||
"padding-left: 3px;")
|
||||
:expandable-inner-style (css "margin-left: -3px;")
|
||||
:item-style (css "display: inline-block;"
|
||||
"white-space: nowrap;"
|
||||
"border-left: 2px solid rgba(100, 100, 100, 0.2);"
|
||||
"padding: 0px 4px 0px 4px;"
|
||||
"margin: 1px 0px 0px 0px;")
|
||||
|
||||
:fn-header-style (css)
|
||||
:fn-prefix-style (css)
|
||||
:nil-style (css (str "color: " (named-color :nil) ";"))
|
||||
:keyword-style (css (str "color: " (named-color :keyword) ";"))
|
||||
:integer-style (css (str "color: " (named-color :integer) ";"))
|
||||
:float-style (css (str "color: " (named-color :float) ";"))
|
||||
:string-style (css (str "color: " (named-color :string) ";"))
|
||||
:symbol-style (css (str "color: " (named-color :symbol) ";"))
|
||||
:bool-style (css (str "color: " (named-color :bool) ";"))
|
||||
|
||||
; native reference wrapper is here to counter some "evil" internal DevTools styles in treeoutline.css
|
||||
; namely :host padding[1] and li min-height[2]
|
||||
; [1] https://github.com/binaryage/dirac/blob/acdf79e782510f6cdac609def3f561d5d04c86c8/front_end/ui/treeoutline.css#L9
|
||||
; [2] https://github.com/binaryage/dirac/blob/acdf79e782510f6cdac609def3f561d5d04c86c8/front_end/ui/treeoutline.css#L80
|
||||
:native-reference-wrapper-style (css "position: relative;"
|
||||
"display: inline-flex;")
|
||||
:native-reference-style (css "padding: 0px 3px;"
|
||||
"margin: -4px 0px -2px;"
|
||||
"position: relative;"
|
||||
"top: 1px;")
|
||||
|
||||
:type-wrapper-style (css "position: relative;"
|
||||
"padding-left: 1px;"
|
||||
"border-radius: 2px;")
|
||||
:type-ref-style (css "position: relative;")
|
||||
:type-header-style (css (d/get-common-type-header-style)
|
||||
"border-radius: 2px;")
|
||||
:type-name-style (css "padding-right: 4px;")
|
||||
:type-basis-style (css "margin-right: 3px;")
|
||||
:type-basis-item-style (css (str "color: " (named-color :basis) ";")
|
||||
"margin-right: 6px;")
|
||||
:protocol-name-style (css "position: relative;")
|
||||
:fast-protocol-style (css (d/get-common-protocol-style)
|
||||
(str "color: " (named-color :fast-protocol) ";"))
|
||||
:slow-protocol-style (css (d/get-common-protocol-style)
|
||||
(str "color: " (named-color :slow-protocol) ";"))
|
||||
:protocol-more-style (css "font-size: 8px;"
|
||||
"position: relative;")
|
||||
:protocol-ns-name-style (css (str "color: " (named-color :ns) ";"))
|
||||
:list-style (css)
|
||||
|
||||
:body-field-name-style (css (str "color: " (named-color :field) ";"))
|
||||
:body-field-value-style (css "margin-left: 6px;")
|
||||
:header-field-name-style (css (str "color: " (named-color :field) ";"))
|
||||
:body-field-td1-style (css "vertical-align: top;"
|
||||
"padding: 0;"
|
||||
"padding-right: 4px;")
|
||||
:body-field-td2-style (css "vertical-align: top;"
|
||||
"padding: 0;")
|
||||
:body-field-td3-style (css "vertical-align: top;"
|
||||
"padding: 0;")
|
||||
:instance-header-style (css (d/type-outline-style)
|
||||
"position:relative;")
|
||||
:expandable-wrapper-style (css)
|
||||
:standalone-type-style (css (d/type-outline-style))
|
||||
:instance-custom-printing-style (css "position: relative;"
|
||||
"padding: 0 2px 0 4px;")
|
||||
:instance-custom-printing-wrapper-style (css "position: relative;"
|
||||
"border-radius: 2px;")
|
||||
:instance-type-header-style (css (d/get-common-type-header-style)
|
||||
"border-radius: 2px 0 0 2px;")
|
||||
:instance-body-fields-table-style (css "border-spacing: 0;"
|
||||
"border-collapse: collapse;"
|
||||
"margin-bottom: -2px;" ; weird spacing workaround
|
||||
"display: inline-block;")
|
||||
:fields-header-style (css "padding: 0px 3px;")
|
||||
|
||||
:protocol-method-name-style (css "margin-right: 6px;"
|
||||
(str "color: " (named-color :protocol) " ;"))
|
||||
|
||||
:meta-wrapper-style (css (str "box-shadow: 0px 0px 0px 1px " (named-color :meta) " inset;")
|
||||
"margin-top: 1px;"
|
||||
"border-radius: 2px;")
|
||||
:meta-reference-style (css (str "background-color:" (named-color :meta) ";")
|
||||
"border-radius: 0 2px 2px 0;")
|
||||
:meta-style (css (str "color: " (named-color :meta-text) ";")
|
||||
"padding: 0px 3px;"
|
||||
"-webkit-user-select: none;")
|
||||
:meta-body-style (css (str "background-color: " (named-color :meta 0.1) ";")
|
||||
(str "box-shadow: 0px 0px 0px 1px " (named-color :meta) " inset;")
|
||||
"position: relative;"
|
||||
"top: -1px;"
|
||||
"padding: 3px 12px;"
|
||||
"border-bottom-right-radius: 2px;")
|
||||
|
||||
:fn-ns-name-style (css (str "color: " (named-color :ns) ";"))
|
||||
:fn-name-style (css (str "color: " (named-color :fn) ";")
|
||||
"margin-right: 2px;")
|
||||
:fn-args-style (css (str "color: " (named-color :fn-args) ";"))
|
||||
:fn-multi-arity-args-indent-style (css "visibility: hidden;")
|
||||
:standard-ol-style (css "list-style-type: none;"
|
||||
"padding-left: 0px;"
|
||||
"margin-top: 0px;"
|
||||
"margin-bottom: 0px;"
|
||||
"margin-left: 0px;")
|
||||
:standard-ol-no-margin-style (css "list-style-type: none;"
|
||||
"padding-left: 0px;"
|
||||
"margin-top: 0px;"
|
||||
"margin-bottom: 0px;"
|
||||
"margin-left: 0px;")
|
||||
:standard-li-style (css "margin-left: 0px;"
|
||||
(d/get-body-line-common-style))
|
||||
:standard-li-no-margin-style (css "margin-left: 0px;"
|
||||
(d/get-body-line-common-style))
|
||||
:aligned-li-style (css "margin-left: 0px;"
|
||||
(d/get-body-line-common-style))
|
||||
|
||||
:body-items-more-style (css (str "background-color:" (named-color :more-background) ";")
|
||||
"min-width: 50px;"
|
||||
"display: inline-block;"
|
||||
(str "color: " (named-color :more) ";")
|
||||
"cursor: pointer;"
|
||||
"line-height: 14px;"
|
||||
"font-size: 10px;"
|
||||
"border-radius: 2px;"
|
||||
"padding: 0px 4px 0px 4px;"
|
||||
"margin: 1px 0px 0px 0px;"
|
||||
"-webkit-user-select: none;")
|
||||
:body-style (css "display: inline-block;"
|
||||
"padding: 3px 12px;"
|
||||
(str "border-top: 2px solid " (named-color :body-border) ";")
|
||||
"margin: 1px;"
|
||||
"margin-top: 0px;"
|
||||
(str "background-color: " (named-color :signature-background) ";"))
|
||||
:index-style (css "min-width: 50px;"
|
||||
"display: inline-block;"
|
||||
"text-align: right;"
|
||||
"vertical-align: top;"
|
||||
(str "background-color: " (named-color :index-background) ";")
|
||||
(str "color: " (named-color :index) ";")
|
||||
"opacity: 0.5;"
|
||||
"margin-right: 3px;"
|
||||
"padding: 0px 4px 0px 4px;"
|
||||
"margin: 1px 0px 0px 0px;"
|
||||
"-webkit-user-select: none;")
|
||||
:expanded-string-style (css "padding: 0px 12px 0px 12px;"
|
||||
(str "color: " (named-color :string) ";")
|
||||
"white-space: pre;"
|
||||
(str "border-top: 1px solid " (named-color :expanded-string-border) ";")
|
||||
"border-radius: 1px;"
|
||||
"margin: 0px 0px 2px 0px;"
|
||||
(str "background-color: " (named-color :expanded-string-background) ";"))
|
||||
:default-envelope-style (css)
|
||||
|
||||
; -- pluggable api handlers --------------------------------------------------------------------------------------------
|
||||
|
||||
:header-pre-handler nil
|
||||
:header-post-handelr nil
|
||||
:has-body-pre-handler nil
|
||||
:has-body-post-handler nil
|
||||
:body-pre-handler nil
|
||||
:body-post-handler nil
|
||||
|
||||
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
}))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :use-macros {named-color devtools.defaults, span devtools.defaults, css devtools.defaults}, :excludes #{}, :name devtools.defaults, :imports nil, :requires nil, :cljs.spec/speced-vars [], :uses nil, :defs {known-features {:name devtools.defaults/known-features, :file "target/cljsbuild/public/js/out/devtools/defaults.cljs", :line 5, :column 1, :end-line 5, :end-column 20, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/defaults.cljs", :line 5, :column 6, :end-line 5, :end-column 20}, :tag cljs.core/Delay}, default-features {:name devtools.defaults/default-features, :file "target/cljsbuild/public/js/out/devtools/defaults.cljs", :line 6, :column 1, :end-line 6, :end-column 22, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/defaults.cljs", :line 6, :column 6, :end-line 6, :end-column 22}, :tag cljs.core/Delay}, feature-groups {:name devtools.defaults/feature-groups, :file "target/cljsbuild/public/js/out/devtools/defaults.cljs", :line 7, :column 1, :end-line 7, :end-column 20, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/defaults.cljs", :line 7, :column 6, :end-line 7, :end-column 20}, :tag cljs.core/Delay}, config {:name devtools.defaults/config, :file "target/cljsbuild/public/js/out/devtools/defaults.cljs", :line 10, :column 1, :end-line 10, :end-column 12, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/defaults.cljs", :line 10, :column 6, :end-line 10, :end-column 12}, :tag cljs.core/Delay}}, :cljs.spec/registry-ref [], :require-macros {d devtools.defaults, devtools.defaults devtools.defaults}, :cljs.analyzer/constants {:seen #{:standalone-type-style :bypass-availability-checks :max-number-body-items :symbol-style :meta-reference-tag :nil-style :instance-custom-printing-tag :type-header-background :instance-value-separator :body-pre-handler :hints :async :initial-hierarchy-depth-budget :body-items-more-tag :line-index-separator :suppress-preload-install :new-line-string-replacer :formatters :body-field-td3-style :more-fields-symbol :body-field-value-spacer :meta-reference-style :protocol-background :protocols-icon :standard-ol-no-margin-tag :symbol-tag :render-keywords :fn-header-tag :keyword-tag :instance-value-style :header-style :render-metas :fields-header-tag :fn-args-style :max-instance-custom-printing-level :protocol-method-arities-header-style :expandable-inner-style :table :fn-header-style :body-items-more-label :fn-name-style :nil-tag :instance-header-style :float-tag :protocol-ns-name-tag :fast-protocol-style :protocol-method-arities-more-symbol :has-body-pre-handler :index-tag :rest-symbol :protocol-name-tag :instance-header-background :body-tag :cljs-land-tag :max-list-protocols :string-abbreviation-marker :max-header-elements :default :native-icon :instance-body-fields-table-tag :render-symbols :protocol-method-name-style :type-name-tag :list-separator :td :header-field-value-spacer :li :fast-protocol-tag :render-strings :standalone-type-tag :protocol-ns-name-style :type-header-tag :cljs-land-style :lambda-icon :list-style :sanity-hint-min-length :header-field-style :render-functions :fields-header-open-symbol :body-field-value-style :circular-reference-wrapper-style :header-pre-handler :tr :body-items-more-style :plus-symbol :fn-prefix-style :args-open-symbol :expanded-string-style :fn-name-tag :header-field-value-tag :standard-li-style :fields-icon :body-style :type-wrapper-tag :standard-li-tag :type-wrapper-style :render-bools :dq :fields-header-no-fields-symbol :nil-label :list-open-symbol :body-field-td2-style :circular-reference-body-style :type-header-style :header-field-separator :body-field-td3-tag :protocols-header-style :standard-ol-no-margin-style :instance-custom-printing-wrapper-style :more-symbol :all :string-tag :meta-wrapper-tag :method-icon :max-protocol-method-arities-list :min-expandable-sequable-count-for-well-known-types :basis-icon :fn-args-tag :standard-ol-style :file-reader :bool-tag :expandable-inner-tag :fn-prefix-tag :float-style :type-basis-item-tag :type-basis-item-style :div :fn-ns-name-tag :body-post-handler :more-marker :header-tag :body-field-name-tag :expanded-string-tag :bool-style :default-envelope-style :protocol-more-tag :string-style :body-field-name-style :meta-body-tag :instance-custom-printing-background :integer-style :native-reference-background :header-field-name-style :default-envelope-header :instance-type-header-style :ol :instance-custom-printing-style :min-expandable-sequable-count :fields-header-style :instance-type-header-tag :spacer :body-field-td1-style :body-field-tr-tag :body-field-tr-style :header-field-name-tag :type-name-style :standard-li-no-margin-tag :list-tag :instance-body-fields-table-style :body-field-td1-tag :disable-advanced-mode-check :standard-li-no-margin-style :header-field-value-style :slow-protocol-style :render-types :args-close-symbLine truncated
|
||||
@@ -0,0 +1,17 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.defaults');
|
||||
goog.require('cljs.core');
|
||||
devtools.defaults.known_features = (new cljs.core.Delay((function (){
|
||||
return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"formatters","formatters",-1875637118),new cljs.core.Keyword(null,"hints","hints",-991113151),new cljs.core.Keyword(null,"async","async",1050769601)], null);
|
||||
}),null));
|
||||
devtools.defaults.default_features = (new cljs.core.Delay((function (){
|
||||
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"formatters","formatters",-1875637118)], null);
|
||||
}),null));
|
||||
devtools.defaults.feature_groups = (new cljs.core.Delay((function (){
|
||||
return new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"all","all",892129742),cljs.core.deref.call(null,devtools.defaults.known_features),new cljs.core.Keyword(null,"default","default",-1987822328),cljs.core.deref.call(null,devtools.defaults.default_features)], null);
|
||||
}),null));
|
||||
devtools.defaults.config = (new cljs.core.Delay((function (){
|
||||
return cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"standalone-type-style","standalone-type-style",601522528),new cljs.core.Keyword(null,"bypass-availability-checks","bypass-availability-checks",1934691680),new cljs.core.Keyword(null,"max-number-body-items","max-number-body-items",299914624),new cljs.core.Keyword(null,"symbol-style","symbol-style",1022654848),new cljs.core.Keyword(null,"meta-reference-tag","meta-reference-tag",914791936),new cljs.core.Keyword(null,"nil-style","nil-style",-1505044832),new cljs.core.Keyword(null,"instance-custom-printing-tag","instance-custom-printing-tag",-67034432),new cljs.core.Keyword(null,"type-header-background","type-header-background",-810861696),new cljs.core.Keyword(null,"instance-value-separator","instance-value-separator",658858944),new cljs.core.Keyword(null,"body-pre-handler","body-pre-handler",1211926529),new cljs.core.Keyword(null,"initial-hierarchy-depth-budget","initial-hierarchy-depth-budget",-482715807),new cljs.core.Keyword(null,"body-items-more-tag","body-items-more-tag",867141569),new cljs.core.Keyword(null,"line-index-separator","line-index-separator",-1735989246),new cljs.core.Keyword(null,"suppress-preload-install","suppress-preload-install",1724845090),new cljs.core.Keyword(null,"new-line-string-replacer","new-line-string-replacer",-753206206),new cljs.core.Keyword(null,"body-field-td3-style","body-field-td3-style",53039394),new cljs.core.Keyword(null,"more-fields-symbol","more-fields-symbol",720022882),new cljs.core.Keyword(null,"body-field-value-spacer","body-field-value-spacer",1279911362),new cljs.core.Keyword(null,"meta-reference-style","meta-reference-style",-1930118462),new cljs.core.Keyword(null,"protocol-background","protocol-background",1111513794),new cljs.core.Keyword(null,"protocols-icon","protocols-icon",-517302494),new cljs.core.Keyword(null,"standard-ol-no-margin-tag","standard-ol-no-margin-tag",583023747),new cljs.core.Keyword(null,"symbol-tag","symbol-tag",-100807517),new cljs.core.Keyword(null,"render-keywords","render-keywords",1200455875),new cljs.core.Keyword(null,"fn-header-tag","fn-header-tag",-1262068349),new cljs.core.Keyword(null,"keyword-tag","keyword-tag",1587228387),new cljs.core.Keyword(null,"header-style","header-style",-2122121341),new cljs.core.Keyword(null,"render-metas","render-metas",1141294116),new cljs.core.Keyword(null,"fields-header-tag","fields-header-tag",1339134308),new cljs.core.Keyword(null,"fn-args-style","fn-args-style",-2141623900),new cljs.core.Keyword(null,"max-instance-custom-printing-level","max-instance-custom-printing-level",1876300228),new cljs.core.Keyword(null,"expandable-inner-style","expandable-inner-style",-1596774780),new cljs.core.Keyword(null,"table","table",-564943036),new cljs.core.Keyword(null,"fn-header-style","fn-header-style",985447749),new cljs.core.Keyword(null,"body-items-more-label","body-items-more-label",-1561152123),new cljs.core.Keyword(null,"fn-name-style","fn-name-style",-573451611),new cljs.core.Keyword(null,"nil-tag","nil-tag",-1587449115),new cljs.core.Keyword(null,"instance-header-style","instance-header-style",-373071866),new cljs.core.Keyword(null,"float-tag","float-tag",-390834106),new cljs.core.Keyword(null,"protocol-ns-name-tag","protocol-ns-name-tag",1832081510),new cljs.core.Keyword(null,"fast-protocol-style","fast-protocol-style",-1668076410),new cljs.core.Keyword(null,"protocol-method-arities-more-symbol","protocol-method-arities-more-symbol",-477018522),new cljs.core.Keyword(null,"has-body-pre-handler","has-body-pre-handler",1787020038),new cljs.core.Keyword(null,"index-tag","index-tag",693492486),new cljs.core.Keyword(null,"rest-symbol","rest-symbol",1021371174),new cljs.core.Keyword(null,"protocol-name-tag","protocol-name-tag",1508238310),new cljs.core.Keyword(null,"instance-header-background","instance-header-background",1510357287),new cljs.core.Keyword(null,"body-tag","body-tag",433527431),new cljs.core.Keyword(null,"cljs-land-tag","cljs-land-tag",-7524377),new cljs.core.Keyword(null,"max-list-protocols","max-list-protocols",-537135129),new cljs.core.Keyword(null,"string-abbreviation-marker","string-abbreviation-marker",-347785112),new cljs.core.Keyword(null,"max-header-elements","max-header-elements",713629864),new cljs.core.Keyword(null,"native-icon","native-icon",-126040824),new cljs.core.Keyword(null,"instance-body-fields-table-tag","instance-body-fields-table-tag",1306340776),new cljs.core.Keyword(null,"render-symbols","render-symbols",-887705016),new cljs.core.Keyword(null,"protocol-method-name-style","protocol-method-name-style",-718367832),new cljs.core.Keyword(null,"type-name-tag","type-name-tag",-1317275511),new cljs.core.Keyword(null,"list-separator","list-separator",900562185),new cljs.core.Keyword(null,"td","td",1479933353),new cljs.core.Keyword(null,"header-field-value-spacer","header-field-value-spacer",-1210630679),new cljs.core.Keyword(null,"li","li",723558921),new cljs.core.Keyword(null,"fast-protocol-tag","fasLine truncated
|
||||
}),null));
|
||||
|
||||
//# sourceMappingURL=defaults.js.map?rel=1517021941932
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/defaults.js","sources":["defaults.cljs?rel=1517021941932"],"lineCount":17,"mappings":"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","names":["devtools.defaults\/known-features","cljs.core\/Delay","devtools.defaults\/default-features","devtools.defaults\/feature-groups","cljs.core\/deref","devtools.defaults\/config"]}
|
||||
@@ -0,0 +1,87 @@
|
||||
(ns devtools.format
|
||||
(:require-macros [devtools.oops :refer [oget]])
|
||||
(:require [devtools.context :as context]))
|
||||
|
||||
; WARNING this namespace is here for legacy reasons, it will be removed in future!
|
||||
|
||||
; ---------------------------------------------------------------------------------------------------------------------------
|
||||
; PROTOCOL SUPPORT
|
||||
|
||||
(defprotocol ^:deprecated IDevtoolsFormat ; use IFormat instead
|
||||
(-header [value])
|
||||
(-has-body [value])
|
||||
(-body [value]))
|
||||
|
||||
; -- helpers ----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(def ^:dynamic *setup-done*)
|
||||
|
||||
(defn setup! []
|
||||
(when-not *setup-done*
|
||||
(set! *setup-done* true)
|
||||
|
||||
; note: we cannote require devtools.formatters.templating or .markup because that would lead to circular requires
|
||||
(def make-template-fn (oget (context/get-root) "devtools" "formatters" "templating" "make_template"))
|
||||
(def make-group-fn (oget (context/get-root) "devtools" "formatters" "templating" "make_group"))
|
||||
(def make-reference-fn (oget (context/get-root) "devtools" "formatters" "templating" "make_reference"))
|
||||
(def make-surrogate-fn (oget (context/get-root) "devtools" "formatters" "templating" "make_surrogate"))
|
||||
(def render-markup-fn (oget (context/get-root) "devtools" "formatters" "templating" "render_markup"))
|
||||
(def <header>-fn (oget (context/get-root) "devtools" "formatters" "markup" "_LT_header_GT_"))
|
||||
(def <standard-body>-fn (oget (context/get-root) "devtools" "formatters" "markup" "_LT_standard_body_GT_"))
|
||||
|
||||
(assert make-template-fn)
|
||||
(assert make-group-fn)
|
||||
(assert make-reference-fn)
|
||||
(assert make-surrogate-fn)
|
||||
(assert render-markup-fn)
|
||||
(assert <header>-fn)
|
||||
(assert <standard-body>-fn)))
|
||||
|
||||
(defn- render-markup [& args]
|
||||
(setup!)
|
||||
(apply render-markup-fn args))
|
||||
|
||||
; ---------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
; deprecated functionality, implemented for easier transition from v0.7.x to v0.8
|
||||
|
||||
(defn ^:deprecated make-template [& args]
|
||||
(setup!)
|
||||
(apply make-template-fn args))
|
||||
|
||||
(defn ^:deprecated make-group [& args]
|
||||
(setup!)
|
||||
(apply make-group-fn args))
|
||||
|
||||
(defn ^:deprecated make-surrogate [& args]
|
||||
(setup!)
|
||||
(apply make-surrogate-fn args))
|
||||
|
||||
(defn ^:deprecated template [& args]
|
||||
(setup!)
|
||||
(apply make-template-fn args))
|
||||
|
||||
(defn ^:deprecated group [& args]
|
||||
(setup!)
|
||||
(apply make-group-fn args))
|
||||
|
||||
(defn ^:deprecated surrogate [& args]
|
||||
(setup!)
|
||||
(apply make-surrogate-fn args))
|
||||
|
||||
(defn ^:deprecated reference [object & [state-override]]
|
||||
(setup!)
|
||||
(apply make-reference-fn [object #(merge % state-override)]))
|
||||
|
||||
(defn ^:deprecated standard-reference [target]
|
||||
(setup!)
|
||||
(make-template-fn :ol :standard-ol-style (make-template-fn :li :standard-li-style (make-reference-fn target))))
|
||||
|
||||
(defn ^:deprecated build-header [& args]
|
||||
(setup!)
|
||||
(render-markup (apply <header>-fn args)))
|
||||
|
||||
(defn ^:deprecated standard-body-template [lines & rest]
|
||||
(setup!)
|
||||
(let [args (concat [(map (fn [x] [x]) lines)] rest)]
|
||||
(render-markup (apply <standard-body>-fn args))))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {Error {}}, :use-macros {oget devtools.oops}, :excludes #{}, :name devtools.format, :imports nil, :requires {context devtools.context, devtools.context devtools.context}, :cljs.spec/speced-vars [], :uses nil, :defs {make-template {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/format.cljs", :line 48, :column 20, :end-line 48, :end-column 33, :deprecated true, :arglists (quote ([& args])), :top-fn {:variadic true, :max-fixed-arity 0, :method-params [(args)], :arglists ([& args]), :arglists-meta (nil)}}, :name devtools.format/make-template, :variadic true, :file "target/cljsbuild/public/js/out/devtools/format.cljs", :end-column 33, :top-fn {:variadic true, :max-fixed-arity 0, :method-params [(args)], :arglists ([& args]), :arglists-meta (nil)}, :method-params [(args)], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 48, :deprecated true, :end-line 48, :max-fixed-arity 0, :fn-var true, :arglists ([& args])}, -header {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/format.cljs", :line 11, :column 4, :end-line 11, :end-column 11, :protocol devtools.format/IDevtoolsFormat, :doc nil, :arglists (quote ([value]))}, :protocol devtools.format/IDevtoolsFormat, :name devtools.format/-header, :variadic false, :file "target/cljsbuild/public/js/out/devtools/format.cljs", :end-column 11, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 10, :end-line 11, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value])), :doc nil}, IDevtoolsFormat {:meta {:protocol-symbol true, :file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/format.cljs", :end-column 42, :column 27, :line 10, :protocol-info {:methods {-header [[value]], -has-body [[value]], -body [[value]]}}, :deprecated true, :end-line 10, :doc nil, :jsdoc ("@interface")}, :protocol-symbol true, :name devtools.format/IDevtoolsFormat, :file "target/cljsbuild/public/js/out/devtools/format.cljs", :end-column 42, :column 1, :line 10, :protocol-info {:methods {-header [[value]], -has-body [[value]], -body [[value]]}}, :deprecated true, :info nil, :end-line 10, :tag any, :impls #{}, :doc nil, :jsdoc ("@interface")}, render-markup-fn {:name devtools.format/render-markup-fn, :file "target/cljsbuild/public/js/out/devtools/format.cljs", :line 28, :column 5, :end-line 28, :end-column 26, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/format.cljs", :line 28, :column 10, :end-line 28, :end-column 26}, :tag #{any clj-nil}}, make-surrogate-fn {:name devtools.format/make-surrogate-fn, :file "target/cljsbuild/public/js/out/devtools/format.cljs", :line 27, :column 5, :end-line 27, :end-column 27, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/format.cljs", :line 27, :column 10, :end-line 27, :end-column 27}, :tag #{any clj-nil}}, make-surrogate {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/format.cljs", :line 56, :column 20, :end-line 56, :end-column 34, :deprecated true, :arglists (quote ([& args])), :top-fn {:variadic true, :max-fixed-arity 0, :method-params [(args)], :arglists ([& args]), :arglists-meta (nil)}}, :name devtools.format/make-surrogate, :variadic true, :file "target/cljsbuild/public/js/out/devtools/format.cljs", :end-column 34, :top-fn {:variadic true, :max-fixed-arity 0, :method-params [(args)], :arglists ([& args]), :arglists-meta (nil)}, :method-params [(args)], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 56, :deprecated true, :end-line 56, :max-fixed-arity 0, :fn-var true, :arglists ([& args])}, group {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/format.cljs", :line 64, :column 20, :end-line 64, :end-column 25, :deprecated true, :arglists (quote ([& args])), :top-fn {:variadic true, :max-fixed-arity 0, :method-params [(args)], :arglists ([& args]), :arglists-meta (nil)}}, :name devtools.format/group, :variadic true, :file "target/cljsbuild/public/js/out/devtools/format.cljs", :end-column 25, :top-fn {:variadic true, :max-fixed-arity 0, :method-params [(args)], :arglists ([& args]), :arglists-meta (nil)}, :method-params [(args)], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 64, :deprecated true, :end-line 64, :max-fixed-arity 0, :fn-var true, :arglists ([& args])}, surrogate {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/format.cljs", :line 68, :column 20, :end-line 68, :end-column 29, :deprecated true, :arglists (quote ([& args])), :top-fn {:variadic true, :max-fixed-arity 0, :method-params [(args)], :arglists ([& args]), :arglists-meta (nil)}}, :name devtools.format/surrogate, :variadic true, :file "target/cljsbuild/public/js/out/devtools/formatLine truncated
|
||||
@@ -0,0 +1,597 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.format');
|
||||
goog.require('cljs.core');
|
||||
goog.require('devtools.context');
|
||||
|
||||
/**
|
||||
* @interface
|
||||
*/
|
||||
devtools.format.IDevtoolsFormat = function(){};
|
||||
|
||||
devtools.format._header = (function devtools$format$_header(value){
|
||||
if((!((value == null))) && (!((value.devtools$format$IDevtoolsFormat$_header$arity$1 == null)))){
|
||||
return value.devtools$format$IDevtoolsFormat$_header$arity$1(value);
|
||||
} else {
|
||||
var x__36231__auto__ = (((value == null))?null:value);
|
||||
var m__36232__auto__ = (devtools.format._header[goog.typeOf(x__36231__auto__)]);
|
||||
if(!((m__36232__auto__ == null))){
|
||||
return m__36232__auto__.call(null,value);
|
||||
} else {
|
||||
var m__36232__auto____$1 = (devtools.format._header["_"]);
|
||||
if(!((m__36232__auto____$1 == null))){
|
||||
return m__36232__auto____$1.call(null,value);
|
||||
} else {
|
||||
throw cljs.core.missing_protocol.call(null,"IDevtoolsFormat.-header",value);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
devtools.format._has_body = (function devtools$format$_has_body(value){
|
||||
if((!((value == null))) && (!((value.devtools$format$IDevtoolsFormat$_has_body$arity$1 == null)))){
|
||||
return value.devtools$format$IDevtoolsFormat$_has_body$arity$1(value);
|
||||
} else {
|
||||
var x__36231__auto__ = (((value == null))?null:value);
|
||||
var m__36232__auto__ = (devtools.format._has_body[goog.typeOf(x__36231__auto__)]);
|
||||
if(!((m__36232__auto__ == null))){
|
||||
return m__36232__auto__.call(null,value);
|
||||
} else {
|
||||
var m__36232__auto____$1 = (devtools.format._has_body["_"]);
|
||||
if(!((m__36232__auto____$1 == null))){
|
||||
return m__36232__auto____$1.call(null,value);
|
||||
} else {
|
||||
throw cljs.core.missing_protocol.call(null,"IDevtoolsFormat.-has-body",value);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
devtools.format._body = (function devtools$format$_body(value){
|
||||
if((!((value == null))) && (!((value.devtools$format$IDevtoolsFormat$_body$arity$1 == null)))){
|
||||
return value.devtools$format$IDevtoolsFormat$_body$arity$1(value);
|
||||
} else {
|
||||
var x__36231__auto__ = (((value == null))?null:value);
|
||||
var m__36232__auto__ = (devtools.format._body[goog.typeOf(x__36231__auto__)]);
|
||||
if(!((m__36232__auto__ == null))){
|
||||
return m__36232__auto__.call(null,value);
|
||||
} else {
|
||||
var m__36232__auto____$1 = (devtools.format._body["_"]);
|
||||
if(!((m__36232__auto____$1 == null))){
|
||||
return m__36232__auto____$1.call(null,value);
|
||||
} else {
|
||||
throw cljs.core.missing_protocol.call(null,"IDevtoolsFormat.-body",value);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
devtools.format.setup_BANG_ = (function devtools$format$setup_BANG_(){
|
||||
if(cljs.core.truth_(devtools.format._STAR_setup_done_STAR_)){
|
||||
return null;
|
||||
} else {
|
||||
devtools.format._STAR_setup_done_STAR_ = true;
|
||||
|
||||
devtools.format.make_template_fn = (function (){var temp__5455__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var o38033 = temp__5455__auto__;
|
||||
var temp__5455__auto____$1 = (o38033["formatters"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$1)){
|
||||
var o38034 = temp__5455__auto____$1;
|
||||
var temp__5455__auto____$2 = (o38034["templating"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$2)){
|
||||
var o38035 = temp__5455__auto____$2;
|
||||
return (o38035["make_template"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
devtools.format.make_group_fn = (function (){var temp__5455__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var o38036 = temp__5455__auto__;
|
||||
var temp__5455__auto____$1 = (o38036["formatters"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$1)){
|
||||
var o38037 = temp__5455__auto____$1;
|
||||
var temp__5455__auto____$2 = (o38037["templating"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$2)){
|
||||
var o38038 = temp__5455__auto____$2;
|
||||
return (o38038["make_group"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
devtools.format.make_reference_fn = (function (){var temp__5455__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var o38039 = temp__5455__auto__;
|
||||
var temp__5455__auto____$1 = (o38039["formatters"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$1)){
|
||||
var o38040 = temp__5455__auto____$1;
|
||||
var temp__5455__auto____$2 = (o38040["templating"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$2)){
|
||||
var o38041 = temp__5455__auto____$2;
|
||||
return (o38041["make_reference"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
devtools.format.make_surrogate_fn = (function (){var temp__5455__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var o38042 = temp__5455__auto__;
|
||||
var temp__5455__auto____$1 = (o38042["formatters"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$1)){
|
||||
var o38043 = temp__5455__auto____$1;
|
||||
var temp__5455__auto____$2 = (o38043["templating"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$2)){
|
||||
var o38044 = temp__5455__auto____$2;
|
||||
return (o38044["make_surrogate"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
devtools.format.render_markup_fn = (function (){var temp__5455__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var o38045 = temp__5455__auto__;
|
||||
var temp__5455__auto____$1 = (o38045["formatters"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$1)){
|
||||
var o38046 = temp__5455__auto____$1;
|
||||
var temp__5455__auto____$2 = (o38046["templating"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$2)){
|
||||
var o38047 = temp__5455__auto____$2;
|
||||
return (o38047["render_markup"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
devtools.format._LT_header_GT__fn = (function (){var temp__5455__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var o38048 = temp__5455__auto__;
|
||||
var temp__5455__auto____$1 = (o38048["formatters"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$1)){
|
||||
var o38049 = temp__5455__auto____$1;
|
||||
var temp__5455__auto____$2 = (o38049["markup"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$2)){
|
||||
var o38050 = temp__5455__auto____$2;
|
||||
return (o38050["_LT_header_GT_"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
devtools.format._LT_standard_body_GT__fn = (function (){var temp__5455__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var o38051 = temp__5455__auto__;
|
||||
var temp__5455__auto____$1 = (o38051["formatters"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$1)){
|
||||
var o38052 = temp__5455__auto____$1;
|
||||
var temp__5455__auto____$2 = (o38052["markup"]);
|
||||
if(cljs.core.truth_(temp__5455__auto____$2)){
|
||||
var o38053 = temp__5455__auto____$2;
|
||||
return (o38053["_LT_standard_body_GT_"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
if(cljs.core.truth_(devtools.format.make_template_fn)){
|
||||
} else {
|
||||
throw (new Error("Assert failed: make-template-fn"));
|
||||
}
|
||||
|
||||
if(cljs.core.truth_(devtools.format.make_group_fn)){
|
||||
} else {
|
||||
throw (new Error("Assert failed: make-group-fn"));
|
||||
}
|
||||
|
||||
if(cljs.core.truth_(devtools.format.make_reference_fn)){
|
||||
} else {
|
||||
throw (new Error("Assert failed: make-reference-fn"));
|
||||
}
|
||||
|
||||
if(cljs.core.truth_(devtools.format.make_surrogate_fn)){
|
||||
} else {
|
||||
throw (new Error("Assert failed: make-surrogate-fn"));
|
||||
}
|
||||
|
||||
if(cljs.core.truth_(devtools.format.render_markup_fn)){
|
||||
} else {
|
||||
throw (new Error("Assert failed: render-markup-fn"));
|
||||
}
|
||||
|
||||
if(cljs.core.truth_(devtools.format._LT_header_GT__fn)){
|
||||
} else {
|
||||
throw (new Error("Assert failed: <header>-fn"));
|
||||
}
|
||||
|
||||
if(cljs.core.truth_(devtools.format._LT_standard_body_GT__fn)){
|
||||
return null;
|
||||
} else {
|
||||
throw (new Error("Assert failed: <standard-body>-fn"));
|
||||
}
|
||||
}
|
||||
});
|
||||
devtools.format.render_markup = (function devtools$format$render_markup(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___38055 = arguments.length;
|
||||
var i__36778__auto___38056 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___38056 < len__36777__auto___38055)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___38056]));
|
||||
|
||||
var G__38057 = (i__36778__auto___38056 + (1));
|
||||
i__36778__auto___38056 = G__38057;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.render_markup.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.format.render_markup.cljs$core$IFn$_invoke$arity$variadic = (function (args){
|
||||
devtools.format.setup_BANG_.call(null);
|
||||
|
||||
return cljs.core.apply.call(null,devtools.format.render_markup_fn,args);
|
||||
});
|
||||
|
||||
devtools.format.render_markup.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.format.render_markup.cljs$lang$applyTo = (function (seq38054){
|
||||
return devtools.format.render_markup.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq38054));
|
||||
});
|
||||
|
||||
devtools.format.make_template = (function devtools$format$make_template(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___38059 = arguments.length;
|
||||
var i__36778__auto___38060 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___38060 < len__36777__auto___38059)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___38060]));
|
||||
|
||||
var G__38061 = (i__36778__auto___38060 + (1));
|
||||
i__36778__auto___38060 = G__38061;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.make_template.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.format.make_template.cljs$core$IFn$_invoke$arity$variadic = (function (args){
|
||||
devtools.format.setup_BANG_.call(null);
|
||||
|
||||
return cljs.core.apply.call(null,devtools.format.make_template_fn,args);
|
||||
});
|
||||
|
||||
devtools.format.make_template.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.format.make_template.cljs$lang$applyTo = (function (seq38058){
|
||||
return devtools.format.make_template.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq38058));
|
||||
});
|
||||
|
||||
devtools.format.make_group = (function devtools$format$make_group(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___38063 = arguments.length;
|
||||
var i__36778__auto___38064 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___38064 < len__36777__auto___38063)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___38064]));
|
||||
|
||||
var G__38065 = (i__36778__auto___38064 + (1));
|
||||
i__36778__auto___38064 = G__38065;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.make_group.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.format.make_group.cljs$core$IFn$_invoke$arity$variadic = (function (args){
|
||||
devtools.format.setup_BANG_.call(null);
|
||||
|
||||
return cljs.core.apply.call(null,devtools.format.make_group_fn,args);
|
||||
});
|
||||
|
||||
devtools.format.make_group.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.format.make_group.cljs$lang$applyTo = (function (seq38062){
|
||||
return devtools.format.make_group.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq38062));
|
||||
});
|
||||
|
||||
devtools.format.make_surrogate = (function devtools$format$make_surrogate(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___38067 = arguments.length;
|
||||
var i__36778__auto___38068 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___38068 < len__36777__auto___38067)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___38068]));
|
||||
|
||||
var G__38069 = (i__36778__auto___38068 + (1));
|
||||
i__36778__auto___38068 = G__38069;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.make_surrogate.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.format.make_surrogate.cljs$core$IFn$_invoke$arity$variadic = (function (args){
|
||||
devtools.format.setup_BANG_.call(null);
|
||||
|
||||
return cljs.core.apply.call(null,devtools.format.make_surrogate_fn,args);
|
||||
});
|
||||
|
||||
devtools.format.make_surrogate.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.format.make_surrogate.cljs$lang$applyTo = (function (seq38066){
|
||||
return devtools.format.make_surrogate.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq38066));
|
||||
});
|
||||
|
||||
devtools.format.template = (function devtools$format$template(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___38071 = arguments.length;
|
||||
var i__36778__auto___38072 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___38072 < len__36777__auto___38071)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___38072]));
|
||||
|
||||
var G__38073 = (i__36778__auto___38072 + (1));
|
||||
i__36778__auto___38072 = G__38073;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.template.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.format.template.cljs$core$IFn$_invoke$arity$variadic = (function (args){
|
||||
devtools.format.setup_BANG_.call(null);
|
||||
|
||||
return cljs.core.apply.call(null,devtools.format.make_template_fn,args);
|
||||
});
|
||||
|
||||
devtools.format.template.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.format.template.cljs$lang$applyTo = (function (seq38070){
|
||||
return devtools.format.template.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq38070));
|
||||
});
|
||||
|
||||
devtools.format.group = (function devtools$format$group(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___38075 = arguments.length;
|
||||
var i__36778__auto___38076 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___38076 < len__36777__auto___38075)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___38076]));
|
||||
|
||||
var G__38077 = (i__36778__auto___38076 + (1));
|
||||
i__36778__auto___38076 = G__38077;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.group.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.format.group.cljs$core$IFn$_invoke$arity$variadic = (function (args){
|
||||
devtools.format.setup_BANG_.call(null);
|
||||
|
||||
return cljs.core.apply.call(null,devtools.format.make_group_fn,args);
|
||||
});
|
||||
|
||||
devtools.format.group.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.format.group.cljs$lang$applyTo = (function (seq38074){
|
||||
return devtools.format.group.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq38074));
|
||||
});
|
||||
|
||||
devtools.format.surrogate = (function devtools$format$surrogate(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___38079 = arguments.length;
|
||||
var i__36778__auto___38080 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___38080 < len__36777__auto___38079)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___38080]));
|
||||
|
||||
var G__38081 = (i__36778__auto___38080 + (1));
|
||||
i__36778__auto___38080 = G__38081;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.surrogate.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.format.surrogate.cljs$core$IFn$_invoke$arity$variadic = (function (args){
|
||||
devtools.format.setup_BANG_.call(null);
|
||||
|
||||
return cljs.core.apply.call(null,devtools.format.make_surrogate_fn,args);
|
||||
});
|
||||
|
||||
devtools.format.surrogate.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.format.surrogate.cljs$lang$applyTo = (function (seq38078){
|
||||
return devtools.format.surrogate.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq38078));
|
||||
});
|
||||
|
||||
devtools.format.reference = (function devtools$format$reference(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___38089 = arguments.length;
|
||||
var i__36778__auto___38090 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___38090 < len__36777__auto___38089)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___38090]));
|
||||
|
||||
var G__38091 = (i__36778__auto___38090 + (1));
|
||||
i__36778__auto___38090 = G__38091;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.format.reference.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.format.reference.cljs$core$IFn$_invoke$arity$variadic = (function (object,p__38085){
|
||||
var vec__38086 = p__38085;
|
||||
var state_override = cljs.core.nth.call(null,vec__38086,(0),null);
|
||||
devtools.format.setup_BANG_.call(null);
|
||||
|
||||
return cljs.core.apply.call(null,devtools.format.make_reference_fn,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [object,((function (vec__38086,state_override){
|
||||
return (function (p1__38082_SHARP_){
|
||||
return cljs.core.merge.call(null,p1__38082_SHARP_,state_override);
|
||||
});})(vec__38086,state_override))
|
||||
], null));
|
||||
});
|
||||
|
||||
devtools.format.reference.cljs$lang$maxFixedArity = (1);
|
||||
|
||||
devtools.format.reference.cljs$lang$applyTo = (function (seq38083){
|
||||
var G__38084 = cljs.core.first.call(null,seq38083);
|
||||
var seq38083__$1 = cljs.core.next.call(null,seq38083);
|
||||
return devtools.format.reference.cljs$core$IFn$_invoke$arity$variadic(G__38084,seq38083__$1);
|
||||
});
|
||||
|
||||
devtools.format.standard_reference = (function devtools$format$standard_reference(target){
|
||||
devtools.format.setup_BANG_.call(null);
|
||||
|
||||
return devtools.format.make_template_fn.call(null,new cljs.core.Keyword(null,"ol","ol",932524051),new cljs.core.Keyword(null,"standard-ol-style","standard-ol-style",2143825615),devtools.format.make_template_fn.call(null,new cljs.core.Keyword(null,"li","li",723558921),new cljs.core.Keyword(null,"standard-li-style","standard-li-style",413442955),devtools.format.make_reference_fn.call(null,target)));
|
||||
});
|
||||
devtools.format.build_header = (function devtools$format$build_header(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___38093 = arguments.length;
|
||||
var i__36778__auto___38094 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___38094 < len__36777__auto___38093)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___38094]));
|
||||
|
||||
var G__38095 = (i__36778__auto___38094 + (1));
|
||||
i__36778__auto___38094 = G__38095;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.build_header.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.format.build_header.cljs$core$IFn$_invoke$arity$variadic = (function (args){
|
||||
devtools.format.setup_BANG_.call(null);
|
||||
|
||||
return devtools.format.render_markup.call(null,cljs.core.apply.call(null,devtools.format._LT_header_GT__fn,args));
|
||||
});
|
||||
|
||||
devtools.format.build_header.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.format.build_header.cljs$lang$applyTo = (function (seq38092){
|
||||
return devtools.format.build_header.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq38092));
|
||||
});
|
||||
|
||||
devtools.format.standard_body_template = (function devtools$format$standard_body_template(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___38098 = arguments.length;
|
||||
var i__36778__auto___38099 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___38099 < len__36777__auto___38098)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___38099]));
|
||||
|
||||
var G__38100 = (i__36778__auto___38099 + (1));
|
||||
i__36778__auto___38099 = G__38100;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.format.standard_body_template.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.format.standard_body_template.cljs$core$IFn$_invoke$arity$variadic = (function (lines,rest){
|
||||
devtools.format.setup_BANG_.call(null);
|
||||
|
||||
var args = cljs.core.concat.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.map.call(null,(function (x){
|
||||
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [x], null);
|
||||
}),lines)], null),rest);
|
||||
return devtools.format.render_markup.call(null,cljs.core.apply.call(null,devtools.format._LT_standard_body_GT__fn,args));
|
||||
});
|
||||
|
||||
devtools.format.standard_body_template.cljs$lang$maxFixedArity = (1);
|
||||
|
||||
devtools.format.standard_body_template.cljs$lang$applyTo = (function (seq38096){
|
||||
var G__38097 = cljs.core.first.call(null,seq38096);
|
||||
var seq38096__$1 = cljs.core.next.call(null,seq38096);
|
||||
return devtools.format.standard_body_template.cljs$core$IFn$_invoke$arity$variadic(G__38097,seq38096__$1);
|
||||
});
|
||||
|
||||
|
||||
//# sourceMappingURL=format.js.map?rel=1517021941723
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/format.js","sources":["format.cljs?rel=1517021941725"],"lineCount":597,"mappings":"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 truncated
|
||||
@@ -0,0 +1,102 @@
|
||||
(ns devtools.formatters
|
||||
(:require-macros [devtools.oops :refer [unchecked-aget unchecked-aset]])
|
||||
(:require [goog.labs.userAgent.browser :as ua]
|
||||
[devtools.prefs :as prefs]
|
||||
[devtools.util :refer [get-formatters-safe set-formatters-safe! in-node-context?]]
|
||||
[devtools.context :as context]
|
||||
[devtools.formatters.core :refer [header-api-call has-body-api-call body-api-call]]))
|
||||
|
||||
(def ^:dynamic *installed* false)
|
||||
(def ^:dynamic *sanitizer-enabled* true)
|
||||
(def ^:dynamic *monitor-enabled* false)
|
||||
|
||||
(def obsolete-formatter-key "devtoolsFormatter")
|
||||
|
||||
(defn ^:dynamic available? []
|
||||
(or (in-node-context?) ; node.js or Chrome 47+
|
||||
(and (ua/isChrome) (ua/isVersionOrHigher 47))))
|
||||
|
||||
(deftype CLJSDevtoolsFormatter [])
|
||||
|
||||
; devtools.debug namespace may not be present => no debugging
|
||||
(defn- find-fn-in-debug-ns [fn-name]
|
||||
(try
|
||||
(unchecked-aget (context/get-root) "devtools" "debug" fn-name)
|
||||
(catch :default _
|
||||
nil)))
|
||||
|
||||
(defn- monitor-api-call-if-avail [name api-call args]
|
||||
(if-let [monitor-api-call (find-fn-in-debug-ns "monitor_api_call")]
|
||||
(monitor-api-call name api-call args)
|
||||
(apply api-call args)))
|
||||
|
||||
(defn- log-exception-if-avail [& args]
|
||||
(if-let [log-exception (find-fn-in-debug-ns "log_exception")]
|
||||
(apply log-exception args)))
|
||||
|
||||
; monitors api calls in a separate debug console if debug namespace is available
|
||||
(defn- monitor-api-calls [name api-call]
|
||||
(fn [& args]
|
||||
(if-not *monitor-enabled*
|
||||
(apply api-call args)
|
||||
(monitor-api-call-if-avail name api-call args))))
|
||||
|
||||
; wraps our api calls in a try-catch block to prevent leaking of exceptions in case something went wrong
|
||||
(defn- sanitize [name api-call]
|
||||
(fn [& args]
|
||||
(if-not *sanitizer-enabled*
|
||||
(apply api-call args) ; raw API call
|
||||
(try
|
||||
(apply api-call args) ; wrapped API call
|
||||
(catch :default e
|
||||
(log-exception-if-avail (str name ": " e))
|
||||
nil)))))
|
||||
|
||||
(defn- build-cljs-formatter []
|
||||
(let [wrap (fn [name api-call]
|
||||
(let [monitor (partial monitor-api-calls name)
|
||||
sanitizer (partial sanitize name)]
|
||||
((comp monitor sanitizer) api-call)
|
||||
api-call))
|
||||
formatter (CLJSDevtoolsFormatter.)
|
||||
define! (fn [name fn]
|
||||
(unchecked-aset formatter name (wrap name fn)))]
|
||||
(define! "header" header-api-call)
|
||||
(define! "hasBody" has-body-api-call)
|
||||
(define! "body" body-api-call)
|
||||
formatter))
|
||||
|
||||
(defn- is-ours? [o]
|
||||
(instance? CLJSDevtoolsFormatter o))
|
||||
|
||||
(defn- present? []
|
||||
(let [formatters (get-formatters-safe)]
|
||||
(boolean (some is-ours? formatters))))
|
||||
|
||||
(defn- install-our-formatter! [formatter]
|
||||
(let [formatters (.slice (get-formatters-safe))] ; slice effectively duplicates the array
|
||||
(.push formatters formatter) ; acting on duplicated array
|
||||
(set-formatters-safe! formatters)
|
||||
(if (prefs/pref :legacy-formatter)
|
||||
(unchecked-aset (context/get-root) obsolete-formatter-key formatter))))
|
||||
|
||||
(defn- uninstall-our-formatters! []
|
||||
(let [new-formatters (remove is-ours? (vec (get-formatters-safe)))
|
||||
new-formatters-js (if (empty? new-formatters) nil (into-array new-formatters))]
|
||||
(set-formatters-safe! new-formatters-js)))
|
||||
|
||||
; -- installation -----------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn installed? []
|
||||
*installed*)
|
||||
|
||||
(defn install! []
|
||||
(when-not *installed*
|
||||
(set! *installed* true)
|
||||
(install-our-formatter! (build-cljs-formatter))
|
||||
true))
|
||||
|
||||
(defn uninstall! []
|
||||
(when *installed*
|
||||
(set! *installed* false)
|
||||
(uninstall-our-formatters!)))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :use-macros {unchecked-aset devtools.oops, unchecked-aget devtools.oops}, :excludes #{}, :name devtools.formatters, :imports nil, :requires {ua goog.labs.userAgent.browser, goog.labs.userAgent.browser goog.labs.userAgent.browser, prefs devtools.prefs, devtools.prefs devtools.prefs, devtools.util devtools.util, context devtools.context, devtools.context devtools.context, devtools.formatters.core devtools.formatters.core}, :cljs.spec/speced-vars [], :uses {body-api-call devtools.formatters.core, in-node-context? devtools.util, get-formatters-safe devtools.util, set-formatters-safe! devtools.util, has-body-api-call devtools.formatters.core, header-api-call devtools.formatters.core}, :defs {present? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters.cljs", :line 72, :column 8, :end-line 72, :end-column 16, :private true, :arglists (quote ([]))}, :private true, :name devtools.formatters/present?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters.cljs", :end-column 16, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 72, :end-line 72, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, ->CLJSDevtoolsFormatter {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters.cljs", :line 19, :column 10, :end-line 19, :end-column 31, :protocols #{}, :skip-protocol-flag nil, :factory :positional, :arglists (quote ([]))}, :protocols #{}, :name devtools.formatters/->CLJSDevtoolsFormatter, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters.cljs", :end-column 31, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :factory :positional, :line 19, :end-line 19, :max-fixed-arity 0, :fn-var true, :arglists (quote ([])), :skip-protocol-flag nil}, monitor-api-call-if-avail {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters.cljs", :line 28, :column 8, :end-line 28, :end-column 33, :private true, :arglists (quote ([name api-call args]))}, :private true, :name devtools.formatters/monitor-api-call-if-avail, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters.cljs", :end-column 33, :method-params ([name api-call args]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 28, :end-line 28, :max-fixed-arity 3, :fn-var true, :arglists (quote ([name api-call args]))}, build-cljs-formatter {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters.cljs", :line 55, :column 8, :end-line 55, :end-column 28, :private true, :arglists (quote ([]))}, :private true, :name devtools.formatters/build-cljs-formatter, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters.cljs", :end-column 28, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 55, :end-line 55, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, *installed* {:name devtools.formatters/*installed*, :file "target/cljsbuild/public/js/out/devtools/formatters.cljs", :line 9, :column 1, :end-line 9, :end-column 27, :dynamic true, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters.cljs", :line 9, :column 16, :end-line 9, :end-column 27, :dynamic true}, :tag boolean}, is-ours? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters.cljs", :line 69, :column 8, :end-line 69, :end-column 16, :private true, :arglists (quote ([o]))}, :private true, :name devtools.formatters/is-ours?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters.cljs", :end-column 16, :method-params ([o]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 69, :end-line 69, :max-fixed-arity 1, :fn-var true, :arglists (quote ([o]))}, find-fn-in-debug-ns {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters.cljs", :line 22, :column 8, :end-line 22, :end-column 27, :private true, :arglists (quote ([fn-name]))}, :private true, :name devtools.formatters/find-fn-in-debug-ns, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters.cljs", :end-column 27, :method-params ([fn-name]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 22, :end-line 22, :max-fixed-arity 1, :fn-var true, :arglists (quote ([fn-name]))}, install! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters.cljs", :line 93, :column 7, :end-line 93, :end-column 15, :arglists (quote ([]))}, :name devtools.formatters/install!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters.cljs", :end-column 15, :method-params ([]), :protocol-impl nil, :arglists-Line truncated
|
||||
@@ -0,0 +1,227 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.formatters');
|
||||
goog.require('cljs.core');
|
||||
goog.require('goog.labs.userAgent.browser');
|
||||
goog.require('devtools.prefs');
|
||||
goog.require('devtools.util');
|
||||
goog.require('devtools.context');
|
||||
goog.require('devtools.formatters.core');
|
||||
devtools.formatters._STAR_installed_STAR_ = false;
|
||||
devtools.formatters._STAR_sanitizer_enabled_STAR_ = true;
|
||||
devtools.formatters._STAR_monitor_enabled_STAR_ = false;
|
||||
devtools.formatters.obsolete_formatter_key = "devtoolsFormatter";
|
||||
devtools.formatters.available_QMARK_ = (function devtools$formatters$available_QMARK_(){
|
||||
var or__35498__auto__ = devtools.util.in_node_context_QMARK_.call(null);
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
var and__35486__auto__ = goog.labs.userAgent.browser.isChrome();
|
||||
if(cljs.core.truth_(and__35486__auto__)){
|
||||
return goog.labs.userAgent.browser.isVersionOrHigher((47));
|
||||
} else {
|
||||
return and__35486__auto__;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
devtools.formatters.CLJSDevtoolsFormatter = (function (){
|
||||
});
|
||||
|
||||
devtools.formatters.CLJSDevtoolsFormatter.getBasis = (function (){
|
||||
return cljs.core.PersistentVector.EMPTY;
|
||||
});
|
||||
|
||||
devtools.formatters.CLJSDevtoolsFormatter.cljs$lang$type = true;
|
||||
|
||||
devtools.formatters.CLJSDevtoolsFormatter.cljs$lang$ctorStr = "devtools.formatters/CLJSDevtoolsFormatter";
|
||||
|
||||
devtools.formatters.CLJSDevtoolsFormatter.cljs$lang$ctorPrWriter = (function (this__36169__auto__,writer__36170__auto__,opt__36171__auto__){
|
||||
return cljs.core._write.call(null,writer__36170__auto__,"devtools.formatters/CLJSDevtoolsFormatter");
|
||||
});
|
||||
|
||||
devtools.formatters.__GT_CLJSDevtoolsFormatter = (function devtools$formatters$__GT_CLJSDevtoolsFormatter(){
|
||||
return (new devtools.formatters.CLJSDevtoolsFormatter());
|
||||
});
|
||||
|
||||
devtools.formatters.find_fn_in_debug_ns = (function devtools$formatters$find_fn_in_debug_ns(fn_name){
|
||||
try{return (devtools.context.get_root.call(null)["devtools"]["debug"][fn_name]);
|
||||
}catch (e40619){var _ = e40619;
|
||||
return null;
|
||||
}});
|
||||
devtools.formatters.monitor_api_call_if_avail = (function devtools$formatters$monitor_api_call_if_avail(name,api_call,args){
|
||||
var temp__5455__auto__ = devtools.formatters.find_fn_in_debug_ns.call(null,"monitor_api_call");
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var monitor_api_call = temp__5455__auto__;
|
||||
return monitor_api_call.call(null,name,api_call,args);
|
||||
} else {
|
||||
return cljs.core.apply.call(null,api_call,args);
|
||||
}
|
||||
});
|
||||
devtools.formatters.log_exception_if_avail = (function devtools$formatters$log_exception_if_avail(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___40621 = arguments.length;
|
||||
var i__36778__auto___40622 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___40622 < len__36777__auto___40621)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___40622]));
|
||||
|
||||
var G__40623 = (i__36778__auto___40622 + (1));
|
||||
i__36778__auto___40622 = G__40623;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.formatters.log_exception_if_avail.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.formatters.log_exception_if_avail.cljs$core$IFn$_invoke$arity$variadic = (function (args){
|
||||
var temp__5455__auto__ = devtools.formatters.find_fn_in_debug_ns.call(null,"log_exception");
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var log_exception = temp__5455__auto__;
|
||||
return cljs.core.apply.call(null,log_exception,args);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
devtools.formatters.log_exception_if_avail.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.formatters.log_exception_if_avail.cljs$lang$applyTo = (function (seq40620){
|
||||
return devtools.formatters.log_exception_if_avail.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq40620));
|
||||
});
|
||||
|
||||
devtools.formatters.monitor_api_calls = (function devtools$formatters$monitor_api_calls(name,api_call){
|
||||
return (function() {
|
||||
var G__40624__delegate = function (args){
|
||||
if(!(devtools.formatters._STAR_monitor_enabled_STAR_)){
|
||||
return cljs.core.apply.call(null,api_call,args);
|
||||
} else {
|
||||
return devtools.formatters.monitor_api_call_if_avail.call(null,name,api_call,args);
|
||||
}
|
||||
};
|
||||
var G__40624 = function (var_args){
|
||||
var args = null;
|
||||
if (arguments.length > 0) {
|
||||
var G__40625__i = 0, G__40625__a = new Array(arguments.length - 0);
|
||||
while (G__40625__i < G__40625__a.length) {G__40625__a[G__40625__i] = arguments[G__40625__i + 0]; ++G__40625__i;}
|
||||
args = new cljs.core.IndexedSeq(G__40625__a,0,null);
|
||||
}
|
||||
return G__40624__delegate.call(this,args);};
|
||||
G__40624.cljs$lang$maxFixedArity = 0;
|
||||
G__40624.cljs$lang$applyTo = (function (arglist__40626){
|
||||
var args = cljs.core.seq(arglist__40626);
|
||||
return G__40624__delegate(args);
|
||||
});
|
||||
G__40624.cljs$core$IFn$_invoke$arity$variadic = G__40624__delegate;
|
||||
return G__40624;
|
||||
})()
|
||||
;
|
||||
});
|
||||
devtools.formatters.sanitize = (function devtools$formatters$sanitize(name,api_call){
|
||||
return (function() {
|
||||
var G__40628__delegate = function (args){
|
||||
if(!(devtools.formatters._STAR_sanitizer_enabled_STAR_)){
|
||||
return cljs.core.apply.call(null,api_call,args);
|
||||
} else {
|
||||
try{return cljs.core.apply.call(null,api_call,args);
|
||||
}catch (e40627){var e = e40627;
|
||||
devtools.formatters.log_exception_if_avail.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(name),": ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(e)].join(''));
|
||||
|
||||
return null;
|
||||
}}
|
||||
};
|
||||
var G__40628 = function (var_args){
|
||||
var args = null;
|
||||
if (arguments.length > 0) {
|
||||
var G__40629__i = 0, G__40629__a = new Array(arguments.length - 0);
|
||||
while (G__40629__i < G__40629__a.length) {G__40629__a[G__40629__i] = arguments[G__40629__i + 0]; ++G__40629__i;}
|
||||
args = new cljs.core.IndexedSeq(G__40629__a,0,null);
|
||||
}
|
||||
return G__40628__delegate.call(this,args);};
|
||||
G__40628.cljs$lang$maxFixedArity = 0;
|
||||
G__40628.cljs$lang$applyTo = (function (arglist__40630){
|
||||
var args = cljs.core.seq(arglist__40630);
|
||||
return G__40628__delegate(args);
|
||||
});
|
||||
G__40628.cljs$core$IFn$_invoke$arity$variadic = G__40628__delegate;
|
||||
return G__40628;
|
||||
})()
|
||||
;
|
||||
});
|
||||
devtools.formatters.build_cljs_formatter = (function devtools$formatters$build_cljs_formatter(){
|
||||
var wrap = (function (name,api_call){
|
||||
var monitor = cljs.core.partial.call(null,devtools.formatters.monitor_api_calls,name);
|
||||
var sanitizer = cljs.core.partial.call(null,devtools.formatters.sanitize,name);
|
||||
cljs.core.comp.call(null,monitor,sanitizer).call(null,api_call);
|
||||
|
||||
return api_call;
|
||||
});
|
||||
var formatter = (new devtools.formatters.CLJSDevtoolsFormatter());
|
||||
var define_BANG_ = ((function (wrap,formatter){
|
||||
return (function (name,fn){
|
||||
return (formatter[name] = wrap.call(null,name,fn));
|
||||
});})(wrap,formatter))
|
||||
;
|
||||
define_BANG_.call(null,"header",devtools.formatters.core.header_api_call);
|
||||
|
||||
define_BANG_.call(null,"hasBody",devtools.formatters.core.has_body_api_call);
|
||||
|
||||
define_BANG_.call(null,"body",devtools.formatters.core.body_api_call);
|
||||
|
||||
return formatter;
|
||||
});
|
||||
devtools.formatters.is_ours_QMARK_ = (function devtools$formatters$is_ours_QMARK_(o){
|
||||
return (o instanceof devtools.formatters.CLJSDevtoolsFormatter);
|
||||
});
|
||||
devtools.formatters.present_QMARK_ = (function devtools$formatters$present_QMARK_(){
|
||||
var formatters = devtools.util.get_formatters_safe.call(null);
|
||||
return cljs.core.boolean$.call(null,cljs.core.some.call(null,devtools.formatters.is_ours_QMARK_,formatters));
|
||||
});
|
||||
devtools.formatters.install_our_formatter_BANG_ = (function devtools$formatters$install_our_formatter_BANG_(formatter){
|
||||
var formatters = devtools.util.get_formatters_safe.call(null).slice();
|
||||
formatters.push(formatter);
|
||||
|
||||
devtools.util.set_formatters_safe_BANG_.call(null,formatters);
|
||||
|
||||
if(cljs.core.truth_(devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"legacy-formatter","legacy-formatter",-1954119499)))){
|
||||
return (devtools.context.get_root.call(null)[devtools.formatters.obsolete_formatter_key] = formatter);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
devtools.formatters.uninstall_our_formatters_BANG_ = (function devtools$formatters$uninstall_our_formatters_BANG_(){
|
||||
var new_formatters = cljs.core.remove.call(null,devtools.formatters.is_ours_QMARK_,cljs.core.vec.call(null,devtools.util.get_formatters_safe.call(null)));
|
||||
var new_formatters_js = ((cljs.core.empty_QMARK_.call(null,new_formatters))?null:cljs.core.into_array.call(null,new_formatters));
|
||||
return devtools.util.set_formatters_safe_BANG_.call(null,new_formatters_js);
|
||||
});
|
||||
devtools.formatters.installed_QMARK_ = (function devtools$formatters$installed_QMARK_(){
|
||||
return devtools.formatters._STAR_installed_STAR_;
|
||||
});
|
||||
devtools.formatters.install_BANG_ = (function devtools$formatters$install_BANG_(){
|
||||
if(devtools.formatters._STAR_installed_STAR_){
|
||||
return null;
|
||||
} else {
|
||||
devtools.formatters._STAR_installed_STAR_ = true;
|
||||
|
||||
devtools.formatters.install_our_formatter_BANG_.call(null,devtools.formatters.build_cljs_formatter.call(null));
|
||||
|
||||
return true;
|
||||
}
|
||||
});
|
||||
devtools.formatters.uninstall_BANG_ = (function devtools$formatters$uninstall_BANG_(){
|
||||
if(devtools.formatters._STAR_installed_STAR_){
|
||||
devtools.formatters._STAR_installed_STAR_ = false;
|
||||
|
||||
return devtools.formatters.uninstall_our_formatters_BANG_.call(null);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
//# sourceMappingURL=formatters.js.map?rel=1517021944424
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/formatters.js","sources":["formatters.cljs?rel=1517021944425"],"lineCount":227,"mappings":"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","names":["devtools.formatters\/*installed*","devtools.formatters\/*sanitizer-enabled*","devtools.formatters\/*monitor-enabled*","devtools.formatters\/obsolete-formatter-key","devtools.formatters\/available?","or__35498__auto__","devtools.util\/in-node-context?","and__35486__auto__","goog.labs.userAgent.browser\/isChrome","goog.labs.userAgent.browser\/isVersionOrHigher","this__36169__auto__","writer__36170__auto__","opt__36171__auto__","cljs.core\/-write","devtools.formatters\/CLJSDevtoolsFormatter","devtools.formatters\/->CLJSDevtoolsFormatter","devtools.formatters\/find-fn-in-debug-ns","fn-name","e40619","devtools.context\/get-root","_","devtools.formatters\/monitor-api-call-if-avail","name","api-call","args","temp__5455__auto__","monitor-api-call","cljs.core\/apply","var_args","args__36784__auto__","len__36777__auto__","i__36778__auto__","argseq__36785__auto__","cljs.core\/IndexedSeq","devtools.formatters\/log-exception-if-avail","seq40620","cljs.core\/seq","log-exception","devtools.formatters\/monitor-api-calls","devtools.formatters\/sanitize","e40627","e","devtools.formatters\/build-cljs-formatter","wrap","monitor","cljs.core\/partial","sanitizer","cljs.core\/comp","formatter","define!","fn","devtools.formatters.core\/header-api-call","devtools.formatters.core\/has-body-api-call","devtools.formatters.core\/body-api-call","devtools.formatters\/is-ours?","o","devtools.formatters\/present?","formatters","devtools.util\/get-formatters-safe","cljs.core\/boolean","cljs.core\/some","devtools.formatters\/install-our-formatter!","devtools.util\/set-formatters-safe!","devtools.prefs\/pref","devtools.formatters\/uninstall-our-formatters!","new-formatters","cljs.core\/remove","cljs.core\/vec","new-formatters-js","cljs.core\/empty?","cljs.core\/into-array","devtools.formatters\/installed?","devtools.formatters\/install!","devtools.formatters\/uninstall!"]}
|
||||
@@ -0,0 +1,88 @@
|
||||
(ns devtools.formatters.budgeting
|
||||
(:require-macros [devtools.oops :refer [oget oset ocall]])
|
||||
(:require [devtools.formatters.templating :refer [render-markup]]
|
||||
[devtools.formatters.state :refer [get-depth-budget set-depth-budget]]
|
||||
[devtools.formatters.helpers :refer [pref]]
|
||||
[devtools.formatters.markup :refer [<header-expander>]]))
|
||||
|
||||
; This functionality provides a workaround to issue #22 (https://github.com/binaryage/cljs-devtools/issues/22).
|
||||
; The idea is to track hierarchy depth for json-ml(s) we are generating.
|
||||
; If we are about to cross the depth limit hardcoded in WebKit,
|
||||
; instead we render simple expandable placeholders which resume full rendering in their bodies (when expanded by user).
|
||||
; Note that this technique has some quirks, it may break styling in some pathological cases.
|
||||
|
||||
; we need to reserve some depth levels for our expander symbol markup
|
||||
(def header-expander-depth-cost 2)
|
||||
|
||||
; -- tracking over-budget values -------------------------------------------------------------------------------------------
|
||||
|
||||
; note: phantomjs does not have WeakSet, so we have to emulate it when testing
|
||||
(def over-budget-values (if (exists? js/WeakSet) (js/WeakSet.) (volatile! #{})))
|
||||
|
||||
(defn add-over-budget-value! [value]
|
||||
(if (volatile? over-budget-values)
|
||||
(vreset! over-budget-values (conj @over-budget-values value))
|
||||
(ocall over-budget-values "add" value)))
|
||||
|
||||
(defn delete-over-budget-value! [value]
|
||||
(if (volatile? over-budget-values)
|
||||
(vreset! over-budget-values (disj @over-budget-values value))
|
||||
(ocall over-budget-values "delete" value)))
|
||||
|
||||
(defn has-over-budget-value? [value]
|
||||
(if (volatile? over-budget-values)
|
||||
(contains? @over-budget-values value)
|
||||
(ocall over-budget-values "has" value)))
|
||||
|
||||
; -- depth budget accounting ------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn object-reference? [json-ml]
|
||||
(= (first json-ml) "object"))
|
||||
|
||||
(defn determine-depth [json-ml]
|
||||
(if (array? json-ml)
|
||||
(inc (apply max (map determine-depth json-ml)))
|
||||
0))
|
||||
|
||||
(defn has-any-object-reference? [json-ml]
|
||||
(if (array? json-ml)
|
||||
(if (object-reference? json-ml)
|
||||
true
|
||||
(some has-any-object-reference? json-ml))))
|
||||
|
||||
(defn transfer-remaining-depth-budget! [object-reference depth-budget]
|
||||
{:pre [(not (neg? depth-budget))]}
|
||||
(let [data (second object-reference)
|
||||
_ (assert (object? data))
|
||||
config (oget data "config")]
|
||||
(oset data ["config"] (set-depth-budget config depth-budget))))
|
||||
|
||||
(defn distribute-budget! [json-ml depth-budget]
|
||||
{:pre [(not (neg? depth-budget))]}
|
||||
(if (array? json-ml)
|
||||
(let [new-depth-budget (dec depth-budget)]
|
||||
(if (object-reference? json-ml)
|
||||
(transfer-remaining-depth-budget! json-ml new-depth-budget)
|
||||
(doseq [item json-ml]
|
||||
(distribute-budget! item new-depth-budget)))))
|
||||
json-ml)
|
||||
|
||||
; -- api --------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn was-over-budget?! [value]
|
||||
(when (has-over-budget-value? value)
|
||||
(delete-over-budget-value! value)
|
||||
true))
|
||||
|
||||
(defn alter-json-ml-to-fit-in-remaining-budget! [value json-ml]
|
||||
(if-let [initial-hierarchy-depth-budget (pref :initial-hierarchy-depth-budget)] ; this is hardcoded in InjectedScriptSource.js in WebKit, look for maxCustomPreviewRecursionDepth
|
||||
(let [remaining-depth-budget (or (get-depth-budget) (dec initial-hierarchy-depth-budget))
|
||||
depth (determine-depth json-ml)
|
||||
final? (not (has-any-object-reference? json-ml))
|
||||
needed-depth (if final? depth (+ depth header-expander-depth-cost))]
|
||||
(if (>= remaining-depth-budget needed-depth)
|
||||
(distribute-budget! json-ml remaining-depth-budget)
|
||||
(let [expander-ml (render-markup (<header-expander> value))]
|
||||
(add-over-budget-value! value) ; we need to record over-budget values to for later was-over-budget?! check, see has-body* in formatters.core
|
||||
expander-ml)))
|
||||
json-ml))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {WeakSet {}, Error {}}, :use-macros {oset devtools.oops, oget devtools.oops, ocall devtools.oops}, :excludes #{}, :name devtools.formatters.budgeting, :imports nil, :requires {devtools.formatters.templating devtools.formatters.templating, devtools.formatters.state devtools.formatters.state, devtools.formatters.helpers devtools.formatters.helpers, devtools.formatters.markup devtools.formatters.markup}, :cljs.spec/speced-vars [], :uses {pref devtools.formatters.helpers, render-markup devtools.formatters.templating, get-depth-budget devtools.formatters.state, <header-expander> devtools.formatters.markup, set-depth-budget devtools.formatters.state}, :defs {transfer-remaining-depth-budget! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :line 53, :column 7, :end-line 53, :end-column 39, :arglists (quote ([object-reference depth-budget]))}, :name devtools.formatters.budgeting/transfer-remaining-depth-budget!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :end-column 39, :method-params ([object-reference depth-budget]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 53, :end-line 53, :max-fixed-arity 2, :fn-var true, :arglists (quote ([object-reference depth-budget]))}, was-over-budget?! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :line 72, :column 7, :end-line 72, :end-column 24, :arglists (quote ([value]))}, :name devtools.formatters.budgeting/was-over-budget?!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :end-column 24, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 72, :end-line 72, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value]))}, determine-depth {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :line 42, :column 7, :end-line 42, :end-column 22, :arglists (quote ([json-ml]))}, :name devtools.formatters.budgeting/determine-depth, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :end-column 22, :method-params ([json-ml]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 42, :end-line 42, :max-fixed-arity 1, :fn-var true, :arglists (quote ([json-ml]))}, add-over-budget-value! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :line 22, :column 7, :end-line 22, :end-column 29, :arglists (quote ([value]))}, :name devtools.formatters.budgeting/add-over-budget-value!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :end-column 29, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 22, :end-line 22, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value]))}, over-budget-values {:name devtools.formatters.budgeting/over-budget-values, :file "target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :line 20, :column 1, :end-line 20, :end-column 24, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :line 20, :column 6, :end-line 20, :end-column 24}, :tag #{any js/WeakSet}}, has-any-object-reference? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :line 47, :column 7, :end-line 47, :end-column 32, :arglists (quote ([json-ml]))}, :name devtools.formatters.budgeting/has-any-object-reference?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :end-column 32, :method-params ([json-ml]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 47, :end-line 47, :max-fixed-arity 1, :fn-var true, :arglists (quote ([json-ml]))}, distribute-budget! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :line 60, :column 7, :end-line 60, :end-column 25, :arglists (quote ([json-ml depth-budget]))}, :name devtools.formatters.budgeting/distribute-budget!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :end-column 25, :method-params ([json-ml depth-budget]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 60, :end-line 60, :max-fixed-arity 2, :fn-var true, :arglists (quote ([json-ml depth-budget]))}, has-over-budget-value? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/budgeting.cljs", :line 32, :column 7, :end-line 32, :end-column 29, :arglists (quote ([value]))}, :name devtools.formatters.budgeting/has-over-budget-value?,Line truncated
|
||||
@@ -0,0 +1,180 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.formatters.budgeting');
|
||||
goog.require('cljs.core');
|
||||
goog.require('devtools.formatters.templating');
|
||||
goog.require('devtools.formatters.state');
|
||||
goog.require('devtools.formatters.helpers');
|
||||
goog.require('devtools.formatters.markup');
|
||||
devtools.formatters.budgeting.header_expander_depth_cost = (2);
|
||||
devtools.formatters.budgeting.over_budget_values = ((typeof WeakSet !== 'undefined')?(new WeakSet()):cljs.core.volatile_BANG_.call(null,cljs.core.PersistentHashSet.EMPTY));
|
||||
devtools.formatters.budgeting.add_over_budget_value_BANG_ = (function devtools$formatters$budgeting$add_over_budget_value_BANG_(value){
|
||||
if(cljs.core.volatile_QMARK_.call(null,devtools.formatters.budgeting.over_budget_values)){
|
||||
return cljs.core.vreset_BANG_.call(null,devtools.formatters.budgeting.over_budget_values,cljs.core.conj.call(null,cljs.core.deref.call(null,devtools.formatters.budgeting.over_budget_values),value));
|
||||
} else {
|
||||
var o__37997__auto__ = devtools.formatters.budgeting.over_budget_values;
|
||||
return (o__37997__auto__["add"]).call(o__37997__auto__,value);
|
||||
}
|
||||
});
|
||||
devtools.formatters.budgeting.delete_over_budget_value_BANG_ = (function devtools$formatters$budgeting$delete_over_budget_value_BANG_(value){
|
||||
if(cljs.core.volatile_QMARK_.call(null,devtools.formatters.budgeting.over_budget_values)){
|
||||
return cljs.core.vreset_BANG_.call(null,devtools.formatters.budgeting.over_budget_values,cljs.core.disj.call(null,cljs.core.deref.call(null,devtools.formatters.budgeting.over_budget_values),value));
|
||||
} else {
|
||||
var o__37997__auto__ = devtools.formatters.budgeting.over_budget_values;
|
||||
return (o__37997__auto__["delete"]).call(o__37997__auto__,value);
|
||||
}
|
||||
});
|
||||
devtools.formatters.budgeting.has_over_budget_value_QMARK_ = (function devtools$formatters$budgeting$has_over_budget_value_QMARK_(value){
|
||||
if(cljs.core.volatile_QMARK_.call(null,devtools.formatters.budgeting.over_budget_values)){
|
||||
return cljs.core.contains_QMARK_.call(null,cljs.core.deref.call(null,devtools.formatters.budgeting.over_budget_values),value);
|
||||
} else {
|
||||
var o__37997__auto__ = devtools.formatters.budgeting.over_budget_values;
|
||||
return (o__37997__auto__["has"]).call(o__37997__auto__,value);
|
||||
}
|
||||
});
|
||||
devtools.formatters.budgeting.object_reference_QMARK_ = (function devtools$formatters$budgeting$object_reference_QMARK_(json_ml){
|
||||
return cljs.core._EQ_.call(null,cljs.core.first.call(null,json_ml),"object");
|
||||
});
|
||||
devtools.formatters.budgeting.determine_depth = (function devtools$formatters$budgeting$determine_depth(json_ml){
|
||||
if(cljs.core.array_QMARK_.call(null,json_ml)){
|
||||
return (cljs.core.apply.call(null,cljs.core.max,cljs.core.map.call(null,devtools.formatters.budgeting.determine_depth,json_ml)) + (1));
|
||||
} else {
|
||||
return (0);
|
||||
}
|
||||
});
|
||||
devtools.formatters.budgeting.has_any_object_reference_QMARK_ = (function devtools$formatters$budgeting$has_any_object_reference_QMARK_(json_ml){
|
||||
if(cljs.core.array_QMARK_.call(null,json_ml)){
|
||||
if(cljs.core.truth_(devtools.formatters.budgeting.object_reference_QMARK_.call(null,json_ml))){
|
||||
return true;
|
||||
} else {
|
||||
return cljs.core.some.call(null,devtools.formatters.budgeting.has_any_object_reference_QMARK_,json_ml);
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
devtools.formatters.budgeting.transfer_remaining_depth_budget_BANG_ = (function devtools$formatters$budgeting$transfer_remaining_depth_budget_BANG_(object_reference,depth_budget){
|
||||
if(!((depth_budget < (0)))){
|
||||
} else {
|
||||
throw (new Error("Assert failed: (not (neg? depth-budget))"));
|
||||
}
|
||||
|
||||
var data = cljs.core.second.call(null,object_reference);
|
||||
var _ = ((cljs.core.object_QMARK_.call(null,data))?null:(function(){throw (new Error("Assert failed: (object? data)"))})());
|
||||
var config = (data["config"]);
|
||||
var G__40571 = data;
|
||||
var target__38002__auto__ = G__40571;
|
||||
if(cljs.core.truth_(target__38002__auto__)){
|
||||
} else {
|
||||
throw (new Error(["Assert failed: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(["unable to locate object path ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(null)," in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__40571)].join('')),"\n","target__38002__auto__"].join('')));
|
||||
}
|
||||
|
||||
(target__38002__auto__["config"] = devtools.formatters.state.set_depth_budget.call(null,config,depth_budget));
|
||||
|
||||
return G__40571;
|
||||
});
|
||||
devtools.formatters.budgeting.distribute_budget_BANG_ = (function devtools$formatters$budgeting$distribute_budget_BANG_(json_ml,depth_budget){
|
||||
if(!((depth_budget < (0)))){
|
||||
} else {
|
||||
throw (new Error("Assert failed: (not (neg? depth-budget))"));
|
||||
}
|
||||
|
||||
if(cljs.core.array_QMARK_.call(null,json_ml)){
|
||||
var new_depth_budget_40576 = (depth_budget - (1));
|
||||
if(cljs.core.truth_(devtools.formatters.budgeting.object_reference_QMARK_.call(null,json_ml))){
|
||||
devtools.formatters.budgeting.transfer_remaining_depth_budget_BANG_.call(null,json_ml,new_depth_budget_40576);
|
||||
} else {
|
||||
var seq__40572_40577 = cljs.core.seq.call(null,json_ml);
|
||||
var chunk__40573_40578 = null;
|
||||
var count__40574_40579 = (0);
|
||||
var i__40575_40580 = (0);
|
||||
while(true){
|
||||
if((i__40575_40580 < count__40574_40579)){
|
||||
var item_40581 = cljs.core._nth.call(null,chunk__40573_40578,i__40575_40580);
|
||||
devtools.formatters.budgeting.distribute_budget_BANG_.call(null,item_40581,new_depth_budget_40576);
|
||||
|
||||
var G__40582 = seq__40572_40577;
|
||||
var G__40583 = chunk__40573_40578;
|
||||
var G__40584 = count__40574_40579;
|
||||
var G__40585 = (i__40575_40580 + (1));
|
||||
seq__40572_40577 = G__40582;
|
||||
chunk__40573_40578 = G__40583;
|
||||
count__40574_40579 = G__40584;
|
||||
i__40575_40580 = G__40585;
|
||||
continue;
|
||||
} else {
|
||||
var temp__5457__auto___40586 = cljs.core.seq.call(null,seq__40572_40577);
|
||||
if(temp__5457__auto___40586){
|
||||
var seq__40572_40587__$1 = temp__5457__auto___40586;
|
||||
if(cljs.core.chunked_seq_QMARK_.call(null,seq__40572_40587__$1)){
|
||||
var c__36429__auto___40588 = cljs.core.chunk_first.call(null,seq__40572_40587__$1);
|
||||
var G__40589 = cljs.core.chunk_rest.call(null,seq__40572_40587__$1);
|
||||
var G__40590 = c__36429__auto___40588;
|
||||
var G__40591 = cljs.core.count.call(null,c__36429__auto___40588);
|
||||
var G__40592 = (0);
|
||||
seq__40572_40577 = G__40589;
|
||||
chunk__40573_40578 = G__40590;
|
||||
count__40574_40579 = G__40591;
|
||||
i__40575_40580 = G__40592;
|
||||
continue;
|
||||
} else {
|
||||
var item_40593 = cljs.core.first.call(null,seq__40572_40587__$1);
|
||||
devtools.formatters.budgeting.distribute_budget_BANG_.call(null,item_40593,new_depth_budget_40576);
|
||||
|
||||
var G__40594 = cljs.core.next.call(null,seq__40572_40587__$1);
|
||||
var G__40595 = null;
|
||||
var G__40596 = (0);
|
||||
var G__40597 = (0);
|
||||
seq__40572_40577 = G__40594;
|
||||
chunk__40573_40578 = G__40595;
|
||||
count__40574_40579 = G__40596;
|
||||
i__40575_40580 = G__40597;
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
return json_ml;
|
||||
});
|
||||
devtools.formatters.budgeting.was_over_budget_QMARK__BANG_ = (function devtools$formatters$budgeting$was_over_budget_QMARK__BANG_(value){
|
||||
if(cljs.core.truth_(devtools.formatters.budgeting.has_over_budget_value_QMARK_.call(null,value))){
|
||||
devtools.formatters.budgeting.delete_over_budget_value_BANG_.call(null,value);
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
devtools.formatters.budgeting.alter_json_ml_to_fit_in_remaining_budget_BANG_ = (function devtools$formatters$budgeting$alter_json_ml_to_fit_in_remaining_budget_BANG_(value,json_ml){
|
||||
var temp__5455__auto__ = devtools.formatters.helpers.pref.call(null,new cljs.core.Keyword(null,"initial-hierarchy-depth-budget","initial-hierarchy-depth-budget",-482715807));
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var initial_hierarchy_depth_budget = temp__5455__auto__;
|
||||
var remaining_depth_budget = (function (){var or__35498__auto__ = devtools.formatters.state.get_depth_budget.call(null);
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return (initial_hierarchy_depth_budget - (1));
|
||||
}
|
||||
})();
|
||||
var depth = devtools.formatters.budgeting.determine_depth.call(null,json_ml);
|
||||
var final_QMARK_ = cljs.core.not.call(null,devtools.formatters.budgeting.has_any_object_reference_QMARK_.call(null,json_ml));
|
||||
var needed_depth = ((final_QMARK_)?depth:(depth + devtools.formatters.budgeting.header_expander_depth_cost));
|
||||
if((remaining_depth_budget >= needed_depth)){
|
||||
return devtools.formatters.budgeting.distribute_budget_BANG_.call(null,json_ml,remaining_depth_budget);
|
||||
} else {
|
||||
var expander_ml = devtools.formatters.templating.render_markup.call(null,devtools.formatters.markup._LT_header_expander_GT_.call(null,value));
|
||||
devtools.formatters.budgeting.add_over_budget_value_BANG_.call(null,value);
|
||||
|
||||
return expander_ml;
|
||||
}
|
||||
} else {
|
||||
return json_ml;
|
||||
}
|
||||
});
|
||||
|
||||
//# sourceMappingURL=budgeting.js.map?rel=1517021944352
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/formatters\/budgeting.js","sources":["budgeting.cljs?rel=1517021944353"],"lineCount":180,"mappings":"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","names":["devtools.formatters.budgeting\/header-expander-depth-cost","devtools.formatters.budgeting\/over-budget-values","js\/WeakSet","cljs.core\/volatile!","devtools.formatters.budgeting\/add-over-budget-value!","value","cljs.core\/volatile?","cljs.core\/vreset!","cljs.core\/deref","cljs.core\/conj","o__37997__auto__","devtools.formatters.budgeting\/delete-over-budget-value!","cljs.core\/disj","devtools.formatters.budgeting\/has-over-budget-value?","cljs.core\/contains?","devtools.formatters.budgeting\/object-reference?","json-ml","cljs.core\/=","cljs.core\/first","devtools.formatters.budgeting\/determine-depth","cljs.core\/array?","cljs.core\/apply","cljs.core\/max","cljs.core\/map","devtools.formatters.budgeting\/has-any-object-reference?","cljs.core\/some","js\/Error","devtools.formatters.budgeting\/transfer-remaining-depth-budget!","object-reference","depth-budget","data","cljs.core\/second","_","cljs.core\/object?","config","G__40571","target__38002__auto__","devtools.formatters.state\/set-depth-budget","devtools.formatters.budgeting\/distribute-budget!","new-depth-budget","seq__40572","cljs.core\/seq","chunk__40573","count__40574","i__40575","cljs.core\/-nth","temp__5457__auto__","cljs.core\/chunked-seq?","c__36429__auto__","cljs.core\/chunk-first","cljs.core\/chunk-rest","cljs.core\/count","cljs.core\/next","item","devtools.formatters.budgeting\/was-over-budget?!","devtools.formatters.budgeting\/alter-json-ml-to-fit-in-remaining-budget!","temp__5455__auto__","initial-hierarchy-depth-budget","devtools.formatters.helpers\/pref","remaining-depth-budget","or__35498__auto__","devtools.formatters.state\/get-depth-budget","depth","final?","cljs.core\/not","needed-depth","expander-ml","devtools.formatters.templating\/render-markup","devtools.formatters.markup\/<header-expander>"]}
|
||||
@@ -0,0 +1,85 @@
|
||||
(ns devtools.formatters.core
|
||||
(:require-macros [devtools.oops :refer [safe-call]])
|
||||
(:require [devtools.prefs :refer [pref]]
|
||||
[devtools.format :refer [IDevtoolsFormat]]
|
||||
[devtools.protocols :refer [IFormat]]
|
||||
[devtools.reporter :as reporter]
|
||||
[devtools.formatters.templating :refer [surrogate? render-markup get-surrogate-body]]
|
||||
[devtools.formatters.helpers :refer [cljs-value?]]
|
||||
[devtools.formatters.state :refer [prevent-recursion? *current-state* get-default-state update-current-state!
|
||||
reset-depth-limits]]
|
||||
[devtools.formatters.markup :refer [<header> <surrogate-header> <surrogate-body>]]
|
||||
[devtools.formatters.budgeting :refer [was-over-budget?! alter-json-ml-to-fit-in-remaining-budget!]]))
|
||||
|
||||
; -- RAW API ----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn want-value?* [value]
|
||||
(and (not (prevent-recursion?))
|
||||
(or (cljs-value? value) (surrogate? value))))
|
||||
|
||||
(defn header* [value]
|
||||
(let [json-ml (cond
|
||||
(surrogate? value) (render-markup (<surrogate-header> value))
|
||||
(safe-call satisfies? false IDevtoolsFormat value) (devtools.format/-header value)
|
||||
(safe-call satisfies? false IFormat value) (devtools.protocols/-header value)
|
||||
:else (render-markup (<header> value)))]
|
||||
(alter-json-ml-to-fit-in-remaining-budget! value json-ml))) ; see issue #22
|
||||
|
||||
(defn has-body* [value]
|
||||
; note: body is emulated using surrogate references
|
||||
(if (was-over-budget?! value) ; see issue #22
|
||||
false ; see alter-json-ml-to-fit-in-remaining-budget!, in case we didn't fit into budget, a header-expander placeholder with body was added in place
|
||||
(boolean
|
||||
(cond
|
||||
(surrogate? value) (some? (get-surrogate-body value))
|
||||
(safe-call satisfies? false IDevtoolsFormat value) (devtools.format/-has-body value)
|
||||
(safe-call satisfies? false IFormat value) (devtools.protocols/-has-body value)
|
||||
:else false))))
|
||||
|
||||
(defn body* [value]
|
||||
(update-current-state! reset-depth-limits)
|
||||
(cond
|
||||
(surrogate? value) (render-markup (<surrogate-body> value))
|
||||
(safe-call satisfies? false IDevtoolsFormat value) (devtools.format/-body value)
|
||||
(safe-call satisfies? false IFormat value) (devtools.protocols/-body value)))
|
||||
|
||||
; ---------------------------------------------------------------------------------------------------------------------------
|
||||
; config-aware RAW API, see state management documentation state.cljs
|
||||
|
||||
(defn config-wrapper [raw-fn]
|
||||
(fn [value config]
|
||||
(binding [*current-state* (or config (get-default-state))]
|
||||
(raw-fn value))))
|
||||
|
||||
(def want-value? (config-wrapper want-value?*))
|
||||
(def header (config-wrapper header*))
|
||||
(def has-body (config-wrapper has-body*))
|
||||
(def body (config-wrapper body*))
|
||||
|
||||
; -- API CALLS --------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn wrap-with-exception-guard [f]
|
||||
(fn [& args]
|
||||
(try
|
||||
(apply f args)
|
||||
(catch :default e
|
||||
(reporter/report-internal-error! e "an exception was raised during value formatting")
|
||||
nil))))
|
||||
|
||||
(defn build-api-call [raw-fn pre-handler-key post-handler-key]
|
||||
"Wraps raw API call in a function which calls pre-handler and post-handler.
|
||||
|
||||
pre-handler gets a chance to pre-process value before it is passed to cljs-devtools
|
||||
post-handler gets a chance to post-process value returned by cljs-devtools."
|
||||
(let [handler (fn [value config]
|
||||
(let [pre-handler (or (pref pre-handler-key) identity)
|
||||
post-handler (or (pref post-handler-key) identity)
|
||||
preprocessed-value (pre-handler value)
|
||||
result (if (want-value? preprocessed-value config)
|
||||
(raw-fn preprocessed-value config))]
|
||||
(post-handler result)))]
|
||||
(wrap-with-exception-guard handler)))
|
||||
|
||||
(def header-api-call (build-api-call header :header-pre-handler :header-post-handler))
|
||||
(def has-body-api-call (build-api-call has-body :has-body-pre-handler :has-body-post-handler))
|
||||
(def body-api-call (build-api-call body :body-pre-handler :body-post-handler))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :use-macros {safe-call devtools.oops}, :excludes #{}, :name devtools.formatters.core, :imports nil, :requires {devtools.formatters.helpers devtools.formatters.helpers, devtools.formatters.markup devtools.formatters.markup, devtools.formatters.templating devtools.formatters.templating, devtools.formatters.state devtools.formatters.state, devtools.reporter devtools.reporter, devtools.protocols devtools.protocols, devtools.formatters.budgeting devtools.formatters.budgeting, devtools.format devtools.format, reporter devtools.reporter, devtools.prefs devtools.prefs}, :cljs.spec/speced-vars [], :uses {prevent-recursion? devtools.formatters.state, <surrogate-header> devtools.formatters.markup, was-over-budget?! devtools.formatters.budgeting, IDevtoolsFormat devtools.format, get-surrogate-body devtools.formatters.templating, <header> devtools.formatters.markup, pref devtools.prefs, <surrogate-body> devtools.formatters.markup, render-markup devtools.formatters.templating, update-current-state! devtools.formatters.state, IFormat devtools.protocols, *current-state* devtools.formatters.state, surrogate? devtools.formatters.templating, get-default-state devtools.formatters.state, reset-depth-limits devtools.formatters.state, alter-json-ml-to-fit-in-remaining-budget! devtools.formatters.budgeting, cljs-value? devtools.formatters.helpers}, :defs {body {:name devtools.formatters.core/body, :file "target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :line 57, :column 1, :end-line 57, :end-column 10, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :line 57, :column 6, :end-line 57, :end-column 10}, :tag any}, body-api-call {:name devtools.formatters.core/body-api-call, :file "target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :line 85, :column 1, :end-line 85, :end-column 19, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :line 85, :column 6, :end-line 85, :end-column 19}, :tag any}, want-value? {:name devtools.formatters.core/want-value?, :file "target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :line 54, :column 1, :end-line 54, :end-column 17, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :line 54, :column 6, :end-line 54, :end-column 17}, :tag any}, has-body* {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :line 28, :column 7, :end-line 28, :end-column 16, :arglists (quote ([value]))}, :name devtools.formatters.core/has-body*, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :end-column 16, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 28, :end-line 28, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value]))}, body* {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :line 39, :column 7, :end-line 39, :end-column 12, :arglists (quote ([value]))}, :name devtools.formatters.core/body*, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :end-column 12, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 39, :end-line 39, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value]))}, wrap-with-exception-guard {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :line 61, :column 7, :end-line 61, :end-column 32, :arglists (quote ([f]))}, :name devtools.formatters.core/wrap-with-exception-guard, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :end-column 32, :method-params ([f]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 61, :end-line 61, :max-fixed-arity 1, :fn-var true, :arglists (quote ([f]))}, header {:name devtools.formatters.core/header, :file "target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :line 55, :column 1, :end-line 55, :end-column 12, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :line 55, :column 6, :end-line 55, :end-column 12}, :tag any}, want-value?* {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :line 16, :column 7, :end-line 16, :end-column 19, :arglists (quote ([value]))}, :name devtools.formatters.core/want-value?*, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/core.cljs", :end-column 19, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 16, :end-line 16, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value]))}, header* {:protocol-inline nil, :meta {:file "/home/didier/Line truncated
|
||||
@@ -0,0 +1,219 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.formatters.core');
|
||||
goog.require('cljs.core');
|
||||
goog.require('devtools.prefs');
|
||||
goog.require('devtools.format');
|
||||
goog.require('devtools.protocols');
|
||||
goog.require('devtools.reporter');
|
||||
goog.require('devtools.formatters.templating');
|
||||
goog.require('devtools.formatters.helpers');
|
||||
goog.require('devtools.formatters.state');
|
||||
goog.require('devtools.formatters.markup');
|
||||
goog.require('devtools.formatters.budgeting');
|
||||
devtools.formatters.core.want_value_QMARK__STAR_ = (function devtools$formatters$core$want_value_QMARK__STAR_(value){
|
||||
var and__35486__auto__ = cljs.core.not.call(null,devtools.formatters.state.prevent_recursion_QMARK_.call(null));
|
||||
if(and__35486__auto__){
|
||||
var or__35498__auto__ = devtools.formatters.helpers.cljs_value_QMARK_.call(null,value);
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return devtools.formatters.templating.surrogate_QMARK_.call(null,value);
|
||||
}
|
||||
} else {
|
||||
return and__35486__auto__;
|
||||
}
|
||||
});
|
||||
devtools.formatters.core.header_STAR_ = (function devtools$formatters$core$header_STAR_(value){
|
||||
var json_ml = (cljs.core.truth_(devtools.formatters.templating.surrogate_QMARK_.call(null,value))?devtools.formatters.templating.render_markup.call(null,devtools.formatters.markup._LT_surrogate_header_GT_.call(null,value)):(cljs.core.truth_((function (){try{if(!((value == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === value.devtools$format$IDevtoolsFormat$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!value.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.format.IDevtoolsFormat,value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.format.IDevtoolsFormat,value);
|
||||
}
|
||||
}catch (e40600){var _e__38004__auto__ = e40600;
|
||||
return false;
|
||||
}})())?devtools.format._header.call(null,value):(cljs.core.truth_((function (){try{if(!((value == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === value.devtools$protocols$IFormat$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!value.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.IFormat,value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.IFormat,value);
|
||||
}
|
||||
}catch (e40602){var _e__38004__auto__ = e40602;
|
||||
return false;
|
||||
}})())?devtools.protocols._header.call(null,value):devtools.formatters.templating.render_markup.call(null,devtools.formatters.markup._LT_header_GT_.call(null,value))
|
||||
)));
|
||||
return devtools.formatters.budgeting.alter_json_ml_to_fit_in_remaining_budget_BANG_.call(null,value,json_ml);
|
||||
});
|
||||
devtools.formatters.core.has_body_STAR_ = (function devtools$formatters$core$has_body_STAR_(value){
|
||||
if(cljs.core.truth_(devtools.formatters.budgeting.was_over_budget_QMARK__BANG_.call(null,value))){
|
||||
return false;
|
||||
} else {
|
||||
return cljs.core.boolean$.call(null,(cljs.core.truth_(devtools.formatters.templating.surrogate_QMARK_.call(null,value))?!((devtools.formatters.templating.get_surrogate_body.call(null,value) == null)):(cljs.core.truth_((function (){try{if(!((value == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === value.devtools$format$IDevtoolsFormat$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!value.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.format.IDevtoolsFormat,value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.format.IDevtoolsFormat,value);
|
||||
}
|
||||
}catch (e40604){var _e__38004__auto__ = e40604;
|
||||
return false;
|
||||
}})())?devtools.format._has_body.call(null,value):(cljs.core.truth_((function (){try{if(!((value == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === value.devtools$protocols$IFormat$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!value.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.IFormat,value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.IFormat,value);
|
||||
}
|
||||
}catch (e40606){var _e__38004__auto__ = e40606;
|
||||
return false;
|
||||
}})())?devtools.protocols._has_body.call(null,value):false
|
||||
))));
|
||||
}
|
||||
});
|
||||
devtools.formatters.core.body_STAR_ = (function devtools$formatters$core$body_STAR_(value){
|
||||
devtools.formatters.state.update_current_state_BANG_.call(null,devtools.formatters.state.reset_depth_limits);
|
||||
|
||||
if(cljs.core.truth_(devtools.formatters.templating.surrogate_QMARK_.call(null,value))){
|
||||
return devtools.formatters.templating.render_markup.call(null,devtools.formatters.markup._LT_surrogate_body_GT_.call(null,value));
|
||||
} else {
|
||||
if(cljs.core.truth_((function (){try{if(!((value == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === value.devtools$format$IDevtoolsFormat$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!value.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.format.IDevtoolsFormat,value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.format.IDevtoolsFormat,value);
|
||||
}
|
||||
}catch (e40608){var _e__38004__auto__ = e40608;
|
||||
return false;
|
||||
}})())){
|
||||
return devtools.format._body.call(null,value);
|
||||
} else {
|
||||
if(cljs.core.truth_((function (){try{if(!((value == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === value.devtools$protocols$IFormat$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!value.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.IFormat,value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.IFormat,value);
|
||||
}
|
||||
}catch (e40610){var _e__38004__auto__ = e40610;
|
||||
return false;
|
||||
}})())){
|
||||
return devtools.protocols._body.call(null,value);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
devtools.formatters.core.config_wrapper = (function devtools$formatters$core$config_wrapper(raw_fn){
|
||||
return (function (value,config){
|
||||
var _STAR_current_state_STAR_40612 = devtools.formatters.state._STAR_current_state_STAR_;
|
||||
devtools.formatters.state._STAR_current_state_STAR_ = (function (){var or__35498__auto__ = config;
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return devtools.formatters.state.get_default_state.call(null);
|
||||
}
|
||||
})();
|
||||
|
||||
try{return raw_fn.call(null,value);
|
||||
}finally {devtools.formatters.state._STAR_current_state_STAR_ = _STAR_current_state_STAR_40612;
|
||||
}});
|
||||
});
|
||||
devtools.formatters.core.want_value_QMARK_ = devtools.formatters.core.config_wrapper.call(null,devtools.formatters.core.want_value_QMARK__STAR_);
|
||||
devtools.formatters.core.header = devtools.formatters.core.config_wrapper.call(null,devtools.formatters.core.header_STAR_);
|
||||
devtools.formatters.core.has_body = devtools.formatters.core.config_wrapper.call(null,devtools.formatters.core.has_body_STAR_);
|
||||
devtools.formatters.core.body = devtools.formatters.core.config_wrapper.call(null,devtools.formatters.core.body_STAR_);
|
||||
devtools.formatters.core.wrap_with_exception_guard = (function devtools$formatters$core$wrap_with_exception_guard(f){
|
||||
return (function() {
|
||||
var G__40614__delegate = function (args){
|
||||
try{return cljs.core.apply.call(null,f,args);
|
||||
}catch (e40613){var e = e40613;
|
||||
devtools.reporter.report_internal_error_BANG_.call(null,e,"an exception was raised during value formatting");
|
||||
|
||||
return null;
|
||||
}};
|
||||
var G__40614 = function (var_args){
|
||||
var args = null;
|
||||
if (arguments.length > 0) {
|
||||
var G__40615__i = 0, G__40615__a = new Array(arguments.length - 0);
|
||||
while (G__40615__i < G__40615__a.length) {G__40615__a[G__40615__i] = arguments[G__40615__i + 0]; ++G__40615__i;}
|
||||
args = new cljs.core.IndexedSeq(G__40615__a,0,null);
|
||||
}
|
||||
return G__40614__delegate.call(this,args);};
|
||||
G__40614.cljs$lang$maxFixedArity = 0;
|
||||
G__40614.cljs$lang$applyTo = (function (arglist__40616){
|
||||
var args = cljs.core.seq(arglist__40616);
|
||||
return G__40614__delegate(args);
|
||||
});
|
||||
G__40614.cljs$core$IFn$_invoke$arity$variadic = G__40614__delegate;
|
||||
return G__40614;
|
||||
})()
|
||||
;
|
||||
});
|
||||
devtools.formatters.core.build_api_call = (function devtools$formatters$core$build_api_call(raw_fn,pre_handler_key,post_handler_key){
|
||||
|
||||
var handler = (function (value,config){
|
||||
var pre_handler = (function (){var or__35498__auto__ = devtools.prefs.pref.call(null,pre_handler_key);
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return cljs.core.identity;
|
||||
}
|
||||
})();
|
||||
var post_handler = (function (){var or__35498__auto__ = devtools.prefs.pref.call(null,post_handler_key);
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return cljs.core.identity;
|
||||
}
|
||||
})();
|
||||
var preprocessed_value = pre_handler.call(null,value);
|
||||
var result = (cljs.core.truth_(devtools.formatters.core.want_value_QMARK_.call(null,preprocessed_value,config))?raw_fn.call(null,preprocessed_value,config):null);
|
||||
return post_handler.call(null,result);
|
||||
});
|
||||
return devtools.formatters.core.wrap_with_exception_guard.call(null,handler);
|
||||
});
|
||||
devtools.formatters.core.header_api_call = devtools.formatters.core.build_api_call.call(null,devtools.formatters.core.header,new cljs.core.Keyword(null,"header-pre-handler","header-pre-handler",-1997722262),new cljs.core.Keyword(null,"header-post-handler","header-post-handler",514828618));
|
||||
devtools.formatters.core.has_body_api_call = devtools.formatters.core.build_api_call.call(null,devtools.formatters.core.has_body,new cljs.core.Keyword(null,"has-body-pre-handler","has-body-pre-handler",1787020038),new cljs.core.Keyword(null,"has-body-post-handler","has-body-post-handler",-863451271));
|
||||
devtools.formatters.core.body_api_call = devtools.formatters.core.build_api_call.call(null,devtools.formatters.core.body,new cljs.core.Keyword(null,"body-pre-handler","body-pre-handler",1211926529),new cljs.core.Keyword(null,"body-post-handler","body-post-handler",-1040905424));
|
||||
|
||||
//# sourceMappingURL=core.js.map?rel=1517021944390
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/formatters\/core.js","sources":["core.cljs?rel=1517021944390"],"lineCount":219,"mappings":"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","names":["devtools.formatters.core\/want-value?*","value","and__35486__auto__","cljs.core\/not","devtools.formatters.state\/prevent-recursion?","or__35498__auto__","devtools.formatters.helpers\/cljs-value?","devtools.formatters.templating\/surrogate?","devtools.formatters.core\/header*","json-ml","devtools.formatters.templating\/render-markup","devtools.formatters.markup\/<surrogate-header>","cljs.core\/PROTOCOL_SENTINEL","cljs.core\/native-satisfies?","_e__38004__auto__","e40600","devtools.format\/IDevtoolsFormat","devtools.format\/-header","e40602","devtools.protocols\/IFormat","devtools.protocols\/-header","devtools.formatters.markup\/<header>","devtools.formatters.budgeting\/alter-json-ml-to-fit-in-remaining-budget!","devtools.formatters.core\/has-body*","devtools.formatters.budgeting\/was-over-budget?!","cljs.core\/boolean","devtools.formatters.templating\/get-surrogate-body","e40604","devtools.format\/-has-body","e40606","devtools.protocols\/-has-body","devtools.formatters.core\/body*","devtools.formatters.state\/update-current-state!","devtools.formatters.state\/reset-depth-limits","devtools.formatters.markup\/<surrogate-body>","e40608","devtools.format\/-body","e40610","devtools.protocols\/-body","devtools.formatters.core\/config-wrapper","raw-fn","config","*current-state*40612","devtools.formatters.state\/*current-state*","devtools.formatters.state\/get-default-state","devtools.formatters.core\/want-value?","devtools.formatters.core\/header","devtools.formatters.core\/has-body","devtools.formatters.core\/body","devtools.formatters.core\/wrap-with-exception-guard","f","args","e40613","cljs.core\/apply","e","devtools.reporter\/report-internal-error!","devtools.foLine truncated
|
||||
@@ -0,0 +1,118 @@
|
||||
(ns devtools.formatters.helpers
|
||||
(:require-macros [devtools.oops :refer [oget safe-call]])
|
||||
(:require [devtools.prefs :as prefs]
|
||||
[devtools.munging :as munging]
|
||||
[devtools.format :refer [IDevtoolsFormat]]
|
||||
[devtools.protocols :refer [ITemplate IGroup ISurrogate IFormat]]))
|
||||
|
||||
(defn pref [v]
|
||||
(if (keyword? v)
|
||||
(recur (prefs/pref v))
|
||||
v))
|
||||
|
||||
(defn get-prototype [o]
|
||||
(.-prototype o))
|
||||
|
||||
(defn get-constructor [o]
|
||||
(.-constructor o))
|
||||
|
||||
; ---------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn is-prototype? [o]
|
||||
(identical? (get-prototype (get-constructor o)) o))
|
||||
|
||||
(defn is-js-symbol? [o]
|
||||
(= (goog/typeOf o) "symbol"))
|
||||
|
||||
(defn cljs-function? [value]
|
||||
(and (not (pref :disable-cljs-fn-formatting)) ; TODO: this should be deprecated
|
||||
(not (var? value)) ; HACK: vars have IFn protocol and would act as functions TODO: implement custom rendering for vars
|
||||
(munging/cljs-fn? value)))
|
||||
|
||||
(defn has-formatting-protocol? [value]
|
||||
(or (safe-call satisfies? false IPrintWithWriter value)
|
||||
(safe-call satisfies? false IDevtoolsFormat value) ; legacy
|
||||
(safe-call satisfies? false IFormat value)))
|
||||
|
||||
; IRC #clojurescript @ freenode.net on 2015-01-27:
|
||||
; [13:40:09] darwin_: Hi, what is the best way to test if I'm handled ClojureScript data value or plain javascript object?
|
||||
; [14:04:34] dnolen: there is a very low level thing you can check
|
||||
; [14:04:36] dnolen: https://github.com/clojure/clojurescript/blob/c2550c4fdc94178a7957497e2bfde54e5600c457/src/clj/cljs/core.clj#L901
|
||||
; [14:05:00] dnolen: this property is unlikely to change - still it's probably not something anything anyone should use w/o a really good reason
|
||||
(defn cljs-type? [f]
|
||||
(and (goog/isObject f) ; see http://stackoverflow.com/a/22482737/84283
|
||||
(not (is-prototype? f))
|
||||
(.-cljs$lang$type f)))
|
||||
|
||||
(defn cljs-instance? [value]
|
||||
(and (goog/isObject value) ; see http://stackoverflow.com/a/22482737/84283
|
||||
(cljs-type? (get-constructor value))))
|
||||
|
||||
(defn cljs-land-value? [value]
|
||||
(or (cljs-instance? value)
|
||||
(has-formatting-protocol? value))) ; some raw js types can be extend-protocol to support cljs printing, see issue #21
|
||||
|
||||
(defn cljs-value? [value]
|
||||
(and
|
||||
(or (cljs-land-value? value)
|
||||
(cljs-function? value))
|
||||
(not (is-prototype? value))
|
||||
(not (is-js-symbol? value))))
|
||||
|
||||
(defn bool? [value]
|
||||
(or (true? value) (false? value)))
|
||||
|
||||
(defn instance-of-a-well-known-type? [value]
|
||||
(let [well-known-types (pref :well-known-types)
|
||||
constructor-fn (get-constructor value)
|
||||
[ns name] (munging/parse-constructor-info constructor-fn)
|
||||
fully-qualified-type-name (str ns "/" name)]
|
||||
(contains? well-known-types fully-qualified-type-name)))
|
||||
|
||||
(defn should-render-instance? [value]
|
||||
(and (cljs-instance? value)
|
||||
(not (instance-of-a-well-known-type? value))))
|
||||
|
||||
(defn directly-printable? [value]
|
||||
(or (string? value)
|
||||
(number? value)
|
||||
(bool? value)))
|
||||
|
||||
; ---------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn abbreviated? [template]
|
||||
(some #(= (pref :more-marker) %) template))
|
||||
|
||||
(defn abbreviate-long-string [string marker prefix-limit postfix-limit]
|
||||
(let [prefix (apply str (take prefix-limit string))
|
||||
postfix (apply str (take-last postfix-limit string))]
|
||||
(str prefix marker postfix)))
|
||||
|
||||
(defn get-more-marker [more-count]
|
||||
(str (pref :plus-symbol) more-count (pref :more-symbol)))
|
||||
|
||||
(defn wrap-arity [arity]
|
||||
(let [args-open-symbol (pref :args-open-symbol)
|
||||
args-close-symbol (pref :args-close-symbol)]
|
||||
(str args-open-symbol arity args-close-symbol)))
|
||||
|
||||
(defn fetch-field-value [obj field]
|
||||
[field (oget obj (munge field))])
|
||||
|
||||
(defn fetch-fields-values [obj fields]
|
||||
(map (partial fetch-field-value obj) fields))
|
||||
|
||||
(defn expandable? [obj]
|
||||
(if (satisfies? ISeqable obj)
|
||||
(if-let [min-count (pref (if (instance-of-a-well-known-type? obj)
|
||||
:min-expandable-sequable-count-for-well-known-types
|
||||
:min-expandable-sequable-count))]
|
||||
(if-not (empty? obj)
|
||||
(let [actual-count (bounded-count min-count obj)]
|
||||
(>= actual-count min-count))))))
|
||||
|
||||
(defn should-render? [pref-key value default-check]
|
||||
(if-let [render-pref (pref pref-key)]
|
||||
(cond
|
||||
(true? render-pref) (default-check value)
|
||||
(fn? render-pref) (render-pref value))))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :use-macros {safe-call devtools.oops, oget devtools.oops}, :excludes #{}, :name devtools.formatters.helpers, :imports nil, :requires {prefs devtools.prefs, devtools.prefs devtools.prefs, munging devtools.munging, devtools.munging devtools.munging, devtools.format devtools.format, devtools.protocols devtools.protocols}, :cljs.spec/speced-vars [], :uses {IGroup devtools.protocols, ITemplate devtools.protocols, IDevtoolsFormat devtools.format, ISurrogate devtools.protocols, IFormat devtools.protocols}, :defs {expandable? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :line 105, :column 7, :end-line 105, :end-column 18, :arglists (quote ([obj]))}, :name devtools.formatters.helpers/expandable?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :end-column 18, :method-params ([obj]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 105, :end-line 105, :max-fixed-arity 1, :fn-var true, :arglists (quote ([obj]))}, is-prototype? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :line 21, :column 7, :end-line 21, :end-column 20, :arglists (quote ([o]))}, :name devtools.formatters.helpers/is-prototype?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :end-column 20, :method-params ([o]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 21, :end-line 21, :max-fixed-arity 1, :fn-var true, :arglists (quote ([o]))}, cljs-land-value? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :line 51, :column 7, :end-line 51, :end-column 23, :arglists (quote ([value]))}, :name devtools.formatters.helpers/cljs-land-value?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :end-column 23, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 51, :end-line 51, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value]))}, should-render? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :line 114, :column 7, :end-line 114, :end-column 21, :arglists (quote ([pref-key value default-check]))}, :name devtools.formatters.helpers/should-render?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :end-column 21, :method-params ([pref-key value default-check]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 114, :end-line 114, :max-fixed-arity 3, :fn-var true, :arglists (quote ([pref-key value default-check]))}, bool? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :line 62, :column 7, :end-line 62, :end-column 12, :arglists (quote ([value]))}, :name devtools.formatters.helpers/bool?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :end-column 12, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 62, :end-line 62, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value]))}, cljs-instance? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :line 47, :column 7, :end-line 47, :end-column 21, :arglists (quote ([value]))}, :name devtools.formatters.helpers/cljs-instance?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :end-column 21, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 47, :end-line 47, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value]))}, get-constructor {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :line 16, :column 7, :end-line 16, :end-column 22, :arglists (quote ([o]))}, :name devtools.formatters.helpers/get-constructor, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :end-column 22, :method-params ([o]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 16, :end-line 16, :max-fixed-arity 1, :fn-var true, :arglists (quote ([o]))}, instance-of-a-well-known-type? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :line 65, :column 7, :end-line 65, :end-column 37, :arglists (quote ([value]))}, :name devtools.formatters.helpers/instance-of-a-well-known-type?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/helpers.cljs", :end-column 37, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 65, :end-lineLine truncated
|
||||
@@ -0,0 +1,238 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.formatters.helpers');
|
||||
goog.require('cljs.core');
|
||||
goog.require('devtools.prefs');
|
||||
goog.require('devtools.munging');
|
||||
goog.require('devtools.format');
|
||||
goog.require('devtools.protocols');
|
||||
devtools.formatters.helpers.pref = (function devtools$formatters$helpers$pref(v){
|
||||
while(true){
|
||||
if((v instanceof cljs.core.Keyword)){
|
||||
var G__38989 = devtools.prefs.pref.call(null,v);
|
||||
v = G__38989;
|
||||
continue;
|
||||
} else {
|
||||
return v;
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.get_prototype = (function devtools$formatters$helpers$get_prototype(o){
|
||||
return o.prototype;
|
||||
});
|
||||
devtools.formatters.helpers.get_constructor = (function devtools$formatters$helpers$get_constructor(o){
|
||||
return o.constructor;
|
||||
});
|
||||
devtools.formatters.helpers.is_prototype_QMARK_ = (function devtools$formatters$helpers$is_prototype_QMARK_(o){
|
||||
return (devtools.formatters.helpers.get_prototype.call(null,devtools.formatters.helpers.get_constructor.call(null,o)) === o);
|
||||
});
|
||||
devtools.formatters.helpers.is_js_symbol_QMARK_ = (function devtools$formatters$helpers$is_js_symbol_QMARK_(o){
|
||||
return cljs.core._EQ_.call(null,goog.typeOf(o),"symbol");
|
||||
});
|
||||
devtools.formatters.helpers.cljs_function_QMARK_ = (function devtools$formatters$helpers$cljs_function_QMARK_(value){
|
||||
var and__35486__auto__ = cljs.core.not.call(null,devtools.formatters.helpers.pref.call(null,new cljs.core.Keyword(null,"disable-cljs-fn-formatting","disable-cljs-fn-formatting",1903786837)));
|
||||
if(and__35486__auto__){
|
||||
var and__35486__auto____$1 = !(cljs.core.var_QMARK_.call(null,value));
|
||||
if(and__35486__auto____$1){
|
||||
return devtools.munging.cljs_fn_QMARK_.call(null,value);
|
||||
} else {
|
||||
return and__35486__auto____$1;
|
||||
}
|
||||
} else {
|
||||
return and__35486__auto__;
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.has_formatting_protocol_QMARK_ = (function devtools$formatters$helpers$has_formatting_protocol_QMARK_(value){
|
||||
var or__35498__auto__ = (function (){try{if(!((value == null))){
|
||||
if(((value.cljs$lang$protocol_mask$partition0$ & (2147483648))) || ((cljs.core.PROTOCOL_SENTINEL === value.cljs$core$IPrintWithWriter$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!value.cljs$lang$protocol_mask$partition0$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,cljs.core.IPrintWithWriter,value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,cljs.core.IPrintWithWriter,value);
|
||||
}
|
||||
}catch (e38992){var _e__38004__auto__ = e38992;
|
||||
return false;
|
||||
}})();
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
var or__35498__auto____$1 = (function (){try{if(!((value == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === value.devtools$format$IDevtoolsFormat$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!value.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.format.IDevtoolsFormat,value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.format.IDevtoolsFormat,value);
|
||||
}
|
||||
}catch (e38996){var _e__38004__auto__ = e38996;
|
||||
return false;
|
||||
}})();
|
||||
if(cljs.core.truth_(or__35498__auto____$1)){
|
||||
return or__35498__auto____$1;
|
||||
} else {
|
||||
try{if(!((value == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === value.devtools$protocols$IFormat$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!value.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.IFormat,value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.IFormat,value);
|
||||
}
|
||||
}catch (e38998){var _e__38004__auto__ = e38998;
|
||||
return false;
|
||||
}}
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.cljs_type_QMARK_ = (function devtools$formatters$helpers$cljs_type_QMARK_(f){
|
||||
var and__35486__auto__ = goog.isObject(f);
|
||||
if(cljs.core.truth_(and__35486__auto__)){
|
||||
var and__35486__auto____$1 = cljs.core.not.call(null,devtools.formatters.helpers.is_prototype_QMARK_.call(null,f));
|
||||
if(and__35486__auto____$1){
|
||||
return f.cljs$lang$type;
|
||||
} else {
|
||||
return and__35486__auto____$1;
|
||||
}
|
||||
} else {
|
||||
return and__35486__auto__;
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.cljs_instance_QMARK_ = (function devtools$formatters$helpers$cljs_instance_QMARK_(value){
|
||||
var and__35486__auto__ = goog.isObject(value);
|
||||
if(cljs.core.truth_(and__35486__auto__)){
|
||||
return devtools.formatters.helpers.cljs_type_QMARK_.call(null,devtools.formatters.helpers.get_constructor.call(null,value));
|
||||
} else {
|
||||
return and__35486__auto__;
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.cljs_land_value_QMARK_ = (function devtools$formatters$helpers$cljs_land_value_QMARK_(value){
|
||||
var or__35498__auto__ = devtools.formatters.helpers.cljs_instance_QMARK_.call(null,value);
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return devtools.formatters.helpers.has_formatting_protocol_QMARK_.call(null,value);
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.cljs_value_QMARK_ = (function devtools$formatters$helpers$cljs_value_QMARK_(value){
|
||||
var and__35486__auto__ = (function (){var or__35498__auto__ = devtools.formatters.helpers.cljs_land_value_QMARK_.call(null,value);
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return devtools.formatters.helpers.cljs_function_QMARK_.call(null,value);
|
||||
}
|
||||
})();
|
||||
if(cljs.core.truth_(and__35486__auto__)){
|
||||
return (cljs.core.not.call(null,devtools.formatters.helpers.is_prototype_QMARK_.call(null,value))) && (cljs.core.not.call(null,devtools.formatters.helpers.is_js_symbol_QMARK_.call(null,value)));
|
||||
} else {
|
||||
return and__35486__auto__;
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.bool_QMARK_ = (function devtools$formatters$helpers$bool_QMARK_(value){
|
||||
return (value === true) || (value === false);
|
||||
});
|
||||
devtools.formatters.helpers.instance_of_a_well_known_type_QMARK_ = (function devtools$formatters$helpers$instance_of_a_well_known_type_QMARK_(value){
|
||||
var well_known_types = devtools.formatters.helpers.pref.call(null,new cljs.core.Keyword(null,"well-known-types","well-known-types",70638649));
|
||||
var constructor_fn = devtools.formatters.helpers.get_constructor.call(null,value);
|
||||
var vec__39000 = devtools.munging.parse_constructor_info.call(null,constructor_fn);
|
||||
var ns = cljs.core.nth.call(null,vec__39000,(0),null);
|
||||
var name = cljs.core.nth.call(null,vec__39000,(1),null);
|
||||
var fully_qualified_type_name = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns),"/",cljs.core.str.cljs$core$IFn$_invoke$arity$1(name)].join('');
|
||||
return cljs.core.contains_QMARK_.call(null,well_known_types,fully_qualified_type_name);
|
||||
});
|
||||
devtools.formatters.helpers.should_render_instance_QMARK_ = (function devtools$formatters$helpers$should_render_instance_QMARK_(value){
|
||||
var and__35486__auto__ = devtools.formatters.helpers.cljs_instance_QMARK_.call(null,value);
|
||||
if(cljs.core.truth_(and__35486__auto__)){
|
||||
return cljs.core.not.call(null,devtools.formatters.helpers.instance_of_a_well_known_type_QMARK_.call(null,value));
|
||||
} else {
|
||||
return and__35486__auto__;
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.directly_printable_QMARK_ = (function devtools$formatters$helpers$directly_printable_QMARK_(value){
|
||||
var or__35498__auto__ = typeof value === 'string';
|
||||
if(or__35498__auto__){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
var or__35498__auto____$1 = typeof value === 'number';
|
||||
if(or__35498__auto____$1){
|
||||
return or__35498__auto____$1;
|
||||
} else {
|
||||
return devtools.formatters.helpers.bool_QMARK_.call(null,value);
|
||||
}
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.abbreviated_QMARK_ = (function devtools$formatters$helpers$abbreviated_QMARK_(template){
|
||||
return cljs.core.some.call(null,(function (p1__39003_SHARP_){
|
||||
return cljs.core._EQ_.call(null,devtools.formatters.helpers.pref.call(null,new cljs.core.Keyword(null,"more-marker","more-marker",-14717935)),p1__39003_SHARP_);
|
||||
}),template);
|
||||
});
|
||||
devtools.formatters.helpers.abbreviate_long_string = (function devtools$formatters$helpers$abbreviate_long_string(string,marker,prefix_limit,postfix_limit){
|
||||
var prefix = cljs.core.apply.call(null,cljs.core.str,cljs.core.take.call(null,prefix_limit,string));
|
||||
var postfix = cljs.core.apply.call(null,cljs.core.str,cljs.core.take_last.call(null,postfix_limit,string));
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(prefix),cljs.core.str.cljs$core$IFn$_invoke$arity$1(marker),cljs.core.str.cljs$core$IFn$_invoke$arity$1(postfix)].join('');
|
||||
});
|
||||
devtools.formatters.helpers.get_more_marker = (function devtools$formatters$helpers$get_more_marker(more_count){
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.formatters.helpers.pref.call(null,new cljs.core.Keyword(null,"plus-symbol","plus-symbol",-1984915189))),cljs.core.str.cljs$core$IFn$_invoke$arity$1(more_count),cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.formatters.helpers.pref.call(null,new cljs.core.Keyword(null,"more-symbol","more-symbol",-2139760242)))].join('');
|
||||
});
|
||||
devtools.formatters.helpers.wrap_arity = (function devtools$formatters$helpers$wrap_arity(arity){
|
||||
var args_open_symbol = devtools.formatters.helpers.pref.call(null,new cljs.core.Keyword(null,"args-open-symbol","args-open-symbol",-1336957557));
|
||||
var args_close_symbol = devtools.formatters.helpers.pref.call(null,new cljs.core.Keyword(null,"args-close-symbol","args-close-symbol",777697973));
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(args_open_symbol),cljs.core.str.cljs$core$IFn$_invoke$arity$1(arity),cljs.core.str.cljs$core$IFn$_invoke$arity$1(args_close_symbol)].join('');
|
||||
});
|
||||
devtools.formatters.helpers.fetch_field_value = (function devtools$formatters$helpers$fetch_field_value(obj,field){
|
||||
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [field,(obj[cljs.core.munge.call(null,field)])], null);
|
||||
});
|
||||
devtools.formatters.helpers.fetch_fields_values = (function devtools$formatters$helpers$fetch_fields_values(obj,fields){
|
||||
return cljs.core.map.call(null,cljs.core.partial.call(null,devtools.formatters.helpers.fetch_field_value,obj),fields);
|
||||
});
|
||||
devtools.formatters.helpers.expandable_QMARK_ = (function devtools$formatters$helpers$expandable_QMARK_(obj){
|
||||
if(((!((obj == null)))?((((obj.cljs$lang$protocol_mask$partition0$ & (8388608))) || ((cljs.core.PROTOCOL_SENTINEL === obj.cljs$core$ISeqable$)))?true:(((!obj.cljs$lang$protocol_mask$partition0$))?cljs.core.native_satisfies_QMARK_.call(null,cljs.core.ISeqable,obj):false)):cljs.core.native_satisfies_QMARK_.call(null,cljs.core.ISeqable,obj))){
|
||||
var temp__5455__auto__ = devtools.formatters.helpers.pref.call(null,(cljs.core.truth_(devtools.formatters.helpers.instance_of_a_well_known_type_QMARK_.call(null,obj))?new cljs.core.Keyword(null,"min-expandable-sequable-count-for-well-known-types","min-expandable-sequable-count-for-well-known-types",-1879576081):new cljs.core.Keyword(null,"min-expandable-sequable-count","min-expandable-sequable-count",63566227)));
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var min_count = temp__5455__auto__;
|
||||
if(!(cljs.core.empty_QMARK_.call(null,obj))){
|
||||
var actual_count = cljs.core.bounded_count.call(null,min_count,obj);
|
||||
return (actual_count >= min_count);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.should_render_QMARK_ = (function devtools$formatters$helpers$should_render_QMARK_(pref_key,value,default_check){
|
||||
var temp__5455__auto__ = devtools.formatters.helpers.pref.call(null,pref_key);
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var render_pref = temp__5455__auto__;
|
||||
if(render_pref === true){
|
||||
return default_check.call(null,value);
|
||||
} else {
|
||||
if(cljs.core.fn_QMARK_.call(null,render_pref)){
|
||||
return render_pref.call(null,value);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
//# sourceMappingURL=helpers.js.map?rel=1517021942343
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/formatters\/helpers.js","sources":["helpers.cljs?rel=1517021942344"],"lineCount":238,"mappings":"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\/D,6JAAmB+D,wDAAW,2CAAA,3CAAC\/D;;AAEvC,yCAAA,zCAAMgE,0FAAYC;AAAlB,AACE,IAAMC,mBAAiB,2CAAA,3CAAClE;IAClBmE,oBAAkB,2CAAA,3CAACnE;AADzB,AAEE,oDAAKkE,8DAAiBD,mDAAME;;AAEhC,gDAAA,hDAAMC,wGAAmBC,IAAIC;AAA7B,AAAA,0FACGA,MAAM,CAAMD,IAAI,AAACE,0BAAMD;;AAE1B,kDAAA,lDAAME,4GAAqBH,IAAII;AAA\/B,AACE,OAACC,wBAAI,AAACC,4BAAQP,8CAAkBC,KAAKI;;AAEvC,gDAAA,hDAAMG,wGAAaP;AAAnB,AACE,GAAI,EAAA,EAAA,QAAA,QAAA,EAAA,CAAA,CAAA,0CAAA,gBAAA,CAAAlD,gCAAA,2BAAA,KAAA,EAAA,EAAA,0CAAA,AAAAC,oEAAA,QAAA,AAAAA,hCAAYyD,4EAAAA,pTAASR,mBAAAA,2FAAAA,oCAAAA,yGAAAA,4EAAAA;AACvB,IAAAS,qBAAmB,AAAC9E,2CAAK,mGAAA,kJAAA,nOAAI,AAACmC,2EAA+BkC;AAA7D,AAAA,oBAAAS;AAAA,gBAAAA,ZAASC;AAAT,AAGE,GAAA,EAAQ,AAACC,iCAAOX;AACd,IAAMY,eAAa,AAACC,kCAAcH,UAAUV;AAA5C,AACE,QAAIY,gBAAaF;;AAFrB;;;AAHF;;;AADF;;;AAQF,mDAAA,nDAAMI,8GAAgBC,SAASxE,MAAMyE;AAArC,AACE,IAAAP,qBAAqB,AAAC9E,2CAAKoF;AAA3B,AAAA,oBAAAN;AAAA,kBAAAA,dAASQ;AAAT,AACE,GACE,AAAOA;AAAa,OAACD,wBAAczE;;AADrC,GAEE,AAAC2E,8BAAID;AAAa,OAACA,sBAAY1E;;AAFjC;;;;AADF","names":["devtools.formatters.helpers\/pref","v","cljs.core\/Keyword","devtools.prefs\/pref","devtools.formatters.helpers\/get-prototype","o","devtools.formatters.helpers\/get-constructor","devtools.formatters.helpers\/is-prototype?","devtools.formatters.helpers\/is-js-symbol?","cljs.core\/=","goog\/typeOf","devtools.formatters.helpers\/cljs-function?","value","and__35486__auto__","cljs.core\/not","cljs.core\/var?","devtools.munging\/cljs-fn?","devtools.formatters.helpers\/has-formatting-protocol?","or__35498__auto__","cljs.core\/PROTOCOL_SENTINEL","cljs.core\/native-satisfies?","_e__38004__auto__","e38992","cljs.core\/IPrintWithWriter","e38996","devtools.format\/IDevtoolsFormat","e38998","devtools.protocols\/IFormat","devtools.formatters.helpers\/cljs-type?","f","goog\/isObject","devtools.formatters.helpers\/cljs-instance?","devtools.formatters.helpers\/cljs-land-value?","devtools.formatters.helpers\/cljs-value?","devtools.formatters.helpers\/bool?","devtools.formatters.helpers\/instanLine truncated
|
||||
@@ -0,0 +1,451 @@
|
||||
(ns devtools.formatters.markup
|
||||
(:require-macros [devtools.formatters.markup :refer [emit-markup-db]])
|
||||
(:require [devtools.formatters.helpers :refer [bool? cljs-function? cljs-type? cljs-instance?
|
||||
should-render-instance? expandable? abbreviated?
|
||||
abbreviate-long-string get-constructor pref should-render?
|
||||
get-more-marker wrap-arity fetch-fields-values]]
|
||||
[devtools.formatters.printing :refer [managed-print-via-writer managed-print-via-protocol]]
|
||||
[devtools.formatters.state :refer [set-prevent-recursion set-managed-print-level reset-depth-limits]]
|
||||
[devtools.formatters.templating :refer [get-surrogate-body
|
||||
get-surrogate-target
|
||||
get-surrogate-start-index
|
||||
get-surrogate-header]]
|
||||
[devtools.munging :as munging]))
|
||||
|
||||
; reusable hiccup-like templates
|
||||
|
||||
(declare get-markup-db)
|
||||
|
||||
; -- cljs printing ---------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn print-with [method value tag & [max-level]]
|
||||
(let [job-fn #(method value tag (get-markup-db))]
|
||||
(if (some? max-level)
|
||||
(binding [*print-level* (inc max-level)] ; when printing do at most print-level deep recursion
|
||||
(job-fn))
|
||||
(job-fn))))
|
||||
|
||||
(defn print-via-writer [value tag & [max-level]]
|
||||
(print-with managed-print-via-writer value tag max-level))
|
||||
|
||||
(defn print-via-protocol [value tag & [max-level]]
|
||||
(print-with managed-print-via-protocol value tag max-level))
|
||||
|
||||
; -- references -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <expandable> [& children]
|
||||
(let [inner-markup (concat [:expandable-inner-tag] children)]
|
||||
[:expandable-tag :expandable-symbol inner-markup]))
|
||||
|
||||
(defn <raw-surrogate> [& args]
|
||||
(concat ["surrogate"] args))
|
||||
|
||||
(defn <surrogate> [& [object header body start-index]]
|
||||
(let [header (if (some? body) (<expandable> header) header)]
|
||||
(<raw-surrogate> object header body start-index)))
|
||||
|
||||
(defn <reference> [& args]
|
||||
(concat ["reference"] args))
|
||||
|
||||
(defn <reference-surrogate> [& args]
|
||||
(<reference> (apply <surrogate> args)))
|
||||
|
||||
(defn <circular-reference> [& children]
|
||||
(<reference-surrogate> nil [:circular-reference-tag :circular-ref-icon] (concat [:circular-reference-body-tag] children)))
|
||||
|
||||
(defn <native-reference> [object]
|
||||
(let [reference (<reference> object #(set-prevent-recursion % true))]
|
||||
[:native-reference-wrapper-tag :native-reference-background [:native-reference-tag reference]]))
|
||||
|
||||
(defn <header-expander> [object]
|
||||
(<reference> (<raw-surrogate> object :header-expander-symbol :target) reset-depth-limits))
|
||||
|
||||
; -- simple markup ----------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <cljs-land> [& children]
|
||||
(concat [:cljs-land-tag] children))
|
||||
|
||||
(defn <nil> []
|
||||
; this code is duplicated in templating.cljs, see make-reference
|
||||
[:nil-tag :nil-label])
|
||||
|
||||
(defn <bool> [bool]
|
||||
[:bool-tag (str bool)])
|
||||
|
||||
(defn <keyword> [keyword]
|
||||
[:keyword-tag (str keyword)])
|
||||
|
||||
(defn <symbol> [symbol]
|
||||
[:symbol-tag (str symbol)])
|
||||
|
||||
(defn <number> [number]
|
||||
(if (integer? number)
|
||||
[:integer-tag number]
|
||||
[:float-tag number]))
|
||||
|
||||
; -- string markup ----------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <string> [string]
|
||||
(let [dq (pref :dq)
|
||||
re-nl (js/RegExp. "\n" "g")
|
||||
nl-marker (pref :new-line-string-replacer)
|
||||
inline-string (.replace string re-nl nl-marker)
|
||||
max-inline-string-size (+ (pref :string-prefix-limit) (pref :string-postfix-limit))
|
||||
quote-string (fn [s] (str dq s dq))
|
||||
should-abbreviate? (> (count inline-string) max-inline-string-size)]
|
||||
(if should-abbreviate?
|
||||
(let [abbreviated-string (abbreviate-long-string inline-string
|
||||
(pref :string-abbreviation-marker)
|
||||
(pref :string-prefix-limit)
|
||||
(pref :string-postfix-limit))
|
||||
abbreviated-string-markup [:string-tag (quote-string abbreviated-string)]
|
||||
string-with-nl-markers (.replace string re-nl (str nl-marker "\n"))
|
||||
details-markup [:expanded-string-tag string-with-nl-markers]]
|
||||
(<reference-surrogate> string abbreviated-string-markup details-markup))
|
||||
[:string-tag (quote-string inline-string)])))
|
||||
|
||||
; -- generic preview markup -------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <preview> [value]
|
||||
(print-via-writer value :header-tag (pref :max-print-level)))
|
||||
|
||||
; -- body-related templates -------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <body> [markup]
|
||||
[:body-tag markup])
|
||||
|
||||
(defn <aligned-body> [markups-lists]
|
||||
(let [prepend-li-tag (fn [line]
|
||||
(if line
|
||||
(concat [:aligned-li-tag] line)))
|
||||
aligned-lines (keep prepend-li-tag markups-lists)]
|
||||
(<body> (concat [:standard-ol-no-margin-tag] aligned-lines))))
|
||||
|
||||
(defn <standard-body> [markups-lists & [no-margin?]]
|
||||
(let [ol-tag (if no-margin? :standard-ol-no-margin-tag :standard-ol-tag)
|
||||
li-tag (if no-margin? :standard-li-no-margin-tag :standard-li-tag)
|
||||
prepend-li-tag (fn [line]
|
||||
(if line
|
||||
(concat [li-tag] line)))
|
||||
lines-markups (keep prepend-li-tag markups-lists)]
|
||||
(concat [ol-tag] lines-markups)))
|
||||
|
||||
(defn <standard-body-reference> [o]
|
||||
(<standard-body> [[(<reference> o)]]))
|
||||
|
||||
; -- generic details markup -------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <index> [value]
|
||||
[:index-tag value :line-index-separator])
|
||||
|
||||
(defn- body-line [index value]
|
||||
(let [index-markup (<index> index)
|
||||
value-markup (print-via-writer value :item-tag (pref :body-line-max-print-level))]
|
||||
[index-markup value-markup]))
|
||||
|
||||
; TODO: this fn is screaming for rewrite
|
||||
(defn- prepare-body-lines [data starting-index]
|
||||
(loop [work data
|
||||
index starting-index
|
||||
lines []]
|
||||
(if (empty? work)
|
||||
lines
|
||||
(recur (rest work) (inc index) (conj lines (body-line index (first work)))))))
|
||||
|
||||
(defn- body-lines [value starting-index]
|
||||
(let [seq (seq value)
|
||||
max-number-body-items (pref :max-number-body-items)
|
||||
chunk (take max-number-body-items seq)
|
||||
rest (drop max-number-body-items seq)
|
||||
lines (prepare-body-lines chunk starting-index)
|
||||
continue? (not (empty? (take 1 rest)))]
|
||||
(if-not continue?
|
||||
lines
|
||||
(let [more-label-markup [:body-items-more-tag :body-items-more-label]
|
||||
start-index (+ starting-index max-number-body-items)
|
||||
more-markup (<reference-surrogate> rest more-label-markup :target start-index)]
|
||||
(conj lines [more-markup])))))
|
||||
|
||||
(defn <details> [value starting-index]
|
||||
(let [has-continuation? (pos? starting-index)
|
||||
body-markup (<standard-body> (body-lines value starting-index) has-continuation?)]
|
||||
(if has-continuation?
|
||||
body-markup
|
||||
(<body> body-markup))))
|
||||
|
||||
; -- generic list template --------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <list-details> [items _opts]
|
||||
(<aligned-body> (map list items)))
|
||||
|
||||
(defn <list> [items max-count & [opts]]
|
||||
(let [items-markups (take max-count items)
|
||||
more-count (- (count items) max-count)
|
||||
more? (pos? more-count)
|
||||
separator (or (:separator opts) :list-separator)
|
||||
more-symbol (if more?
|
||||
(if-let [more-symbol (:more-symbol opts)]
|
||||
(if (fn? more-symbol)
|
||||
(more-symbol more-count)
|
||||
more-symbol)
|
||||
(get-more-marker more-count)))
|
||||
preview-markup (concat [(or (:tag opts) :list-tag)
|
||||
(or (:open-symbol opts) :list-open-symbol)]
|
||||
(interpose separator items-markups)
|
||||
(if more? [separator more-symbol])
|
||||
[(or (:close-symbol opts) :list-close-symbol)])]
|
||||
(if more?
|
||||
(let [details-markup (:details opts)
|
||||
default-details-fn (partial <list-details> items opts)]
|
||||
(<reference-surrogate> nil preview-markup (or details-markup default-details-fn)))
|
||||
preview-markup)))
|
||||
|
||||
; -- mete-related markup ----------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <meta> [metadata]
|
||||
(let [body-fn (fn [] [:meta-body-tag (<preview> metadata)])
|
||||
header [:meta-header-tag "meta"]]
|
||||
[:meta-reference-tag (<reference-surrogate> metadata header body-fn)])) ; body must be lazy, see #35
|
||||
|
||||
(defn <meta-wrapper> [metadata & children]
|
||||
(concat [:meta-wrapper-tag] children [(<meta> metadata)]))
|
||||
|
||||
; -- function markup --------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <function-details> [fn-obj ns _name arities prefix]
|
||||
{:pre [(fn? fn-obj)]}
|
||||
(let [arities (map wrap-arity arities)
|
||||
make-arity-markup-list (fn [arity]
|
||||
[[:fn-multi-arity-args-indent-tag prefix]
|
||||
[:fn-args-tag arity]])
|
||||
arities-markupts-lists (if (> (count arities) 1) (map make-arity-markup-list arities))
|
||||
ns-markups-list (if-not (empty? ns) [:ns-icon [:fn-ns-name-tag ns]])
|
||||
native-markups-list [:native-icon (<native-reference> fn-obj)]]
|
||||
(<aligned-body> (concat arities-markupts-lists [ns-markups-list native-markups-list]))))
|
||||
|
||||
(defn <arities> [arities]
|
||||
(let [multi-arity? (> (count arities) 1)]
|
||||
[:fn-args-tag (wrap-arity (if multi-arity?
|
||||
(pref :multi-arity-symbol)
|
||||
(first arities)))]))
|
||||
|
||||
(defn <function> [fn-obj]
|
||||
{:pre [(fn? fn-obj)]}
|
||||
(let [[ns name] (munging/parse-fn-info fn-obj)
|
||||
lambda? (empty? name)
|
||||
spacer-symbol (pref :spacer)
|
||||
rest-symbol (pref :rest-symbol)
|
||||
multi-arity-symbol (pref :multi-arity-symbol)
|
||||
arities (munging/extract-arities fn-obj true spacer-symbol multi-arity-symbol rest-symbol)
|
||||
arities-markup (<arities> arities)
|
||||
name-markup (if-not lambda? [:fn-name-tag name])
|
||||
icon-markup (if lambda? :lambda-icon :fn-icon)
|
||||
prefix-markup [:fn-prefix-tag icon-markup name-markup]
|
||||
preview-markup [:fn-header-tag prefix-markup arities-markup]
|
||||
details-fn (partial <function-details> fn-obj ns name arities prefix-markup)]
|
||||
(<reference-surrogate> fn-obj preview-markup details-fn)))
|
||||
|
||||
; -- type markup ------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <type-basis-item> [basis-item]
|
||||
[:type-basis-item-tag (name basis-item)])
|
||||
|
||||
(defn <type-basis> [basis]
|
||||
(let [item-markups (map <type-basis-item> basis)
|
||||
children-markups (interpose :type-basis-item-separator item-markups)]
|
||||
(concat [:type-basis-tag] children-markups)))
|
||||
|
||||
(defn <type-details> [constructor-fn ns _name basis]
|
||||
(let [ns-markup (if-not (empty? ns) [:ns-icon [:fn-ns-name-tag ns]])
|
||||
basis-markup (if (empty? basis)
|
||||
[:empty-basis-symbol]
|
||||
[:basis-icon (<type-basis> basis)])
|
||||
native-markup [:native-icon (<native-reference> constructor-fn)]]
|
||||
(<aligned-body> [basis-markup ns-markup native-markup])))
|
||||
|
||||
(defn <type> [constructor-fn & [header-tag]]
|
||||
(let [[ns name basis] (munging/parse-constructor-info constructor-fn)
|
||||
name-markup [:type-name-tag name]
|
||||
preview-markup [(or header-tag :type-header-tag) :type-symbol name-markup]
|
||||
details-markup-fn (partial <type-details> constructor-fn ns name basis)]
|
||||
[:type-wrapper-tag
|
||||
:type-header-background
|
||||
[:type-ref-tag (<reference-surrogate> constructor-fn preview-markup details-markup-fn)]]))
|
||||
|
||||
(defn <standalone-type> [constructor-fn & [header-tag]]
|
||||
[:standalone-type-tag (<type> constructor-fn header-tag)])
|
||||
|
||||
; -- protocols markup -------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <protocol-method-arity> [arity-fn]
|
||||
(<reference> arity-fn))
|
||||
|
||||
(defn <protocol-method-arities-details> [fns]
|
||||
(<aligned-body> (map <protocol-method-arity> fns)))
|
||||
|
||||
(defn <protocol-method-arities> [fns & [max-fns]]
|
||||
(let [max-fns (or max-fns (pref :max-protocol-method-arities-list))
|
||||
more? (> (count fns) max-fns)
|
||||
aritites-markups (map <protocol-method-arity> (take max-fns fns))
|
||||
preview-markup (concat [:protocol-method-arities-header-tag :protocol-method-arities-header-open-symbol]
|
||||
(interpose :protocol-method-arities-list-header-separator aritites-markups)
|
||||
(if more? [:protocol-method-arities-more-symbol])
|
||||
[:protocol-method-arities-header-close-symbol])]
|
||||
(if more?
|
||||
(let [details-markup-fn (partial <protocol-method-arities-details> fns)]
|
||||
(<reference-surrogate> nil preview-markup details-markup-fn))
|
||||
preview-markup)))
|
||||
|
||||
(defn <protocol-method> [name arities]
|
||||
[:protocol-method-tag
|
||||
:method-icon
|
||||
[:protocol-method-name-tag name]
|
||||
(<protocol-method-arities> arities)])
|
||||
|
||||
(defn <protocol-details> [obj ns _name selector _fast?]
|
||||
(let [protocol-obj (munging/get-protocol-object selector)
|
||||
ns-markups-list (if-not (empty? ns) [:ns-icon [:protocol-ns-name-tag ns]])
|
||||
native-markups-list (if (some? protocol-obj) [:native-icon (<native-reference> protocol-obj)])
|
||||
methods (munging/collect-protocol-methods obj selector)
|
||||
methods-markups (map (fn [[name arities]] (<protocol-method> name arities)) methods)
|
||||
methods-markups-lists (map list methods-markups)]
|
||||
(<aligned-body> (concat methods-markups-lists [ns-markups-list native-markups-list]))))
|
||||
|
||||
(defn <protocol> [obj protocol & [tag]]
|
||||
(let [{:keys [ns name selector fast?]} protocol
|
||||
preview-markup [(or tag :protocol-name-tag) name]
|
||||
prefix-markup [(if fast? :fast-protocol-tag :slow-protocol-tag) :protocol-background]]
|
||||
(if (some? obj)
|
||||
(let [details-markup-fn (partial <protocol-details> obj ns name selector fast?)]
|
||||
(conj prefix-markup (<reference-surrogate> obj preview-markup details-markup-fn)))
|
||||
(conj prefix-markup preview-markup))))
|
||||
|
||||
(defn <more-protocols> [more-count]
|
||||
(let [fake-protocol {:name (get-more-marker more-count)}]
|
||||
(<protocol> nil fake-protocol :protocol-more-tag)))
|
||||
|
||||
(defn <protocols-list> [obj protocols & [max-protocols]]
|
||||
(let [max-protocols (or max-protocols (pref :max-list-protocols))
|
||||
protocols-markups (map (partial <protocol> obj) protocols)]
|
||||
(<list> protocols-markups max-protocols {:tag :protocols-header-tag
|
||||
:open-symbol :protocols-list-open-symbol
|
||||
:close-symbol :protocols-list-close-symbol
|
||||
:separator :header-protocol-separator
|
||||
:more-symbol <more-protocols>})))
|
||||
|
||||
; -- instance fields markup -------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <field> [name value]
|
||||
[:header-field-tag
|
||||
[:header-field-name-tag (str name)]
|
||||
:header-field-value-spacer
|
||||
[:header-field-value-tag (<reference> (<surrogate> value) #(set-managed-print-level % 1))]
|
||||
:header-field-separator])
|
||||
|
||||
(defn <fields-details-row> [field]
|
||||
(let [[name value] field]
|
||||
[:body-field-tr-tag
|
||||
[:body-field-td1-tag
|
||||
:body-field-symbol
|
||||
[:body-field-name-tag (str name)]]
|
||||
[:body-field-td2-tag
|
||||
:body-field-value-spacer]
|
||||
[:body-field-td3-tag
|
||||
[:body-field-value-tag (<reference-surrogate> value)]]]))
|
||||
|
||||
(defn <fields> [fields & [max-fields]]
|
||||
(if (zero? (count fields))
|
||||
[:fields-header-tag :fields-header-no-fields-symbol]
|
||||
(let [max-fields (or max-fields (pref :max-instance-header-fields))
|
||||
more? (> (count fields) max-fields)
|
||||
fields-markups (map (fn [[name value]] (<field> name value)) (take max-fields fields))]
|
||||
(concat [:fields-header-tag
|
||||
:fields-header-open-symbol]
|
||||
fields-markups
|
||||
[(if more? :more-fields-symbol)
|
||||
:fields-header-close-symbol]))))
|
||||
|
||||
(defn <fields-details> [fields obj]
|
||||
(let [protocols (munging/scan-protocols obj)
|
||||
has-protocols? (not (empty? protocols))
|
||||
fields-markup (if-not (zero? (count fields))
|
||||
[:fields-icon (concat [:instance-body-fields-table-tag] (map <fields-details-row> fields))])
|
||||
protocols-list-markup (if has-protocols? [:protocols-icon (<protocols-list> obj protocols)])
|
||||
native-markup [:native-icon (<native-reference> obj)]]
|
||||
(<aligned-body> [fields-markup protocols-list-markup native-markup])))
|
||||
|
||||
; -- type/record instance markup --------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <instance> [value]
|
||||
(let [constructor-fn (get-constructor value)
|
||||
[_ns _name basis] (munging/parse-constructor-info constructor-fn)
|
||||
custom-printing? (implements? IPrintWithWriter value)
|
||||
type-markup (<type> constructor-fn :instance-type-header-tag)
|
||||
fields (fetch-fields-values value basis)
|
||||
fields-markup (<fields> fields (if custom-printing? 0))
|
||||
fields-details-markup-fn #(<fields-details> fields value)
|
||||
fields-preview-markup [:instance-value-tag (<reference-surrogate> value fields-markup fields-details-markup-fn)]
|
||||
custom-printing-markup (if custom-printing?
|
||||
[:instance-custom-printing-wrapper-tag
|
||||
:instance-custom-printing-background
|
||||
(print-via-protocol value :instance-custom-printing-tag)])]
|
||||
[:instance-header-tag
|
||||
:instance-header-background
|
||||
fields-preview-markup
|
||||
custom-printing-markup
|
||||
type-markup]))
|
||||
|
||||
; ---------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <header> [value]
|
||||
(<cljs-land> (<preview> value)))
|
||||
|
||||
(defn <surrogate-header> [surrogate]
|
||||
(or (get-surrogate-header surrogate)
|
||||
(<preview> (get-surrogate-target surrogate))))
|
||||
|
||||
(defn <surrogate-target> [surrogate]
|
||||
(let [target (get-surrogate-target surrogate)]
|
||||
(if (seqable? target)
|
||||
(let [starting-index (get-surrogate-start-index surrogate)]
|
||||
(<details> target starting-index))
|
||||
(<standard-body-reference> target))))
|
||||
|
||||
(defn <surrogate-body> [surrogate]
|
||||
(if-let [body (get-surrogate-body surrogate)]
|
||||
(if (= :target body)
|
||||
(<surrogate-target> surrogate)
|
||||
body)))
|
||||
|
||||
; ---------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn <atomic> [value]
|
||||
(cond
|
||||
(should-render? :render-nils value nil?) (<nil>)
|
||||
(should-render? :render-bools value bool?) (<bool> value)
|
||||
(should-render? :render-strings value string?) (<string> value)
|
||||
(should-render? :render-numbers value number?) (<number> value)
|
||||
(should-render? :render-keywords value keyword?) (<keyword> value)
|
||||
(should-render? :render-symbols value symbol?) (<symbol> value)
|
||||
(should-render? :render-instances value should-render-instance?) (<instance> value)
|
||||
(should-render? :render-types value cljs-type?) (<standalone-type> value)
|
||||
(should-render? :render-functions value cljs-function?) (<function> value)))
|
||||
|
||||
; ---------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(def ^:dynamic *markup-db*)
|
||||
|
||||
; emit-markup-db macro will generate a map of all markup <functions> in this namespace:
|
||||
;
|
||||
; {:atomic <atomic>
|
||||
; :reference <reference>
|
||||
; :native-reference <native-reference>
|
||||
; ...}
|
||||
;
|
||||
; we generate it only on first call and cache it in *markup-db*
|
||||
; emitting markup db statically into def would prevent dead-code elimination
|
||||
;
|
||||
(defn get-markup-db []
|
||||
(if (nil? *markup-db*)
|
||||
(set! *markup-db* (emit-markup-db)))
|
||||
*markup-db*)
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {RegExp {}, Error {}}, :use-macros {emit-markup-db devtools.formatters.markup}, :excludes #{}, :name devtools.formatters.markup, :imports nil, :requires {devtools.formatters.helpers devtools.formatters.helpers, devtools.formatters.printing devtools.formatters.printing, devtools.formatters.state devtools.formatters.state, devtools.formatters.templating devtools.formatters.templating, munging devtools.munging, devtools.munging devtools.munging}, :cljs.spec/speced-vars [], :uses {expandable? devtools.formatters.helpers, should-render? devtools.formatters.helpers, set-managed-print-level devtools.formatters.state, bool? devtools.formatters.helpers, cljs-instance? devtools.formatters.helpers, get-surrogate-body devtools.formatters.templating, get-constructor devtools.formatters.helpers, managed-print-via-writer devtools.formatters.printing, pref devtools.formatters.helpers, wrap-arity devtools.formatters.helpers, cljs-function? devtools.formatters.helpers, get-more-marker devtools.formatters.helpers, fetch-fields-values devtools.formatters.helpers, managed-print-via-protocol devtools.formatters.printing, abbreviated? devtools.formatters.helpers, get-surrogate-header devtools.formatters.templating, reset-depth-limits devtools.formatters.state, get-surrogate-target devtools.formatters.templating, set-prevent-recursion devtools.formatters.state, get-surrogate-start-index devtools.formatters.templating, abbreviate-long-string devtools.formatters.helpers, cljs-type? devtools.formatters.helpers, should-render-instance? devtools.formatters.helpers}, :defs {<aligned-body> {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/markup.cljs", :line 117, :column 7, :end-line 117, :end-column 21, :arglists (quote ([markups-lists]))}, :name devtools.formatters.markup/<aligned-body>, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/markup.cljs", :end-column 21, :method-params ([markups-lists]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 117, :end-line 117, :max-fixed-arity 1, :fn-var true, :arglists (quote ([markups-lists]))}, <native-reference> {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/markup.cljs", :line 56, :column 7, :end-line 56, :end-column 25, :arglists (quote ([object]))}, :name devtools.formatters.markup/<native-reference>, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/markup.cljs", :end-column 25, :method-params ([object]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 56, :end-line 56, :max-fixed-arity 1, :fn-var true, :arglists (quote ([object]))}, <reference-surrogate> {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/markup.cljs", :line 50, :column 7, :end-line 50, :end-column 28, :arglists (quote ([& args])), :top-fn {:variadic true, :max-fixed-arity 0, :method-params [(args)], :arglists ([& args]), :arglists-meta (nil)}}, :name devtools.formatters.markup/<reference-surrogate>, :variadic true, :file "target/cljsbuild/public/js/out/devtools/formatters/markup.cljs", :end-column 28, :top-fn {:variadic true, :max-fixed-arity 0, :method-params [(args)], :arglists ([& args]), :arglists-meta (nil)}, :method-params [(args)], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 50, :end-line 50, :max-fixed-arity 0, :fn-var true, :arglists ([& args])}, <keyword> {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/markup.cljs", :line 75, :column 7, :end-line 75, :end-column 16, :arglists (quote ([keyword]))}, :name devtools.formatters.markup/<keyword>, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/markup.cljs", :end-column 16, :method-params ([keyword]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 75, :end-line 75, :max-fixed-arity 1, :fn-var true, :arglists (quote ([keyword]))}, print-via-writer {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/markup.cljs", :line 28, :column 7, :end-line 28, :end-column 23, :arglists (quote ([value tag & [max-level]])), :top-fn {:variadic true, :max-fixed-arity 2, :method-params [(value tag [max-level])], :arglists ([value tag & [max-level]]), :arglists-meta (nil)}}, :name devtools.formatters.markup/print-via-writer, :variadic true, :file "target/cljsbuild/public/js/out/devtools/formatters/markup.cljs", :end-column 23, :top-fn {:variadic true, :max-fixed-arity 2, :method-params [(value tag [max-level])], :arglists ([value tag & [max-level]]), :arglists-meta (nil)}, :method-params [(value tag [max-level])], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 28, :end-line 28, :max-fixed-arity 2, :fn-var true, :arglists ([value tag & [max-level]])}, <prLine truncated
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/formatters\/markup.js","sources":["markup.cljs?rel=1517021944244"],"lineCount":1136,"mappings":"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 truncated
|
||||
@@ -0,0 +1,145 @@
|
||||
(ns devtools.formatters.printing
|
||||
(:require-macros [devtools.oops :refer [safe-call]])
|
||||
(:require [devtools.prefs :refer [pref]]
|
||||
[devtools.format :refer [IDevtoolsFormat]]
|
||||
[devtools.protocols :refer [ITemplate IGroup ISurrogate IFormat]]
|
||||
[devtools.formatters.state :refer [push-object-to-current-history! *current-state* get-current-state
|
||||
is-circular? get-managed-print-level set-managed-print-level
|
||||
update-current-state!]]
|
||||
[devtools.formatters.helpers :refer [cljs-value? expandable? abbreviated? directly-printable? should-render?]]))
|
||||
|
||||
; -- helpers ----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn markup? [value]
|
||||
(::markup (meta value)))
|
||||
|
||||
(defn mark-as-markup [value]
|
||||
(with-meta value {::markup true}))
|
||||
|
||||
(defn build-markup [markup-db fn-key & args]
|
||||
(let [f (get markup-db fn-key)]
|
||||
(assert f (str "missing markup method in markup-db: " fn-key))
|
||||
(mark-as-markup (apply f args))))
|
||||
|
||||
(defn wrap-value-as-reference-if-needed [markup-db value]
|
||||
(if (or (directly-printable? value) (markup? value))
|
||||
value
|
||||
(build-markup markup-db :reference-surrogate value)))
|
||||
|
||||
; -- TemplateWriter ---------------------------------------------------------------------------------------------------------
|
||||
|
||||
(deftype TemplateWriter [^:mutable group markup-db]
|
||||
Object
|
||||
(merge [_ a] (set! group (concat group a)))
|
||||
(get-group [_] group)
|
||||
IWriter
|
||||
(-write [_ o] (set! group (concat group [(wrap-value-as-reference-if-needed markup-db o)]))) ; issue #21
|
||||
(-flush [_] nil))
|
||||
|
||||
(defn make-template-writer [markup-db]
|
||||
(TemplateWriter. [] markup-db))
|
||||
|
||||
; -- post-processing --------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn already-reference? [group]
|
||||
(if-let [tag (first (first group))]
|
||||
(= tag "reference")))
|
||||
|
||||
(defn wrap-group-in-reference-if-needed [group obj markup-db]
|
||||
(if (and (not (already-reference? group))
|
||||
(or (expandable? obj) (abbreviated? group)))
|
||||
(let [expandable-markup (apply build-markup markup-db :expandable group)
|
||||
surrogate-markup (build-markup markup-db :raw-surrogate obj expandable-markup :target)
|
||||
reference-markup (build-markup markup-db :reference surrogate-markup)]
|
||||
[reference-markup])
|
||||
group))
|
||||
|
||||
(defn wrap-group-in-circular-warning-if-needed [group markup-db circular?]
|
||||
(if circular?
|
||||
[(apply build-markup markup-db :circular-reference group)]
|
||||
group))
|
||||
|
||||
(defn wrap-group-in-meta-if-needed [group value markup-db]
|
||||
(if (should-render? :render-metas value #(some? (meta %)))
|
||||
[(apply (partial (:meta-wrapper markup-db) (meta value)) group)]
|
||||
group))
|
||||
|
||||
; default printer implementation can do this:
|
||||
; :else (write-all writer "#<" (str obj) ">")
|
||||
; we want to wrap stringified obj in a reference for further inspection
|
||||
;
|
||||
; this behaviour changed in https://github.com/clojure/clojurescript/commit/34c3b8985ed8197d90f441c46d168c4024a20eb8
|
||||
; newly functions and :else branch print "#object [" ... "]"
|
||||
;
|
||||
; in some situations obj can still be a clojurescript value (e.g. deftypes)
|
||||
; we have to implement a special flag to prevent infinite recursion
|
||||
; see https://github.com/binaryage/cljs-devtools/issues/2
|
||||
; https://github.com/binaryage/cljs-devtools/issues/8
|
||||
(defn detect-edge-case-and-patch-it [group obj markup-db]
|
||||
(cond
|
||||
(or
|
||||
(and (= (count group) 5) (= (nth group 0) "#object[") (= (nth group 4) "\"]")) ; function case
|
||||
(and (= (count group) 5) (= (nth group 0) "#object[") (= (nth group 4) "]")) ; :else -constructor case
|
||||
(and (= (count group) 3) (= (nth group 0) "#object[") (= (nth group 2) "]"))) ; :else -cljs$lang$ctorStr case
|
||||
[(build-markup markup-db :native-reference obj)]
|
||||
|
||||
(and (= (count group) 3) (= (nth group 0) "#<") (= (str obj) (nth group 1)) (= (nth group 2) ">")) ; old code prior r1.7.28
|
||||
[(nth group 0) (build-markup :native-reference obj) (nth group 2)]
|
||||
|
||||
:else group))
|
||||
|
||||
(defn post-process-printed-output [output-group obj markup-db circular?]
|
||||
(-> output-group
|
||||
(detect-edge-case-and-patch-it obj markup-db) ; an ugly hack
|
||||
(wrap-group-in-reference-if-needed obj markup-db)
|
||||
(wrap-group-in-circular-warning-if-needed markup-db circular?)
|
||||
(wrap-group-in-meta-if-needed obj markup-db)))
|
||||
|
||||
; -- alternative printer ----------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn alt-printer-job [obj writer opts]
|
||||
(let [{:keys [markup-db]} opts]
|
||||
(if (or (safe-call satisfies? false IDevtoolsFormat obj)
|
||||
(safe-call satisfies? false IFormat obj)) ; we have to wrap value in reference if detected IFormat
|
||||
(-write writer (build-markup markup-db :reference obj))
|
||||
(if-let [atomic-markup (build-markup markup-db :atomic obj)]
|
||||
(-write writer atomic-markup)
|
||||
(let [default-impl (:fallback-impl opts)
|
||||
; we want to limit print-level, at max-print-level level use maximal abbreviation e.g. [...] or {...}
|
||||
inner-opts (if (= *print-level* 1) (assoc opts :print-length 0) opts)]
|
||||
(default-impl obj writer inner-opts))))))
|
||||
|
||||
(defn alt-printer-impl [obj writer opts]
|
||||
(binding [*current-state* (get-current-state)]
|
||||
(let [{:keys [markup-db]} opts
|
||||
circular? (is-circular? obj)
|
||||
inner-writer (make-template-writer (:markup-db opts))]
|
||||
(push-object-to-current-history! obj)
|
||||
(alt-printer-job obj inner-writer opts)
|
||||
(.merge writer (post-process-printed-output (.get-group inner-writer) obj markup-db circular?)))))
|
||||
|
||||
; -- common code for managed printing ---------------------------------------------------------------------------------------
|
||||
|
||||
(defn managed-print [tag markup-db printer]
|
||||
(let [writer (make-template-writer markup-db)
|
||||
opts {:alt-impl alt-printer-impl
|
||||
:markup-db markup-db
|
||||
:print-length (pref :max-header-elements)
|
||||
:more-marker (pref :more-marker)}
|
||||
job-fn #(printer writer opts)]
|
||||
(if-let [managed-print-level (get-managed-print-level)]
|
||||
(binding [*print-level* managed-print-level]
|
||||
(update-current-state! #(set-managed-print-level % nil)) ; reset managed-print-level so it does not propagate further down in expaded data
|
||||
(job-fn))
|
||||
(job-fn))
|
||||
(concat [(pref tag)] (.get-group writer))))
|
||||
|
||||
; -- public printing API ----------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn managed-print-via-writer [value tag markup-db]
|
||||
(managed-print tag markup-db (fn [writer opts]
|
||||
(pr-seq-writer [value] writer opts)))) ; note we use pr-seq-writer becasue pr-writer is private for some reason
|
||||
|
||||
(defn managed-print-via-protocol [value tag markup-db]
|
||||
(managed-print tag markup-db (fn [writer opts]
|
||||
(-pr-writer value writer opts))))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {Error {}}, :use-macros {safe-call devtools.oops}, :excludes #{}, :name devtools.formatters.printing, :imports nil, :requires {devtools.prefs devtools.prefs, devtools.format devtools.format, devtools.protocols devtools.protocols, devtools.formatters.state devtools.formatters.state, devtools.formatters.helpers devtools.formatters.helpers}, :cljs.spec/speced-vars [], :uses {IGroup devtools.protocols, expandable? devtools.formatters.helpers, ITemplate devtools.protocols, IDevtoolsFormat devtools.format, get-managed-print-level devtools.formatters.state, get-current-state devtools.formatters.state, ISurrogate devtools.protocols, should-render? devtools.formatters.helpers, set-managed-print-level devtools.formatters.state, directly-printable? devtools.formatters.helpers, pref devtools.prefs, push-object-to-current-history! devtools.formatters.state, update-current-state! devtools.formatters.state, abbreviated? devtools.formatters.helpers, IFormat devtools.protocols, *current-state* devtools.formatters.state, cljs-value? devtools.formatters.helpers, is-circular? devtools.formatters.state}, :defs {->TemplateWriter {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/printing.cljs", :line 31, :column 10, :end-line 31, :end-column 24, :protocols #{cljs.core/IWriter devtools.formatters.printing/Object}, :skip-protocol-flag #{cljs.core/IWriter}, :factory :positional, :arglists (quote ([group markup-db]))}, :protocols #{cljs.core/IWriter devtools.formatters.printing/Object}, :name devtools.formatters.printing/->TemplateWriter, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/printing.cljs", :end-column 24, :method-params ([group markup-db]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :factory :positional, :line 31, :end-line 31, :max-fixed-arity 2, :fn-var true, :arglists (quote ([group markup-db])), :skip-protocol-flag #{cljs.core/IWriter}}, alt-printer-impl {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/printing.cljs", :line 112, :column 7, :end-line 112, :end-column 23, :arglists (quote ([obj writer opts]))}, :name devtools.formatters.printing/alt-printer-impl, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/printing.cljs", :end-column 23, :method-params ([obj writer opts]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 112, :end-line 112, :max-fixed-arity 3, :fn-var true, :arglists (quote ([obj writer opts]))}, markup? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/printing.cljs", :line 13, :column 7, :end-line 13, :end-column 14, :arglists (quote ([value]))}, :name devtools.formatters.printing/markup?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/printing.cljs", :end-column 14, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 13, :end-line 13, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value]))}, wrap-group-in-meta-if-needed {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/printing.cljs", :line 62, :column 7, :end-line 62, :end-column 35, :arglists (quote ([group value markup-db]))}, :name devtools.formatters.printing/wrap-group-in-meta-if-needed, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/printing.cljs", :end-column 35, :method-params ([group value markup-db]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 62, :end-line 62, :max-fixed-arity 3, :fn-var true, :arglists (quote ([group value markup-db]))}, mark-as-markup {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/printing.cljs", :line 16, :column 7, :end-line 16, :end-column 21, :arglists (quote ([value]))}, :name devtools.formatters.printing/mark-as-markup, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/printing.cljs", :end-column 21, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 16, :end-line 16, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value]))}, detect-edge-case-and-patch-it {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/printing.cljs", :line 78, :column 7, :end-line 78, :end-column 36, :arglists (quote ([group obj markup-db]))}, :name devtools.formatters.printing/detect-edge-case-and-patch-it, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/printing.cljs", :end-column 36, :method-params ([group obj markup-db]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 78, :end-line 78, :max-fixed-arity 3, :fn-var true, :arglists (quote ([group obj markup-db]))}, wrap-groupLine truncated
|
||||
@@ -0,0 +1,292 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.formatters.printing');
|
||||
goog.require('cljs.core');
|
||||
goog.require('devtools.prefs');
|
||||
goog.require('devtools.format');
|
||||
goog.require('devtools.protocols');
|
||||
goog.require('devtools.formatters.state');
|
||||
goog.require('devtools.formatters.helpers');
|
||||
devtools.formatters.printing.markup_QMARK_ = (function devtools$formatters$printing$markup_QMARK_(value){
|
||||
return new cljs.core.Keyword("devtools.formatters.printing","markup","devtools.formatters.printing/markup",-1990109186).cljs$core$IFn$_invoke$arity$1(cljs.core.meta.call(null,value));
|
||||
});
|
||||
devtools.formatters.printing.mark_as_markup = (function devtools$formatters$printing$mark_as_markup(value){
|
||||
return cljs.core.with_meta.call(null,value,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("devtools.formatters.printing","markup","devtools.formatters.printing/markup",-1990109186),true], null));
|
||||
});
|
||||
devtools.formatters.printing.build_markup = (function devtools$formatters$printing$build_markup(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___39018 = arguments.length;
|
||||
var i__36778__auto___39019 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___39019 < len__36777__auto___39018)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___39019]));
|
||||
|
||||
var G__39020 = (i__36778__auto___39019 + (1));
|
||||
i__36778__auto___39019 = G__39020;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((2) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((2)),(0),null)):null);
|
||||
return devtools.formatters.printing.build_markup.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.formatters.printing.build_markup.cljs$core$IFn$_invoke$arity$variadic = (function (markup_db,fn_key,args){
|
||||
var f = cljs.core.get.call(null,markup_db,fn_key);
|
||||
if(cljs.core.truth_(f)){
|
||||
} else {
|
||||
throw (new Error(["Assert failed: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(["missing markup method in markup-db: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(fn_key)].join('')),"\n","f"].join('')));
|
||||
}
|
||||
|
||||
return devtools.formatters.printing.mark_as_markup.call(null,cljs.core.apply.call(null,f,args));
|
||||
});
|
||||
|
||||
devtools.formatters.printing.build_markup.cljs$lang$maxFixedArity = (2);
|
||||
|
||||
devtools.formatters.printing.build_markup.cljs$lang$applyTo = (function (seq39015){
|
||||
var G__39016 = cljs.core.first.call(null,seq39015);
|
||||
var seq39015__$1 = cljs.core.next.call(null,seq39015);
|
||||
var G__39017 = cljs.core.first.call(null,seq39015__$1);
|
||||
var seq39015__$2 = cljs.core.next.call(null,seq39015__$1);
|
||||
return devtools.formatters.printing.build_markup.cljs$core$IFn$_invoke$arity$variadic(G__39016,G__39017,seq39015__$2);
|
||||
});
|
||||
|
||||
devtools.formatters.printing.wrap_value_as_reference_if_needed = (function devtools$formatters$printing$wrap_value_as_reference_if_needed(markup_db,value){
|
||||
if(cljs.core.truth_((function (){var or__35498__auto__ = devtools.formatters.helpers.directly_printable_QMARK_.call(null,value);
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return devtools.formatters.printing.markup_QMARK_.call(null,value);
|
||||
}
|
||||
})())){
|
||||
return value;
|
||||
} else {
|
||||
return devtools.formatters.printing.build_markup.call(null,markup_db,new cljs.core.Keyword(null,"reference-surrogate","reference-surrogate",274031791),value);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @implements {cljs.core.IWriter}
|
||||
* @implements {devtools.formatters.printing.Object}
|
||||
*/
|
||||
devtools.formatters.printing.TemplateWriter = (function (group,markup_db){
|
||||
this.group = group;
|
||||
this.markup_db = markup_db;
|
||||
this.cljs$lang$protocol_mask$partition0$ = 1073741824;
|
||||
this.cljs$lang$protocol_mask$partition1$ = 0;
|
||||
});
|
||||
devtools.formatters.printing.TemplateWriter.prototype.merge = (function (a){
|
||||
var self__ = this;
|
||||
var _ = this;
|
||||
return self__.group = cljs.core.concat.call(null,self__.group,a);
|
||||
});
|
||||
|
||||
devtools.formatters.printing.TemplateWriter.prototype.get_group = (function (){
|
||||
var self__ = this;
|
||||
var _ = this;
|
||||
return self__.group;
|
||||
});
|
||||
|
||||
devtools.formatters.printing.TemplateWriter.prototype.cljs$core$IWriter$_write$arity$2 = (function (_,o){
|
||||
var self__ = this;
|
||||
var ___$1 = this;
|
||||
return self__.group = cljs.core.concat.call(null,self__.group,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [devtools.formatters.printing.wrap_value_as_reference_if_needed.call(null,self__.markup_db,o)], null));
|
||||
});
|
||||
|
||||
devtools.formatters.printing.TemplateWriter.prototype.cljs$core$IWriter$_flush$arity$1 = (function (_){
|
||||
var self__ = this;
|
||||
var ___$1 = this;
|
||||
return null;
|
||||
});
|
||||
|
||||
devtools.formatters.printing.TemplateWriter.getBasis = (function (){
|
||||
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"group","group",-2071839637,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),new cljs.core.Symbol(null,"markup-db","markup-db",-1841597035,null)], null);
|
||||
});
|
||||
|
||||
devtools.formatters.printing.TemplateWriter.cljs$lang$type = true;
|
||||
|
||||
devtools.formatters.printing.TemplateWriter.cljs$lang$ctorStr = "devtools.formatters.printing/TemplateWriter";
|
||||
|
||||
devtools.formatters.printing.TemplateWriter.cljs$lang$ctorPrWriter = (function (this__36169__auto__,writer__36170__auto__,opt__36171__auto__){
|
||||
return cljs.core._write.call(null,writer__36170__auto__,"devtools.formatters.printing/TemplateWriter");
|
||||
});
|
||||
|
||||
devtools.formatters.printing.__GT_TemplateWriter = (function devtools$formatters$printing$__GT_TemplateWriter(group,markup_db){
|
||||
return (new devtools.formatters.printing.TemplateWriter(group,markup_db));
|
||||
});
|
||||
|
||||
devtools.formatters.printing.make_template_writer = (function devtools$formatters$printing$make_template_writer(markup_db){
|
||||
return (new devtools.formatters.printing.TemplateWriter(cljs.core.PersistentVector.EMPTY,markup_db));
|
||||
});
|
||||
devtools.formatters.printing.already_reference_QMARK_ = (function devtools$formatters$printing$already_reference_QMARK_(group){
|
||||
var temp__5455__auto__ = cljs.core.first.call(null,cljs.core.first.call(null,group));
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var tag = temp__5455__auto__;
|
||||
return cljs.core._EQ_.call(null,tag,"reference");
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
devtools.formatters.printing.wrap_group_in_reference_if_needed = (function devtools$formatters$printing$wrap_group_in_reference_if_needed(group,obj,markup_db){
|
||||
if(cljs.core.truth_((function (){var and__35486__auto__ = cljs.core.not.call(null,devtools.formatters.printing.already_reference_QMARK_.call(null,group));
|
||||
if(and__35486__auto__){
|
||||
var or__35498__auto__ = devtools.formatters.helpers.expandable_QMARK_.call(null,obj);
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return devtools.formatters.helpers.abbreviated_QMARK_.call(null,group);
|
||||
}
|
||||
} else {
|
||||
return and__35486__auto__;
|
||||
}
|
||||
})())){
|
||||
var expandable_markup = cljs.core.apply.call(null,devtools.formatters.printing.build_markup,markup_db,new cljs.core.Keyword(null,"expandable","expandable",-704609097),group);
|
||||
var surrogate_markup = devtools.formatters.printing.build_markup.call(null,markup_db,new cljs.core.Keyword(null,"raw-surrogate","raw-surrogate",904931181),obj,expandable_markup,new cljs.core.Keyword(null,"target","target",253001721));
|
||||
var reference_markup = devtools.formatters.printing.build_markup.call(null,markup_db,new cljs.core.Keyword(null,"reference","reference",-1711695023),surrogate_markup);
|
||||
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [reference_markup], null);
|
||||
} else {
|
||||
return group;
|
||||
}
|
||||
});
|
||||
devtools.formatters.printing.wrap_group_in_circular_warning_if_needed = (function devtools$formatters$printing$wrap_group_in_circular_warning_if_needed(group,markup_db,circular_QMARK_){
|
||||
if(cljs.core.truth_(circular_QMARK_)){
|
||||
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.apply.call(null,devtools.formatters.printing.build_markup,markup_db,new cljs.core.Keyword(null,"circular-reference","circular-reference",970308727),group)], null);
|
||||
} else {
|
||||
return group;
|
||||
}
|
||||
});
|
||||
devtools.formatters.printing.wrap_group_in_meta_if_needed = (function devtools$formatters$printing$wrap_group_in_meta_if_needed(group,value,markup_db){
|
||||
if(cljs.core.truth_(devtools.formatters.helpers.should_render_QMARK_.call(null,new cljs.core.Keyword(null,"render-metas","render-metas",1141294116),value,(function (p1__39021_SHARP_){
|
||||
return !((cljs.core.meta.call(null,p1__39021_SHARP_) == null));
|
||||
})))){
|
||||
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.apply.call(null,cljs.core.partial.call(null,new cljs.core.Keyword(null,"meta-wrapper","meta-wrapper",-1989845587).cljs$core$IFn$_invoke$arity$1(markup_db),cljs.core.meta.call(null,value)),group)], null);
|
||||
} else {
|
||||
return group;
|
||||
}
|
||||
});
|
||||
devtools.formatters.printing.detect_edge_case_and_patch_it = (function devtools$formatters$printing$detect_edge_case_and_patch_it(group,obj,markup_db){
|
||||
if(((cljs.core._EQ_.call(null,cljs.core.count.call(null,group),(5))) && (cljs.core._EQ_.call(null,cljs.core.nth.call(null,group,(0)),"#object[")) && (cljs.core._EQ_.call(null,cljs.core.nth.call(null,group,(4)),"\"]"))) || ((cljs.core._EQ_.call(null,cljs.core.count.call(null,group),(5))) && (cljs.core._EQ_.call(null,cljs.core.nth.call(null,group,(0)),"#object[")) && (cljs.core._EQ_.call(null,cljs.core.nth.call(null,group,(4)),"]"))) || ((cljs.core._EQ_.call(null,cljs.core.count.call(null,group),(3))) && (cljs.core._EQ_.call(null,cljs.core.nth.call(null,group,(0)),"#object[")) && (cljs.core._EQ_.call(null,cljs.core.nth.call(null,group,(2)),"]")))){
|
||||
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [devtools.formatters.printing.build_markup.call(null,markup_db,new cljs.core.Keyword(null,"native-reference","native-reference",-2013708658),obj)], null);
|
||||
} else {
|
||||
if((cljs.core._EQ_.call(null,cljs.core.count.call(null,group),(3))) && (cljs.core._EQ_.call(null,cljs.core.nth.call(null,group,(0)),"#<")) && (cljs.core._EQ_.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(obj)].join(''),cljs.core.nth.call(null,group,(1)))) && (cljs.core._EQ_.call(null,cljs.core.nth.call(null,group,(2)),">"))){
|
||||
return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.nth.call(null,group,(0)),devtools.formatters.printing.build_markup.call(null,new cljs.core.Keyword(null,"native-reference","native-reference",-2013708658),obj),cljs.core.nth.call(null,group,(2))], null);
|
||||
} else {
|
||||
return group;
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
devtools.formatters.printing.post_process_printed_output = (function devtools$formatters$printing$post_process_printed_output(output_group,obj,markup_db,circular_QMARK_){
|
||||
return devtools.formatters.printing.wrap_group_in_meta_if_needed.call(null,devtools.formatters.printing.wrap_group_in_circular_warning_if_needed.call(null,devtools.formatters.printing.wrap_group_in_reference_if_needed.call(null,devtools.formatters.printing.detect_edge_case_and_patch_it.call(null,output_group,obj,markup_db),obj,markup_db),markup_db,circular_QMARK_),obj,markup_db);
|
||||
});
|
||||
devtools.formatters.printing.alt_printer_job = (function devtools$formatters$printing$alt_printer_job(obj,writer,opts){
|
||||
var map__39022 = opts;
|
||||
var map__39022__$1 = ((((!((map__39022 == null)))?((((map__39022.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__39022.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__39022):map__39022);
|
||||
var markup_db = cljs.core.get.call(null,map__39022__$1,new cljs.core.Keyword(null,"markup-db","markup-db",812838734));
|
||||
if(cljs.core.truth_((function (){var or__35498__auto__ = (function (){try{if(!((obj == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === obj.devtools$format$IDevtoolsFormat$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!obj.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.format.IDevtoolsFormat,obj);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.format.IDevtoolsFormat,obj);
|
||||
}
|
||||
}catch (e39026){var _e__38004__auto__ = e39026;
|
||||
return false;
|
||||
}})();
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
try{if(!((obj == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === obj.devtools$protocols$IFormat$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!obj.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.IFormat,obj);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.IFormat,obj);
|
||||
}
|
||||
}catch (e39028){var _e__38004__auto__ = e39028;
|
||||
return false;
|
||||
}}
|
||||
})())){
|
||||
return cljs.core._write.call(null,writer,devtools.formatters.printing.build_markup.call(null,markup_db,new cljs.core.Keyword(null,"reference","reference",-1711695023),obj));
|
||||
} else {
|
||||
var temp__5455__auto__ = devtools.formatters.printing.build_markup.call(null,markup_db,new cljs.core.Keyword(null,"atomic","atomic",-120459460),obj);
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var atomic_markup = temp__5455__auto__;
|
||||
return cljs.core._write.call(null,writer,atomic_markup);
|
||||
} else {
|
||||
var default_impl = new cljs.core.Keyword(null,"fallback-impl","fallback-impl",-1501286995).cljs$core$IFn$_invoke$arity$1(opts);
|
||||
var inner_opts = ((cljs.core._EQ_.call(null,cljs.core._STAR_print_level_STAR_,(1)))?cljs.core.assoc.call(null,opts,new cljs.core.Keyword(null,"print-length","print-length",1931866356),(0)):opts);
|
||||
return default_impl.call(null,obj,writer,inner_opts);
|
||||
}
|
||||
}
|
||||
});
|
||||
devtools.formatters.printing.alt_printer_impl = (function devtools$formatters$printing$alt_printer_impl(obj,writer,opts){
|
||||
var _STAR_current_state_STAR_39030 = devtools.formatters.state._STAR_current_state_STAR_;
|
||||
devtools.formatters.state._STAR_current_state_STAR_ = devtools.formatters.state.get_current_state.call(null);
|
||||
|
||||
try{var map__39031 = opts;
|
||||
var map__39031__$1 = ((((!((map__39031 == null)))?((((map__39031.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__39031.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__39031):map__39031);
|
||||
var markup_db = cljs.core.get.call(null,map__39031__$1,new cljs.core.Keyword(null,"markup-db","markup-db",812838734));
|
||||
var circular_QMARK_ = devtools.formatters.state.is_circular_QMARK_.call(null,obj);
|
||||
var inner_writer = devtools.formatters.printing.make_template_writer.call(null,new cljs.core.Keyword(null,"markup-db","markup-db",812838734).cljs$core$IFn$_invoke$arity$1(opts));
|
||||
devtools.formatters.state.push_object_to_current_history_BANG_.call(null,obj);
|
||||
|
||||
devtools.formatters.printing.alt_printer_job.call(null,obj,inner_writer,opts);
|
||||
|
||||
return writer.merge(devtools.formatters.printing.post_process_printed_output.call(null,inner_writer.get_group(),obj,markup_db,circular_QMARK_));
|
||||
}finally {devtools.formatters.state._STAR_current_state_STAR_ = _STAR_current_state_STAR_39030;
|
||||
}});
|
||||
devtools.formatters.printing.managed_print = (function devtools$formatters$printing$managed_print(tag,markup_db,printer){
|
||||
var writer = devtools.formatters.printing.make_template_writer.call(null,markup_db);
|
||||
var opts = new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"alt-impl","alt-impl",670969595),devtools.formatters.printing.alt_printer_impl,new cljs.core.Keyword(null,"markup-db","markup-db",812838734),markup_db,new cljs.core.Keyword(null,"print-length","print-length",1931866356),devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"max-header-elements","max-header-elements",713629864)),new cljs.core.Keyword(null,"more-marker","more-marker",-14717935),devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"more-marker","more-marker",-14717935))], null);
|
||||
var job_fn = ((function (writer,opts){
|
||||
return (function (){
|
||||
return printer.call(null,writer,opts);
|
||||
});})(writer,opts))
|
||||
;
|
||||
var temp__5455__auto___39035 = devtools.formatters.state.get_managed_print_level.call(null);
|
||||
if(cljs.core.truth_(temp__5455__auto___39035)){
|
||||
var managed_print_level_39036 = temp__5455__auto___39035;
|
||||
var _STAR_print_level_STAR_39034_39037 = cljs.core._STAR_print_level_STAR_;
|
||||
cljs.core._STAR_print_level_STAR_ = managed_print_level_39036;
|
||||
|
||||
try{devtools.formatters.state.update_current_state_BANG_.call(null,((function (_STAR_print_level_STAR_39034_39037,managed_print_level_39036,temp__5455__auto___39035,writer,opts,job_fn){
|
||||
return (function (p1__39033_SHARP_){
|
||||
return devtools.formatters.state.set_managed_print_level.call(null,p1__39033_SHARP_,null);
|
||||
});})(_STAR_print_level_STAR_39034_39037,managed_print_level_39036,temp__5455__auto___39035,writer,opts,job_fn))
|
||||
);
|
||||
|
||||
job_fn.call(null);
|
||||
}finally {cljs.core._STAR_print_level_STAR_ = _STAR_print_level_STAR_39034_39037;
|
||||
}} else {
|
||||
job_fn.call(null);
|
||||
}
|
||||
|
||||
return cljs.core.concat.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [devtools.prefs.pref.call(null,tag)], null),writer.get_group());
|
||||
});
|
||||
devtools.formatters.printing.managed_print_via_writer = (function devtools$formatters$printing$managed_print_via_writer(value,tag,markup_db){
|
||||
return devtools.formatters.printing.managed_print.call(null,tag,markup_db,(function (writer,opts){
|
||||
return cljs.core.pr_seq_writer.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [value], null),writer,opts);
|
||||
}));
|
||||
});
|
||||
devtools.formatters.printing.managed_print_via_protocol = (function devtools$formatters$printing$managed_print_via_protocol(value,tag,markup_db){
|
||||
return devtools.formatters.printing.managed_print.call(null,tag,markup_db,(function (writer,opts){
|
||||
return cljs.core._pr_writer.call(null,value,writer,opts);
|
||||
}));
|
||||
});
|
||||
|
||||
//# sourceMappingURL=printing.js.map?rel=1517021942427
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/formatters\/printing.js","sources":["printing.cljs?rel=1517021942429"],"lineCount":292,"mappings":"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 truncated
|
||||
@@ -0,0 +1,73 @@
|
||||
(ns devtools.formatters.state)
|
||||
|
||||
; - state management --------------------------------------------------------------------------------------------------------
|
||||
;
|
||||
; we have to maintain some state:
|
||||
; a) to prevent infinite recursion in some pathological cases (https://github.com/binaryage/cljs-devtools/issues/2)
|
||||
; b) to keep track of printed objects to visually signal circular data structures
|
||||
;
|
||||
; We dynamically bind *current-config* to the config passed from "outside" when entering calls to our API methods.
|
||||
; Initially the state is empty, but we accumulate there a history of seen values when rendering individual values
|
||||
; in depth-first traversal order. See alt-printer-impl where we re-bind *current-config* for each traversal level.
|
||||
; But there is a catch. For larger data structures our printing methods usually do not print everything at once.
|
||||
; We can include so called "object references" which are just placeholders which can be expanded later
|
||||
; by DevTools UI (when user clicks a disclosure triangle).
|
||||
; For proper continuation in rendering of those references we have to carry our existing state over.
|
||||
; We use "config" feature of custom formatters system to pass current state to future API calls.
|
||||
|
||||
(def ^:dynamic *current-state* nil)
|
||||
|
||||
(defn valid-current-state? []
|
||||
(some? *current-state*))
|
||||
|
||||
(defn get-default-state []
|
||||
{})
|
||||
|
||||
(defn get-current-state []
|
||||
{:pre [(valid-current-state?)]}
|
||||
*current-state*)
|
||||
|
||||
(defn update-current-state! [f & args]
|
||||
{:pre [(valid-current-state?)]}
|
||||
(set! *current-state* (apply f *current-state* args)))
|
||||
|
||||
; -- high level API ---------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn push-object-to-current-history! [object]
|
||||
(update-current-state! update :history conj object))
|
||||
|
||||
(defn get-current-history []
|
||||
(:history (get-current-state)))
|
||||
|
||||
(defn is-circular? [object]
|
||||
(let [history (get-current-history)]
|
||||
(some #(identical? % object) history)))
|
||||
|
||||
(defn ^bool prevent-recursion? []
|
||||
(boolean (:prevent-recursion (get-current-state))))
|
||||
|
||||
(defn set-prevent-recursion [state val]
|
||||
(if (some? val)
|
||||
(assoc state :prevent-recursion val)
|
||||
(dissoc state :prevent-recursion)))
|
||||
|
||||
(defn get-managed-print-level []
|
||||
(:managed-print-level (get-current-state)))
|
||||
|
||||
(defn set-managed-print-level [state val]
|
||||
(if (some? val)
|
||||
(assoc state :managed-print-level val)
|
||||
(dissoc state :managed-print-level)))
|
||||
|
||||
(defn get-depth-budget []
|
||||
(:depth-budget (get-current-state)))
|
||||
|
||||
(defn set-depth-budget [state val]
|
||||
(if (some? val)
|
||||
(assoc state :depth-budget val)
|
||||
(dissoc state :depth-budget)))
|
||||
|
||||
(defn reset-depth-limits [state]
|
||||
(-> state
|
||||
(set-depth-budget nil)
|
||||
(set-managed-print-level nil)))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {Error {}}, :use-macros {}, :excludes #{}, :name devtools.formatters.state, :imports nil, :requires nil, :cljs.spec/speced-vars [], :uses nil, :defs {prevent-recursion? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :line 46, :column 13, :end-line 46, :end-column 31, :tag bool, :arglists (quote ([]))}, :name devtools.formatters.state/prevent-recursion?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :end-column 31, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 46, :ret-tag bool, :end-line 46, :max-fixed-arity 0, :tag bool, :fn-var true, :arglists (quote ([]))}, get-managed-print-level {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :line 54, :column 7, :end-line 54, :end-column 30, :arglists (quote ([]))}, :name devtools.formatters.state/get-managed-print-level, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :end-column 30, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 54, :end-line 54, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, get-current-state {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :line 26, :column 7, :end-line 26, :end-column 24, :arglists (quote ([]))}, :name devtools.formatters.state/get-current-state, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :end-column 24, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 26, :end-line 26, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, get-current-history {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :line 39, :column 7, :end-line 39, :end-column 26, :arglists (quote ([]))}, :name devtools.formatters.state/get-current-history, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :end-column 26, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 39, :end-line 39, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, set-managed-print-level {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :line 57, :column 7, :end-line 57, :end-column 30, :arglists (quote ([state val]))}, :name devtools.formatters.state/set-managed-print-level, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :end-column 30, :method-params ([state val]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 57, :end-line 57, :max-fixed-arity 2, :fn-var true, :arglists (quote ([state val]))}, push-object-to-current-history! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :line 36, :column 7, :end-line 36, :end-column 38, :arglists (quote ([object]))}, :name devtools.formatters.state/push-object-to-current-history!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :end-column 38, :method-params ([object]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 36, :end-line 36, :max-fixed-arity 1, :fn-var true, :arglists (quote ([object]))}, update-current-state! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :line 30, :column 7, :end-line 30, :end-column 28, :arglists (quote ([f & args])), :top-fn {:variadic true, :max-fixed-arity 1, :method-params [(f args)], :arglists ([f & args]), :arglists-meta (nil)}}, :name devtools.formatters.state/update-current-state!, :variadic true, :file "target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :end-column 28, :top-fn {:variadic true, :max-fixed-arity 1, :method-params [(f args)], :arglists ([f & args]), :arglists-meta (nil)}, :method-params [(f args)], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 30, :end-line 30, :max-fixed-arity 1, :fn-var true, :arglists ([f & args])}, get-depth-budget {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :line 62, :column 7, :end-line 62, :end-column 23, :arglists (quote ([]))}, :name devtools.formatters.state/get-depth-budget, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/state.cljs", :end-column 23, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 62, :end-line 62, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, *current-state* {:name devtools.formatters.state/*current-state*, :fiLine truncated
|
||||
@@ -0,0 +1,104 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.formatters.state');
|
||||
goog.require('cljs.core');
|
||||
devtools.formatters.state._STAR_current_state_STAR_ = null;
|
||||
devtools.formatters.state.valid_current_state_QMARK_ = (function devtools$formatters$state$valid_current_state_QMARK_(){
|
||||
return !((devtools.formatters.state._STAR_current_state_STAR_ == null));
|
||||
});
|
||||
devtools.formatters.state.get_default_state = (function devtools$formatters$state$get_default_state(){
|
||||
return cljs.core.PersistentArrayMap.EMPTY;
|
||||
});
|
||||
devtools.formatters.state.get_current_state = (function devtools$formatters$state$get_current_state(){
|
||||
if(cljs.core.truth_(devtools.formatters.state.valid_current_state_QMARK_.call(null))){
|
||||
} else {
|
||||
throw (new Error("Assert failed: (valid-current-state?)"));
|
||||
}
|
||||
|
||||
return devtools.formatters.state._STAR_current_state_STAR_;
|
||||
});
|
||||
devtools.formatters.state.update_current_state_BANG_ = (function devtools$formatters$state$update_current_state_BANG_(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___39009 = arguments.length;
|
||||
var i__36778__auto___39010 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___39010 < len__36777__auto___39009)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___39010]));
|
||||
|
||||
var G__39011 = (i__36778__auto___39010 + (1));
|
||||
i__36778__auto___39010 = G__39011;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.formatters.state.update_current_state_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.formatters.state.update_current_state_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (f,args){
|
||||
if(cljs.core.truth_(devtools.formatters.state.valid_current_state_QMARK_.call(null))){
|
||||
} else {
|
||||
throw (new Error("Assert failed: (valid-current-state?)"));
|
||||
}
|
||||
|
||||
return devtools.formatters.state._STAR_current_state_STAR_ = cljs.core.apply.call(null,f,devtools.formatters.state._STAR_current_state_STAR_,args);
|
||||
});
|
||||
|
||||
devtools.formatters.state.update_current_state_BANG_.cljs$lang$maxFixedArity = (1);
|
||||
|
||||
devtools.formatters.state.update_current_state_BANG_.cljs$lang$applyTo = (function (seq39007){
|
||||
var G__39008 = cljs.core.first.call(null,seq39007);
|
||||
var seq39007__$1 = cljs.core.next.call(null,seq39007);
|
||||
return devtools.formatters.state.update_current_state_BANG_.cljs$core$IFn$_invoke$arity$variadic(G__39008,seq39007__$1);
|
||||
});
|
||||
|
||||
devtools.formatters.state.push_object_to_current_history_BANG_ = (function devtools$formatters$state$push_object_to_current_history_BANG_(object){
|
||||
return devtools.formatters.state.update_current_state_BANG_.call(null,cljs.core.update,new cljs.core.Keyword(null,"history","history",-247395220),cljs.core.conj,object);
|
||||
});
|
||||
devtools.formatters.state.get_current_history = (function devtools$formatters$state$get_current_history(){
|
||||
return new cljs.core.Keyword(null,"history","history",-247395220).cljs$core$IFn$_invoke$arity$1(devtools.formatters.state.get_current_state.call(null));
|
||||
});
|
||||
devtools.formatters.state.is_circular_QMARK_ = (function devtools$formatters$state$is_circular_QMARK_(object){
|
||||
var history = devtools.formatters.state.get_current_history.call(null);
|
||||
return cljs.core.some.call(null,((function (history){
|
||||
return (function (p1__39012_SHARP_){
|
||||
return (p1__39012_SHARP_ === object);
|
||||
});})(history))
|
||||
,history);
|
||||
});
|
||||
devtools.formatters.state.prevent_recursion_QMARK_ = (function devtools$formatters$state$prevent_recursion_QMARK_(){
|
||||
return cljs.core.boolean$.call(null,new cljs.core.Keyword(null,"prevent-recursion","prevent-recursion",-1498371606).cljs$core$IFn$_invoke$arity$1(devtools.formatters.state.get_current_state.call(null)));
|
||||
});
|
||||
devtools.formatters.state.set_prevent_recursion = (function devtools$formatters$state$set_prevent_recursion(state,val){
|
||||
if(!((val == null))){
|
||||
return cljs.core.assoc.call(null,state,new cljs.core.Keyword(null,"prevent-recursion","prevent-recursion",-1498371606),val);
|
||||
} else {
|
||||
return cljs.core.dissoc.call(null,state,new cljs.core.Keyword(null,"prevent-recursion","prevent-recursion",-1498371606));
|
||||
}
|
||||
});
|
||||
devtools.formatters.state.get_managed_print_level = (function devtools$formatters$state$get_managed_print_level(){
|
||||
return new cljs.core.Keyword(null,"managed-print-level","managed-print-level",-844058473).cljs$core$IFn$_invoke$arity$1(devtools.formatters.state.get_current_state.call(null));
|
||||
});
|
||||
devtools.formatters.state.set_managed_print_level = (function devtools$formatters$state$set_managed_print_level(state,val){
|
||||
if(!((val == null))){
|
||||
return cljs.core.assoc.call(null,state,new cljs.core.Keyword(null,"managed-print-level","managed-print-level",-844058473),val);
|
||||
} else {
|
||||
return cljs.core.dissoc.call(null,state,new cljs.core.Keyword(null,"managed-print-level","managed-print-level",-844058473));
|
||||
}
|
||||
});
|
||||
devtools.formatters.state.get_depth_budget = (function devtools$formatters$state$get_depth_budget(){
|
||||
return new cljs.core.Keyword(null,"depth-budget","depth-budget",-335905888).cljs$core$IFn$_invoke$arity$1(devtools.formatters.state.get_current_state.call(null));
|
||||
});
|
||||
devtools.formatters.state.set_depth_budget = (function devtools$formatters$state$set_depth_budget(state,val){
|
||||
if(!((val == null))){
|
||||
return cljs.core.assoc.call(null,state,new cljs.core.Keyword(null,"depth-budget","depth-budget",-335905888),val);
|
||||
} else {
|
||||
return cljs.core.dissoc.call(null,state,new cljs.core.Keyword(null,"depth-budget","depth-budget",-335905888));
|
||||
}
|
||||
});
|
||||
devtools.formatters.state.reset_depth_limits = (function devtools$formatters$state$reset_depth_limits(state){
|
||||
return devtools.formatters.state.set_managed_print_level.call(null,devtools.formatters.state.set_depth_budget.call(null,state,null),null);
|
||||
});
|
||||
|
||||
//# sourceMappingURL=state.js.map?rel=1517021942368
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/formatters\/state.js","sources":["state.cljs?rel=1517021942369"],"lineCount":104,"mappings":";AAAA;;AAiBA,sDAAA,tDAAeA;AAEf,uDAAA,vDAAMC;AAAN,AACE,SAAA,wDAAA,vDAAOD;;AAET,8CAAA,9CAAME;AAAN,AAAA;;AAGA,8CAAA,9CAAME;AAAN,AAAA,oBACS,AAACH;AADV;AAAA,AAAA,MAAA,KAAAE,MAAA;;;AAEEH;;AAEF,AAAA,uDAAA,+DAAAK,tHAAMM;AAAN,AAAA,IAAAL,sBAAA;AAAA,AAAA,IAAAC,2BAAA,AAAA;AAAA,AAAA,IAAAC,yBAAA;;AAAA,AAAA,GAAA,CAAAA,yBAAAD;AAAA,AAAA,AAAAD,yBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,yBAAA;;;;AAAA;;;;AAAA,IAAAC,wBAAA,EAAA,CAAA,MAAA,AAAAH,6BAAA,AAAA,KAAAI,qBAAA,AAAAJ,0BAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAAK,0FAAA,CAAA,UAAA,MAAAF;;;AAAA,AAAA,AAAA,AAAAE,4FAAA,WAA6BK,EAAIC;AAAjC,AAAA,oBACS,AAAChB;AADV;AAAA,AAAA,MAAA,KAAAE,MAAA;;;AAEE,OAAMH,sDAAgB,AAACkB,0BAAMF,EAAEhB,oDAAgBiB;;;AAFjD,AAAA,AAAAN,+EAAA;;AAAA,AAAA,AAAAA,yEAAA,WAAAC;AAAA,AAAA,IAAAC,WAAA,AAAAC,0BAAAF;IAAAA,eAAA,AAAAG,yBAAAH;AAAA,AAAA,OAAAD,0FAAAE,SAAAD;;;AAAA,AAMA,iEAAA,jEAAMO,0IAAiCC;AAAvC,AACE,uFAAA,hFAACT,+DAAsBU,4EAAgBC,eAAKF;;AAE9C,gDAAA,hDAAMG;AAAN,AACE,OAAA,yFAAU,AAACnB;;AAEb,+CAAA,\/CAAMoB,sGAAcJ;AAApB,AACE,IAAMK,UAAQ,AAACF;AAAf,AACE,gCAAA,zBAACI;kBAADD;AAAA,AAAO,QAAAA,qBAAcN;;CAAQK;;AAEjC,qDAAA,rDAAYG;AAAZ,AACE,OAACC,6BAAQ,AAAA,8GAAoB,AAACzB;;AAEhC,kDAAA,lDAAM0B,4GAAuBC,MAAMC;AAAnC,AACE,GAAI,EAAA,QAAA,PAAOA;AACT,uCAAA,hCAACC,0BAAMF,sFAAyBC;;AAChC,wCAAA,jCAACE,2BAAOH;;;AAEZ,oDAAA,pDAAMI;AAAN,AACE,OAAA,iHAAsB,AAAC\/B;;AAEzB,oDAAA,pDAAMgC,gHAAyBL,MAAMC;AAArC,AACE,GAAI,EAAA,QAAA,PAAOA;AACT,uCAAA,hCAACC,0BAAMF,yFAA2BC;;AAClC,wCAAA,jCAACE,2BAAOH;;;AAEZ,6CAAA,7CAAMM;AAAN,AACE,OAAA,mGAAe,AAACjC;;AAElB,6CAAA,7CAAMkC,kGAAkBP,MAAMC;AAA9B,AACE,GAAI,EAAA,QAAA,PAAOA;AACT,uCAAA,hCAACC,0BAAMF,2EAAoBC;;AAC3B,wCAAA,jCAACE,2BAAOH;;;AAEZ,+CAAA,\/CAAMQ,sGAAoBR;AAA1B,wHACMA,rDACA,2DAAA,3DAACO,nEACD,oIAAA,7HAACF","names":["devtools.formatters.state\/*current-state*","devtools.formatters.state\/valid-current-state?","devtools.formatters.state\/get-default-state","js\/Error","devtools.formatters.state\/get-current-state","var_args","args__36784__auto__","len__36777__auto__","i__36778__auto__","argseq__36785__auto__","cljs.core\/IndexedSeq","devtools.formatters.state\/update-current-state!","seq39007","G__39008","cljs.core\/first","cljs.core\/next","f","args","cljs.core\/apply","devtools.formatters.state\/push-object-to-current-history!","object","cljs.core\/update","cljs.core\/conj","devtools.formatters.state\/get-current-history","devtools.formatters.state\/is-circular?","history","p1__39012#","cljs.core\/some","devtools.formatters.state\/prevent-recursion?","cljs.core\/boolean","devtools.formatters.state\/set-prevent-recursion","state","val","cljs.core\/assoc","cljs.core\/dissoc","devtools.formatters.state\/get-managed-print-level","devtools.formatters.state\/set-managed-print-level","devtools.formatters.state\/get-depth-budget","devtools.formatters.state\/set-depth-budget","devtools.formatters.state\/reset-depth-limits"]}
|
||||
@@ -0,0 +1,209 @@
|
||||
(ns devtools.formatters.templating
|
||||
(:require-macros [devtools.oops :refer [oget oset ocall oapply safe-call unchecked-aget]])
|
||||
(:require [clojure.walk :refer [prewalk]]
|
||||
[devtools.util :refer [pprint-str]]
|
||||
[devtools.protocols :refer [ITemplate IGroup ISurrogate IFormat]]
|
||||
[devtools.formatters.helpers :refer [pref cljs-value?]]
|
||||
[devtools.formatters.state :refer [get-current-state prevent-recursion?]]
|
||||
[clojure.string :as string]))
|
||||
|
||||
; -- object marking support -------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn mark-as-group! [value]
|
||||
(specify! value IGroup)
|
||||
value)
|
||||
|
||||
(defn group? [value]
|
||||
(satisfies? IGroup value))
|
||||
|
||||
(defn mark-as-template! [value]
|
||||
(specify! value ITemplate)
|
||||
value)
|
||||
|
||||
(defn template? [value]
|
||||
(satisfies? ITemplate value))
|
||||
|
||||
(defn mark-as-surrogate! [value]
|
||||
(specify! value ISurrogate)
|
||||
value)
|
||||
|
||||
(defn surrogate? [value]
|
||||
(satisfies? ISurrogate value))
|
||||
|
||||
(defn reference? [value]
|
||||
(and (group? value)
|
||||
(= (unchecked-aget value 0) "object")))
|
||||
|
||||
; ---------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn make-group [& items]
|
||||
(let [group (mark-as-group! #js [])]
|
||||
(doseq [item items]
|
||||
(if (some? item)
|
||||
(if (coll? item)
|
||||
(.apply (unchecked-aget group "push") group (mark-as-group! (into-array item))) ; convenience helper to splat cljs collections
|
||||
(.push group (pref item)))))
|
||||
group))
|
||||
|
||||
(defn make-template
|
||||
[tag style & children]
|
||||
(let [tag (pref tag)
|
||||
style (pref style)
|
||||
template (mark-as-template! #js [tag (if (empty? style)
|
||||
#js {}
|
||||
#js {"style" style})])]
|
||||
(doseq [child children]
|
||||
(if (some? child)
|
||||
(if (coll? child)
|
||||
(.apply (unchecked-aget template "push") template (mark-as-template! (into-array (keep pref child)))) ; convenience helper to splat cljs collections
|
||||
(if-let [child-value (pref child)]
|
||||
(.push template child-value)))))
|
||||
template))
|
||||
|
||||
(defn concat-templates! [template & templates]
|
||||
(mark-as-template! (.apply (oget template "concat") template (into-array (map into-array (keep pref templates))))))
|
||||
|
||||
(defn extend-template! [template & args]
|
||||
(concat-templates! template args))
|
||||
|
||||
(defn make-surrogate
|
||||
; passing :target as body means that targt object body should be rendered using standard templates
|
||||
; see <surrogate-body> in markup.cljs
|
||||
([object] (make-surrogate object nil))
|
||||
([object header] (make-surrogate object header nil))
|
||||
([object header body] (make-surrogate object header body 0))
|
||||
([object header body start-index]
|
||||
(mark-as-surrogate! (js-obj
|
||||
"target" object
|
||||
"header" header
|
||||
"body" body
|
||||
"startIndex" (or start-index 0)))))
|
||||
|
||||
(defn get-surrogate-target [surrogate]
|
||||
{:pre [(surrogate? surrogate)]}
|
||||
(oget surrogate "target"))
|
||||
|
||||
(defn get-surrogate-header [surrogate]
|
||||
{:pre [(surrogate? surrogate)]}
|
||||
(oget surrogate "header"))
|
||||
|
||||
(defn get-surrogate-body [surrogate]
|
||||
{:pre [(surrogate? surrogate)]}
|
||||
(oget surrogate "body"))
|
||||
|
||||
(defn get-surrogate-start-index [surrogate]
|
||||
{:pre [(surrogate? surrogate)]}
|
||||
(oget surrogate "startIndex"))
|
||||
|
||||
(defn make-reference [object & [state-override-fn]]
|
||||
{:pre [(or (nil? state-override-fn) (fn? state-override-fn))]}
|
||||
(if (nil? object)
|
||||
; this code is duplicated in markup.cljs <nil>
|
||||
(make-template :span :nil-style :nil-label)
|
||||
(let [sub-state (if (some? state-override-fn)
|
||||
(state-override-fn (get-current-state))
|
||||
(get-current-state))]
|
||||
(make-group "object" #js {"object" object
|
||||
"config" sub-state}))))
|
||||
|
||||
; -- JSON ML support --------------------------------------------------------------------------------------------------------
|
||||
|
||||
; a renderer from hiccup-like data markup to json-ml
|
||||
;
|
||||
; [[tag style] child1 child2 ...] -> #js [tag #js {"style" ...} child1 child2 ...]
|
||||
;
|
||||
|
||||
(declare render-json-ml*)
|
||||
|
||||
(def ^:dynamic *current-render-stack* [])
|
||||
(def ^:dynamic *current-render-path* [])
|
||||
|
||||
(defn print-preview [markup]
|
||||
(binding [*print-level* 1]
|
||||
(pr-str markup)))
|
||||
|
||||
(defn add-stack-separators [stack]
|
||||
(interpose "-------------" stack))
|
||||
|
||||
(defn replace-fns-with-markers [stack]
|
||||
(let [f (fn [v]
|
||||
(if (fn? v)
|
||||
"##fn##"
|
||||
v))]
|
||||
(prewalk f stack)))
|
||||
|
||||
(defn pprint-render-calls [stack]
|
||||
(map pprint-str stack))
|
||||
|
||||
(defn pprint-render-stack [stack]
|
||||
(string/join "\n" (-> stack
|
||||
reverse
|
||||
replace-fns-with-markers
|
||||
pprint-render-calls
|
||||
add-stack-separators)))
|
||||
|
||||
(defn pprint-render-path [path]
|
||||
(pprint-str path))
|
||||
|
||||
(defn assert-markup-error [msg]
|
||||
(assert false (str msg "\n"
|
||||
"Render path: " (pprint-render-path *current-render-path*) "\n"
|
||||
"Render stack:\n"
|
||||
(pprint-render-stack *current-render-stack*))))
|
||||
|
||||
(defn surrogate-markup? [markup]
|
||||
(and (sequential? markup) (= (first markup) "surrogate")))
|
||||
|
||||
(defn render-special [name args]
|
||||
(case name
|
||||
"surrogate" (let [obj (first args)
|
||||
converted-args (map render-json-ml* (rest args))]
|
||||
(apply make-surrogate (concat [obj] converted-args)))
|
||||
"reference" (let [obj (first args)
|
||||
converted-obj (if (surrogate-markup? obj) (render-json-ml* obj) obj)]
|
||||
(apply make-reference (concat [converted-obj] (rest args))))
|
||||
(assert-markup-error (str "no matching special tag name: '" name "'"))))
|
||||
|
||||
(defn emptyish? [v]
|
||||
(if (or (seqable? v) (array? v) (string? v))
|
||||
(empty? v)
|
||||
false))
|
||||
|
||||
(defn render-subtree [tag children]
|
||||
(let [[html-tag style] tag]
|
||||
(apply make-template html-tag style (map render-json-ml* (remove emptyish? (map pref children))))))
|
||||
|
||||
(defn render-json-ml* [markup]
|
||||
(if-not (sequential? markup)
|
||||
markup
|
||||
(binding [*current-render-path* (conj *current-render-path* (first markup))]
|
||||
(let [tag (pref (first markup))]
|
||||
(cond
|
||||
(string? tag) (render-special tag (rest markup))
|
||||
(sequential? tag) (render-subtree tag (rest markup))
|
||||
:else (assert-markup-error (str "invalid json-ml markup at " (print-preview markup) ":")))))))
|
||||
|
||||
(defn render-json-ml [markup]
|
||||
(binding [*current-render-stack* (conj *current-render-stack* markup)
|
||||
*current-render-path* (conj *current-render-path* "<render-json-ml>")]
|
||||
(render-json-ml* markup)))
|
||||
|
||||
; -- template rendering -----------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn ^:dynamic assert-failed-markup-rendering [initial-value value]
|
||||
(assert false (str "result of markup rendering must be a template,\n"
|
||||
"resolved to " (pprint-str value)
|
||||
"initial value: " (pprint-str initial-value))))
|
||||
|
||||
(defn render-markup* [initial-value value]
|
||||
(cond
|
||||
(fn? value) (recur initial-value (value))
|
||||
(keyword? value) (recur initial-value (pref value))
|
||||
(sequential? value) (recur initial-value (render-json-ml value))
|
||||
(template? value) value
|
||||
(surrogate? value) value
|
||||
(reference? value) value
|
||||
:else (assert-failed-markup-rendering initial-value value)))
|
||||
|
||||
(defn render-markup [value]
|
||||
(render-markup* value value))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {Error {}}, :use-macros {safe-call devtools.oops, oset devtools.oops, oget devtools.oops, prewalk clojure.walk, unchecked-aget devtools.oops, ocall devtools.oops, oapply devtools.oops}, :excludes #{}, :name devtools.formatters.templating, :imports nil, :requires {clojure.walk clojure.walk, devtools.util devtools.util, devtools.protocols devtools.protocols, devtools.formatters.helpers devtools.formatters.helpers, devtools.formatters.state devtools.formatters.state, string clojure.string, clojure.string clojure.string}, :cljs.spec/speced-vars [], :uses {prevent-recursion? devtools.formatters.state, IGroup devtools.protocols, ITemplate devtools.protocols, get-current-state devtools.formatters.state, ISurrogate devtools.protocols, pref devtools.formatters.helpers, prewalk clojure.walk, IFormat devtools.protocols, pprint-str devtools.util, cljs-value? devtools.formatters.helpers}, :defs {make-template {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/templating.cljs", :line 48, :column 7, :end-line 48, :end-column 20, :arglists (quote ([tag style & children])), :top-fn {:variadic true, :max-fixed-arity 2, :method-params [(tag style children)], :arglists ([tag style & children]), :arglists-meta (nil)}}, :name devtools.formatters.templating/make-template, :variadic true, :file "target/cljsbuild/public/js/out/devtools/formatters/templating.cljs", :end-column 20, :top-fn {:variadic true, :max-fixed-arity 2, :method-params [(tag style children)], :arglists ([tag style & children]), :arglists-meta (nil)}, :method-params [(tag style children)], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 48, :end-line 48, :max-fixed-arity 2, :fn-var true, :arglists ([tag style & children])}, mark-as-surrogate! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/templating.cljs", :line 26, :column 7, :end-line 26, :end-column 25, :arglists (quote ([value]))}, :name devtools.formatters.templating/mark-as-surrogate!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/templating.cljs", :end-column 25, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 26, :end-line 26, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value]))}, concat-templates! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/templating.cljs", :line 63, :column 7, :end-line 63, :end-column 24, :arglists (quote ([template & templates])), :top-fn {:variadic true, :max-fixed-arity 1, :method-params [(template templates)], :arglists ([template & templates]), :arglists-meta (nil)}}, :name devtools.formatters.templating/concat-templates!, :variadic true, :file "target/cljsbuild/public/js/out/devtools/formatters/templating.cljs", :end-column 24, :top-fn {:variadic true, :max-fixed-arity 1, :method-params [(template templates)], :arglists ([template & templates]), :arglists-meta (nil)}, :method-params [(template templates)], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 63, :end-line 63, :max-fixed-arity 1, :fn-var true, :arglists ([template & templates])}, make-reference {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/templating.cljs", :line 98, :column 7, :end-line 98, :end-column 21, :arglists (quote ([object & [state-override-fn]])), :top-fn {:variadic true, :max-fixed-arity 1, :method-params [(object [state-override-fn])], :arglists ([object & [state-override-fn]]), :arglists-meta (nil)}}, :name devtools.formatters.templating/make-reference, :variadic true, :file "target/cljsbuild/public/js/out/devtools/formatters/templating.cljs", :end-column 21, :top-fn {:variadic true, :max-fixed-arity 1, :method-params [(object [state-override-fn])], :arglists ([object & [state-override-fn]]), :arglists-meta (nil)}, :method-params [(object [state-override-fn])], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 98, :end-line 98, :max-fixed-arity 1, :fn-var true, :arglists ([object & [state-override-fn]])}, make-surrogate {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/formatters/templating.cljs", :line 69, :column 7, :end-line 69, :end-column 21, :arglists (quote ([object] [object header] [object header body] [object header body start-index])), :top-fn {:variadic false, :max-fixed-arity 4, :method-params ([object] [object header] [object header body] [object header body start-index]), :arglists ([object] [object header] [object header body] [object header body start-index]), :arglists-meta (nil nil nil nil)}}, :name devtools.formatters.templating/make-surrogate, :variadic false, :file "target/cljsbuild/public/js/out/devtools/formatters/templating.cljs", :end-column 21, :top-fn {:variadic false, :max-fixed-ariLine truncated
|
||||
@@ -0,0 +1,642 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.formatters.templating');
|
||||
goog.require('cljs.core');
|
||||
goog.require('clojure.walk');
|
||||
goog.require('devtools.util');
|
||||
goog.require('devtools.protocols');
|
||||
goog.require('devtools.formatters.helpers');
|
||||
goog.require('devtools.formatters.state');
|
||||
goog.require('clojure.string');
|
||||
devtools.formatters.templating.mark_as_group_BANG_ = (function devtools$formatters$templating$mark_as_group_BANG_(value){
|
||||
var x40233_40234 = value;
|
||||
x40233_40234.devtools$protocols$IGroup$ = cljs.core.PROTOCOL_SENTINEL;
|
||||
|
||||
|
||||
return value;
|
||||
});
|
||||
devtools.formatters.templating.group_QMARK_ = (function devtools$formatters$templating$group_QMARK_(value){
|
||||
if(!((value == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === value.devtools$protocols$IGroup$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!value.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.IGroup,value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.IGroup,value);
|
||||
}
|
||||
});
|
||||
devtools.formatters.templating.mark_as_template_BANG_ = (function devtools$formatters$templating$mark_as_template_BANG_(value){
|
||||
var x40236_40237 = value;
|
||||
x40236_40237.devtools$protocols$ITemplate$ = cljs.core.PROTOCOL_SENTINEL;
|
||||
|
||||
|
||||
return value;
|
||||
});
|
||||
devtools.formatters.templating.template_QMARK_ = (function devtools$formatters$templating$template_QMARK_(value){
|
||||
if(!((value == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === value.devtools$protocols$ITemplate$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!value.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.ITemplate,value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.ITemplate,value);
|
||||
}
|
||||
});
|
||||
devtools.formatters.templating.mark_as_surrogate_BANG_ = (function devtools$formatters$templating$mark_as_surrogate_BANG_(value){
|
||||
var x40239_40240 = value;
|
||||
x40239_40240.devtools$protocols$ISurrogate$ = cljs.core.PROTOCOL_SENTINEL;
|
||||
|
||||
|
||||
return value;
|
||||
});
|
||||
devtools.formatters.templating.surrogate_QMARK_ = (function devtools$formatters$templating$surrogate_QMARK_(value){
|
||||
if(!((value == null))){
|
||||
if((false) || ((cljs.core.PROTOCOL_SENTINEL === value.devtools$protocols$ISurrogate$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!value.cljs$lang$protocol_mask$partition$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.ISurrogate,value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,devtools.protocols.ISurrogate,value);
|
||||
}
|
||||
});
|
||||
devtools.formatters.templating.reference_QMARK_ = (function devtools$formatters$templating$reference_QMARK_(value){
|
||||
var and__35486__auto__ = devtools.formatters.templating.group_QMARK_.call(null,value);
|
||||
if(cljs.core.truth_(and__35486__auto__)){
|
||||
return cljs.core._EQ_.call(null,(value[(0)]),"object");
|
||||
} else {
|
||||
return and__35486__auto__;
|
||||
}
|
||||
});
|
||||
devtools.formatters.templating.make_group = (function devtools$formatters$templating$make_group(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___40247 = arguments.length;
|
||||
var i__36778__auto___40248 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___40248 < len__36777__auto___40247)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___40248]));
|
||||
|
||||
var G__40249 = (i__36778__auto___40248 + (1));
|
||||
i__36778__auto___40248 = G__40249;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.formatters.templating.make_group.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_group.cljs$core$IFn$_invoke$arity$variadic = (function (items){
|
||||
var group = devtools.formatters.templating.mark_as_group_BANG_.call(null,[]);
|
||||
var seq__40243_40250 = cljs.core.seq.call(null,items);
|
||||
var chunk__40244_40251 = null;
|
||||
var count__40245_40252 = (0);
|
||||
var i__40246_40253 = (0);
|
||||
while(true){
|
||||
if((i__40246_40253 < count__40245_40252)){
|
||||
var item_40254 = cljs.core._nth.call(null,chunk__40244_40251,i__40246_40253);
|
||||
if(!((item_40254 == null))){
|
||||
if(cljs.core.coll_QMARK_.call(null,item_40254)){
|
||||
(group["push"]).apply(group,devtools.formatters.templating.mark_as_group_BANG_.call(null,cljs.core.into_array.call(null,item_40254)));
|
||||
} else {
|
||||
group.push(devtools.formatters.helpers.pref.call(null,item_40254));
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
var G__40255 = seq__40243_40250;
|
||||
var G__40256 = chunk__40244_40251;
|
||||
var G__40257 = count__40245_40252;
|
||||
var G__40258 = (i__40246_40253 + (1));
|
||||
seq__40243_40250 = G__40255;
|
||||
chunk__40244_40251 = G__40256;
|
||||
count__40245_40252 = G__40257;
|
||||
i__40246_40253 = G__40258;
|
||||
continue;
|
||||
} else {
|
||||
var temp__5457__auto___40259 = cljs.core.seq.call(null,seq__40243_40250);
|
||||
if(temp__5457__auto___40259){
|
||||
var seq__40243_40260__$1 = temp__5457__auto___40259;
|
||||
if(cljs.core.chunked_seq_QMARK_.call(null,seq__40243_40260__$1)){
|
||||
var c__36429__auto___40261 = cljs.core.chunk_first.call(null,seq__40243_40260__$1);
|
||||
var G__40262 = cljs.core.chunk_rest.call(null,seq__40243_40260__$1);
|
||||
var G__40263 = c__36429__auto___40261;
|
||||
var G__40264 = cljs.core.count.call(null,c__36429__auto___40261);
|
||||
var G__40265 = (0);
|
||||
seq__40243_40250 = G__40262;
|
||||
chunk__40244_40251 = G__40263;
|
||||
count__40245_40252 = G__40264;
|
||||
i__40246_40253 = G__40265;
|
||||
continue;
|
||||
} else {
|
||||
var item_40266 = cljs.core.first.call(null,seq__40243_40260__$1);
|
||||
if(!((item_40266 == null))){
|
||||
if(cljs.core.coll_QMARK_.call(null,item_40266)){
|
||||
(group["push"]).apply(group,devtools.formatters.templating.mark_as_group_BANG_.call(null,cljs.core.into_array.call(null,item_40266)));
|
||||
} else {
|
||||
group.push(devtools.formatters.helpers.pref.call(null,item_40266));
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
var G__40267 = cljs.core.next.call(null,seq__40243_40260__$1);
|
||||
var G__40268 = null;
|
||||
var G__40269 = (0);
|
||||
var G__40270 = (0);
|
||||
seq__40243_40250 = G__40267;
|
||||
chunk__40244_40251 = G__40268;
|
||||
count__40245_40252 = G__40269;
|
||||
i__40246_40253 = G__40270;
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return group;
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_group.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.formatters.templating.make_group.cljs$lang$applyTo = (function (seq40242){
|
||||
return devtools.formatters.templating.make_group.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq40242));
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_template = (function devtools$formatters$templating$make_template(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___40278 = arguments.length;
|
||||
var i__36778__auto___40279 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___40279 < len__36777__auto___40278)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___40279]));
|
||||
|
||||
var G__40280 = (i__36778__auto___40279 + (1));
|
||||
i__36778__auto___40279 = G__40280;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((2) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((2)),(0),null)):null);
|
||||
return devtools.formatters.templating.make_template.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_template.cljs$core$IFn$_invoke$arity$variadic = (function (tag,style,children){
|
||||
var tag__$1 = devtools.formatters.helpers.pref.call(null,tag);
|
||||
var style__$1 = devtools.formatters.helpers.pref.call(null,style);
|
||||
var template = devtools.formatters.templating.mark_as_template_BANG_.call(null,[tag__$1,((cljs.core.empty_QMARK_.call(null,style__$1))?({}):({"style": style__$1}))]);
|
||||
var seq__40274_40281 = cljs.core.seq.call(null,children);
|
||||
var chunk__40275_40282 = null;
|
||||
var count__40276_40283 = (0);
|
||||
var i__40277_40284 = (0);
|
||||
while(true){
|
||||
if((i__40277_40284 < count__40276_40283)){
|
||||
var child_40285 = cljs.core._nth.call(null,chunk__40275_40282,i__40277_40284);
|
||||
if(!((child_40285 == null))){
|
||||
if(cljs.core.coll_QMARK_.call(null,child_40285)){
|
||||
(template["push"]).apply(template,devtools.formatters.templating.mark_as_template_BANG_.call(null,cljs.core.into_array.call(null,cljs.core.keep.call(null,devtools.formatters.helpers.pref,child_40285))));
|
||||
} else {
|
||||
var temp__5455__auto___40286 = devtools.formatters.helpers.pref.call(null,child_40285);
|
||||
if(cljs.core.truth_(temp__5455__auto___40286)){
|
||||
var child_value_40287 = temp__5455__auto___40286;
|
||||
template.push(child_value_40287);
|
||||
} else {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
var G__40288 = seq__40274_40281;
|
||||
var G__40289 = chunk__40275_40282;
|
||||
var G__40290 = count__40276_40283;
|
||||
var G__40291 = (i__40277_40284 + (1));
|
||||
seq__40274_40281 = G__40288;
|
||||
chunk__40275_40282 = G__40289;
|
||||
count__40276_40283 = G__40290;
|
||||
i__40277_40284 = G__40291;
|
||||
continue;
|
||||
} else {
|
||||
var temp__5457__auto___40292 = cljs.core.seq.call(null,seq__40274_40281);
|
||||
if(temp__5457__auto___40292){
|
||||
var seq__40274_40293__$1 = temp__5457__auto___40292;
|
||||
if(cljs.core.chunked_seq_QMARK_.call(null,seq__40274_40293__$1)){
|
||||
var c__36429__auto___40294 = cljs.core.chunk_first.call(null,seq__40274_40293__$1);
|
||||
var G__40295 = cljs.core.chunk_rest.call(null,seq__40274_40293__$1);
|
||||
var G__40296 = c__36429__auto___40294;
|
||||
var G__40297 = cljs.core.count.call(null,c__36429__auto___40294);
|
||||
var G__40298 = (0);
|
||||
seq__40274_40281 = G__40295;
|
||||
chunk__40275_40282 = G__40296;
|
||||
count__40276_40283 = G__40297;
|
||||
i__40277_40284 = G__40298;
|
||||
continue;
|
||||
} else {
|
||||
var child_40299 = cljs.core.first.call(null,seq__40274_40293__$1);
|
||||
if(!((child_40299 == null))){
|
||||
if(cljs.core.coll_QMARK_.call(null,child_40299)){
|
||||
(template["push"]).apply(template,devtools.formatters.templating.mark_as_template_BANG_.call(null,cljs.core.into_array.call(null,cljs.core.keep.call(null,devtools.formatters.helpers.pref,child_40299))));
|
||||
} else {
|
||||
var temp__5455__auto___40300 = devtools.formatters.helpers.pref.call(null,child_40299);
|
||||
if(cljs.core.truth_(temp__5455__auto___40300)){
|
||||
var child_value_40301 = temp__5455__auto___40300;
|
||||
template.push(child_value_40301);
|
||||
} else {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
var G__40302 = cljs.core.next.call(null,seq__40274_40293__$1);
|
||||
var G__40303 = null;
|
||||
var G__40304 = (0);
|
||||
var G__40305 = (0);
|
||||
seq__40274_40281 = G__40302;
|
||||
chunk__40275_40282 = G__40303;
|
||||
count__40276_40283 = G__40304;
|
||||
i__40277_40284 = G__40305;
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return template;
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_template.cljs$lang$maxFixedArity = (2);
|
||||
|
||||
devtools.formatters.templating.make_template.cljs$lang$applyTo = (function (seq40271){
|
||||
var G__40272 = cljs.core.first.call(null,seq40271);
|
||||
var seq40271__$1 = cljs.core.next.call(null,seq40271);
|
||||
var G__40273 = cljs.core.first.call(null,seq40271__$1);
|
||||
var seq40271__$2 = cljs.core.next.call(null,seq40271__$1);
|
||||
return devtools.formatters.templating.make_template.cljs$core$IFn$_invoke$arity$variadic(G__40272,G__40273,seq40271__$2);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.concat_templates_BANG_ = (function devtools$formatters$templating$concat_templates_BANG_(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___40308 = arguments.length;
|
||||
var i__36778__auto___40309 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___40309 < len__36777__auto___40308)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___40309]));
|
||||
|
||||
var G__40310 = (i__36778__auto___40309 + (1));
|
||||
i__36778__auto___40309 = G__40310;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.formatters.templating.concat_templates_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.concat_templates_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (template,templates){
|
||||
return devtools.formatters.templating.mark_as_template_BANG_.call(null,(template["concat"]).apply(template,cljs.core.into_array.call(null,cljs.core.map.call(null,cljs.core.into_array,cljs.core.keep.call(null,devtools.formatters.helpers.pref,templates)))));
|
||||
});
|
||||
|
||||
devtools.formatters.templating.concat_templates_BANG_.cljs$lang$maxFixedArity = (1);
|
||||
|
||||
devtools.formatters.templating.concat_templates_BANG_.cljs$lang$applyTo = (function (seq40306){
|
||||
var G__40307 = cljs.core.first.call(null,seq40306);
|
||||
var seq40306__$1 = cljs.core.next.call(null,seq40306);
|
||||
return devtools.formatters.templating.concat_templates_BANG_.cljs$core$IFn$_invoke$arity$variadic(G__40307,seq40306__$1);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.extend_template_BANG_ = (function devtools$formatters$templating$extend_template_BANG_(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___40313 = arguments.length;
|
||||
var i__36778__auto___40314 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___40314 < len__36777__auto___40313)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___40314]));
|
||||
|
||||
var G__40315 = (i__36778__auto___40314 + (1));
|
||||
i__36778__auto___40314 = G__40315;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.formatters.templating.extend_template_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.extend_template_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (template,args){
|
||||
return devtools.formatters.templating.concat_templates_BANG_.call(null,template,args);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.extend_template_BANG_.cljs$lang$maxFixedArity = (1);
|
||||
|
||||
devtools.formatters.templating.extend_template_BANG_.cljs$lang$applyTo = (function (seq40311){
|
||||
var G__40312 = cljs.core.first.call(null,seq40311);
|
||||
var seq40311__$1 = cljs.core.next.call(null,seq40311);
|
||||
return devtools.formatters.templating.extend_template_BANG_.cljs$core$IFn$_invoke$arity$variadic(G__40312,seq40311__$1);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_surrogate = (function devtools$formatters$templating$make_surrogate(var_args){
|
||||
var G__40317 = arguments.length;
|
||||
switch (G__40317) {
|
||||
case 1:
|
||||
return devtools.formatters.templating.make_surrogate.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
||||
|
||||
break;
|
||||
case 2:
|
||||
return devtools.formatters.templating.make_surrogate.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
||||
|
||||
break;
|
||||
case 3:
|
||||
return devtools.formatters.templating.make_surrogate.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
|
||||
|
||||
break;
|
||||
case 4:
|
||||
return devtools.formatters.templating.make_surrogate.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
|
||||
|
||||
break;
|
||||
default:
|
||||
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_surrogate.cljs$core$IFn$_invoke$arity$1 = (function (object){
|
||||
return devtools.formatters.templating.make_surrogate.call(null,object,null);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_surrogate.cljs$core$IFn$_invoke$arity$2 = (function (object,header){
|
||||
return devtools.formatters.templating.make_surrogate.call(null,object,header,null);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_surrogate.cljs$core$IFn$_invoke$arity$3 = (function (object,header,body){
|
||||
return devtools.formatters.templating.make_surrogate.call(null,object,header,body,(0));
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_surrogate.cljs$core$IFn$_invoke$arity$4 = (function (object,header,body,start_index){
|
||||
return devtools.formatters.templating.mark_as_surrogate_BANG_.call(null,(function (){var obj40319 = {"target":object,"header":header,"body":body,"startIndex":(function (){var or__35498__auto__ = start_index;
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return (0);
|
||||
}
|
||||
})()};
|
||||
return obj40319;
|
||||
})());
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_surrogate.cljs$lang$maxFixedArity = 4;
|
||||
|
||||
devtools.formatters.templating.get_surrogate_target = (function devtools$formatters$templating$get_surrogate_target(surrogate){
|
||||
if(cljs.core.truth_(devtools.formatters.templating.surrogate_QMARK_.call(null,surrogate))){
|
||||
} else {
|
||||
throw (new Error("Assert failed: (surrogate? surrogate)"));
|
||||
}
|
||||
|
||||
return (surrogate["target"]);
|
||||
});
|
||||
devtools.formatters.templating.get_surrogate_header = (function devtools$formatters$templating$get_surrogate_header(surrogate){
|
||||
if(cljs.core.truth_(devtools.formatters.templating.surrogate_QMARK_.call(null,surrogate))){
|
||||
} else {
|
||||
throw (new Error("Assert failed: (surrogate? surrogate)"));
|
||||
}
|
||||
|
||||
return (surrogate["header"]);
|
||||
});
|
||||
devtools.formatters.templating.get_surrogate_body = (function devtools$formatters$templating$get_surrogate_body(surrogate){
|
||||
if(cljs.core.truth_(devtools.formatters.templating.surrogate_QMARK_.call(null,surrogate))){
|
||||
} else {
|
||||
throw (new Error("Assert failed: (surrogate? surrogate)"));
|
||||
}
|
||||
|
||||
return (surrogate["body"]);
|
||||
});
|
||||
devtools.formatters.templating.get_surrogate_start_index = (function devtools$formatters$templating$get_surrogate_start_index(surrogate){
|
||||
if(cljs.core.truth_(devtools.formatters.templating.surrogate_QMARK_.call(null,surrogate))){
|
||||
} else {
|
||||
throw (new Error("Assert failed: (surrogate? surrogate)"));
|
||||
}
|
||||
|
||||
return (surrogate["startIndex"]);
|
||||
});
|
||||
devtools.formatters.templating.make_reference = (function devtools$formatters$templating$make_reference(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___40327 = arguments.length;
|
||||
var i__36778__auto___40328 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___40328 < len__36777__auto___40327)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___40328]));
|
||||
|
||||
var G__40329 = (i__36778__auto___40328 + (1));
|
||||
i__36778__auto___40328 = G__40329;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.formatters.templating.make_reference.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_reference.cljs$core$IFn$_invoke$arity$variadic = (function (object,p__40323){
|
||||
var vec__40324 = p__40323;
|
||||
var state_override_fn = cljs.core.nth.call(null,vec__40324,(0),null);
|
||||
if(((state_override_fn == null)) || (cljs.core.fn_QMARK_.call(null,state_override_fn))){
|
||||
} else {
|
||||
throw (new Error("Assert failed: (or (nil? state-override-fn) (fn? state-override-fn))"));
|
||||
}
|
||||
|
||||
if((object == null)){
|
||||
return devtools.formatters.templating.make_template.call(null,new cljs.core.Keyword(null,"span","span",1394872991),new cljs.core.Keyword(null,"nil-style","nil-style",-1505044832),new cljs.core.Keyword(null,"nil-label","nil-label",-587789203));
|
||||
} else {
|
||||
var sub_state = ((!((state_override_fn == null)))?state_override_fn.call(null,devtools.formatters.state.get_current_state.call(null)):devtools.formatters.state.get_current_state.call(null));
|
||||
return devtools.formatters.templating.make_group.call(null,"object",({"object": object, "config": sub_state}));
|
||||
}
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_reference.cljs$lang$maxFixedArity = (1);
|
||||
|
||||
devtools.formatters.templating.make_reference.cljs$lang$applyTo = (function (seq40321){
|
||||
var G__40322 = cljs.core.first.call(null,seq40321);
|
||||
var seq40321__$1 = cljs.core.next.call(null,seq40321);
|
||||
return devtools.formatters.templating.make_reference.cljs$core$IFn$_invoke$arity$variadic(G__40322,seq40321__$1);
|
||||
});
|
||||
|
||||
devtools.formatters.templating._STAR_current_render_stack_STAR_ = cljs.core.PersistentVector.EMPTY;
|
||||
devtools.formatters.templating._STAR_current_render_path_STAR_ = cljs.core.PersistentVector.EMPTY;
|
||||
devtools.formatters.templating.print_preview = (function devtools$formatters$templating$print_preview(markup){
|
||||
var _STAR_print_level_STAR_40330 = cljs.core._STAR_print_level_STAR_;
|
||||
cljs.core._STAR_print_level_STAR_ = (1);
|
||||
|
||||
try{return cljs.core.pr_str.call(null,markup);
|
||||
}finally {cljs.core._STAR_print_level_STAR_ = _STAR_print_level_STAR_40330;
|
||||
}});
|
||||
devtools.formatters.templating.add_stack_separators = (function devtools$formatters$templating$add_stack_separators(stack){
|
||||
return cljs.core.interpose.call(null,"-------------",stack);
|
||||
});
|
||||
devtools.formatters.templating.replace_fns_with_markers = (function devtools$formatters$templating$replace_fns_with_markers(stack){
|
||||
var f = (function (v){
|
||||
if(cljs.core.fn_QMARK_.call(null,v)){
|
||||
return "##fn##";
|
||||
} else {
|
||||
return v;
|
||||
}
|
||||
});
|
||||
return clojure.walk.prewalk.call(null,f,stack);
|
||||
});
|
||||
devtools.formatters.templating.pprint_render_calls = (function devtools$formatters$templating$pprint_render_calls(stack){
|
||||
return cljs.core.map.call(null,devtools.util.pprint_str,stack);
|
||||
});
|
||||
devtools.formatters.templating.pprint_render_stack = (function devtools$formatters$templating$pprint_render_stack(stack){
|
||||
return clojure.string.join.call(null,"\n",devtools.formatters.templating.add_stack_separators.call(null,devtools.formatters.templating.pprint_render_calls.call(null,devtools.formatters.templating.replace_fns_with_markers.call(null,cljs.core.reverse.call(null,stack)))));
|
||||
});
|
||||
devtools.formatters.templating.pprint_render_path = (function devtools$formatters$templating$pprint_render_path(path){
|
||||
return devtools.util.pprint_str.call(null,path);
|
||||
});
|
||||
devtools.formatters.templating.assert_markup_error = (function devtools$formatters$templating$assert_markup_error(msg){
|
||||
throw (new Error(["Assert failed: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1([cljs.core.str.cljs$core$IFn$_invoke$arity$1(msg),"\n","Render path: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.formatters.templating.pprint_render_path.call(null,devtools.formatters.templating._STAR_current_render_path_STAR_)),"\n","Render stack:\n",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.formatters.templating.pprint_render_stack.call(null,devtools.formatters.templating._STAR_current_render_stack_STAR_))].join('')),"\n","false"].join('')));
|
||||
|
||||
});
|
||||
devtools.formatters.templating.surrogate_markup_QMARK_ = (function devtools$formatters$templating$surrogate_markup_QMARK_(markup){
|
||||
return (cljs.core.sequential_QMARK_.call(null,markup)) && (cljs.core._EQ_.call(null,cljs.core.first.call(null,markup),"surrogate"));
|
||||
});
|
||||
devtools.formatters.templating.render_special = (function devtools$formatters$templating$render_special(name,args){
|
||||
var G__40331 = name;
|
||||
switch (G__40331) {
|
||||
case "surrogate":
|
||||
var obj = cljs.core.first.call(null,args);
|
||||
var converted_args = cljs.core.map.call(null,devtools.formatters.templating.render_json_ml_STAR_,cljs.core.rest.call(null,args));
|
||||
return cljs.core.apply.call(null,devtools.formatters.templating.make_surrogate,cljs.core.concat.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [obj], null),converted_args));
|
||||
|
||||
break;
|
||||
case "reference":
|
||||
var obj = cljs.core.first.call(null,args);
|
||||
var converted_obj = (cljs.core.truth_(devtools.formatters.templating.surrogate_markup_QMARK_.call(null,obj))?devtools.formatters.templating.render_json_ml_STAR_.call(null,obj):obj);
|
||||
return cljs.core.apply.call(null,devtools.formatters.templating.make_reference,cljs.core.concat.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [converted_obj], null),cljs.core.rest.call(null,args)));
|
||||
|
||||
break;
|
||||
default:
|
||||
return devtools.formatters.templating.assert_markup_error.call(null,["no matching special tag name: '",cljs.core.str.cljs$core$IFn$_invoke$arity$1(name),"'"].join(''));
|
||||
|
||||
}
|
||||
});
|
||||
devtools.formatters.templating.emptyish_QMARK_ = (function devtools$formatters$templating$emptyish_QMARK_(v){
|
||||
if((cljs.core.seqable_QMARK_.call(null,v)) || (cljs.core.array_QMARK_.call(null,v)) || (typeof v === 'string')){
|
||||
return cljs.core.empty_QMARK_.call(null,v);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
devtools.formatters.templating.render_subtree = (function devtools$formatters$templating$render_subtree(tag,children){
|
||||
var vec__40333 = tag;
|
||||
var html_tag = cljs.core.nth.call(null,vec__40333,(0),null);
|
||||
var style = cljs.core.nth.call(null,vec__40333,(1),null);
|
||||
return cljs.core.apply.call(null,devtools.formatters.templating.make_template,html_tag,style,cljs.core.map.call(null,devtools.formatters.templating.render_json_ml_STAR_,cljs.core.remove.call(null,devtools.formatters.templating.emptyish_QMARK_,cljs.core.map.call(null,devtools.formatters.helpers.pref,children))));
|
||||
});
|
||||
devtools.formatters.templating.render_json_ml_STAR_ = (function devtools$formatters$templating$render_json_ml_STAR_(markup){
|
||||
if(!(cljs.core.sequential_QMARK_.call(null,markup))){
|
||||
return markup;
|
||||
} else {
|
||||
var _STAR_current_render_path_STAR_40336 = devtools.formatters.templating._STAR_current_render_path_STAR_;
|
||||
devtools.formatters.templating._STAR_current_render_path_STAR_ = cljs.core.conj.call(null,devtools.formatters.templating._STAR_current_render_path_STAR_,cljs.core.first.call(null,markup));
|
||||
|
||||
try{var tag = devtools.formatters.helpers.pref.call(null,cljs.core.first.call(null,markup));
|
||||
if(typeof tag === 'string'){
|
||||
return devtools.formatters.templating.render_special.call(null,tag,cljs.core.rest.call(null,markup));
|
||||
} else {
|
||||
if(cljs.core.sequential_QMARK_.call(null,tag)){
|
||||
return devtools.formatters.templating.render_subtree.call(null,tag,cljs.core.rest.call(null,markup));
|
||||
} else {
|
||||
return devtools.formatters.templating.assert_markup_error.call(null,["invalid json-ml markup at ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.formatters.templating.print_preview.call(null,markup)),":"].join(''));
|
||||
|
||||
}
|
||||
}
|
||||
}finally {devtools.formatters.templating._STAR_current_render_path_STAR_ = _STAR_current_render_path_STAR_40336;
|
||||
}}
|
||||
});
|
||||
devtools.formatters.templating.render_json_ml = (function devtools$formatters$templating$render_json_ml(markup){
|
||||
var _STAR_current_render_stack_STAR_40337 = devtools.formatters.templating._STAR_current_render_stack_STAR_;
|
||||
var _STAR_current_render_path_STAR_40338 = devtools.formatters.templating._STAR_current_render_path_STAR_;
|
||||
devtools.formatters.templating._STAR_current_render_stack_STAR_ = cljs.core.conj.call(null,devtools.formatters.templating._STAR_current_render_stack_STAR_,markup);
|
||||
|
||||
devtools.formatters.templating._STAR_current_render_path_STAR_ = cljs.core.conj.call(null,devtools.formatters.templating._STAR_current_render_path_STAR_,"<render-json-ml>");
|
||||
|
||||
try{return devtools.formatters.templating.render_json_ml_STAR_.call(null,markup);
|
||||
}finally {devtools.formatters.templating._STAR_current_render_path_STAR_ = _STAR_current_render_path_STAR_40338;
|
||||
|
||||
devtools.formatters.templating._STAR_current_render_stack_STAR_ = _STAR_current_render_stack_STAR_40337;
|
||||
}});
|
||||
devtools.formatters.templating.assert_failed_markup_rendering = (function devtools$formatters$templating$assert_failed_markup_rendering(initial_value,value){
|
||||
throw (new Error(["Assert failed: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(["result of markup rendering must be a template,\n","resolved to ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.pprint_str.call(null,value)),"initial value: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.pprint_str.call(null,initial_value))].join('')),"\n","false"].join('')));
|
||||
|
||||
});
|
||||
devtools.formatters.templating.render_markup_STAR_ = (function devtools$formatters$templating$render_markup_STAR_(initial_value,value){
|
||||
while(true){
|
||||
if(cljs.core.fn_QMARK_.call(null,value)){
|
||||
var G__40339 = initial_value;
|
||||
var G__40340 = value.call(null);
|
||||
initial_value = G__40339;
|
||||
value = G__40340;
|
||||
continue;
|
||||
} else {
|
||||
if((value instanceof cljs.core.Keyword)){
|
||||
var G__40341 = initial_value;
|
||||
var G__40342 = devtools.formatters.helpers.pref.call(null,value);
|
||||
initial_value = G__40341;
|
||||
value = G__40342;
|
||||
continue;
|
||||
} else {
|
||||
if(cljs.core.sequential_QMARK_.call(null,value)){
|
||||
var G__40343 = initial_value;
|
||||
var G__40344 = devtools.formatters.templating.render_json_ml.call(null,value);
|
||||
initial_value = G__40343;
|
||||
value = G__40344;
|
||||
continue;
|
||||
} else {
|
||||
if(cljs.core.truth_(devtools.formatters.templating.template_QMARK_.call(null,value))){
|
||||
return value;
|
||||
} else {
|
||||
if(cljs.core.truth_(devtools.formatters.templating.surrogate_QMARK_.call(null,value))){
|
||||
return value;
|
||||
} else {
|
||||
if(cljs.core.truth_(devtools.formatters.templating.reference_QMARK_.call(null,value))){
|
||||
return value;
|
||||
} else {
|
||||
return devtools.formatters.templating.assert_failed_markup_rendering.call(null,initial_value,value);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
devtools.formatters.templating.render_markup = (function devtools$formatters$templating$render_markup(value){
|
||||
return devtools.formatters.templating.render_markup_STAR_.call(null,value,value);
|
||||
});
|
||||
|
||||
//# sourceMappingURL=templating.js.map?rel=1517021944037
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/formatters\/templating.js","sources":["templating.cljs?rel=1517021944040"],"lineCount":642,"mappings":"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 truncated
|
||||
@@ -0,0 +1,155 @@
|
||||
(ns devtools.hints
|
||||
(:require-macros [devtools.compiler :refer [check-compiler-options!]]
|
||||
[devtools.oops :refer [unchecked-aget]])
|
||||
(:require [devtools.prefs :refer [pref]]
|
||||
[devtools.context :as context]
|
||||
[cljs.stacktrace :as stacktrace]))
|
||||
|
||||
; cljs.stacktrace does not play well in :advanced mode optimizations, see https://github.com/binaryage/cljs-devtools/issues/37
|
||||
(check-compiler-options!)
|
||||
|
||||
(defn ^:dynamic available? []
|
||||
true)
|
||||
|
||||
; Question: How much time have you lost staring at "Cannot read property 'call' of null" kind of errors?
|
||||
;
|
||||
; ---------------------------------------------------------------------------------------------------------------------------
|
||||
;
|
||||
; The idea is to try enhance error object's .stack and .message fields with additional info about
|
||||
; the call site causing null type error. With optimizations :none the name of the null call site can be seen.
|
||||
;
|
||||
; The enhancing handler function tries to:
|
||||
; 1) parse error's stack trace.
|
||||
; 2) look original javascript source file up (via sync AJAX fetch by default).
|
||||
; 3) locate reported line and column.
|
||||
; 4) presents problematic line with a column hint as addition to .stack or .message strings.
|
||||
|
||||
; Technically the trick here is to override TypeError.prototype.toString
|
||||
; and global window.onerror handler to enhance uncaught errors.
|
||||
;
|
||||
; With that we should handle two situations:
|
||||
; 1) either error gets printed (typically in user's catch via console), so patched toString() method gets called.
|
||||
; 2) or it is uncaught and our global error handler should take care of possible enhancement
|
||||
; before devtools present it to the user themselves.
|
||||
;
|
||||
; note: Tested under Chrome only
|
||||
|
||||
(def ^:dynamic *installed* false)
|
||||
(def ^:dynamic *original-global-error-handler* nil)
|
||||
(def ^:dynamic *original-type-error-prototype-to-string* nil)
|
||||
|
||||
(def processed-errors (volatile! nil))
|
||||
|
||||
; ---------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn set-processed-errors! [val]
|
||||
(vreset! processed-errors val))
|
||||
|
||||
(defn get-processed-errors! []
|
||||
(if-let [val @processed-errors]
|
||||
val
|
||||
(if (exists? js/WeakSet)
|
||||
(set-processed-errors! (js/WeakSet.)))))
|
||||
|
||||
; ---------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn empty-as-nil [str]
|
||||
(if (empty? str) nil str))
|
||||
|
||||
(defn ajax-reader [url]
|
||||
(let [xhr (js/XMLHttpRequest.)]
|
||||
(.open xhr "GET" url false)
|
||||
(.send xhr)
|
||||
(empty-as-nil (.-responseText xhr))))
|
||||
|
||||
(defn retrieve-javascript-source [where]
|
||||
(let [reader (or (pref :file-reader) ajax-reader)]
|
||||
(reader where)))
|
||||
|
||||
(defn get-line [lines line-number]
|
||||
(unchecked-aget lines (dec line-number))) ; line numbering is 1-based
|
||||
|
||||
(defn extend-content [content lines line-number min-length]
|
||||
(if (or (> (count content) min-length)
|
||||
(not (pos? line-number)))
|
||||
content
|
||||
(let [prev-line-number (dec line-number)
|
||||
prev-line (get-line lines prev-line-number)
|
||||
new-content (str prev-line "\n" content)]
|
||||
(extend-content new-content lines prev-line-number min-length))))
|
||||
|
||||
(defn mark-call-closed-at-column [line column]
|
||||
(let [n (dec column) ; column number is 1-based
|
||||
prefix (.substring line 0 n)
|
||||
postfix (.substring line n)]
|
||||
(str prefix " <<< ☢ NULL ☢ <<< " postfix)))
|
||||
|
||||
(defn mark-null-call-site-location [file line-number column]
|
||||
(let [content (retrieve-javascript-source file)
|
||||
lines (.split content "\n")
|
||||
line (get-line lines line-number)
|
||||
marked-line (mark-call-closed-at-column line column)
|
||||
min-length (or (pref :sanity-hint-min-length) 128)]
|
||||
(extend-content marked-line lines line-number min-length)))
|
||||
|
||||
(defn make-sense-of-the-error [message file line-number column]
|
||||
(cond
|
||||
(re-matches #"Cannot read property 'call' of.*" message) (mark-null-call-site-location file line-number column)
|
||||
:else nil))
|
||||
|
||||
(defn parse-stacktrace [native-stack-trace]
|
||||
(stacktrace/parse-stacktrace {} native-stack-trace {:ua-product :chrome} {:asset-root ""}))
|
||||
|
||||
(defn error-object-sense [error]
|
||||
(try
|
||||
(let [native-stack-trace (.-stack error)
|
||||
stack-trace (parse-stacktrace native-stack-trace)
|
||||
top-item (second stack-trace) ; first line is just an error message
|
||||
{:keys [file line column]} top-item]
|
||||
(make-sense-of-the-error (.-message error) file line column))
|
||||
(catch :default _e
|
||||
; silently fail in case of troubles parsing stack trace
|
||||
false)))
|
||||
|
||||
(defn type-error-to-string [self]
|
||||
(if-let [seen-errors (get-processed-errors!)]
|
||||
(when-not (.has seen-errors self)
|
||||
(.add seen-errors self)
|
||||
(when-let [sense (error-object-sense self)]
|
||||
(set! (.-message self) (str (.-message self) ", a sanity hint:\n" sense))))) ; this is dirty, patch message field before it gets used
|
||||
(.call *original-type-error-prototype-to-string* self))
|
||||
|
||||
(defn global-error-handler [message url line column error]
|
||||
(let [res (if *original-global-error-handler*
|
||||
(*original-global-error-handler* message url line column error))]
|
||||
(if-not res
|
||||
(when-let [sense (error-object-sense error)]
|
||||
(.info (context/get-console) "A sanity hint for incoming uncaught error:\n" sense)
|
||||
false)
|
||||
true)))
|
||||
|
||||
(defn install-type-error-enhancer []
|
||||
(set! *original-global-error-handler* (.-onerror (context/get-root)))
|
||||
(set! (.-onerror (context/get-root)) global-error-handler)
|
||||
(let [prototype (.-prototype js/TypeError)]
|
||||
(set! *original-type-error-prototype-to-string* (.-toString prototype))
|
||||
(set! (.-toString prototype) #(this-as self (type-error-to-string self))))) ; work around http://dev.clojure.org/jira/browse/CLJS-1545
|
||||
|
||||
; -- installation -----------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn installed? []
|
||||
*installed*)
|
||||
|
||||
(defn install! []
|
||||
(when-not *installed*
|
||||
(set! *installed* true)
|
||||
(install-type-error-enhancer)
|
||||
true))
|
||||
|
||||
(defn uninstall! []
|
||||
(when *installed*
|
||||
(set! *installed* false)
|
||||
(assert *original-type-error-prototype-to-string*)
|
||||
(set! (.-onerror (context/get-root)) *original-global-error-handler*)
|
||||
(let [prototype (.-prototype js/TypeError)]
|
||||
(set! (.-toString prototype) *original-type-error-prototype-to-string*))))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {WeakSet {}, XMLHttpRequest {prototype {open {}, send {}, responseText {}}}, TypeError {prototype {toString {}}}, Error {}}, :use-macros {check-compiler-options! devtools.compiler, unchecked-aget devtools.oops}, :excludes #{}, :name devtools.hints, :imports nil, :requires {devtools.prefs devtools.prefs, context devtools.context, devtools.context devtools.context, stacktrace cljs.stacktrace, cljs.stacktrace cljs.stacktrace}, :cljs.spec/speced-vars [], :uses {pref devtools.prefs}, :defs {mark-null-call-site-location {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/hints.cljs", :line 87, :column 7, :end-line 87, :end-column 35, :arglists (quote ([file line-number column]))}, :name devtools.hints/mark-null-call-site-location, :variadic false, :file "target/cljsbuild/public/js/out/devtools/hints.cljs", :end-column 35, :method-params ([file line-number column]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 87, :end-line 87, :max-fixed-arity 3, :fn-var true, :arglists (quote ([file line-number column]))}, mark-call-closed-at-column {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/hints.cljs", :line 81, :column 7, :end-line 81, :end-column 33, :arglists (quote ([line column]))}, :name devtools.hints/mark-call-closed-at-column, :variadic false, :file "target/cljsbuild/public/js/out/devtools/hints.cljs", :end-column 33, :method-params ([line column]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 81, :end-line 81, :max-fixed-arity 2, :fn-var true, :arglists (quote ([line column]))}, set-processed-errors! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/hints.cljs", :line 45, :column 7, :end-line 45, :end-column 28, :arglists (quote ([val]))}, :name devtools.hints/set-processed-errors!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/hints.cljs", :end-column 28, :method-params ([val]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 45, :end-line 45, :max-fixed-arity 1, :fn-var true, :arglists (quote ([val]))}, error-object-sense {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/hints.cljs", :line 103, :column 7, :end-line 103, :end-column 25, :arglists (quote ([error]))}, :name devtools.hints/error-object-sense, :variadic false, :file "target/cljsbuild/public/js/out/devtools/hints.cljs", :end-column 25, :method-params ([error]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 103, :end-line 103, :max-fixed-arity 1, :fn-var true, :arglists (quote ([error]))}, *original-global-error-handler* {:name devtools.hints/*original-global-error-handler*, :file "target/cljsbuild/public/js/out/devtools/hints.cljs", :line 38, :column 1, :end-line 38, :end-column 47, :dynamic true, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/hints.cljs", :line 38, :column 16, :end-line 38, :end-column 47, :dynamic true}, :tag clj-nil}, *installed* {:name devtools.hints/*installed*, :file "target/cljsbuild/public/js/out/devtools/hints.cljs", :line 37, :column 1, :end-line 37, :end-column 27, :dynamic true, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/hints.cljs", :line 37, :column 16, :end-line 37, :end-column 27, :dynamic true}, :tag boolean}, *original-type-error-prototype-to-string* {:name devtools.hints/*original-type-error-prototype-to-string*, :file "target/cljsbuild/public/js/out/devtools/hints.cljs", :line 39, :column 1, :end-line 39, :end-column 57, :dynamic true, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/hints.cljs", :line 39, :column 16, :end-line 39, :end-column 57, :dynamic true}, :tag clj-nil}, processed-errors {:name devtools.hints/processed-errors, :file "target/cljsbuild/public/js/out/devtools/hints.cljs", :line 41, :column 1, :end-line 41, :end-column 22, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/hints.cljs", :line 41, :column 6, :end-line 41, :end-column 22}, :tag any}, global-error-handler {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/hints.cljs", :line 122, :column 7, :end-line 122, :end-column 27, :arglists (quote ([message url line column error]))}, :name devtools.hints/global-error-handler, :variadic false, :file "target/cljsbuild/public/js/out/devtools/hints.cljs", :end-column 27, :method-params ([message url line column error]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 122, :end-line 122, :max-fixed-arity 5, :fn-var true, :arglists (quote ([message url line column error]))}, install! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/hints.cljs", :line 143, :cLine truncated
|
||||
@@ -0,0 +1,195 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.hints');
|
||||
goog.require('cljs.core');
|
||||
goog.require('devtools.prefs');
|
||||
goog.require('devtools.context');
|
||||
goog.require('cljs.stacktrace');
|
||||
devtools.hints.available_QMARK_ = (function devtools$hints$available_QMARK_(){
|
||||
return true;
|
||||
});
|
||||
devtools.hints._STAR_installed_STAR_ = false;
|
||||
devtools.hints._STAR_original_global_error_handler_STAR_ = null;
|
||||
devtools.hints._STAR_original_type_error_prototype_to_string_STAR_ = null;
|
||||
devtools.hints.processed_errors = cljs.core.volatile_BANG_.call(null,null);
|
||||
devtools.hints.set_processed_errors_BANG_ = (function devtools$hints$set_processed_errors_BANG_(val){
|
||||
return cljs.core.vreset_BANG_.call(null,devtools.hints.processed_errors,val);
|
||||
});
|
||||
devtools.hints.get_processed_errors_BANG_ = (function devtools$hints$get_processed_errors_BANG_(){
|
||||
var temp__5455__auto__ = cljs.core.deref.call(null,devtools.hints.processed_errors);
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var val = temp__5455__auto__;
|
||||
return val;
|
||||
} else {
|
||||
if(typeof WeakSet !== 'undefined'){
|
||||
return devtools.hints.set_processed_errors_BANG_.call(null,(new WeakSet()));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
});
|
||||
devtools.hints.empty_as_nil = (function devtools$hints$empty_as_nil(str){
|
||||
if(cljs.core.empty_QMARK_.call(null,str)){
|
||||
return null;
|
||||
} else {
|
||||
return str;
|
||||
}
|
||||
});
|
||||
devtools.hints.ajax_reader = (function devtools$hints$ajax_reader(url){
|
||||
var xhr = (new XMLHttpRequest());
|
||||
xhr.open("GET",url,false);
|
||||
|
||||
xhr.send();
|
||||
|
||||
return devtools.hints.empty_as_nil.call(null,xhr.responseText);
|
||||
});
|
||||
devtools.hints.retrieve_javascript_source = (function devtools$hints$retrieve_javascript_source(where){
|
||||
var reader = (function (){var or__35498__auto__ = devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"file-reader","file-reader",-450847664));
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return devtools.hints.ajax_reader;
|
||||
}
|
||||
})();
|
||||
return reader.call(null,where);
|
||||
});
|
||||
devtools.hints.get_line = (function devtools$hints$get_line(lines,line_number){
|
||||
return (lines[(line_number - (1))]);
|
||||
});
|
||||
devtools.hints.extend_content = (function devtools$hints$extend_content(content,lines,line_number,min_length){
|
||||
if(((cljs.core.count.call(null,content) > min_length)) || (!((line_number > (0))))){
|
||||
return content;
|
||||
} else {
|
||||
var prev_line_number = (line_number - (1));
|
||||
var prev_line = devtools.hints.get_line.call(null,lines,prev_line_number);
|
||||
var new_content = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(prev_line),"\n",cljs.core.str.cljs$core$IFn$_invoke$arity$1(content)].join('');
|
||||
return devtools.hints.extend_content.call(null,new_content,lines,prev_line_number,min_length);
|
||||
}
|
||||
});
|
||||
devtools.hints.mark_call_closed_at_column = (function devtools$hints$mark_call_closed_at_column(line,column){
|
||||
var n = (column - (1));
|
||||
var prefix = line.substring((0),n);
|
||||
var postfix = line.substring(n);
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(prefix)," <<< \u2622 NULL \u2622 <<< ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(postfix)].join('');
|
||||
});
|
||||
devtools.hints.mark_null_call_site_location = (function devtools$hints$mark_null_call_site_location(file,line_number,column){
|
||||
var content = devtools.hints.retrieve_javascript_source.call(null,file);
|
||||
var lines = content.split("\n");
|
||||
var line = devtools.hints.get_line.call(null,lines,line_number);
|
||||
var marked_line = devtools.hints.mark_call_closed_at_column.call(null,line,column);
|
||||
var min_length = (function (){var or__35498__auto__ = devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"sanity-hint-min-length","sanity-hint-min-length",104958154));
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return (128);
|
||||
}
|
||||
})();
|
||||
return devtools.hints.extend_content.call(null,marked_line,lines,line_number,min_length);
|
||||
});
|
||||
devtools.hints.make_sense_of_the_error = (function devtools$hints$make_sense_of_the_error(message,file,line_number,column){
|
||||
if(cljs.core.truth_(cljs.core.re_matches.call(null,/Cannot read property 'call' of.*/,message))){
|
||||
return devtools.hints.mark_null_call_site_location.call(null,file,line_number,column);
|
||||
} else {
|
||||
return null;
|
||||
|
||||
}
|
||||
});
|
||||
devtools.hints.parse_stacktrace = (function devtools$hints$parse_stacktrace(native_stack_trace){
|
||||
return cljs.stacktrace.parse_stacktrace.call(null,cljs.core.PersistentArrayMap.EMPTY,native_stack_trace,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"ua-product","ua-product",938384227),new cljs.core.Keyword(null,"chrome","chrome",1718738387)], null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"asset-root","asset-root",1771735072),""], null));
|
||||
});
|
||||
devtools.hints.error_object_sense = (function devtools$hints$error_object_sense(error){
|
||||
try{var native_stack_trace = error.stack;
|
||||
var stack_trace = devtools.hints.parse_stacktrace.call(null,native_stack_trace);
|
||||
var top_item = cljs.core.second.call(null,stack_trace);
|
||||
var map__40793 = top_item;
|
||||
var map__40793__$1 = ((((!((map__40793 == null)))?((((map__40793.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__40793.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__40793):map__40793);
|
||||
var file = cljs.core.get.call(null,map__40793__$1,new cljs.core.Keyword(null,"file","file",-1269645878));
|
||||
var line = cljs.core.get.call(null,map__40793__$1,new cljs.core.Keyword(null,"line","line",212345235));
|
||||
var column = cljs.core.get.call(null,map__40793__$1,new cljs.core.Keyword(null,"column","column",2078222095));
|
||||
return devtools.hints.make_sense_of_the_error.call(null,error.message,file,line,column);
|
||||
}catch (e40792){var _e = e40792;
|
||||
return false;
|
||||
}});
|
||||
devtools.hints.type_error_to_string = (function devtools$hints$type_error_to_string(self){
|
||||
var temp__5455__auto___40795 = devtools.hints.get_processed_errors_BANG_.call(null);
|
||||
if(cljs.core.truth_(temp__5455__auto___40795)){
|
||||
var seen_errors_40796 = temp__5455__auto___40795;
|
||||
if(cljs.core.truth_(seen_errors_40796.has(self))){
|
||||
} else {
|
||||
seen_errors_40796.add(self);
|
||||
|
||||
var temp__5457__auto___40797 = devtools.hints.error_object_sense.call(null,self);
|
||||
if(cljs.core.truth_(temp__5457__auto___40797)){
|
||||
var sense_40798 = temp__5457__auto___40797;
|
||||
self.message = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(self.message),", a sanity hint:\n",cljs.core.str.cljs$core$IFn$_invoke$arity$1(sense_40798)].join('');
|
||||
} else {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
return devtools.hints._STAR_original_type_error_prototype_to_string_STAR_.call(self);
|
||||
});
|
||||
devtools.hints.global_error_handler = (function devtools$hints$global_error_handler(message,url,line,column,error){
|
||||
var res = (cljs.core.truth_(devtools.hints._STAR_original_global_error_handler_STAR_)?devtools.hints._STAR_original_global_error_handler_STAR_.call(null,message,url,line,column,error):null);
|
||||
if(cljs.core.not.call(null,res)){
|
||||
var temp__5457__auto__ = devtools.hints.error_object_sense.call(null,error);
|
||||
if(cljs.core.truth_(temp__5457__auto__)){
|
||||
var sense = temp__5457__auto__;
|
||||
devtools.context.get_console.call(null).info("A sanity hint for incoming uncaught error:\n",sense);
|
||||
|
||||
return false;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
devtools.hints.install_type_error_enhancer = (function devtools$hints$install_type_error_enhancer(){
|
||||
devtools.hints._STAR_original_global_error_handler_STAR_ = devtools.context.get_root.call(null).onerror;
|
||||
|
||||
devtools.context.get_root.call(null).onerror = devtools.hints.global_error_handler;
|
||||
|
||||
var prototype = TypeError.prototype;
|
||||
devtools.hints._STAR_original_type_error_prototype_to_string_STAR_ = prototype.toString;
|
||||
|
||||
return prototype.toString = ((function (prototype){
|
||||
return (function (){
|
||||
var self = this;
|
||||
return devtools.hints.type_error_to_string.call(null,self);
|
||||
});})(prototype))
|
||||
;
|
||||
});
|
||||
devtools.hints.installed_QMARK_ = (function devtools$hints$installed_QMARK_(){
|
||||
return devtools.hints._STAR_installed_STAR_;
|
||||
});
|
||||
devtools.hints.install_BANG_ = (function devtools$hints$install_BANG_(){
|
||||
if(devtools.hints._STAR_installed_STAR_){
|
||||
return null;
|
||||
} else {
|
||||
devtools.hints._STAR_installed_STAR_ = true;
|
||||
|
||||
devtools.hints.install_type_error_enhancer.call(null);
|
||||
|
||||
return true;
|
||||
}
|
||||
});
|
||||
devtools.hints.uninstall_BANG_ = (function devtools$hints$uninstall_BANG_(){
|
||||
if(devtools.hints._STAR_installed_STAR_){
|
||||
devtools.hints._STAR_installed_STAR_ = false;
|
||||
|
||||
if(cljs.core.truth_(devtools.hints._STAR_original_type_error_prototype_to_string_STAR_)){
|
||||
} else {
|
||||
throw (new Error("Assert failed: *original-type-error-prototype-to-string*"));
|
||||
}
|
||||
|
||||
devtools.context.get_root.call(null).onerror = devtools.hints._STAR_original_global_error_handler_STAR_;
|
||||
|
||||
var prototype = TypeError.prototype;
|
||||
return prototype.toString = devtools.hints._STAR_original_type_error_prototype_to_string_STAR_;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
//# sourceMappingURL=hints.js.map?rel=1517021944607
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/hints.js","sources":["hints.cljs?rel=1517021944608"],"lineCount":195,"mappings":"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","names":["devtools.hints\/available?","devtools.hints\/*installed*","devtools.hints\/*original-global-error-handler*","devtools.hints\/*original-type-error-prototype-to-string*","devtools.hints\/processed-errors","cljs.core\/volatile!","devtools.hints\/set-processed-errors!","val","cljs.core\/vreset!","devtools.hints\/get-processed-errors!","temp__5455__auto__","cljs.core\/deref","js\/WeakSet","devtools.hints\/empty-as-nil","str","cljs.core\/empty?","devtools.hints\/ajax-reader","url","xhr","js\/XMLHttpRequest","devtools.hints\/retrieve-javascript-source","where","reader","or__35498__auto__","devtools.prefs\/pref","devtools.hints\/get-line","lines","line-number","devtools.hints\/extend-content","content","min-length","cljs.core\/count","prev-line-number","prev-line","new-content","devtools.hints\/mark-call-closed-at-column","line","column","n","prefix","postfix","devtools.hints\/mark-null-call-site-location","file","marked-line","devtools.hints\/make-sense-of-the-error","message","cljs.core\/re-matches","devtools.hints\/parse-stacktrace","native-stack-trace","cljs.stacktrace\/parse-stacktrace","devtools.hints\/error-object-sense","error","e40792","map__40793","cljs.core\/PROTOCOL_SENTINEL","cljs.core\/apply","cljs.core\/hash-map","cljs.core\/get","stack-trace","top-item","cljs.core\/second","_e","devtools.hints\/type-error-to-string","self","seen-errors","temp__5457__auto__","sense","devtools.hints\/global-error-handler","res","cljs.core\/not","devtools.context\/get-console","devtools.hints\/install-type-error-enhancer","devtools.context\/get-Line truncated
|
||||
@@ -0,0 +1,616 @@
|
||||
(ns devtools.munging
|
||||
"This namespace implements various heuristics to map Javascript names back to corresponding ClojureScript names.
|
||||
The functionality here heavily depends on observed ClojureScript compiler and runtime behaviour (fragile!).
|
||||
Answers given by functions in this namespace cannot be perfect because generated Javascript naming schemes produced by
|
||||
ClojureScript compiler were not designed with easy reversibility in mind. We recommend this functionality to be used for
|
||||
presentation in the UI only. The goal here is to provide user with more familiar view of runtime state of her app
|
||||
in most common cases (on best effort basis).
|
||||
|
||||
Our main weapons in this uneven fight are:
|
||||
1. munged function names as they appear in Javascript (generated by ClojureScript)
|
||||
2. we can also analyze function sources accessible via .toString
|
||||
3. special cljs$core$IFn$_invoke protocol props generated for multi-arity functions
|
||||
|
||||
We can also cheat and look at runtime state of browser environment to determine some answers about namespaces.
|
||||
|
||||
This code can be used only in non-advanced builds!
|
||||
|
||||
If you discovered breakage or a new case which should be covered by this code, please open an issue:
|
||||
https://github.com/binaryage/cljs-devtools/issues"
|
||||
(:refer-clojure :exclude [js-reserved?])
|
||||
(:require-macros [devtools.munging :refer [get-fast-path-protocol-partitions-count
|
||||
get-fast-path-protocols-lookup-table]]
|
||||
[devtools.oops :refer [oget ocall safe-call]])
|
||||
(:require [clojure.string :as string]
|
||||
[devtools.context :as context]
|
||||
[goog.object :as gobj])
|
||||
(:import [goog.string StringBuffer]))
|
||||
|
||||
(declare collect-fn-arities)
|
||||
|
||||
(def dollar-replacement "~﹩~")
|
||||
(def max-fixed-arity-to-scan 64)
|
||||
|
||||
; -- helpers ----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn ^:dynamic get-global-scope []
|
||||
(context/get-root))
|
||||
|
||||
(defn js-reserved? [x]
|
||||
; js-reserved? is private as of ClojureScript 1.9.293
|
||||
(if-let [js-reserved-fn (oget (get-global-scope) "cljs" "core" "js_reserved_QMARK_")]
|
||||
(js-reserved-fn x)))
|
||||
|
||||
(defn get-fn-source-safely [f]
|
||||
(try
|
||||
(if (js-in "toString" f)
|
||||
(ocall f "toString")
|
||||
"")
|
||||
(catch :default _
|
||||
"")))
|
||||
|
||||
(defn get-fn-fixed-arity [f n]
|
||||
(oget f (str "cljs$core$IFn$_invoke$arity$" n)))
|
||||
|
||||
(defn get-fn-variadic-arity [f]
|
||||
(oget f (str "cljs$core$IFn$_invoke$arity$variadic")))
|
||||
|
||||
(defn get-fn-max-fixed-arity [f]
|
||||
(oget f "cljs$lang$maxFixedArity"))
|
||||
|
||||
(defn get-type-name [t]
|
||||
(let [sb (StringBuffer.)
|
||||
writer (StringBufferWriter. sb)]
|
||||
(try
|
||||
; we cannot use (type->str f) because it does not work for defrecords as of v1.9.89
|
||||
; instead we rely on .cljs$lang$ctorPrWriter which is defined for both deftypes and defrecords
|
||||
; and it is used here: https://github.com/clojure/clojurescript/blob/cfbefad0b9f2ae9af92ebc2ec211c8472a884ddf/src/main/cljs/cljs/core.cljs#L9173
|
||||
; relevant JIRA ticket: http://dev.clojure.org/jira/browse/CLJS-1725
|
||||
(ocall t "cljs$lang$ctorPrWriter" t writer)
|
||||
(catch :default _
|
||||
"?"))
|
||||
(-flush writer)
|
||||
(str sb)))
|
||||
|
||||
(defn char-to-subscript
|
||||
"Given a character with a single digit converts it into a subscript character.
|
||||
Zero chracter maps to unicode 'SUBSCRIPT ZERO' (U+2080)."
|
||||
[char]
|
||||
{:pre [(string? char)
|
||||
(= (count char) 1)]}
|
||||
(let [char-code (ocall (js/String. char) "charCodeAt" 0) ; this is an ugly trick to overcome a V8? bug, char string might not be a real string "object"
|
||||
num-code (- char-code 48)
|
||||
subscript-code (+ 0x2080 num-code)]
|
||||
(ocall js/String "fromCharCode" subscript-code)))
|
||||
|
||||
(defn make-subscript
|
||||
"Given a subscript number converts it into a string representation consisting of unicode subscript characters (digits)."
|
||||
[subscript]
|
||||
{:pre [(number? subscript)]}
|
||||
(string/join (map char-to-subscript (str subscript))))
|
||||
|
||||
(defn char-to-superscript
|
||||
"Given a character with a single digit converts it into a superscript character.
|
||||
Zero chracter maps to unicode 'SUPERSCRIPT ZERO' (U+2070)."
|
||||
[char]
|
||||
{:pre [(string? char)
|
||||
(= (count char) 1)]}
|
||||
(let [char-code (ocall (js/String. char) "charCodeAt" 0) ; this is an ugly trick to overcome a V8? bug, char string might not be a real string "object"
|
||||
num-code (- char-code 48)
|
||||
superscript-code (case num-code ; see https://en.wikipedia.org/wiki/Unicode_subscripts_and_superscripts
|
||||
1 0x00B9
|
||||
2 0x00B2
|
||||
3 0x00B3
|
||||
(+ 0x2070 num-code))]
|
||||
(ocall js/String "fromCharCode" superscript-code)))
|
||||
|
||||
(defn make-superscript
|
||||
"Given a superscript number converts it into a string representation consisting of unicode superscript characters (digits)."
|
||||
[superscript]
|
||||
{:pre [(number? superscript)]}
|
||||
(string/join (map char-to-superscript (str superscript))))
|
||||
|
||||
; -- cljs naming conventions ------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn cljs-fn-name?
|
||||
"Given a Javascript name answers if the name was likely generated by ClojureScript.
|
||||
We use a simple heuristic here:
|
||||
The name must contain at least two separate dollars because we assume two-segment namespaces."
|
||||
[munged-name]
|
||||
(if (string? munged-name)
|
||||
(some? (re-matches #"^[^$]*\$[^$]+\$.*$" munged-name))))
|
||||
|
||||
(defn parse-fn-source
|
||||
"Given a function source code parses out [name args]. Note that both strings are still munged.
|
||||
Suitable for further processing.
|
||||
|
||||
For exampe for input below the function will return [\"devtools_sample$core$hello\" \"name, unused_param\"]:
|
||||
|
||||
function devtools_sample$core$hello(name, unused_param){
|
||||
return [cljs.core.str(\"hello, \"),cljs.core.str(name),cljs.core.str(\"!\")].join('');
|
||||
}
|
||||
"
|
||||
[fn-source]
|
||||
(if-let [meat (second (re-find #"function\s(.*?)\{" fn-source))]
|
||||
(if-let [match (re-find #"(.*?)\((.*)\)" meat)]
|
||||
(rest match))))
|
||||
|
||||
(defn trivial-fn-source? [fn-source]
|
||||
{:pre [(string? fn-source)]}
|
||||
(or (some? (re-matches #"function\s*\(\s*\)\s*\{\s*\}\s*" fn-source))
|
||||
(some? (re-matches #"function.*\(\)\s*\{\s*\[native code\]\s*\}\s*" fn-source))))
|
||||
|
||||
(defn cljs-fn?
|
||||
"Given a Javascript function object returns true if the function looks like a ClojureScript function.
|
||||
|
||||
Uses various heuristics:
|
||||
1. must be fn? (is javascript function or satisfies Fn and IFn protocols)
|
||||
2. and name must be cljs-fn-name? (name can come from f.name or parsed out of function source)
|
||||
3. or if anonymous function, must be non-trivial"
|
||||
[f]
|
||||
(if (safe-call fn? false f) ; calling fn? on window object could throw for some weird reason
|
||||
(let [name (oget f name)]
|
||||
(if-not (empty? name)
|
||||
(cljs-fn-name? name)
|
||||
(let [fn-source (get-fn-source-safely f)]
|
||||
(let [[name] (parse-fn-source fn-source)]
|
||||
(if-not (empty? name)
|
||||
(cljs-fn-name? name)
|
||||
(not (trivial-fn-source? fn-source))))))))) ; we assume non-trivial anonymous functions to come from cljs
|
||||
|
||||
; -- demunging --------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn dollar-preserving-demunge
|
||||
"Standard cljs.core/demunge is too agresive in replacing dollars.
|
||||
This wrapper function works around it by leaving dollars intact."
|
||||
[munged-name]
|
||||
(-> munged-name
|
||||
(string/replace "$" dollar-replacement)
|
||||
(demunge)
|
||||
(string/replace dollar-replacement "$")))
|
||||
|
||||
(defn revert-reserved [s]
|
||||
(or (if-let [m (re-matches #"(.*)\$" s)]
|
||||
(if (js-reserved? (second m))
|
||||
(second m)))
|
||||
s))
|
||||
|
||||
(defn reserved-aware-demunge [munged-name]
|
||||
(-> munged-name
|
||||
(dollar-preserving-demunge)
|
||||
(revert-reserved)))
|
||||
|
||||
(defn proper-demunge [munged-name]
|
||||
(reserved-aware-demunge munged-name))
|
||||
|
||||
(defn proper-arg-demunge [munged-arg-name]
|
||||
(-> munged-arg-name
|
||||
(proper-demunge)
|
||||
(string/replace #"^-(.*)$" "_$1"))) ; leading dash was probably a leading underscore (convention)
|
||||
|
||||
(defn proper-ns-demunge [munged-ns-name]
|
||||
(-> munged-ns-name
|
||||
(proper-demunge)
|
||||
(string/replace "$" ".")))
|
||||
|
||||
(defn ns-exists? [ns-module-name]
|
||||
{:pre [(string? ns-module-name)]}
|
||||
(if-let [goog-namespaces (oget (get-global-scope) "goog" "dependencies_" "nameToPath")]
|
||||
(some? (oget goog-namespaces ns-module-name))))
|
||||
|
||||
(defn detect-namespace-prefix
|
||||
"Given a name broken into namespace parts returns [detected-ns remaining-parts],
|
||||
where detected-ns is a string representing longest detected existing namespace and
|
||||
remaining-parts is a vector of remaing input parts not included in the detected-ns concatenation.
|
||||
|
||||
For given input [\"cljs\" \"core\" \"first\"] returns [\"cljs.core\" [\"first\"]] (asumming cljs.core exists)"
|
||||
[tokens & [ns-detector]]
|
||||
(let [effective-detector (or ns-detector ns-exists?)]
|
||||
(loop [name-tokens []
|
||||
remaining-tokens tokens]
|
||||
(if (empty? remaining-tokens)
|
||||
["" name-tokens]
|
||||
(let [ns-name (string/join "." remaining-tokens)]
|
||||
(if (effective-detector ns-name)
|
||||
[ns-name name-tokens]
|
||||
(recur (concat [(last remaining-tokens)] name-tokens) (butlast remaining-tokens))))))))
|
||||
|
||||
(defn normalize-arity [arity-tokens]
|
||||
(if-not (empty? arity-tokens)
|
||||
(let [arity (first arity-tokens)]
|
||||
(case arity
|
||||
"variadic" arity
|
||||
(js/parseInt arity 10)))))
|
||||
|
||||
(defn strip-arity [tokens]
|
||||
(let [[prefix-tokens arity-tokens] (split-with #(not= % "arity") tokens)]
|
||||
[prefix-tokens (normalize-arity (rest arity-tokens))]))
|
||||
|
||||
(defn parse-protocol [tokens detector]
|
||||
(loop [remaining-tokens tokens
|
||||
name-tokens []]
|
||||
(if (empty? remaining-tokens)
|
||||
[name-tokens]
|
||||
(let [[protocol-ns name-and-method-tokens] (detect-namespace-prefix remaining-tokens detector)]
|
||||
(if (empty? protocol-ns)
|
||||
(recur (rest remaining-tokens) (conj name-tokens (first remaining-tokens)))
|
||||
[name-tokens protocol-ns (first name-and-method-tokens) (rest name-and-method-tokens)]))))) ; we assume protocol names are always a single-token
|
||||
|
||||
(defn break-munged-name
|
||||
"Given a munged-name from Javascript lands attempts to break it into:
|
||||
[fn-ns fn-name protocol-ns protocol-name protocol-method arity].
|
||||
|
||||
Protocol and arity elements are optional. Function elements are always present or \"\".
|
||||
|
||||
examples for input:
|
||||
cljs$core$rest => ['cljs.core', 'rest']
|
||||
cljs.core.reduce$cljs$core$IFn$_invoke$arity$3 => ['cljs.core' 'reduce' 'cljs.core' 'IFn' '_invoke' 3]"
|
||||
([munged-name]
|
||||
(break-munged-name munged-name nil))
|
||||
([munged-name ns-detector]
|
||||
(if (empty? munged-name)
|
||||
["" ""]
|
||||
(let [effective-detector (or ns-detector ns-exists?)
|
||||
tokens (vec (.split munged-name #"[$.]"))
|
||||
[tokens arity] (strip-arity tokens)
|
||||
[fn-ns tokens] (detect-namespace-prefix tokens effective-detector)
|
||||
; remianing parts contains function name,
|
||||
; but may be optionally followed by protocol namespace, protocol name and protocol method
|
||||
[fn-name-tokens protocol-ns protocol-name protocol-method-tokens] (parse-protocol tokens effective-detector)
|
||||
fn-name (string/join "$" fn-name-tokens)
|
||||
protocol-method (if protocol-method-tokens (string/join "$" protocol-method-tokens))]
|
||||
[fn-ns fn-name protocol-ns protocol-name protocol-method arity]))))
|
||||
|
||||
(defn break-and-demunge-name
|
||||
"Given a munged-name from Javascript lands attempts to break it into a namespace part and remaining short name.
|
||||
Then applies appropriate demunging on them and returns ClojureScript versions of the names."
|
||||
([munged-name]
|
||||
(break-and-demunge-name munged-name nil))
|
||||
([munged-name ns-detector]
|
||||
(let [result (break-munged-name munged-name ns-detector)
|
||||
[munged-ns munged-name munged-protocol-ns munged-protocol-name munged-protocol-method arity] result]
|
||||
[(proper-ns-demunge munged-ns)
|
||||
(proper-demunge munged-name)
|
||||
(if munged-protocol-ns (proper-ns-demunge munged-protocol-ns))
|
||||
(if munged-protocol-name (proper-demunge munged-protocol-name))
|
||||
(if munged-protocol-method (proper-demunge munged-protocol-method))
|
||||
arity])))
|
||||
|
||||
; -- fn info ----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn parse-fn-source-info
|
||||
"Given function source code tries to retrieve [ns name & args] on best effort basis, where
|
||||
ns is demunged namespace part of the function name (or \"\" if namespace cannot be detected)
|
||||
name is demunged short name (or \"\" if function is anonymous or name cannot be retrieved)
|
||||
args is optional number of demunged argument names.
|
||||
|
||||
Please note that this function always returns a vector with something. In worst cases [\"\" \"\"].
|
||||
"
|
||||
[fn-source]
|
||||
(if-let [[munged-name args] (parse-fn-source fn-source)]
|
||||
(let [[ns name] (break-and-demunge-name munged-name)
|
||||
demunged-args (map (comp proper-arg-demunge string/trim) (string/split args #","))]
|
||||
(concat [ns name] demunged-args))
|
||||
["" ""]))
|
||||
|
||||
(defn parse-fn-info
|
||||
"Given Javascript function object tries to retrieve [ns name & args] as in parse-fn-source-info (on best effort basis)."
|
||||
[f]
|
||||
(let [fn-source (get-fn-source-safely f)]
|
||||
(parse-fn-source-info fn-source)))
|
||||
|
||||
(defn parse-fn-info-deep
|
||||
"Given a Javascript function object tries to retrieve [ns name & args] as in parse-fn-info (on best effort basis).
|
||||
|
||||
The difference from parse-fn-info is that this function prefers to read args from arities if available.
|
||||
It recurses arbitrary deep following IFn protocol leads.
|
||||
|
||||
If we hit multi-arity situation in leaf, we don't attempt to list arguments and return ::multi-arity placeholder instead.
|
||||
|
||||
The reason for reading arities is that it gives more accurate parameter names in some cases.
|
||||
We observed that variadic functions don't always contain original parameter names, but individual IFn arity functions do."
|
||||
[f]
|
||||
(let [fn-info (parse-fn-info f)
|
||||
arities (collect-fn-arities f)]
|
||||
(if (some? arities)
|
||||
(if (> (count arities) 1)
|
||||
(concat (take 2 fn-info) ::multi-arity)
|
||||
(concat (take 2 fn-info) (drop 2 (parse-fn-info-deep (second (first arities))))))
|
||||
fn-info)))
|
||||
|
||||
; -- support for human-readable names ---------------------------------------------------------------------------------------
|
||||
|
||||
(defn find-index-of-human-prefix
|
||||
"Given a demunged ClojureScript parameter name. Tries to detect human readable part and returns the index where it ends.
|
||||
Returns nil if no prefix can be detected.
|
||||
|
||||
The idea is to convert macro-generated parameters and other generated names to more friendly names.
|
||||
We observed that param names generated by gensym have prefix followed by big numbers.
|
||||
Other generated names contain two dashes after prefix (originally probably using underscores)."
|
||||
[name]
|
||||
(let [sep-start (.indexOf name "--")
|
||||
num-prefix (count (second (re-find #"(.*?)\d{2,}" name)))
|
||||
finds (filter pos? [sep-start num-prefix])]
|
||||
(if-not (empty? finds)
|
||||
(apply min finds))))
|
||||
|
||||
(defn humanize-name
|
||||
"Given a name and intermediate state. Convert name to a human readable version by keeping human readable prefix with
|
||||
optional subscribt postfix and store it in ::result. Subscript number is picked based on state. State keeps track of
|
||||
previously assigned subscripts. Returns a new state."
|
||||
[state name]
|
||||
(let [index (find-index-of-human-prefix name)
|
||||
prefix (if (> index 0) (.substring name 0 index) name)]
|
||||
(if-let [subscript (get state prefix)]
|
||||
(-> state
|
||||
(update ::result conj (str prefix (make-subscript subscript)))
|
||||
(update prefix inc))
|
||||
(-> state
|
||||
(update ::result conj prefix)
|
||||
(assoc prefix 2)))))
|
||||
|
||||
(defn humanize-names
|
||||
"Given a list of names, returns a list of human-readable versions of those names.
|
||||
It detects human-readable prefix using a simple heuristics. When names repeat it assigns simple subscripts starting with 2.
|
||||
Subscripts are assigned left-to-right.
|
||||
|
||||
Given [\"p--a\" \"p--b\" \"x\" \"p--c\"] returns [\"p\" \"p₂\" \"x\" \"p₃\"]"
|
||||
[names]
|
||||
(with-meta (::result (reduce humanize-name {::result []} names)) (meta names)))
|
||||
|
||||
; -- arities ----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn collect-fn-fixed-arities [f max-arity]
|
||||
(loop [arity 0
|
||||
collection {}]
|
||||
(if (> arity max-arity)
|
||||
collection
|
||||
(recur (inc arity) (if-let [arity-fn (get-fn-fixed-arity f arity)]
|
||||
(assoc collection arity arity-fn)
|
||||
collection)))))
|
||||
|
||||
(defn collect-fn-variadic-arities [f]
|
||||
(if-let [variadic-arity (get-fn-variadic-arity f)]
|
||||
{::variadic variadic-arity}))
|
||||
|
||||
(defn review-arity [[arity arity-fn]]
|
||||
(let [sub-arities (collect-fn-arities arity-fn)]
|
||||
(if (::variadic sub-arities)
|
||||
[::variadic arity-fn]
|
||||
[arity arity-fn])))
|
||||
|
||||
(defn review-arities
|
||||
"Some arities can be marked as fixed arity but in fact point to a variadic-arity function. We want to detect this case
|
||||
and turn such improperly categorized arities to ::variadic."
|
||||
[arities]
|
||||
(if (::variadic arities)
|
||||
arities
|
||||
(into {} (map review-arity arities))))
|
||||
|
||||
(defn collect-fn-arities
|
||||
"Given a Javascript function object, tries to inspect known arity properties generated by ClojureScript compiler and
|
||||
collects all available arity functions into a map. Arities are keyed by arity count and variadic arity gets ::variadic key."
|
||||
[f]
|
||||
(let [max-fixed-arity (get-fn-max-fixed-arity f)
|
||||
fixed-arities (collect-fn-fixed-arities f (or max-fixed-arity max-fixed-arity-to-scan)) ; we cannot rely on cljs$lang$maxFixedArity when people implement IFn protocol by hand
|
||||
variadic-arities (collect-fn-variadic-arities f)
|
||||
arities (review-arities (merge fixed-arities variadic-arities))]
|
||||
(if-not (empty? arities)
|
||||
arities)))
|
||||
|
||||
; -- args lists -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn arity-keywords-comparator
|
||||
"::variadic goes last, other keywords compare by name."
|
||||
[x y]
|
||||
(cond
|
||||
(= ::variadic x) 1
|
||||
(= ::variadic y) -1
|
||||
:else (compare (name x) (name y))))
|
||||
|
||||
(defn arities-key-comparator
|
||||
"numbers go first (ordered), then keywords (ordered by name), and then ::variadic sticks last"
|
||||
[x y]
|
||||
(let [kx? (keyword? x)
|
||||
ky? (keyword? y)]
|
||||
(cond
|
||||
(and kx? ky?) (arity-keywords-comparator x y)
|
||||
kx? 1
|
||||
ky? -1
|
||||
:else (compare x y))))
|
||||
|
||||
(defn arities-to-args-lists*
|
||||
[arities]
|
||||
(let [sorted-keys (sort arities-key-comparator (keys arities))
|
||||
sorted-fns (map #(get arities %) sorted-keys)
|
||||
sorted-infos (map parse-fn-info-deep sorted-fns)
|
||||
sorted-args-lists (map #(drop 2 %) sorted-infos)]
|
||||
(if (= (last sorted-keys) ::variadic)
|
||||
(concat (butlast sorted-args-lists) [(vary-meta (last sorted-args-lists) assoc ::variadic true)])
|
||||
sorted-args-lists)))
|
||||
|
||||
(defn arities-to-args-lists
|
||||
"Given a map of arity functions. Tries to parse individual functions and prepare an arguments list for each arity.
|
||||
Returned list of arguments list is sorted by arity count, variadic arity goes last if available.
|
||||
|
||||
The function also optionally humanizes argument names in each arguments list if requested."
|
||||
[arities & [humanize?]]
|
||||
(let [args-lists (arities-to-args-lists* arities)]
|
||||
(if humanize?
|
||||
(map humanize-names args-lists)
|
||||
args-lists)))
|
||||
|
||||
; -- UI presentation --------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn args-lists-to-strings
|
||||
"Converts a list of arguments lists into a list of strings suitable for UI presentation."
|
||||
[args-lists spacer-symbol multi-arity-symbol rest-symbol]
|
||||
(let [string-mapper (fn [arg]
|
||||
(case arg
|
||||
::multi-arity multi-arity-symbol
|
||||
arg))
|
||||
printer (fn [args-list]
|
||||
(let [variadic? (::variadic (meta args-list))
|
||||
args-strings (map string-mapper args-list)]
|
||||
(str (string/join spacer-symbol (butlast args-strings))
|
||||
(if variadic? rest-symbol spacer-symbol)
|
||||
(last args-strings))))]
|
||||
(->> args-lists
|
||||
(map printer)
|
||||
(map string/trim))))
|
||||
|
||||
(defn extract-arities [f humanize? spacer-symbol multi-arity-symbol rest-symbol]
|
||||
(-> (or (collect-fn-arities f) {:naked f})
|
||||
(arities-to-args-lists humanize?)
|
||||
(args-lists-to-strings spacer-symbol multi-arity-symbol rest-symbol)))
|
||||
|
||||
(defn common-protocol? [protocol-ns protocol-name]
|
||||
(and (= protocol-ns "cljs.core")
|
||||
(= protocol-name "IFn")))
|
||||
|
||||
(defn present-fn-part [fn-ns fn-name include-ns?]
|
||||
(str
|
||||
(if (and include-ns? (not (empty? fn-ns))) (str fn-ns "/"))
|
||||
fn-name))
|
||||
|
||||
(defn present-protocol-part [protocol-ns protocol-name protocol-method include-protocol-ns?]
|
||||
(str (if include-protocol-ns? protocol-ns)
|
||||
(if-not (empty? protocol-name) (str (if include-protocol-ns? ".") protocol-name))
|
||||
(if-not (empty? protocol-method) (str (if (or include-protocol-ns? (not (empty? protocol-name))) ":")
|
||||
protocol-method))))
|
||||
|
||||
(defn present-function-name
|
||||
"Given javascript function name tries to present it as plain string for display in UI on best effort basis."
|
||||
[munged-name options]
|
||||
(let [{:keys [include-ns? include-protocol-ns? silence-common-protocols? ns-detector]} options
|
||||
[fn-ns fn-name protocol-ns protocol-name protocol-method arity] (break-and-demunge-name munged-name ns-detector)
|
||||
arity-str (if (some? arity)
|
||||
(if (= arity "variadic")
|
||||
"\u207F" ; 'SUPERSCRIPT LATIN SMALL LETTER N' (U+207F)
|
||||
(make-superscript arity)))]
|
||||
(if (empty? fn-name)
|
||||
munged-name
|
||||
(let [fn-part (present-fn-part fn-ns fn-name include-ns?)
|
||||
protocol-part (if (and protocol-ns
|
||||
(not (and silence-common-protocols?
|
||||
(common-protocol? protocol-ns protocol-name))))
|
||||
(present-protocol-part protocol-ns protocol-name protocol-method include-protocol-ns?))]
|
||||
(str
|
||||
(or protocol-part fn-part)
|
||||
arity-str
|
||||
(if protocol-part (str " (" fn-part ")")))))))
|
||||
|
||||
; -- types ------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn get-basis [f]
|
||||
(ocall f "getBasis"))
|
||||
|
||||
(defn parse-constructor-info
|
||||
"Given a Javascript constructor function tries to retrieve [ns name basis]. Returns nil if not a cljs type."
|
||||
[f]
|
||||
(if (and (goog/isObject f) (.-cljs$lang$type f))
|
||||
(let [type-name (get-type-name f)
|
||||
parts (.split type-name #"/")
|
||||
basis (safe-call get-basis [] f)]
|
||||
(assert (<= (count parts) 2))
|
||||
(while (< (count parts) 2)
|
||||
(.unshift parts nil))
|
||||
(conj (vec parts) basis))))
|
||||
|
||||
; -- protocols --------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn protocol-path [protocol-selector]
|
||||
(string/split protocol-selector #"\."))
|
||||
|
||||
(defn get-protocol-object [protocol-selector]
|
||||
(loop [obj (get-global-scope)
|
||||
path (protocol-path protocol-selector)]
|
||||
(if (empty? path)
|
||||
obj
|
||||
(if (goog/isObject obj)
|
||||
(recur (oget obj (first path)) (rest path))))))
|
||||
|
||||
(defn protocol-exists? [protocol-selector]
|
||||
(some? (get-protocol-object protocol-selector)))
|
||||
|
||||
(defn get-protocol-selector [key]
|
||||
(if-let [m (re-matches #"(.*)\$$" key)]
|
||||
(if-not (string/includes? key "cljs$lang$protocol_mask$partition")
|
||||
(let [protocol-selector (string/replace (second m) "$" ".")]
|
||||
(if (protocol-exists? protocol-selector)
|
||||
protocol-selector)))))
|
||||
|
||||
(defn demunge-protocol-selector [protocol-selector]
|
||||
(let [parts (map proper-demunge (protocol-path protocol-selector))
|
||||
_ (assert (>= (count parts) 2)
|
||||
(str "expected protocol selector to contain at least one dot: '" protocol-selector "'"))
|
||||
ns (string/join "." (butlast parts))
|
||||
name (last parts)]
|
||||
[ns name protocol-selector]))
|
||||
|
||||
(def fast-path-protocols-lookup-table (delay (get-fast-path-protocols-lookup-table)))
|
||||
|
||||
(defn key-for-protocol-partition [partition]
|
||||
(str "cljs$lang$protocol_mask$partition" partition "$"))
|
||||
|
||||
(defn scan-fast-path-protocols-partition [obj partition]
|
||||
{:pre [(number? partition)]}
|
||||
(let [partition-key (key-for-protocol-partition partition)
|
||||
partition-bits (or (oget obj partition-key) 0)]
|
||||
(if (> partition-bits 0)
|
||||
(let [lookup-table (get @fast-path-protocols-lookup-table partition)
|
||||
_ (assert (map? lookup-table)
|
||||
(str "fast-path-protocols-lookup-table does not contain lookup table for partition " partition))
|
||||
* (fn [accum [bit protocol]]
|
||||
(if (zero? (bit-and partition-bits bit))
|
||||
accum
|
||||
(conj accum protocol)))]
|
||||
(reduce * [] lookup-table)))))
|
||||
|
||||
(defn scan-fast-path-protocols [obj]
|
||||
(apply concat (map (partial scan-fast-path-protocols-partition obj) (range (get-fast-path-protocol-partitions-count)))))
|
||||
|
||||
(defn scan-slow-path-protocols [obj]
|
||||
(let [keys (gobj/getKeys obj)
|
||||
selectors (keep get-protocol-selector keys)]
|
||||
(map demunge-protocol-selector selectors)))
|
||||
|
||||
(defn make-protocol-descriptor [ns name selector fast?]
|
||||
{:ns ns
|
||||
:name name
|
||||
:selector selector
|
||||
:fast? fast?})
|
||||
|
||||
(defn convert-to-protocol-descriptor [fast? [ns name selector]]
|
||||
(make-protocol-descriptor ns name selector fast?))
|
||||
|
||||
(defn protocol-descriptors-comparator [a b]
|
||||
(compare (:name a) (:name b)))
|
||||
|
||||
(defn scan-protocols [obj]
|
||||
(let [fast-path-protocols (map (partial convert-to-protocol-descriptor true) (scan-fast-path-protocols obj))
|
||||
slow-path-protocols (map (partial convert-to-protocol-descriptor false) (scan-slow-path-protocols obj))
|
||||
all-protocols (concat fast-path-protocols slow-path-protocols)]
|
||||
(sort protocol-descriptors-comparator all-protocols)))
|
||||
|
||||
(defn collect-protocol-methods [obj protocol-selector]
|
||||
(let [key-prefix (string/replace protocol-selector #"\." "\\$")
|
||||
pattern (re-pattern (str "^" key-prefix "\\$(.*)\\$arity\\$(\\d+)$"))
|
||||
all-keys (gobj/getKeys obj)
|
||||
matches (keep (partial re-matches pattern) all-keys)
|
||||
methods (group-by second matches)
|
||||
match-to-arity (fn [match]
|
||||
(let [arity (nth match 2)]
|
||||
(js/parseInt arity 10)))
|
||||
match-arity-comparator (fn [a b]
|
||||
(compare (match-to-arity a) (match-to-arity b)))
|
||||
post-process (fn [[munged-name matches]]
|
||||
(let [name (proper-demunge munged-name)
|
||||
sorted-matches (sort match-arity-comparator matches)
|
||||
sorted-fns (map #(oget obj (first %)) sorted-matches)]
|
||||
[name sorted-fns]))
|
||||
by-name-comparator (fn [a b]
|
||||
(compare (first a) (first b)))]
|
||||
; TODO: he we could be able to retrieve parameter lists from protocol definition methods
|
||||
; parameter names there are usually more consistent than parameters picked by protocol implementors
|
||||
(sort by-name-comparator (map post-process methods))))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {Error {}, String {}, parseInt {}}, :use-macros {safe-call devtools.oops, oget devtools.oops, get-fast-path-protocol-partitions-count devtools.munging, ocall devtools.oops, get-fast-path-protocols-lookup-table devtools.munging}, :excludes #{js-reserved?}, :name devtools.munging, :imports {StringBuffer goog.string.StringBuffer}, :requires {string clojure.string, clojure.string clojure.string, context devtools.context, devtools.context devtools.context, gobj goog.object, goog.object goog.object, StringBuffer goog.string.StringBuffer}, :cljs.spec/speced-vars [], :uses nil, :defs {args-lists-to-strings {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/munging.cljs", :line 445, :column 7, :end-line 445, :end-column 28, :arglists (quote ([args-lists spacer-symbol multi-arity-symbol rest-symbol])), :doc "Converts a list of arguments lists into a list of strings suitable for UI presentation."}, :name devtools.munging/args-lists-to-strings, :variadic false, :file "target/cljsbuild/public/js/out/devtools/munging.cljs", :end-column 28, :method-params ([args-lists spacer-symbol multi-arity-symbol rest-symbol]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 445, :end-line 445, :max-fixed-arity 4, :fn-var true, :arglists (quote ([args-lists spacer-symbol multi-arity-symbol rest-symbol])), :doc "Converts a list of arguments lists into a list of strings suitable for UI presentation."}, get-basis {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/munging.cljs", :line 505, :column 7, :end-line 505, :end-column 16, :arglists (quote ([f]))}, :name devtools.munging/get-basis, :variadic false, :file "target/cljsbuild/public/js/out/devtools/munging.cljs", :end-column 16, :method-params ([f]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 505, :end-line 505, :max-fixed-arity 1, :fn-var true, :arglists (quote ([f]))}, humanize-name {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/munging.cljs", :line 337, :column 7, :end-line 337, :end-column 20, :arglists (quote ([state name])), :doc "Given a name and intermediate state. Convert name to a human readable version by keeping human readable prefix with\n optional subscribt postfix and store it in ::result. Subscript number is picked based on state. State keeps track of\n previously assigned subscripts. Returns a new state."}, :name devtools.munging/humanize-name, :variadic false, :file "target/cljsbuild/public/js/out/devtools/munging.cljs", :end-column 20, :method-params ([state name]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 337, :end-line 337, :max-fixed-arity 2, :fn-var true, :arglists (quote ([state name])), :doc "Given a name and intermediate state. Convert name to a human readable version by keeping human readable prefix with\n optional subscribt postfix and store it in ::result. Subscript number is picked based on state. State keeps track of\n previously assigned subscripts. Returns a new state."}, find-index-of-human-prefix {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/munging.cljs", :line 323, :column 7, :end-line 323, :end-column 33, :arglists (quote ([name])), :doc "Given a demunged ClojureScript parameter name. Tries to detect human readable part and returns the index where it ends.\n Returns nil if no prefix can be detected.\n\n The idea is to convert macro-generated parameters and other generated names to more friendly names.\n We observed that param names generated by gensym have prefix followed by big numbers.\n Other generated names contain two dashes after prefix (originally probably using underscores)."}, :name devtools.munging/find-index-of-human-prefix, :variadic false, :file "target/cljsbuild/public/js/out/devtools/munging.cljs", :end-column 33, :method-params ([name]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 323, :end-line 323, :max-fixed-arity 1, :fn-var true, :arglists (quote ([name])), :doc "Given a demunged ClojureScript parameter name. Tries to detect human readable part and returns the index where it ends.\n Returns nil if no prefix can be detected.\n\n The idea is to convert macro-generated parameters and other generated names to more friendly names.\n We observed that param names generated by gensym have prefix followed by big numbers.\n Other generated names contain two dashes after prefix (originally probably using underscores)."}, protocol-descriptors-comparator {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/munging.cljs", :line 587, :column 7, :end-line 587, :end-column 38, :arglists (quote ([a b]))}, :name devtools.munging/protocol-descriptors-comparator, :variadic false, :file "target/cljsbuild/public/js/out/devtools/muLine truncated
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/munging.js","sources":["munging.cljs?rel=1517021942282"],"lineCount":1080,"mappings":"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\/EAAO,+BAAA,\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 truncated
|
||||
@@ -0,0 +1,34 @@
|
||||
(ns devtools.prefs
|
||||
(:require-macros [devtools.prefs :refer [emit-external-config emit-env-config]])
|
||||
(:require [devtools.defaults :as defaults]))
|
||||
|
||||
; we use delay for DCE, see https://github.com/binaryage/cljs-devtools/issues/37
|
||||
(def default-config (delay @defaults/config))
|
||||
(def external-config (delay (emit-external-config)))
|
||||
(def env-config (delay (emit-env-config)))
|
||||
(def initial-config (delay (merge @default-config @external-config @env-config)))
|
||||
|
||||
(def ^:dynamic *current-config* (delay @initial-config))
|
||||
|
||||
; -- public api -------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn set-prefs! [new-prefs]
|
||||
(set! *current-config* new-prefs))
|
||||
|
||||
(defn get-prefs []
|
||||
(when (delay? *current-config*)
|
||||
(set-prefs! @*current-config*))
|
||||
*current-config*)
|
||||
|
||||
(defn pref [key]
|
||||
(key (get-prefs)))
|
||||
|
||||
(defn set-pref! [key val]
|
||||
(set-prefs! (assoc (get-prefs) key val)))
|
||||
|
||||
(defn merge-prefs! [m]
|
||||
(set-prefs! (merge (get-prefs) m)))
|
||||
|
||||
(defn update-pref! [key f & args]
|
||||
(let [new-val (apply f (pref key) args)]
|
||||
(set-pref! key new-val)))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :use-macros {emit-env-config devtools.prefs, emit-external-config devtools.prefs}, :excludes #{}, :name devtools.prefs, :imports nil, :requires {defaults devtools.defaults, devtools.defaults devtools.defaults}, :cljs.spec/speced-vars [], :uses nil, :defs {merge-prefs! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 29, :column 7, :end-line 29, :end-column 19, :arglists (quote ([m]))}, :name devtools.prefs/merge-prefs!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/prefs.cljs", :end-column 19, :method-params ([m]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 29, :end-line 29, :max-fixed-arity 1, :fn-var true, :arglists (quote ([m]))}, external-config {:name devtools.prefs/external-config, :file "target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 7, :column 1, :end-line 7, :end-column 21, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 7, :column 6, :end-line 7, :end-column 21}, :tag cljs.core/Delay}, get-prefs {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 18, :column 7, :end-line 18, :end-column 16, :arglists (quote ([]))}, :name devtools.prefs/get-prefs, :variadic false, :file "target/cljsbuild/public/js/out/devtools/prefs.cljs", :end-column 16, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 18, :end-line 18, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, initial-config {:name devtools.prefs/initial-config, :file "target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 9, :column 1, :end-line 9, :end-column 20, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 9, :column 6, :end-line 9, :end-column 20}, :tag cljs.core/Delay}, set-pref! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 26, :column 7, :end-line 26, :end-column 16, :arglists (quote ([key val]))}, :name devtools.prefs/set-pref!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/prefs.cljs", :end-column 16, :method-params ([key val]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 26, :end-line 26, :max-fixed-arity 2, :fn-var true, :arglists (quote ([key val]))}, default-config {:name devtools.prefs/default-config, :file "target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 6, :column 1, :end-line 6, :end-column 20, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 6, :column 6, :end-line 6, :end-column 20}, :tag cljs.core/Delay}, pref {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 23, :column 7, :end-line 23, :end-column 11, :arglists (quote ([key]))}, :name devtools.prefs/pref, :variadic false, :file "target/cljsbuild/public/js/out/devtools/prefs.cljs", :end-column 11, :method-params ([key]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 23, :end-line 23, :max-fixed-arity 1, :fn-var true, :arglists (quote ([key]))}, *current-config* {:name devtools.prefs/*current-config*, :file "target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 11, :column 1, :end-line 11, :end-column 32, :dynamic true, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 11, :column 16, :end-line 11, :end-column 32, :dynamic true}, :tag cljs.core/Delay}, set-prefs! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 15, :column 7, :end-line 15, :end-column 17, :arglists (quote ([new-prefs]))}, :name devtools.prefs/set-prefs!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/prefs.cljs", :end-column 17, :method-params ([new-prefs]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 15, :end-line 15, :max-fixed-arity 1, :fn-var true, :arglists (quote ([new-prefs]))}, update-pref! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/prefs.cljs", :line 32, :column 7, :end-line 32, :end-column 19, :arglists (quote ([key f & args])), :top-fn {:variadic true, :max-fixed-arity 2, :method-params [(key f args)], :arglists ([key f & args]), :arglists-meta (nil)}}, :name devtools.prefs/update-pref!, :variadic true, :file "target/cljsbuild/public/js/out/devtools/prefs.cljs", :end-column 19, :top-fn {:variadic true, :max-fixed-arity 2, :method-params [(key f args)], :arglists ([key f & args]), :arglists-meta (nil)}, :method-params [(key f args)], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 32, :end-line 32, :max-fixed-arity 2, :fn-var true, :arglists ([key f & args])}, env-config {:name devtools.preLine truncated
|
||||
@@ -0,0 +1,76 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.prefs');
|
||||
goog.require('cljs.core');
|
||||
goog.require('devtools.defaults');
|
||||
devtools.prefs.default_config = (new cljs.core.Delay((function (){
|
||||
return cljs.core.deref.call(null,devtools.defaults.config);
|
||||
}),null));
|
||||
devtools.prefs.external_config = (new cljs.core.Delay((function (){
|
||||
return cljs.core.PersistentArrayMap.EMPTY;
|
||||
}),null));
|
||||
devtools.prefs.env_config = (new cljs.core.Delay((function (){
|
||||
return cljs.core.PersistentArrayMap.EMPTY;
|
||||
}),null));
|
||||
devtools.prefs.initial_config = (new cljs.core.Delay((function (){
|
||||
return cljs.core.merge.call(null,cljs.core.deref.call(null,devtools.prefs.default_config),cljs.core.deref.call(null,devtools.prefs.external_config),cljs.core.deref.call(null,devtools.prefs.env_config));
|
||||
}),null));
|
||||
devtools.prefs._STAR_current_config_STAR_ = (new cljs.core.Delay((function (){
|
||||
return cljs.core.deref.call(null,devtools.prefs.initial_config);
|
||||
}),null));
|
||||
devtools.prefs.set_prefs_BANG_ = (function devtools$prefs$set_prefs_BANG_(new_prefs){
|
||||
return devtools.prefs._STAR_current_config_STAR_ = new_prefs;
|
||||
});
|
||||
devtools.prefs.get_prefs = (function devtools$prefs$get_prefs(){
|
||||
if(cljs.core.delay_QMARK_.call(null,devtools.prefs._STAR_current_config_STAR_)){
|
||||
devtools.prefs.set_prefs_BANG_.call(null,cljs.core.deref.call(null,devtools.prefs._STAR_current_config_STAR_));
|
||||
} else {
|
||||
}
|
||||
|
||||
return devtools.prefs._STAR_current_config_STAR_;
|
||||
});
|
||||
devtools.prefs.pref = (function devtools$prefs$pref(key){
|
||||
return key.call(null,devtools.prefs.get_prefs.call(null));
|
||||
});
|
||||
devtools.prefs.set_pref_BANG_ = (function devtools$prefs$set_pref_BANG_(key,val){
|
||||
return devtools.prefs.set_prefs_BANG_.call(null,cljs.core.assoc.call(null,devtools.prefs.get_prefs.call(null),key,val));
|
||||
});
|
||||
devtools.prefs.merge_prefs_BANG_ = (function devtools$prefs$merge_prefs_BANG_(m){
|
||||
return devtools.prefs.set_prefs_BANG_.call(null,cljs.core.merge.call(null,devtools.prefs.get_prefs.call(null),m));
|
||||
});
|
||||
devtools.prefs.update_pref_BANG_ = (function devtools$prefs$update_pref_BANG_(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___38840 = arguments.length;
|
||||
var i__36778__auto___38841 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___38841 < len__36777__auto___38840)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___38841]));
|
||||
|
||||
var G__38842 = (i__36778__auto___38841 + (1));
|
||||
i__36778__auto___38841 = G__38842;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((2) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((2)),(0),null)):null);
|
||||
return devtools.prefs.update_pref_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.prefs.update_pref_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (key,f,args){
|
||||
var new_val = cljs.core.apply.call(null,f,devtools.prefs.pref.call(null,key),args);
|
||||
return devtools.prefs.set_pref_BANG_.call(null,key,new_val);
|
||||
});
|
||||
|
||||
devtools.prefs.update_pref_BANG_.cljs$lang$maxFixedArity = (2);
|
||||
|
||||
devtools.prefs.update_pref_BANG_.cljs$lang$applyTo = (function (seq38837){
|
||||
var G__38838 = cljs.core.first.call(null,seq38837);
|
||||
var seq38837__$1 = cljs.core.next.call(null,seq38837);
|
||||
var G__38839 = cljs.core.first.call(null,seq38837__$1);
|
||||
var seq38837__$2 = cljs.core.next.call(null,seq38837__$1);
|
||||
return devtools.prefs.update_pref_BANG_.cljs$core$IFn$_invoke$arity$variadic(G__38838,G__38839,seq38837__$2);
|
||||
});
|
||||
|
||||
|
||||
//# sourceMappingURL=prefs.js.map?rel=1517021942096
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/prefs.js","sources":["prefs.cljs?rel=1517021942097"],"lineCount":76,"mappings":";AAAA;;;AAKA,AAAKA,gCAAe,KAAAC,gBAAA;AAAA,AAAA,OAAAC,0BAAQC;GAAR;AACpB,AAAKC,iCAAgB,KAAAH,gBAAA;AAAA,AAAO;GAAP;AACrB,AAAKI,4BAAW,KAAAJ,gBAAA;AAAA,AAAO;GAAP;AAChB,AAAKK,gCAAe,KAAAL,gBAAA;AAAA,AAAO,iCAAA,AAAAC,yDAAA,AAAAA,0DAAA,AAAAA,7IAACK,oDAAOP,yDAAgBI,0DAAiBC;GAAhD;AAEpB,AAAeG,4CAAiB,KAAAP,gBAAA;AAAA,AAAA,OAAAC,0BAAQI;GAAR;AAIhC,iCAAA,jCAAMG,0EAAYC;AAAlB,AACE,OAAMF,4CAAiBE;;AAEzB,2BAAA,3BAAMC;AAAN,AACE,GAAM,AAACC,iCAAOJ;AAAd,AACE,yCAAA,AAAAN,zCAACO,mEAAYD;;AADf;;AAEAA;;AAEF,sBAAA,tBAAMK,oDAAMC;AAAZ,AACE,OAACA,cAAI,AAACH;;AAER,gCAAA,hCAAMI,wEAAWD,IAAIE;AAArB,AACE,OAACP,yCAAW,AAACQ,0BAAM,AAACN,oCAAWG,IAAIE;;AAErC,mCAAA,nCAAME,8EAAcC;AAApB,AACE,OAACV,yCAAW,AAACF,0BAAM,AAACI,oCAAWQ;;AAEjC,AAAA,mCAAA,2CAAAC,9EAAMM;AAAN,AAAA,IAAAL,sBAAA;AAAA,AAAA,IAAAC,2BAAA,AAAA;AAAA,AAAA,IAAAC,yBAAA;;AAAA,AAAA,GAAA,CAAAA,yBAAAD;AAAA,AAAA,AAAAD,yBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,yBAAA;;;;AAAA;;;;AAAA,IAAAC,wBAAA,EAAA,CAAA,MAAA,AAAAH,6BAAA,AAAA,KAAAI,qBAAA,AAAAJ,0BAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAAK,sEAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAAF;;;AAAA,AAAA,AAAA,AAAAE,wEAAA,WAAoBZ,IAAIkB,EAAIC;AAA5B,AACE,IAAMC,UAAQ,AAACC,0BAAMH,EAAE,AAACnB,8BAAKC,KAAKmB;AAAlC,AACE,OAAClB,wCAAUD,IAAIoB;;;AAFnB,AAAA,AAAAR,2DAAA;;AAAA,AAAA,AAAAA,qDAAA,WAAAC;AAAA,AAAA,IAAAC,WAAA,AAAAC,0BAAAF;IAAAA,eAAA,AAAAG,yBAAAH;IAAAI,WAAA,AAAAF,0BAAAF;IAAAA,eAAA,AAAAG,yBAAAH;AAAA,AAAA,OAAAD,sEAAAE,SAAAG,SAAAJ;;;AAAA","names":["devtools.prefs\/default-config","cljs.core\/Delay","cljs.core\/deref","devtools.defaults\/config","devtools.prefs\/external-config","devtools.prefs\/env-config","devtools.prefs\/initial-config","cljs.core\/merge","devtools.prefs\/*current-config*","devtools.prefs\/set-prefs!","new-prefs","devtools.prefs\/get-prefs","cljs.core\/delay?","devtools.prefs\/pref","key","devtools.prefs\/set-pref!","val","cljs.core\/assoc","devtools.prefs\/merge-prefs!","m","var_args","args__36784__auto__","len__36777__auto__","i__36778__auto__","argseq__36785__auto__","cljs.core\/IndexedSeq","devtools.prefs\/update-pref!","seq38837","G__38838","cljs.core\/first","cljs.core\/next","G__38839","f","args","new-val","cljs.core\/apply"]}
|
||||
@@ -0,0 +1,15 @@
|
||||
(ns devtools.protocols)
|
||||
|
||||
(defprotocol ITemplate
|
||||
"Marker protocol indicating a devtools template.")
|
||||
|
||||
(defprotocol IGroup
|
||||
"Marker protocol indicating a devtools group.")
|
||||
|
||||
(defprotocol ISurrogate
|
||||
"Marker protocol indicating a devtools surrogate object.")
|
||||
|
||||
(defprotocol IFormat
|
||||
(-header [value])
|
||||
(-has-body [value])
|
||||
(-body [value]))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :use-macros {}, :excludes #{}, :name devtools.protocols, :imports nil, :requires nil, :cljs.spec/speced-vars [], :uses nil, :defs {ITemplate {:meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/protocols.cljs", :line 3, :column 14, :end-line 3, :end-column 23, :doc "Marker protocol indicating a devtools template.", :protocol-symbol true, :jsdoc ("@interface"), :protocol-info {:methods {}}}, :protocol-symbol true, :name devtools.protocols/ITemplate, :file "target/cljsbuild/public/js/out/devtools/protocols.cljs", :end-column 23, :column 1, :line 3, :protocol-info {:methods {}}, :info nil, :end-line 3, :tag any, :impls #{}, :doc "Marker protocol indicating a devtools template.", :jsdoc ("@interface")}, IGroup {:meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/protocols.cljs", :line 6, :column 14, :end-line 6, :end-column 20, :doc "Marker protocol indicating a devtools group.", :protocol-symbol true, :jsdoc ("@interface"), :protocol-info {:methods {}}}, :protocol-symbol true, :name devtools.protocols/IGroup, :file "target/cljsbuild/public/js/out/devtools/protocols.cljs", :end-column 20, :column 1, :line 6, :protocol-info {:methods {}}, :info nil, :end-line 6, :tag any, :impls #{}, :doc "Marker protocol indicating a devtools group.", :jsdoc ("@interface")}, ISurrogate {:meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/protocols.cljs", :line 9, :column 14, :end-line 9, :end-column 24, :doc "Marker protocol indicating a devtools surrogate object.", :protocol-symbol true, :jsdoc ("@interface"), :protocol-info {:methods {}}}, :protocol-symbol true, :name devtools.protocols/ISurrogate, :file "target/cljsbuild/public/js/out/devtools/protocols.cljs", :end-column 24, :column 1, :line 9, :protocol-info {:methods {}}, :info nil, :end-line 9, :tag any, :impls #{}, :doc "Marker protocol indicating a devtools surrogate object.", :jsdoc ("@interface")}, IFormat {:meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/protocols.cljs", :line 12, :column 14, :end-line 12, :end-column 21, :doc nil, :protocol-symbol true, :jsdoc ("@interface"), :protocol-info {:methods {-header [[value]], -has-body [[value]], -body [[value]]}}}, :protocol-symbol true, :name devtools.protocols/IFormat, :file "target/cljsbuild/public/js/out/devtools/protocols.cljs", :end-column 21, :column 1, :line 12, :protocol-info {:methods {-header [[value]], -has-body [[value]], -body [[value]]}}, :info nil, :end-line 12, :tag any, :impls #{}, :doc nil, :jsdoc ("@interface")}, -header {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/protocols.cljs", :line 13, :column 4, :end-line 13, :end-column 11, :protocol devtools.protocols/IFormat, :doc nil, :arglists (quote ([value]))}, :protocol devtools.protocols/IFormat, :name devtools.protocols/-header, :variadic false, :file "target/cljsbuild/public/js/out/devtools/protocols.cljs", :end-column 11, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 12, :end-line 13, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value])), :doc nil}, -has-body {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/protocols.cljs", :line 14, :column 4, :end-line 14, :end-column 13, :protocol devtools.protocols/IFormat, :doc nil, :arglists (quote ([value]))}, :protocol devtools.protocols/IFormat, :name devtools.protocols/-has-body, :variadic false, :file "target/cljsbuild/public/js/out/devtools/protocols.cljs", :end-column 13, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 12, :end-line 14, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value])), :doc nil}, -body {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/protocols.cljs", :line 15, :column 4, :end-line 15, :end-column 9, :protocol devtools.protocols/IFormat, :doc nil, :arglists (quote ([value]))}, :protocol devtools.protocols/IFormat, :name devtools.protocols/-body, :variadic false, :file "target/cljsbuild/public/js/out/devtools/protocols.cljs", :end-column 9, :method-params ([value]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 12, :end-line 15, :max-fixed-arity 1, :fn-var true, :arglists (quote ([value])), :doc nil}}, :cljs.spec/registry-ref [], :require-macros nil, :doc nil}
|
||||
@@ -0,0 +1,89 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.protocols');
|
||||
goog.require('cljs.core');
|
||||
|
||||
/**
|
||||
* Marker protocol indicating a devtools template.
|
||||
* @interface
|
||||
*/
|
||||
devtools.protocols.ITemplate = function(){};
|
||||
|
||||
|
||||
/**
|
||||
* Marker protocol indicating a devtools group.
|
||||
* @interface
|
||||
*/
|
||||
devtools.protocols.IGroup = function(){};
|
||||
|
||||
|
||||
/**
|
||||
* Marker protocol indicating a devtools surrogate object.
|
||||
* @interface
|
||||
*/
|
||||
devtools.protocols.ISurrogate = function(){};
|
||||
|
||||
|
||||
/**
|
||||
* @interface
|
||||
*/
|
||||
devtools.protocols.IFormat = function(){};
|
||||
|
||||
devtools.protocols._header = (function devtools$protocols$_header(value){
|
||||
if((!((value == null))) && (!((value.devtools$protocols$IFormat$_header$arity$1 == null)))){
|
||||
return value.devtools$protocols$IFormat$_header$arity$1(value);
|
||||
} else {
|
||||
var x__36231__auto__ = (((value == null))?null:value);
|
||||
var m__36232__auto__ = (devtools.protocols._header[goog.typeOf(x__36231__auto__)]);
|
||||
if(!((m__36232__auto__ == null))){
|
||||
return m__36232__auto__.call(null,value);
|
||||
} else {
|
||||
var m__36232__auto____$1 = (devtools.protocols._header["_"]);
|
||||
if(!((m__36232__auto____$1 == null))){
|
||||
return m__36232__auto____$1.call(null,value);
|
||||
} else {
|
||||
throw cljs.core.missing_protocol.call(null,"IFormat.-header",value);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
devtools.protocols._has_body = (function devtools$protocols$_has_body(value){
|
||||
if((!((value == null))) && (!((value.devtools$protocols$IFormat$_has_body$arity$1 == null)))){
|
||||
return value.devtools$protocols$IFormat$_has_body$arity$1(value);
|
||||
} else {
|
||||
var x__36231__auto__ = (((value == null))?null:value);
|
||||
var m__36232__auto__ = (devtools.protocols._has_body[goog.typeOf(x__36231__auto__)]);
|
||||
if(!((m__36232__auto__ == null))){
|
||||
return m__36232__auto__.call(null,value);
|
||||
} else {
|
||||
var m__36232__auto____$1 = (devtools.protocols._has_body["_"]);
|
||||
if(!((m__36232__auto____$1 == null))){
|
||||
return m__36232__auto____$1.call(null,value);
|
||||
} else {
|
||||
throw cljs.core.missing_protocol.call(null,"IFormat.-has-body",value);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
devtools.protocols._body = (function devtools$protocols$_body(value){
|
||||
if((!((value == null))) && (!((value.devtools$protocols$IFormat$_body$arity$1 == null)))){
|
||||
return value.devtools$protocols$IFormat$_body$arity$1(value);
|
||||
} else {
|
||||
var x__36231__auto__ = (((value == null))?null:value);
|
||||
var m__36232__auto__ = (devtools.protocols._body[goog.typeOf(x__36231__auto__)]);
|
||||
if(!((m__36232__auto__ == null))){
|
||||
return m__36232__auto__.call(null,value);
|
||||
} else {
|
||||
var m__36232__auto____$1 = (devtools.protocols._body["_"]);
|
||||
if(!((m__36232__auto____$1 == null))){
|
||||
return m__36232__auto____$1.call(null,value);
|
||||
} else {
|
||||
throw cljs.core.missing_protocol.call(null,"IFormat.-body",value);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//# sourceMappingURL=protocols.js.map?rel=1517021941623
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/protocols.js","sources":["protocols.cljs?rel=1517021941623"],"lineCount":89,"mappings":";AAAA;;AAEA,AAAA;AAAA;;;;+BAAA,\/BAAaA;;AAAb,AAGA,AAAA;AAAA;;;;4BAAA,5BAAaC;;AAAb,AAGA,AAAA;AAAA;;;;gCAAA,hCAAaC;;AAAb,AAGA,AAAA;AAAA;;;6BAAA,7BAAaQ;;AAAb,6BAAA,7BACGC,kEAASC;AADZ,AAAA,GAAA,CAAA,EAAA,UAAA,YAAA,EAAA,CAAA,oDAAA,5EACYA,wBAAAA;AADZ,OACYA,iDAAAA;;AADZ,IAAAT,mBAAA,EAAA,UAAA,OAAA,hBACYS,qBAAAA;IADZR,mBAAA,CAAAC,2BAAA,AAAAC,YAAAH;AAAA,AAAA,GAAA,EAAA,CAAAC,oBAAA;AAAA,OAAAA,2BACYQ;;AADZ,IAAAR,uBAAA,CAAAC,2BAAA;AAAA,AAAA,GAAA,EAAA,CAAAD,wBAAA;AAAA,OAAAA,+BACYQ;;AADZ,MAAA,AAAAL,qCAAA,kBACYK;;;;;;AADZ,+BAAA,\/BAEGC,sEAAWD;AAFd,AAAA,GAAA,CAAA,EAAA,UAAA,YAAA,EAAA,CAAA,sDAAA,9EAEcA,wBAAAA;AAFd,OAEcA,mDAAAA;;AAFd,IAAAT,mBAAA,EAAA,UAAA,OAAA,hBAEcS,qBAAAA;IAFdR,mBAAA,CAAAI,6BAAA,AAAAF,YAAAH;AAAA,AAAA,GAAA,EAAA,CAAAC,oBAAA;AAAA,OAAAA,2BAEcQ;;AAFd,IAAAR,uBAAA,CAAAI,6BAAA;AAAA,AAAA,GAAA,EAAA,CAAAJ,wBAAA;AAAA,OAAAA,+BAEcQ;;AAFd,MAAA,AAAAL,qCAAA,oBAEcK;;;;;;AAFd,2BAAA,3BAGGE,8DAAOF;AAHV,AAAA,GAAA,CAAA,EAAA,UAAA,YAAA,EAAA,CAAA,kDAAA,1EAGUA,wBAAAA;AAHV,OAGUA,+CAAAA;;AAHV,IAAAT,mBAAA,EAAA,UAAA,OAAA,hBAGUS,qBAAAA;IAHVR,mBAAA,CAAAK,yBAAA,AAAAH,YAAAH;AAAA,AAAA,GAAA,EAAA,CAAAC,oBAAA;AAAA,OAAAA,2BAGUQ;;AAHV,IAAAR,uBAAA,CAAAK,yBAAA;AAAA,AAAA,GAAA,EAAA,CAAAL,wBAAA;AAAA,OAAAA,+BAGUQ;;AAHV,MAAA,AAAAL,qCAAA,gBAGUK;;;;;;AAHV","names":["devtools.protocols\/ITemplate","devtools.protocols\/IGroup","devtools.protocols\/ISurrogate","x__36231__auto__","m__36232__auto__","devtools\/protocols.-header","goog\/typeOf","cljs.core\/missing-protocol","devtools\/protocols.-has-body","devtools\/protocols.-body","devtools.protocols\/IFormat","devtools.protocols\/-header","value","devtools.protocols\/-has-body","devtools.protocols\/-body"]}
|
||||
@@ -0,0 +1,35 @@
|
||||
(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)))))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {Error {}}, :use-macros {oget devtools.oops}, :excludes #{}, :name devtools.reporter, :imports nil, :requires {util devtools.util, devtools.util devtools.util, context devtools.context, devtools.context devtools.context}, :cljs.spec/speced-vars [], :uses nil, :defs {issues-url {:name devtools.reporter/issues-url, :file "target/cljsbuild/public/js/out/devtools/reporter.cljs", :line 6, :column 1, :end-line 6, :end-column 16, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/reporter.cljs", :line 6, :column 6, :end-line 6, :end-column 16}, :tag string}, report-internal-error! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/reporter.cljs", :line 10, :column 7, :end-line 10, :end-column 29, :arglists (quote ([e & [context footer]])), :top-fn {:variadic true, :max-fixed-arity 1, :method-params [(e [context footer])], :arglists ([e & [context footer]]), :arglists-meta (nil)}}, :name devtools.reporter/report-internal-error!, :variadic true, :file "target/cljsbuild/public/js/out/devtools/reporter.cljs", :end-column 29, :top-fn {:variadic true, :max-fixed-arity 1, :method-params [(e [context footer])], :arglists ([e & [context footer]]), :arglists-meta (nil)}, :method-params [(e [context footer])], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 10, :end-line 10, :max-fixed-arity 1, :fn-var true, :arglists ([e & [context footer]])}}, :cljs.spec/registry-ref [], :require-macros {devtools.oops devtools.oops}, :doc nil}
|
||||
@@ -0,0 +1,79 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.reporter');
|
||||
goog.require('cljs.core');
|
||||
goog.require('devtools.util');
|
||||
goog.require('devtools.context');
|
||||
devtools.reporter.issues_url = "https://github.com/binaryage/cljs-devtools/issues";
|
||||
devtools.reporter.report_internal_error_BANG_ = (function devtools$reporter$report_internal_error_BANG_(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___40566 = arguments.length;
|
||||
var i__36778__auto___40567 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___40567 < len__36777__auto___40566)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___40567]));
|
||||
|
||||
var G__40568 = (i__36778__auto___40567 + (1));
|
||||
i__36778__auto___40567 = G__40568;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.reporter.report_internal_error_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.reporter.report_internal_error_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (e,p__40561){
|
||||
var vec__40562 = p__40561;
|
||||
var context = cljs.core.nth.call(null,vec__40562,(0),null);
|
||||
var footer = cljs.core.nth.call(null,vec__40562,(1),null);
|
||||
var console = devtools.context.get_console.call(null);
|
||||
try{var message = (((e instanceof Error))?(function (){var or__35498__auto__ = e.message;
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return e;
|
||||
}
|
||||
})():e);
|
||||
var header = ["%cCLJS DevTools Error%c%s","background-color:red;color:white;font-weight:bold;padding:0px 3px;border-radius:2px;","color:red",[" ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(message)].join('')];
|
||||
var context_msg = ["In ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.get_lib_info.call(null)),cljs.core.str.cljs$core$IFn$_invoke$arity$1((cljs.core.truth_(context)?[", ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(context),"."].join(''):".")),"\n\n"].join('');
|
||||
var footer_msg = ((!((footer == null)))?footer:["\n\n","---\n","Please report the issue here: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.reporter.issues_url)].join(''));
|
||||
var details = [context_msg,e,footer_msg];
|
||||
var group_collapsed = (console["groupCollapsed"]);
|
||||
var log = (console["log"]);
|
||||
var group_end = (console["groupEnd"]);
|
||||
if(cljs.core.truth_(group_collapsed)){
|
||||
} else {
|
||||
throw (new Error("Assert failed: group-collapsed"));
|
||||
}
|
||||
|
||||
if(cljs.core.truth_(log)){
|
||||
} else {
|
||||
throw (new Error("Assert failed: log"));
|
||||
}
|
||||
|
||||
if(cljs.core.truth_(group_end)){
|
||||
} else {
|
||||
throw (new Error("Assert failed: group-end"));
|
||||
}
|
||||
|
||||
group_collapsed.apply(console,header);
|
||||
|
||||
log.apply(console,details);
|
||||
|
||||
return group_end.call(console);
|
||||
}catch (e40565){var e__$1 = e40565;
|
||||
return console.error("FATAL: report-internal-error! failed",e__$1);
|
||||
}});
|
||||
|
||||
devtools.reporter.report_internal_error_BANG_.cljs$lang$maxFixedArity = (1);
|
||||
|
||||
devtools.reporter.report_internal_error_BANG_.cljs$lang$applyTo = (function (seq40559){
|
||||
var G__40560 = cljs.core.first.call(null,seq40559);
|
||||
var seq40559__$1 = cljs.core.next.call(null,seq40559);
|
||||
return devtools.reporter.report_internal_error_BANG_.cljs$core$IFn$_invoke$arity$variadic(G__40560,seq40559__$1);
|
||||
});
|
||||
|
||||
|
||||
//# sourceMappingURL=reporter.js.map?rel=1517021944325
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/reporter.js","sources":["reporter.cljs?rel=1517021944325"],"lineCount":79,"mappings":";AAAA;;;;AAKA,+BAAA,\/BAAKA;AAIL,AAAA,gDAAA,wDAAAC,xGAAMM;AAAN,AAAA,IAAAL,sBAAA;AAAA,AAAA,IAAAC,2BAAA,AAAA;AAAA,AAAA,IAAAC,yBAAA;;AAAA,AAAA,GAAA,CAAAA,yBAAAD;AAAA,AAAA,AAAAD,yBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,yBAAA;;;;AAAA;;;;AAAA,IAAAC,wBAAA,EAAA,CAAA,MAAA,AAAAH,6BAAA,AAAA,KAAAI,qBAAA,AAAAJ,0BAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAAK,mFAAA,CAAA,UAAA,MAAAF;;;AAAA,AAAA,AAAA,AAAAE,qFAAA,aAAAC,FAA8BO;AAA9B,AAAA,IAAAN,aAAAD;cAAA,AAAAE,wBAAAD,WAAA,IAAA,jDAAmCO;aAAnC,AAAAN,wBAAAD,WAAA,IAAA,hDAA2CQ;AAA3C,AACE,IAAMC,UAAQ,AAACC;AAAf,AACE,IAAA,AACE,IAAME,UAAQ,EAAI,cAAWC,bAASP,qBACtB,iBAAAQ,oBAAI,AAAWR;AAAf,AAAA,oBAAAQ;AAAAA;;AAAkBR;;KAClBA;aAFhB,CAAA,4BAAA,uFAAA,7HAGMS,yIAGY,CAAA,gDAASH;IACrBI,cAAY,CAAA,+OAAA,7LAAW,AAACC,mFAAmB,oGAAA,lFAAIV,SAAQ,CAAA,0DAAA,TAAUA;IACjEW,aAAW,EAAI,EAAA,WAAA,VAAOV,kBACTA,OACA,CAAA,OAAA,QAAA,6EAAqDjB;cAVxE,VAWM4B,WAAaH,YAAYV,EAAEY;AAXjC,AAYE,IAAME,kBAAgB,SAAA,RAAMX;IACtBY,MAAI,SAAA,RAAMZ;IACVa,YAAU,SAAA,RAAMb;AAFtB,AAGE,oBAAQW;AAAR;AAAA,AAAA,MAAA,KAAAP,MAAA;;;AACA,oBAAQQ;AAAR;AAAA,AAAA,MAAA,KAAAR,MAAA;;;AACA,oBAAQS;AAAR;AAAA,AAAA,MAAA,KAAAT,MAAA;;;AACA,AAAQO,sBAAgBX,QAAQM;;AAChC,AAAQM,UAAIZ,QAAQU;;AACpB,OAAOG,eAAUb;gBArBvB,YAAAE,RAsBkBL;AAtBlB,AAuBI,qBAAA,dAAQG,qDAA+CH;;;AAzB\/D,AAAA,AAAAR,wEAAA;;AAAA,AAAA,AAAAA,kEAAA,WAAAI;AAAA,AAAA,IAAAC,WAAA,AAAAC,0BAAAF;IAAAA,eAAA,AAAAG,yBAAAH;AAAA,AAAA,OAAAJ,mFAAAK,SAAAD;;;AAAA","names":["devtools.reporter\/issues-url","var_args","args__36784__auto__","len__36777__auto__","i__36778__auto__","argseq__36785__auto__","cljs.core\/IndexedSeq","devtools.reporter\/report-internal-error!","p__40561","vec__40562","cljs.core\/nth","seq40559","G__40560","cljs.core\/first","cljs.core\/next","e","context","footer","console","devtools.context\/get-console","e40565","message","js\/Error","or__35498__auto__","header","context-msg","devtools.util\/get-lib-info","footer-msg","details","group-collapsed","log","group-end"]}
|
||||
@@ -0,0 +1,38 @@
|
||||
(ns devtools.toolbox
|
||||
(:require [devtools.protocols :refer [IFormat]]
|
||||
[devtools.formatters.templating :refer [render-markup]]
|
||||
[devtools.formatters.markup :refer [<preview> <body> <standard-body-reference> <surrogate>]]))
|
||||
|
||||
(defn envelope
|
||||
"This is a simple wrapper for logging \"busy\" objects.
|
||||
This is especially handy when you happen to be logging javascript objects with many properties.
|
||||
Standard javascript console renderer tends to print a lot of infomation in the header in some cases and that can make
|
||||
console output pretty busy. By using envelope you can force your own short header and let the details expand on demand
|
||||
via disclosure triangle. The header can be styled and you can optionally specify preferred wrapping tag (advanced)."
|
||||
([obj]
|
||||
(envelope obj :default-envelope-header))
|
||||
([obj header]
|
||||
(envelope obj header :default-envelope-style))
|
||||
([obj header style]
|
||||
(envelope obj header style :span))
|
||||
([obj header style tag]
|
||||
(reify
|
||||
IFormat
|
||||
(-header [_] (render-markup [[tag style] (if (fn? header) (header obj) header)]))
|
||||
(-has-body [_] true)
|
||||
(-body [_] (render-markup (<body> (<standard-body-reference> obj)))))))
|
||||
|
||||
(defn force-format
|
||||
"Forces object to be rendered by cljs-devtools during console logging.
|
||||
|
||||
Unfortunately custom formatters subsystem in DevTools is not applied to primitive values like numbers, strings, null, etc.
|
||||
This wrapper can be used as a workaround if you really need to force cljs-devtools rendering:
|
||||
|
||||
(.log js/console nil) ; will render 'null'
|
||||
(.log js/console (force-format nil)) ; will render 'nil' and not 'null'
|
||||
|
||||
See https://github.com/binaryage/cljs-devtools/issues/17
|
||||
"
|
||||
[obj]
|
||||
(render-markup (<surrogate> obj)))
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {Error {}}, :use-macros {}, :excludes #{}, :name devtools.toolbox, :imports nil, :requires {devtools.protocols devtools.protocols, devtools.formatters.templating devtools.formatters.templating, devtools.formatters.markup devtools.formatters.markup}, :cljs.spec/speced-vars [], :uses {<preview> devtools.formatters.markup, <standard-body-reference> devtools.formatters.markup, render-markup devtools.formatters.templating, <surrogate> devtools.formatters.markup, IFormat devtools.protocols, <body> devtools.formatters.markup}, :defs {envelope {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/toolbox.cljs", :line 6, :column 7, :end-line 6, :end-column 15, :arglists (quote ([obj] [obj header] [obj header style] [obj header style tag])), :doc "This is a simple wrapper for logging \"busy\" objects.\n This is especially handy when you happen to be logging javascript objects with many properties.\n Standard javascript console renderer tends to print a lot of infomation in the header in some cases and that can make\n console output pretty busy. By using envelope you can force your own short header and let the details expand on demand\n via disclosure triangle. The header can be styled and you can optionally specify preferred wrapping tag (advanced).", :top-fn {:variadic false, :max-fixed-arity 4, :method-params ([obj] [obj header] [obj header style] [obj header style tag]), :arglists ([obj] [obj header] [obj header style] [obj header style tag]), :arglists-meta (nil nil nil nil)}}, :name devtools.toolbox/envelope, :variadic false, :file "target/cljsbuild/public/js/out/devtools/toolbox.cljs", :end-column 15, :top-fn {:variadic false, :max-fixed-arity 4, :method-params ([obj] [obj header] [obj header style] [obj header style tag]), :arglists ([obj] [obj header] [obj header style] [obj header style tag]), :arglists-meta (nil nil nil nil)}, :method-params ([obj] [obj header] [obj header style] [obj header style tag]), :protocol-impl nil, :arglists-meta (nil nil nil nil), :column 1, :line 6, :end-line 6, :max-fixed-arity 4, :fn-var true, :arglists ([obj] [obj header] [obj header style] [obj header style tag]), :doc "This is a simple wrapper for logging \"busy\" objects.\n This is especially handy when you happen to be logging javascript objects with many properties.\n Standard javascript console renderer tends to print a lot of infomation in the header in some cases and that can make\n console output pretty busy. By using envelope you can force your own short header and let the details expand on demand\n via disclosure triangle. The header can be styled and you can optionally specify preferred wrapping tag (advanced)."}, t_devtools$toolbox40547 {:num-fields 5, :protocols #{devtools.protocols/IFormat cljs.core/IMeta cljs.core/IWithMeta}, :name devtools.toolbox/t_devtools$toolbox40547, :file "target/cljsbuild/public/js/out/devtools/toolbox.cljs", :type true, :anonymous true, :column 4, :line 19, :record false, :skip-protocol-flag #{cljs.core/IMeta cljs.core/IWithMeta}}, ->t_devtools$toolbox40547 {:protocol-inline nil, :meta {:anonymous true, :protocols #{devtools.protocols/IFormat cljs.core/IMeta cljs.core/IWithMeta}, :skip-protocol-flag #{cljs.core/IMeta cljs.core/IWithMeta}, :factory :positional, :arglists (quote ([obj header style tag meta40548])), :file nil}, :protocols #{devtools.protocols/IFormat cljs.core/IMeta cljs.core/IWithMeta}, :name devtools.toolbox/->t_devtools$toolbox40547, :variadic false, :file "target/cljsbuild/public/js/out/devtools/toolbox.cljs", :method-params ([obj header style tag meta40548]), :protocol-impl nil, :arglists-meta (nil nil), :anonymous true, :column 4, :factory :positional, :line 19, :max-fixed-arity 5, :fn-var true, :arglists (quote ([obj header style tag meta40548])), :skip-protocol-flag #{cljs.core/IMeta cljs.core/IWithMeta}}, force-format {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/toolbox.cljs", :line 25, :column 7, :end-line 25, :end-column 19, :arglists (quote ([obj])), :doc "Forces object to be rendered by cljs-devtools during console logging.\n\n Unfortunately custom formatters subsystem in DevTools is not applied to primitive values like numbers, strings, null, etc.\n This wrapper can be used as a workaround if you really need to force cljs-devtools rendering:\n\n (.log js/console nil) ; will render 'null'\n (.log js/console (force-format nil)) ; will render 'nil' and not 'null'\n\n See https://github.com/binaryage/cljs-devtools/issues/17\n "}, :name devtools.toolbox/force-format, :variadic false, :file "target/cljsbuild/public/js/out/devtools/toolbox.cljs", :end-column 19, :method-params ([obj]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 25, :end-line 25, :max-fixed-arity 1, :fn-var true, :arglists (quote ([obj])), :doc "Forces object to be rendered by cljs-devtools during consoLine truncated
|
||||
@@ -0,0 +1,141 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.toolbox');
|
||||
goog.require('cljs.core');
|
||||
goog.require('devtools.protocols');
|
||||
goog.require('devtools.formatters.templating');
|
||||
goog.require('devtools.formatters.markup');
|
||||
/**
|
||||
* This is a simple wrapper for logging "busy" objects.
|
||||
* This is especially handy when you happen to be logging javascript objects with many properties.
|
||||
* Standard javascript console renderer tends to print a lot of infomation in the header in some cases and that can make
|
||||
* console output pretty busy. By using envelope you can force your own short header and let the details expand on demand
|
||||
* via disclosure triangle. The header can be styled and you can optionally specify preferred wrapping tag (advanced).
|
||||
*/
|
||||
devtools.toolbox.envelope = (function devtools$toolbox$envelope(var_args){
|
||||
var G__40546 = arguments.length;
|
||||
switch (G__40546) {
|
||||
case 1:
|
||||
return devtools.toolbox.envelope.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
||||
|
||||
break;
|
||||
case 2:
|
||||
return devtools.toolbox.envelope.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
||||
|
||||
break;
|
||||
case 3:
|
||||
return devtools.toolbox.envelope.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
|
||||
|
||||
break;
|
||||
case 4:
|
||||
return devtools.toolbox.envelope.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
|
||||
|
||||
break;
|
||||
default:
|
||||
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
devtools.toolbox.envelope.cljs$core$IFn$_invoke$arity$1 = (function (obj){
|
||||
return devtools.toolbox.envelope.call(null,obj,new cljs.core.Keyword(null,"default-envelope-header","default-envelope-header",-90723598));
|
||||
});
|
||||
|
||||
devtools.toolbox.envelope.cljs$core$IFn$_invoke$arity$2 = (function (obj,header){
|
||||
return devtools.toolbox.envelope.call(null,obj,header,new cljs.core.Keyword(null,"default-envelope-style","default-envelope-style",-1676750479));
|
||||
});
|
||||
|
||||
devtools.toolbox.envelope.cljs$core$IFn$_invoke$arity$3 = (function (obj,header,style){
|
||||
return devtools.toolbox.envelope.call(null,obj,header,style,new cljs.core.Keyword(null,"span","span",1394872991));
|
||||
});
|
||||
|
||||
devtools.toolbox.envelope.cljs$core$IFn$_invoke$arity$4 = (function (obj,header,style,tag){
|
||||
if(typeof devtools.toolbox.t_devtools$toolbox40547 !== 'undefined'){
|
||||
} else {
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @implements {devtools.protocols.IFormat}
|
||||
* @implements {cljs.core.IMeta}
|
||||
* @implements {cljs.core.IWithMeta}
|
||||
*/
|
||||
devtools.toolbox.t_devtools$toolbox40547 = (function (obj,header,style,tag,meta40548){
|
||||
this.obj = obj;
|
||||
this.header = header;
|
||||
this.style = style;
|
||||
this.tag = tag;
|
||||
this.meta40548 = meta40548;
|
||||
this.cljs$lang$protocol_mask$partition0$ = 393216;
|
||||
this.cljs$lang$protocol_mask$partition1$ = 0;
|
||||
});
|
||||
devtools.toolbox.t_devtools$toolbox40547.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (_40549,meta40548__$1){
|
||||
var self__ = this;
|
||||
var _40549__$1 = this;
|
||||
return (new devtools.toolbox.t_devtools$toolbox40547(self__.obj,self__.header,self__.style,self__.tag,meta40548__$1));
|
||||
});
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox40547.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_40549){
|
||||
var self__ = this;
|
||||
var _40549__$1 = this;
|
||||
return self__.meta40548;
|
||||
});
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox40547.prototype.devtools$protocols$IFormat$ = cljs.core.PROTOCOL_SENTINEL;
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox40547.prototype.devtools$protocols$IFormat$_header$arity$1 = (function (_){
|
||||
var self__ = this;
|
||||
var ___$1 = this;
|
||||
return devtools.formatters.templating.render_markup.call(null,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.tag,self__.style], null),((cljs.core.fn_QMARK_.call(null,self__.header))?self__.header.call(null,self__.obj):self__.header)], null));
|
||||
});
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox40547.prototype.devtools$protocols$IFormat$_has_body$arity$1 = (function (_){
|
||||
var self__ = this;
|
||||
var ___$1 = this;
|
||||
return true;
|
||||
});
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox40547.prototype.devtools$protocols$IFormat$_body$arity$1 = (function (_){
|
||||
var self__ = this;
|
||||
var ___$1 = this;
|
||||
return devtools.formatters.templating.render_markup.call(null,devtools.formatters.markup._LT_body_GT_.call(null,devtools.formatters.markup._LT_standard_body_reference_GT_.call(null,self__.obj)));
|
||||
});
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox40547.getBasis = (function (){
|
||||
return new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"obj","obj",-1672671807,null),new cljs.core.Symbol(null,"header","header",1759972661,null),new cljs.core.Symbol(null,"style","style",1143888791,null),new cljs.core.Symbol(null,"tag","tag",350170304,null),new cljs.core.Symbol(null,"meta40548","meta40548",2027527092,null)], null);
|
||||
});
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox40547.cljs$lang$type = true;
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox40547.cljs$lang$ctorStr = "devtools.toolbox/t_devtools$toolbox40547";
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox40547.cljs$lang$ctorPrWriter = (function (this__36169__auto__,writer__36170__auto__,opt__36171__auto__){
|
||||
return cljs.core._write.call(null,writer__36170__auto__,"devtools.toolbox/t_devtools$toolbox40547");
|
||||
});
|
||||
|
||||
devtools.toolbox.__GT_t_devtools$toolbox40547 = (function devtools$toolbox$__GT_t_devtools$toolbox40547(obj__$1,header__$1,style__$1,tag__$1,meta40548){
|
||||
return (new devtools.toolbox.t_devtools$toolbox40547(obj__$1,header__$1,style__$1,tag__$1,meta40548));
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
return (new devtools.toolbox.t_devtools$toolbox40547(obj,header,style,tag,cljs.core.PersistentArrayMap.EMPTY));
|
||||
});
|
||||
|
||||
devtools.toolbox.envelope.cljs$lang$maxFixedArity = 4;
|
||||
|
||||
/**
|
||||
* Forces object to be rendered by cljs-devtools during console logging.
|
||||
*
|
||||
* Unfortunately custom formatters subsystem in DevTools is not applied to primitive values like numbers, strings, null, etc.
|
||||
* This wrapper can be used as a workaround if you really need to force cljs-devtools rendering:
|
||||
*
|
||||
* (.log js/console nil) ; will render 'null'
|
||||
* (.log js/console (force-format nil)) ; will render 'nil' and not 'null'
|
||||
*
|
||||
* See https://github.com/binaryage/cljs-devtools/issues/17
|
||||
*
|
||||
*/
|
||||
devtools.toolbox.force_format = (function devtools$toolbox$force_format(obj){
|
||||
return devtools.formatters.templating.render_markup.call(null,devtools.formatters.markup._LT_surrogate_GT_.call(null,obj));
|
||||
});
|
||||
|
||||
//# sourceMappingURL=toolbox.js.map?rel=1517021944297
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/toolbox.js","sources":["toolbox.cljs?rel=1517021944297"],"lineCount":141,"mappings":";AAAA;;;;;AAKA,AAAA;;;;;;;4BAAA,oCAAAA,hEAAME;AAAN,AAAA,IAAAD,WAAA,AAAA;AAAA,AAAA,QAAAA;KAAA;AAAA,OAAAC,wDAAA,CAAA,UAAA;;;KAAA;AAAA,OAAAA,wDAAA,CAAA,UAAA,MAAA,CAAA,UAAA;;;KAAA;AAAA,OAAAA,wDAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAA,CAAA,UAAA;;;KAAA;AAAA,OAAAA,wDAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAA,CAAA,UAAA;;;;AAAA,MAAA,KAAAC,MAAA,CAAA,8DAAA,AAAA;;;;;AAAA,AAAA,0DAAA,1DAAMD,qEAMFE;AANJ,AAOG,+CAAA,xCAACF,oCAASE;;;AAPb,AAAA,0DAAA,1DAAMF,qEAQFE,IAAIC;AARR,AASG,sDAAA,\/CAACH,oCAASE,IAAIC;;;AATjB,AAAA,0DAAA,1DAAMH,qEAUFE,IAAIC,OAAOC;AAVf,AAWG,4DAAA,rDAACJ,oCAASE,IAAIC,OAAOC;;;AAXxB,AAAA,0DAAA,1DAAMJ,qEAYFE,IAAIC,OAAOC,MAAMC;AAZrB,AAaG,AAAA,GAAA,OAAAC;AAAA;AAAA,AAAA,AAAA;;;;;;;;;;;;;;;;AAAA,AAAA,AAAA,AAAA,AAAAA,4FAAA,WAAAC,OAAAC;;AAAA,AAAA,IAAAD,aAAA;qDADCL,WAAIC,cAAOC,aAAMC,3FAClB,AAAA,YAAAC,0FAAAE;;;AAAA,AAAA,AAAA,AAAAF,mFAAA,WAAAC;;AAAA,AAAA,IAAAA,aAAA;AAAA,AAAAC;;;AAAA,AAAA,AAAA,AAAAF,iFAAAG;;AAAA,AAAA,AAAA,AAAAH,gGAAA,WAEYS;;AAFZ,AAAA,YAAA,RAEYA;AAFZ,AAEe,8DAAA,mFAAA,1IAACC,6NAAgBX,WAAID,qBAAO,EAAI,AAACa,8BAAId,gBAAQ,AAACA,wBAAOD,YAAKC;;;AAFzE,AAAA,AAAA,AAAAG,kGAAA,WAGcS;;AAHd,AAAA,YAAA,RAGcA;AAHd,AAAA;;;AAAA,AAAA,AAAA,AAAAT,8FAAA,WAIUS;;AAJV,AAAA,YAAA,RAIUA;AAJV,AAIa,OAACC,uDAAc,AAACE,kDAAO,AAACC,qEAA0BjB;;;AAJ\/D,AAAA,AAAAI,oDAAA;AAAA,AAAA,0FAAA,wDAAA,6DAAA,2DAAA,sDAAA;;;AAAA,AAAA,AAAAA,0DAAA;;AAAA,AAAA,AAAAA,6DAAA;;AAAA,AAAA,AAAAA,kEAAA,WAAAI,oBAAAC,sBAAAC;AAAA,AAAA,OAAAC,2BAAAF,sBAAA;;;wGADCT,QAAIC,WAAOC,UAAMC,rIAClB,AAAAS,gDAAA,6FAAAN;qDADCN,QAAIC,WAAOC,UAAMC,lFAClB,AAAA,YAAAC,8EAAAE;;;AAAAF;;qDADCJ,IAAIC,OAAOC,MAAMC,tEAClB,YAAAC,8DAAA;;;AAbH,AAAA,oDAAA,pDAAMN;;AAAN,AAmBA;;;;;;;;;;;;gCAAA,hCAAMoB,wEAWHlB;AAXH,AAYE,OAACc,uDAAc,AAACK,uDAAYnB","names":["var_args","G__40546","devtools.toolbox\/envelope","js\/Error","obj","header","style","tag","devtools.toolbox\/t_devtools$toolbox40547","_40549","meta40548","cljs.core\/PROTOCOL_SENTINEL","this__36169__auto__","writer__36170__auto__","opt__36171__auto__","cljs.core\/-write","devtools.toolbox\/->t_devtools$toolbox40547","_","devtools.formatters.templating\/render-markup","cljs.core\/fn?","devtools.formatters.markup\/<body>","devtools.formatters.markup\/<standard-body-reference>","devtools.toolbox\/force-format","devtools.formatters.markup\/<surrogate>"]}
|
||||
@@ -0,0 +1,248 @@
|
||||
(ns devtools.util
|
||||
(:require-macros [devtools.oops :refer [oget ocall oset unchecked-aget unchecked-aset]]
|
||||
[devtools.compiler :refer [check-compiler-options!]])
|
||||
(:require [goog.userAgent :as ua]
|
||||
[clojure.data :as data]
|
||||
[devtools.version :refer [get-current-version]]
|
||||
[devtools.context :as context]
|
||||
[cljs.pprint :as cljs-pprint]
|
||||
[devtools.prefs :as prefs]))
|
||||
|
||||
; cljs.pprint does not play well in advanced mode :optimizations, see https://github.com/binaryage/cljs-devtools/issues/37
|
||||
(check-compiler-options!)
|
||||
|
||||
(def lib-info-style "color:black;font-weight:bold;")
|
||||
(def reset-style "color:black")
|
||||
(def advanced-build-explanation-url
|
||||
"https://github.com/binaryage/cljs-devtools/blob/master/docs/faq.md#why-custom-formatters-do-not-work-for-advanced-builds")
|
||||
|
||||
(def ^:dynamic *custom-formatters-active* false)
|
||||
(def ^:dynamic *console-open* false)
|
||||
(def ^:dynamic *custom-formatters-warning-reported* false)
|
||||
|
||||
; -- general helpers --------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn pprint-str [& args]
|
||||
(with-out-str
|
||||
(binding [*print-level* 300]
|
||||
(apply cljs-pprint/pprint args))))
|
||||
|
||||
; -- version helpers --------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn ^:dynamic make-version-info []
|
||||
(str (get-current-version)))
|
||||
|
||||
(defn ^:dynamic make-lib-info []
|
||||
(str "CLJS DevTools " (make-version-info)))
|
||||
|
||||
(defn get-lib-info []
|
||||
(make-lib-info))
|
||||
|
||||
; -- node.js support --------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn ^:dynamic get-node-info [root]
|
||||
(try
|
||||
(let [process (oget root "process")
|
||||
version (oget process "version")
|
||||
platform (oget process "platform")]
|
||||
(if (and version platform)
|
||||
{:version version
|
||||
:platform platform}))
|
||||
(catch :default _
|
||||
nil)))
|
||||
|
||||
(defn ^:dynamic get-node-description [node-info]
|
||||
(str (or (:platform node-info) "?") "/" (or (:version node-info) "?")))
|
||||
|
||||
(defn ^:dynamic in-node-context? []
|
||||
(some? (get-node-info (context/get-root))))
|
||||
|
||||
; -- javascript context utils -----------------------------------------------------------------------------------------------
|
||||
|
||||
(defn ^:dynamic get-js-context-description []
|
||||
(if-let [node-info (get-node-info (context/get-root))]
|
||||
(str "node/" (get-node-description node-info))
|
||||
(let [user-agent (ua/getUserAgentString)]
|
||||
(if (empty? user-agent)
|
||||
"<unknown context>"
|
||||
user-agent))))
|
||||
|
||||
; -- message formatters -----------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn ^:dynamic unknown-feature-msg [feature known-features lib-info]
|
||||
(str "No such feature " feature " is currently available in " lib-info ". "
|
||||
"The list of supported features is " (pr-str known-features) "."))
|
||||
|
||||
(defn ^:dynamic feature-not-available-msg [feature]
|
||||
(str "Feature " feature " cannot be installed. "
|
||||
"Unsupported Javascript context: " (get-js-context-description) "."))
|
||||
|
||||
(defn ^:dynamic custom-formatters-not-active-msg []
|
||||
(str "CLJS DevTools: some custom formatters were not rendered.\n"
|
||||
"https://github.com/binaryage/cljs-devtools/blob/master/docs/faq.md#why-some-custom-formatters-were-not-rendered"))
|
||||
|
||||
; -- devtools formatters access ---------------------------------------------------------------------------------------------
|
||||
|
||||
(def formatter-key "devtoolsFormatters")
|
||||
|
||||
(defn get-formatters-safe []
|
||||
(let [formatters (unchecked-aget (context/get-root) formatter-key)]
|
||||
(if (array? formatters) ; TODO: maybe issue a warning if formatters are anything else than array or nil
|
||||
formatters
|
||||
#js [])))
|
||||
|
||||
(defn set-formatters-safe! [new-formatters]
|
||||
{:pre [(or (nil? new-formatters) (array? new-formatters))]}
|
||||
(unchecked-aset (context/get-root) formatter-key (if (empty? new-formatters) nil new-formatters)))
|
||||
|
||||
(defn print-config-overrides-if-requested! [msg]
|
||||
(when (prefs/pref :print-config-overrides)
|
||||
(let [diff (second (data/diff @prefs/default-config (prefs/get-prefs)))]
|
||||
(if-not (empty? diff)
|
||||
(.info (context/get-console) msg (pprint-str diff))))))
|
||||
|
||||
; -- custom formatters detection --------------------------------------------------------------------------------------------
|
||||
|
||||
(deftype CustomFormattersDetector [])
|
||||
|
||||
; https://github.com/binaryage/cljs-devtools/issues/16
|
||||
(defn make-detector []
|
||||
(let [detector (CustomFormattersDetector.)]
|
||||
(unchecked-aset detector "header" (fn [_object _config]
|
||||
(set! *custom-formatters-active* true)
|
||||
nil))
|
||||
(unchecked-aset detector "hasBody" (constantly false))
|
||||
(unchecked-aset detector "body" (constantly nil))
|
||||
detector))
|
||||
|
||||
(defn install-detector! [detector]
|
||||
(let [formatters (get-formatters-safe)]
|
||||
(.push formatters detector)
|
||||
(set-formatters-safe! formatters)))
|
||||
|
||||
(defn uninstall-detector! [detector]
|
||||
; play it safe here, this method is called asynchronously
|
||||
; in theory someone else could have installed additional custom formatters
|
||||
; we have to be careful removing only ours formatters
|
||||
(let [current-formatters (unchecked-aget (context/get-root) formatter-key)]
|
||||
(if (array? current-formatters)
|
||||
(let [new-formatters (.filter current-formatters #(not (= detector %)))]
|
||||
(set-formatters-safe! new-formatters)))))
|
||||
|
||||
(defn check-custom-formatters-active! []
|
||||
(if (and *console-open* (not *custom-formatters-active*))
|
||||
(when-not *custom-formatters-warning-reported*
|
||||
(set! *custom-formatters-warning-reported* true)
|
||||
(.warn (context/get-console) (custom-formatters-not-active-msg)))))
|
||||
|
||||
(defn uninstall-detector-and-check-custom-formatters-active! [detector]
|
||||
(uninstall-detector! detector)
|
||||
(check-custom-formatters-active!))
|
||||
|
||||
; a variation of http://stackoverflow.com/a/30638226/84283
|
||||
(defn make-detection-printer []
|
||||
(let [f (fn [])]
|
||||
(oset f ["toString"] (fn []
|
||||
(set! *console-open* true)
|
||||
(js/setTimeout check-custom-formatters-active! 0) ; console is being opened, schedule another check
|
||||
""))
|
||||
f))
|
||||
|
||||
(defn wrap-with-custom-formatter-detection! [f]
|
||||
(if-not (prefs/pref :dont-detect-custom-formatters)
|
||||
(let [detector (make-detector)]
|
||||
; this is a tricky business here
|
||||
; we cannot ask DevTools if custom formatters are available and/or enabled
|
||||
; we abuse the fact that we are printing info banner upon cljs-devtools installation anyways
|
||||
; we install a special CustomFormattersDetector formatter which just records calls to it
|
||||
; but does not format anything, it skips the opportunity to format the output so it has no visual effect
|
||||
; this way we are able to detect if custom formatters are active and record it in *custom-formatters-active*
|
||||
; but this technique does not work when printing happens when DevTools console is closed
|
||||
; we have to add another system for detection of when console opens and re-detect custom formatters with opened console
|
||||
(install-detector! detector)
|
||||
(f "%c%s" "color:transparent" (make-detection-printer))
|
||||
; note that custom formatters are applied asynchronously
|
||||
; we have to uninstall our detector a bit later
|
||||
(js/setTimeout (partial uninstall-detector-and-check-custom-formatters-active! detector) 0))
|
||||
(f)))
|
||||
|
||||
; -- banner -----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn feature-for-display [installed-features feature]
|
||||
(let [color (if (some #{feature} installed-features) "color:#0000ff" "color:#ccc")]
|
||||
["%c%s" [color (str feature)]]))
|
||||
|
||||
(defn feature-list-display [installed-features feature-groups]
|
||||
(let [labels (map (partial feature-for-display installed-features) (:all feature-groups))
|
||||
* (fn [accum val]
|
||||
[(str (first accum) " " (first val))
|
||||
(concat (second accum) (second val))])]
|
||||
(reduce * (first labels) (rest labels))))
|
||||
|
||||
(defn display-banner! [installed-features feature-groups fmt & params]
|
||||
(let [[fmt-str fmt-params] (feature-list-display installed-features feature-groups)]
|
||||
(wrap-with-custom-formatter-detection! (fn [add-fmt & add-args]
|
||||
(let [items (concat [(str fmt " " fmt-str add-fmt)] params fmt-params add-args)
|
||||
console (context/get-console)]
|
||||
(.apply (.-info console) console (into-array items)))))))
|
||||
|
||||
(defn display-banner-if-needed! [features-to-install feature-groups]
|
||||
(if-not (prefs/pref :dont-display-banner)
|
||||
(do
|
||||
(let [banner (str "Installing %c%s%c and enabling features")]
|
||||
(display-banner! features-to-install feature-groups banner lib-info-style (get-lib-info) reset-style)))
|
||||
; detection cannot be performed if we are not allowed to print something to console => assume active
|
||||
(set! *custom-formatters-active* true)))
|
||||
|
||||
; -- unknown features -------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn report-unknown-features! [features known-features]
|
||||
(let [lib-info (get-lib-info)]
|
||||
(doseq [feature features]
|
||||
(if-not (some #{feature} known-features)
|
||||
(.warn (context/get-console) (unknown-feature-msg feature known-features lib-info))))))
|
||||
|
||||
(defn is-known-feature? [known-features feature]
|
||||
(boolean (some #{feature} known-features)))
|
||||
|
||||
(defn convert-legacy-feature [feature]
|
||||
(case feature
|
||||
:custom-formatters :formatters
|
||||
:sanity-hints :hints
|
||||
feature))
|
||||
|
||||
(defn convert-legacy-features [features]
|
||||
(map convert-legacy-feature features))
|
||||
|
||||
(defn sanititze-features! [features feature-groups]
|
||||
(let [known-features (:all feature-groups)
|
||||
features (convert-legacy-features features)] ; new feature names were introduced in v0.8
|
||||
(report-unknown-features! features known-features)
|
||||
(filter (partial is-known-feature? known-features) features)))
|
||||
|
||||
(defn resolve-features! [features-desc feature-groups]
|
||||
(let [features (cond
|
||||
(and (keyword? features-desc) (features-desc feature-groups)) (features-desc feature-groups)
|
||||
(nil? features-desc) (:default feature-groups)
|
||||
(seqable? features-desc) features-desc
|
||||
:else [features-desc])]
|
||||
(sanititze-features! features feature-groups)))
|
||||
|
||||
; -- advanced mode check ----------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn under-advanced-build? []
|
||||
(if-not (prefs/pref :disable-advanced-mode-check)
|
||||
(nil? (oget (context/get-root) "devtools" "version")))) ; we rely on the fact that under advanced mode the namespace will be renamed
|
||||
|
||||
(defn display-advanced-build-warning-if-needed! []
|
||||
(if-not (prefs/pref :dont-display-advanced-build-warning)
|
||||
(let [banner (str "%cNOT%c installing %c%s%c under advanced build. See " advanced-build-explanation-url ".")]
|
||||
(.warn (context/get-console) banner "font-weight:bold" reset-style lib-info-style (get-lib-info) reset-style))))
|
||||
|
||||
; -- installer --------------------------------------------------------------------------------------------------------------
|
||||
|
||||
(defn install-feature! [feature features-to-install available-fn install-fn]
|
||||
(if (some #{feature} features-to-install)
|
||||
(if (or (prefs/pref :bypass-availability-checks) (available-fn feature))
|
||||
(install-fn)
|
||||
(.warn (context/get-console) (feature-not-available-msg feature)))))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {goog {string {StringBuffer {prototype {append {}}}}}, Error {}, setTimeout {}}, :use-macros {get-current-version devtools.version, oset devtools.oops, oget devtools.oops, check-compiler-options! devtools.compiler, unchecked-aset devtools.oops, unchecked-aget devtools.oops, ocall devtools.oops}, :excludes #{}, :name devtools.util, :imports nil, :requires {prefs devtools.prefs, data clojure.data, devtools.version devtools.version, goog.userAgent goog.userAgent, cljs.pprint cljs.pprint, ua goog.userAgent, devtools.context devtools.context, cljs-pprint cljs.pprint, clojure.data clojure.data, context devtools.context, devtools.prefs devtools.prefs}, :cljs.spec/speced-vars [], :uses {get-current-version devtools.version}, :defs {lib-info-style {:name devtools.util/lib-info-style, :file "target/cljsbuild/public/js/out/devtools/util.cljs", :line 14, :column 1, :end-line 14, :end-column 20, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/util.cljs", :line 14, :column 6, :end-line 14, :end-column 20}, :tag string}, under-advanced-build? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/util.cljs", :line 233, :column 7, :end-line 233, :end-column 28, :arglists (quote ([]))}, :name devtools.util/under-advanced-build?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/util.cljs", :end-column 28, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 233, :end-line 233, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, convert-legacy-feature {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/util.cljs", :line 208, :column 7, :end-line 208, :end-column 29, :arglists (quote ([feature]))}, :name devtools.util/convert-legacy-feature, :variadic false, :file "target/cljsbuild/public/js/out/devtools/util.cljs", :end-column 29, :method-params ([feature]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 208, :end-line 208, :max-fixed-arity 1, :fn-var true, :arglists (quote ([feature]))}, advanced-build-explanation-url {:name devtools.util/advanced-build-explanation-url, :file "target/cljsbuild/public/js/out/devtools/util.cljs", :line 16, :column 1, :end-line 16, :end-column 36, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/util.cljs", :line 16, :column 6, :end-line 16, :end-column 36}, :tag string}, in-node-context? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/util.cljs", :line 57, :column 17, :end-line 57, :end-column 33, :dynamic true, :arglists (quote ([]))}, :name devtools.util/in-node-context?, :variadic false, :file "target/cljsbuild/public/js/out/devtools/util.cljs", :end-column 33, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :dynamic true, :line 57, :end-line 57, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, display-banner-if-needed! {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/util.cljs", :line 189, :column 7, :end-line 189, :end-column 32, :arglists (quote ([features-to-install feature-groups]))}, :name devtools.util/display-banner-if-needed!, :variadic false, :file "target/cljsbuild/public/js/out/devtools/util.cljs", :end-column 32, :method-params ([features-to-install feature-groups]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 189, :end-line 189, :max-fixed-arity 2, :fn-var true, :arglists (quote ([features-to-install feature-groups]))}, CustomFormattersDetector {:num-fields 0, :protocols #{}, :name devtools.util/CustomFormattersDetector, :file "target/cljsbuild/public/js/out/devtools/util.cljs", :end-column 34, :type true, :column 10, :line 106, :record false, :end-line 106, :skip-protocol-flag nil}, make-version-info {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/util.cljs", :line 32, :column 17, :end-line 32, :end-column 34, :dynamic true, :arglists (quote ([]))}, :name devtools.util/make-version-info, :variadic false, :file "target/cljsbuild/public/js/out/devtools/util.cljs", :end-column 34, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :dynamic true, :line 32, :end-line 32, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}, *console-open* {:name devtools.util/*console-open*, :file "target/cljsbuild/public/js/out/devtools/util.cljs", :line 20, :column 1, :end-line 20, :end-column 30, :dynamic true, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/util.cljs", :line 20, :column 16, :end-line 20, :end-column 30, :dynamic true}, :tag boolean}, *custom-formatters-active* {:name devtools.util/*custom-formatters-active*, :file "target/cljsbuild/public/js/out/devtools/util.cljs", :line 19, :coLine truncated
|
||||
@@ -0,0 +1,503 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.util');
|
||||
goog.require('cljs.core');
|
||||
goog.require('goog.userAgent');
|
||||
goog.require('clojure.data');
|
||||
goog.require('devtools.version');
|
||||
goog.require('devtools.context');
|
||||
goog.require('cljs.pprint');
|
||||
goog.require('devtools.prefs');
|
||||
devtools.util.lib_info_style = "color:black;font-weight:bold;";
|
||||
devtools.util.reset_style = "color:black";
|
||||
devtools.util.advanced_build_explanation_url = "https://github.com/binaryage/cljs-devtools/blob/master/docs/faq.md#why-custom-formatters-do-not-work-for-advanced-builds";
|
||||
devtools.util._STAR_custom_formatters_active_STAR_ = false;
|
||||
devtools.util._STAR_console_open_STAR_ = false;
|
||||
devtools.util._STAR_custom_formatters_warning_reported_STAR_ = false;
|
||||
devtools.util.pprint_str = (function devtools$util$pprint_str(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___40188 = arguments.length;
|
||||
var i__36778__auto___40189 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___40189 < len__36777__auto___40188)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___40189]));
|
||||
|
||||
var G__40190 = (i__36778__auto___40189 + (1));
|
||||
i__36778__auto___40189 = G__40190;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((0) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.util.pprint_str.cljs$core$IFn$_invoke$arity$variadic(argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.util.pprint_str.cljs$core$IFn$_invoke$arity$variadic = (function (args){
|
||||
var sb__36625__auto__ = (new goog.string.StringBuffer());
|
||||
var _STAR_print_newline_STAR_40185_40191 = cljs.core._STAR_print_newline_STAR_;
|
||||
var _STAR_print_fn_STAR_40186_40192 = cljs.core._STAR_print_fn_STAR_;
|
||||
cljs.core._STAR_print_newline_STAR_ = true;
|
||||
|
||||
cljs.core._STAR_print_fn_STAR_ = ((function (_STAR_print_newline_STAR_40185_40191,_STAR_print_fn_STAR_40186_40192,sb__36625__auto__){
|
||||
return (function (x__36626__auto__){
|
||||
return sb__36625__auto__.append(x__36626__auto__);
|
||||
});})(_STAR_print_newline_STAR_40185_40191,_STAR_print_fn_STAR_40186_40192,sb__36625__auto__))
|
||||
;
|
||||
|
||||
try{var _STAR_print_level_STAR_40187_40193 = cljs.core._STAR_print_level_STAR_;
|
||||
cljs.core._STAR_print_level_STAR_ = (300);
|
||||
|
||||
try{cljs.core.apply.call(null,cljs.pprint.pprint,args);
|
||||
}finally {cljs.core._STAR_print_level_STAR_ = _STAR_print_level_STAR_40187_40193;
|
||||
}}finally {cljs.core._STAR_print_fn_STAR_ = _STAR_print_fn_STAR_40186_40192;
|
||||
|
||||
cljs.core._STAR_print_newline_STAR_ = _STAR_print_newline_STAR_40185_40191;
|
||||
}
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(sb__36625__auto__)].join('');
|
||||
});
|
||||
|
||||
devtools.util.pprint_str.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
devtools.util.pprint_str.cljs$lang$applyTo = (function (seq40184){
|
||||
return devtools.util.pprint_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq40184));
|
||||
});
|
||||
|
||||
devtools.util.make_version_info = (function devtools$util$make_version_info(){
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1("0.9.8")].join('');
|
||||
});
|
||||
devtools.util.make_lib_info = (function devtools$util$make_lib_info(){
|
||||
return ["CLJS DevTools ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.make_version_info.call(null))].join('');
|
||||
});
|
||||
devtools.util.get_lib_info = (function devtools$util$get_lib_info(){
|
||||
return devtools.util.make_lib_info.call(null);
|
||||
});
|
||||
devtools.util.get_node_info = (function devtools$util$get_node_info(root){
|
||||
try{var process = (root["process"]);
|
||||
var version = (process["version"]);
|
||||
var platform = (process["platform"]);
|
||||
if(cljs.core.truth_((function (){var and__35486__auto__ = version;
|
||||
if(cljs.core.truth_(and__35486__auto__)){
|
||||
return platform;
|
||||
} else {
|
||||
return and__35486__auto__;
|
||||
}
|
||||
})())){
|
||||
return new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"version","version",425292698),version,new cljs.core.Keyword(null,"platform","platform",-1086422114),platform], null);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}catch (e40194){var _ = e40194;
|
||||
return null;
|
||||
}});
|
||||
devtools.util.get_node_description = (function devtools$util$get_node_description(node_info){
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1((function (){var or__35498__auto__ = new cljs.core.Keyword(null,"platform","platform",-1086422114).cljs$core$IFn$_invoke$arity$1(node_info);
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return "?";
|
||||
}
|
||||
})()),"/",cljs.core.str.cljs$core$IFn$_invoke$arity$1((function (){var or__35498__auto__ = new cljs.core.Keyword(null,"version","version",425292698).cljs$core$IFn$_invoke$arity$1(node_info);
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return "?";
|
||||
}
|
||||
})())].join('');
|
||||
});
|
||||
devtools.util.in_node_context_QMARK_ = (function devtools$util$in_node_context_QMARK_(){
|
||||
return !((devtools.util.get_node_info.call(null,devtools.context.get_root.call(null)) == null));
|
||||
});
|
||||
devtools.util.get_js_context_description = (function devtools$util$get_js_context_description(){
|
||||
var temp__5455__auto__ = devtools.util.get_node_info.call(null,devtools.context.get_root.call(null));
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var node_info = temp__5455__auto__;
|
||||
return ["node/",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.get_node_description.call(null,node_info))].join('');
|
||||
} else {
|
||||
var user_agent = goog.userAgent.getUserAgentString();
|
||||
if(cljs.core.empty_QMARK_.call(null,user_agent)){
|
||||
return "<unknown context>";
|
||||
} else {
|
||||
return user_agent;
|
||||
}
|
||||
}
|
||||
});
|
||||
devtools.util.unknown_feature_msg = (function devtools$util$unknown_feature_msg(feature,known_features,lib_info){
|
||||
return ["No such feature ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(feature)," is currently available in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(lib_info),". ","The list of supported features is ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.pr_str.call(null,known_features)),"."].join('');
|
||||
});
|
||||
devtools.util.feature_not_available_msg = (function devtools$util$feature_not_available_msg(feature){
|
||||
return ["Feature ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(feature)," cannot be installed. ","Unsupported Javascript context: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.get_js_context_description.call(null)),"."].join('');
|
||||
});
|
||||
devtools.util.custom_formatters_not_active_msg = (function devtools$util$custom_formatters_not_active_msg(){
|
||||
return ["CLJS DevTools: some custom formatters were not rendered.\n","https://github.com/binaryage/cljs-devtools/blob/master/docs/faq.md#why-some-custom-formatters-were-not-rendered"].join('');
|
||||
});
|
||||
devtools.util.formatter_key = "devtoolsFormatters";
|
||||
devtools.util.get_formatters_safe = (function devtools$util$get_formatters_safe(){
|
||||
var formatters = (devtools.context.get_root.call(null)[devtools.util.formatter_key]);
|
||||
if(cljs.core.array_QMARK_.call(null,formatters)){
|
||||
return formatters;
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
});
|
||||
devtools.util.set_formatters_safe_BANG_ = (function devtools$util$set_formatters_safe_BANG_(new_formatters){
|
||||
if(((new_formatters == null)) || (cljs.core.array_QMARK_.call(null,new_formatters))){
|
||||
} else {
|
||||
throw (new Error("Assert failed: (or (nil? new-formatters) (array? new-formatters))"));
|
||||
}
|
||||
|
||||
return (devtools.context.get_root.call(null)[devtools.util.formatter_key] = ((cljs.core.empty_QMARK_.call(null,new_formatters))?null:new_formatters));
|
||||
});
|
||||
devtools.util.print_config_overrides_if_requested_BANG_ = (function devtools$util$print_config_overrides_if_requested_BANG_(msg){
|
||||
if(cljs.core.truth_(devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"print-config-overrides","print-config-overrides",-274716965)))){
|
||||
var diff = cljs.core.second.call(null,clojure.data.diff.call(null,cljs.core.deref.call(null,devtools.prefs.default_config),devtools.prefs.get_prefs.call(null)));
|
||||
if(!(cljs.core.empty_QMARK_.call(null,diff))){
|
||||
return devtools.context.get_console.call(null).info(msg,devtools.util.pprint_str.call(null,diff));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
devtools.util.CustomFormattersDetector = (function (){
|
||||
});
|
||||
|
||||
devtools.util.CustomFormattersDetector.getBasis = (function (){
|
||||
return cljs.core.PersistentVector.EMPTY;
|
||||
});
|
||||
|
||||
devtools.util.CustomFormattersDetector.cljs$lang$type = true;
|
||||
|
||||
devtools.util.CustomFormattersDetector.cljs$lang$ctorStr = "devtools.util/CustomFormattersDetector";
|
||||
|
||||
devtools.util.CustomFormattersDetector.cljs$lang$ctorPrWriter = (function (this__36169__auto__,writer__36170__auto__,opt__36171__auto__){
|
||||
return cljs.core._write.call(null,writer__36170__auto__,"devtools.util/CustomFormattersDetector");
|
||||
});
|
||||
|
||||
devtools.util.__GT_CustomFormattersDetector = (function devtools$util$__GT_CustomFormattersDetector(){
|
||||
return (new devtools.util.CustomFormattersDetector());
|
||||
});
|
||||
|
||||
devtools.util.make_detector = (function devtools$util$make_detector(){
|
||||
var detector = (new devtools.util.CustomFormattersDetector());
|
||||
(detector["header"] = ((function (detector){
|
||||
return (function (_object,_config){
|
||||
devtools.util._STAR_custom_formatters_active_STAR_ = true;
|
||||
|
||||
return null;
|
||||
});})(detector))
|
||||
);
|
||||
|
||||
(detector["hasBody"] = cljs.core.constantly.call(null,false));
|
||||
|
||||
(detector["body"] = cljs.core.constantly.call(null,null));
|
||||
|
||||
return detector;
|
||||
});
|
||||
devtools.util.install_detector_BANG_ = (function devtools$util$install_detector_BANG_(detector){
|
||||
var formatters = devtools.util.get_formatters_safe.call(null);
|
||||
formatters.push(detector);
|
||||
|
||||
return devtools.util.set_formatters_safe_BANG_.call(null,formatters);
|
||||
});
|
||||
devtools.util.uninstall_detector_BANG_ = (function devtools$util$uninstall_detector_BANG_(detector){
|
||||
var current_formatters = (devtools.context.get_root.call(null)[devtools.util.formatter_key]);
|
||||
if(cljs.core.array_QMARK_.call(null,current_formatters)){
|
||||
var new_formatters = current_formatters.filter(((function (current_formatters){
|
||||
return (function (p1__40195_SHARP_){
|
||||
return !(cljs.core._EQ_.call(null,detector,p1__40195_SHARP_));
|
||||
});})(current_formatters))
|
||||
);
|
||||
return devtools.util.set_formatters_safe_BANG_.call(null,new_formatters);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
devtools.util.check_custom_formatters_active_BANG_ = (function devtools$util$check_custom_formatters_active_BANG_(){
|
||||
if((devtools.util._STAR_console_open_STAR_) && (!(devtools.util._STAR_custom_formatters_active_STAR_))){
|
||||
if(devtools.util._STAR_custom_formatters_warning_reported_STAR_){
|
||||
return null;
|
||||
} else {
|
||||
devtools.util._STAR_custom_formatters_warning_reported_STAR_ = true;
|
||||
|
||||
return devtools.context.get_console.call(null).warn(devtools.util.custom_formatters_not_active_msg.call(null));
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
devtools.util.uninstall_detector_and_check_custom_formatters_active_BANG_ = (function devtools$util$uninstall_detector_and_check_custom_formatters_active_BANG_(detector){
|
||||
devtools.util.uninstall_detector_BANG_.call(null,detector);
|
||||
|
||||
return devtools.util.check_custom_formatters_active_BANG_.call(null);
|
||||
});
|
||||
devtools.util.make_detection_printer = (function devtools$util$make_detection_printer(){
|
||||
var f = (function (){
|
||||
return null;
|
||||
});
|
||||
var G__40196_40197 = f;
|
||||
var target__38002__auto___40198 = G__40196_40197;
|
||||
if(cljs.core.truth_(target__38002__auto___40198)){
|
||||
} else {
|
||||
throw (new Error(["Assert failed: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(["unable to locate object path ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(null)," in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__40196_40197)].join('')),"\n","target__38002__auto__"].join('')));
|
||||
}
|
||||
|
||||
(target__38002__auto___40198["toString"] = ((function (G__40196_40197,target__38002__auto___40198,f){
|
||||
return (function (){
|
||||
devtools.util._STAR_console_open_STAR_ = true;
|
||||
|
||||
setTimeout(devtools.util.check_custom_formatters_active_BANG_,(0));
|
||||
|
||||
return "";
|
||||
});})(G__40196_40197,target__38002__auto___40198,f))
|
||||
);
|
||||
|
||||
|
||||
return f;
|
||||
});
|
||||
devtools.util.wrap_with_custom_formatter_detection_BANG_ = (function devtools$util$wrap_with_custom_formatter_detection_BANG_(f){
|
||||
if(cljs.core.not.call(null,devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"dont-detect-custom-formatters","dont-detect-custom-formatters",-29005804)))){
|
||||
var detector = devtools.util.make_detector.call(null);
|
||||
devtools.util.install_detector_BANG_.call(null,detector);
|
||||
|
||||
f.call(null,"%c%s","color:transparent",devtools.util.make_detection_printer.call(null));
|
||||
|
||||
return setTimeout(cljs.core.partial.call(null,devtools.util.uninstall_detector_and_check_custom_formatters_active_BANG_,detector),(0));
|
||||
} else {
|
||||
return f.call(null);
|
||||
}
|
||||
});
|
||||
devtools.util.feature_for_display = (function devtools$util$feature_for_display(installed_features,feature){
|
||||
var color = (cljs.core.truth_(cljs.core.some.call(null,cljs.core.PersistentHashSet.createAsIfByAssoc([feature]),installed_features))?"color:#0000ff":"color:#ccc");
|
||||
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, ["%c%s",new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [color,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(feature)].join('')], null)], null);
|
||||
});
|
||||
devtools.util.feature_list_display = (function devtools$util$feature_list_display(installed_features,feature_groups){
|
||||
var labels = cljs.core.map.call(null,cljs.core.partial.call(null,devtools.util.feature_for_display,installed_features),new cljs.core.Keyword(null,"all","all",892129742).cljs$core$IFn$_invoke$arity$1(feature_groups));
|
||||
var _STAR_ = ((function (labels){
|
||||
return (function (accum,val){
|
||||
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [[cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.first.call(null,accum))," ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.first.call(null,val))].join(''),cljs.core.concat.call(null,cljs.core.second.call(null,accum),cljs.core.second.call(null,val))], null);
|
||||
});})(labels))
|
||||
;
|
||||
return cljs.core.reduce.call(null,_STAR_,cljs.core.first.call(null,labels),cljs.core.rest.call(null,labels));
|
||||
});
|
||||
devtools.util.display_banner_BANG_ = (function devtools$util$display_banner_BANG_(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___40206 = arguments.length;
|
||||
var i__36778__auto___40207 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___40207 < len__36777__auto___40206)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___40207]));
|
||||
|
||||
var G__40208 = (i__36778__auto___40207 + (1));
|
||||
i__36778__auto___40207 = G__40208;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((3) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((3)),(0),null)):null);
|
||||
return devtools.util.display_banner_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),argseq__36785__auto__);
|
||||
});
|
||||
|
||||
devtools.util.display_banner_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (installed_features,feature_groups,fmt,params){
|
||||
var vec__40203 = devtools.util.feature_list_display.call(null,installed_features,feature_groups);
|
||||
var fmt_str = cljs.core.nth.call(null,vec__40203,(0),null);
|
||||
var fmt_params = cljs.core.nth.call(null,vec__40203,(1),null);
|
||||
return devtools.util.wrap_with_custom_formatter_detection_BANG_.call(null,((function (vec__40203,fmt_str,fmt_params){
|
||||
return (function() {
|
||||
var G__40209__delegate = function (add_fmt,add_args){
|
||||
var items = cljs.core.concat.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [[cljs.core.str.cljs$core$IFn$_invoke$arity$1(fmt)," ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(fmt_str),cljs.core.str.cljs$core$IFn$_invoke$arity$1(add_fmt)].join('')], null),params,fmt_params,add_args);
|
||||
var console = devtools.context.get_console.call(null);
|
||||
return console.info.apply(console,cljs.core.into_array.call(null,items));
|
||||
};
|
||||
var G__40209 = function (add_fmt,var_args){
|
||||
var add_args = null;
|
||||
if (arguments.length > 1) {
|
||||
var G__40210__i = 0, G__40210__a = new Array(arguments.length - 1);
|
||||
while (G__40210__i < G__40210__a.length) {G__40210__a[G__40210__i] = arguments[G__40210__i + 1]; ++G__40210__i;}
|
||||
add_args = new cljs.core.IndexedSeq(G__40210__a,0,null);
|
||||
}
|
||||
return G__40209__delegate.call(this,add_fmt,add_args);};
|
||||
G__40209.cljs$lang$maxFixedArity = 1;
|
||||
G__40209.cljs$lang$applyTo = (function (arglist__40211){
|
||||
var add_fmt = cljs.core.first(arglist__40211);
|
||||
var add_args = cljs.core.rest(arglist__40211);
|
||||
return G__40209__delegate(add_fmt,add_args);
|
||||
});
|
||||
G__40209.cljs$core$IFn$_invoke$arity$variadic = G__40209__delegate;
|
||||
return G__40209;
|
||||
})()
|
||||
;})(vec__40203,fmt_str,fmt_params))
|
||||
);
|
||||
});
|
||||
|
||||
devtools.util.display_banner_BANG_.cljs$lang$maxFixedArity = (3);
|
||||
|
||||
devtools.util.display_banner_BANG_.cljs$lang$applyTo = (function (seq40199){
|
||||
var G__40200 = cljs.core.first.call(null,seq40199);
|
||||
var seq40199__$1 = cljs.core.next.call(null,seq40199);
|
||||
var G__40201 = cljs.core.first.call(null,seq40199__$1);
|
||||
var seq40199__$2 = cljs.core.next.call(null,seq40199__$1);
|
||||
var G__40202 = cljs.core.first.call(null,seq40199__$2);
|
||||
var seq40199__$3 = cljs.core.next.call(null,seq40199__$2);
|
||||
return devtools.util.display_banner_BANG_.cljs$core$IFn$_invoke$arity$variadic(G__40200,G__40201,G__40202,seq40199__$3);
|
||||
});
|
||||
|
||||
devtools.util.display_banner_if_needed_BANG_ = (function devtools$util$display_banner_if_needed_BANG_(features_to_install,feature_groups){
|
||||
if(cljs.core.not.call(null,devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"dont-display-banner","dont-display-banner",-1175550370)))){
|
||||
var banner = ["Installing %c%s%c and enabling features"].join('');
|
||||
return devtools.util.display_banner_BANG_.call(null,features_to_install,feature_groups,banner,devtools.util.lib_info_style,devtools.util.get_lib_info.call(null),devtools.util.reset_style);
|
||||
} else {
|
||||
return devtools.util._STAR_custom_formatters_active_STAR_ = true;
|
||||
}
|
||||
});
|
||||
devtools.util.report_unknown_features_BANG_ = (function devtools$util$report_unknown_features_BANG_(features,known_features){
|
||||
var lib_info = devtools.util.get_lib_info.call(null);
|
||||
var seq__40212 = cljs.core.seq.call(null,features);
|
||||
var chunk__40213 = null;
|
||||
var count__40214 = (0);
|
||||
var i__40215 = (0);
|
||||
while(true){
|
||||
if((i__40215 < count__40214)){
|
||||
var feature = cljs.core._nth.call(null,chunk__40213,i__40215);
|
||||
if(cljs.core.not.call(null,cljs.core.some.call(null,cljs.core.PersistentHashSet.createAsIfByAssoc([feature]),known_features))){
|
||||
devtools.context.get_console.call(null).warn(devtools.util.unknown_feature_msg.call(null,feature,known_features,lib_info));
|
||||
} else {
|
||||
}
|
||||
|
||||
var G__40216 = seq__40212;
|
||||
var G__40217 = chunk__40213;
|
||||
var G__40218 = count__40214;
|
||||
var G__40219 = (i__40215 + (1));
|
||||
seq__40212 = G__40216;
|
||||
chunk__40213 = G__40217;
|
||||
count__40214 = G__40218;
|
||||
i__40215 = G__40219;
|
||||
continue;
|
||||
} else {
|
||||
var temp__5457__auto__ = cljs.core.seq.call(null,seq__40212);
|
||||
if(temp__5457__auto__){
|
||||
var seq__40212__$1 = temp__5457__auto__;
|
||||
if(cljs.core.chunked_seq_QMARK_.call(null,seq__40212__$1)){
|
||||
var c__36429__auto__ = cljs.core.chunk_first.call(null,seq__40212__$1);
|
||||
var G__40220 = cljs.core.chunk_rest.call(null,seq__40212__$1);
|
||||
var G__40221 = c__36429__auto__;
|
||||
var G__40222 = cljs.core.count.call(null,c__36429__auto__);
|
||||
var G__40223 = (0);
|
||||
seq__40212 = G__40220;
|
||||
chunk__40213 = G__40221;
|
||||
count__40214 = G__40222;
|
||||
i__40215 = G__40223;
|
||||
continue;
|
||||
} else {
|
||||
var feature = cljs.core.first.call(null,seq__40212__$1);
|
||||
if(cljs.core.not.call(null,cljs.core.some.call(null,cljs.core.PersistentHashSet.createAsIfByAssoc([feature]),known_features))){
|
||||
devtools.context.get_console.call(null).warn(devtools.util.unknown_feature_msg.call(null,feature,known_features,lib_info));
|
||||
} else {
|
||||
}
|
||||
|
||||
var G__40224 = cljs.core.next.call(null,seq__40212__$1);
|
||||
var G__40225 = null;
|
||||
var G__40226 = (0);
|
||||
var G__40227 = (0);
|
||||
seq__40212 = G__40224;
|
||||
chunk__40213 = G__40225;
|
||||
count__40214 = G__40226;
|
||||
i__40215 = G__40227;
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
devtools.util.is_known_feature_QMARK_ = (function devtools$util$is_known_feature_QMARK_(known_features,feature){
|
||||
return cljs.core.boolean$.call(null,cljs.core.some.call(null,cljs.core.PersistentHashSet.createAsIfByAssoc([feature]),known_features));
|
||||
});
|
||||
devtools.util.convert_legacy_feature = (function devtools$util$convert_legacy_feature(feature){
|
||||
var G__40228 = feature;
|
||||
var G__40228__$1 = (((G__40228 instanceof cljs.core.Keyword))?G__40228.fqn:null);
|
||||
switch (G__40228__$1) {
|
||||
case "custom-formatters":
|
||||
return new cljs.core.Keyword(null,"formatters","formatters",-1875637118);
|
||||
|
||||
break;
|
||||
case "sanity-hints":
|
||||
return new cljs.core.Keyword(null,"hints","hints",-991113151);
|
||||
|
||||
break;
|
||||
default:
|
||||
return feature;
|
||||
|
||||
}
|
||||
});
|
||||
devtools.util.convert_legacy_features = (function devtools$util$convert_legacy_features(features){
|
||||
return cljs.core.map.call(null,devtools.util.convert_legacy_feature,features);
|
||||
});
|
||||
devtools.util.sanititze_features_BANG_ = (function devtools$util$sanititze_features_BANG_(features,feature_groups){
|
||||
var known_features = new cljs.core.Keyword(null,"all","all",892129742).cljs$core$IFn$_invoke$arity$1(feature_groups);
|
||||
var features__$1 = devtools.util.convert_legacy_features.call(null,features);
|
||||
devtools.util.report_unknown_features_BANG_.call(null,features__$1,known_features);
|
||||
|
||||
return cljs.core.filter.call(null,cljs.core.partial.call(null,devtools.util.is_known_feature_QMARK_,known_features),features__$1);
|
||||
});
|
||||
devtools.util.resolve_features_BANG_ = (function devtools$util$resolve_features_BANG_(features_desc,feature_groups){
|
||||
var features = (cljs.core.truth_((function (){var and__35486__auto__ = (features_desc instanceof cljs.core.Keyword);
|
||||
if(and__35486__auto__){
|
||||
return features_desc.call(null,feature_groups);
|
||||
} else {
|
||||
return and__35486__auto__;
|
||||
}
|
||||
})())?features_desc.call(null,feature_groups):(((features_desc == null))?new cljs.core.Keyword(null,"default","default",-1987822328).cljs$core$IFn$_invoke$arity$1(feature_groups):((cljs.core.seqable_QMARK_.call(null,features_desc))?features_desc:new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [features_desc], null)
|
||||
)));
|
||||
return devtools.util.sanititze_features_BANG_.call(null,features,feature_groups);
|
||||
});
|
||||
devtools.util.under_advanced_build_QMARK_ = (function devtools$util$under_advanced_build_QMARK_(){
|
||||
if(cljs.core.not.call(null,devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"disable-advanced-mode-check","disable-advanced-mode-check",-968346539)))){
|
||||
return ((function (){var temp__5455__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var o40230 = temp__5455__auto__;
|
||||
return (o40230["version"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})() == null);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
devtools.util.display_advanced_build_warning_if_needed_BANG_ = (function devtools$util$display_advanced_build_warning_if_needed_BANG_(){
|
||||
if(cljs.core.not.call(null,devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"dont-display-advanced-build-warning","dont-display-advanced-build-warning",-91321563)))){
|
||||
var banner = ["%cNOT%c installing %c%s%c under advanced build. See ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(devtools.util.advanced_build_explanation_url),"."].join('');
|
||||
return devtools.context.get_console.call(null).warn(banner,"font-weight:bold",devtools.util.reset_style,devtools.util.lib_info_style,devtools.util.get_lib_info.call(null),devtools.util.reset_style);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
devtools.util.install_feature_BANG_ = (function devtools$util$install_feature_BANG_(feature,features_to_install,available_fn,install_fn){
|
||||
if(cljs.core.truth_(cljs.core.some.call(null,cljs.core.PersistentHashSet.createAsIfByAssoc([feature]),features_to_install))){
|
||||
if(cljs.core.truth_((function (){var or__35498__auto__ = devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"bypass-availability-checks","bypass-availability-checks",1934691680));
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return available_fn.call(null,feature);
|
||||
}
|
||||
})())){
|
||||
return install_fn.call(null);
|
||||
} else {
|
||||
return devtools.context.get_console.call(null).warn(devtools.util.feature_not_available_msg.call(null,feature));
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
//# sourceMappingURL=util.js.map?rel=1517021943943
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/util.js","sources":["util.cljs?rel=1517021943945"],"lineCount":503,"mappings":";AAAA;;;;;;;;AAWA,AAEA,+BAAA,\/BAAKA;AACL,4BAAA,5BAAKC;AACL,+CAAA,\/CAAKC;AAGL,qDAAA,rDAAeC;AACf,yCAAA,zCAAeC;AACf,+DAAA,\/DAAeC;AAIf,AAAA,2BAAA,mCAAAC,9DAAMM;AAAN,AAAA,IAAAL,sBAAA;AAAA,AAAA,IAAAC,2BAAA,AAAA;AAAA,AAAA,IAAAC,yBAAA;;AAAA,AAAA,GAAA,CAAAA,yBAAAD;AAAA,AAAA,AAAAD,yBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,yBAAA;;;;AAAA;;;;AAAA,IAAAC,wBAAA,EAAA,CAAA,MAAA,AAAAH,6BAAA,AAAA,KAAAI,qBAAA,AAAAJ,0BAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAAK,8DAAAF;;;AAAA,AAAA,AAAA,AAAAE,gEAAA,WAAoBG;AAApB,AACE,IAAAC,oBAAA,KAAAC;AAAA,AAAA,IAAAC,uCAAAC;IAAAC,kCAAAC;AAAA,AAAA,AAAAF,sCAAA;;AAAA,AAAAE,iCAAA;kBAAAC;AAAA,AAAA,OAAAN,yBAAAM;;;;AAAA,IAAA,AACE,IAAAC,qCAAUC;AAAV,AAAA,oCAAA,pCAAUA;;AAAV,IAAA,AACE,AAACC,0BAAMC,mBAAmBX;UAD5B,AAAA,oCAAAQ,pCAAUC;WADZ,AAAA,AAAAH,iCAAAD;;AAAA,AAAAD,sCAAAD;;AAAA,oDAAAF;;;AADF,AAAA,AAAAJ,mDAAA;;AAAA,AAAA,AAAAA,6CAAA,WAAAC;AAAA,AAAA,OAAAD,8DAAA,AAAAE,wBAAAD;;;AAAA,AAOA,kCAAA,lCAAgBc;AAAhB,AACE,oDAAK;;AAEP,8BAAA,9BAAgBC;AAAhB,AACE,QAAA,6DAAsB,AAACD;;AAEzB,6BAAA,7BAAME;AAAN,AACE,OAACD;;AAIH,8BAAA,9BAAgBE,oEAAeC;AAA\/B,AACE,IAAA,AACE,IAAME,UAAQ,MAAA,LAAMF;IACdG,UAAQ,SAAA,RAAMD;IACdE,WAAS,SAAA,RAAMF;AAFrB,AAGE,oBAAI,iBAAAG,qBAAKF;AAAL,AAAA,oBAAAE;AAAaD;;AAAbC;;;AAAJ,kDAAA,kEAAA,RACaF,sEACAC;;AAFb;;gBAJJ,QAAAH,JAOkBK;AAPlB,AAAA;;AAUF,qCAAA,rCAAgBC,kFAAsBC;AAAtC,AACE,oDAAK,iBAAAC,oBAAI,AAAA,4FAAWD;AAAf,AAAA,oBAAAC;AAAAA;;AAAA;;MAAL,gDAAwC,iBAAAA,oBAAI,AAAA,wFAAUD;AAAd,AAAA,oBAAAC;AAAAA;;AAAA;;;;AAE1C,uCAAA,vCAAgBC;AAAhB,AACE,SAAA,gFAAA,\/EAAO,AAACX,sCAAc,AAACY;;AAIzB,2CAAA,3CAAgBC;AAAhB,AACE,IAAAC,qBAAmB,AAACd,sCAAc,AAACY;AAAnC,AAAA,oBAAAE;AAAA,gBAAAA,ZAASL;AAAT,AACE,QAAA,oDAAa,AAACD,6CAAqBC;;AACnC,IAAMM,aAAW,AAACC;AAAlB,AACE,GAAI,AAACC,iCAAOF;AAAZ;;AAEEA;;;;AAIR,oCAAA,pCAAgBG,gFAAqBC,QAAQC,eAAeC;AAA5D,AACE,QAAA,wEAAA,oFAAA,KAAA,6HAAA,\/NAAwBF,mFAAsCE,gGACpB,AAACC,2BAAOF;;AAEpD,0CAAA,1CAAgBG,4FAA2BJ;AAA3C,AACE,QAAA,gEAAA,yBAAA,oIAAA,tKAAgBA,iHACwB,AAACN;;AAE3C,iDAAA,jDAAgBW;AAAhB,AACE,QAAA,6DAAA;;AAKF,8BAAA,9BAAKC;AAEL,oCAAA,pCAAMC;AAAN,AACE,IAAMC,aAAW,CAAgB,AAACf,qCAAkBa;AAApD,AACE,GAAI,AAACG,iCAAOD;AACVA;;AADF;;;AAIJ,0CAAA,1CAAMG,4FAAsBC;AAA5B,AAAA,GACS,CAAI,mBAAA,lBAAMA,6BAAgB,AAACH,iCAAOG;AAD3C;AAAA,AAAA,MAAA,KAAAF,MAAA;;;AAEE,QAAgB,AAACjB,qCAAkBa,+BAAc,oDAAA,lDAAI,AAACR,iCAAOc,sBAAoBA;;AAEnF,0DAAA,1DAAMC,4HAAsCC;AAA5C,AACE,oBAAM,8BAAA,9BAACC;AAAP,AACE,IAAMC,OAAK,AAACC,2BAAO,4BAAA,AAAAC,5BAACC,sDAAWC,+BAAqB,AAACC;AAArD,AACE,GAAA,EAAQ,AAACvB,iCAAOkB;AACd,OAAO,AAACM,6CAAqBR,IAAI,AAACnD,mCAAWqD;;AAD\/C;;;AAFJ;;;AAOF,AAAA;;;;;;AAAA;AAAA,AAAA,kDAAA,lDAASW;AAAT,AAAA;;;AAAA,AAAA,wDAAA,xDAASA;;AAAT,AAAA,2DAAA,3DAASA;;AAAT,AAAA,gEAAA,WAAAJ,oBAAAC,sBAAAC,rHAASE;AAAT,AAAA,OAAAD,2BAAAF,sBAAA;;;AAAA,8CAAA,9CAASI;AAAT,AAAA,YAAAD;;;AAASA,AAGT,8BAAA,9BAAME;AAAN,AACE,IAAMC,WAAS,KAAAH;AAAf,AACE,UAAA,TAAgBG,qBAAkB;kBAAKC,QAAQC;AAAb,AACE,qDAAA,rDAAM9E;;AADR;;;;AAGlC,UAAA,TAAgB4E,sBAAmB,+BAAA,\/BAACG;;AACpC,UAAA,TAAgBH,mBAAgB,+BAAA,\/BAACG;;AACjCH;;AAEJ,uCAAA,vCAAMI,sFAAmBJ;AAAzB,AACE,IAAMtB,aAAW,AAACD;AAAlB,AACE,AAAOC,gBAAWsB;;AAClB,OAACnB,kDAAqBH;;AAE1B,yCAAA,zCAAM2B,0FAAqBL;AAA3B,AAIE,IAAMM,qBAAmB,CAAgB,AAAC3C,qCAAkBa;AAA5D,AACE,GAAI,AAACG,iCAAO2B;AACV,IAAMxB,iBAAe,0BAAA,1BAASwB;kBAATC;AAAA,AAA6B,SAAK,kCAAAA,lCAACC,yBAAER;;;AAA1D,AACE,OAACnB,kDAAqBC;;AAF1B;;;AAIJ,qDAAA,rDAAM2B;AAAN,AACE,GAAI,CAAKpF,4CAAe,EAAKD;AAC3B,GAAUE;AAAV;;AAAA,AACE,+DAAA,\/DAAMA;;AACN,OAAO,AAACkE,6CAAqB,AAACjB;;;AAHlC;;;AAKF,4EAAA,5EAAMmC,gKAAwDV;AAA9D,AACE,AAACK,iDAAoBL;;AACrB,OAACS;;AAGH,uCAAA,vCAAME;AAAN,AACE,IAAMC,IAAE;AAAA,AAAA;;AAAR,AACE,IAAAC,iBAAMD;IAANE,8BAAAD;AAAA,AAAA,oBAAAC;AAAA;AAAA,AAAA,MAAA,KAAAlC,MAAA,CAAA,8DAAA,CAAA,4EAAA,MAAA,mDAAAiC,2BAAA,KAAA;;;AAAA,CAAAC,4BAAA,cAAqB;;AAAA,AACE,yCAAA,zCAAMzF;;AACN,8DAAA,9DAAC0F,WAAcN;;AAFjB;;;;AAArBI;AAIAD;;AAEJ,2DAAA,3DAAMI,8HAAuCJ;AAA7C,AACE,GAAA,AAAAK,wBAAQ,8BAAA,9BAAChC;AACP,IAAMe,WAAS,AAACD;AAAhB,AASE,AAACK,+CAAkBJ;;AACnB,YAAA,OAAA,nBAACY,uCAA6B,AAACD;;AAG\/B,kIAAA,3HAACI,WAAc,AAACG,4BAAQR,0EAAuDV;;AACjF,OAACY;;;AAIL,oCAAA,pCAAMO,gFAAqBC,mBAAmBlD;AAA9C,AACE,IAAMmD,QAAM,yHAAA,gBAAA,vHAAI,yBAAA,zBAACC,wEAAOpD,UAASkD;AAAjC,AAAA,0FAAA,OAAA,mFACWC,MAAM,6CAAKnD;;AAExB,qCAAA,rCAAMqD,kFAAsBH,mBAAmBI;AAA\/C,AACE,IAAMC,SAAO,AAACC,wBAAI,AAACR,4BAAQC,kCAAoBC,oBAAoB,AAAA,gFAAMI;IACnEG,SAAE;kBAAKC,MAAMC;AAAX,AAAA,0FACG,+EAAA,lCAAK,AAACC,0BAAMF,wDAAW,AAACE,0BAAMD,gBAC9B,AAACE,2BAAO,AAAC5C,2BAAOyC,OAAO,AAACzC,2BAAO0C;;;AAH1C,AAIE,OAACG,2BAAOL,OAAE,AAACG,0BAAML,QAAQ,AAACQ,yBAAKR;;AAEnC,AAAA,qCAAA,6CAAAlG,lFAAM2G;AAAN,AAAA,IAAA1G,sBAAA;AAAA,AAAA,IAAAC,2BAAA,AAAA;AAAA,AAAA,IAAAC,yBAAA;;AAAA,AAAA,GAAA,CAAAA,yBAAAD;AAAA,AAAA,AAAAD,yBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,yBAAA;;;;AAAA;;;;AAAA,IAAAC,wBAAA,EAAA,CAAA,MAAA,AAAAH,6BAAA,AAAA,KAAAI,qBAAA,AAAAJ,0BAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAA0G,wEAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAAvG;;;AAAA,AAAA,AAAA,AAAAuG,0EAAA,WAAuBd,mBAAmBI,eAAegB,IAAMC;AAA\/D,AACE,IAAAC,aAA2B,AAACnB,6CAAqBH,mBAAmBI;Line truncated
|
||||
@@ -0,0 +1,7 @@
|
||||
(ns devtools.version
|
||||
(:require-macros [devtools.version :refer [get-current-version]]))
|
||||
|
||||
(def current-version (get-current-version))
|
||||
|
||||
(defn get-current-version []
|
||||
current-version)
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :use-macros {get-current-version devtools.version}, :excludes #{}, :name devtools.version, :imports nil, :requires nil, :cljs.spec/speced-vars [], :uses nil, :defs {current-version {:name devtools.version/current-version, :file "target/cljsbuild/public/js/out/devtools/version.cljs", :line 4, :column 1, :end-line 4, :end-column 21, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/version.cljs", :line 4, :column 6, :end-line 4, :end-column 21}, :tag string}, get-current-version {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/devtools/version.cljs", :line 6, :column 7, :end-line 6, :end-column 26, :arglists (quote ([]))}, :name devtools.version/get-current-version, :variadic false, :file "target/cljsbuild/public/js/out/devtools/version.cljs", :end-column 26, :method-params ([]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 6, :end-line 6, :max-fixed-arity 0, :fn-var true, :arglists (quote ([]))}}, :cljs.spec/registry-ref [], :require-macros {devtools.version devtools.version}, :doc nil}
|
||||
@@ -0,0 +1,9 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('devtools.version');
|
||||
goog.require('cljs.core');
|
||||
devtools.version.current_version = "0.9.8";
|
||||
devtools.version.get_current_version = (function devtools$version$get_current_version(){
|
||||
return devtools.version.current_version;
|
||||
});
|
||||
|
||||
//# sourceMappingURL=version.js.map?rel=1517021940252
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/devtools\/version.js","sources":["version.cljs?rel=1517021940255"],"lineCount":9,"mappings":";AAAA;;AAGA,AAAKA,mCAAgB;AAErB,uCAAA,vCAAMC;AAAN,AACED","names":["devtools.version\/current-version","devtools.version\/get-current-version"]}
|
||||
Reference in new issue
Block a user