datahike 0.7.1630

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/README.md +226 -0
  2. package/cljs.analyzer.api.js +427 -0
  3. package/cljs.analyzer.api.js.map +1 -0
  4. package/cljs.analyzer.impl.js +86 -0
  5. package/cljs.analyzer.impl.js.map +1 -0
  6. package/cljs.analyzer.impl.namespaces.js +219 -0
  7. package/cljs.analyzer.impl.namespaces.js.map +1 -0
  8. package/cljs.analyzer.js +7186 -0
  9. package/cljs.analyzer.js.map +1 -0
  10. package/cljs.analyzer.passes.and_or.js +141 -0
  11. package/cljs.analyzer.passes.and_or.js.map +1 -0
  12. package/cljs.analyzer.passes.js +104 -0
  13. package/cljs.analyzer.passes.js.map +1 -0
  14. package/cljs.cache.js +1145 -0
  15. package/cljs.cache.js.map +1 -0
  16. package/cljs.cache.wrapped.js +352 -0
  17. package/cljs.cache.wrapped.js.map +1 -0
  18. package/cljs.core.async.impl.buffers.js +489 -0
  19. package/cljs.core.async.impl.buffers.js.map +1 -0
  20. package/cljs.core.async.impl.channels.js +711 -0
  21. package/cljs.core.async.impl.channels.js.map +1 -0
  22. package/cljs.core.async.impl.dispatch.js +81 -0
  23. package/cljs.core.async.impl.dispatch.js.map +1 -0
  24. package/cljs.core.async.impl.ioc_helpers.js +192 -0
  25. package/cljs.core.async.impl.ioc_helpers.js.map +1 -0
  26. package/cljs.core.async.impl.protocols.js +368 -0
  27. package/cljs.core.async.impl.protocols.js.map +1 -0
  28. package/cljs.core.async.impl.timers.js +510 -0
  29. package/cljs.core.async.impl.timers.js.map +1 -0
  30. package/cljs.core.async.js +8813 -0
  31. package/cljs.core.async.js.map +1 -0
  32. package/cljs.core.js +38764 -0
  33. package/cljs.core.js.map +1 -0
  34. package/cljs.env.js +60 -0
  35. package/cljs.env.js.map +1 -0
  36. package/cljs.nodejs.js +80 -0
  37. package/cljs.nodejs.js.map +1 -0
  38. package/cljs.reader.js +462 -0
  39. package/cljs.reader.js.map +1 -0
  40. package/cljs.spec.alpha.js +5312 -0
  41. package/cljs.spec.alpha.js.map +1 -0
  42. package/cljs.spec.gen.alpha.js +2020 -0
  43. package/cljs.spec.gen.alpha.js.map +1 -0
  44. package/cljs.tagged_literals.js +103 -0
  45. package/cljs.tagged_literals.js.map +1 -0
  46. package/cljs.tools.reader.edn.js +960 -0
  47. package/cljs.tools.reader.edn.js.map +1 -0
  48. package/cljs.tools.reader.impl.commons.js +217 -0
  49. package/cljs.tools.reader.impl.commons.js.map +1 -0
  50. package/cljs.tools.reader.impl.errors.js +441 -0
  51. package/cljs.tools.reader.impl.errors.js.map +1 -0
  52. package/cljs.tools.reader.impl.inspect.js +182 -0
  53. package/cljs.tools.reader.impl.inspect.js.map +1 -0
  54. package/cljs.tools.reader.impl.utils.js +429 -0
  55. package/cljs.tools.reader.impl.utils.js.map +1 -0
  56. package/cljs.tools.reader.js +1830 -0
  57. package/cljs.tools.reader.js.map +1 -0
  58. package/cljs.tools.reader.reader_types.js +838 -0
  59. package/cljs.tools.reader.reader_types.js.map +1 -0
  60. package/cljs_env.js +18192 -0
  61. package/cljs_node_io.core.js +1278 -0
  62. package/cljs_node_io.core.js.map +1 -0
  63. package/cljs_node_io.file.js +918 -0
  64. package/cljs_node_io.file.js.map +1 -0
  65. package/cljs_node_io.fs.js +3911 -0
  66. package/cljs_node_io.fs.js.map +1 -0
  67. package/clojure.data.js +319 -0
  68. package/clojure.data.js.map +1 -0
  69. package/clojure.edn.js +119 -0
  70. package/clojure.edn.js.map +1 -0
  71. package/clojure.set.js +406 -0
  72. package/clojure.set.js.map +1 -0
  73. package/clojure.string.js +502 -0
  74. package/clojure.string.js.map +1 -0
  75. package/clojure.walk.js +156 -0
  76. package/clojure.walk.js.map +1 -0
  77. package/datahike.api.impl.js +621 -0
  78. package/datahike.api.impl.js.map +1 -0
  79. package/datahike.api.specification.js +85 -0
  80. package/datahike.api.specification.js.map +1 -0
  81. package/datahike.array.js +275 -0
  82. package/datahike.array.js.map +1 -0
  83. package/datahike.config.js +437 -0
  84. package/datahike.config.js.map +1 -0
  85. package/datahike.connections.js +55 -0
  86. package/datahike.connections.js.map +1 -0
  87. package/datahike.connector.js +1248 -0
  88. package/datahike.connector.js.map +1 -0
  89. package/datahike.constants.js +66 -0
  90. package/datahike.constants.js.map +1 -0
  91. package/datahike.core.js +628 -0
  92. package/datahike.core.js.map +1 -0
  93. package/datahike.datom.js +963 -0
  94. package/datahike.datom.js.map +1 -0
  95. package/datahike.db.interface.js +819 -0
  96. package/datahike.db.interface.js.map +1 -0
  97. package/datahike.db.js +3095 -0
  98. package/datahike.db.js.map +1 -0
  99. package/datahike.db.search.js +1004 -0
  100. package/datahike.db.search.js.map +1 -0
  101. package/datahike.db.transaction.js +1904 -0
  102. package/datahike.db.transaction.js.map +1 -0
  103. package/datahike.db.utils.js +642 -0
  104. package/datahike.db.utils.js.map +1 -0
  105. package/datahike.gc.js +1618 -0
  106. package/datahike.gc.js.map +1 -0
  107. package/datahike.impl.entity.js +604 -0
  108. package/datahike.impl.entity.js.map +1 -0
  109. package/datahike.index.interface.js +484 -0
  110. package/datahike.index.interface.js.map +1 -0
  111. package/datahike.index.js +50 -0
  112. package/datahike.index.js.map +1 -0
  113. package/datahike.index.persistent_set.js +1250 -0
  114. package/datahike.index.persistent_set.js.map +1 -0
  115. package/datahike.js.api.js +2211 -0
  116. package/datahike.js.api.js.map +1 -0
  117. package/datahike.lru.js +404 -0
  118. package/datahike.lru.js.map +1 -0
  119. package/datahike.pull_api.js +533 -0
  120. package/datahike.pull_api.js.map +1 -0
  121. package/datahike.query.js +11891 -0
  122. package/datahike.query.js.map +1 -0
  123. package/datahike.query_stats.js +152 -0
  124. package/datahike.query_stats.js.map +1 -0
  125. package/datahike.readers.js +166 -0
  126. package/datahike.readers.js.map +1 -0
  127. package/datahike.schema.js +251 -0
  128. package/datahike.schema.js.map +1 -0
  129. package/datahike.schema_cache.js +66 -0
  130. package/datahike.schema_cache.js.map +1 -0
  131. package/datahike.spec.js +70 -0
  132. package/datahike.spec.js.map +1 -0
  133. package/datahike.store.js +514 -0
  134. package/datahike.store.js.map +1 -0
  135. package/datahike.tools.js +436 -0
  136. package/datahike.tools.js.map +1 -0
  137. package/datahike.writer.js +3463 -0
  138. package/datahike.writer.js.map +1 -0
  139. package/datahike.writing.js +3168 -0
  140. package/datahike.writing.js.map +1 -0
  141. package/datalog.parser.impl.js +1421 -0
  142. package/datalog.parser.impl.js.map +1 -0
  143. package/datalog.parser.impl.proto.js +213 -0
  144. package/datalog.parser.impl.proto.js.map +1 -0
  145. package/datalog.parser.impl.util.js +117 -0
  146. package/datalog.parser.impl.util.js.map +1 -0
  147. package/datalog.parser.js +47 -0
  148. package/datalog.parser.js.map +1 -0
  149. package/datalog.parser.pull.js +2603 -0
  150. package/datalog.parser.pull.js.map +1 -0
  151. package/datalog.parser.type.js +7502 -0
  152. package/datalog.parser.type.js.map +1 -0
  153. package/datalog.parser.util.js +60 -0
  154. package/datalog.parser.util.js.map +1 -0
  155. package/environ.core.js +263 -0
  156. package/environ.core.js.map +1 -0
  157. package/fress.api.js +607 -0
  158. package/fress.api.js.map +1 -0
  159. package/fress.impl.adler32.js +435 -0
  160. package/fress.impl.adler32.js.map +1 -0
  161. package/fress.impl.bigint.js +185 -0
  162. package/fress.impl.bigint.js.map +1 -0
  163. package/fress.impl.buffer.js +1087 -0
  164. package/fress.impl.buffer.js.map +1 -0
  165. package/fress.impl.codes.js +105 -0
  166. package/fress.impl.codes.js.map +1 -0
  167. package/fress.impl.hopmap.js +603 -0
  168. package/fress.impl.hopmap.js.map +1 -0
  169. package/fress.impl.ranges.js +49 -0
  170. package/fress.impl.ranges.js.map +1 -0
  171. package/fress.impl.raw_input.js +837 -0
  172. package/fress.impl.raw_input.js.map +1 -0
  173. package/fress.impl.raw_output.js +653 -0
  174. package/fress.impl.raw_output.js.map +1 -0
  175. package/fress.impl.table.js +133 -0
  176. package/fress.impl.table.js.map +1 -0
  177. package/fress.reader.js +2312 -0
  178. package/fress.reader.js.map +1 -0
  179. package/fress.util.js +458 -0
  180. package/fress.util.js.map +1 -0
  181. package/fress.writer.js +2141 -0
  182. package/fress.writer.js.map +1 -0
  183. package/geheimnis.aes.js +132 -0
  184. package/geheimnis.aes.js.map +1 -0
  185. package/hasch.base64.js +42 -0
  186. package/hasch.base64.js.map +1 -0
  187. package/hasch.benc.js +201 -0
  188. package/hasch.benc.js.map +1 -0
  189. package/hasch.core.js +188 -0
  190. package/hasch.core.js.map +1 -0
  191. package/hasch.platform.js +221 -0
  192. package/hasch.platform.js.map +1 -0
  193. package/incognito.base.js +276 -0
  194. package/incognito.base.js.map +1 -0
  195. package/incognito.edn.js +54 -0
  196. package/incognito.edn.js.map +1 -0
  197. package/incognito.fressian.js +330 -0
  198. package/incognito.fressian.js.map +1 -0
  199. package/index.d.ts +660 -0
  200. package/is.simm.partial_cps.async.js +142 -0
  201. package/is.simm.partial_cps.async.js.map +1 -0
  202. package/is.simm.partial_cps.runtime.js +65 -0
  203. package/is.simm.partial_cps.runtime.js.map +1 -0
  204. package/is.simm.partial_cps.sequence.js +1255 -0
  205. package/is.simm.partial_cps.sequence.js.map +1 -0
  206. package/konserve.cache.js +2519 -0
  207. package/konserve.cache.js.map +1 -0
  208. package/konserve.compressor.js +502 -0
  209. package/konserve.compressor.js.map +1 -0
  210. package/konserve.core.js +8052 -0
  211. package/konserve.core.js.map +1 -0
  212. package/konserve.encryptor.js +553 -0
  213. package/konserve.encryptor.js.map +1 -0
  214. package/konserve.gc.js +541 -0
  215. package/konserve.gc.js.map +1 -0
  216. package/konserve.impl.defaults.js +8290 -0
  217. package/konserve.impl.defaults.js.map +1 -0
  218. package/konserve.impl.storage_layout.js +849 -0
  219. package/konserve.impl.storage_layout.js.map +1 -0
  220. package/konserve.memory.js +2102 -0
  221. package/konserve.memory.js.map +1 -0
  222. package/konserve.node_filestore.js +2951 -0
  223. package/konserve.node_filestore.js.map +1 -0
  224. package/konserve.protocols.js +590 -0
  225. package/konserve.protocols.js.map +1 -0
  226. package/konserve.serializers.js +562 -0
  227. package/konserve.serializers.js.map +1 -0
  228. package/konserve.store.js +2245 -0
  229. package/konserve.store.js.map +1 -0
  230. package/konserve.tiered.js +9574 -0
  231. package/konserve.tiered.js.map +1 -0
  232. package/konserve.utils.js +180 -0
  233. package/konserve.utils.js.map +1 -0
  234. package/me.tonsky.persistent_sorted_set.arrays.js +66 -0
  235. package/me.tonsky.persistent_sorted_set.arrays.js.map +1 -0
  236. package/me.tonsky.persistent_sorted_set.branch.js +2779 -0
  237. package/me.tonsky.persistent_sorted_set.branch.js.map +1 -0
  238. package/me.tonsky.persistent_sorted_set.btset.js +14196 -0
  239. package/me.tonsky.persistent_sorted_set.btset.js.map +1 -0
  240. package/me.tonsky.persistent_sorted_set.impl.node.js +324 -0
  241. package/me.tonsky.persistent_sorted_set.impl.node.js.map +1 -0
  242. package/me.tonsky.persistent_sorted_set.impl.storage.js +123 -0
  243. package/me.tonsky.persistent_sorted_set.impl.storage.js.map +1 -0
  244. package/me.tonsky.persistent_sorted_set.js +890 -0
  245. package/me.tonsky.persistent_sorted_set.js.map +1 -0
  246. package/me.tonsky.persistent_sorted_set.leaf.js +561 -0
  247. package/me.tonsky.persistent_sorted_set.leaf.js.map +1 -0
  248. package/me.tonsky.persistent_sorted_set.util.js +402 -0
  249. package/me.tonsky.persistent_sorted_set.util.js.map +1 -0
  250. package/medley.core.js +1857 -0
  251. package/medley.core.js.map +1 -0
  252. package/package.json +38 -0
  253. package/spec_tools.core.js +1925 -0
  254. package/spec_tools.core.js.map +1 -0
  255. package/spec_tools.data_spec.js +1291 -0
  256. package/spec_tools.data_spec.js.map +1 -0
  257. package/spec_tools.form.js +185 -0
  258. package/spec_tools.form.js.map +1 -0
  259. package/spec_tools.impl.js +362 -0
  260. package/spec_tools.impl.js.map +1 -0
  261. package/spec_tools.parse.js +427 -0
  262. package/spec_tools.parse.js.map +1 -0
  263. package/spec_tools.transform.js +288 -0
  264. package/spec_tools.transform.js.map +1 -0
  265. package/superv.async.js +8617 -0
  266. package/superv.async.js.map +1 -0
  267. package/tailrecursion.priority_map.js +994 -0
  268. package/tailrecursion.priority_map.js.map +1 -0
  269. package/taoensso.encore.js +12385 -0
  270. package/taoensso.encore.js.map +1 -0
  271. package/taoensso.timbre.appenders.core.js +239 -0
  272. package/taoensso.timbre.appenders.core.js.map +1 -0
  273. package/taoensso.timbre.js +1264 -0
  274. package/taoensso.timbre.js.map +1 -0
  275. package/taoensso.truss.impl.js +442 -0
  276. package/taoensso.truss.impl.js.map +1 -0
  277. package/taoensso.truss.js +743 -0
  278. package/taoensso.truss.js.map +1 -0
  279. package/test-config-keys.js +33 -0
  280. package/test-final.js +36 -0
  281. package/test-key-duplication.js +67 -0
  282. package/test.js +557 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["taoensso/timbre.cljc"],"mappings":"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","names":["var_args","args__5732__auto__","len__5726__auto__","i__5727__auto__","argseq__5733__auto__","cljs.core/IndexedSeq","taoensso.timbre/swap-config!","seq41845","G__41846","cljs.core/first","cljs.core/next","self__5711__auto__","f","args","taoensso.timbre/*config*","cljs.core.apply","taoensso.timbre/set-config!","config","_old","taoensso.timbre/merge-config!","old","taoensso.encore.nested_merge","p1__41863#","err","level->int","G__41865","cljs.core/Keyword","taoensso.timbre/valid-level?","x","taoensso.timbre/valid-level","taoensso.truss/ex-info*","cljs.core/type","taoensso.timbre/valid-level->int","or__5002__auto__","valid-level->int","taoensso.timbre/level>=","y","fn?","cljs.core/fn?","compile","taoensso.encore/fmemoize","taoensso.encore/name-filter","conform?*","ns","fexpr__41921","conform?","ns-filter","taoensso.timbre/may-log-ns?","taoensso.timbre/ns->?min-level","specs","taoensso.encore.rsome","p__41937","vec__41938","cljs.core.nth","ns-pattern","min-level","valid-level","ns->?min-level","taoensso.timbre/get-min-level","default","G__41956","cljs.core/vector?","leglist","fexpr__41979","taoensso.timbre/legacy-ns-filter","ns-whitelist","ns-blacklist","level>=","may-log-ns?","get-min-level","legacy-ns-filter","G__42021","taoensso.timbre/may-log?","js/Error","level","taoensso.timbre.may_log_QMARK_","?ns-str","?config","default-min-level","G__42046","G__42048","G__42049","cljs.core.get","temp__5802__auto__","G__42063","G__42064","taoensso.timbre/set-min-level","cljs.core.assoc","taoensso.timbre/set-min-level!","taoensso.timbre/set-ns-min-level","?min-level","taoensso.truss/failed-assertion!","min-level*","cljs.core.reduce","p__42134","vec__42135","acc","_pattern-min-level","entry","exact-match?","cljs.core._EQ_","cljs.core.conj","new-min-level","simplified","cljs.core/count","vec__42155","vec__42161","cljs.core/not-empty","js/taoensso","js/taoensso.timbre","js/taoensso.timbre.get-rate-limiter","taoensso.timbre/get-rate-limiter","appender-id","taoensso.encore.rate_limiter","taoensso.timbre/get-timestamp","timestamp-opts","instant","map__42211","cljs.core/--destructure-map","pattern","cljs.core/keyword-identical?","js/Date","js/goog.i18n.DateTimeFormat","taoensso.timbre/*context*","taoensso.timbre/parse-vargs","?err","msg-type","vargs","vec__42234","auto-error?","fmt-msg?","v0","and__5000__auto__","taoensso.encore/error?","?meta","taoensso.encore/vrest","?msg-fmt","vec__42243","cljs.core/map?","cljs.core/meta","cljs.core.dissoc","vec__42254","taoensso.timbre/protected-fn","error-msg","data","e42263","t","map__42264","?file","?line","G__42297","taoensso.timbre/-log!","vargs_","?base-data","taoensso.timbre._log_BANG_","callsite-id","spying?","?column","may-log","cljs.core/deref","vec__42314","context","cljs.core/contains?","?data","mf","result","cljs.core/reduced","temp__5804__auto__","map__42328","taoensso.encore.assoc_nx","cljs.core/Delay","taoensso.timbre/default-output-msg-fn","cljs.core/hash","b2__27684__auto__","id","h","get-timestamp-delay","get-shared-delay","opts","base-opts_","taoensso.timbre/default-timestamp-opts","?appender-opts","get-output-fn","base-fn","taoensso.timbre/default-output-fn","?appender-fn","base-output-opts","cljs.core/reduce-kv","_","appender","rate-limit-specs","rate-limit-okay?","cljs.core/empty?","rl-fn","cljs.core/not","G__42362","cljs.core/force","map__42365","async?","apfn","timestamp_","output-fn","output-opts","output_","G__42369","mfn","js/taoensso.timbre.callsite-counter","taoensso.timbre/callsite-counter","taoensso.encore.counter","taoensso.timbre/pr-error","error","e42433","cljs.core.pr_str","_pr-str-error","e42436","_str-error","G__42443","taoensso.timbre.default_output_fn","map__42449","hostname_","ts","clojure.string/upper-case","cljs.core/name","loc","line","msg-fn","ef","taoensso.timbre/default-output-error-fn","nl","taoensso.encore/newline","e42473","ef-error","taoensso.timbre/default-arg->str-fn","taoensso.timbre/legacy-arg->str-fn","cljs.core/record?","G__42481","taoensso.timbre/str-join","xs","taoensso.timbre.str_join","arg->str-fn","taoensso.encore.str_join","cljs.core.map","p__42504","map__42505","map__42511","G__42512","taoensso.encore.format_STAR_","p__42531","map__42532","d","cljs.core/ex-data","c","cljs.core/ex-cause","G__42564","G__42580","taoensso.timbre/shutdown-appenders!","taoensso.timbre.shutdown_appenders_BANG_","sfn","taoensso.timbre/println-appender","taoensso.timbre.appenders.core/println-appender","taoensso.timbre/console-appender","taoensso.timbre.appenders.core/console-appender","taoensso.timbre/default-config","js/window","G__42596","G__42599","js/taoensso.timbre.*config*","taoensso.timbre/console-?appender","taoensso.timbre/ordered-levels","taoensso.timbre/log?","taoensso.timbre/example-config","taoensso.timbre/logging-enabled?","compile-time-ns","taoensso.timbre/str-println","seq42623","self__5712__auto__","cljs.core/seq","taoensso.timbre/set-level!","m","G__42625","taoensso.timbre/stacktrace","taoensso.timbre.stacktrace"],"sourcesContent":["(ns taoensso.timbre\n \"Simple, flexible logging for Clojure/Script. No XML.\"\n {:author \"Peter Taoussanis (@ptaoussanis)\"}\n\n (:require\n [clojure.string :as str]\n [taoensso.truss :as truss]\n [taoensso.encore :as enc]\n [taoensso.timbre.appenders.core :as core-appenders]\n\n #?(:clj [clj-commons.format.exceptions :as fmt-ex])\n #?(:cljs [goog.i18n.DateTimeFormat :as dtf]))\n\n #?(:cljs (:require-macros [taoensso.timbre])))\n\n(enc/assert-min-encore-version [3 153 1])\n\n(comment\n (remove-ns (symbol (str *ns*)))\n (:api (enc/interns-overview))\n (test/run-tests))\n\n;;;; Dynamic config\n\n(declare ^:dynamic *config*)\n\n(defn swap-config! [f & args]\n #?(:clj (apply alter-var-root #'*config* f args)\n :cljs (set! *config* (apply f *config* args))))\n\n(defn set-config! [config] (swap-config! (fn [_old] config)))\n(defn merge-config! [config] (swap-config! (fn [ old] (enc/nested-merge old config))))\n\n#?(:clj (defmacro with-config [config & body] `(binding [*config* ~config ] ~@body)))\n#?(:clj (defmacro with-merged-config [config & body] `(binding [*config* (enc/nested-merge *config* ~config)] ~@body)))\n\n;;;; Level filtering\n;; Terminology note: we loosely distinguish between call/form and min levels,\n;; though there's no motivation for a semantic (domain) difference between the\n;; two as in Tufte.\n\n(let [err \"Invalid Timbre logging level: should be e/o #{:trace :debug :info :warn :error :fatal :report}\"\n level->int\n #(case %\n :trace 0\n :debug 1\n :info 2\n :warn 3\n :error 4\n :fatal 5\n :report 6 ; High-level non-error type\n nil)]\n\n (defn- valid-level? [x] (if (level->int x) true false))\n (defn- valid-level [x] (if (level->int x) x (truss/ex-info! err {:given x :type (type x)})))\n (defn- valid-level->int [x] (or (level->int x) (truss/ex-info! err {:given x :type (type x)}))))\n\n(let [valid-level->int valid-level->int]\n (defn #?(:clj level>= :cljs ^:boolean level>=)\n \"Implementation detail.\"\n [x y] (>= ^long (valid-level->int x) ^long (valid-level->int y))))\n\n(comment (enc/qb 1e6 (level>= :info :trace))) ; 50.0\n\n;;;; Namespace filtering\n;; Terminology note: we distinguish loosely between `ns-filter` (which may be a\n;; fn or `ns-pattern`) and `ns-pattern` (subtype of `ns-filter`).\n\n(let [fn? fn?\n compile (enc/fmemoize (fn [x] (enc/name-filter x)))\n conform?* (enc/fmemoize (fn [x ns] ((compile x) ns)))\n conform?\n (fn [ns-filter ns]\n (if (fn? ns-filter)\n (ns-filter ns) ; Intentionally uncached, can be handy\n (conform?* ns-filter ns)))]\n\n (defn- #?(:clj may-log-ns? :cljs ^boolean may-log-ns?)\n [ns-filter ns] (if (conform? ns-filter ns) true false))\n\n (def ^:private ns->?min-level\n \"[[<ns-pattern> <min-level>] ... [\\\"*\\\" <default-min-level>]], ns -> ?min-level\"\n (enc/fmemoize\n (fn [specs ns]\n (enc/rsome\n (fn [[ns-pattern min-level]]\n (when (conform?* ns-pattern ns)\n (valid-level min-level)))\n specs)))))\n\n(comment\n (enc/qb 1e6 ; [49.2 112.43 73.27]\n (may-log-ns? \"*\" \"taoensso.timbre\")\n (ns->?min-level [[#{\"taoensso.*\" \"foo.bar\"} :info] [\"*\" :debug]] \"foo.bar\")\n (ns->?min-level [[\"ns.1\" :info] [\"ns.2\" :debug]] \"ns.2\")))\n\n;;;; Combo filtering\n\n(let [valid-level valid-level\n ns->?min-level ns->?min-level]\n\n (defn- get-min-level [default x ns]\n (valid-level\n (or\n (if (vector? x) (ns->?min-level x ns) x)\n default))))\n\n(comment\n (get-min-level :report [[\"foo\" :info]] *ns*)\n (let [ns *ns*]\n (enc/qb 1e6 ; [53.48 99.33]\n (get-min-level :report :info ns)\n (get-min-level :report [[\"*\" :info]] ns))))\n\n(let [;; Legacy API unfortunately treated empty colls as allow-all\n leglist (fn [x] (when x (if (#{[] #{}} x) nil x)))]\n (defn- legacy-ns-filter [ns-whitelist ns-blacklist]\n (let [ns-whitelist (leglist ns-whitelist)\n ns-blacklist (leglist ns-blacklist)]\n (when (or ns-whitelist ns-blacklist)\n {:allow ns-whitelist :deny ns-blacklist}))))\n\n(comment (legacy-ns-filter [] [\"foo\"]))\n\n(let [level>= level>=\n may-log-ns? may-log-ns?\n get-min-level get-min-level\n legacy-ns-filter legacy-ns-filter]\n\n (defn #?(:clj ^:no-doc may-log? :cljs ^:no-doc ^:boolean may-log?)\n \"Private, don't use. Returns true iff level and ns are runtime unfiltered.\"\n ([ level ] (may-log? :trace level nil nil))\n ([ level ?ns-str ] (may-log? :trace level ?ns-str nil))\n ([ level ?ns-str ?config] (may-log? :trace level ?ns-str ?config))\n ([default-min-level level ?ns-str ?config]\n (let [config (or ?config *config*) ; NB may also be appender map\n min-level\n (get-min-level default-min-level\n (or\n (get config :min-level)\n (get config :level) ; Legacy\n )\n ?ns-str)]\n\n (if (level>= level min-level)\n (if-let [ns-filter\n (or\n (get config :ns-filter)\n (legacy-ns-filter ; Legacy\n (get config :ns-whitelist)\n (get config :ns-blacklist)))]\n\n (if (may-log-ns? ns-filter ?ns-str) true false)\n true)\n false)))))\n\n(comment (enc/qb 1e6 (may-log? :info))) ; 120.4\n\n;;;; Compile-time filtering\n\n#?(:clj (defonce ^:private compile-time-config_ (atom {})))\n#?(:clj\n (defonce ^:private compile-time-min-level\n (let [level\n (enc/get-env {:as :edn}\n [:taoensso.timbre.min-level<.edn>\n :timbre-level<.edn> ; Legacy\n :timbre-log-level<.edn> ; Legacy\n ])\n\n level (if (string? level) (keyword level) level) ; Legacy\n ]\n\n (when (some? level)\n (if-not (valid-level? level)\n (truss/ex-info! (str \"Invalid compile-time min-level: \" level) {:level (truss/typed-val level)})\n (do\n (swap! compile-time-config_ assoc :min-level level)\n level))))))\n\n#?(:clj\n (defonce ^:private compile-time-ns-filter\n (let [ns-pattern\n (or\n (enc/get-env {:as :edn}\n [:taoensso.timbre.ns-pattern<.edn>\n :timbre-ns-pattern<.edn> ; Legacy\n ])\n\n (legacy-ns-filter ; Legacy\n (enc/get-env {:as :edn} :timbre-ns-whitelist<.edn>)\n (enc/get-env {:as :edn} :timbre-ns-blacklist<.edn>)))\n\n ns-pattern ; Support legacy :whitelist, :blacklist\n (if (map? ns-pattern)\n {:allow (or (:allow ns-pattern) (:whitelist ns-pattern))\n :deny (or (:deny ns-pattern) (:blacklist ns-pattern))}\n ns-pattern)\n\n present? (some? ns-pattern)\n ns-pattern (or ns-pattern \"*\")]\n\n (swap! compile-time-config_ assoc :ns-pattern ns-pattern)\n ;; (when present?\n ;; (println (str \"Compile-time (elision) Timbre ns-pattern: \" ns-pattern)))\n\n ns-pattern)))\n\n#?(:clj\n (defn ^:no-doc -elide?\n \"Returns true iff level or ns are compile-time filtered.\n Called only at macro-expansiom time.\"\n [level-form ns-str-form]\n (not\n (and\n (or ; Level okay\n (nil? compile-time-min-level)\n (not (valid-level? level-form)) ; Not a compile-time level const\n (level>= level-form compile-time-min-level))\n\n (or ; Namespace okay\n (not (string? ns-str-form)) ; Not a compile-time ns-str const\n (may-log-ns? compile-time-ns-filter ns-str-form))))))\n\n;;;; Namespace min-level utils\n\n(defn set-min-level [config min-level] (assoc config :min-level (valid-level min-level)))\n(defn set-min-level! [min-level] (swap-config! (fn [old] (set-min-level old min-level))))\n#?(:clj\n (defmacro with-min-level [min-level & body]\n `(binding [*config* (set-min-level *config* ~min-level)] ~@body)))\n\n(defn set-ns-min-level\n \"Returns given Timbre `config` with its `:min-level` modified so that\n the given namespace has the specified minimum logging level.\n\n When no namespace is provided, `*ns*` will be used.\n When `?min-level` is nil, any minimum level specifications for the\n *exact* given namespace will be removed.\n\n See `*config*` docstring for more about `:min-level`.\n See also `set-min-level!` for a util to directly modify `*config*`.\"\n\n #?(:clj ([config ?min-level] (set-ns-min-level config *ns* ?min-level))) ; No *ns* at Cljs runtime\n ( [config ns ?min-level]\n (let [ns (str (truss/have ns))\n min-level* ; [[<ns-pattern> <min-level>] ...]\n (let [x (get config :min-level)]\n (if (vector? x)\n x\n [[\"*\" (valid-level x)]])) ; :info -> [[\"*\" :info]]\n\n min-level*\n (reduce ; Remove any pre-existing [<ns> _] or [#{<ns>} _] entries\n (fn [acc [ns-pattern _pattern-min-level :as entry]]\n (if-let [exact-match? (or (= ns-pattern ns) (= ns-pattern #{ns}))]\n (do acc) ; Remove entry\n (conj acc entry) ; Retain entry\n ))\n\n (if-let [new-min-level ?min-level]\n [[ns (valid-level new-min-level)]] ; Insert new entry at head\n [])\n\n min-level*)\n\n min-level*\n (if-let [simplified ; [[\"*\" :info]] -> :info\n (when (= (count min-level*) 1)\n (let [[[ns-pattern level]] min-level*]\n (when (= ns-pattern \"*\") level)))]\n simplified\n (not-empty min-level*))]\n\n (assoc config :min-level min-level*))))\n\n(comment :see-tests)\n\n#?(:clj\n (defmacro set-ns-min-level!\n \"Like `set-ns-min-level` but directly modifies `*config*`.\n\n Can conveniently set the minimum log level for the current ns:\n (set-ns-min-level! :info) => Sets min-level for current *ns*\n\n See `set-ns-min-level` for details.\"\n\n ;; Macro to support compile-time Cljs *ns*\n ([ ?min-level] `(set-ns-min-level! ~(str *ns*) ~?min-level))\n ([ns ?min-level] `(swap-config! (fn [config#] (set-ns-min-level config# ~(str ns) ~?min-level))))))\n\n;;;; Utils\n\n#?(:clj (defmacro ^:no-doc get-env [] `(enc/get-locals)))\n(comment ((fn foo [x y] (get-env)) 5 10))\n\n#?(:clj (defonce ^:private get-agent (enc/fmemoize (fn [appender-id ] (agent nil :error-mode :continue)))))\n(do (defonce ^:private get-rate-limiter (enc/fmemoize (fn [appender-id specs] (enc/rate-limiter specs)))))\n\n(comment\n (get-agent :my-appender)\n (def rf (get-rate-limiter :my-appender [[10 5000]])))\n\n(defn- get-timestamp [timestamp-opts instant]\n #?(:clj\n (let [{:keys [pattern locale timezone]} timestamp-opts]\n ;; iso8601 example: 2020-09-14T08:31:17.040Z (UTC)\n (.format ^java.text.SimpleDateFormat\n (enc/simple-date-format* pattern locale timezone)\n instant))\n\n :cljs\n (let [{:keys [pattern]} timestamp-opts]\n (if (enc/identical-kw? pattern :iso8601)\n (.toISOString (js/Date. instant)) ; e.g. 2020-09-14T08:29:49.711Z (UTC)\n ;; Pattern can also be be `goog.i18n.DateTimeFormat.Format`, etc.\n (.format\n (goog.i18n.DateTimeFormat. pattern)\n instant)))))\n\n(comment (get-timestamp default-timestamp-opts (enc/now-udt)))\n\n#?(:clj (defn ^:no-doc get-?hostname \"Returns uncached local hostname string, or nil.\" [] (enc/hostname nil)))\n#?(:clj (defn get-hostname \"Returns cached local hostname string.\" ^String [] (enc/hostname (enc/msecs :mins 1) 5000 \"UnknownHost\")))\n\n#?(:clj\n (defn ansi-color [color]\n (str \"\\u001b[\"\n (case color\n :reset \"0\" :black \"30\" :red \"31\"\n :green \"32\" :yellow \"33\" :blue \"34\"\n :purple \"35\" :cyan \"36\" :white \"37\"\n \"0\")\n \"m\")))\n\n#?(:clj\n (let [ansi-reset (ansi-color :reset)]\n (defn color-str\n ([color ] (str (ansi-color color) ansi-reset)) ; Back compatibility\n ([color x ] (str (ansi-color color) x ansi-reset))\n ([color x y ] (str (ansi-color color) x y ansi-reset))\n ([color x y & more] (str (ansi-color color) x y (apply str more) ansi-reset)))))\n\n#?(:clj (def default-out (java.io.OutputStreamWriter. System/out)))\n#?(:clj (def default-err (java.io.PrintWriter. System/err)))\n#?(:clj\n (defmacro with-default-outs [& body]\n `(binding [*out* default-out, *err* default-err] ~@body)))\n\n#?(:clj\n (defmacro sometimes\n \"Handy for sampled logging, etc.\"\n [probability & body]\n (if (enc/const-form? probability)\n `(when (< (Math/random) ~(enc/as-pnum! probability)) ~@body)\n `(when (< (Math/random) (double ~probability)) ~@body))))\n\n;;;; Context\n\n(def ^:dynamic *context* \"General-purpose dynamic logging context\" nil)\n\n#?(:clj\n (defmacro with-context\n \"Executes body so that given arbitrary data will be passed (as `:context`)\n to appenders for any enclosed logging calls.\n\n (with-context\n {:user-name \\\"Stu\\\"} ; Will be incl. in data dispatched to appenders\n (info \\\"User request\\\"))\n\n See also `with-context+`.\"\n\n [context & body] `(binding [*context* ~context] ~@body)))\n\n#?(:clj\n (defmacro with-context+\n \"Like `with-context`, but merges given context into current context.\"\n [context & body]\n `(binding [*context* (conj (or *context* {}) ~context)]\n ~@body)))\n\n(comment (with-context+ {:foo1 :bar1} (with-context+ {:foo2 :bar2} *context*)))\n\n;;;; Logging core\n\n(defn- parse-vargs\n \"vargs -> [?err ?meta ?msg-fmt api-vargs]\"\n [?err msg-type vargs]\n (let [auto-error? (enc/identical-kw? ?err :auto)\n fmt-msg? (enc/identical-kw? msg-type :f)\n [v0] vargs]\n\n (if (and auto-error? (enc/error? v0))\n (let [?err v0\n ?meta nil\n vargs (enc/vrest vargs)\n ?msg-fmt (if fmt-msg? (let [[v0] vargs] v0) nil)\n vargs (if fmt-msg? (enc/vrest vargs) vargs)]\n\n [?err ?meta ?msg-fmt vargs])\n\n (let [?meta (if (and (map? v0) (:meta (meta v0))) v0 nil)\n ?err (or (:err ?meta) (if auto-error? nil ?err))\n ?meta (dissoc ?meta :err)\n vargs (if ?meta (enc/vrest vargs) vargs)\n ?msg-fmt (if fmt-msg? (let [[v0] vargs] v0) nil)\n vargs (if fmt-msg? (enc/vrest vargs) vargs)]\n\n [?err ?meta ?msg-fmt vargs]))))\n\n(comment\n (let [ex (Exception. \"ex\")]\n (enc/qb 1e4\n (parse-vargs :auto :f [\"fmt\" :a :b :c])\n (parse-vargs :auto :p [ex :a :b :c])\n (parse-vargs :auto :p [^:meta {:foo :bar} :a :b :c])\n (parse-vargs :auto :p [ {:foo :bar} :a :b :c])\n (parse-vargs :auto :p [ex])\n (parse-vargs :auto :p [^:meta {:err ex} :a :b :c])))\n ;; [1.49 1.34 2.99 0.83 0.89 2.98]\n (infof \"Hi %s\" \"steve\")\n (infof ^:meta {:hash :bar} \"Hi %s\" \"steve\")\n (infof ^:meta {:err (Exception. \"ex\")} \"Hi %s\" \"steve\"))\n\n(defn- protected-fn [error-msg f]\n (fn [data]\n (truss/try* (f data)\n (catch :all t\n (let [{:keys [level ?ns-str ?file ?line]} data]\n (truss/ex-info! error-msg\n {:output-fn f\n :level level\n :loc {:ns ?ns-str, :file ?file, :line ?line}\n :log-data data}\n t))))))\n\n(comment ((protected-fn \"Whoops\" (fn [data] (/ 1 0))) {}))\n\n(declare\n default-timestamp-opts\n default-output-fn\n default-output-msg-fn\n default-output-error-fn)\n\n(defn ^:no-doc -log!\n \"Core low-level log fn. Private, don't use!\"\n\n ;; Back compatible arities for AOT tools,\n ;; Ref. <https://github.com/fzakaria/slf4j-timbre/issues/20>\n ([config level ?ns-str ?file ?line msg-type ?err vargs_ ?base-data ] (-log! config level ?ns-str ?file ?line nil msg-type ?err vargs_ ?base-data nil false nil nil))\n ([config level ?ns-str ?file ?line msg-type ?err vargs_ ?base-data callsite-id ] (-log! config level ?ns-str ?file ?line nil msg-type ?err vargs_ ?base-data callsite-id false nil nil))\n ([config level ?ns-str ?file ?line msg-type ?err vargs_ ?base-data callsite-id spying? ] (-log! config level ?ns-str ?file ?line nil msg-type ?err vargs_ ?base-data callsite-id spying? nil nil))\n ([config level ?ns-str ?file ?line ?column msg-type ?err vargs_ ?base-data callsite-id spying? ] (-log! config level ?ns-str ?file ?line ?column msg-type ?err vargs_ ?base-data callsite-id spying? nil nil))\n ([config level ?ns-str ?file ?line ?column msg-type ?err vargs_ ?base-data callsite-id spying? instant may-log]\n (when (or may-log (may-log? :trace level ?ns-str config))\n (let [instant (or instant (enc/now-dt*))\n context *context*\n vargs @vargs_\n\n [?err ?meta ?msg-fmt vargs]\n (parse-vargs ?err msg-type vargs)\n\n data ; Pre-middleware\n (conj\n (or ?base-data {})\n {:instant instant\n :level level\n :context context\n :config config ; Entire config!\n :?ns-str ?ns-str\n :?file ?file\n :?line ?line\n :?column ?column\n #?(:clj :hostname_) #?(:clj (delay (get-hostname)))\n :error-level? (contains? #{:error :fatal} level)\n :?err ?err\n :msg-type msg-type ; Undocumented\n :?msg-fmt ?msg-fmt ; Undocumented\n :?meta ?meta\n :vargs vargs\n :spying? spying?})\n\n ?data ; Post middleware\n (reduce ; Apply middleware: data->?data\n (fn [acc mf]\n (let [result (mf acc)]\n (if (nil? result)\n (reduced nil)\n result)))\n data\n (get config :middleware))]\n\n (when-let [data ?data] ; Not filtered by middleware\n (let [{:keys [level vargs]} data\n data\n (enc/assoc-nx data\n :msg_ (delay ((protected-fn \"Timbre error when calling (msg-fn <data>)\"\n default-output-msg-fn) data)) ; Deprecated\n\n :hash_ ; Identify unique logging \"calls\" for rate limiting, etc.\n (delay\n (hash\n (enc/cond\n ;; Partial control, callsite-id only useful for direct macro calls\n :if-let [id (get ?meta :id)] [id callsite-id level]\n :if-let [id (get ?meta :id!)] id ; Complete control, undocumented\n\n ;; Deprecated, was never officially documented\n :if-let [h (get ?meta :hash)] [h callsite-id ?msg-fmt level]\n :else [vargs callsite-id ?msg-fmt level] ; Auto/default\n ))))\n\n ;;; Optimization: try share timestamp & output between appenders\n get-timestamp-delay\n (let [get-shared-delay (enc/fmemoize (fn [opts] (delay (get-timestamp opts (get data :instant)))))\n base-opts_ (delay (conj default-timestamp-opts (get config :timestamp-opts)))]\n\n (fn [?appender-opts] ; Return timestamp_ delay\n (if (or\n (nil? ?appender-opts)\n (enc/identical-kw? ?appender-opts :inherit) ; Back compatibility\n )\n\n (get-shared-delay @base-opts_)\n (get-shared-delay (conj @base-opts_ ?appender-opts)))))\n\n get-output-fn\n (let [base-fn (enc/fmemoize (get config :output-fn default-output-fn))]\n (fn [?appender-fn] ; Return output-fn\n (protected-fn \"Timbre error when calling (output-fn <data>)\"\n (if (or\n (nil? ?appender-fn)\n (enc/identical-kw? ?appender-fn :inherit) ; Back compatibility\n )\n\n base-fn\n ?appender-fn))))\n\n base-output-opts (get config :output-opts)]\n\n (reduce-kv\n (fn [_ id appender]\n (when (and (get appender :enabled?) (may-log? :trace level ?ns-str appender))\n\n (let [rate-limit-specs (get appender :rate-limit)\n rate-limit-okay?\n (or\n (empty? rate-limit-specs)\n (let [rl-fn (get-rate-limiter id rate-limit-specs)]\n (not (rl-fn (force (get data :hash_))))))]\n\n (when rate-limit-okay?\n (let [{:keys [async?] apfn :fn} appender\n\n timestamp_ (get-timestamp-delay (get appender :timestamp-opts))\n output-fn (get-output-fn (get appender :output-fn))\n output-opts (or (get appender :output-opts) base-output-opts)\n output_\n (delay\n (output-fn\n (assoc data\n :timestamp_ timestamp_\n :output-opts output-opts)))\n\n data\n (conj data\n {:appender-id id\n :appender appender\n :output-opts output-opts\n :output-fn output-fn\n :output_ output_\n :timestamp_ timestamp_})\n\n ?data ; Final data prep before going to appender\n (if-let [mfn (get appender :middleware-fn)]\n (mfn data) ; Deprecated, undocumented\n data)]\n\n (when-let [data ?data] ; Not filtered by middleware\n\n ;; NB Unless `async?`, we currently allow appenders\n ;; to throw since it's not particularly obvious\n ;; how/where we should report problems. Throwing\n ;; early seems preferable to just silently dropping\n ;; errors. In effect, we currently require appenders\n ;; to take responsibility over appropriate trapping.\n\n #?(:cljs (apfn data)\n :clj\n (if async?\n (send-off (get-agent id) (fn [_] (apfn data) nil))\n (apfn data)))))))))\n nil\n (get config :appenders))))))\n nil))\n\n(comment\n (-log! *config* :info nil nil nil nil :p :auto\n (delay [(do (println \"hi\") :x) :y]) nil \"callsite-id\" false))\n\n(enc/defonce ^:private callsite-counter\n \"Simple counter, used to uniquely identify each log macro expansion.\"\n (enc/counter))\n\n#?(:clj (enc/defalias truss/keep-callsite))\n#?(:clj\n (defmacro log! ; Public wrapper around `-log!`\n \"Core low-level log macro. Useful for tooling/library authors, etc.\n\n * `level` - must eval to a valid logging level\n * `msg-type` - must eval to e/o #{:p :f nil}\n * `args` - arguments seq (ideally vec) for logging call\n * `opts` - ks e/o #{:config ?err ?base-data spying?\n :?ns-str :?file :?line :?column}\n\n Supports compile-time elision when compile-time const vals\n provided for `level` and/or `?ns-str`.\n\n Logging wrapper examples:\n\n (defn log-wrapper-fn [& args] (timbre/log! :info :p args))\n (defmacro log-wrapper-macro [& args] (timbre/keep-callsite `(timbre/log! :info :p ~args)))\"\n\n ([{:as opts\n :keys [loc level msg-type args vargs\n config ?err ?base-data spying?\n #_instant #_may-log?]\n :or\n {config `*config*\n ?err :auto}}]\n\n (truss/have? [:or nil? sequential? symbol?] args)\n (let [callsite-id (callsite-counter)\n loc-form (or loc (enc/get-source &form &env))\n loc-map (when (map? loc-form) loc-form)\n loc-sym (when (symbol? loc-form) loc-form)\n\n ns-form (get opts :?ns-str (get loc-map :ns (when loc-sym `(get ~loc-sym :ns))))\n file-form (get opts :?file (get loc-map :file (when loc-sym `(get ~loc-sym :file))))\n line-form (get opts :?line (get loc-map :line (when loc-sym `(get ~loc-sym :line))))\n column-form (get opts :?column (get loc-map :column (when loc-sym `(get ~loc-sym :column))))\n\n elide? (and (enc/const-forms? level ns-form) (-elide? level ns-form))]\n\n (when-not elide?\n (let [vargs-form\n (or vargs\n (if (symbol? args)\n `(enc/ensure-vec ~args)\n `[ ~@args]))]\n\n ;; Note pre-resolved expansion\n `(taoensso.timbre/-log! ~config ~level ~ns-form ~file-form ~line-form ~column-form ~msg-type ~?err\n (delay ~vargs-form) ~?base-data ~callsite-id ~spying?\n ~(get opts :instant)\n ~(get opts :may-log?))))))\n\n ([level msg-type args & [opts]]\n (let [loc (enc/get-source &form &env)\n opts (assoc (conj {:loc loc} opts)\n :level level, :msg-type msg-type, :args args)]\n `(log! ~opts)))))\n\n(comment\n (do (log! :info :p [\"foo\"]))\n (macroexpand '(log! :info :p [\"foo\" x]))\n (macroexpand '(log! :info :p [\"foo\" x] {:?line 42}))\n (macroexpand '(log! :info :p args {:?line 42}))\n\n (defn wrapper-fn [& args] (log! :info :p args))\n (wrapper-fn \"a\" \"b\"))\n\n;;;; Benchmarking\n\n(comment\n (set-min-level! :debug)\n (may-log? :trace)\n (with-min-level :trace (log? :trace))\n (enc/qb 1e4\n (may-log? :trace)\n (may-log? :trace \"foo\")\n (tracef \"foo\")\n (when false \"foo\"))\n ;; [0.64 0.66 1.52 0.26]\n\n (defmacro with-sole-appender [appender & body]\n `(with-config (assoc *config* :appenders {:appender ~appender}) ~@body))\n\n (with-sole-appender {:enabled? true :fn (fn [data] nil)}\n (enc/qb 1e4 (info \"foo\"))) ; ~54.86 ; Time to delays ready\n\n (with-sole-appender {:enabled? true :fn (fn [data] (force (:output_ data)))}\n (enc/qb 1e4 (info \"foo\"))) ; ~157.95 ; Time to output ready\n )\n\n;;;; Common public API\n;; Note extra complications due to CLJ-865\n\n#?(:clj\n (do\n ;;; Log using print-style args\n (defmacro log* [config level & args] `(log! ~level :p ~args ~{:loc (enc/get-source &form &env), :config config}))\n (defmacro log [level & args] `(log! ~level :p ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro trace [& args] `(log! :trace :p ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro debug [& args] `(log! :debug :p ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro info [& args] `(log! :info :p ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro warn [& args] `(log! :warn :p ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro error [& args] `(log! :error :p ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro fatal [& args] `(log! :fatal :p ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro report [& args] `(log! :report :p ~args ~{:loc (enc/get-source &form &env)}))\n\n ;;; Log using format-style args\n (defmacro logf* [config level & args] `(log! ~level :f ~args ~{:loc (enc/get-source &form &env), :config config}))\n (defmacro logf [level & args] `(log! ~level :f ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro tracef [& args] `(log! :trace :f ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro debugf [& args] `(log! :debug :f ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro infof [& args] `(log! :info :f ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro warnf [& args] `(log! :warn :f ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro errorf [& args] `(log! :error :f ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro fatalf [& args] `(log! :fatal :f ~args ~{:loc (enc/get-source &form &env)}))\n (defmacro reportf [& args] `(log! :report :f ~args ~{:loc (enc/get-source &form &env)}))))\n\n(comment\n (macroexpand '(infof \"hello %s\" \"world\"))\n (macroexpand '(infof (Exception.) \"hello %s\" \"world\"))\n (macroexpand '(infof (Exception.))))\n\n;;;;\n\n#?(:clj\n (do\n (defmacro log-errors [& body] `(truss/try* (do ~@body) (catch :all t# (log! :error nil nil {:loc ~(enc/get-source &form &env), :?err t#}))))\n (defmacro logged-future [& body] `(future (truss/try* (do ~@body) (catch :all t# (log! :error nil nil {:loc ~(enc/get-source &form &env), :?err t#})))))\n (defmacro log-and-rethrow-errors [& body]\n `(truss/try* (do ~@body)\n (catch :all t#\n (log! :error nil nil {:loc ~(enc/get-source &form &env), :?err t#})\n (throw t#))))))\n\n(comment\n (macroexpand '(log-errors (/ 0)))\n (macroexpand '(logged-future (/ 0)))\n (macroexpand '(log-and-rethrow-errors (/ 0))))\n\n#?(:clj\n (defmacro ^:no-doc -spy [loc config level name form]\n `(truss/try*\n (let [result# ~form]\n (log! ~level :p [~name \"=>\" result#] ~{:loc loc, :config config, :spying? true})\n result#)\n (catch :all t#\n (log! :error nil nil {:loc ~loc, :?err t#, :spying? true})\n (throw t#)))))\n\n#?(:clj\n (defmacro spy\n \"Evaluates named form and logs its result. Always returns the result.\n Defaults to `:debug` logging level, and unevaluated form as name:\n (spy (+ 3 2)) => (timbre/debug '(+ 3 2) \\\"=>\\\" 5)\"\n ([ form] `(-spy ~(enc/get-source &form &env) *config* :debug '~form ~form))\n ([ level form] `(-spy ~(enc/get-source &form &env) *config* ~level '~form ~form))\n ([ level name form] `(-spy ~(enc/get-source &form &env) *config* ~level ~name ~form))\n ([config level name form] `(-spy ~(enc/get-source &form &env) ~config ~level ~name ~form))))\n\n(comment\n (macroexpand '(spy (+ 3 2)))\n (do (spy (+ 3 2)))\n (with-config\n (assoc example-config :appenders {:default {:enabled? true :fn (fn [m] (println (:spying? m)))}})\n (info (+ 3 2))\n (spy (+ 3 2))))\n\n#?(:clj\n (defn handle-uncaught-jvm-exceptions!\n \"Sets JVM-global DefaultUncaughtExceptionHandler.\"\n [& [handler]]\n (let [handler\n (or handler\n (fn [throwable ^Thread thread]\n (error throwable \"Uncaught exception on thread:\"\n (.getName thread))))]\n\n (Thread/setDefaultUncaughtExceptionHandler\n (reify Thread$UncaughtExceptionHandler\n (uncaughtException [this thread throwable] (handler throwable thread)))))))\n\n(comment (handle-uncaught-jvm-exceptions!))\n\n;;;; Default fns\n\n(defn- pr-error\n \"Used as fallback error-fn\"\n [error]\n (truss/try*\n (pr-str error)\n (catch :all _pr-str-error\n (truss/try*\n (str error)\n (catch :all _str-error\n \"<pr-error failed>\")))))\n\n(defn default-output-fn\n \"Default (fn [data]) -> final output string, used to produce\n final formatted output_ string from final log data.\n\n Options (included as `:output-opts` in data sent to fns below):\n\n :error-fn ; When present and (:?err data) present,\n ; (error-fn data) will be called to generate output\n ; (e.g. a stacktrace) for the error.\n ;\n ; Default value: `default-output-error-fn`.\n ; Use `nil` value to exclude error output.\n\n :msg-fn ; When present, (msg-fn data) will be called to\n ; generate a message from `vargs` (vector of raw\n ; logging arguments).\n ;\n ; Default value: `default-output-msg-fn`.\n ; Use `nil` value to exclude message output.\"\n\n ([base-output-opts data] ; Back compatibility (before :output-opts)\n (let [data\n (if (empty? base-output-opts)\n data\n (assoc data :output-opts\n (conj\n base-output-opts ; Opts from partial\n (get data :output-opts) ; Opts from data override\n )))]\n\n (default-output-fn data)))\n\n ([data]\n (let [{:keys [level ?err #_vargs #_msg_ ?ns-str ?file hostname_\n timestamp_ ?line #_?column output-opts]}\n data]\n\n (str\n (when-let [ts (force timestamp_)] (str ts \" \"))\n #?(:clj (force hostname_)) #?(:clj \" \")\n (str/upper-case (name level)) \" \"\n ;; \"[\" (or ?ns-str ?file \"?\") \":\" (or ?line \"?\") \"] - \"\n (when-let [loc (or ?ns-str ?file)]\n (str \"[\" loc (when-let [line ?line] (str \":\" line)) \"]\"))\n \" - \"\n\n (when-let [msg-fn (get output-opts :msg-fn default-output-msg-fn)]\n (msg-fn data))\n\n (when-let [err ?err]\n (when-let [ef (get output-opts :error-fn default-output-error-fn)]\n (when-not (get output-opts :no-stacktrace?) ; Back compatibility\n (let [nl enc/newline]\n (truss/try*\n (str nl (ef data))\n (catch :all ef-error\n (str nl\n \"[TIMBRE WARNING]: `error-fn` failed, falling back to `pr-error`.\" nl\n \"`error-fn` error: \" nl (pr-error ef-error) nl nl\n \" Original error (given to `error-fn`): \" nl (pr-error err))))))))))))\n\n(defn- default-arg->str-fn [x]\n (enc/cond\n (nil? x) \"nil\"\n (string? x) x\n :else\n #?(:clj (with-out-str (pr x))\n :cljs (pr-str x))))\n\n(defn- legacy-arg->str-fn [x]\n (enc/cond\n (nil? x) \"nil\"\n (record? x) (pr-str x)\n :else x))\n\n(defn- str-join\n ([ xs] (str-join default-arg->str-fn xs))\n ([arg->str-fn xs] (enc/str-join \" \" (map arg->str-fn) xs)))\n\n(comment\n (defrecord MyRec [x])\n (str-join [\"foo\" (MyRec. \"foo\")]))\n\n(defn default-output-msg-fn\n \"(fn [data]) -> string, used by `default-output-fn` to generate output\n for `:vargs` value (vector of raw logging arguments) in log data.\"\n [{:keys [msg-type ?msg-fmt vargs output-opts] :as data}]\n (let [{:keys [arg->str-fn] ; Undocumented\n :or {arg->str-fn default-arg->str-fn}}\n output-opts]\n\n (case msg-type\n nil \"\"\n :p (str-join arg->str-fn vargs)\n :f\n (if (string? ?msg-fmt)\n (enc/format* ?msg-fmt vargs) ; Don't use arg->str-fn, would prevent custom formatting\n (truss/ex-info! \"Timbre format-style logging call without a format pattern string\"\n {:?msg-fmt ?msg-fmt :type (type ?msg-fmt) :vargs vargs})))))\n\n(comment\n (default-output-msg-fn\n {:msg-type :p :vargs [\"a\" \"b\"]\n :output-opts {:arg->str-fn (fn [_] \"x\")}}))\n\n#?(:clj\n (do\n ;; Pretty v1 used string fonts, v2 uses unrelated keywords\n (def ^:private invalid-stacktrace-fonts-msg \"Invalid Timbre stacktrace fonts (see `org.clj-commons/pretty` docs)\")\n (def ^:private valid-stacktrace-fonts? (fn [st-fonts] (not (enc/rsome-kv (fn [k v] (string? v)) st-fonts))))\n (def ^:private default-stacktrace-fonts\n (let [st-fonts\n (enc/get-env\n {:as :edn :default fmt-ex/default-fonts}\n [:taoensso.timbre.default-stacktrace-fonts<.edn> ; Undocumented\n :timbre-defaut-stacktrace-fonts<.edn> ; Legacy\n ])]\n\n (if (valid-stacktrace-fonts? st-fonts) ; May be nil or {}\n (do st-fonts)\n (truss/ex-info! invalid-stacktrace-fonts-msg\n {:given-fonts st-fonts\n :default-fonts fmt-ex/default-fonts}))))\n\n (def ^:private valid-stacktrace-fonts!\n (enc/fmemoize\n (fn [st-fonts]\n (if (valid-stacktrace-fonts? st-fonts)\n (do st-fonts)\n (do\n ;; Log error on first encounter\n (error invalid-stacktrace-fonts-msg st-fonts)\n default-stacktrace-fonts)))))))\n\n(defn default-output-error-fn\n \"Default (fn [data]) -> string, used by `default-output-fn` to\n generate output for `:?err` value in log data.\n\n For Clj:\n Uses `org.clj-commons/pretty` to return an attractive stacktrace.\n Options:\n :stacktrace-fonts ; See `clj-commons.format.exceptions/*fonts*`\n\n For Cljs:\n Returns simple stacktrace string.\"\n\n [{:keys [?err output-opts] :as data}]\n (let [err (truss/have ?err)]\n\n #?(:cljs\n (let [nl enc/newline]\n (str\n (.-stack err) ; Includes `ex-message`\n (when-let [d (ex-data err)]\n (str nl \"ex-data:\" nl \" \" (pr-str d)))\n\n (when-let [c (ex-cause err)]\n (str nl nl \"Caused by:\" nl\n (default-output-error-fn\n (assoc data :?err c))))))\n\n :clj\n (let [st-fonts\n (if-let [e (find output-opts :stacktrace-fonts)]\n (valid-stacktrace-fonts! (val e))\n default-stacktrace-fonts)]\n\n (binding [fmt-ex/*fonts* st-fonts]\n (fmt-ex/format-exception err))))))\n\n(comment\n (default-output-error-fn\n {:?err (Exception. \"Boo\")\n :output-opts {:stacktrace-fonts {}}}))\n\n;;;; Ns imports\n\n#?(:clj\n (defmacro refer-timbre\n \"(require\n '[taoensso.timbre :as timbre\n :refer [log trace debug info warn error fatal report\n logf tracef debugf infof warnf errorf fatalf reportf\n spy]])\"\n []\n `(require\n '~'[taoensso.timbre :as timbre\n :refer [log trace debug info warn error fatal report\n logf tracef debugf infof warnf errorf fatalf reportf\n spy]])))\n\n;;;; Appender shutdown\n\n(defn shutdown-appenders!\n \"Alpha, subject to change.\n\n Iterates through all appenders in config (enabled or not), and\n calls (:shutdown-fn appender) whenever that fn exists.\n\n This signals to these appenders that they should immediately\n close/release any resources that they may have open/acquired,\n and permanently noop on future logging requests.\n\n Returns the set of appender-ids that had a shutdown-fn called.\n\n This fn is called automatically on JVM shutdown, but can also\n be called manually.\"\n\n ([ ] (shutdown-appenders! *config*))\n ([config]\n (reduce-kv\n (fn [acc appender-id appender]\n (if-let [sfn (:shutdown-fn appender)]\n (do (sfn) (conj acc appender-id))\n acc))\n #{}\n (:appenders config))))\n\n(comment (shutdown-appenders! {:appenders {:a {:shutdown-fn (fn [])} :b {}}}))\n\n#?(:clj\n (defonce ^:private shutdown-hook\n (.addShutdownHook (Runtime/getRuntime)\n (Thread. ^Runnable shutdown-appenders!))))\n\n;;;; Config\n\n;;; Alias core appenders here for user convenience\n#?(:clj (enc/defalias core-appenders/println-appender))\n#?(:clj (enc/defalias core-appenders/spit-appender))\n#?(:cljs (def println-appender core-appenders/println-appender))\n#?(:cljs (def console-appender core-appenders/console-appender))\n\n(def default-timestamp-opts\n \"Controls (:timestamp_ data)\"\n #?(:cljs {:pattern :iso8601 #_\"yy-MM-dd HH:mm:ss\"}\n :clj\n {:pattern :iso8601 #_\"yyyy-MM-dd'T'HH:mm:ss.SSSX\" #_\"yy-MM-dd HH:mm:ss\"\n :locale :jvm-default #_(java.util.Locale. \"en\")\n :timezone :utc #_(java.util.TimeZone/getTimeZone \"Europe/Amsterdam\")}))\n\n(def default-config\n \"Default/example Timbre `*config*` value:\n\n {:min-level :debug #_[[\\\"taoensso.*\\\" :error] [\\\"*\\\" :debug]]\n :ns-filter #{\\\"*\\\"} #_{:deny #{\\\"taoensso.*\\\"} :allow #{\\\"*\\\"}}\n\n :middleware [] ; (fns [data]) -> ?data, applied left->right\n\n :timestamp-opts default-timestamp-opts ; {:pattern _ :locale _ :timezone _}\n :output-fn default-output-fn ; (fn [data]) -> final output for use by appenders\n\n :appenders\n #?(:clj\n {:println (println-appender {:stream :auto})\n ;; :spit (spit-appender {:fname \\\"./timbre-spit.log\\\"})\n }\n\n :cljs\n (if (exists? js/window)\n {:console (console-appender {})}\n {:println (println-appender {})}))}\n\n See `*config*` for more info.\"\n\n {:min-level :debug #_[[\"taoensso.*\" :error] [\"*\" :debug]]\n :ns-filter #{\"*\"} #_{:deny #{\"taoensso.*\"} :allow #{\"*\"}}\n\n :middleware [] ; (fns [data]) -> ?data, applied left->right\n\n :timestamp-opts default-timestamp-opts ; {:pattern _ :locale _ :timezone _}\n :output-fn default-output-fn ; (fn [data]) -> final output\n\n :appenders\n #?(:clj\n {:println (println-appender {:stream :auto})\n ;; :spit (spit-appender {:fname \"./timbre-spit.log\"})\n }\n\n :cljs\n (if (exists? js/window)\n {:console (console-appender {})}\n {:println (println-appender {})}))})\n\n(comment\n (set-config! default-config)\n (infof \"Hello %s\" \"world :-)\"))\n\n(enc/defonce ^:dynamic *config*\n \"This config map controls all Timbre behaviour including:\n - When to log (via min-level and namespace filtering)\n - How to log (which appenders to use, etc.)\n - What to log (how log data will be transformed to final\n output for use by appenders)\n\n Initial config value will be (in descending order of preference):\n\n 1. `taoensso.timbre.config.edn` JVM property (read as EDN)\n 2. `TAOENSSO_TIMBRE_CONFIG_EDN` Env var (read as EDN)\n 3. `./taoensso.timbre.config.edn` resource file (read as EDN)\n 4. Value of `default-config`\n\n For all EDN cases (1-3): the EDN can represent either a Clojure map\n to merge into `default-config`, or a qualified symbol that'll\n resolve to a Clojure map to merge into `default-config`.\n\n See `default-config` for more info on the base/default config.\n\n You can modify the config value with standard `alter-var-root`,\n or `binding`.\n\n For convenience, there's also some dedicated helper utils:\n\n - `set-config!`, `merge-config!` ; Mutate *config*\n - `set-min-level!`, `set-ns-min-level!` ; Mutate *config* :min-level\n - `with-config`, `with-merged-config` ; Bind *config*\n - `with-min-level` ; Bind *config* :min-level\n\n MAIN CONFIG OPTIONS\n :min-level\n Logging will occur only if a logging call's level is >= this\n min-level. Possible values, in order:\n\n :trace = level 0\n :debug = level 1 ; Default min-level\n :info = level 2\n :warn = level 3\n :error = level 4 ; Error type\n :fatal = level 5 ; Error type\n :report = level 6 ; High general-purpose (non-error) type\n\n It's also possible to set a namespace-specific min-level by\n providing a vector that maps `ns-pattern`s to min-levels, e.g.:\n `[[#{\\\"taoensso.*\\\"} :error] ... [#{\\\"*\\\"} :debug]]`.\n\n Example `ns-pattern`s:\n #{}, \\\"*\\\", \\\"foo.bar\\\", \\\"foo.bar.*\\\", #{\\\"foo\\\" \\\"bar.*\\\"},\n {:allow #{\\\"foo\\\" \\\"bar.*\\\"} :deny #{\\\"foo.*.bar.*\\\"}}.\n\n See also `set-ns-min-level!` for a helper tool.\n\n :ns-filter\n Logging will occur only if a logging call's namespace is permitted\n by this ns-filter. Possible values:\n\n - Arbitrary (fn may-log-ns? [ns]) predicate fn.\n - An `ns-pattern` (see :min-level docs above).\n\n Useful for turning off logging in noisy libraries, etc.\n\n :middleware\n Vector of simple (fn [data]) -> ?new-data fns (applied left->right)\n that transform the data map dispatched to appender fns. If any middleware\n returns nil, NO dispatch will occur (i.e. the event will be filtered).\n\n Useful for layering advanced functionality. Similar to Ring middleware.\n\n :timestamp-opts ; Config map, see `default-timestamp-opts`\n :output-fn ; (fn [data]) -> final output for use by appenders,\n ; see `default-output-fn` for example\n :output-opts ; Optional map added to data sent to output-fn\n\n :appenders ; {<appender-id> <appender-map>}\n\n Where each appender-map has keys:\n :enabled? ; Must be truthy to log\n :min-level ; Optional *additional* appender-specific min-level\n :ns-filter ; Optional *additional* appender-specific ns-filter\n\n :async? ; Dispatch using agent? Useful for slow appenders (Clj only)\n ; Tip: consider calling (shutdown-agents) as part of your\n ; application shutdown if you have this enabled for any\n ; appenders.\n\n :rate-limit ; [[<ncalls-limit> <window-msecs>] ...], or nil\n ; Appender will noop a call after exceeding given number\n ; of the \\\"same\\\" calls within given rolling window/s.\n ;\n ; Example:\n ; [[100 (encore/ms :mins 1)]\n ; [1000 (encore/ms :hours 1)]] will noop a call after:\n ;\n ; - >100 \\\"same\\\" calls in 1 rolling minute, or\n ; - >1000 \\\"same\\\" calls in 1 rolling hour\n ;\n ; \\\"Same\\\" calls are identified by default as the\n ; combined hash of:\n ; - Callsite (i.e. each individual Timbre macro form)\n ; - Logging level\n ; - All arguments provided for logging\n ;\n ; You can manually override call identification:\n ; (timbre/infof ^:meta {:id \\\"my-limiter-call-id\\\"} ...)\n ;\n\n :timestamp-opts ; Optional appender-specific override for top-level option\n :output-fn ; Optional appender-specific override for top-level option\n :output-opts ; Optional appender-specific override for top-level option\n\n :fn ; (fn [data]) -> side-effects, with keys described below\n\n LOG DATA\n A single map with keys:\n :config ; Entire active config map\n :context ; `*context*` value at log time (see `with-context`)\n :appender-id ; Id of appender currently dispatching\n :appender ; Entire map of appender currently dispatching\n :instant ; Platform date (java.util.Date or js/Date)\n :level ; Call's level keyword (e.g. :info) (>= active min-level)\n :error-level? ; Is level e/o #{:error :fatal}?\n :spying? ; Is call occuring via the `spy` macro?\n :?ns-str ; String, or nil\n :?file ; String, or nil\n :?line ; Integer, or nil\n :?column ; Integer, or nil\n :?err ; First-arg platform error, or nil\n :?meta ; First-arg map when it has ^:meta metadata, used as a\n way of passing advanced per-call options to appenders\n :vargs ; Vector of raw args provided to logging call\n :timestamp_ ; Forceable - string\n :hostname_ ; Forceable - string (Clj only)\n :output-fn ; (fn [data]) -> final output for use by appenders\n :output_ ; Forceable result of calling (output-fn <this-data-map>)\n\n **NB** - any keys not specifically documented here should be\n considered private / subject to change without notice.\n\n COMPILE-TIME LEVEL/NS ELISION\n To control :min-level and :ns-filter at compile-time, use:\n\n - `taoensso.timbre.min-level.edn` JVM property (read as EDN)\n - `taoensso.timbre.ns-pattern.edn` JVM property (read as EDN)\n\n - `TAOENSSO_TIMBRE_MIN_LEVEL_EDN` env var (read as EDN)\n - `TAOENSSO_TIMBRE_NS_PATTERN_EDN` env var (read as EDN)\n\n Note that compile-time options will OVERRIDE options in `*config*`.\n\n NB: only simple (keyword) compile-time min-level's are supported,\n you CANNOT currently use the syntax for namespace-specific levels\n here.\n\n DEBUGGING INITIAL CONFIG\n See `:_init-config` for information re: Timbre's config on initial load.\"\n\n #?(:cljs default-config\n :clj\n (let [{:keys [source value]}\n (enc/get-env {:as :edn, :return :map}\n :taoensso.timbre.config<.edn>)\n\n value (enc/nested-merge default-config value)]\n\n (assoc value :_init-config\n {:loaded-from-source (or source [:default])\n :compile-time-config @compile-time-config_}))))\n\n;;;; Deprecated\n\n(enc/deprecated\n #?(:cljs (def ^:no-doc ^:deprecated console-?appender core-appenders/console-appender))\n (def ^:no-doc ^:deprecated ordered-levels [:trace :debug :info :warn :error :fatal :report])\n (def ^:no-doc ^:deprecated log? may-log?)\n (def ^:no-doc ^:deprecated example-config \"Prefer `default-config`.\" default-config)\n (defn ^:no-doc ^:deprecated logging-enabled? [level compile-time-ns] (may-log? level (str compile-time-ns)))\n (defn ^:no-doc ^:deprecated str-println [& xs] (str-join xs))\n #?(:clj (defmacro ^:no-doc ^:deprecated with-log-level [level & body] `(with-min-level ~level ~@body)))\n #?(:clj (defmacro ^:no-doc ^:deprecated with-logging-config [config & body] `(with-config ~config ~@body)))\n #?(:clj (defmacro ^:no-doc ^:deprecated logp [& args] `(log ~@args)))\n #?(:clj\n (defmacro ^:no-doc ^:deprecated log-env\n ([ ] `(log-env :debug))\n ([ level ] `(log-env ~level \"&env\"))\n ([ level name] `(log-env *config* ~level ~name))\n ([config level name] `(log* ~config ~level ~name \"=>\" (get-env)))))\n\n (defn ^:no-doc ^:deprecated set-level! \"Prefer `set-min-level!.`\"\n [level] (swap-config! (fn [m] (assoc m :min-level level))))\n\n #?(:clj\n (defmacro ^:no-doc ^:deprecated with-level \"Prefer `with-min-level`.\"\n [level & body] `(binding [*config* (assoc *config* :min-level ~level)] ~@body)))\n\n (defn ^:no-doc ^:deprected stacktrace\n \"Prefer `default-output-error-fn`.\"\n ([err ] (stacktrace err nil))\n ([err opts] (default-output-error-fn {:?err err :output-opts opts}))))\n"],"x_google_ignoreList":[0]}
