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,436 @@
1
+ var $CLJS = require("./cljs_env");
2
+ var $jscomp = $CLJS.$jscomp;
3
+ var COMPILED = false;
4
+ require("./cljs.core.js");
5
+ require("./superv.async.js");
6
+ require("./cljs.core.async.impl.protocols.js");
7
+ require("./hasch.core.js");
8
+ require("./cljs.core.async.js");
9
+ require("./taoensso.timbre.js");
10
+ var environ=$CLJS.environ || ($CLJS.environ = {});
11
+ var fress=$CLJS.fress || ($CLJS.fress = {});
12
+ var datahike=$CLJS.datahike || ($CLJS.datahike = {});
13
+ var clojure=$CLJS.clojure || ($CLJS.clojure = {});
14
+ var hasch=$CLJS.hasch || ($CLJS.hasch = {});
15
+ var tailrecursion=$CLJS.tailrecursion || ($CLJS.tailrecursion = {});
16
+ var superv=$CLJS.superv || ($CLJS.superv = {});
17
+ var geheimnis=$CLJS.geheimnis || ($CLJS.geheimnis = {});
18
+ var is=$CLJS.is || ($CLJS.is = {});
19
+ var cljs=$CLJS.cljs || ($CLJS.cljs = {});
20
+ var cljs_node_io=$CLJS.cljs_node_io || ($CLJS.cljs_node_io = {});
21
+ var goog=$CLJS.goog || ($CLJS.goog = {});
22
+ var konserve=$CLJS.konserve || ($CLJS.konserve = {});
23
+ var datalog=$CLJS.datalog || ($CLJS.datalog = {});
24
+ var spec_tools=$CLJS.spec_tools || ($CLJS.spec_tools = {});
25
+ var taoensso=$CLJS.taoensso || ($CLJS.taoensso = {});
26
+ var incognito=$CLJS.incognito || ($CLJS.incognito = {});
27
+ var medley=$CLJS.medley || ($CLJS.medley = {});
28
+ var me=$CLJS.me || ($CLJS.me = {});
29
+
30
+ $CLJS.SHADOW_ENV.setLoaded("datahike.tools.js");
31
+
32
+ goog.provide('datahike.tools');
33
+ datahike.tools.combine_hashes = (function datahike$tools$combine_hashes(x,y){
34
+ return cljs.core.hash_combine(x,y);
35
+ });
36
+ datahike.tools._match_vector_class = (function datahike$tools$_match_vector_class(x){
37
+ var G__43094 = x;
38
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Symbol(null,"_","_",-1201019570,null),G__43094)){
39
+ return new cljs.core.Keyword(null,"negative","negative",-1562068438);
40
+ } else {
41
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Symbol(null,"*","*",345799209,null),G__43094)){
42
+ return new cljs.core.Keyword(null,"any","any",1705907423);
43
+ } else {
44
+ return new cljs.core.Keyword(null,"positive","positive",1112941866);
45
+
46
+ }
47
+ }
48
+ });
49
+ datahike.tools._match_vector = (function datahike$tools$_match_vector(path,pattern_pos,pattern_size,pattern_symbols,pairs){
50
+ if((pattern_pos < pattern_size)){
51
+ var groups = cljs.core.group_by(cljs.core.comp.cljs$core$IFn$_invoke$arity$3(datahike.tools._match_vector_class,(function (p1__43098_SHARP_){
52
+ return cljs.core.nth.cljs$core$IFn$_invoke$arity$2(p1__43098_SHARP_,pattern_pos);
53
+ }),cljs.core.first),pairs);
54
+ var sub = (function (p,pairs__$1){
55
+ var G__43100 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(path,p);
56
+ var G__43101 = (pattern_pos + (1));
57
+ var G__43102 = pattern_size;
58
+ var G__43103 = pattern_symbols;
59
+ var G__43104 = pairs__$1;
60
+ return (datahike.tools._match_vector.cljs$core$IFn$_invoke$arity$5 ? datahike.tools._match_vector.cljs$core$IFn$_invoke$arity$5(G__43100,G__43101,G__43102,G__43103,G__43104) : datahike.tools._match_vector.call(null, G__43100,G__43101,G__43102,G__43103,G__43104));
61
+ });
62
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"any","any",1705907423)], null),cljs.core.keys(groups))){
63
+ return sub(new cljs.core.Symbol(null,"*","*",345799209,null),new cljs.core.Keyword(null,"any","any",1705907423).cljs$core$IFn$_invoke$arity$1(groups));
64
+ } else {
65
+ return cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic((new cljs.core.List(null,new cljs.core.Symbol(null,"if","if",1181717262,null),null,(1),null)),(new cljs.core.List(null,cljs.core.nth.cljs$core$IFn$_invoke$arity$2(pattern_symbols,pattern_pos),null,(1),null)),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([(new cljs.core.List(null,sub((1),cljs.core.mapcat.cljs$core$IFn$_invoke$arity$variadic(groups,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"positive","positive",1112941866),new cljs.core.Keyword(null,"any","any",1705907423)], null)], 0))),null,(1),null)),(new cljs.core.List(null,sub(new cljs.core.Symbol(null,"_","_",-1201019570,null),cljs.core.mapcat.cljs$core$IFn$_invoke$arity$variadic(groups,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"negative","negative",-1562068438),new cljs.core.Keyword(null,"any","any",1705907423)], null)], 0))),null,(1),null))], 0))));
66
+ }
67
+ } else {
68
+ if(cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2((1),cljs.core.count(pairs))){
69
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2("There should be exactly one expression at leaf",new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"path","path",-188191168),path], null));
70
+ } else {
71
+ return cljs.core.second(cljs.core.first(pairs));
72
+
73
+ }
74
+ }
75
+ });
76
+ datahike.tools.get_date = (function datahike$tools$get_date(){
77
+ return (new Date());
78
+ });
79
+ datahike.tools.get_time_ms = (function datahike$tools$get_time_ms(){
80
+ return (new Date()).getTime();
81
+ });
82
+ datahike.tools.throwable_promise = cljs.core.async.promise_chan;
83
+ /**
84
+ * Recursively merges maps together. If all the maps supplied have nested maps
85
+ * under the same keys, these nested maps are merged. Otherwise the value is
86
+ * overwritten, as in `clojure.core/merge`.
87
+ *
88
+ * Copied from weavejester/medley 1.3.0
89
+ */
90
+ datahike.tools.deep_merge = (function datahike$tools$deep_merge(var_args){
91
+ var G__43127 = arguments.length;
92
+ switch (G__43127) {
93
+ case 0:
94
+ return datahike.tools.deep_merge.cljs$core$IFn$_invoke$arity$0();
95
+
96
+ break;
97
+ case 1:
98
+ return datahike.tools.deep_merge.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
99
+
100
+ break;
101
+ case 2:
102
+ return datahike.tools.deep_merge.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
103
+
104
+ break;
105
+ default:
106
+ var args_arr__5751__auto__ = [];
107
+ var len__5726__auto___43395 = arguments.length;
108
+ var i__5727__auto___43397 = (0);
109
+ while(true){
110
+ if((i__5727__auto___43397 < len__5726__auto___43395)){
111
+ args_arr__5751__auto__.push((arguments[i__5727__auto___43397]));
112
+
113
+ var G__43398 = (i__5727__auto___43397 + (1));
114
+ i__5727__auto___43397 = G__43398;
115
+ continue;
116
+ } else {
117
+ }
118
+ break;
119
+ }
120
+
121
+ var argseq__5752__auto__ = ((((2) < args_arr__5751__auto__.length))?(new cljs.core.IndexedSeq(args_arr__5751__auto__.slice((2)),(0),null)):null);
122
+ return datahike.tools.deep_merge.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__5752__auto__);
123
+
124
+ }
125
+ });
126
+
127
+ (datahike.tools.deep_merge.cljs$core$IFn$_invoke$arity$0 = (function (){
128
+ return null;
129
+ }));
130
+
131
+ (datahike.tools.deep_merge.cljs$core$IFn$_invoke$arity$1 = (function (a){
132
+ return a;
133
+ }));
134
+
135
+ (datahike.tools.deep_merge.cljs$core$IFn$_invoke$arity$2 = (function (a,b){
136
+ if(cljs.core.truth_((function (){var or__5002__auto__ = a;
137
+ if(cljs.core.truth_(or__5002__auto__)){
138
+ return or__5002__auto__;
139
+ } else {
140
+ return b;
141
+ }
142
+ })())){
143
+ var merge_entry = (function datahike$tools$merge_entry(m,e){
144
+ var k = cljs.core.key(e);
145
+ var v_SINGLEQUOTE_ = cljs.core.val(e);
146
+ if(cljs.core.contains_QMARK_(m,k)){
147
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var v = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
148
+ if(((cljs.core.map_QMARK_(v)) && (cljs.core.map_QMARK_(v_SINGLEQUOTE_)))){
149
+ return datahike.tools.deep_merge.cljs$core$IFn$_invoke$arity$2(v,v_SINGLEQUOTE_);
150
+ } else {
151
+ return v_SINGLEQUOTE_;
152
+ }
153
+ })());
154
+ } else {
155
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,v_SINGLEQUOTE_);
156
+ }
157
+ });
158
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(merge_entry,(function (){var or__5002__auto__ = a;
159
+ if(cljs.core.truth_(or__5002__auto__)){
160
+ return or__5002__auto__;
161
+ } else {
162
+ return cljs.core.PersistentArrayMap.EMPTY;
163
+ }
164
+ })(),cljs.core.seq(b));
165
+ } else {
166
+ return null;
167
+ }
168
+ }));
169
+
170
+ (datahike.tools.deep_merge.cljs$core$IFn$_invoke$arity$variadic = (function (a,b,more){
171
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datahike.tools.deep_merge,(function (){var or__5002__auto__ = a;
172
+ if(cljs.core.truth_(or__5002__auto__)){
173
+ return or__5002__auto__;
174
+ } else {
175
+ return cljs.core.PersistentArrayMap.EMPTY;
176
+ }
177
+ })(),cljs.core.cons(b,more));
178
+ }));
179
+
180
+ /** @this {Function} */
181
+ (datahike.tools.deep_merge.cljs$lang$applyTo = (function (seq43121){
182
+ var G__43122 = cljs.core.first(seq43121);
183
+ var seq43121__$1 = cljs.core.next(seq43121);
184
+ var G__43123 = cljs.core.first(seq43121__$1);
185
+ var seq43121__$2 = cljs.core.next(seq43121__$1);
186
+ var self__5711__auto__ = this;
187
+ return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__43122,G__43123,seq43121__$2);
188
+ }));
189
+
190
+ (datahike.tools.deep_merge.cljs$lang$maxFixedArity = (2));
191
+
192
+ datahike.tools.timed = (function datahike$tools$timed(f){
193
+ var now = (function (){
194
+ return ((1000) * (new Date()).getTime());
195
+ });
196
+ var start = now();
197
+ var result = (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null, ));
198
+ var end = now();
199
+ var t = ((end - start) / 1000000.0);
200
+ return new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"res","res",-1395007879),result,new cljs.core.Keyword(null,"t","t",-1397832519),t], null);
201
+ });
202
+ datahike.tools.get_hostname = (function datahike$tools$get_hostname(){
203
+ return "";
204
+ });
205
+ datahike.tools.reduce_clauses = (function datahike$tools$reduce_clauses(resolver,context,clauses){
206
+ var context__$1 = context;
207
+ var clauses__$1 = clauses;
208
+ var failed_clauses = cljs.core.PersistentVector.EMPTY;
209
+ while(true){
210
+ if(cljs.core.empty_QMARK_(clauses__$1)){
211
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [context__$1,failed_clauses], null);
212
+ } else {
213
+ var vec__43254 = clauses__$1;
214
+ var seq__43255 = cljs.core.seq(vec__43254);
215
+ var first__43256 = cljs.core.first(seq__43255);
216
+ var seq__43255__$1 = cljs.core.next(seq__43255);
217
+ var clause = first__43256;
218
+ var clauses__$2 = seq__43255__$1;
219
+ var temp__5802__auto__ = (resolver.cljs$core$IFn$_invoke$arity$2 ? resolver.cljs$core$IFn$_invoke$arity$2(context__$1,clause) : resolver.call(null, context__$1,clause));
220
+ if(cljs.core.truth_(temp__5802__auto__)){
221
+ var next_context = temp__5802__auto__;
222
+ var G__43409 = next_context;
223
+ var G__43410 = clauses__$2;
224
+ var G__43411 = failed_clauses;
225
+ context__$1 = G__43409;
226
+ clauses__$1 = G__43410;
227
+ failed_clauses = G__43411;
228
+ continue;
229
+ } else {
230
+ var G__43412 = context__$1;
231
+ var G__43413 = clauses__$2;
232
+ var G__43414 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(failed_clauses,clause);
233
+ context__$1 = G__43412;
234
+ clauses__$1 = G__43413;
235
+ failed_clauses = G__43414;
236
+ continue;
237
+ }
238
+ }
239
+ break;
240
+ }
241
+ });
242
+ datahike.tools.resolve_clauses = (function datahike$tools$resolve_clauses(resolver,context,clauses){
243
+ while(true){
244
+ if(cljs.core.empty_QMARK_(clauses)){
245
+ return context;
246
+ } else {
247
+ var vec__43261 = datahike.tools.reduce_clauses(resolver,context,clauses);
248
+ var context__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__43261,(0),null);
249
+ var failed_clauses = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__43261,(1),null);
250
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.count(failed_clauses),cljs.core.count(clauses))){
251
+ var G__43268 = (function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2("Cannot resolve any more clauses",new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"clauses","clauses",1454841241),clauses], null))})();
252
+ var fexpr__43267 = taoensso.timbre._log_BANG_.cljs$core$IFn$_invoke$arity$14(taoensso.timbre._STAR_config_STAR_,new cljs.core.Keyword(null,"error","error",-978969032),"datahike.tools",null,227,null,new cljs.core.Keyword(null,"p","p",151049309),new cljs.core.Keyword(null,"auto","auto",-566279492),(new cljs.core.Delay(((function (resolver,context,clauses,G__43268,vec__43261,context__$1,failed_clauses){
253
+ return (function (){
254
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, ["Cannot resolve any more clauses",new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"clauses","clauses",1454841241),clauses], null)], null);
255
+ });})(resolver,context,clauses,G__43268,vec__43261,context__$1,failed_clauses))
256
+ ,null)),null,(6),null,null,null);
257
+ return (fexpr__43267.cljs$core$IFn$_invoke$arity$1 ? fexpr__43267.cljs$core$IFn$_invoke$arity$1(G__43268) : fexpr__43267.call(null, G__43268));
258
+ } else {
259
+ var G__43420 = resolver;
260
+ var G__43421 = context__$1;
261
+ var G__43422 = failed_clauses;
262
+ resolver = G__43420;
263
+ context = G__43421;
264
+ clauses = G__43422;
265
+ continue;
266
+ }
267
+ }
268
+ break;
269
+ }
270
+ });
271
+ /**
272
+ * Create a step function to use with `transduce` for grouping values
273
+ */
274
+ datahike.tools.group_by_step = (function datahike$tools$group_by_step(f){
275
+ return (function() {
276
+ var G__43424 = null;
277
+ var G__43424__0 = (function (){
278
+ return cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY);
279
+ });
280
+ var G__43424__1 = (function (dst){
281
+ return cljs.core.persistent_BANG_(dst);
282
+ });
283
+ var G__43424__2 = (function (dst,x){
284
+ var k = (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(x) : f.call(null, x));
285
+ return cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(dst,k,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(dst,k,cljs.core.PersistentVector.EMPTY),x));
286
+ });
287
+ G__43424 = function(dst,x){
288
+ switch(arguments.length){
289
+ case 0:
290
+ return G__43424__0.call(this);
291
+ case 1:
292
+ return G__43424__1.call(this,dst);
293
+ case 2:
294
+ return G__43424__2.call(this,dst,x);
295
+ }
296
+ throw(new Error('Invalid arity: ' + arguments.length));
297
+ };
298
+ G__43424.cljs$core$IFn$_invoke$arity$0 = G__43424__0;
299
+ G__43424.cljs$core$IFn$_invoke$arity$1 = G__43424__1;
300
+ G__43424.cljs$core$IFn$_invoke$arity$2 = G__43424__2;
301
+ return G__43424;
302
+ })()
303
+ });
304
+ /**
305
+ * This function generates code for a decision tree that for an input expression `input` that has to represent a sequence of growing integers that is a subset of the integers in the sequence `(range length-length)`. Every leaf in the decision tree corresponds to one of the 2^range-length possible subsequences and the `branch-visitor-fn` is called at every leaf with the first argument being the subsequence and the second argument being a mask.
306
+ */
307
+ datahike.tools.range_subset_tree = (function datahike$tools$range_subset_tree(var_args){
308
+ var G__43292 = arguments.length;
309
+ switch (G__43292) {
310
+ case 3:
311
+ return datahike.tools.range_subset_tree.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
312
+
313
+ break;
314
+ case 6:
315
+ return datahike.tools.range_subset_tree.cljs$core$IFn$_invoke$arity$6((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]),(arguments[(5)]));
316
+
317
+ break;
318
+ default:
319
+ throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
320
+
321
+ }
322
+ });
323
+
324
+ (datahike.tools.range_subset_tree.cljs$core$IFn$_invoke$arity$3 = (function (range_length,input,branch_visitor_fn){
325
+ if((input instanceof cljs.core.Symbol)){
326
+ return datahike.tools.range_subset_tree.cljs$core$IFn$_invoke$arity$6(range_length,input,branch_visitor_fn,(0),cljs.core.PersistentVector.EMPTY,cljs.core.vec(cljs.core.repeat.cljs$core$IFn$_invoke$arity$2(range_length,null)));
327
+ } else {
328
+ var sym = cljs.core.gensym.cljs$core$IFn$_invoke$arity$0();
329
+ return cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic((new cljs.core.List(null,new cljs.core.Symbol("cljs.core","let","cljs.core/let",-308701135,null),null,(1),null)),(new cljs.core.List(null,cljs.core.vec(cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2((new cljs.core.List(null,sym,null,(1),null)),(new cljs.core.List(null,input,null,(1),null)))))),null,(1),null)),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([(new cljs.core.List(null,datahike.tools.range_subset_tree.cljs$core$IFn$_invoke$arity$3(range_length,sym,branch_visitor_fn),null,(1),null))], 0))));
330
+ }
331
+ }));
332
+
333
+ (datahike.tools.range_subset_tree.cljs$core$IFn$_invoke$arity$6 = (function (range_length,input_symbol,branch_visitor_fn,at,acc_inds,mask){
334
+ if(typeof range_length === 'number'){
335
+ } else {
336
+ throw (new Error("Assert failed: (number? range-length)"));
337
+ }
338
+
339
+ if((input_symbol instanceof cljs.core.Symbol)){
340
+ } else {
341
+ throw (new Error("Assert failed: (symbol? input-symbol)"));
342
+ }
343
+
344
+ if(cljs.core.ifn_QMARK_(branch_visitor_fn)){
345
+ } else {
346
+ throw (new Error("Assert failed: (ifn? branch-visitor-fn)"));
347
+ }
348
+
349
+ if(typeof at === 'number'){
350
+ } else {
351
+ throw (new Error("Assert failed: (number? at)"));
352
+ }
353
+
354
+ if(cljs.core.vector_QMARK_(acc_inds)){
355
+ } else {
356
+ throw (new Error("Assert failed: (vector? acc-inds)"));
357
+ }
358
+
359
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(range_length,at)){
360
+ return (branch_visitor_fn.cljs$core$IFn$_invoke$arity$2 ? branch_visitor_fn.cljs$core$IFn$_invoke$arity$2(acc_inds,mask) : branch_visitor_fn.call(null, acc_inds,mask));
361
+ } else {
362
+ return cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic((new cljs.core.List(null,new cljs.core.Symbol(null,"if","if",1181717262,null),null,(1),null)),(new cljs.core.List(null,cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2((new cljs.core.List(null,new cljs.core.Symbol("cljs.core","empty?","cljs.core/empty?",1866613644,null),null,(1),null)),(new cljs.core.List(null,input_symbol,null,(1),null))))),null,(1),null)),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([(new cljs.core.List(null,(branch_visitor_fn.cljs$core$IFn$_invoke$arity$2 ? branch_visitor_fn.cljs$core$IFn$_invoke$arity$2(acc_inds,mask) : branch_visitor_fn.call(null, acc_inds,mask)),null,(1),null)),(new cljs.core.List(null,cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic((new cljs.core.List(null,new cljs.core.Symbol(null,"if","if",1181717262,null),null,(1),null)),(new cljs.core.List(null,cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic((new cljs.core.List(null,new cljs.core.Symbol("cljs.core","=","cljs.core/=",-1891498332,null),null,(1),null)),(new cljs.core.List(null,at,null,(1),null)),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([(new cljs.core.List(null,cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2((new cljs.core.List(null,new cljs.core.Symbol("cljs.core","first","cljs.core/first",-752535972,null),null,(1),null)),(new cljs.core.List(null,input_symbol,null,(1),null))))),null,(1),null))], 0)))),null,(1),null)),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([(new cljs.core.List(null,cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic((new cljs.core.List(null,new cljs.core.Symbol("cljs.core","let","cljs.core/let",-308701135,null),null,(1),null)),(new cljs.core.List(null,cljs.core.vec(cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2((new cljs.core.List(null,input_symbol,null,(1),null)),(new cljs.core.List(null,cljs.core.sequence.cljs$core$IFn$_invoke$arity$1(cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2((new cljs.core.List(null,new cljs.core.Symbol("cljs.core","rest","cljs.core/rest",-285075455,null),null,(1),null)),(new cljs.core.List(null,input_symbol,null,(1),null))))),null,(1),null)))))),null,(1),null)),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([(new cljs.core.List(null,datahike.tools.range_subset_tree.cljs$core$IFn$_invoke$arity$6(range_length,input_symbol,branch_visitor_fn,(at + (1)),cljs.core.conj.cljs$core$IFn$_invoke$arity$2(acc_inds,at),cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(mask,at,cljs.core.count(acc_inds))),null,(1),null))], 0)))),null,(1),null)),(new cljs.core.List(null,datahike.tools.range_subset_tree.cljs$core$IFn$_invoke$arity$6(range_length,input_symbol,branch_visitor_fn,(at + (1)),acc_inds,mask),null,(1),null))], 0)))),null,(1),null))], 0))));
363
+ }
364
+ }));
365
+
366
+ (datahike.tools.range_subset_tree.cljs$lang$maxFixedArity = 6);
367
+
368
+ datahike.tools.distinct_sorted_seq_QMARK_ = (function datahike$tools$distinct_sorted_seq_QMARK_(cmp,s){
369
+ if(cljs.core.empty_QMARK_(s)){
370
+ return true;
371
+ } else {
372
+ var previous = cljs.core.first(s);
373
+ var s__$1 = cljs.core.rest(s);
374
+ while(true){
375
+ if(cljs.core.empty_QMARK_(s__$1)){
376
+ return true;
377
+ } else {
378
+ var x = cljs.core.first(s__$1);
379
+ if(((cmp.cljs$core$IFn$_invoke$arity$2 ? cmp.cljs$core$IFn$_invoke$arity$2(previous,x) : cmp.call(null, previous,x)) < (0))){
380
+ var G__43447 = x;
381
+ var G__43448 = cljs.core.rest(s__$1);
382
+ previous = G__43447;
383
+ s__$1 = G__43448;
384
+ continue;
385
+ } else {
386
+ return false;
387
+ }
388
+ }
389
+ break;
390
+ }
391
+ }
392
+ });
393
+ /**
394
+ * Takes a comparator function `cmp` and two sequences `seq-a` and `seq-b` that are both distinct and sorted by `cmp`. Then combines the elements from both sequences to form a new sorted sequence that is distinct. The function distinct-sorted-seq? must return true for all input sequences and the result will also be a sequence for which this function returns true.
395
+ */
396
+ datahike.tools.merge_distinct_sorted_seqs = (function datahike$tools$merge_distinct_sorted_seqs(cmp,seq_a,seq_b){
397
+ if(cljs.core.empty_QMARK_(seq_a)){
398
+ return seq_b;
399
+ } else {
400
+ if(cljs.core.empty_QMARK_(seq_b)){
401
+ return seq_a;
402
+ } else {
403
+ var a = cljs.core.first(seq_a);
404
+ var b = cljs.core.first(seq_b);
405
+ var i = (cmp.cljs$core$IFn$_invoke$arity$2 ? cmp.cljs$core$IFn$_invoke$arity$2(a,b) : cmp.call(null, a,b));
406
+ if((i < (0))){
407
+ return cljs.core.cons(a,(new cljs.core.LazySeq(null,(function (){
408
+ var G__43354 = cmp;
409
+ var G__43355 = cljs.core.rest(seq_a);
410
+ var G__43356 = seq_b;
411
+ return (datahike.tools.merge_distinct_sorted_seqs.cljs$core$IFn$_invoke$arity$3 ? datahike.tools.merge_distinct_sorted_seqs.cljs$core$IFn$_invoke$arity$3(G__43354,G__43355,G__43356) : datahike.tools.merge_distinct_sorted_seqs.call(null, G__43354,G__43355,G__43356));
412
+ }),null,null)));
413
+ } else {
414
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(i,(0))){
415
+ return cljs.core.cons(a,(new cljs.core.LazySeq(null,(function (){
416
+ var G__43359 = cmp;
417
+ var G__43360 = cljs.core.rest(seq_a);
418
+ var G__43361 = cljs.core.rest(seq_b);
419
+ return (datahike.tools.merge_distinct_sorted_seqs.cljs$core$IFn$_invoke$arity$3 ? datahike.tools.merge_distinct_sorted_seqs.cljs$core$IFn$_invoke$arity$3(G__43359,G__43360,G__43361) : datahike.tools.merge_distinct_sorted_seqs.call(null, G__43359,G__43360,G__43361));
420
+ }),null,null)));
421
+ } else {
422
+ return cljs.core.cons(b,(new cljs.core.LazySeq(null,(function (){
423
+ var G__43367 = cmp;
424
+ var G__43368 = seq_a;
425
+ var G__43369 = cljs.core.rest(seq_b);
426
+ return (datahike.tools.merge_distinct_sorted_seqs.cljs$core$IFn$_invoke$arity$3 ? datahike.tools.merge_distinct_sorted_seqs.cljs$core$IFn$_invoke$arity$3(G__43367,G__43368,G__43369) : datahike.tools.merge_distinct_sorted_seqs.call(null, G__43367,G__43368,G__43369));
427
+ }),null,null)));
428
+
429
+ }
430
+ }
431
+
432
+ }
433
+ }
434
+ });
435
+
436
+ //# sourceMappingURL=datahike.tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["datahike/tools.cljc"],"mappings":"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","names":["datahike.tools/combine-hashes","x","y","cljs.core/hash-combine","datahike.tools/-match-vector-class","G__43094","cljs.core._EQ_","datahike.tools/-match-vector","path","pattern-pos","pattern-size","pattern-symbols","pairs","groups","cljs.core/group-by","p1__43098#","cljs.core.comp","cljs.core.nth","cljs.core/first","sub","p","G__43100","G__43101","G__43102","G__43103","G__43104","cljs.core.conj","cljs.core.sequence","cljs.core/seq","cljs.core.concat","cljs.core/List","cljs.core/keys","cljs.core.mapcat","cljs.core.not_EQ_","cljs.core/count","cljs.core.ex_info","cljs.core/second","datahike.tools/get-date","js/Date","datahike.tools/get-time-ms","datahike.tools/throwable-promise","cljs.core.async/promise-chan","var_args","G__43127","datahike.tools/deep-merge","args-arr__5751__auto__","len__5726__auto__","i__5727__auto__","argseq__5752__auto__","cljs.core/IndexedSeq","seq43121","G__43122","cljs.core/next","G__43123","self__5711__auto__","a","b","or__5002__auto__","m","e","k","cljs.core/key","v'","cljs.core/val","cljs.core/contains?","cljs.core.assoc","v","cljs.core.get","cljs.core/map?","datahike.tools.deep_merge","cljs.core.reduce","merge-entry","more","cljs.core/cons","datahike.tools/timed","f","now","start","result","end","t","datahike.tools/get-hostname","datahike.tools/reduce-clauses","resolver","context","clauses","failed-clauses","cljs.core/empty?","vec__43254","seq__43255","first__43256","clause","temp__5802__auto__","next-context","datahike.tools/resolve-clauses","vec__43261","G__43268","fexpr__43267","taoensso.timbre._log_BANG_","taoensso.timbre/*config*","cljs.core/Delay","datahike.tools/group-by-step","cljs.core/transient","dst","cljs.core/persistent!","cljs.core.assoc_BANG_","G__43292","datahike.tools/range-subset-tree","js/Error","range-length","input","branch-visitor-fn","cljs.core/Symbol","datahike.tools.range_subset_tree","cljs.core/vec","cljs.core.repeat","sym","cljs.core.gensym","input-symbol","at","acc-inds","mask","cljs.core/ifn?","cljs.core/vector?","datahike.tools/distinct-sorted-seq?","cmp","s","previous","cljs.core/rest","datahike.tools/merge-distinct-sorted-seqs","seq-a","seq-b","i","cljs.core/LazySeq","G__43354","G__43355","G__43356","G__43359","G__43360","G__43361","G__43367","G__43368","G__43369"],"sourcesContent":["(ns ^:no-doc datahike.tools\n (:require\n [superv.async :refer [throw-if-exception-]]\n [clojure.core.async.impl.protocols :as async-impl]\n [hasch.core :refer [uuid]]\n [clojure.core.async :as async]\n #?(:clj [clojure.java.io :as io])\n [taoensso.timbre :as log])\n #?(:cljs (:require-macros [datahike.tools :refer [raise]]))\n #?(:clj (:import [java.util Properties UUID Date]\n [java.util.concurrent CompletableFuture]\n [java.net InetAddress])))\n\n(defn combine-hashes [x y]\n #?(:clj (clojure.lang.Util/hashCombine x y)\n :cljs (hash-combine x y)))\n\n(defn -match-vector-class [x]\n (case x\n _ :negative\n * :any\n :positive))\n\n(defn -match-vector [path pattern-pos pattern-size pattern-symbols pairs]\n (cond\n (< pattern-pos pattern-size)\n (let [groups (group-by (comp -match-vector-class #(nth % pattern-pos) first) pairs)\n sub (fn [p pairs] (-match-vector (conj path p)\n (inc pattern-pos)\n pattern-size\n pattern-symbols\n pairs))]\n (if (= [:any] (keys groups))\n (sub '* (:any groups))\n `(if ~(nth pattern-symbols pattern-pos)\n ~(sub 1 (mapcat groups [:positive :any]))\n ~(sub '_ (mapcat groups [:negative :any])))))\n\n (not= 1 (count pairs)) (throw (ex-info \"There should be exactly one expression at leaf\"\n {:path path}))\n :else (-> pairs first second)))\n\n(defmacro match-vector [input-vector & pattern-expr-pairs]\n {:pre [(sequential? pattern-expr-pairs)\n (even? (count pattern-expr-pairs))]}\n (let [pairs (partition 2 pattern-expr-pairs)\n patterns (map first pairs)\n _ (assert (every? sequential? patterns))\n pattern-sizes (into #{} (map count) patterns)\n _ (assert (= 1 (count pattern-sizes)))\n pattern-size (first pattern-sizes)\n symbols (repeatedly pattern-size gensym)]\n `(let [[~@symbols] ~input-vector]\n ~(-match-vector [] 0 pattern-size symbols pairs))))\n\n(defn ^:dynamic get-date []\n #?(:clj (Date.)\n :cljs (js/Date.)))\n\n(defn ^:dynamic get-time-ms []\n #?(:clj (.getTime (Date.))\n :cljs (.getTime (js/Date.))))\n\n(defmacro raise\n \"Logging an error and throwing an exception with message and structured data.\n Arguments:\n - Any number of strings that describe the error\n - Last argument is a map of data that helps understanding the source of the error\"\n [& fragments]\n (let [msgs (butlast fragments)\n data (last fragments)]\n (list `(log/log! :error :p ~fragments ~{:?line (:line (meta &form))})\n `(throw (ex-info (str ~@(map (fn [m#] (if (string? m#) m# (list 'pr-str m#))) msgs)) ~data)))))\n\n;; adapted from https://clojure.atlassian.net/browse/CLJ-2766\n#?(:clj\n (defn throwable-promise\n \"Returns a promise object that can be read with deref/@, and set, once only, with deliver. Calls to deref/@ prior to delivery will block, unless the variant of deref with timeout is used. All subsequent derefs will return the same delivered value without blocking. Exceptions delivered to the promise will throw on deref. \n \n Also supports core.async take! to optionally consume values without blocking the reader thread.\"\n []\n (let [cf (CompletableFuture.)\n p (async/promise-chan)]\n (reify\n clojure.lang.IDeref\n (deref [_] (throw-if-exception- (try (.get cf) (catch Throwable t t))))\n clojure.lang.IBlockingDeref\n (deref [_ timeout-ms timeout-val]\n (if-let [v (try (.get cf timeout-ms java.util.concurrent.TimeUnit/MILLISECONDS) (catch Throwable t t))]\n (throw-if-exception- v)\n timeout-val))\n clojure.lang.IPending\n (isRealized [_] (.isDone cf))\n clojure.lang.IFn\n (invoke [this x]\n (if (instance? Throwable x)\n (.completeExceptionally cf x)\n (.complete cf x))\n (if-not (nil? x) (async/put! p x) (async/close! p))\n this)\n async-impl/ReadPort\n (take! [_this handler] (async-impl/take! p handler))\n async-impl/WritePort\n (put! [_ val handler]\n (if (instance? Throwable val)\n (.completeExceptionally cf val)\n (.complete cf val))\n (async-impl/put! p val handler)))))\n :cljs (def throwable-promise async/promise-chan))\n\n#?(:clj\n (defn get-version\n \"Retrieves the current version of a dependency. Thanks to https://stackoverflow.com/a/33070806/10978897\"\n [dep]\n (let [path (str \"META-INF/maven/\" (or (namespace dep) (name dep))\n \"/\" (name dep) \"/pom.properties\")\n props (io/resource path)]\n (when props\n (with-open [stream (io/input-stream props)]\n (let [props (doto (Properties.) (.load stream))]\n (.getProperty props \"version\")))))))\n\n#?(:clj (def datahike-version (or (get-version 'io.replikativ/datahike) \"DEVELOPMENT\")))\n\n#?(:clj (def hitchhiker-tree-version\n (try (get-version 'io.replikativ/hitchhiker-tree)\n (catch Exception _ nil))))\n\n#?(:clj (def persistent-set-version (get-version 'io.replikativ/persistent-sorted-set)))\n\n#?(:clj (def konserve-version (get-version 'io.replikativ/konserve)))\n\n#?(:clj\n (defmacro meta-data []\n `{:datahike/version ~datahike-version\n :konserve/version ~konserve-version\n :hitchhiker.tree/version ~hitchhiker-tree-version\n :persistent.set/version ~persistent-set-version\n :datahike/id (uuid)\n :datahike/created-at (get-date)}))\n\n(defn deep-merge\n \"Recursively merges maps together. If all the maps supplied have nested maps\n under the same keys, these nested maps are merged. Otherwise the value is\n overwritten, as in `clojure.core/merge`.\n\n Copied from weavejester/medley 1.3.0\"\n {:arglists '([& maps])\n :added \"1.1.0\"}\n ([])\n ([a] a)\n ([a b]\n (when (or a b)\n (letfn [(merge-entry [m e]\n (let [k (key e)\n v' (val e)]\n (if (contains? m k)\n (assoc m k (let [v (get m k)]\n (if (and (map? v) (map? v'))\n (deep-merge v v')\n v')))\n (assoc m k v'))))]\n (reduce merge-entry (or a {}) (seq b)))))\n ([a b & more]\n (reduce deep-merge (or a {}) (cons b more))))\n\n(defn timed [f]\n (let [now #?(:clj #(. System (nanoTime))\n :cljs #(* 1000 (. (js/Date.) (getTime))))\n start (now)\n result (f)\n end (now)\n t (/ (double (- end start))\n 1000000.0)]\n {:res result\n :t t}))\n\n(defn get-hostname []\n #?(:clj (.getHostAddress (InetAddress/getLocalHost))\n :cljs \"\" #_(raise \"Not supported.\" {:type :hostname-not-supported})))\n\n#?(:clj (def datahike-logo (slurp (io/resource \"datahike-logo.txt\"))))\n\n(defmacro with-destructured-vector [v & var-expr-pairs]\n {:pre [(even? (count var-expr-pairs))]}\n (let [pairs (partition 2 var-expr-pairs)\n vars (mapv first pairs)\n vsym (gensym)\n nsym (gensym)\n generate (fn generate [acc pairs]\n (let [i (count acc)]\n `(if (<= ~nsym ~i)\n ~acc\n ~(if (empty? pairs)\n `(throw (ex-info \"Pattern mismatch\"\n {:input ~vsym\n :pattern (quote ~var-expr-pairs)}))\n (let [[[_ expr] & pairs] pairs\n g (gensym)]\n `(let [~g ~expr]\n ~(generate (conj acc g) pairs)))))))]\n `(let [~vsym ~v\n ~nsym (count ~vsym)\n ~vars ~vsym]\n ~(generate [] pairs))))\n\n(defn- reduce-clauses\n [resolver context clauses]\n (loop [context context\n clauses clauses\n failed-clauses []]\n (if (empty? clauses)\n [context failed-clauses]\n (let [[clause & clauses] clauses]\n (if-let [next-context (resolver context clause)]\n (recur next-context clauses failed-clauses)\n (recur context clauses (conj failed-clauses clause)))))))\n\n(defn resolve-clauses [resolver context clauses]\n (if (empty? clauses)\n context\n (let [[context failed-clauses] (reduce-clauses resolver\n context\n clauses)]\n (if (= (count failed-clauses)\n (count clauses))\n (raise \"Cannot resolve any more clauses\"\n {:clauses clauses})\n (recur resolver context failed-clauses)))))\n\n(defn group-by-step\n \"Create a step function to use with `transduce` for grouping values\"\n [f]\n (fn\n ([] (transient {}))\n ([dst] (persistent! dst))\n ([dst x]\n (let [k (f x)]\n (assoc! dst k (conj (get dst k []) x))))))\n\n(defn range-subset-tree\n \"This function generates code for a decision tree that for an input expression `input` that has to represent a sequence of growing integers that is a subset of the integers in the sequence `(range length-length)`. Every leaf in the decision tree corresponds to one of the 2^range-length possible subsequences and the `branch-visitor-fn` is called at every leaf with the first argument being the subsequence and the second argument being a mask.\"\n ([range-length input branch-visitor-fn]\n (if (symbol? input)\n (range-subset-tree range-length\n input\n branch-visitor-fn\n 0\n []\n (vec (repeat range-length nil)))\n (let [sym (gensym)]\n `(let [~sym ~input]\n ~(range-subset-tree range-length sym branch-visitor-fn)))))\n ([range-length input-symbol branch-visitor-fn at acc-inds mask]\n {:pre [(number? range-length)\n (symbol? input-symbol)\n (ifn? branch-visitor-fn)\n (number? at)\n (vector? acc-inds)]}\n (if (= range-length at)\n (branch-visitor-fn acc-inds mask)\n `(if (empty? ~input-symbol)\n ~(branch-visitor-fn acc-inds mask)\n (if (= ~at (first ~input-symbol))\n (let [~input-symbol (rest ~input-symbol)]\n ~(range-subset-tree range-length\n input-symbol\n branch-visitor-fn\n (inc at)\n (conj acc-inds at)\n (assoc mask at (count acc-inds))))\n ~(range-subset-tree range-length\n input-symbol\n branch-visitor-fn\n (inc at)\n acc-inds\n mask))))))\n\n(defn distinct-sorted-seq? [cmp s]\n (if (empty? s)\n true\n (loop [previous (first s)\n s (rest s)]\n (if (empty? s)\n true\n (let [x (first s)]\n (if (neg? (cmp previous x))\n (recur x (rest s))\n false))))))\n\n(defn merge-distinct-sorted-seqs\n \"Takes a comparator function `cmp` and two sequences `seq-a` and `seq-b` that are both distinct and sorted by `cmp`. Then combines the elements from both sequences to form a new sorted sequence that is distinct. The function distinct-sorted-seq? must return true for all input sequences and the result will also be a sequence for which this function returns true.\"\n [cmp seq-a seq-b]\n (cond\n (empty? seq-a) seq-b\n (empty? seq-b) seq-a\n :else\n (let [a (first seq-a)\n b (first seq-b)\n i (cmp a b)]\n (cond\n (< i 0) (cons\n a (lazy-seq\n (merge-distinct-sorted-seqs cmp (rest seq-a) seq-b)))\n (= i 0) (cons\n a (lazy-seq\n (merge-distinct-sorted-seqs cmp (rest seq-a) (rest seq-b))))\n :else (cons\n b (lazy-seq\n (merge-distinct-sorted-seqs cmp seq-a (rest seq-b))))))))\n"]}