Moved web root into root of project; this makes deployment easier.
Also deleted 'docs', which is now redundant.
This commit is contained in:
parent
a5204c66b9
commit
743d8a1740
1592 changed files with 53626 additions and 139250 deletions
56
js/compiled/out/devtools/async.cljs
Normal file
56
js/compiled/out/devtools/async.cljs
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
(ns devtools.async
|
||||
(:require-macros [devtools.oops :refer [oset ocall]])
|
||||
(:require [goog.async.nextTick :as next-tick]
|
||||
[goog.labs.userAgent.browser :as ua]
|
||||
[devtools.context :as context]))
|
||||
|
||||
(defn ^:dynamic available? []
|
||||
(exists? js/Promise))
|
||||
|
||||
(def ^:dynamic fixed-chrome-version-for-async "65.0.3321")
|
||||
|
||||
(defn ^:dynamic needed? []
|
||||
(not (and (ua/isChrome) (ua/isVersionOrHigher fixed-chrome-version-for-async))))
|
||||
|
||||
(defn ^:dynamic get-not-needed-message []
|
||||
(str "cljs-devtools: the :async feature is no longer needed since Chrome " fixed-chrome-version-for-async ", "
|
||||
"see https://github.com/binaryage/cljs-devtools/issues/20"))
|
||||
|
||||
(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!)
|
||||
(when-not (needed?)
|
||||
(.info (context/get-console) (get-not-needed-message)))
|
||||
true))
|
||||
|
||||
(defn uninstall! []
|
||||
(when *installed*
|
||||
(set! *installed* false)
|
||||
(uninstall-async-set-immediate!)))
|
||||
1
js/compiled/out/devtools/async.cljs.cache.json
Normal file
1
js/compiled/out/devtools/async.cljs.cache.json
Normal file
File diff suppressed because one or more lines are too long
87
js/compiled/out/devtools/async.js
Normal file
87
js/compiled/out/devtools/async.js
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
goog.provide('devtools.async');
|
||||
goog.require('cljs.core');
|
||||
goog.require('goog.async.nextTick');
|
||||
goog.require('goog.labs.userAgent.browser');
|
||||
goog.require('devtools.context');
|
||||
devtools.async.available_QMARK_ = (function devtools$async$available_QMARK_(){
|
||||
return (typeof Promise !== 'undefined');
|
||||
});
|
||||
devtools.async.fixed_chrome_version_for_async = "65.0.3321";
|
||||
devtools.async.needed_QMARK_ = (function devtools$async$needed_QMARK_(){
|
||||
return cljs.core.not.call(null,(function (){var and__4120__auto__ = goog.labs.userAgent.browser.isChrome();
|
||||
if(cljs.core.truth_(and__4120__auto__)){
|
||||
return goog.labs.userAgent.browser.isVersionOrHigher(devtools.async.fixed_chrome_version_for_async);
|
||||
} else {
|
||||
return and__4120__auto__;
|
||||
}
|
||||
})());
|
||||
});
|
||||
devtools.async.get_not_needed_message = (function devtools$async$get_not_needed_message(){
|
||||
return ["cljs-devtools: the :async feature is no longer needed since Chrome ",devtools.async.fixed_chrome_version_for_async,", ","see https://github.com/binaryage/cljs-devtools/issues/20"].join('');
|
||||
});
|
||||
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__25266__auto___28355 = (function (){var o__25266__auto__ = (function (){var o__25266__auto__ = Promise;
|
||||
return (o__25266__auto__["resolve"]).call(o__25266__auto__);
|
||||
})();
|
||||
return (o__25266__auto__["then"]).call(o__25266__auto__,callback);
|
||||
})();
|
||||
(o__25266__auto___28355["catch"]).call(o__25266__auto___28355,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__28356_28357 = Error;
|
||||
var target__25271__auto___28358 = G__28356_28357;
|
||||
if(cljs.core.truth_(target__25271__auto___28358)){
|
||||
} else {
|
||||
throw (new Error(["Assert failed: ",["unable to locate object path ",null," in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__28356_28357)].join(''),"\n","target__25271__auto__"].join('')));
|
||||
}
|
||||
|
||||
(target__25271__auto___28358["stackTraceLimit"] = Infinity);
|
||||
|
||||
|
||||
devtools.async.install_async_set_immediate_BANG_.call(null);
|
||||
|
||||
if(devtools.async.needed_QMARK_.call(null)){
|
||||
} else {
|
||||
devtools.context.get_console.call(null).info(devtools.async.get_not_needed_message.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=1582812680915
|
||||
1
js/compiled/out/devtools/async.js.map
Normal file
1
js/compiled/out/devtools/async.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/devtools\/async.js","sources":["async.cljs?rel=1582812680915"],"lineCount":87,"mappings":";AAAA;;;;;AAMA,kCAAA,lCAAgBA;AAAhB,AACE,eAAAC;;AAEF,gDAAA,hDAAeC;AAEf,+BAAA,\/BAAgBC;AAAhB,AACE,OAACC,wBAAI,iBAAAC,oBAAK,AAACC;AAAN,AAAA,oBAAAD;AAAmB,OAACE,8CAAqBL;;AAAzCG;;;;AAEP,wCAAA,xCAAgBG;AAAhB,AACE,QAAA,oHAAA,KAAA,nDAA2EN;;AAG7E,uCAAA,vCAAeO;AACf,oDAAA,pDAAeC;AAGf,yCAAA,zCAAMC,0FAAyBC;AAA\/B,AACE,kBAAA,XAACC;AAAD,AAAgB,MAAOD;GAAvB;;AAEF,6CAAA,7CAAME,kGAA6BC;AAAnC,iEACM,iBAAAC,mBAAOf,xEACP,iBAAAe,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,kBAAA,CAAA,gCAAA,KAAA,mDAAAF,0BAAA,KAAA;;;AAAA,CAAAC,4BAAA,qBAAmCE;;AAAnCH;AACA,AAACL;;AACD,GAAU,AAACd;AAAX;AAAA,AACE,AAAO,AAACuB,6CAAqB,AAAClB;;;AALlC;;;AAQF,iCAAA,jCAAMmB;AAAN,AACE,GAAMlB;AAAN,AACE,uCAAA,vCAAMA;;AACN,OAACU;;AAFH","names":["devtools.async\/available?","js\/Promise","devtools.async\/fixed-chrome-version-for-async","devtools.async\/needed?","cljs.core\/not","and__4120__auto__","goog.labs.userAgent.browser\/isChrome","goog.labs.userAgent.browser\/isVersionOrHigher","devtools.async\/get-not-needed-message","devtools.async\/*installed*","devtools.async\/*original-set-immediate*","devtools.async\/rethrow-outside-promise","e","js\/setTimeout","devtools.async\/promise-based-set-immediate","callback","o__25266__auto__","devtools.async\/install-async-set-immediate!","goog.async.nextTick\/setImmediate_","devtools.async\/uninstall-async-set-immediate!","devtools.async\/installed?","devtools.async\/install!","G__28356","target__25271__auto__","js\/Error","js\/Infinity","devtools.context\/get-console","devtools.async\/uninstall!"]}
|
||||
8
js/compiled/out/devtools/context.cljs
Normal file
8
js/compiled/out/devtools/context.cljs
Normal file
|
|
@ -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)))
|
||||
1
js/compiled/out/devtools/context.cljs.cache.json
Normal file
1
js/compiled/out/devtools/context.cljs.cache.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
["^ ","~:rename-macros",["^ "],"~:renames",["^ "],"~:use-macros",["^ "],"~:excludes",["~#set",[]],"~:name","~$devtools.context","~:imports",null,"~:requires",null,"~:cljs.spec/speced-vars",[],"~:uses",null,"~:defs",["^ ","~$get-root",["^ ","~:protocol-inline",null,"~:meta",["^ ","~:file","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/context.cljs","~:line",4,"~:column",17,"~:end-line",4,"~:end-column",25,"~:dynamic",true,"~:arglists",["~#list",["~$quote",["^F",[[]]]]]],"^5","~$devtools.context/get-root","^?","js/compiled/out/devtools/context.cljs","^C",25,"~:method-params",["^F",[[]]],"~:protocol-impl",null,"~:arglists-meta",["^F",[null,null]],"^A",1,"~:variadic?",false,"^D",true,"^@",4,"^B",4,"~:max-fixed-arity",0,"~:fn-var",true,"^E",["^F",["^G",["^F",[[]]]]]],"~$get-console",["^ ","^=",null,"^>",["^ ","^?","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/context.cljs","^@",7,"^A",17,"^B",7,"^C",28,"^D",true,"^E",["^F",["^G",["^F",[[]]]]]],"^5","~$devtools.context/get-console","^?","js/compiled/out/devtools/context.cljs","^C",28,"^I",["^F",[[]]],"^J",null,"^K",["^F",[null,null]],"^A",1,"^L",false,"^D",true,"^@",7,"~:ret-tag","~$any","^B",7,"^M",0,"^N",true,"^E",["^F",["^G",["^F",[[]]]]]]],"~:cljs.spec/registry-ref",[],"~:require-macros",null,"~:doc",null]
|
||||
11
js/compiled/out/devtools/context.js
Normal file
11
js/compiled/out/devtools/context.js
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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=1582812679007
|
||||
1
js/compiled/out/devtools/context.js.map
Normal file
1
js/compiled/out/devtools/context.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/devtools\/context.js","sources":["context.cljs?rel=1582812679007"],"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"]}
|
||||
114
js/compiled/out/devtools/core.cljs
Normal file
114
js/compiled/out/devtools/core.cljs
Normal file
|
|
@ -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")))
|
||||
1
js/compiled/out/devtools/core.cljs.cache.json
Normal file
1
js/compiled/out/devtools/core.cljs.cache.json
Normal file
File diff suppressed because one or more lines are too long
289
js/compiled/out/devtools/core.js
Normal file
289
js/compiled/out/devtools/core.js
Normal file
|
|
@ -0,0 +1,289 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__28384 = feature;
|
||||
var G__28384__$1 = (((G__28384 instanceof cljs.core.Keyword))?G__28384.fqn:null);
|
||||
switch (G__28384__$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__28384__$1)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
devtools.core.available_QMARK_ = (function devtools$core$available_QMARK_(var_args){
|
||||
var G__28387 = arguments.length;
|
||||
switch (G__28387) {
|
||||
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__28389 = feature;
|
||||
var G__28389__$1 = (((G__28389 instanceof cljs.core.Keyword))?G__28389.fqn:null);
|
||||
switch (G__28389__$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__28389__$1)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
devtools.core.installed_QMARK_ = (function devtools$core$installed_QMARK_(var_args){
|
||||
var G__28392 = arguments.length;
|
||||
switch (G__28392) {
|
||||
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__28395 = arguments.length;
|
||||
switch (G__28395) {
|
||||
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 ",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 ",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 ",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 ",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 ",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__4736__auto__ = [];
|
||||
var len__4730__auto___28398 = arguments.length;
|
||||
var i__4731__auto___28399 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___28399 < len__4730__auto___28398)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___28399]));
|
||||
|
||||
var G__28400 = (i__4731__auto___28399 + (1));
|
||||
i__4731__auto___28399 = G__28400;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.core.enable_feature_BANG_.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__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 ",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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.core.enable_feature_BANG_.cljs$lang$applyTo = (function (seq28397){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq28397));
|
||||
});
|
||||
|
||||
devtools.core.disable_feature_BANG_ = (function devtools$core$disable_feature_BANG_(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___28402 = arguments.length;
|
||||
var i__4731__auto___28403 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___28403 < len__4730__auto___28402)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___28403]));
|
||||
|
||||
var G__28404 = (i__4731__auto___28403 + (1));
|
||||
i__4731__auto___28403 = G__28404;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.core.disable_feature_BANG_.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__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 ",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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.core.disable_feature_BANG_.cljs$lang$applyTo = (function (seq28401){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq28401));
|
||||
});
|
||||
|
||||
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 ",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__4736__auto__ = [];
|
||||
var len__4730__auto___28406 = arguments.length;
|
||||
var i__4731__auto___28407 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___28407 < len__4730__auto___28406)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___28407]));
|
||||
|
||||
var G__28408 = (i__4731__auto___28407 + (1));
|
||||
i__4731__auto___28407 = G__28408;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.core.feature_available_QMARK_.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__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 ",devtools.util.make_lib_info.call(null)," ","=> use devtools.core/is-feature-available? instead"].join(''));
|
||||
});
|
||||
|
||||
devtools.core.feature_available_QMARK_.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.core.feature_available_QMARK_.cljs$lang$applyTo = (function (seq28405){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq28405));
|
||||
});
|
||||
|
||||
|
||||
//# sourceMappingURL=core.js.map?rel=1582812680985
|
||||
1
js/compiled/out/devtools/core.js.map
Normal file
1
js/compiled/out/devtools/core.js.map
Normal file
File diff suppressed because one or more lines are too long
397
js/compiled/out/devtools/defaults.cljs
Normal file
397
js/compiled/out/devtools/defaults.cljs
Normal file
|
|
@ -0,0 +1,397 @@
|
|||
(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/MapEntry"
|
||||
"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
|
||||
|
||||
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
}))
|
||||
1
js/compiled/out/devtools/defaults.cljs.cache.json
Normal file
1
js/compiled/out/devtools/defaults.cljs.cache.json
Normal file
File diff suppressed because one or more lines are too long
17
js/compiled/out/devtools/defaults.js
Normal file
17
js/compiled/out/devtools/defaults.js
Normal file
File diff suppressed because one or more lines are too long
1
js/compiled/out/devtools/defaults.js.map
Normal file
1
js/compiled/out/devtools/defaults.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/devtools\/defaults.js","sources":["defaults.cljs?rel=1582812679192"],"lineCount":17,"mappings":";AAAA;;AAIA,AAAKA,mCAAe,KAAAC,gBAAA;AAAA,AAAA,0FAAA,kEAAA,uDAAA;GAAA;AACpB,AAAKC,qCAAiB,KAAAD,gBAAA;AAAA,AAAA,0FAAA;GAAA;AACtB,AAAKE,mCAAe,KAAAF,gBAAA;AAAA,AAAA,kDAAA,kDAAA,AAAAG,4DAAA,4DAAA,AAAAA,9FAAkBJ,wHACAE;GADlB;AAGpB,AAAKG,2BACH,KAAAJ,gBAAA;AAAA,AAAA,+CAAA,sFAAA,iGAAA,sFAAA,qEAAA,gFAAA,gEAAA,oGAAA,yFAAA,4FAAA,6EAAA,yGAAA,kFAAA,sFAAA,6FAAA,6FAAA,mFAAA,gFAAA,2FAAA,sFAAA,mFAAA,yEAAA,8FAAA,iEAAA,2EAAA,wEAAA,mEAAA,sEAAA,qEAAA,+EAAA,wEAAA,iHAAA,0FAAA,uDAAA,0EAAA,wFAAA,uEAAA,4DAAA,uFAAA,+DAAA,qFAAA,oFAAA,mHAAA,qFAAA,8DAAA,mEAAA,+EAAA,iGAAA,4DAAA,qEAAA,iFAAA,iGAAA,kFAAA,mEAAA,yGAAA,yEAAA,iGAAA,wEAAA,wEAAA,iDAAA,gGAAA,gDAAA,+EAAA,0EAAA,oFAAA,yFAAA,2EAAA,0EAAA,kEAAA,iEAAA,wFAAA,6EAAA,8FAAA,wFAAA,kFAAA,kDAAA,uFAAA,oEAAA,0EAAA,8EAAA,uFAAA,kEAAA,0FAAA,8EAAA,mEAAA,iEAAA,8EAAA,2EAAA,iFAAA,qEAAA,kDAAA,0GAAA,+DAAA,8EAAA,qFAAA,+EAAA,yFAAA,iFAAA,oGAAA,wHAAA,oEAAA,iEAAA,6EAAA,oEAAA,4GAAA,kJAAA,iEAAA,kEAAA,+EAAA,mEAAA,4DAAA,qFAAA,uEAAA,kEAAA,iFAAA,wFAAA,mDAAA,yEAAA,gFAAA,kEAAA,iEAAA,kFAAA,oFAAA,kEAAA,0FAAA,+EAAA,oEAAA,uFAAA,uEAAA,mHAAA,uEAAA,mGAAA,2FAAA,0FAAA,iGAAA,gDAAA,yGAAA,qGAAA,kFAAA,8FAAA,yDAAA,oFAAA,6EAAA,qFAAA,0EAAA,+FAAA,6DAAA,8GAAA,gFAAA,mGAAA,iGAAA,mFAAA,qEAAA,8EAAA,sFAAA,iGAAA,iEAAA,uIAAA,mFAAA,iEAAA,gFAAA,0EAAA,oFAAA,kFAAA,4DAAA,kEAAA,qFAAA,8FAAA,6DAAA,kFAAA,6FAAA,6EAAA,2EAAA,8GAAA,0EAAA,gFAAA,8EAAA,2EAAA,4EAAA,oGAAA,uFAAA,sFAAA,yEAAA,wGAAA,8EAAA,+EAAA,0GAAA,wEAAA,gHAAA,iGAAA,qEAAA,2EAAA,kFAAA,iFAAA,mEAAA,4EAAA,yFAAA,+EAAA,8EAAA,mFAAA,4EAAA,qGAAA,iGAAA,mFAAA,0FAAA,qHAAA,+EAAA,0EAAA,kFAAA,2EAAA,qFAAA,mFAAA,kFAAA,0DAAA,oFAAA,8FAAA,wFAAA,uEAAA,wFAAA,qDAAA,4JAAA,MAAA,6BAAA,mFAAA,qDAAA,2HAAA,mFAAA,qDAAA,8cAAA,GAAA,kBAAA,mFAAA,qDAAA,+FAAA,GAAA,MAAA,yCAAA,4pCAAA,mFAAA,gDAAA,4GAAA,mFAAA,qDAAA,6EAAA,KAAA,mFAAA,qDAAA,kFAAA,mFAAA,qDAAA,qGAAA,KAAA,mFAAA,qDAAA,sHAAA,wBAAA,aAAA,yDAAA,mFAAA,qDAAA,mLAAA,mFAAA,qDAAA,0EAAA,mFAAA,qDAAA,2MAAA,SAAA,KAAA,mFAAA,qDAAA,yEAAA,MAAA,mFAAA,qDAAA,4FAAA,KAAA,mFAAA,qDAAA,yEAAA,mFAAA,qDAAA,kFAAA,IAAA,WAAA,0eAAA,mFAAA,uDAAA,sHAAA,kDAAA,mFAAA,qDAAA,kFAAA,IAAA,iRAAA,KAAA,mFAAA,qDAAA,4FAAA,KAAA,mFAAA,qDAAA,2HAAA,mFAAA,qDAAA,upBAAA,MAAA,KAAA,sBAAA,KAAA,oPAAA,SAAA,qMAAA,mFAAA,qDAAA,+EAAA,mFAAA,qDAAA,qwBAAA,mFAAA,qDAAA,yFAAA,mFAAA,gDAAA,8IAAA,KAAA,oVAAA,MAAA,mIAAA,IAAA,mFAAA,iDAAA,4NAAA,SAAA,mFAAA,qDAAA,4EAAA,mFAAA,qDAAA,+jBAAA,IAAA,8eAAA,mFAAA,qDAAA,0KAAA,KAAA,mFAAA,qDAAA,0EAAA,mFAAA,qDAAA,kGAAA,mFAAA,qDAAA,8GAAA,mFAAA,qDAAA,4IAAA,MAAA,mFAAA,qDAAA,oFAAA,KAAA,SAAA,mFAAA,qDAAA,8EAAA,mFAAA,qDAAA,+FAAA,mFAAA,qDAAA,+HAAA,mFAAA,qDAAA,iJAAA,mFAAA,qDAAA,61BAAA,uHAAA,8CAAA,uBAAA,mFAAA,qDAAA,yGAAA,sDAAA,mFAAA,kDAAA,2FAAA,mFAAA,qDAAA,wHAAA,mFAAA,gDAAA,yGAAA,mFAAA,qDAAA,8JAAA,mFAAA,iDAAA,4FAAA,mJAAA,KAAA,IAAA,KAAA,4IAAA,IAAA,mFAAA,qDAAA,yUAAA,GAAA,KAAA,mFAAA,qDAAA,msCAAA,mFAAA,qDAAA,+EAAA,mFAAA,qDAAA,+FAAA,mFAAA,qDAAA,yGAAA,mFAAA,qDAAA,yEAAA,mFAAA,qDAAA,yIAAA,kFAAA,wBAAA,8BAAA,sBAAA,gCAAA,sBAAA,uCAAA,wBAAA,mCAAA,wBAAA,2BAAA,2BAAA,oCAAA,iCAAA,sCAAA,0BAAA,oCAAA,yBAAA,uBAAA,sBAAA,4BAAA,wBAAA,sBAAA,wBAAA,kCAAA,mCAAA,0BAAA,yBAAA,yBAAA,+BAAA,mCAAA,mCAAA,yBAAA,4BAAA,6BAAA,olBAAA,mFAAA,gDAAA,oHAAA,mFAAA,qDAAA,8GAAA,KAAA,mFAAA,qDAAA,kGAAA,mFAAA,gDAAA,4HAAA,KAAA,GAAA,mFAAA,qDAAA,sHAAA,mFAAA,qDAAA,qFAAA,mFAAA,qDAAA,8HAAA,IAAA,mFAAA,qDAAA,kFAAA,2FAAA,SAAA,KAAA,mFAAA,qDAAA,yEAAA,MAAA,mFAAA,qDAAA,2FAAA,mFAAA,qDAAA,0FAAA,2KAAA,mFAAA,qDAAA,gHAAA,GAAA,uEAAA,mFAAA,qDAAA,gIAAA,mFAAA,iDAAA,6FAAA,mFAAA,qDAAA,sFAAA,+FAAA,mFAAA,qDAAA,qIAAA,mFAAA,qDAAA,4lBAAA,IAAA,mFAAA,qDAAA,qYAAA,vk1BAyCuD,CAAA,OAAA,k5KA+CA,mFAAA,mFAAA,0FAAA,rCAAM,t0KACN,mFAAA,mFAAA,0FAAA,rCAAM,o\/QAMN,mFAAA,mFAAA,qDAAA,mGAAA,0+PAeA,mFAAA,mFAAA,kEAAA,bAAM,8EAAkB,mFAAA,mFAAA,qDAAA,gGAAA,y8QAExB,mFAAA,mFAAA,kEAAA,bAAM,xrZAIN,mFAAA,mFAAA,qDAAA,t7cACA,mFAAA,mFAAA,qDAAA,i5cACA,mFAAA,mFAAA,qDAAA,v2bACA,mFAAA,mFAAA,qDAAA,g5TAKA,mFAAA,mFAAA,qDAAA,8PAAA,vuUACA,mFAAA,mFAAA,qDAAA,8PAAA,o9MACA,mFAAA,mFAAA,qDAAA,8PAAA,25DACA,mFAAA,mFAAA,qDAAA,8PAAA,u2dACA,mFAAA,mFAAA,qDAAA,gQAAA,rnrBACA,mFAAA,mFAAA,qDAAA,8PAAA,+kDACA,mFAAA,mFAAA,qDAAA,8PAAA,mgWACA,mFAAA,mFAAA,qDAAA,8PAAA,mxEACA,mFAAA,mFAAA,qDAAA,4PAAA,hvdAsFA,1jIAIA,uriBACA,15hBAEA,k4bACA,t2bAMA,+lJACA,\/0PACA,k71BACA,1kYACA,hlEACA,u8CACA,59cACA,ytcACA,4tRAMA,gqEAEA,jyeAKA,8rXAGA,pwWACA,urMAEA,0kLACA,ttRACA,gobAEA,xntBACA,o7ZAEA,k9RAEA,rrmBAEA,uzBACA,8sNAEA,3rNACA,gqPACA,4cACA,1tLAGA,hlSAEA,6nFAEA,2mhBAEA,38oBACA,wtfACA,x+JAEA,23JAEA,i3CAEA,vtCAIA,9pTAEA,u6jBAGA,t\/sBAGA,mh0BAEA,vxFAGA,l9EAOA,9tlBACA,9EAEA,4ikBACA,7rSACA,\/uDAKA,v1DAKA,w9QAEA,wuRAEA,jkkBAGA,84CAWA,89QAMA,hnTAWA,+pMAOA;GAtXvD","names":["devtools.defaults\/known-features","cljs.core\/Delay","devtools.defaults\/default-features","devtools.defaults\/feature-groups","cljs.core\/deref","devtools.defaults\/config"]}
|
||||
87
js/compiled/out/devtools/format.cljs
Normal file
87
js/compiled/out/devtools/format.cljs
Normal file
|
|
@ -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))))
|
||||
1
js/compiled/out/devtools/format.cljs.cache.json
Normal file
1
js/compiled/out/devtools/format.cljs.cache.json
Normal file
File diff suppressed because one or more lines are too long
617
js/compiled/out/devtools/format.js
Normal file
617
js/compiled/out/devtools/format.js
Normal file
|
|
@ -0,0 +1,617 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__4433__auto__ = (((value == null))?null:value);
|
||||
var m__4434__auto__ = (devtools.format._header[goog.typeOf(x__4433__auto__)]);
|
||||
if((!((m__4434__auto__ == null)))){
|
||||
return m__4434__auto__.call(null,value);
|
||||
} else {
|
||||
var m__4431__auto__ = (devtools.format._header["_"]);
|
||||
if((!((m__4431__auto__ == null)))){
|
||||
return m__4431__auto__.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__4433__auto__ = (((value == null))?null:value);
|
||||
var m__4434__auto__ = (devtools.format._has_body[goog.typeOf(x__4433__auto__)]);
|
||||
if((!((m__4434__auto__ == null)))){
|
||||
return m__4434__auto__.call(null,value);
|
||||
} else {
|
||||
var m__4431__auto__ = (devtools.format._has_body["_"]);
|
||||
if((!((m__4431__auto__ == null)))){
|
||||
return m__4431__auto__.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__4433__auto__ = (((value == null))?null:value);
|
||||
var m__4434__auto__ = (devtools.format._body[goog.typeOf(x__4433__auto__)]);
|
||||
if((!((m__4434__auto__ == null)))){
|
||||
return m__4434__auto__.call(null,value);
|
||||
} else {
|
||||
var m__4431__auto__ = (devtools.format._body["_"]);
|
||||
if((!((m__4431__auto__ == null)))){
|
||||
return m__4431__auto__.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__5718__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var o25302 = temp__5718__auto__;
|
||||
var temp__5718__auto____$1 = (o25302["formatters"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$1)){
|
||||
var o25303 = temp__5718__auto____$1;
|
||||
var temp__5718__auto____$2 = (o25303["templating"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$2)){
|
||||
var o25304 = temp__5718__auto____$2;
|
||||
return (o25304["make_template"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
devtools.format.make_group_fn = (function (){var temp__5718__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var o25305 = temp__5718__auto__;
|
||||
var temp__5718__auto____$1 = (o25305["formatters"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$1)){
|
||||
var o25306 = temp__5718__auto____$1;
|
||||
var temp__5718__auto____$2 = (o25306["templating"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$2)){
|
||||
var o25307 = temp__5718__auto____$2;
|
||||
return (o25307["make_group"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
devtools.format.make_reference_fn = (function (){var temp__5718__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var o25308 = temp__5718__auto__;
|
||||
var temp__5718__auto____$1 = (o25308["formatters"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$1)){
|
||||
var o25309 = temp__5718__auto____$1;
|
||||
var temp__5718__auto____$2 = (o25309["templating"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$2)){
|
||||
var o25310 = temp__5718__auto____$2;
|
||||
return (o25310["make_reference"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
devtools.format.make_surrogate_fn = (function (){var temp__5718__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var o25311 = temp__5718__auto__;
|
||||
var temp__5718__auto____$1 = (o25311["formatters"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$1)){
|
||||
var o25312 = temp__5718__auto____$1;
|
||||
var temp__5718__auto____$2 = (o25312["templating"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$2)){
|
||||
var o25313 = temp__5718__auto____$2;
|
||||
return (o25313["make_surrogate"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
devtools.format.render_markup_fn = (function (){var temp__5718__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var o25314 = temp__5718__auto__;
|
||||
var temp__5718__auto____$1 = (o25314["formatters"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$1)){
|
||||
var o25315 = temp__5718__auto____$1;
|
||||
var temp__5718__auto____$2 = (o25315["templating"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$2)){
|
||||
var o25316 = temp__5718__auto____$2;
|
||||
return (o25316["render_markup"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
devtools.format._LT_header_GT__fn = (function (){var temp__5718__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var o25317 = temp__5718__auto__;
|
||||
var temp__5718__auto____$1 = (o25317["formatters"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$1)){
|
||||
var o25318 = temp__5718__auto____$1;
|
||||
var temp__5718__auto____$2 = (o25318["markup"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$2)){
|
||||
var o25319 = temp__5718__auto____$2;
|
||||
return (o25319["_LT_header_GT_"]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
|
||||
devtools.format._LT_standard_body_GT__fn = (function (){var temp__5718__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var o25320 = temp__5718__auto__;
|
||||
var temp__5718__auto____$1 = (o25320["formatters"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$1)){
|
||||
var o25321 = temp__5718__auto____$1;
|
||||
var temp__5718__auto____$2 = (o25321["markup"]);
|
||||
if(cljs.core.truth_(temp__5718__auto____$2)){
|
||||
var o25322 = temp__5718__auto____$2;
|
||||
return (o25322["_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__4736__auto__ = [];
|
||||
var len__4730__auto___25324 = arguments.length;
|
||||
var i__4731__auto___25325 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___25325 < len__4730__auto___25324)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___25325]));
|
||||
|
||||
var G__25326 = (i__4731__auto___25325 + (1));
|
||||
i__4731__auto___25325 = G__25326;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.render_markup.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.format.render_markup.cljs$lang$applyTo = (function (seq25323){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq25323));
|
||||
});
|
||||
|
||||
devtools.format.make_template = (function devtools$format$make_template(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___25328 = arguments.length;
|
||||
var i__4731__auto___25329 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___25329 < len__4730__auto___25328)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___25329]));
|
||||
|
||||
var G__25330 = (i__4731__auto___25329 + (1));
|
||||
i__4731__auto___25329 = G__25330;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.make_template.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.format.make_template.cljs$lang$applyTo = (function (seq25327){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq25327));
|
||||
});
|
||||
|
||||
devtools.format.make_group = (function devtools$format$make_group(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___25332 = arguments.length;
|
||||
var i__4731__auto___25333 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___25333 < len__4730__auto___25332)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___25333]));
|
||||
|
||||
var G__25334 = (i__4731__auto___25333 + (1));
|
||||
i__4731__auto___25333 = G__25334;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.make_group.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.format.make_group.cljs$lang$applyTo = (function (seq25331){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq25331));
|
||||
});
|
||||
|
||||
devtools.format.make_surrogate = (function devtools$format$make_surrogate(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___25336 = arguments.length;
|
||||
var i__4731__auto___25337 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___25337 < len__4730__auto___25336)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___25337]));
|
||||
|
||||
var G__25338 = (i__4731__auto___25337 + (1));
|
||||
i__4731__auto___25337 = G__25338;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.make_surrogate.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.format.make_surrogate.cljs$lang$applyTo = (function (seq25335){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq25335));
|
||||
});
|
||||
|
||||
devtools.format.template = (function devtools$format$template(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___25340 = arguments.length;
|
||||
var i__4731__auto___25341 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___25341 < len__4730__auto___25340)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___25341]));
|
||||
|
||||
var G__25342 = (i__4731__auto___25341 + (1));
|
||||
i__4731__auto___25341 = G__25342;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.template.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.format.template.cljs$lang$applyTo = (function (seq25339){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq25339));
|
||||
});
|
||||
|
||||
devtools.format.group = (function devtools$format$group(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___25344 = arguments.length;
|
||||
var i__4731__auto___25345 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___25345 < len__4730__auto___25344)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___25345]));
|
||||
|
||||
var G__25346 = (i__4731__auto___25345 + (1));
|
||||
i__4731__auto___25345 = G__25346;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.group.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.format.group.cljs$lang$applyTo = (function (seq25343){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq25343));
|
||||
});
|
||||
|
||||
devtools.format.surrogate = (function devtools$format$surrogate(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___25348 = arguments.length;
|
||||
var i__4731__auto___25349 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___25349 < len__4730__auto___25348)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___25349]));
|
||||
|
||||
var G__25350 = (i__4731__auto___25349 + (1));
|
||||
i__4731__auto___25349 = G__25350;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.surrogate.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.format.surrogate.cljs$lang$applyTo = (function (seq25347){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq25347));
|
||||
});
|
||||
|
||||
devtools.format.reference = (function devtools$format$reference(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___25358 = arguments.length;
|
||||
var i__4731__auto___25359 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___25359 < len__4730__auto___25358)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___25359]));
|
||||
|
||||
var G__25360 = (i__4731__auto___25359 + (1));
|
||||
i__4731__auto___25359 = G__25360;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.format.reference.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
|
||||
});
|
||||
|
||||
devtools.format.reference.cljs$core$IFn$_invoke$arity$variadic = (function (object,p__25354){
|
||||
var vec__25355 = p__25354;
|
||||
var state_override = cljs.core.nth.call(null,vec__25355,(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__25355,state_override){
|
||||
return (function (p1__25351_SHARP_){
|
||||
return cljs.core.merge.call(null,p1__25351_SHARP_,state_override);
|
||||
});})(vec__25355,state_override))
|
||||
], null));
|
||||
});
|
||||
|
||||
devtools.format.reference.cljs$lang$maxFixedArity = (1);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.format.reference.cljs$lang$applyTo = (function (seq25352){
|
||||
var G__25353 = cljs.core.first.call(null,seq25352);
|
||||
var seq25352__$1 = cljs.core.next.call(null,seq25352);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25353,seq25352__$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__4736__auto__ = [];
|
||||
var len__4730__auto___25362 = arguments.length;
|
||||
var i__4731__auto___25363 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___25363 < len__4730__auto___25362)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___25363]));
|
||||
|
||||
var G__25364 = (i__4731__auto___25363 + (1));
|
||||
i__4731__auto___25363 = G__25364;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.format.build_header.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.format.build_header.cljs$lang$applyTo = (function (seq25361){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq25361));
|
||||
});
|
||||
|
||||
devtools.format.standard_body_template = (function devtools$format$standard_body_template(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___25367 = arguments.length;
|
||||
var i__4731__auto___25368 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___25368 < len__4730__auto___25367)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___25368]));
|
||||
|
||||
var G__25369 = (i__4731__auto___25368 + (1));
|
||||
i__4731__auto___25368 = G__25369;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.format.standard_body_template.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.format.standard_body_template.cljs$lang$applyTo = (function (seq25365){
|
||||
var G__25366 = cljs.core.first.call(null,seq25365);
|
||||
var seq25365__$1 = cljs.core.next.call(null,seq25365);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__25366,seq25365__$1);
|
||||
});
|
||||
|
||||
|
||||
//# sourceMappingURL=format.js.map?rel=1582812679060
|
||||
1
js/compiled/out/devtools/format.js.map
Normal file
1
js/compiled/out/devtools/format.js.map
Normal file
File diff suppressed because one or more lines are too long
102
js/compiled/out/devtools/formatters.cljs
Normal file
102
js/compiled/out/devtools/formatters.cljs
Normal file
|
|
@ -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!)))
|
||||
1
js/compiled/out/devtools/formatters.cljs.cache.json
Normal file
1
js/compiled/out/devtools/formatters.cljs.cache.json
Normal file
File diff suppressed because one or more lines are too long
232
js/compiled/out/devtools/formatters.js
Normal file
232
js/compiled/out/devtools/formatters.js
Normal file
|
|
@ -0,0 +1,232 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__4131__auto__ = devtools.util.in_node_context_QMARK_.call(null);
|
||||
if(or__4131__auto__){
|
||||
return or__4131__auto__;
|
||||
} else {
|
||||
var and__4120__auto__ = goog.labs.userAgent.browser.isChrome();
|
||||
if(cljs.core.truth_(and__4120__auto__)){
|
||||
return goog.labs.userAgent.browser.isVersionOrHigher((47));
|
||||
} else {
|
||||
return and__4120__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__4374__auto__,writer__4375__auto__,opt__4376__auto__){
|
||||
return cljs.core._write.call(null,writer__4375__auto__,"devtools.formatters/CLJSDevtoolsFormatter");
|
||||
});
|
||||
|
||||
/**
|
||||
* Positional factory function for 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 (e28361){var _ = e28361;
|
||||
return null;
|
||||
}});
|
||||
devtools.formatters.monitor_api_call_if_avail = (function devtools$formatters$monitor_api_call_if_avail(name,api_call,args){
|
||||
var temp__5718__auto__ = devtools.formatters.find_fn_in_debug_ns.call(null,"monitor_api_call");
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var monitor_api_call = temp__5718__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__4736__auto__ = [];
|
||||
var len__4730__auto___28363 = arguments.length;
|
||||
var i__4731__auto___28364 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___28364 < len__4730__auto___28363)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___28364]));
|
||||
|
||||
var G__28365 = (i__4731__auto___28364 + (1));
|
||||
i__4731__auto___28364 = G__28365;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.formatters.log_exception_if_avail.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__auto__);
|
||||
});
|
||||
|
||||
devtools.formatters.log_exception_if_avail.cljs$core$IFn$_invoke$arity$variadic = (function (args){
|
||||
var temp__5718__auto__ = devtools.formatters.find_fn_in_debug_ns.call(null,"log_exception");
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var log_exception = temp__5718__auto__;
|
||||
return cljs.core.apply.call(null,log_exception,args);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
devtools.formatters.log_exception_if_avail.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.formatters.log_exception_if_avail.cljs$lang$applyTo = (function (seq28362){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq28362));
|
||||
});
|
||||
|
||||
devtools.formatters.monitor_api_calls = (function devtools$formatters$monitor_api_calls(name,api_call){
|
||||
return (function() {
|
||||
var G__28366__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__28366 = function (var_args){
|
||||
var args = null;
|
||||
if (arguments.length > 0) {
|
||||
var G__28367__i = 0, G__28367__a = new Array(arguments.length - 0);
|
||||
while (G__28367__i < G__28367__a.length) {G__28367__a[G__28367__i] = arguments[G__28367__i + 0]; ++G__28367__i;}
|
||||
args = new cljs.core.IndexedSeq(G__28367__a,0,null);
|
||||
}
|
||||
return G__28366__delegate.call(this,args);};
|
||||
G__28366.cljs$lang$maxFixedArity = 0;
|
||||
G__28366.cljs$lang$applyTo = (function (arglist__28368){
|
||||
var args = cljs.core.seq(arglist__28368);
|
||||
return G__28366__delegate(args);
|
||||
});
|
||||
G__28366.cljs$core$IFn$_invoke$arity$variadic = G__28366__delegate;
|
||||
return G__28366;
|
||||
})()
|
||||
;
|
||||
});
|
||||
devtools.formatters.sanitize = (function devtools$formatters$sanitize(name,api_call){
|
||||
return (function() {
|
||||
var G__28370__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 (e28369){var e = e28369;
|
||||
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__28370 = function (var_args){
|
||||
var args = null;
|
||||
if (arguments.length > 0) {
|
||||
var G__28371__i = 0, G__28371__a = new Array(arguments.length - 0);
|
||||
while (G__28371__i < G__28371__a.length) {G__28371__a[G__28371__i] = arguments[G__28371__i + 0]; ++G__28371__i;}
|
||||
args = new cljs.core.IndexedSeq(G__28371__a,0,null);
|
||||
}
|
||||
return G__28370__delegate.call(this,args);};
|
||||
G__28370.cljs$lang$maxFixedArity = 0;
|
||||
G__28370.cljs$lang$applyTo = (function (arglist__28372){
|
||||
var args = cljs.core.seq(arglist__28372);
|
||||
return G__28370__delegate(args);
|
||||
});
|
||||
G__28370.cljs$core$IFn$_invoke$arity$variadic = G__28370__delegate;
|
||||
return G__28370;
|
||||
})()
|
||||
;
|
||||
});
|
||||
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=1582812680934
|
||||
1
js/compiled/out/devtools/formatters.js.map
Normal file
1
js/compiled/out/devtools/formatters.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/devtools\/formatters.js","sources":["formatters.cljs?rel=1582812680934"],"lineCount":232,"mappings":";AAAA;;;;;;;AAQA,4CAAA,5CAAeA;AACf,oDAAA,pDAAeC;AACf,kDAAA,lDAAeC;AAEf,6CAAA,7CAAKC;AAEL,uCAAA,vCAAgBC;AAAhB,AACE,IAAAC,mBAAI,AAACC;AAAL,AAAA,GAAAD;AAAAA;;AACI,IAAAE,oBAAK,AAACC;AAAN,AAAA,oBAAAD;AAAmB,qDAAA,9CAACE;;AAApBF;;;;AAEN,AAAA;;;;;;AAAA;AAAA,AAAA,qDAAA,rDAASO;AAAT,AAAA,AAAA;;;AAAA,AAAA,2DAAA,3DAASA;;AAAT,AAAA,8DAAA,9DAASA;;AAAT,AAAA,mEAAA,WAAAJ,mBAAAC,qBAAAC,tHAASE;AAAT,AAAA,OAAAD,2BAAAF,qBAAA;;;AAAA;;;iDAAA,jDAASI;AAAT,AAAA,YAAAD;;;AAASA,AAGT,0CAAA,1CAAOE,4FAAqBC;AAA5B,AACE,IAAA,AACE,6CAAA,YAAA,jDAAgB,AAACE,0DAAqCF;gBADxD,QAAAC,JAEkBE;AAFlB,AAAA;;AAKF,gDAAA,hDAAOC,wGAA2BC,KAAKC,SAASC;AAAhD,AACE,IAAAC,qBAA0B,kDAAA,lDAACT;AAA3B,AAAA,oBAAAS;AAAA,uBAAAA,nBAASC;AAAT,AACE,OAACA,2BAAiBJ,KAAKC,SAASC;;AAChC,OAACG,0BAAMJ,SAASC;;;AAEpB,AAAA,6CAAA,qDAAAI,lGAAOM;AAAP,AAAA,IAAAL,qBAAA;AAAA,AAAA,IAAAC,0BAAA,AAAA;AAAA,AAAA,IAAAC,wBAAA;;AAAA,AAAA,GAAA,CAAAA,wBAAAD;AAAA,AAAA,AAAAD,wBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,wBAAA;;;;AAAA;;;;AAAA,IAAAC,uBAAA,EAAA,CAAA,MAAA,AAAAH,4BAAA,AAAA,KAAAI,qBAAA,AAAAJ,yBAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAAK,gFAAAF;;;AAAA,AAAA,AAAA,kFAAA,lFAAOE,6FAA0BV;AAAjC,AACE,IAAAC,qBAAuB,kDAAA,lDAACT;AAAxB,AAAA,oBAAAS;AAAA,oBAAAA,hBAASa;AAAT,AACE,OAACX,0BAAMW,cAAcd;;AADvB;;;;AADF,AAAA,qEAAA,rEAAOU;;AAAP;AAAA,AAAA,+DAAA,WAAAC,1EAAOD;AAAP,AAAA,IAAAE,qBAAA;AAAA,AAAA,OAAAA,wDAAA,AAAAC,wBAAAF;;;AAAA,AAKA,wCAAA,xCAAOI,wFAAmBjB,KAAKC;AAA\/B,AACE;mCAAOC;AAAP,AACE,GAAA,GAAQtB;AACN,OAACyB,0BAAMJ,SAASC;;AAChB,OAACH,wDAA0BC,KAAKC,SAASC;;;;IAHtCA;;;;EAAAA;;oCAAAA;;;IAAAA;0BAAAA;;;;;;;AAMT,+BAAA,\/BAAOgB,sEAAUlB,KAAKC;AAAtB,AACE;mCAAOC;AAAP,AACE,GAAA,GAAQvB;AACN,OAAC0B,0BAAMJ,SAASC;;AAChB,IAAA,AACE,OAACG,0BAAMJ,SAASC;gBADlB,QAAAiB,JAEkBC;AAFlB,AAGI,AAACR,qDAAuB,mDAAA,NAAKZ,uDAAUoB;;AAH3C;;;;IAHGlB;;;;EAAAA;;oCAAAA;;;IAAAA;0BAAAA;;;;;;;AAST,2CAAA,3CAAOmB;AAAP,AACE,IAAMC,OAAK,WAAKtB,KAAKC;AAAV,AACE,IAAMsB,UAAQ,AAACC,4BAAQP,sCAAkBjB;IACnCyB,YAAU,AAACD,4BAAQN,6BAASlB;AADlC,AAEE,AAAC,AAAC0B,yBAAKH,QAAQE,qBAAWxB;;AAC1BA;;IACT0B,YAAU,KAAAnC;IACVoC,eAAQ;kBAAK5B,KAAK6B;AAAV,AACE,QAAgBF,UAAU3B,QAAK,AAACsB,eAAKtB,KAAK6B;;;AAP1D,AAQE,uBAAA,vBAACD,gCAAiBE;;AAClB,uBAAA,vBAACF,iCAAkBG;;AACnB,uBAAA,vBAACH,8BAAeI;;AAChBL;;AAEJ,qCAAA,rCAAOM,kFAAUC;AAAjB,AACE,qBAAW1C,bAAsB0C;;AAEnC,qCAAA,rCAAOC;AAAP,AACE,IAAMC,aAAW,AAACC;AAAlB,AACE,OAACC,6BAAQ,AAACC,yBAAKN,mCAASG;;AAE5B,kDAAA,lDAAOI,4GAAwBb;AAA\/B,AACE,IAAMS,aAAW,AAAQ,AAACC;AAA1B,AACE,AAAOD,gBAAWT;;AAClB,AAACc,kDAAqBL;;AACtB,oBAAI,8BAAA,9BAACM;AACH,QAAgB,AAAC7C,qCAAkBhB,8CAAuB8C;;AAD5D;;;AAGJ,qDAAA,rDAAOgB;AAAP,AACE,IAAMC,iBAAe,AAACC,2BAAOZ,mCAAS,AAACa,wBAAI,AAACT;IACtCU,oBAAkB,oDAAA,lDAAI,AAACC,iCAAOJ,sBAAoB,AAACK,+BAAWL;AADpE,AAEE,OAACH,kDAAqBM;;AAI1B,uCAAA,vCAAMG;AAAN,AACExE;;AAEF,oCAAA,pCAAMyE;AAAN,AACE,GAAUzE;AAAV;;AAAA,AACE,4CAAA,5CAAMA;;AACN,AAAC8D,0DAAuB,AAACnB;;AAF3B;;;AAKF,sCAAA,tCAAM+B;AAAN,AACE,GAAM1E;AAAN,AACE,4CAAA,5CAAMA;;AACN,OAACiE;;AAFH","names":["devtools.formatters\/*installed*","devtools.formatters\/*sanitizer-enabled*","devtools.formatters\/*monitor-enabled*","devtools.formatters\/obsolete-formatter-key","devtools.formatters\/available?","or__4131__auto__","devtools.util\/in-node-context?","and__4120__auto__","goog.labs.userAgent.browser\/isChrome","goog.labs.userAgent.browser\/isVersionOrHigher","this__4374__auto__","writer__4375__auto__","opt__4376__auto__","cljs.core\/-write","devtools.formatters\/CLJSDevtoolsFormatter","devtools.formatters\/->CLJSDevtoolsFormatter","devtools.formatters\/find-fn-in-debug-ns","fn-name","e28361","devtools.context\/get-root","_","devtools.formatters\/monitor-api-call-if-avail","name","api-call","args","temp__5718__auto__","monitor-api-call","cljs.core\/apply","var_args","args__4736__auto__","len__4730__auto__","i__4731__auto__","argseq__4737__auto__","cljs.core\/IndexedSeq","devtools.formatters\/log-exception-if-avail","seq28362","self__4718__auto__","cljs.core\/seq","log-exception","devtools.formatters\/monitor-api-calls","devtools.formatters\/sanitize","e28369","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!"]}
|
||||
88
js/compiled/out/devtools/formatters/budgeting.cljs
Normal file
88
js/compiled/out/devtools/formatters/budgeting.cljs
Normal file
|
|
@ -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))
|
||||
File diff suppressed because one or more lines are too long
182
js/compiled/out/devtools/formatters/budgeting.js
Normal file
182
js/compiled/out/devtools/formatters/budgeting.js
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__25266__auto__ = devtools.formatters.budgeting.over_budget_values;
|
||||
return (o__25266__auto__["add"]).call(o__25266__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__25266__auto__ = devtools.formatters.budgeting.over_budget_values;
|
||||
return (o__25266__auto__["delete"]).call(o__25266__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__25266__auto__ = devtools.formatters.budgeting.over_budget_values;
|
||||
return (o__25266__auto__["has"]).call(o__25266__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(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__28089 = data;
|
||||
var target__25271__auto__ = G__28089;
|
||||
if(cljs.core.truth_(target__25271__auto__)){
|
||||
} else {
|
||||
throw (new Error(["Assert failed: ",["unable to locate object path ",null," in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__28089)].join(''),"\n","target__25271__auto__"].join('')));
|
||||
}
|
||||
|
||||
(target__25271__auto__["config"] = devtools.formatters.state.set_depth_budget.call(null,config,depth_budget));
|
||||
|
||||
return G__28089;
|
||||
});
|
||||
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_28094 = (depth_budget - (1));
|
||||
if(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_28094);
|
||||
} else {
|
||||
var seq__28090_28095 = cljs.core.seq.call(null,json_ml);
|
||||
var chunk__28091_28096 = null;
|
||||
var count__28092_28097 = (0);
|
||||
var i__28093_28098 = (0);
|
||||
while(true){
|
||||
if((i__28093_28098 < count__28092_28097)){
|
||||
var item_28099 = cljs.core._nth.call(null,chunk__28091_28096,i__28093_28098);
|
||||
devtools.formatters.budgeting.distribute_budget_BANG_.call(null,item_28099,new_depth_budget_28094);
|
||||
|
||||
|
||||
var G__28100 = seq__28090_28095;
|
||||
var G__28101 = chunk__28091_28096;
|
||||
var G__28102 = count__28092_28097;
|
||||
var G__28103 = (i__28093_28098 + (1));
|
||||
seq__28090_28095 = G__28100;
|
||||
chunk__28091_28096 = G__28101;
|
||||
count__28092_28097 = G__28102;
|
||||
i__28093_28098 = G__28103;
|
||||
continue;
|
||||
} else {
|
||||
var temp__5720__auto___28104 = cljs.core.seq.call(null,seq__28090_28095);
|
||||
if(temp__5720__auto___28104){
|
||||
var seq__28090_28105__$1 = temp__5720__auto___28104;
|
||||
if(cljs.core.chunked_seq_QMARK_.call(null,seq__28090_28105__$1)){
|
||||
var c__4550__auto___28106 = cljs.core.chunk_first.call(null,seq__28090_28105__$1);
|
||||
var G__28107 = cljs.core.chunk_rest.call(null,seq__28090_28105__$1);
|
||||
var G__28108 = c__4550__auto___28106;
|
||||
var G__28109 = cljs.core.count.call(null,c__4550__auto___28106);
|
||||
var G__28110 = (0);
|
||||
seq__28090_28095 = G__28107;
|
||||
chunk__28091_28096 = G__28108;
|
||||
count__28092_28097 = G__28109;
|
||||
i__28093_28098 = G__28110;
|
||||
continue;
|
||||
} else {
|
||||
var item_28111 = cljs.core.first.call(null,seq__28090_28105__$1);
|
||||
devtools.formatters.budgeting.distribute_budget_BANG_.call(null,item_28111,new_depth_budget_28094);
|
||||
|
||||
|
||||
var G__28112 = cljs.core.next.call(null,seq__28090_28105__$1);
|
||||
var G__28113 = null;
|
||||
var G__28114 = (0);
|
||||
var G__28115 = (0);
|
||||
seq__28090_28095 = G__28112;
|
||||
chunk__28091_28096 = G__28113;
|
||||
count__28092_28097 = G__28114;
|
||||
i__28093_28098 = G__28115;
|
||||
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__5718__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__5718__auto__)){
|
||||
var initial_hierarchy_depth_budget = temp__5718__auto__;
|
||||
var remaining_depth_budget = (function (){var or__4131__auto__ = devtools.formatters.state.get_depth_budget.call(null);
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__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=1582812680734
|
||||
1
js/compiled/out/devtools/formatters/budgeting.js.map
Normal file
1
js/compiled/out/devtools/formatters/budgeting.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/devtools\/formatters\/budgeting.js","sources":["budgeting.cljs?rel=1582812680735"],"lineCount":182,"mappings":";AAAA;;;;;;AAcA,2DAAA,3DAAKA;AAKL,AAAKC,mDAAmB,EAAI,QAAAC,0BAAqB,KAAAA,WAAc,mCAAA,nCAACC;AAEhE,4DAAA,5DAAMC,gIAAwBC;AAA9B,AACE,GAAI,AAACC,oCAAUL;AACb,OAACM,iCAAQN,iDAAmB,yBAAA,AAAAO,zBAACC,mDAAMR,kDAAmBI;;AACtD,IAAAK,mBAAOT;AAAP,AAAA,OAAA,CAAAS,iBAAA,aAAAA,iBAAgCL;;;AAEpC,+DAAA,\/DAAMM,sIAA2BN;AAAjC,AACE,GAAI,AAACC,oCAAUL;AACb,OAACM,iCAAQN,iDAAmB,yBAAA,AAAAO,zBAACI,mDAAMX,kDAAmBI;;AACtD,IAAAK,mBAAOT;AAAP,AAAA,OAAA,CAAAS,iBAAA,gBAAAA,iBAAmCL;;;AAEvC,6DAAA,7DAAMQ,kIAAwBR;AAA9B,AACE,GAAI,AAACC,oCAAUL;AACb,2CAAA,AAAAO,pCAACM,8DAAWb,kDAAmBI;;AAC\/B,IAAAK,mBAAOT;AAAP,AAAA,OAAA,CAAAS,iBAAA,aAAAA,iBAAgCL;;;AAIpC,wDAAA,xDAAMU,wHAAmBC;AAAzB,AACE,mEAAA,5DAACC,yBAAE,AAACC,0BAAMF;;AAEZ,gDAAA,hDAAMG,wGAAiBH;AAAvB,AACE,GAAI,AAACI,iCAAOJ;AACV,kIAAA,1HAAK,AAACK,0BAAMC,cAAI,AAACC,wBAAIJ,8CAAgBH;;AADvC;;;AAIF,gEAAA,hEAAMQ,wIAA2BR;AAAjC,AACE,GAAI,AAACI,iCAAOJ;AACV,GAAI,AAACD,gEAAkBC;AAAvB;;AAEE,OAACS,yBAAKD,8DAA0BR;;;AAHpC;;;AAKF,sEAAA,tEAAMW,oJAAkCC,iBAAiBC;AAAzD,AAAA,GACS,GAAK,gBAAA,fAAMA;AADpB;AAAA,AAAA,MAAA,KAAAH,MAAA;;;AAEE,IAAMI,OAAK,AAACC,2BAAOH;IACbI,IAAE,2CAAA,KAAA,AAAA,kBAAA,KAAAN,MAAA,3EAAQ,AAACO,kCAAQH;IACnBI,SAAO,MAAA,LAAMJ;AAFnB,AAGE,IAAAK,WAAML;IAANM,wBAAAD;AAAA,AAAA,oBAAAC;AAAA;AAAA,AAAA,MAAA,KAAAV,MAAA,CAAA,kBAAA,CAAA,gCAAA,KAAA,mDAAAS,oBAAA,KAAA;;;AAAA,CAAAC,sBAAA,YAAsB,AAACC,qDAAiBH,OAAOL;;AAA\/CM;;AAEJ,wDAAA,xDAAMG,wHAAoBtB,QAAQa;AAAlC,AAAA,GACS,GAAK,gBAAA,fAAMA;AADpB;AAAA,AAAA,MAAA,KAAAH,MAAA;;;AAEE,GAAI,AAACN,iCAAOJ;AACV,IAAMuB,yBAAiB,gBAAA,fAAKV;AAA5B,AACE,GAAI,AAACd,gEAAkBC;AACrB,AAACW,8EAAiCX,QAAQuB;;AAC1C,IAAAC,mBAAA,AAAAC,wBAAazB;IAAb0B,qBAAA;IAAAC,qBAAA;IAAAC,iBAAA;;AAAA,AAAA,GAAA,AAAA,CAAAA,iBAAAD;AAAA,iBAAA,AAAAE,yBAAAH,mBAAAE,zDAAQS;AAAR,AAAA,AACE,AAACf,gEAAmBe,WAAKd;;AAD3B;AAAA,eAAAC;eAAAE;eAAAC;eAAA,CAAAC,iBAAA;;;;;;;AAAA,IAAAE,2BAAA,AAAAL,wBAAAD;AAAA,AAAA,GAAAM;AAAA,AAAA,IAAAN,uBAAAM;AAAA,AAAA,GAAA,AAAAC,uCAAAP;AAAA,IAAAQ,wBAAA,AAAAC,gCAAAT;AAAA,AAAA,eAAA,AAAAU,+BAAAV;eAAAQ;eAAA,AAAAG,0BAAAH;eAAA;;;;;;;AAAA,iBAAA,AAAA9B,0BAAAsB,vCAAQa;AAAR,AAAA,AACE,AAACf,gEAAmBe,WAAKd;;AAD3B;AAAA,eAAA,AAAAa,yBAAAZ;eAAA;eAAA;eAAA;;;;;;;;AAAA;;;;;;AAJN;;AAMAxB;;AAIF,6DAAA,7DAAMsC,kIAAmBjD;AAAzB,AACE,oBAAM,AAACQ,qEAAuBR;AAA9B,AACE,AAACM,uEAA0BN;;AAD7B;;AAAA;;;AAIF,+EAAA,\/EAAMkD,sKAA2ClD,MAAMW;AAAvD,AACE,IAAAwC,qBAAwC,2CAAA,3CAACE;AAAzC,AAAA,oBAAAF;AAAA,qCAAAA,jCAASC;AAAT,AACE,IAAME,yBAAuB,iBAAAC,mBAAI,AAACC;AAAL,AAAA,oBAAAD;AAAAA;;AAAuB,yCAAA,jCAAKH;;;IACnDK,QAAM,AAAC3C,wDAAgBH;IACvB+C,eAAO,AAACC,wBAAI,AAACxC,wEAA0BR;IACvCiD,eAAa,EAAIF,cAAOD,MAAM,CAAGA,QAAM9D;AAH7C,AAIE,GAAI,CAAI2D,0BAAuBM;AAC7B,OAAC3B,gEAAmBtB,QAAQ2C;;AAC5B,IAAMO,cAAY,AAACC,uDAAc,AAACC,6DAAkB\/D;AAApD,AACE,AAACD,oEAAuBC;;AACxB6D;;;AACNlD","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__25266__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__28089","target__25271__auto__","devtools.formatters.state\/set-depth-budget","devtools.formatters.budgeting\/distribute-budget!","new-depth-budget","seq__28090","cljs.core\/seq","chunk__28091","count__28092","i__28093","cljs.core\/-nth","temp__5720__auto__","cljs.core\/chunked-seq?","c__4550__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__5718__auto__","initial-hierarchy-depth-budget","devtools.formatters.helpers\/pref","remaining-depth-budget","or__4131__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>"]}
|
||||
85
js/compiled/out/devtools/formatters/core.cljs
Normal file
85
js/compiled/out/devtools/formatters/core.cljs
Normal file
|
|
@ -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))
|
||||
1
js/compiled/out/devtools/formatters/core.cljs.cache.json
Normal file
1
js/compiled/out/devtools/formatters/core.cljs.cache.json
Normal file
File diff suppressed because one or more lines are too long
220
js/compiled/out/devtools/formatters/core.js
Normal file
220
js/compiled/out/devtools/formatters/core.js
Normal file
|
|
@ -0,0 +1,220 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__4120__auto__ = cljs.core.not.call(null,devtools.formatters.state.prevent_recursion_QMARK_.call(null));
|
||||
if(and__4120__auto__){
|
||||
var or__4131__auto__ = devtools.formatters.helpers.cljs_value_QMARK_.call(null,value);
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__auto__;
|
||||
} else {
|
||||
return devtools.formatters.templating.surrogate_QMARK_.call(null,value);
|
||||
}
|
||||
} else {
|
||||
return and__4120__auto__;
|
||||
}
|
||||
});
|
||||
devtools.formatters.core.header_STAR_ = (function devtools$formatters$core$header_STAR_(value){
|
||||
var json_ml = ((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 (e28118){var _e__25273__auto__ = e28118;
|
||||
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 (e28120){var _e__25273__auto__ = e28120;
|
||||
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,((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 (e28122){var _e__25273__auto__ = e28122;
|
||||
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 (e28124){var _e__25273__auto__ = e28124;
|
||||
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(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 (e28126){var _e__25273__auto__ = e28126;
|
||||
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 (e28128){var _e__25273__auto__ = e28128;
|
||||
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__orig_val__28130 = devtools.formatters.state._STAR_current_state_STAR_;
|
||||
var _STAR_current_state_STAR__temp_val__28131 = (function (){var or__4131__auto__ = config;
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__auto__;
|
||||
} else {
|
||||
return devtools.formatters.state.get_default_state.call(null);
|
||||
}
|
||||
})();
|
||||
devtools.formatters.state._STAR_current_state_STAR_ = _STAR_current_state_STAR__temp_val__28131;
|
||||
|
||||
try{return raw_fn.call(null,value);
|
||||
}finally {devtools.formatters.state._STAR_current_state_STAR_ = _STAR_current_state_STAR__orig_val__28130;
|
||||
}});
|
||||
});
|
||||
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__28133__delegate = function (args){
|
||||
try{return cljs.core.apply.call(null,f,args);
|
||||
}catch (e28132){var e = e28132;
|
||||
devtools.reporter.report_internal_error_BANG_.call(null,e,"an exception was raised during value formatting");
|
||||
|
||||
return null;
|
||||
}};
|
||||
var G__28133 = function (var_args){
|
||||
var args = null;
|
||||
if (arguments.length > 0) {
|
||||
var G__28134__i = 0, G__28134__a = new Array(arguments.length - 0);
|
||||
while (G__28134__i < G__28134__a.length) {G__28134__a[G__28134__i] = arguments[G__28134__i + 0]; ++G__28134__i;}
|
||||
args = new cljs.core.IndexedSeq(G__28134__a,0,null);
|
||||
}
|
||||
return G__28133__delegate.call(this,args);};
|
||||
G__28133.cljs$lang$maxFixedArity = 0;
|
||||
G__28133.cljs$lang$applyTo = (function (arglist__28135){
|
||||
var args = cljs.core.seq(arglist__28135);
|
||||
return G__28133__delegate(args);
|
||||
});
|
||||
G__28133.cljs$core$IFn$_invoke$arity$variadic = G__28133__delegate;
|
||||
return G__28133;
|
||||
})()
|
||||
;
|
||||
});
|
||||
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__4131__auto__ = devtools.prefs.pref.call(null,pre_handler_key);
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__auto__;
|
||||
} else {
|
||||
return cljs.core.identity;
|
||||
}
|
||||
})();
|
||||
var post_handler = (function (){var or__4131__auto__ = devtools.prefs.pref.call(null,post_handler_key);
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__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=1582812680758
|
||||
1
js/compiled/out/devtools/formatters/core.js.map
Normal file
1
js/compiled/out/devtools/formatters/core.js.map
Normal file
File diff suppressed because one or more lines are too long
118
js/compiled/out/devtools/formatters/helpers.cljs
Normal file
118
js/compiled/out/devtools/formatters/helpers.cljs
Normal file
|
|
@ -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 (.slice string 0 prefix-limit)
|
||||
postfix (.slice string (- (.-length string) postfix-limit))]
|
||||
(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))))
|
||||
File diff suppressed because one or more lines are too long
228
js/compiled/out/devtools/formatters/helpers.js
Normal file
228
js/compiled/out/devtools/formatters/helpers.js
Normal file
|
|
@ -0,0 +1,228 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__26259 = devtools.prefs.pref.call(null,v);
|
||||
v = G__26259;
|
||||
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__4120__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__4120__auto__){
|
||||
var and__4120__auto____$1 = (!(cljs.core.var_QMARK_.call(null,value)));
|
||||
if(and__4120__auto____$1){
|
||||
return devtools.munging.cljs_fn_QMARK_.call(null,value);
|
||||
} else {
|
||||
return and__4120__auto____$1;
|
||||
}
|
||||
} else {
|
||||
return and__4120__auto__;
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.has_formatting_protocol_QMARK_ = (function devtools$formatters$helpers$has_formatting_protocol_QMARK_(value){
|
||||
var or__4131__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 (e26262){var _e__25273__auto__ = e26262;
|
||||
return false;
|
||||
}})();
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__auto__;
|
||||
} else {
|
||||
var or__4131__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 (e26266){var _e__25273__auto__ = e26266;
|
||||
return false;
|
||||
}})();
|
||||
if(cljs.core.truth_(or__4131__auto____$1)){
|
||||
return or__4131__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 (e26268){var _e__25273__auto__ = e26268;
|
||||
return false;
|
||||
}}
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.cljs_type_QMARK_ = (function devtools$formatters$helpers$cljs_type_QMARK_(f){
|
||||
var and__4120__auto__ = goog.isObject(f);
|
||||
if(cljs.core.truth_(and__4120__auto__)){
|
||||
var and__4120__auto____$1 = (!(devtools.formatters.helpers.is_prototype_QMARK_.call(null,f)));
|
||||
if(and__4120__auto____$1){
|
||||
return f.cljs$lang$type;
|
||||
} else {
|
||||
return and__4120__auto____$1;
|
||||
}
|
||||
} else {
|
||||
return and__4120__auto__;
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.cljs_instance_QMARK_ = (function devtools$formatters$helpers$cljs_instance_QMARK_(value){
|
||||
var and__4120__auto__ = goog.isObject(value);
|
||||
if(cljs.core.truth_(and__4120__auto__)){
|
||||
return devtools.formatters.helpers.cljs_type_QMARK_.call(null,devtools.formatters.helpers.get_constructor.call(null,value));
|
||||
} else {
|
||||
return and__4120__auto__;
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.cljs_land_value_QMARK_ = (function devtools$formatters$helpers$cljs_land_value_QMARK_(value){
|
||||
var or__4131__auto__ = devtools.formatters.helpers.cljs_instance_QMARK_.call(null,value);
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__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__4120__auto__ = (function (){var or__4131__auto__ = devtools.formatters.helpers.cljs_land_value_QMARK_.call(null,value);
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__auto__;
|
||||
} else {
|
||||
return devtools.formatters.helpers.cljs_function_QMARK_.call(null,value);
|
||||
}
|
||||
})();
|
||||
if(cljs.core.truth_(and__4120__auto__)){
|
||||
return (((!(devtools.formatters.helpers.is_prototype_QMARK_.call(null,value)))) && ((!(devtools.formatters.helpers.is_js_symbol_QMARK_.call(null,value)))));
|
||||
} else {
|
||||
return and__4120__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__26270 = devtools.munging.parse_constructor_info.call(null,constructor_fn);
|
||||
var ns = cljs.core.nth.call(null,vec__26270,(0),null);
|
||||
var name = cljs.core.nth.call(null,vec__26270,(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__4120__auto__ = devtools.formatters.helpers.cljs_instance_QMARK_.call(null,value);
|
||||
if(cljs.core.truth_(and__4120__auto__)){
|
||||
return (!(devtools.formatters.helpers.instance_of_a_well_known_type_QMARK_.call(null,value)));
|
||||
} else {
|
||||
return and__4120__auto__;
|
||||
}
|
||||
});
|
||||
devtools.formatters.helpers.directly_printable_QMARK_ = (function devtools$formatters$helpers$directly_printable_QMARK_(value){
|
||||
return ((typeof value === 'string') || (typeof value === 'number') || (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__26273_SHARP_){
|
||||
return cljs.core._EQ_.call(null,devtools.formatters.helpers.pref.call(null,new cljs.core.Keyword(null,"more-marker","more-marker",-14717935)),p1__26273_SHARP_);
|
||||
}),template);
|
||||
});
|
||||
devtools.formatters.helpers.abbreviate_long_string = (function devtools$formatters$helpers$abbreviate_long_string(string,marker,prefix_limit,postfix_limit){
|
||||
var prefix = string.slice((0),prefix_limit);
|
||||
var postfix = string.slice((string.length - postfix_limit));
|
||||
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__5718__auto__ = devtools.formatters.helpers.pref.call(null,((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__5718__auto__)){
|
||||
var min_count = temp__5718__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__5718__auto__ = devtools.formatters.helpers.pref.call(null,pref_key);
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var render_pref = temp__5718__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=1582812679441
|
||||
1
js/compiled/out/devtools/formatters/helpers.js.map
Normal file
1
js/compiled/out/devtools/formatters/helpers.js.map
Normal file
File diff suppressed because one or more lines are too long
451
js/compiled/out/devtools/formatters/markup.cljs
Normal file
451
js/compiled/out/devtools/formatters/markup.cljs
Normal file
|
|
@ -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*)
|
||||
File diff suppressed because one or more lines are too long
1175
js/compiled/out/devtools/formatters/markup.js
Normal file
1175
js/compiled/out/devtools/formatters/markup.js
Normal file
File diff suppressed because one or more lines are too long
1
js/compiled/out/devtools/formatters/markup.js.map
Normal file
1
js/compiled/out/devtools/formatters/markup.js.map
Normal file
File diff suppressed because one or more lines are too long
145
js/compiled/out/devtools/formatters/printing.cljs
Normal file
145
js/compiled/out/devtools/formatters/printing.cljs
Normal file
|
|
@ -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))))
|
||||
File diff suppressed because one or more lines are too long
299
js/compiled/out/devtools/formatters/printing.js
Normal file
299
js/compiled/out/devtools/formatters/printing.js
Normal file
|
|
@ -0,0 +1,299 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__4736__auto__ = [];
|
||||
var len__4730__auto___26288 = arguments.length;
|
||||
var i__4731__auto___26289 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___26289 < len__4730__auto___26288)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___26289]));
|
||||
|
||||
var G__26290 = (i__4731__auto___26289 + (1));
|
||||
i__4731__auto___26289 = G__26290;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((2) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((2)),(0),null)):null);
|
||||
return devtools.formatters.printing.build_markup.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__4737__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: ",["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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.formatters.printing.build_markup.cljs$lang$applyTo = (function (seq26285){
|
||||
var G__26286 = cljs.core.first.call(null,seq26285);
|
||||
var seq26285__$1 = cljs.core.next.call(null,seq26285);
|
||||
var G__26287 = cljs.core.first.call(null,seq26285__$1);
|
||||
var seq26285__$2 = cljs.core.next.call(null,seq26285__$1);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__26286,G__26287,seq26285__$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__4131__auto__ = devtools.formatters.helpers.directly_printable_QMARK_.call(null,value);
|
||||
if(or__4131__auto__){
|
||||
return or__4131__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__4374__auto__,writer__4375__auto__,opt__4376__auto__){
|
||||
return cljs.core._write.call(null,writer__4375__auto__,"devtools.formatters.printing/TemplateWriter");
|
||||
});
|
||||
|
||||
/**
|
||||
* Positional factory function for 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__5718__auto__ = cljs.core.first.call(null,cljs.core.first.call(null,group));
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var tag = temp__5718__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__4120__auto__ = cljs.core.not.call(null,devtools.formatters.printing.already_reference_QMARK_.call(null,group));
|
||||
if(and__4120__auto__){
|
||||
var or__4131__auto__ = devtools.formatters.helpers.expandable_QMARK_.call(null,obj);
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__auto__;
|
||||
} else {
|
||||
return devtools.formatters.helpers.abbreviated_QMARK_.call(null,group);
|
||||
}
|
||||
} else {
|
||||
return and__4120__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__26291_SHARP_){
|
||||
return (!((cljs.core.meta.call(null,p1__26291_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),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__26292 = opts;
|
||||
var map__26292__$1 = (((((!((map__26292 == null))))?(((((map__26292.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__26292.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__26292):map__26292);
|
||||
var markup_db = cljs.core.get.call(null,map__26292__$1,new cljs.core.Keyword(null,"markup-db","markup-db",812838734));
|
||||
if(cljs.core.truth_((function (){var or__4131__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 (e26296){var _e__25273__auto__ = e26296;
|
||||
return false;
|
||||
}})();
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__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 (e26298){var _e__25273__auto__ = e26298;
|
||||
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__5718__auto__ = devtools.formatters.printing.build_markup.call(null,markup_db,new cljs.core.Keyword(null,"atomic","atomic",-120459460),obj);
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var atomic_markup = temp__5718__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__orig_val__26300 = devtools.formatters.state._STAR_current_state_STAR_;
|
||||
var _STAR_current_state_STAR__temp_val__26301 = devtools.formatters.state.get_current_state.call(null);
|
||||
devtools.formatters.state._STAR_current_state_STAR_ = _STAR_current_state_STAR__temp_val__26301;
|
||||
|
||||
try{var map__26302 = opts;
|
||||
var map__26302__$1 = (((((!((map__26302 == null))))?(((((map__26302.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__26302.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__26302):map__26302);
|
||||
var markup_db = cljs.core.get.call(null,map__26302__$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__orig_val__26300;
|
||||
}});
|
||||
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__5718__auto___26307 = devtools.formatters.state.get_managed_print_level.call(null);
|
||||
if(cljs.core.truth_(temp__5718__auto___26307)){
|
||||
var managed_print_level_26308 = temp__5718__auto___26307;
|
||||
var _STAR_print_level_STAR__orig_val__26305_26309 = cljs.core._STAR_print_level_STAR_;
|
||||
var _STAR_print_level_STAR__temp_val__26306_26310 = managed_print_level_26308;
|
||||
cljs.core._STAR_print_level_STAR_ = _STAR_print_level_STAR__temp_val__26306_26310;
|
||||
|
||||
try{devtools.formatters.state.update_current_state_BANG_.call(null,((function (_STAR_print_level_STAR__orig_val__26305_26309,_STAR_print_level_STAR__temp_val__26306_26310,managed_print_level_26308,temp__5718__auto___26307,writer,opts,job_fn){
|
||||
return (function (p1__26304_SHARP_){
|
||||
return devtools.formatters.state.set_managed_print_level.call(null,p1__26304_SHARP_,null);
|
||||
});})(_STAR_print_level_STAR__orig_val__26305_26309,_STAR_print_level_STAR__temp_val__26306_26310,managed_print_level_26308,temp__5718__auto___26307,writer,opts,job_fn))
|
||||
);
|
||||
|
||||
job_fn.call(null);
|
||||
}finally {cljs.core._STAR_print_level_STAR_ = _STAR_print_level_STAR__orig_val__26305_26309;
|
||||
}} 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=1582812679491
|
||||
1
js/compiled/out/devtools/formatters/printing.js.map
Normal file
1
js/compiled/out/devtools/formatters/printing.js.map
Normal file
File diff suppressed because one or more lines are too long
73
js/compiled/out/devtools/formatters/state.cljs
Normal file
73
js/compiled/out/devtools/formatters/state.cljs
Normal file
|
|
@ -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)))
|
||||
File diff suppressed because one or more lines are too long
106
js/compiled/out/devtools/formatters/state.js
Normal file
106
js/compiled/out/devtools/formatters/state.js
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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(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__4736__auto__ = [];
|
||||
var len__4730__auto___26279 = arguments.length;
|
||||
var i__4731__auto___26280 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___26280 < len__4730__auto___26279)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___26280]));
|
||||
|
||||
var G__26281 = (i__4731__auto___26280 + (1));
|
||||
i__4731__auto___26280 = G__26281;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.formatters.state.update_current_state_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
|
||||
});
|
||||
|
||||
devtools.formatters.state.update_current_state_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (f,args){
|
||||
if(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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.formatters.state.update_current_state_BANG_.cljs$lang$applyTo = (function (seq26277){
|
||||
var G__26278 = cljs.core.first.call(null,seq26277);
|
||||
var seq26277__$1 = cljs.core.next.call(null,seq26277);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__26278,seq26277__$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__26282_SHARP_){
|
||||
return (p1__26282_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=1582812679457
|
||||
1
js/compiled/out/devtools/formatters/state.js.map
Normal file
1
js/compiled/out/devtools/formatters/state.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/devtools\/formatters\/state.js","sources":["state.cljs?rel=1582812679457"],"lineCount":106,"mappings":";AAAA;;AAiBA,sDAAA,tDAAeA;AAEf,uDAAA,vDAAMC;AAAN,AACE,UAAA,wDAAA,vDAAOD;;AAET,8CAAA,9CAAME;AAAN,AAAA;;AAGA,8CAAA,9CAAME;AAAN,AAAA,GACS,AAACH;AADV;AAAA,AAAA,MAAA,KAAAE,MAAA;;;AAEEH;;AAEF,AAAA,uDAAA,+DAAAK,tHAAMM;AAAN,AAAA,IAAAL,qBAAA;AAAA,AAAA,IAAAC,0BAAA,AAAA;AAAA,AAAA,IAAAC,wBAAA;;AAAA,AAAA,GAAA,CAAAA,wBAAAD;AAAA,AAAA,AAAAD,wBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,wBAAA;;;;AAAA;;;;AAAA,IAAAC,uBAAA,EAAA,CAAA,MAAA,AAAAH,4BAAA,AAAA,KAAAI,qBAAA,AAAAJ,yBAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAAK,0FAAA,CAAA,UAAA,MAAAF;;;AAAA,AAAA,AAAA,4FAAA,5FAAME,uGAAuBM,EAAIC;AAAjC,AAAA,GACS,AAACjB;AADV;AAAA,AAAA,MAAA,KAAAE,MAAA;;;AAEE,OAAMH,sDAAgB,AAACmB,0BAAMF,EAAEjB,oDAAgBkB;;;AAFjD,AAAA,+EAAA,\/EAAMP;;AAAN;AAAA,AAAA,yEAAA,WAAAC,pFAAMD;AAAN,AAAA,IAAAE,WAAA,AAAAC,0BAAAF;IAAAA,eAAA,AAAAG,yBAAAH;AAAA,AAAA,IAAAI,qBAAA;AAAA,AAAA,OAAAA,wDAAAH,SAAAD;;;AAAA,AAMA,iEAAA,jEAAMQ,0IAAiCC;AAAvC,AACE,uFAAA,hFAACV,+DAAsBW,4EAAgBC,eAAKF;;AAE9C,gDAAA,hDAAMG;AAAN,AACE,OAAA,yFAAU,AAACpB;;AAEb,+CAAA,\/CAAMqB,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,AAAC1B;;AAEhC,kDAAA,lDAAM2B,4GAAuBC,MAAMC;AAAnC,AACE,GAAI,GAAA,QAAA,PAAOA;AACT,uCAAA,hCAACC,0BAAMF,sFAAyBC;;AAChC,wCAAA,jCAACE,2BAAOH;;;AAEZ,oDAAA,pDAAMI;AAAN,AACE,OAAA,iHAAsB,AAAChC;;AAEzB,oDAAA,pDAAMiC,gHAAyBL,MAAMC;AAArC,AACE,GAAI,GAAA,QAAA,PAAOA;AACT,uCAAA,hCAACC,0BAAMF,yFAA2BC;;AAClC,wCAAA,jCAACE,2BAAOH;;;AAEZ,6CAAA,7CAAMM;AAAN,AACE,OAAA,mGAAe,AAAClC;;AAElB,6CAAA,7CAAMmC,kGAAkBP,MAAMC;AAA9B,AACE,GAAI,GAAA,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__4736__auto__","len__4730__auto__","i__4731__auto__","argseq__4737__auto__","cljs.core\/IndexedSeq","devtools.formatters.state\/update-current-state!","seq26277","G__26278","cljs.core\/first","cljs.core\/next","self__4717__auto__","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__26282#","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"]}
|
||||
209
js/compiled/out/devtools/formatters/templating.cljs
Normal file
209
js/compiled/out/devtools/formatters/templating.cljs
Normal file
|
|
@ -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))
|
||||
File diff suppressed because one or more lines are too long
655
js/compiled/out/devtools/formatters/templating.js
Normal file
655
js/compiled/out/devtools/formatters/templating.js
Normal file
|
|
@ -0,0 +1,655 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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 x27760_27761 = value;
|
||||
x27760_27761.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 x27763_27764 = value;
|
||||
x27763_27764.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 x27766_27767 = value;
|
||||
x27766_27767.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){
|
||||
return ((devtools.formatters.templating.group_QMARK_.call(null,value)) && (cljs.core._EQ_.call(null,(value[(0)]),"object")));
|
||||
});
|
||||
devtools.formatters.templating.make_group = (function devtools$formatters$templating$make_group(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___27774 = arguments.length;
|
||||
var i__4731__auto___27775 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___27775 < len__4730__auto___27774)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___27775]));
|
||||
|
||||
var G__27776 = (i__4731__auto___27775 + (1));
|
||||
i__4731__auto___27775 = G__27776;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.formatters.templating.make_group.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__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__27770_27777 = cljs.core.seq.call(null,items);
|
||||
var chunk__27771_27778 = null;
|
||||
var count__27772_27779 = (0);
|
||||
var i__27773_27780 = (0);
|
||||
while(true){
|
||||
if((i__27773_27780 < count__27772_27779)){
|
||||
var item_27781 = cljs.core._nth.call(null,chunk__27771_27778,i__27773_27780);
|
||||
if((!((item_27781 == null)))){
|
||||
if(cljs.core.coll_QMARK_.call(null,item_27781)){
|
||||
(group["push"]).apply(group,devtools.formatters.templating.mark_as_group_BANG_.call(null,cljs.core.into_array.call(null,item_27781)));
|
||||
} else {
|
||||
group.push(devtools.formatters.helpers.pref.call(null,item_27781));
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
|
||||
var G__27782 = seq__27770_27777;
|
||||
var G__27783 = chunk__27771_27778;
|
||||
var G__27784 = count__27772_27779;
|
||||
var G__27785 = (i__27773_27780 + (1));
|
||||
seq__27770_27777 = G__27782;
|
||||
chunk__27771_27778 = G__27783;
|
||||
count__27772_27779 = G__27784;
|
||||
i__27773_27780 = G__27785;
|
||||
continue;
|
||||
} else {
|
||||
var temp__5720__auto___27786 = cljs.core.seq.call(null,seq__27770_27777);
|
||||
if(temp__5720__auto___27786){
|
||||
var seq__27770_27787__$1 = temp__5720__auto___27786;
|
||||
if(cljs.core.chunked_seq_QMARK_.call(null,seq__27770_27787__$1)){
|
||||
var c__4550__auto___27788 = cljs.core.chunk_first.call(null,seq__27770_27787__$1);
|
||||
var G__27789 = cljs.core.chunk_rest.call(null,seq__27770_27787__$1);
|
||||
var G__27790 = c__4550__auto___27788;
|
||||
var G__27791 = cljs.core.count.call(null,c__4550__auto___27788);
|
||||
var G__27792 = (0);
|
||||
seq__27770_27777 = G__27789;
|
||||
chunk__27771_27778 = G__27790;
|
||||
count__27772_27779 = G__27791;
|
||||
i__27773_27780 = G__27792;
|
||||
continue;
|
||||
} else {
|
||||
var item_27793 = cljs.core.first.call(null,seq__27770_27787__$1);
|
||||
if((!((item_27793 == null)))){
|
||||
if(cljs.core.coll_QMARK_.call(null,item_27793)){
|
||||
(group["push"]).apply(group,devtools.formatters.templating.mark_as_group_BANG_.call(null,cljs.core.into_array.call(null,item_27793)));
|
||||
} else {
|
||||
group.push(devtools.formatters.helpers.pref.call(null,item_27793));
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
|
||||
var G__27794 = cljs.core.next.call(null,seq__27770_27787__$1);
|
||||
var G__27795 = null;
|
||||
var G__27796 = (0);
|
||||
var G__27797 = (0);
|
||||
seq__27770_27777 = G__27794;
|
||||
chunk__27771_27778 = G__27795;
|
||||
count__27772_27779 = G__27796;
|
||||
i__27773_27780 = G__27797;
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return group;
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_group.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.formatters.templating.make_group.cljs$lang$applyTo = (function (seq27769){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq27769));
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_template = (function devtools$formatters$templating$make_template(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___27805 = arguments.length;
|
||||
var i__4731__auto___27806 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___27806 < len__4730__auto___27805)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___27806]));
|
||||
|
||||
var G__27807 = (i__4731__auto___27806 + (1));
|
||||
i__4731__auto___27806 = G__27807;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((2) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((2)),(0),null)):null);
|
||||
return devtools.formatters.templating.make_template.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__4737__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__27801_27808 = cljs.core.seq.call(null,children);
|
||||
var chunk__27802_27809 = null;
|
||||
var count__27803_27810 = (0);
|
||||
var i__27804_27811 = (0);
|
||||
while(true){
|
||||
if((i__27804_27811 < count__27803_27810)){
|
||||
var child_27812 = cljs.core._nth.call(null,chunk__27802_27809,i__27804_27811);
|
||||
if((!((child_27812 == null)))){
|
||||
if(cljs.core.coll_QMARK_.call(null,child_27812)){
|
||||
(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_27812))));
|
||||
} else {
|
||||
var temp__5718__auto___27813 = devtools.formatters.helpers.pref.call(null,child_27812);
|
||||
if(cljs.core.truth_(temp__5718__auto___27813)){
|
||||
var child_value_27814 = temp__5718__auto___27813;
|
||||
template.push(child_value_27814);
|
||||
} else {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
|
||||
var G__27815 = seq__27801_27808;
|
||||
var G__27816 = chunk__27802_27809;
|
||||
var G__27817 = count__27803_27810;
|
||||
var G__27818 = (i__27804_27811 + (1));
|
||||
seq__27801_27808 = G__27815;
|
||||
chunk__27802_27809 = G__27816;
|
||||
count__27803_27810 = G__27817;
|
||||
i__27804_27811 = G__27818;
|
||||
continue;
|
||||
} else {
|
||||
var temp__5720__auto___27819 = cljs.core.seq.call(null,seq__27801_27808);
|
||||
if(temp__5720__auto___27819){
|
||||
var seq__27801_27820__$1 = temp__5720__auto___27819;
|
||||
if(cljs.core.chunked_seq_QMARK_.call(null,seq__27801_27820__$1)){
|
||||
var c__4550__auto___27821 = cljs.core.chunk_first.call(null,seq__27801_27820__$1);
|
||||
var G__27822 = cljs.core.chunk_rest.call(null,seq__27801_27820__$1);
|
||||
var G__27823 = c__4550__auto___27821;
|
||||
var G__27824 = cljs.core.count.call(null,c__4550__auto___27821);
|
||||
var G__27825 = (0);
|
||||
seq__27801_27808 = G__27822;
|
||||
chunk__27802_27809 = G__27823;
|
||||
count__27803_27810 = G__27824;
|
||||
i__27804_27811 = G__27825;
|
||||
continue;
|
||||
} else {
|
||||
var child_27826 = cljs.core.first.call(null,seq__27801_27820__$1);
|
||||
if((!((child_27826 == null)))){
|
||||
if(cljs.core.coll_QMARK_.call(null,child_27826)){
|
||||
(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_27826))));
|
||||
} else {
|
||||
var temp__5718__auto___27827 = devtools.formatters.helpers.pref.call(null,child_27826);
|
||||
if(cljs.core.truth_(temp__5718__auto___27827)){
|
||||
var child_value_27828 = temp__5718__auto___27827;
|
||||
template.push(child_value_27828);
|
||||
} else {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
|
||||
var G__27829 = cljs.core.next.call(null,seq__27801_27820__$1);
|
||||
var G__27830 = null;
|
||||
var G__27831 = (0);
|
||||
var G__27832 = (0);
|
||||
seq__27801_27808 = G__27829;
|
||||
chunk__27802_27809 = G__27830;
|
||||
count__27803_27810 = G__27831;
|
||||
i__27804_27811 = G__27832;
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return template;
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_template.cljs$lang$maxFixedArity = (2);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.formatters.templating.make_template.cljs$lang$applyTo = (function (seq27798){
|
||||
var G__27799 = cljs.core.first.call(null,seq27798);
|
||||
var seq27798__$1 = cljs.core.next.call(null,seq27798);
|
||||
var G__27800 = cljs.core.first.call(null,seq27798__$1);
|
||||
var seq27798__$2 = cljs.core.next.call(null,seq27798__$1);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__27799,G__27800,seq27798__$2);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.concat_templates_BANG_ = (function devtools$formatters$templating$concat_templates_BANG_(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___27835 = arguments.length;
|
||||
var i__4731__auto___27836 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___27836 < len__4730__auto___27835)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___27836]));
|
||||
|
||||
var G__27837 = (i__4731__auto___27836 + (1));
|
||||
i__4731__auto___27836 = G__27837;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.formatters.templating.concat_templates_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.formatters.templating.concat_templates_BANG_.cljs$lang$applyTo = (function (seq27833){
|
||||
var G__27834 = cljs.core.first.call(null,seq27833);
|
||||
var seq27833__$1 = cljs.core.next.call(null,seq27833);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__27834,seq27833__$1);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.extend_template_BANG_ = (function devtools$formatters$templating$extend_template_BANG_(var_args){
|
||||
var args__4736__auto__ = [];
|
||||
var len__4730__auto___27840 = arguments.length;
|
||||
var i__4731__auto___27841 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___27841 < len__4730__auto___27840)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___27841]));
|
||||
|
||||
var G__27842 = (i__4731__auto___27841 + (1));
|
||||
i__4731__auto___27841 = G__27842;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.formatters.templating.extend_template_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.formatters.templating.extend_template_BANG_.cljs$lang$applyTo = (function (seq27838){
|
||||
var G__27839 = cljs.core.first.call(null,seq27838);
|
||||
var seq27838__$1 = cljs.core.next.call(null,seq27838);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__27839,seq27838__$1);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_surrogate = (function devtools$formatters$templating$make_surrogate(var_args){
|
||||
var G__27844 = arguments.length;
|
||||
switch (G__27844) {
|
||||
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 obj27846 = ({"target":object,"header":header,"body":body,"startIndex":(function (){var or__4131__auto__ = start_index;
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__auto__;
|
||||
} else {
|
||||
return (0);
|
||||
}
|
||||
})()});
|
||||
return obj27846;
|
||||
})());
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_surrogate.cljs$lang$maxFixedArity = 4;
|
||||
|
||||
devtools.formatters.templating.get_surrogate_target = (function devtools$formatters$templating$get_surrogate_target(surrogate){
|
||||
if(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(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(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(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__4736__auto__ = [];
|
||||
var len__4730__auto___27854 = arguments.length;
|
||||
var i__4731__auto___27855 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___27855 < len__4730__auto___27854)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___27855]));
|
||||
|
||||
var G__27856 = (i__4731__auto___27855 + (1));
|
||||
i__4731__auto___27855 = G__27856;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.formatters.templating.make_reference.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
|
||||
});
|
||||
|
||||
devtools.formatters.templating.make_reference.cljs$core$IFn$_invoke$arity$variadic = (function (object,p__27850){
|
||||
var vec__27851 = p__27850;
|
||||
var state_override_fn = cljs.core.nth.call(null,vec__27851,(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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.formatters.templating.make_reference.cljs$lang$applyTo = (function (seq27848){
|
||||
var G__27849 = cljs.core.first.call(null,seq27848);
|
||||
var seq27848__$1 = cljs.core.next.call(null,seq27848);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__27849,seq27848__$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__orig_val__27857 = cljs.core._STAR_print_level_STAR_;
|
||||
var _STAR_print_level_STAR__temp_val__27858 = (1);
|
||||
cljs.core._STAR_print_level_STAR_ = _STAR_print_level_STAR__temp_val__27858;
|
||||
|
||||
try{return cljs.core.pr_str.call(null,markup);
|
||||
}finally {cljs.core._STAR_print_level_STAR_ = _STAR_print_level_STAR__orig_val__27857;
|
||||
}});
|
||||
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(msg),"\n","Render path: ",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__27859 = name;
|
||||
switch (G__27859) {
|
||||
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 = ((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__27861 = tag;
|
||||
var html_tag = cljs.core.nth.call(null,vec__27861,(0),null);
|
||||
var style = cljs.core.nth.call(null,vec__27861,(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__orig_val__27864 = devtools.formatters.templating._STAR_current_render_path_STAR_;
|
||||
var _STAR_current_render_path_STAR__temp_val__27865 = cljs.core.conj.call(null,devtools.formatters.templating._STAR_current_render_path_STAR_,cljs.core.first.call(null,markup));
|
||||
devtools.formatters.templating._STAR_current_render_path_STAR_ = _STAR_current_render_path_STAR__temp_val__27865;
|
||||
|
||||
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__orig_val__27864;
|
||||
}}
|
||||
});
|
||||
devtools.formatters.templating.render_json_ml = (function devtools$formatters$templating$render_json_ml(markup){
|
||||
var _STAR_current_render_stack_STAR__orig_val__27866 = devtools.formatters.templating._STAR_current_render_stack_STAR_;
|
||||
var _STAR_current_render_path_STAR__orig_val__27867 = devtools.formatters.templating._STAR_current_render_path_STAR_;
|
||||
var _STAR_current_render_stack_STAR__temp_val__27868 = cljs.core.conj.call(null,devtools.formatters.templating._STAR_current_render_stack_STAR_,markup);
|
||||
var _STAR_current_render_path_STAR__temp_val__27869 = cljs.core.conj.call(null,devtools.formatters.templating._STAR_current_render_path_STAR_,"<render-json-ml>");
|
||||
devtools.formatters.templating._STAR_current_render_stack_STAR_ = _STAR_current_render_stack_STAR__temp_val__27868;
|
||||
|
||||
devtools.formatters.templating._STAR_current_render_path_STAR_ = _STAR_current_render_path_STAR__temp_val__27869;
|
||||
|
||||
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__orig_val__27867;
|
||||
|
||||
devtools.formatters.templating._STAR_current_render_stack_STAR_ = _STAR_current_render_stack_STAR__orig_val__27866;
|
||||
}});
|
||||
devtools.formatters.templating.assert_failed_markup_rendering = (function devtools$formatters$templating$assert_failed_markup_rendering(initial_value,value){
|
||||
throw (new Error(["Assert failed: ",["result of markup rendering must be a template,\n","resolved to ",devtools.util.pprint_str.call(null,value),"initial value: ",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__27870 = initial_value;
|
||||
var G__27871 = value.call(null);
|
||||
initial_value = G__27870;
|
||||
value = G__27871;
|
||||
continue;
|
||||
} else {
|
||||
if((value instanceof cljs.core.Keyword)){
|
||||
var G__27872 = initial_value;
|
||||
var G__27873 = devtools.formatters.helpers.pref.call(null,value);
|
||||
initial_value = G__27872;
|
||||
value = G__27873;
|
||||
continue;
|
||||
} else {
|
||||
if(cljs.core.sequential_QMARK_.call(null,value)){
|
||||
var G__27874 = initial_value;
|
||||
var G__27875 = devtools.formatters.templating.render_json_ml.call(null,value);
|
||||
initial_value = G__27874;
|
||||
value = G__27875;
|
||||
continue;
|
||||
} else {
|
||||
if(devtools.formatters.templating.template_QMARK_.call(null,value)){
|
||||
return value;
|
||||
} else {
|
||||
if(devtools.formatters.templating.surrogate_QMARK_.call(null,value)){
|
||||
return value;
|
||||
} else {
|
||||
if(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=1582812680548
|
||||
1
js/compiled/out/devtools/formatters/templating.js.map
Normal file
1
js/compiled/out/devtools/formatters/templating.js.map
Normal file
File diff suppressed because one or more lines are too long
155
js/compiled/out/devtools/hints.cljs
Normal file
155
js/compiled/out/devtools/hints.cljs
Normal file
|
|
@ -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*))))
|
||||
1
js/compiled/out/devtools/hints.cljs.cache.json
Normal file
1
js/compiled/out/devtools/hints.cljs.cache.json
Normal file
File diff suppressed because one or more lines are too long
195
js/compiled/out/devtools/hints.js
Normal file
195
js/compiled/out/devtools/hints.js
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__5718__auto__ = cljs.core.deref.call(null,devtools.hints.processed_errors);
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var val = temp__5718__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__4131__auto__ = devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"file-reader","file-reader",-450847664));
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__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__4131__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__4131__auto__)){
|
||||
return or__4131__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__28376 = top_item;
|
||||
var map__28376__$1 = (((((!((map__28376 == null))))?(((((map__28376.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__28376.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__28376):map__28376);
|
||||
var file = cljs.core.get.call(null,map__28376__$1,new cljs.core.Keyword(null,"file","file",-1269645878));
|
||||
var line = cljs.core.get.call(null,map__28376__$1,new cljs.core.Keyword(null,"line","line",212345235));
|
||||
var column = cljs.core.get.call(null,map__28376__$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 (e28375){var _e = e28375;
|
||||
return false;
|
||||
}});
|
||||
devtools.hints.type_error_to_string = (function devtools$hints$type_error_to_string(self){
|
||||
var temp__5718__auto___28378 = devtools.hints.get_processed_errors_BANG_.call(null);
|
||||
if(cljs.core.truth_(temp__5718__auto___28378)){
|
||||
var seen_errors_28379 = temp__5718__auto___28378;
|
||||
if(cljs.core.truth_(seen_errors_28379.has(self))){
|
||||
} else {
|
||||
seen_errors_28379.add(self);
|
||||
|
||||
var temp__5720__auto___28380 = devtools.hints.error_object_sense.call(null,self);
|
||||
if(cljs.core.truth_(temp__5720__auto___28380)){
|
||||
var sense_28381 = temp__5720__auto___28380;
|
||||
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_28381)].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__5720__auto__ = devtools.hints.error_object_sense.call(null,error);
|
||||
if(cljs.core.truth_(temp__5720__auto__)){
|
||||
var sense = temp__5720__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=1582812680957
|
||||
1
js/compiled/out/devtools/hints.js.map
Normal file
1
js/compiled/out/devtools/hints.js.map
Normal file
File diff suppressed because one or more lines are too long
616
js/compiled/out/devtools/munging.cljs
Normal file
616
js/compiled/out/devtools/munging.cljs
Normal file
|
|
@ -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))))
|
||||
1
js/compiled/out/devtools/munging.cljs.cache.json
Normal file
1
js/compiled/out/devtools/munging.cljs.cache.json
Normal file
File diff suppressed because one or more lines are too long
1084
js/compiled/out/devtools/munging.js
Normal file
1084
js/compiled/out/devtools/munging.js
Normal file
File diff suppressed because one or more lines are too long
1
js/compiled/out/devtools/munging.js.map
Normal file
1
js/compiled/out/devtools/munging.js.map
Normal file
File diff suppressed because one or more lines are too long
34
js/compiled/out/devtools/prefs.cljs
Normal file
34
js/compiled/out/devtools/prefs.cljs
Normal file
|
|
@ -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)))
|
||||
1
js/compiled/out/devtools/prefs.cljs.cache.json
Normal file
1
js/compiled/out/devtools/prefs.cljs.cache.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
["^ ","~:rename-macros",["^ "],"~:renames",["^ "],"~:use-macros",["^ ","~$emit-env-config","~$devtools.prefs","~$emit-external-config","^4"],"~:excludes",["~#set",[]],"~:name","^4","~:imports",null,"~:requires",["^ ","~$defaults","~$devtools.defaults","^<","^<"],"~:cljs.spec/speced-vars",[],"~:uses",null,"~:defs",["^ ","~$merge-prefs!",["^ ","~:protocol-inline",null,"~:meta",["^ ","~:file","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/prefs.cljs","~:line",29,"~:column",7,"~:end-line",29,"~:end-column",19,"~:arglists",["~#list",["~$quote",["^I",[["~$m"]]]]]],"^8","~$devtools.prefs/merge-prefs!","^C","js/compiled/out/devtools/prefs.cljs","^G",19,"~:method-params",["^I",[["~$m"]]],"~:protocol-impl",null,"~:arglists-meta",["^I",[null,null]],"^E",1,"~:variadic?",false,"^D",29,"~:ret-tag","~$any","^F",29,"~:max-fixed-arity",1,"~:fn-var",true,"^H",["^I",["^J",["^I",[["~$m"]]]]]],"~$external-config",["^ ","^8","~$devtools.prefs/external-config","^C","js/compiled/out/devtools/prefs.cljs","^D",7,"^E",1,"^F",7,"^G",21,"^B",["^ ","^C","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/prefs.cljs","^D",7,"^E",6,"^F",7,"^G",21],"~:tag","~$cljs.core/Delay"],"~$get-prefs",["^ ","^A",null,"^B",["^ ","^C","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/prefs.cljs","^D",18,"^E",7,"^F",18,"^G",16,"^H",["^I",["^J",["^I",[[]]]]]],"^8","~$devtools.prefs/get-prefs","^C","js/compiled/out/devtools/prefs.cljs","^G",16,"^L",["^I",[[]]],"^M",null,"^N",["^I",[null,null]],"^E",1,"^O",false,"^D",18,"^P","^W","^F",18,"^R",0,"^S",true,"^H",["^I",["^J",["^I",[[]]]]]],"~$initial-config",["^ ","^8","~$devtools.prefs/initial-config","^C","js/compiled/out/devtools/prefs.cljs","^D",9,"^E",1,"^F",9,"^G",20,"^B",["^ ","^C","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/prefs.cljs","^D",9,"^E",6,"^F",9,"^G",20],"^V","^W"],"~$set-pref!",["^ ","^A",null,"^B",["^ ","^C","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/prefs.cljs","^D",26,"^E",7,"^F",26,"^G",16,"^H",["^I",["^J",["^I",[["~$key","~$val"]]]]]],"^8","~$devtools.prefs/set-pref!","^C","js/compiled/out/devtools/prefs.cljs","^G",16,"^L",["^I",[["^11","^12"]]],"^M",null,"^N",["^I",[null,null]],"^E",1,"^O",false,"^D",26,"^P","^Q","^F",26,"^R",2,"^S",true,"^H",["^I",["^J",["^I",[["^11","^12"]]]]]],"~$default-config",["^ ","^8","~$devtools.prefs/default-config","^C","js/compiled/out/devtools/prefs.cljs","^D",6,"^E",1,"^F",6,"^G",20,"^B",["^ ","^C","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/prefs.cljs","^D",6,"^E",6,"^F",6,"^G",20],"^V","^W"],"~$pref",["^ ","^A",null,"^B",["^ ","^C","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/prefs.cljs","^D",23,"^E",7,"^F",23,"^G",11,"^H",["^I",["^J",["^I",[["^11"]]]]]],"^8","~$devtools.prefs/pref","^C","js/compiled/out/devtools/prefs.cljs","^G",11,"^L",["^I",[["^11"]]],"^M",null,"^N",["^I",[null,null]],"^E",1,"^O",false,"^D",23,"^P","^Q","^F",23,"^R",1,"^S",true,"^H",["^I",["^J",["^I",[["^11"]]]]]],"~$*current-config*",["^ ","^B",["^ ","^C","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/prefs.cljs","^D",11,"^E",16,"^F",11,"^G",32,"~:dynamic",true],"^8","~$devtools.prefs/*current-config*","^C","js/compiled/out/devtools/prefs.cljs","^G",32,"^E",1,"^19",true,"^D",11,"^F",11,"^V","^W"],"~$set-prefs!",["^ ","^A",null,"^B",["^ ","^C","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/prefs.cljs","^D",15,"^E",7,"^F",15,"^G",17,"^H",["^I",["^J",["^I",[["~$new-prefs"]]]]]],"^8","~$devtools.prefs/set-prefs!","^C","js/compiled/out/devtools/prefs.cljs","^G",17,"^L",["^I",[["^1<"]]],"^M",null,"^N",["^I",[null,null]],"^E",1,"^O",false,"^D",15,"^F",15,"^R",1,"^S",true,"^H",["^I",["^J",["^I",[["^1<"]]]]]],"~$update-pref!",["^ ","^A",null,"^B",["^ ","^C","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/prefs.cljs","^D",32,"^E",7,"^F",32,"^G",19,"^H",["^I",["^J",["^I",[["^11","~$f","~$&","~$args"]]]]],"~:top-fn",["^ ","^O",true,"~:fixed-arity",2,"^R",2,"^L",[["^I",["^11","~$f","^1?"]]],"^H",["^I",[["^11","~$f","~$&","^1?"]]],"^N",["^I",[null]]]],"^8","~$devtools.prefs/update-pref!","^C","js/compiled/out/devtools/prefs.cljs","^G",19,"^1@",["^ ","^O",true,"^1A",2,"^R",2,"^L",[["^I",["^11","~$f","^1?"]]],"^H",["^I",[["^11","~$f","~$&","^1?"]]],"^N",["^I",[null]]],"^L",[["^I",["^11","~$f","^1?"]]],"^M",null,"^1A",2,"^N",["^I",[null]],"^E",1,"^O",true,"~:methods",[["^ ","^1A",2,"^O",true,"^V","^Q"]],"^D",32,"^P","^Q","^F",32,"^R",2,"^S",true,"^H",["^I",[["^11","~$f","~$&","^1?"]]]],"~$env-config",["^ ","^8","~$devtools.prefs/env-config","^C","js/compiled/out/devtools/prefs.cljs","^D",8,"^E",1,"^F",8,"^G",16,"^B",["^ ","^C","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/prefs.cljs","^D",8,"^E",6,"^F",8,"^G",16],"^V","^W"]],"~:cljs.spec/registry-ref",[],"~:require-macros",["^ ","^4","^4","^;","^<","^<","^<"],"~:doc",null]
|
||||
78
js/compiled/out/devtools/prefs.js
Normal file
78
js/compiled/out/devtools/prefs.js
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__4736__auto__ = [];
|
||||
var len__4730__auto___26107 = arguments.length;
|
||||
var i__4731__auto___26108 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___26108 < len__4730__auto___26107)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___26108]));
|
||||
|
||||
var G__26109 = (i__4731__auto___26108 + (1));
|
||||
i__4731__auto___26108 = G__26109;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((2) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((2)),(0),null)):null);
|
||||
return devtools.prefs.update_pref_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__4737__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);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.prefs.update_pref_BANG_.cljs$lang$applyTo = (function (seq26104){
|
||||
var G__26105 = cljs.core.first.call(null,seq26104);
|
||||
var seq26104__$1 = cljs.core.next.call(null,seq26104);
|
||||
var G__26106 = cljs.core.first.call(null,seq26104__$1);
|
||||
var seq26104__$2 = cljs.core.next.call(null,seq26104__$1);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__26105,G__26106,seq26104__$2);
|
||||
});
|
||||
|
||||
|
||||
//# sourceMappingURL=prefs.js.map?rel=1582812679293
|
||||
1
js/compiled/out/devtools/prefs.js.map
Normal file
1
js/compiled/out/devtools/prefs.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/devtools\/prefs.js","sources":["prefs.cljs?rel=1582812679294"],"lineCount":78,"mappings":";AAAA;;;AAKA,AAAKA,gCAAe,KAAAC,gBAAA;AAAA,AAAA,OAAAC,0BAAQC;GAAR;AACpB,AAAKC,iCAAgB,KAAAH,gBAAA;AAAA,AAAO,AAAA;GAAP;AACrB,AAAKI,4BAAW,KAAAJ,gBAAA;AAAA,AAAO,AAAA;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,qBAAA;AAAA,AAAA,IAAAC,0BAAA,AAAA;AAAA,AAAA,IAAAC,wBAAA;;AAAA,AAAA,GAAA,CAAAA,wBAAAD;AAAA,AAAA,AAAAD,wBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,wBAAA;;;;AAAA;;;;AAAA,IAAAC,uBAAA,EAAA,CAAA,MAAA,AAAAH,4BAAA,AAAA,KAAAI,qBAAA,AAAAJ,yBAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAAK,sEAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAAF;;;AAAA,AAAA,AAAA,wEAAA,xEAAME,mFAAcZ,IAAImB,EAAIC;AAA5B,AACE,IAAMC,UAAQ,AAACC,0BAAMH,EAAE,AAACpB,8BAAKC,KAAKoB;AAAlC,AACE,OAACnB,wCAAUD,IAAIqB;;;AAFnB,AAAA,2DAAA,3DAAMT;;AAAN;AAAA,AAAA,qDAAA,WAAAC,hEAAMD;AAAN,AAAA,IAAAE,WAAA,AAAAC,0BAAAF;IAAAA,eAAA,AAAAG,yBAAAH;IAAAI,WAAA,AAAAF,0BAAAF;IAAAA,eAAA,AAAAG,yBAAAH;AAAA,AAAA,IAAAK,qBAAA;AAAA,AAAA,OAAAA,wDAAAJ,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__4736__auto__","len__4730__auto__","i__4731__auto__","argseq__4737__auto__","cljs.core\/IndexedSeq","devtools.prefs\/update-pref!","seq26104","G__26105","cljs.core\/first","cljs.core\/next","G__26106","self__4717__auto__","f","args","new-val","cljs.core\/apply"]}
|
||||
11
js/compiled/out/devtools/preload.cljs
Normal file
11
js/compiled/out/devtools/preload.cljs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
(ns devtools.preload
|
||||
(:require [devtools.prefs :as prefs]
|
||||
[devtools.core :as core]))
|
||||
|
||||
; this namespace is intended to be included in cljs compiler :preloads
|
||||
; overrides for default configuration can be specified in :external-config > :devtools/config
|
||||
; see https://github.com/binaryage/cljs-devtools/blob/master/docs/installation.md#install-it-via-preloads
|
||||
; https://github.com/binaryage/cljs-devtools/blob/master/docs/configuration.md#configuration-via-preloads
|
||||
|
||||
(if-not (prefs/pref :suppress-preload-install)
|
||||
(core/install!))
|
||||
1
js/compiled/out/devtools/preload.cljs.cache.json
Normal file
1
js/compiled/out/devtools/preload.cljs.cache.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
["^ ","~:rename-macros",["^ "],"~:renames",["^ "],"~:use-macros",["^ "],"~:excludes",["~#set",[]],"~:name","~$devtools.preload","~:imports",null,"~:requires",["^ ","~$prefs","~$devtools.prefs","^:","^:","~$core","~$devtools.core","^<","^<"],"~:cljs.spec/speced-vars",[],"~:uses",null,"~:defs",["^ "],"~:cljs.spec/registry-ref",[],"~:require-macros",["^ ","^9","^:","^:","^:"],"~:cljs.analyzer/constants",["^ ","~:seen",["^4",["~:suppress-preload-install"]],"~:order",["^D"]],"~:doc",null]
|
||||
11
js/compiled/out/devtools/preload.js
Normal file
11
js/compiled/out/devtools/preload.js
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
goog.provide('devtools.preload');
|
||||
goog.require('cljs.core');
|
||||
goog.require('devtools.prefs');
|
||||
goog.require('devtools.core');
|
||||
if(cljs.core.not.call(null,devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"suppress-preload-install","suppress-preload-install",1724845090)))){
|
||||
devtools.core.install_BANG_.call(null);
|
||||
} else {
|
||||
}
|
||||
|
||||
//# sourceMappingURL=preload.js.map?rel=1582812680994
|
||||
1
js/compiled/out/devtools/preload.js.map
Normal file
1
js/compiled/out/devtools/preload.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/devtools\/preload.js","sources":["preload.cljs?rel=1582812680994"],"lineCount":11,"mappings":";AAAA;;;;AASA,GAAA,AAAAA,wBAAQ,8BAAA,9BAACC;AACP,AAACC;;AADH","names":["cljs.core\/not","devtools.prefs\/pref","devtools.core\/install!"]}
|
||||
15
js/compiled/out/devtools/protocols.cljs
Normal file
15
js/compiled/out/devtools/protocols.cljs
Normal file
|
|
@ -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]))
|
||||
1
js/compiled/out/devtools/protocols.cljs.cache.json
Normal file
1
js/compiled/out/devtools/protocols.cljs.cache.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
["^ ","~:rename-macros",["^ "],"~:renames",["^ "],"~:use-macros",["^ "],"~:excludes",["~#set",[]],"~:name","~$devtools.protocols","~:imports",null,"~:requires",null,"~:cljs.spec/speced-vars",[],"~:uses",null,"~:defs",["^ ","~$ITemplate",["^ ","~:meta",["^ ","~:protocol-symbol",true,"~:file","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/protocols.cljs","~:end-column",23,"~:column",14,"~:line",3,"~:protocol-info",["^ ","~:methods",["^ "]],"~:end-line",3,"~:doc","Marker protocol indicating a devtools template.","~:jsdoc",["~#list",["@interface"]]],"^>",true,"^5","~$devtools.protocols/ITemplate","^?","js/compiled/out/devtools/protocols.cljs","^@",23,"^A",1,"^B",3,"^C",["^ ","^D",["^ "]],"~:info",null,"^E",3,"~:tag","~$any","~:impls",["^4",[]],"^F","Marker protocol indicating a devtools template.","^G",["^H",["@interface"]]],"~$IGroup",["^ ","^=",["^ ","^>",true,"^?","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/protocols.cljs","^@",20,"^A",14,"^B",6,"^C",["^ ","^D",["^ "]],"^E",6,"^F","Marker protocol indicating a devtools group.","^G",["^H",["@interface"]]],"^>",true,"^5","~$devtools.protocols/IGroup","^?","js/compiled/out/devtools/protocols.cljs","^@",20,"^A",1,"^B",6,"^C",["^ ","^D",["^ "]],"^J",null,"^E",6,"^K","^L","^M",["^4",[]],"^F","Marker protocol indicating a devtools group.","^G",["^H",["@interface"]]],"~$ISurrogate",["^ ","^=",["^ ","^>",true,"^?","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/protocols.cljs","^@",24,"^A",14,"^B",9,"^C",["^ ","^D",["^ "]],"^E",9,"^F","Marker protocol indicating a devtools surrogate object.","^G",["^H",["@interface"]]],"^>",true,"^5","~$devtools.protocols/ISurrogate","^?","js/compiled/out/devtools/protocols.cljs","^@",24,"^A",1,"^B",9,"^C",["^ ","^D",["^ "]],"^J",null,"^E",9,"^K","^L","^M",["^4",[]],"^F","Marker protocol indicating a devtools surrogate object.","^G",["^H",["@interface"]]],"~$IFormat",["^ ","^=",["^ ","^?","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/protocols.cljs","^B",12,"^A",14,"^E",12,"^@",21,"^>",true,"^G",["^H",["@interface"]],"^C",["^ ","^D",["^ ","~$-header",[["~$value"]],"~$-has-body",[["^T"]],"~$-body",[["^T"]]]]],"^>",true,"^5","~$devtools.protocols/IFormat","^?","js/compiled/out/devtools/protocols.cljs","^@",21,"^A",1,"^B",12,"^C",["^ ","^D",["^ ","^S",[["^T"]],"^U",[["^T"]],"^V",[["^T"]]]],"^J",null,"^E",12,"^K","^L","^M",["^4",[]],"^G",["^H",["@interface"]]],"^S",["^ ","~:protocol-inline",null,"^=",["^ ","^?","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/protocols.cljs","^B",13,"^A",4,"^E",13,"^@",11,"~:protocol","^W","^F",null,"~:arglists",["^H",["~$quote",["^H",[["^T"]]]]]],"^Y","^W","^5","~$devtools.protocols/-header","^?","js/compiled/out/devtools/protocols.cljs","^@",11,"~:method-params",["^H",[["^T"]]],"~:protocol-impl",null,"~:arglists-meta",["^H",[null,null]],"^A",1,"~:variadic?",false,"^B",12,"~:ret-tag","^L","^E",13,"~:max-fixed-arity",1,"~:fn-var",true,"^Z",["^H",["^[",["^H",[["^T"]]]]],"^F",null],"^U",["^ ","^X",null,"^=",["^ ","^?","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/protocols.cljs","^B",14,"^A",4,"^E",14,"^@",13,"^Y","^W","^F",null,"^Z",["^H",["^[",["^H",[["^T"]]]]]],"^Y","^W","^5","~$devtools.protocols/-has-body","^?","js/compiled/out/devtools/protocols.cljs","^@",13,"^11",["^H",[["^T"]]],"^12",null,"^13",["^H",[null,null]],"^A",1,"^14",false,"^B",12,"^15","^L","^E",14,"^16",1,"^17",true,"^Z",["^H",["^[",["^H",[["^T"]]]]],"^F",null],"^V",["^ ","^X",null,"^=",["^ ","^?","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/protocols.cljs","^B",15,"^A",4,"^E",15,"^@",9,"^Y","^W","^F",null,"^Z",["^H",["^[",["^H",[["^T"]]]]]],"^Y","^W","^5","~$devtools.protocols/-body","^?","js/compiled/out/devtools/protocols.cljs","^@",9,"^11",["^H",[["^T"]]],"^12",null,"^13",["^H",[null,null]],"^A",1,"^14",false,"^B",12,"^15","^L","^E",15,"^16",1,"^17",true,"^Z",["^H",["^[",["^H",[["^T"]]]]],"^F",null]],"~:cljs.spec/registry-ref",[],"~:require-macros",null,"^F",null]
|
||||
89
js/compiled/out/devtools/protocols.js
Normal file
89
js/compiled/out/devtools/protocols.js
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__4433__auto__ = (((value == null))?null:value);
|
||||
var m__4434__auto__ = (devtools.protocols._header[goog.typeOf(x__4433__auto__)]);
|
||||
if((!((m__4434__auto__ == null)))){
|
||||
return m__4434__auto__.call(null,value);
|
||||
} else {
|
||||
var m__4431__auto__ = (devtools.protocols._header["_"]);
|
||||
if((!((m__4431__auto__ == null)))){
|
||||
return m__4431__auto__.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__4433__auto__ = (((value == null))?null:value);
|
||||
var m__4434__auto__ = (devtools.protocols._has_body[goog.typeOf(x__4433__auto__)]);
|
||||
if((!((m__4434__auto__ == null)))){
|
||||
return m__4434__auto__.call(null,value);
|
||||
} else {
|
||||
var m__4431__auto__ = (devtools.protocols._has_body["_"]);
|
||||
if((!((m__4431__auto__ == null)))){
|
||||
return m__4431__auto__.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__4433__auto__ = (((value == null))?null:value);
|
||||
var m__4434__auto__ = (devtools.protocols._body[goog.typeOf(x__4433__auto__)]);
|
||||
if((!((m__4434__auto__ == null)))){
|
||||
return m__4434__auto__.call(null,value);
|
||||
} else {
|
||||
var m__4431__auto__ = (devtools.protocols._body["_"]);
|
||||
if((!((m__4431__auto__ == null)))){
|
||||
return m__4431__auto__.call(null,value);
|
||||
} else {
|
||||
throw cljs.core.missing_protocol.call(null,"IFormat.-body",value);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//# sourceMappingURL=protocols.js.map?rel=1582812679003
|
||||
1
js/compiled/out/devtools/protocols.js.map
Normal file
1
js/compiled/out/devtools/protocols.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/devtools\/protocols.js","sources":["protocols.cljs?rel=1582812679003"],"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,7BAAaS;;AAAb,6BAAA,7BACGN,kEAASO;AADZ,AAAA,GAAA,EAAA,GAAA,UAAA,aAAA,GAAA,CAAA,oDAAA,9EACYA,0BAAAA;AADZ,OACYA,iDAAAA;;AADZ,IAAAT,kBAAA,EAAA,UAAA,OAAA,hBACYS,qBAAAA;IADZR,kBAAA,CAAAC,2BAAA,AAAAC,YAAAH;AAAA,AAAA,GAAA,GAAA,CAAAC,mBAAA;AAAA,OAAAA,0BACYQ;;AADZ,IAAAL,kBAAA,CAAAF,2BAAA;AAAA,AAAA,GAAA,GAAA,CAAAE,mBAAA;AAAA,OAAAA,0BACYK;;AADZ,MAAA,AAAAJ,qCAAA,kBACYI;;;;;;AADZ,+BAAA,\/BAEGH,sEAAWG;AAFd,AAAA,GAAA,EAAA,GAAA,UAAA,aAAA,GAAA,CAAA,sDAAA,hFAEcA,0BAAAA;AAFd,OAEcA,mDAAAA;;AAFd,IAAAT,kBAAA,EAAA,UAAA,OAAA,hBAEcS,qBAAAA;IAFdR,kBAAA,CAAAK,6BAAA,AAAAH,YAAAH;AAAA,AAAA,GAAA,GAAA,CAAAC,mBAAA;AAAA,OAAAA,0BAEcQ;;AAFd,IAAAL,kBAAA,CAAAE,6BAAA;AAAA,AAAA,GAAA,GAAA,CAAAF,mBAAA;AAAA,OAAAA,0BAEcK;;AAFd,MAAA,AAAAJ,qCAAA,oBAEcI;;;;;;AAFd,2BAAA,3BAGGF,8DAAOE;AAHV,AAAA,GAAA,EAAA,GAAA,UAAA,aAAA,GAAA,CAAA,kDAAA,5EAGUA,0BAAAA;AAHV,OAGUA,+CAAAA;;AAHV,IAAAT,kBAAA,EAAA,UAAA,OAAA,hBAGUS,qBAAAA;IAHVR,kBAAA,CAAAM,yBAAA,AAAAJ,YAAAH;AAAA,AAAA,GAAA,GAAA,CAAAC,mBAAA;AAAA,OAAAA,0BAGUQ;;AAHV,IAAAL,kBAAA,CAAAG,yBAAA;AAAA,AAAA,GAAA,GAAA,CAAAH,mBAAA;AAAA,OAAAA,0BAGUK;;AAHV,MAAA,AAAAJ,qCAAA,gBAGUI;;;;;;AAHV","names":["devtools.protocols\/ITemplate","devtools.protocols\/IGroup","devtools.protocols\/ISurrogate","x__4433__auto__","m__4434__auto__","devtools.protocols\/-header","goog\/typeOf","m__4431__auto__","cljs.core\/missing-protocol","devtools.protocols\/-has-body","devtools.protocols\/-body","devtools.protocols\/IFormat","value"]}
|
||||
35
js/compiled/out/devtools/reporter.cljs
Normal file
35
js/compiled/out/devtools/reporter.cljs
Normal file
|
|
@ -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)))))
|
||||
1
js/compiled/out/devtools/reporter.cljs.cache.json
Normal file
1
js/compiled/out/devtools/reporter.cljs.cache.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
["^ ","~:rename-macros",["^ "],"~:renames",["^ "],"~:externs",["^ ","~$Error",["^ "]],"~:use-macros",["^ ","~$oget","~$devtools.oops"],"~:excludes",["~#set",[]],"~:name","~$devtools.reporter","~:imports",null,"~:requires",["^ ","~$util","~$devtools.util","^>","^>","~$context","~$devtools.context","^@","^@"],"~:cljs.spec/speced-vars",[],"~:uses",null,"~:defs",["^ ","~$issues-url",["^ ","^9","~$devtools.reporter/issues-url","~:file","js/compiled/out/devtools/reporter.cljs","~:line",6,"~:column",1,"~:end-line",6,"~:end-column",16,"~:meta",["^ ","^F","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/reporter.cljs","^G",6,"^H",6,"^I",6,"^J",16],"~:tag","~$string"],"~$report-internal-error!",["^ ","~:protocol-inline",null,"^K",["^ ","^F","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/reporter.cljs","^G",10,"^H",7,"^I",10,"^J",29,"~:arglists",["~#list",["~$quote",["^Q",[["~$e","~$&",["^?","~$footer"]]]]]],"~:top-fn",["^ ","~:variadic?",true,"~:fixed-arity",1,"~:max-fixed-arity",1,"~:method-params",[["^Q",["~$e",["^?","^S"]]]],"^P",["^Q",[["~$e","~$&",["^?","^S"]]]],"~:arglists-meta",["^Q",[null]]]],"^9","~$devtools.reporter/report-internal-error!","^F","js/compiled/out/devtools/reporter.cljs","^J",29,"^T",["^ ","^U",true,"^V",1,"^W",1,"^X",[["^Q",["~$e",["^?","^S"]]]],"^P",["^Q",[["~$e","~$&",["^?","^S"]]]],"^Y",["^Q",[null]]],"^X",[["^Q",["~$e",["^?","^S"]]]],"~:protocol-impl",null,"^V",1,"^Y",["^Q",[null]],"^H",1,"^U",true,"~:methods",[["^ ","^V",1,"^U",true]],"^G",10,"~:ret-tag","~$any","^I",10,"^W",1,"~:fn-var",true,"^P",["^Q",[["~$e","~$&",["^?","^S"]]]]]],"~:cljs.spec/registry-ref",[],"~:require-macros",["^ ","^6","^6"],"~:doc",null]
|
||||
81
js/compiled/out/devtools/reporter.js
Normal file
81
js/compiled/out/devtools/reporter.js
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__4736__auto__ = [];
|
||||
var len__4730__auto___28084 = arguments.length;
|
||||
var i__4731__auto___28085 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___28085 < len__4730__auto___28084)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___28085]));
|
||||
|
||||
var G__28086 = (i__4731__auto___28085 + (1));
|
||||
i__4731__auto___28085 = G__28086;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((1) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((1)),(0),null)):null);
|
||||
return devtools.reporter.report_internal_error_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__4737__auto__);
|
||||
});
|
||||
|
||||
devtools.reporter.report_internal_error_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (e,p__28079){
|
||||
var vec__28080 = p__28079;
|
||||
var context = cljs.core.nth.call(null,vec__28080,(0),null);
|
||||
var footer = cljs.core.nth.call(null,vec__28080,(1),null);
|
||||
var console = devtools.context.get_console.call(null);
|
||||
try{var message = (((e instanceof Error))?(function (){var or__4131__auto__ = e.message;
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__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 ",devtools.util.get_lib_info.call(null),(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: ",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 (e28083){var e__$1 = e28083;
|
||||
return console.error("FATAL: report-internal-error! failed",e__$1);
|
||||
}});
|
||||
|
||||
devtools.reporter.report_internal_error_BANG_.cljs$lang$maxFixedArity = (1);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.reporter.report_internal_error_BANG_.cljs$lang$applyTo = (function (seq28077){
|
||||
var G__28078 = cljs.core.first.call(null,seq28077);
|
||||
var seq28077__$1 = cljs.core.next.call(null,seq28077);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__28078,seq28077__$1);
|
||||
});
|
||||
|
||||
|
||||
//# sourceMappingURL=reporter.js.map?rel=1582812680716
|
||||
1
js/compiled/out/devtools/reporter.js.map
Normal file
1
js/compiled/out/devtools/reporter.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/devtools\/reporter.js","sources":["reporter.cljs?rel=1582812680716"],"lineCount":81,"mappings":";AAAA;;;;AAKA,+BAAA,\/BAAKA;AAIL,AAAA,gDAAA,wDAAAC,xGAAMM;AAAN,AAAA,IAAAL,qBAAA;AAAA,AAAA,IAAAC,0BAAA,AAAA;AAAA,AAAA,IAAAC,wBAAA;;AAAA,AAAA,GAAA,CAAAA,wBAAAD;AAAA,AAAA,AAAAD,wBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,wBAAA;;;;AAAA;;;;AAAA,IAAAC,uBAAA,EAAA,CAAA,MAAA,AAAAH,4BAAA,AAAA,KAAAI,qBAAA,AAAAJ,yBAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAAK,mFAAA,CAAA,UAAA,MAAAF;;;AAAA,AAAA,AAAA,qFAAA,aAAAG,lGAAMD,gGAAwBS;AAA9B,AAAA,IAAAP,aAAAD;cAAA,AAAAE,wBAAAD,WAAA,IAAA,jDAAmCQ;aAAnC,AAAAP,wBAAAD,WAAA,IAAA,hDAA2CS;AAA3C,AACE,IAAMC,UAAQ,AAACC;AAAf,AACE,IAAA,AACE,IAAME,UAAQ,EAAI,cAAWC,bAASP,qBACtB,iBAAAQ,mBAAI,AAAWR;AAAf,AAAA,oBAAAQ;AAAAA;;AAAkBR;;KAClBA;aAFhB,CAAA,4BAAA,uFAAA,7HAGMS,yIAGY,CAAA,gDAASH;IACrBI,cAAY,CAAA,qJAAA,\/IAAW,AAACC,sCAAmB,oGAAA,lFAAIV,SAAQ,CAAA,0DAAA,TAAUA;IACjEW,aAAW,EAAI,GAAA,WAAA,VAAOV,mBACTA,OACA,CAAA,OAAA,QAAA,iCAAqDlB;cAVxE,VAWM6B,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,wEAAA,xEAAMT;;AAAN;AAAA,AAAA,kEAAA,WAAAI,7EAAMJ;AAAN,AAAA,IAAAK,WAAA,AAAAC,0BAAAF;IAAAA,eAAA,AAAAG,yBAAAH;AAAA,AAAA,IAAAI,qBAAA;AAAA,AAAA,OAAAA,wDAAAH,SAAAD;;;AAAA","names":["devtools.reporter\/issues-url","var_args","args__4736__auto__","len__4730__auto__","i__4731__auto__","argseq__4737__auto__","cljs.core\/IndexedSeq","devtools.reporter\/report-internal-error!","p__28079","vec__28080","cljs.core\/nth","seq28077","G__28078","cljs.core\/first","cljs.core\/next","self__4717__auto__","e","context","footer","console","devtools.context\/get-console","e28083","message","js\/Error","or__4131__auto__","header","context-msg","devtools.util\/get-lib-info","footer-msg","details","group-collapsed","log","group-end"]}
|
||||
39
js/compiled/out/devtools/toolbox.cljs
Normal file
39
js/compiled/out/devtools/toolbox.cljs
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
(ns devtools.toolbox
|
||||
(:require-macros [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)))
|
||||
|
||||
1
js/compiled/out/devtools/toolbox.cljs.cache.json
Normal file
1
js/compiled/out/devtools/toolbox.cljs.cache.json
Normal file
File diff suppressed because one or more lines are too long
144
js/compiled/out/devtools/toolbox.js
Normal file
144
js/compiled/out/devtools/toolbox.js
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__28166 = arguments.length;
|
||||
switch (G__28166) {
|
||||
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 !== 'undefined') && (typeof devtools.toolbox !== 'undefined') && (typeof devtools.toolbox.t_devtools$toolbox28167 !== 'undefined')){
|
||||
} else {
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @implements {devtools.protocols.IFormat}
|
||||
* @implements {cljs.core.IMeta}
|
||||
* @implements {cljs.core.IWithMeta}
|
||||
*/
|
||||
devtools.toolbox.t_devtools$toolbox28167 = (function (obj,header,style,tag,meta28168){
|
||||
this.obj = obj;
|
||||
this.header = header;
|
||||
this.style = style;
|
||||
this.tag = tag;
|
||||
this.meta28168 = meta28168;
|
||||
this.cljs$lang$protocol_mask$partition0$ = 393216;
|
||||
this.cljs$lang$protocol_mask$partition1$ = 0;
|
||||
});
|
||||
devtools.toolbox.t_devtools$toolbox28167.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (_28169,meta28168__$1){
|
||||
var self__ = this;
|
||||
var _28169__$1 = this;
|
||||
return (new devtools.toolbox.t_devtools$toolbox28167(self__.obj,self__.header,self__.style,self__.tag,meta28168__$1));
|
||||
});
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox28167.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_28169){
|
||||
var self__ = this;
|
||||
var _28169__$1 = this;
|
||||
return self__.meta28168;
|
||||
});
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox28167.prototype.devtools$protocols$IFormat$ = cljs.core.PROTOCOL_SENTINEL;
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox28167.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$toolbox28167.prototype.devtools$protocols$IFormat$_has_body$arity$1 = (function (_){
|
||||
var self__ = this;
|
||||
var ___$1 = this;
|
||||
return true;
|
||||
});
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox28167.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$toolbox28167.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,"meta28168","meta28168",180092075,null)], null);
|
||||
});
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox28167.cljs$lang$type = true;
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox28167.cljs$lang$ctorStr = "devtools.toolbox/t_devtools$toolbox28167";
|
||||
|
||||
devtools.toolbox.t_devtools$toolbox28167.cljs$lang$ctorPrWriter = (function (this__4374__auto__,writer__4375__auto__,opt__4376__auto__){
|
||||
return cljs.core._write.call(null,writer__4375__auto__,"devtools.toolbox/t_devtools$toolbox28167");
|
||||
});
|
||||
|
||||
/**
|
||||
* Positional factory function for devtools.toolbox/t_devtools$toolbox28167.
|
||||
*/
|
||||
devtools.toolbox.__GT_t_devtools$toolbox28167 = (function devtools$toolbox$__GT_t_devtools$toolbox28167(obj__$1,header__$1,style__$1,tag__$1,meta28168){
|
||||
return (new devtools.toolbox.t_devtools$toolbox28167(obj__$1,header__$1,style__$1,tag__$1,meta28168));
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
return (new devtools.toolbox.t_devtools$toolbox28167(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=1582812680788
|
||||
1
js/compiled/out/devtools/toolbox.js.map
Normal file
1
js/compiled/out/devtools/toolbox.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/devtools\/toolbox.js","sources":["toolbox.cljs?rel=1582812680789"],"lineCount":144,"mappings":";AAAA;;;;;AAMA,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,QAAAC,qCAAAC,6CAAAC;AAAA;AAAA,AAAA,AAAA;;;;;;;;;;;;;;;;AAAA,AAAA,AAAA,AAAA,AAAAC,4FAAA,WAAAC,OAAAC;;AAAA,AAAA,IAAAD,aAAA;qDADCR,WAAIC,cAAOC,aAAMC,3FAClB,AAAA,YAAAI,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,6NAAgBd,WAAID,qBAAO,EAAI,AAACgB,8BAAIjB,gBAAQ,AAACA,wBAAOD,YAAKC;;;AAFzE,AAAA,AAAA,AAAAM,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,qEAA0BpB;;;AAJ\/D,AAAA,AAAAO,oDAAA;AAAA,AAAA,AAAA;;;AAAA,AAAA,AAAAA,0DAAA;;AAAA,AAAA,AAAAA,6DAAA;;AAAA,AAAA,AAAAA,kEAAA,WAAAI,mBAAAC,qBAAAC;AAAA,AAAA,OAAAC,2BAAAF,qBAAA;;;AAAA;;;wGADCZ,QAAIC,WAAOC,UAAMC,rIAClBY,gDAAA,6FAAAN;qDADCT,QAAIC,WAAOC,UAAMC,lFAClB,AAAA,YAAAI,8EAAAE;;;AAAAF;;qDADCP,IAAIC,OAAOC,MAAMC,tEAClB,YAAAI,8DAAA;;;AAbH,AAAA,oDAAA,pDAAMT;;AAAN,AAmBA;;;;;;;;;;;;gCAAA,hCAAMuB,wEAWHrB;AAXH,AAYE,OAACiB,uDAAc,AAACK,uDAAYtB","names":["var_args","G__28166","devtools.toolbox\/envelope","js\/Error","obj","header","style","tag","js\/devtools","js\/devtools.toolbox","js\/devtools.toolbox.t_devtools$toolbox28167","devtools.toolbox\/t_devtools$toolbox28167","_28169","meta28168","cljs.core\/PROTOCOL_SENTINEL","this__4374__auto__","writer__4375__auto__","opt__4376__auto__","cljs.core\/-write","devtools.toolbox\/->t_devtools$toolbox28167","_","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>"]}
|
||||
248
js/compiled/out/devtools/util.cljs
Normal file
248
js/compiled/out/devtools/util.cljs
Normal file
|
|
@ -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)))))
|
||||
1
js/compiled/out/devtools/util.cljs.cache.json
Normal file
1
js/compiled/out/devtools/util.cljs.cache.json
Normal file
File diff suppressed because one or more lines are too long
515
js/compiled/out/devtools/util.js
Normal file
515
js/compiled/out/devtools/util.js
Normal file
|
|
@ -0,0 +1,515 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
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__4736__auto__ = [];
|
||||
var len__4730__auto___27702 = arguments.length;
|
||||
var i__4731__auto___27703 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___27703 < len__4730__auto___27702)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___27703]));
|
||||
|
||||
var G__27704 = (i__4731__auto___27703 + (1));
|
||||
i__4731__auto___27703 = G__27704;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((0) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__auto__.slice((0)),(0),null)):null);
|
||||
return devtools.util.pprint_str.cljs$core$IFn$_invoke$arity$variadic(argseq__4737__auto__);
|
||||
});
|
||||
|
||||
devtools.util.pprint_str.cljs$core$IFn$_invoke$arity$variadic = (function (args){
|
||||
var sb__4661__auto__ = (new goog.string.StringBuffer());
|
||||
var _STAR_print_newline_STAR__orig_val__27696_27705 = cljs.core._STAR_print_newline_STAR_;
|
||||
var _STAR_print_fn_STAR__orig_val__27697_27706 = cljs.core._STAR_print_fn_STAR_;
|
||||
var _STAR_print_newline_STAR__temp_val__27698_27707 = true;
|
||||
var _STAR_print_fn_STAR__temp_val__27699_27708 = ((function (_STAR_print_newline_STAR__orig_val__27696_27705,_STAR_print_fn_STAR__orig_val__27697_27706,_STAR_print_newline_STAR__temp_val__27698_27707,sb__4661__auto__){
|
||||
return (function (x__4662__auto__){
|
||||
return sb__4661__auto__.append(x__4662__auto__);
|
||||
});})(_STAR_print_newline_STAR__orig_val__27696_27705,_STAR_print_fn_STAR__orig_val__27697_27706,_STAR_print_newline_STAR__temp_val__27698_27707,sb__4661__auto__))
|
||||
;
|
||||
cljs.core._STAR_print_newline_STAR_ = _STAR_print_newline_STAR__temp_val__27698_27707;
|
||||
|
||||
cljs.core._STAR_print_fn_STAR_ = _STAR_print_fn_STAR__temp_val__27699_27708;
|
||||
|
||||
try{var _STAR_print_level_STAR__orig_val__27700_27709 = cljs.core._STAR_print_level_STAR_;
|
||||
var _STAR_print_level_STAR__temp_val__27701_27710 = (300);
|
||||
cljs.core._STAR_print_level_STAR_ = _STAR_print_level_STAR__temp_val__27701_27710;
|
||||
|
||||
try{cljs.core.apply.call(null,cljs.pprint.pprint,args);
|
||||
}finally {cljs.core._STAR_print_level_STAR_ = _STAR_print_level_STAR__orig_val__27700_27709;
|
||||
}}finally {cljs.core._STAR_print_fn_STAR_ = _STAR_print_fn_STAR__orig_val__27697_27706;
|
||||
|
||||
cljs.core._STAR_print_newline_STAR_ = _STAR_print_newline_STAR__orig_val__27696_27705;
|
||||
}
|
||||
return cljs.core.str.cljs$core$IFn$_invoke$arity$1(sb__4661__auto__);
|
||||
});
|
||||
|
||||
devtools.util.pprint_str.cljs$lang$maxFixedArity = (0);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.util.pprint_str.cljs$lang$applyTo = (function (seq27695){
|
||||
var self__4718__auto__ = this;
|
||||
return self__4718__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq27695));
|
||||
});
|
||||
|
||||
devtools.util.make_version_info = (function devtools$util$make_version_info(){
|
||||
return "0.9.10";
|
||||
});
|
||||
devtools.util.make_lib_info = (function devtools$util$make_lib_info(){
|
||||
return ["CLJS DevTools ",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__4120__auto__ = version;
|
||||
if(cljs.core.truth_(and__4120__auto__)){
|
||||
return platform;
|
||||
} else {
|
||||
return and__4120__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 (e27711){var _ = e27711;
|
||||
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__4131__auto__ = new cljs.core.Keyword(null,"platform","platform",-1086422114).cljs$core$IFn$_invoke$arity$1(node_info);
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__auto__;
|
||||
} else {
|
||||
return "?";
|
||||
}
|
||||
})()),"/",cljs.core.str.cljs$core$IFn$_invoke$arity$1((function (){var or__4131__auto__ = new cljs.core.Keyword(null,"version","version",425292698).cljs$core$IFn$_invoke$arity$1(node_info);
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__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__5718__auto__ = devtools.util.get_node_info.call(null,devtools.context.get_root.call(null));
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var node_info = temp__5718__auto__;
|
||||
return ["node/",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.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__4374__auto__,writer__4375__auto__,opt__4376__auto__){
|
||||
return cljs.core._write.call(null,writer__4375__auto__,"devtools.util/CustomFormattersDetector");
|
||||
});
|
||||
|
||||
/**
|
||||
* Positional factory function for 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__27712_SHARP_){
|
||||
return (!(cljs.core._EQ_.call(null,detector,p1__27712_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__27713_27714 = f;
|
||||
var target__25271__auto___27715 = G__27713_27714;
|
||||
if(cljs.core.truth_(target__25271__auto___27715)){
|
||||
} else {
|
||||
throw (new Error(["Assert failed: ",["unable to locate object path ",null," in ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__27713_27714)].join(''),"\n","target__25271__auto__"].join('')));
|
||||
}
|
||||
|
||||
(target__25271__auto___27715["toString"] = ((function (G__27713_27714,target__25271__auto___27715,f){
|
||||
return (function (){
|
||||
devtools.util._STAR_console_open_STAR_ = true;
|
||||
|
||||
setTimeout(devtools.util.check_custom_formatters_active_BANG_,(0));
|
||||
|
||||
return "";
|
||||
});})(G__27713_27714,target__25271__auto___27715,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)], 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__4736__auto__ = [];
|
||||
var len__4730__auto___27723 = arguments.length;
|
||||
var i__4731__auto___27724 = (0);
|
||||
while(true){
|
||||
if((i__4731__auto___27724 < len__4730__auto___27723)){
|
||||
args__4736__auto__.push((arguments[i__4731__auto___27724]));
|
||||
|
||||
var G__27725 = (i__4731__auto___27724 + (1));
|
||||
i__4731__auto___27724 = G__27725;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__4737__auto__ = ((((3) < args__4736__auto__.length))?(new cljs.core.IndexedSeq(args__4736__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__4737__auto__);
|
||||
});
|
||||
|
||||
devtools.util.display_banner_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (installed_features,feature_groups,fmt,params){
|
||||
var vec__27720 = devtools.util.feature_list_display.call(null,installed_features,feature_groups);
|
||||
var fmt_str = cljs.core.nth.call(null,vec__27720,(0),null);
|
||||
var fmt_params = cljs.core.nth.call(null,vec__27720,(1),null);
|
||||
return devtools.util.wrap_with_custom_formatter_detection_BANG_.call(null,((function (vec__27720,fmt_str,fmt_params){
|
||||
return (function() {
|
||||
var G__27726__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__27726 = function (add_fmt,var_args){
|
||||
var add_args = null;
|
||||
if (arguments.length > 1) {
|
||||
var G__27727__i = 0, G__27727__a = new Array(arguments.length - 1);
|
||||
while (G__27727__i < G__27727__a.length) {G__27727__a[G__27727__i] = arguments[G__27727__i + 1]; ++G__27727__i;}
|
||||
add_args = new cljs.core.IndexedSeq(G__27727__a,0,null);
|
||||
}
|
||||
return G__27726__delegate.call(this,add_fmt,add_args);};
|
||||
G__27726.cljs$lang$maxFixedArity = 1;
|
||||
G__27726.cljs$lang$applyTo = (function (arglist__27728){
|
||||
var add_fmt = cljs.core.first(arglist__27728);
|
||||
var add_args = cljs.core.rest(arglist__27728);
|
||||
return G__27726__delegate(add_fmt,add_args);
|
||||
});
|
||||
G__27726.cljs$core$IFn$_invoke$arity$variadic = G__27726__delegate;
|
||||
return G__27726;
|
||||
})()
|
||||
;})(vec__27720,fmt_str,fmt_params))
|
||||
);
|
||||
});
|
||||
|
||||
devtools.util.display_banner_BANG_.cljs$lang$maxFixedArity = (3);
|
||||
|
||||
/** @this {Function} */
|
||||
devtools.util.display_banner_BANG_.cljs$lang$applyTo = (function (seq27716){
|
||||
var G__27717 = cljs.core.first.call(null,seq27716);
|
||||
var seq27716__$1 = cljs.core.next.call(null,seq27716);
|
||||
var G__27718 = cljs.core.first.call(null,seq27716__$1);
|
||||
var seq27716__$2 = cljs.core.next.call(null,seq27716__$1);
|
||||
var G__27719 = cljs.core.first.call(null,seq27716__$2);
|
||||
var seq27716__$3 = cljs.core.next.call(null,seq27716__$2);
|
||||
var self__4717__auto__ = this;
|
||||
return self__4717__auto__.cljs$core$IFn$_invoke$arity$variadic(G__27717,G__27718,G__27719,seq27716__$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";
|
||||
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__27729 = cljs.core.seq.call(null,features);
|
||||
var chunk__27730 = null;
|
||||
var count__27731 = (0);
|
||||
var i__27732 = (0);
|
||||
while(true){
|
||||
if((i__27732 < count__27731)){
|
||||
var feature = cljs.core._nth.call(null,chunk__27730,i__27732);
|
||||
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__27733 = seq__27729;
|
||||
var G__27734 = chunk__27730;
|
||||
var G__27735 = count__27731;
|
||||
var G__27736 = (i__27732 + (1));
|
||||
seq__27729 = G__27733;
|
||||
chunk__27730 = G__27734;
|
||||
count__27731 = G__27735;
|
||||
i__27732 = G__27736;
|
||||
continue;
|
||||
} else {
|
||||
var temp__5720__auto__ = cljs.core.seq.call(null,seq__27729);
|
||||
if(temp__5720__auto__){
|
||||
var seq__27729__$1 = temp__5720__auto__;
|
||||
if(cljs.core.chunked_seq_QMARK_.call(null,seq__27729__$1)){
|
||||
var c__4550__auto__ = cljs.core.chunk_first.call(null,seq__27729__$1);
|
||||
var G__27737 = cljs.core.chunk_rest.call(null,seq__27729__$1);
|
||||
var G__27738 = c__4550__auto__;
|
||||
var G__27739 = cljs.core.count.call(null,c__4550__auto__);
|
||||
var G__27740 = (0);
|
||||
seq__27729 = G__27737;
|
||||
chunk__27730 = G__27738;
|
||||
count__27731 = G__27739;
|
||||
i__27732 = G__27740;
|
||||
continue;
|
||||
} else {
|
||||
var feature = cljs.core.first.call(null,seq__27729__$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__27741 = cljs.core.next.call(null,seq__27729__$1);
|
||||
var G__27742 = null;
|
||||
var G__27743 = (0);
|
||||
var G__27744 = (0);
|
||||
seq__27729 = G__27741;
|
||||
chunk__27730 = G__27742;
|
||||
count__27731 = G__27743;
|
||||
i__27732 = G__27744;
|
||||
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__27745 = feature;
|
||||
var G__27745__$1 = (((G__27745 instanceof cljs.core.Keyword))?G__27745.fqn:null);
|
||||
switch (G__27745__$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__4120__auto__ = (features_desc instanceof cljs.core.Keyword);
|
||||
if(and__4120__auto__){
|
||||
return features_desc.call(null,feature_groups);
|
||||
} else {
|
||||
return and__4120__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__5718__auto__ = (devtools.context.get_root.call(null)["devtools"]);
|
||||
if(cljs.core.truth_(temp__5718__auto__)){
|
||||
var o27747 = temp__5718__auto__;
|
||||
return (o27747["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 ",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__4131__auto__ = devtools.prefs.pref.call(null,new cljs.core.Keyword(null,"bypass-availability-checks","bypass-availability-checks",1934691680));
|
||||
if(cljs.core.truth_(or__4131__auto__)){
|
||||
return or__4131__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=1582812680475
|
||||
1
js/compiled/out/devtools/util.js.map
Normal file
1
js/compiled/out/devtools/util.js.map
Normal file
File diff suppressed because one or more lines are too long
7
js/compiled/out/devtools/version.cljs
Normal file
7
js/compiled/out/devtools/version.cljs
Normal file
|
|
@ -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)
|
||||
1
js/compiled/out/devtools/version.cljs.cache.json
Normal file
1
js/compiled/out/devtools/version.cljs.cache.json
Normal file
|
|
@ -0,0 +1 @@
|
|||
["^ ","~:rename-macros",["^ "],"~:renames",["^ "],"~:use-macros",["^ ","~$get-current-version","~$devtools.version"],"~:excludes",["~#set",[]],"~:name","^4","~:imports",null,"~:requires",null,"~:cljs.spec/speced-vars",[],"~:uses",null,"~:defs",["^ ","~$current-version",["^ ","^7","~$devtools.version/current-version","~:file","js/compiled/out/devtools/version.cljs","~:line",4,"~:column",1,"~:end-line",4,"~:end-column",21,"~:meta",["^ ","^?","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/version.cljs","^@",4,"^A",6,"^B",4,"^C",21],"~:tag","~$string"],"^3",["^ ","~:protocol-inline",null,"^D",["^ ","^?","/home/simon/workspace/geocsv-lite/js/compiled/out/devtools/version.cljs","^@",6,"^A",7,"^B",6,"^C",26,"~:arglists",["~#list",["~$quote",["^I",[[]]]]]],"^7","~$devtools.version/get-current-version","^?","js/compiled/out/devtools/version.cljs","^C",26,"~:method-params",["^I",[[]]],"~:protocol-impl",null,"~:arglists-meta",["^I",[null,null]],"^A",1,"~:variadic?",false,"^@",6,"~:ret-tag","^F","^B",6,"~:max-fixed-arity",0,"~:fn-var",true,"^H",["^I",["^J",["^I",[[]]]]]]],"~:cljs.spec/registry-ref",[],"~:require-macros",["^ ","^4","^4"],"~:doc",null]
|
||||
9
js/compiled/out/devtools/version.js
Normal file
9
js/compiled/out/devtools/version.js
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
// Compiled by ClojureScript 1.10.520 {}
|
||||
goog.provide('devtools.version');
|
||||
goog.require('cljs.core');
|
||||
devtools.version.current_version = "0.9.10";
|
||||
devtools.version.get_current_version = (function devtools$version$get_current_version(){
|
||||
return devtools.version.current_version;
|
||||
});
|
||||
|
||||
//# sourceMappingURL=version.js.map?rel=1582812679505
|
||||
1
js/compiled/out/devtools/version.js.map
Normal file
1
js/compiled/out/devtools/version.js.map
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"\/home\/simon\/workspace\/geocsv-lite\/js\/compiled\/out\/devtools\/version.js","sources":["version.cljs?rel=1582812679505"],"lineCount":9,"mappings":";AAAA;;AAGA,AAAKA,mCAAgB;AAErB,uCAAA,vCAAMC;AAAN,AACED","names":["devtools.version\/current-version","devtools.version\/get-current-version"]}
|
||||
Loading…
Add table
Add a link
Reference in a new issue