@@ -0,0 +1,442 @@
1
+ var $CLJS = require("./cljs_env");
2
+ var $jscomp = $CLJS.$jscomp;
3
+ var COMPILED = false;
4
+ require("./cljs.core.js");
5
+ require("./clojure.set.js");
6
+ var environ=$CLJS.environ || ($CLJS.environ = {});
7
+ var fress=$CLJS.fress || ($CLJS.fress = {});
8
+ var datahike=$CLJS.datahike || ($CLJS.datahike = {});
9
+ var clojure=$CLJS.clojure || ($CLJS.clojure = {});
10
+ var hasch=$CLJS.hasch || ($CLJS.hasch = {});
11
+ var tailrecursion=$CLJS.tailrecursion || ($CLJS.tailrecursion = {});
12
+ var superv=$CLJS.superv || ($CLJS.superv = {});
13
+ var geheimnis=$CLJS.geheimnis || ($CLJS.geheimnis = {});
14
+ var is=$CLJS.is || ($CLJS.is = {});
15
+ var cljs=$CLJS.cljs || ($CLJS.cljs = {});
16
+ var cljs_node_io=$CLJS.cljs_node_io || ($CLJS.cljs_node_io = {});
17
+ var goog=$CLJS.goog || ($CLJS.goog = {});
18
+ var konserve=$CLJS.konserve || ($CLJS.konserve = {});
19
+ var datalog=$CLJS.datalog || ($CLJS.datalog = {});
20
+ var spec_tools=$CLJS.spec_tools || ($CLJS.spec_tools = {});
21
+ var taoensso=$CLJS.taoensso || ($CLJS.taoensso = {});
22
+ var incognito=$CLJS.incognito || ($CLJS.incognito = {});
23
+ var medley=$CLJS.medley || ($CLJS.medley = {});
24
+ var me=$CLJS.me || ($CLJS.me = {});
25
+
26
+ $CLJS.SHADOW_ENV.setLoaded("taoensso.truss.impl.js");
27
+
28
+ goog.provide('taoensso.truss.impl');
29
+ taoensso.truss.impl.re_pattern_QMARK_ = (function taoensso$truss$impl$re_pattern_QMARK_(x){
30
+ return (x instanceof RegExp);
31
+ });
32
+ taoensso.truss.impl.str_contains_QMARK_ = (function taoensso$truss$impl$str_contains_QMARK_(s,substr){
33
+ return cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2((-1),s.indexOf(substr));
34
+ });
35
+ taoensso.truss.impl.revery_QMARK_ = (function taoensso$truss$impl$revery_QMARK_(pred,coll){
36
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (_,in$){
37
+ if(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(in$) : pred.call(null, in$)))){
38
+ return true;
39
+ } else {
40
+ return cljs.core.reduced(false);
41
+ }
42
+ }),true,coll);
43
+ });
44
+ taoensso.truss.impl.revery = (function taoensso$truss$impl$revery(pred,coll){
45
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (_,in$){
46
+ if(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(in$) : pred.call(null, in$)))){
47
+ return coll;
48
+ } else {
49
+ return cljs.core.reduced(null);
50
+ }
51
+ }),coll,coll);
52
+ });
53
+ taoensso.truss.impl.rsome = (function taoensso$truss$impl$rsome(pred,coll){
54
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (_,in$){
55
+ var temp__5804__auto__ = (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(in$) : pred.call(null, in$));
56
+ if(cljs.core.truth_(temp__5804__auto__)){
57
+ var p = temp__5804__auto__;
58
+ return cljs.core.reduced(p);
59
+ } else {
60
+ return null;
61
+ }
62
+ }),null,coll);
63
+ });
64
+ taoensso.truss.impl.assoc_some = (function taoensso$truss$impl$assoc_some(var_args){
65
+ var G__26350 = arguments.length;
66
+ switch (G__26350) {
67
+ case 3:
68
+ return taoensso.truss.impl.assoc_some.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
69
+
70
+ break;
71
+ case 2:
72
+ return taoensso.truss.impl.assoc_some.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
73
+
74
+ break;
75
+ default:
76
+ throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
77
+
78
+ }
79
+ });
80
+
81
+ (taoensso.truss.impl.assoc_some.cljs$core$IFn$_invoke$arity$3 = (function (m,k,v){
82
+ if((!((v == null)))){
83
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,v);
84
+ } else {
85
+ return m;
86
+ }
87
+ }));
88
+
89
+ (taoensso.truss.impl.assoc_some.cljs$core$IFn$_invoke$arity$2 = (function (m,m_kvs){
90
+ return cljs.core.reduce_kv(taoensso.truss.impl.assoc_some,m,m_kvs);
91
+ }));
92
+
93
+ (taoensso.truss.impl.assoc_some.cljs$lang$maxFixedArity = 3);
94
+
95
+ taoensso.truss.impl.ensure_set = (function taoensso$truss$impl$ensure_set(x){
96
+ if(cljs.core.set_QMARK_(x)){
97
+ return x;
98
+ } else {
99
+ return cljs.core.set(x);
100
+ }
101
+ });
102
+ taoensso.truss.impl.ks_nnil_QMARK_ = (function taoensso$truss$impl$ks_nnil_QMARK_(ks,m){
103
+ return taoensso.truss.impl.revery_QMARK_((function (p1__26363_SHARP_){
104
+ return (!((cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,p1__26363_SHARP_) == null)));
105
+ }),ks);
106
+ });
107
+ taoensso.truss.impl.ks_EQ_ = (function taoensso$truss$impl$ks_EQ_(ks,m){
108
+ var and__5000__auto__ = (cljs.core.count(m) === cljs.core.count(ks));
109
+ if(and__5000__auto__){
110
+ return taoensso.truss.impl.revery_QMARK_((function (p1__26366_SHARP_){
111
+ return cljs.core.contains_QMARK_(m,p1__26366_SHARP_);
112
+ }),ks);
113
+ } else {
114
+ return and__5000__auto__;
115
+ }
116
+ });
117
+ taoensso.truss.impl.ks_GT__EQ_ = (function taoensso$truss$impl$ks_GT__EQ_(ks,m){
118
+ var and__5000__auto__ = (cljs.core.count(m) >= cljs.core.count(ks));
119
+ if(and__5000__auto__){
120
+ return taoensso.truss.impl.revery_QMARK_((function (p1__26369_SHARP_){
121
+ return cljs.core.contains_QMARK_(m,p1__26369_SHARP_);
122
+ }),ks);
123
+ } else {
124
+ return and__5000__auto__;
125
+ }
126
+ });
127
+ taoensso.truss.impl.ks_LT__EQ_ = (function taoensso$truss$impl$ks_LT__EQ_(ks,m){
128
+ var counted_ks = ((cljs.core.counted_QMARK_(ks))?ks:cljs.core.set(ks));
129
+ var and__5000__auto__ = (cljs.core.count(m) <= cljs.core.count(counted_ks));
130
+ if(and__5000__auto__){
131
+ var ks_set = taoensso.truss.impl.ensure_set(counted_ks);
132
+ return cljs.core.reduce_kv((function (_,k,v){
133
+ if(cljs.core.contains_QMARK_(ks_set,k)){
134
+ return true;
135
+ } else {
136
+ return cljs.core.reduced(false);
137
+ }
138
+ }),true,m);
139
+ } else {
140
+ return and__5000__auto__;
141
+ }
142
+ });
143
+
144
+ /**
145
+ * @constructor
146
+ * @implements {cljs.core.IRecord}
147
+ * @implements {cljs.core.IKVReduce}
148
+ * @implements {cljs.core.IEquiv}
149
+ * @implements {cljs.core.IHash}
150
+ * @implements {cljs.core.ICollection}
151
+ * @implements {cljs.core.ICounted}
152
+ * @implements {cljs.core.ISeqable}
153
+ * @implements {cljs.core.IMeta}
154
+ * @implements {cljs.core.ICloneable}
155
+ * @implements {cljs.core.IPrintWithWriter}
156
+ * @implements {cljs.core.IIterable}
157
+ * @implements {cljs.core.IWithMeta}
158
+ * @implements {cljs.core.IAssociative}
159
+ * @implements {cljs.core.IMap}
160
+ * @implements {cljs.core.ILookup}
161
+ */
162
+ taoensso.truss.impl.FailedAssertionInfo = (function (ns,coords,pred,arg_form,arg_val,data,error,__meta,__extmap,__hash){
163
+ this.ns = ns;
164
+ this.coords = coords;
165
+ this.pred = pred;
166
+ this.arg_form = arg_form;
167
+ this.arg_val = arg_val;
168
+ this.data = data;
169
+ this.error = error;
170
+ this.__meta = __meta;
171
+ this.__extmap = __extmap;
172
+ this.__hash = __hash;
173
+ this.cljs$lang$protocol_mask$partition0$ = 2230716170;
174
+ this.cljs$lang$protocol_mask$partition1$ = 139264;
175
+ });
176
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (this__5300__auto__,k__5301__auto__){
177
+ var self__ = this;
178
+ var this__5300__auto____$1 = this;
179
+ return this__5300__auto____$1.cljs$core$ILookup$_lookup$arity$3(null, k__5301__auto__,null);
180
+ }));
181
+
182
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (this__5302__auto__,k26406,else__5303__auto__){
183
+ var self__ = this;
184
+ var this__5302__auto____$1 = this;
185
+ var G__26414 = k26406;
186
+ var G__26414__$1 = (((G__26414 instanceof cljs.core.Keyword))?G__26414.fqn:null);
187
+ switch (G__26414__$1) {
188
+ case "ns":
189
+ return self__.ns;
190
+
191
+ break;
192
+ case "coords":
193
+ return self__.coords;
194
+
195
+ break;
196
+ case "pred":
197
+ return self__.pred;
198
+
199
+ break;
200
+ case "arg-form":
201
+ return self__.arg_form;
202
+
203
+ break;
204
+ case "arg-val":
205
+ return self__.arg_val;
206
+
207
+ break;
208
+ case "data":
209
+ return self__.data;
210
+
211
+ break;
212
+ case "error":
213
+ return self__.error;
214
+
215
+ break;
216
+ default:
217
+ return cljs.core.get.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k26406,else__5303__auto__);
218
+
219
+ }
220
+ }));
221
+
222
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (this__5320__auto__,f__5321__auto__,init__5322__auto__){
223
+ var self__ = this;
224
+ var this__5320__auto____$1 = this;
225
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (ret__5323__auto__,p__26415){
226
+ var vec__26416 = p__26415;
227
+ var k__5324__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__26416,(0),null);
228
+ var v__5325__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__26416,(1),null);
229
+ return (f__5321__auto__.cljs$core$IFn$_invoke$arity$3 ? f__5321__auto__.cljs$core$IFn$_invoke$arity$3(ret__5323__auto__,k__5324__auto__,v__5325__auto__) : f__5321__auto__.call(null, ret__5323__auto__,k__5324__auto__,v__5325__auto__));
230
+ }),init__5322__auto__,this__5320__auto____$1);
231
+ }));
232
+
233
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (this__5315__auto__,writer__5316__auto__,opts__5317__auto__){
234
+ var self__ = this;
235
+ var this__5315__auto____$1 = this;
236
+ var pr_pair__5318__auto__ = (function (keyval__5319__auto__){
237
+ return cljs.core.pr_sequential_writer(writer__5316__auto__,cljs.core.pr_writer,""," ","",opts__5317__auto__,keyval__5319__auto__);
238
+ });
239
+ return cljs.core.pr_sequential_writer(writer__5316__auto__,pr_pair__5318__auto__,"#taoensso.truss.impl.FailedAssertionInfo{",", ","}",opts__5317__auto__,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 7, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"ns","ns",441598760),self__.ns],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"coords","coords",-599429112),self__.coords],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"pred","pred",1927423397),self__.pred],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"arg-form","arg-form",1400564013),self__.arg_form],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"arg-val","arg-val",1802419280),self__.arg_val],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"data","data",-232669377),self__.data],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"error","error",-978969032),self__.error],null))], null),self__.__extmap));
240
+ }));
241
+
242
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (G__26405){
243
+ var self__ = this;
244
+ var G__26405__$1 = this;
245
+ return (new cljs.core.RecordIter((0),G__26405__$1,7,new cljs.core.PersistentVector(null, 7, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"coords","coords",-599429112),new cljs.core.Keyword(null,"pred","pred",1927423397),new cljs.core.Keyword(null,"arg-form","arg-form",1400564013),new cljs.core.Keyword(null,"arg-val","arg-val",1802419280),new cljs.core.Keyword(null,"data","data",-232669377),new cljs.core.Keyword(null,"error","error",-978969032)], null),(cljs.core.truth_(self__.__extmap)?cljs.core._iterator(self__.__extmap):cljs.core.nil_iter())));
246
+ }));
247
+
248
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$IMeta$_meta$arity$1 = (function (this__5298__auto__){
249
+ var self__ = this;
250
+ var this__5298__auto____$1 = this;
251
+ return self__.__meta;
252
+ }));
253
+
254
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (this__5295__auto__){
255
+ var self__ = this;
256
+ var this__5295__auto____$1 = this;
257
+ return (new taoensso.truss.impl.FailedAssertionInfo(self__.ns,self__.coords,self__.pred,self__.arg_form,self__.arg_val,self__.data,self__.error,self__.__meta,self__.__extmap,self__.__hash));
258
+ }));
259
+
260
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$ICounted$_count$arity$1 = (function (this__5304__auto__){
261
+ var self__ = this;
262
+ var this__5304__auto____$1 = this;
263
+ return (7 + cljs.core.count(self__.__extmap));
264
+ }));
265
+
266
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$IHash$_hash$arity$1 = (function (this__5296__auto__){
267
+ var self__ = this;
268
+ var this__5296__auto____$1 = this;
269
+ var h__5111__auto__ = self__.__hash;
270
+ if((!((h__5111__auto__ == null)))){
271
+ return h__5111__auto__;
272
+ } else {
273
+ var h__5111__auto____$1 = (function (coll__5297__auto__){
274
+ return (-352893736 ^ cljs.core.hash_unordered_coll(coll__5297__auto__));
275
+ })(this__5296__auto____$1);
276
+ (self__.__hash = h__5111__auto____$1);
277
+
278
+ return h__5111__auto____$1;
279
+ }
280
+ }));
281
+
282
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this26408,other26409){
283
+ var self__ = this;
284
+ var this26408__$1 = this;
285
+ return (((!((other26409 == null)))) && ((((this26408__$1.constructor === other26409.constructor)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this26408__$1.ns,other26409.ns)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this26408__$1.coords,other26409.coords)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this26408__$1.pred,other26409.pred)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this26408__$1.arg_form,other26409.arg_form)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this26408__$1.arg_val,other26409.arg_val)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this26408__$1.data,other26409.data)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this26408__$1.error,other26409.error)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this26408__$1.__extmap,other26409.__extmap)))))))))))))))))));
286
+ }));
287
+
288
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (this__5310__auto__,k__5311__auto__){
289
+ var self__ = this;
290
+ var this__5310__auto____$1 = this;
291
+ if(cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 7, [new cljs.core.Keyword(null,"pred","pred",1927423397),null,new cljs.core.Keyword(null,"coords","coords",-599429112),null,new cljs.core.Keyword(null,"ns","ns",441598760),null,new cljs.core.Keyword(null,"arg-form","arg-form",1400564013),null,new cljs.core.Keyword(null,"arg-val","arg-val",1802419280),null,new cljs.core.Keyword(null,"error","error",-978969032),null,new cljs.core.Keyword(null,"data","data",-232669377),null], null), null),k__5311__auto__)){
292
+ return cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(cljs.core._with_meta(cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,this__5310__auto____$1),self__.__meta),k__5311__auto__);
293
+ } else {
294
+ return (new taoensso.truss.impl.FailedAssertionInfo(self__.ns,self__.coords,self__.pred,self__.arg_form,self__.arg_val,self__.data,self__.error,self__.__meta,cljs.core.not_empty(cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.__extmap,k__5311__auto__)),null));
295
+ }
296
+ }));
297
+
298
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (this__5307__auto__,k26406){
299
+ var self__ = this;
300
+ var this__5307__auto____$1 = this;
301
+ var G__26425 = k26406;
302
+ var G__26425__$1 = (((G__26425 instanceof cljs.core.Keyword))?G__26425.fqn:null);
303
+ switch (G__26425__$1) {
304
+ case "ns":
305
+ case "coords":
306
+ case "pred":
307
+ case "arg-form":
308
+ case "arg-val":
309
+ case "data":
310
+ case "error":
311
+ return true;
312
+
313
+ break;
314
+ default:
315
+ return cljs.core.contains_QMARK_(self__.__extmap,k26406);
316
+
317
+ }
318
+ }));
319
+
320
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (this__5308__auto__,k__5309__auto__,G__26405){
321
+ var self__ = this;
322
+ var this__5308__auto____$1 = this;
323
+ var pred__26427 = cljs.core.keyword_identical_QMARK_;
324
+ var expr__26428 = k__5309__auto__;
325
+ if(cljs.core.truth_((pred__26427.cljs$core$IFn$_invoke$arity$2 ? pred__26427.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"ns","ns",441598760),expr__26428) : pred__26427.call(null, new cljs.core.Keyword(null,"ns","ns",441598760),expr__26428)))){
326
+ return (new taoensso.truss.impl.FailedAssertionInfo(G__26405,self__.coords,self__.pred,self__.arg_form,self__.arg_val,self__.data,self__.error,self__.__meta,self__.__extmap,null));
327
+ } else {
328
+ if(cljs.core.truth_((pred__26427.cljs$core$IFn$_invoke$arity$2 ? pred__26427.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"coords","coords",-599429112),expr__26428) : pred__26427.call(null, new cljs.core.Keyword(null,"coords","coords",-599429112),expr__26428)))){
329
+ return (new taoensso.truss.impl.FailedAssertionInfo(self__.ns,G__26405,self__.pred,self__.arg_form,self__.arg_val,self__.data,self__.error,self__.__meta,self__.__extmap,null));
330
+ } else {
331
+ if(cljs.core.truth_((pred__26427.cljs$core$IFn$_invoke$arity$2 ? pred__26427.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"pred","pred",1927423397),expr__26428) : pred__26427.call(null, new cljs.core.Keyword(null,"pred","pred",1927423397),expr__26428)))){
332
+ return (new taoensso.truss.impl.FailedAssertionInfo(self__.ns,self__.coords,G__26405,self__.arg_form,self__.arg_val,self__.data,self__.error,self__.__meta,self__.__extmap,null));
333
+ } else {
334
+ if(cljs.core.truth_((pred__26427.cljs$core$IFn$_invoke$arity$2 ? pred__26427.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"arg-form","arg-form",1400564013),expr__26428) : pred__26427.call(null, new cljs.core.Keyword(null,"arg-form","arg-form",1400564013),expr__26428)))){
335
+ return (new taoensso.truss.impl.FailedAssertionInfo(self__.ns,self__.coords,self__.pred,G__26405,self__.arg_val,self__.data,self__.error,self__.__meta,self__.__extmap,null));
336
+ } else {
337
+ if(cljs.core.truth_((pred__26427.cljs$core$IFn$_invoke$arity$2 ? pred__26427.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"arg-val","arg-val",1802419280),expr__26428) : pred__26427.call(null, new cljs.core.Keyword(null,"arg-val","arg-val",1802419280),expr__26428)))){
338
+ return (new taoensso.truss.impl.FailedAssertionInfo(self__.ns,self__.coords,self__.pred,self__.arg_form,G__26405,self__.data,self__.error,self__.__meta,self__.__extmap,null));
339
+ } else {
340
+ if(cljs.core.truth_((pred__26427.cljs$core$IFn$_invoke$arity$2 ? pred__26427.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"data","data",-232669377),expr__26428) : pred__26427.call(null, new cljs.core.Keyword(null,"data","data",-232669377),expr__26428)))){
341
+ return (new taoensso.truss.impl.FailedAssertionInfo(self__.ns,self__.coords,self__.pred,self__.arg_form,self__.arg_val,G__26405,self__.error,self__.__meta,self__.__extmap,null));
342
+ } else {
343
+ if(cljs.core.truth_((pred__26427.cljs$core$IFn$_invoke$arity$2 ? pred__26427.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"error","error",-978969032),expr__26428) : pred__26427.call(null, new cljs.core.Keyword(null,"error","error",-978969032),expr__26428)))){
344
+ return (new taoensso.truss.impl.FailedAssertionInfo(self__.ns,self__.coords,self__.pred,self__.arg_form,self__.arg_val,self__.data,G__26405,self__.__meta,self__.__extmap,null));
345
+ } else {
346
+ return (new taoensso.truss.impl.FailedAssertionInfo(self__.ns,self__.coords,self__.pred,self__.arg_form,self__.arg_val,self__.data,self__.error,self__.__meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k__5309__auto__,G__26405),null));
347
+ }
348
+ }
349
+ }
350
+ }
351
+ }
352
+ }
353
+ }
354
+ }));
355
+
356
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this__5313__auto__){
357
+ var self__ = this;
358
+ var this__5313__auto____$1 = this;
359
+ return cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 7, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.MapEntry(new cljs.core.Keyword(null,"ns","ns",441598760),self__.ns,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,"coords","coords",-599429112),self__.coords,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,"pred","pred",1927423397),self__.pred,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,"arg-form","arg-form",1400564013),self__.arg_form,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,"arg-val","arg-val",1802419280),self__.arg_val,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,"data","data",-232669377),self__.data,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,"error","error",-978969032),self__.error,null))], null),self__.__extmap));
360
+ }));
361
+
362
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (this__5299__auto__,G__26405){
363
+ var self__ = this;
364
+ var this__5299__auto____$1 = this;
365
+ return (new taoensso.truss.impl.FailedAssertionInfo(self__.ns,self__.coords,self__.pred,self__.arg_form,self__.arg_val,self__.data,self__.error,G__26405,self__.__extmap,self__.__hash));
366
+ }));
367
+
368
+ (taoensso.truss.impl.FailedAssertionInfo.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this__5305__auto__,entry__5306__auto__){
369
+ var self__ = this;
370
+ var this__5305__auto____$1 = this;
371
+ if(cljs.core.vector_QMARK_(entry__5306__auto__)){
372
+ return this__5305__auto____$1.cljs$core$IAssociative$_assoc$arity$3(null, cljs.core._nth(entry__5306__auto__,(0)),cljs.core._nth(entry__5306__auto__,(1)));
373
+ } else {
374
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,this__5305__auto____$1,entry__5306__auto__);
375
+ }
376
+ }));
377
+
378
+ (taoensso.truss.impl.FailedAssertionInfo.getBasis = (function (){
379
+ return new cljs.core.PersistentVector(null, 7, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"ns","ns",2082130287,null),new cljs.core.Symbol(null,"coords","coords",1041102415,null),new cljs.core.Symbol(null,"pred","pred",-727012372,null),new cljs.core.Symbol(null,"arg-form","arg-form",-1253871756,null),new cljs.core.Symbol(null,"arg-val","arg-val",-852016489,null),new cljs.core.Symbol(null,"data","data",1407862150,null),new cljs.core.Symbol(null,"error","error",661562495,null)], null);
380
+ }));
381
+
382
+ (taoensso.truss.impl.FailedAssertionInfo.cljs$lang$type = true);
383
+
384
+ (taoensso.truss.impl.FailedAssertionInfo.cljs$lang$ctorPrSeq = (function (this__5346__auto__){
385
+ return (new cljs.core.List(null,"taoensso.truss.impl/FailedAssertionInfo",null,(1),null));
386
+ }));
387
+
388
+ (taoensso.truss.impl.FailedAssertionInfo.cljs$lang$ctorPrWriter = (function (this__5346__auto__,writer__5347__auto__){
389
+ return cljs.core._write(writer__5347__auto__,"taoensso.truss.impl/FailedAssertionInfo");
390
+ }));
391
+
392
+ /**
393
+ * Positional factory function for taoensso.truss.impl/FailedAssertionInfo.
394
+ */
395
+ taoensso.truss.impl.__GT_FailedAssertionInfo = (function taoensso$truss$impl$__GT_FailedAssertionInfo(ns,coords,pred,arg_form,arg_val,data,error){
396
+ return (new taoensso.truss.impl.FailedAssertionInfo(ns,coords,pred,arg_form,arg_val,data,error,null,null,null));
397
+ });
398
+
399
+ /**
400
+ * Factory function for taoensso.truss.impl/FailedAssertionInfo, taking a map of keywords to field values.
401
+ */
402
+ taoensso.truss.impl.map__GT_FailedAssertionInfo = (function taoensso$truss$impl$map__GT_FailedAssertionInfo(G__26410){
403
+ var extmap__5342__auto__ = (function (){var G__26433 = cljs.core.dissoc.cljs$core$IFn$_invoke$arity$variadic(G__26410,new cljs.core.Keyword(null,"ns","ns",441598760),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"coords","coords",-599429112),new cljs.core.Keyword(null,"pred","pred",1927423397),new cljs.core.Keyword(null,"arg-form","arg-form",1400564013),new cljs.core.Keyword(null,"arg-val","arg-val",1802419280),new cljs.core.Keyword(null,"data","data",-232669377),new cljs.core.Keyword(null,"error","error",-978969032)], 0));
404
+ if(cljs.core.record_QMARK_(G__26410)){
405
+ return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,G__26433);
406
+ } else {
407
+ return G__26433;
408
+ }
409
+ })();
410
+ return (new taoensso.truss.impl.FailedAssertionInfo(new cljs.core.Keyword(null,"ns","ns",441598760).cljs$core$IFn$_invoke$arity$1(G__26410),new cljs.core.Keyword(null,"coords","coords",-599429112).cljs$core$IFn$_invoke$arity$1(G__26410),new cljs.core.Keyword(null,"pred","pred",1927423397).cljs$core$IFn$_invoke$arity$1(G__26410),new cljs.core.Keyword(null,"arg-form","arg-form",1400564013).cljs$core$IFn$_invoke$arity$1(G__26410),new cljs.core.Keyword(null,"arg-val","arg-val",1802419280).cljs$core$IFn$_invoke$arity$1(G__26410),new cljs.core.Keyword(null,"data","data",-232669377).cljs$core$IFn$_invoke$arity$1(G__26410),new cljs.core.Keyword(null,"error","error",-978969032).cljs$core$IFn$_invoke$arity$1(G__26410),null,cljs.core.not_empty(extmap__5342__auto__),null));
411
+ });
412
+
413
+
414
+ /**
415
+ * @constructor
416
+ */
417
+ taoensso.truss.impl.ArgEvalError = (function (ex){
418
+ this.ex = ex;
419
+ });
420
+
421
+ (taoensso.truss.impl.ArgEvalError.getBasis = (function (){
422
+ return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"ex","ex",226760186,null)], null);
423
+ }));
424
+
425
+ (taoensso.truss.impl.ArgEvalError.cljs$lang$type = true);
426
+
427
+ (taoensso.truss.impl.ArgEvalError.cljs$lang$ctorStr = "taoensso.truss.impl/ArgEvalError");
428
+
429
+ (taoensso.truss.impl.ArgEvalError.cljs$lang$ctorPrWriter = (function (this__5287__auto__,writer__5288__auto__,opt__5289__auto__){
430
+ return cljs.core._write(writer__5288__auto__,"taoensso.truss.impl/ArgEvalError");
431
+ }));
432
+
433
+ /**
434
+ * Positional factory function for taoensso.truss.impl/ArgEvalError.
435
+ */
436
+ taoensso.truss.impl.__GT_ArgEvalError = (function taoensso$truss$impl$__GT_ArgEvalError(ex){
437
+ return (new taoensso.truss.impl.ArgEvalError(ex));
438
+ });
439
+
440
+ taoensso.truss.impl.FalsePredError = ({});
441
+
442
+ //# sourceMappingURL=taoensso.truss.impl.js.map