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,642 @@
1
+ var $CLJS = require("./cljs_env");
2
+ var $jscomp = $CLJS.$jscomp;
3
+ var COMPILED = false;
4
+ require("./cljs.core.js");
5
+ require("./clojure.data.js");
6
+ require("./clojure.walk.js");
7
+ require("./datahike.constants.js");
8
+ require("./datahike.datom.js");
9
+ require("./datahike.db.interface.js");
10
+ require("./datahike.index.js");
11
+ require("./datahike.schema.js");
12
+ require("./datahike.tools.js");
13
+ var environ=$CLJS.environ || ($CLJS.environ = {});
14
+ var fress=$CLJS.fress || ($CLJS.fress = {});
15
+ var datahike=$CLJS.datahike || ($CLJS.datahike = {});
16
+ var clojure=$CLJS.clojure || ($CLJS.clojure = {});
17
+ var hasch=$CLJS.hasch || ($CLJS.hasch = {});
18
+ var tailrecursion=$CLJS.tailrecursion || ($CLJS.tailrecursion = {});
19
+ var superv=$CLJS.superv || ($CLJS.superv = {});
20
+ var geheimnis=$CLJS.geheimnis || ($CLJS.geheimnis = {});
21
+ var is=$CLJS.is || ($CLJS.is = {});
22
+ var cljs=$CLJS.cljs || ($CLJS.cljs = {});
23
+ var cljs_node_io=$CLJS.cljs_node_io || ($CLJS.cljs_node_io = {});
24
+ var goog=$CLJS.goog || ($CLJS.goog = {});
25
+ var konserve=$CLJS.konserve || ($CLJS.konserve = {});
26
+ var datalog=$CLJS.datalog || ($CLJS.datalog = {});
27
+ var spec_tools=$CLJS.spec_tools || ($CLJS.spec_tools = {});
28
+ var taoensso=$CLJS.taoensso || ($CLJS.taoensso = {});
29
+ var incognito=$CLJS.incognito || ($CLJS.incognito = {});
30
+ var medley=$CLJS.medley || ($CLJS.medley = {});
31
+ var me=$CLJS.me || ($CLJS.me = {});
32
+
33
+ $CLJS.SHADOW_ENV.setLoaded("datahike.db.utils.js");
34
+
35
+ goog.provide('datahike.db.utils');
36
+ datahike.db.utils.is_attr_QMARK_ = (function datahike$db$utils$is_attr_QMARK_(db,attr,property){
37
+ var a_ident = (cljs.core.truth_((function (){var and__5000__auto__ = new cljs.core.Keyword(null,"attribute-refs?","attribute-refs?",-1070298065).cljs$core$IFn$_invoke$arity$1(datahike.db.interface$._config(db));
38
+ if(cljs.core.truth_(and__5000__auto__)){
39
+ return typeof attr === 'number';
40
+ } else {
41
+ return and__5000__auto__;
42
+ }
43
+ })())?datahike.db.interface$._ident_for(db,attr):attr);
44
+ return cljs.core.contains_QMARK_(datahike.db.interface$._attrs_by(db,property),a_ident);
45
+ });
46
+ datahike.db.utils.multival_QMARK_ = (function datahike$db$utils$multival_QMARK_(db,attr){
47
+ return datahike.db.utils.is_attr_QMARK_(db,attr,new cljs.core.Keyword("db.cardinality","many","db.cardinality/many",772806234));
48
+ });
49
+ datahike.db.utils.ref_QMARK_ = (function datahike$db$utils$ref_QMARK_(db,attr){
50
+ return datahike.db.utils.is_attr_QMARK_(db,attr,new cljs.core.Keyword("db.type","ref","db.type/ref",-1728373079));
51
+ });
52
+ datahike.db.utils.system_attrib_ref_QMARK_ = (function datahike$db$utils$system_attrib_ref_QMARK_(db,attr){
53
+ return datahike.db.utils.is_attr_QMARK_(db,attr,new cljs.core.Keyword("db","systemAttribRef","db/systemAttribRef",-740486325));
54
+ });
55
+ datahike.db.utils.component_QMARK_ = (function datahike$db$utils$component_QMARK_(db,attr){
56
+ return datahike.db.utils.is_attr_QMARK_(db,attr,new cljs.core.Keyword("db","isComponent","db/isComponent",423352398));
57
+ });
58
+ datahike.db.utils.indexing_QMARK_ = (function datahike$db$utils$indexing_QMARK_(db,attr){
59
+ return datahike.db.utils.is_attr_QMARK_(db,attr,new cljs.core.Keyword("db","index","db/index",-1531680669));
60
+ });
61
+ datahike.db.utils.no_history_QMARK_ = (function datahike$db$utils$no_history_QMARK_(db,attr){
62
+ return datahike.db.utils.is_attr_QMARK_(db,attr,new cljs.core.Keyword("db","noHistory","db/noHistory",-1975127444));
63
+ });
64
+ /**
65
+ * Returns true if 'attr' is an attribute basis of a tuple attribute.
66
+ * E.g. ':a' is an attribute part of the tuple attribute ':a+b'.
67
+ * (tuple-source? :a) returns true.
68
+ */
69
+ datahike.db.utils.tuple_source_QMARK_ = (function datahike$db$utils$tuple_source_QMARK_(db,attr){
70
+ return datahike.db.utils.is_attr_QMARK_(db,attr,new cljs.core.Keyword("db","attrTuples","db/attrTuples",860541631));
71
+ });
72
+ /**
73
+ * Returns true if 'attr' is a tuple attribute.
74
+ * I.e., if 'attr' value is of type ':db.type/tuple'
75
+ */
76
+ datahike.db.utils.tuple_QMARK_ = (function datahike$db$utils$tuple_QMARK_(db,attr){
77
+ return datahike.db.utils.is_attr_QMARK_(db,attr,new cljs.core.Keyword("db.type","tuple","db.type/tuple",938234914));
78
+ });
79
+ datahike.db.utils.reverse_ref_QMARK_ = (function datahike$db$utils$reverse_ref_QMARK_(ident){
80
+ if((ident instanceof cljs.core.Keyword)){
81
+ return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2("_",cljs.core.nth.cljs$core$IFn$_invoke$arity$2(cljs.core.name(ident),(0)));
82
+ } else {
83
+ if(typeof ident === 'string'){
84
+ return cljs.core.boolean$(cljs.core.re_matches(/(?:([^\/]+)\/)?_([^\/]+)/,ident));
85
+ } else {
86
+ if(typeof ident === 'number'){
87
+ return false;
88
+ } else {
89
+ var G__105805 = (function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Bad attribute type: ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([ident], 0)),", expected keyword or string"].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","syntax","transact/syntax",-299207078),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),ident], null))})();
90
+ var fexpr__105804 = taoensso.timbre._log_BANG_.cljs$core$IFn$_invoke$arity$14(taoensso.timbre._STAR_config_STAR_,new cljs.core.Keyword(null,"error","error",-978969032),"datahike.db.utils",null,77,null,new cljs.core.Keyword(null,"p","p",151049309),new cljs.core.Keyword(null,"auto","auto",-566279492),(new cljs.core.Delay((function (){
91
+ return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, ["Bad attribute type: ",ident,", expected keyword or string",new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","syntax","transact/syntax",-299207078),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),ident], null)], null);
92
+ }),null)),null,(341),null,null,null);
93
+ return (fexpr__105804.cljs$core$IFn$_invoke$arity$1 ? fexpr__105804.cljs$core$IFn$_invoke$arity$1(G__105805) : fexpr__105804.call(null, G__105805));
94
+
95
+ }
96
+ }
97
+ }
98
+ });
99
+ datahike.db.utils.reverse_ref = (function datahike$db$utils$reverse_ref(ident){
100
+ if((ident instanceof cljs.core.Keyword)){
101
+ if(datahike.db.utils.reverse_ref_QMARK_(ident)){
102
+ return cljs.core.keyword.cljs$core$IFn$_invoke$arity$2(cljs.core.namespace(ident),cljs.core.subs.cljs$core$IFn$_invoke$arity$2(cljs.core.name(ident),(1)));
103
+ } else {
104
+ return cljs.core.keyword.cljs$core$IFn$_invoke$arity$2(cljs.core.namespace(ident),["_",cljs.core.name(ident)].join(''));
105
+ }
106
+ } else {
107
+ if(typeof ident === 'string'){
108
+ var vec__105820 = cljs.core.re_matches(/(?:([^\/]+)\/)?([^\/]+)/,ident);
109
+ var _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__105820,(0),null);
110
+ var ns = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__105820,(1),null);
111
+ var name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__105820,(2),null);
112
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2("_",cljs.core.nth.cljs$core$IFn$_invoke$arity$2(name,(0)))){
113
+ if(cljs.core.truth_(ns)){
114
+ return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns),"/",cljs.core.subs.cljs$core$IFn$_invoke$arity$2(name,(1))].join('');
115
+ } else {
116
+ return cljs.core.subs.cljs$core$IFn$_invoke$arity$2(name,(1));
117
+ }
118
+ } else {
119
+ if(cljs.core.truth_(ns)){
120
+ return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns),"/_",cljs.core.str.cljs$core$IFn$_invoke$arity$1(name)].join('');
121
+ } else {
122
+ return ["_",cljs.core.str.cljs$core$IFn$_invoke$arity$1(name)].join('');
123
+ }
124
+ }
125
+ } else {
126
+ var G__105826 = (function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Bad attribute type: ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([ident], 0)),", expected keyword or string"].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","syntax","transact/syntax",-299207078),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),ident], null))})();
127
+ var fexpr__105825 = taoensso.timbre._log_BANG_.cljs$core$IFn$_invoke$arity$14(taoensso.timbre._STAR_config_STAR_,new cljs.core.Keyword(null,"error","error",-978969032),"datahike.db.utils",null,94,null,new cljs.core.Keyword(null,"p","p",151049309),new cljs.core.Keyword(null,"auto","auto",-566279492),(new cljs.core.Delay((function (){
128
+ return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, ["Bad attribute type: ",ident,", expected keyword or string",new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","syntax","transact/syntax",-299207078),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),ident], null)], null);
129
+ }),null)),null,(343),null,null,null);
130
+ return (fexpr__105825.cljs$core$IFn$_invoke$arity$1 ? fexpr__105825.cljs$core$IFn$_invoke$arity$1(G__105826) : fexpr__105825.call(null, G__105826));
131
+
132
+ }
133
+ }
134
+ });
135
+ datahike.db.utils.db_QMARK_ = (function datahike$db$utils$db_QMARK_(x){
136
+ var and__5000__auto__ = (((!((x == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === x.datahike$db$interface$ISearch$))))?true:(((!x.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(datahike.db.interface$.ISearch,x):false)):cljs.core.native_satisfies_QMARK_(datahike.db.interface$.ISearch,x));
137
+ if(and__5000__auto__){
138
+ var and__5000__auto____$1 = (((!((x == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === x.datahike$db$interface$IIndexAccess$))))?true:(((!x.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(datahike.db.interface$.IIndexAccess,x):false)):cljs.core.native_satisfies_QMARK_(datahike.db.interface$.IIndexAccess,x));
139
+ if(and__5000__auto____$1){
140
+ if((!((x == null)))){
141
+ if(((false) || ((cljs.core.PROTOCOL_SENTINEL === x.datahike$db$interface$IDB$)))){
142
+ return true;
143
+ } else {
144
+ if((!x.cljs$lang$protocol_mask$partition$)){
145
+ return cljs.core.native_satisfies_QMARK_(datahike.db.interface$.IDB,x);
146
+ } else {
147
+ return false;
148
+ }
149
+ }
150
+ } else {
151
+ return cljs.core.native_satisfies_QMARK_(datahike.db.interface$.IDB,x);
152
+ }
153
+ } else {
154
+ return and__5000__auto____$1;
155
+ }
156
+ } else {
157
+ return and__5000__auto__;
158
+ }
159
+ });
160
+ datahike.db.utils.numeric_entid_QMARK_ = (function datahike$db$utils$numeric_entid_QMARK_(x){
161
+ return ((typeof x === 'number') && ((x > (0))));
162
+ });
163
+ datahike.db.utils.entid = (function datahike$db$utils$entid(var_args){
164
+ var G__105890 = arguments.length;
165
+ switch (G__105890) {
166
+ case 2:
167
+ return datahike.db.utils.entid.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
168
+
169
+ break;
170
+ case 3:
171
+ return datahike.db.utils.entid.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
172
+
173
+ break;
174
+ default:
175
+ throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
176
+
177
+ }
178
+ });
179
+
180
+ (datahike.db.utils.entid.cljs$core$IFn$_invoke$arity$2 = (function (db,eid){
181
+ return datahike.db.utils.entid.cljs$core$IFn$_invoke$arity$3(db,eid,null);
182
+ }));
183
+
184
+ (datahike.db.utils.entid.cljs$core$IFn$_invoke$arity$3 = (function (db,eid,error_code){
185
+ while(true){
186
+ if(datahike.db.utils.db_QMARK_(db)){
187
+ } else {
188
+ throw (new Error("Assert failed: (db? db)"));
189
+ }
190
+
191
+ if(datahike.db.utils.numeric_entid_QMARK_(eid)){
192
+ return eid;
193
+ } else {
194
+ if(cljs.core.sequential_QMARK_(eid)){
195
+ var vec__105900 = eid;
196
+ var attr = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__105900,(0),null);
197
+ var value = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__105900,(1),null);
198
+ if(cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.count(eid),(2))){
199
+ var or__5002__auto__ = error_code;
200
+ if(cljs.core.truth_(or__5002__auto__)){
201
+ return or__5002__auto__;
202
+ } else {
203
+ var G__105912 = (function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Lookup ref should contain 2 elements: ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([eid], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("lookup-ref","syntax","lookup-ref/syntax",-317304012),new cljs.core.Keyword(null,"entity-id","entity-id",1485898093),eid], null))})();
204
+ var fexpr__105911 = taoensso.timbre._log_BANG_.cljs$core$IFn$_invoke$arity$14(taoensso.timbre._STAR_config_STAR_,new cljs.core.Keyword(null,"error","error",-978969032),"datahike.db.utils",null,116,null,new cljs.core.Keyword(null,"p","p",151049309),new cljs.core.Keyword(null,"auto","auto",-566279492),(new cljs.core.Delay(((function (db,eid,error_code,G__105912,or__5002__auto__,vec__105900,attr,value){
205
+ return (function (){
206
+ return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["Lookup ref should contain 2 elements: ",eid,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("lookup-ref","syntax","lookup-ref/syntax",-317304012),new cljs.core.Keyword(null,"entity-id","entity-id",1485898093),eid], null)], null);
207
+ });})(db,eid,error_code,G__105912,or__5002__auto__,vec__105900,attr,value))
208
+ ,null)),null,(345),null,null,null);
209
+ return (fexpr__105911.cljs$core$IFn$_invoke$arity$1 ? fexpr__105911.cljs$core$IFn$_invoke$arity$1(G__105912) : fexpr__105911.call(null, G__105912));
210
+ }
211
+ } else {
212
+ if((!(datahike.db.utils.is_attr_QMARK_(db,attr,new cljs.core.Keyword("db","unique","db/unique",329396388))))){
213
+ var or__5002__auto__ = error_code;
214
+ if(cljs.core.truth_(or__5002__auto__)){
215
+ return or__5002__auto__;
216
+ } else {
217
+ var G__105915 = (function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Lookup ref attribute should be marked as :db/unique: ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([eid], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("lookup-ref","unique","lookup-ref/unique",-960647710),new cljs.core.Keyword(null,"entity-id","entity-id",1485898093),eid], null))})();
218
+ var fexpr__105914 = taoensso.timbre._log_BANG_.cljs$core$IFn$_invoke$arity$14(taoensso.timbre._STAR_config_STAR_,new cljs.core.Keyword(null,"error","error",-978969032),"datahike.db.utils",null,120,null,new cljs.core.Keyword(null,"p","p",151049309),new cljs.core.Keyword(null,"auto","auto",-566279492),(new cljs.core.Delay(((function (db,eid,error_code,G__105915,or__5002__auto__,vec__105900,attr,value){
219
+ return (function (){
220
+ return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["Lookup ref attribute should be marked as :db/unique: ",eid,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("lookup-ref","unique","lookup-ref/unique",-960647710),new cljs.core.Keyword(null,"entity-id","entity-id",1485898093),eid], null)], null);
221
+ });})(db,eid,error_code,G__105915,or__5002__auto__,vec__105900,attr,value))
222
+ ,null)),null,(347),null,null,null);
223
+ return (fexpr__105914.cljs$core$IFn$_invoke$arity$1 ? fexpr__105914.cljs$core$IFn$_invoke$arity$1(G__105915) : fexpr__105914.call(null, G__105915));
224
+ }
225
+ } else {
226
+ if((value == null)){
227
+ return null;
228
+ } else {
229
+ return new cljs.core.Keyword(null,"e","e",1381269198).cljs$core$IFn$_invoke$arity$1(cljs.core.first(datahike.db.interface$.datoms(db,new cljs.core.Keyword(null,"avet","avet",1383857032),eid)));
230
+
231
+ }
232
+ }
233
+ }
234
+ } else {
235
+ if(cljs.core.array_QMARK_(eid)){
236
+ var G__106039 = db;
237
+ var G__106040 = cljs.core.array_seq.cljs$core$IFn$_invoke$arity$1(eid);
238
+ var G__106041 = error_code;
239
+ db = G__106039;
240
+ eid = G__106040;
241
+ error_code = G__106041;
242
+ continue;
243
+ } else {
244
+ if((eid instanceof cljs.core.Keyword)){
245
+ return new cljs.core.Keyword(null,"e","e",1381269198).cljs$core$IFn$_invoke$arity$1(cljs.core.first(datahike.db.interface$.datoms(db,new cljs.core.Keyword(null,"avet","avet",1383857032),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db","ident","db/ident",-737096),eid], null))));
246
+ } else {
247
+ var or__5002__auto__ = error_code;
248
+ if(cljs.core.truth_(or__5002__auto__)){
249
+ return or__5002__auto__;
250
+ } else {
251
+ var G__105931 = (function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Expected number or lookup ref for entity id, got ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([eid], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("entity-id","syntax","entity-id/syntax",1921317045),new cljs.core.Keyword(null,"entity-id","entity-id",1485898093),eid], null))})();
252
+ var fexpr__105930 = taoensso.timbre._log_BANG_.cljs$core$IFn$_invoke$arity$14(taoensso.timbre._STAR_config_STAR_,new cljs.core.Keyword(null,"error","error",-978969032),"datahike.db.utils",null,134,null,new cljs.core.Keyword(null,"p","p",151049309),new cljs.core.Keyword(null,"auto","auto",-566279492),(new cljs.core.Delay(((function (db,eid,error_code,G__105931,or__5002__auto__){
253
+ return (function (){
254
+ return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["Expected number or lookup ref for entity id, got ",eid,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("entity-id","syntax","entity-id/syntax",1921317045),new cljs.core.Keyword(null,"entity-id","entity-id",1485898093),eid], null)], null);
255
+ });})(db,eid,error_code,G__105931,or__5002__auto__))
256
+ ,null)),null,(349),null,null,null);
257
+ return (fexpr__105930.cljs$core$IFn$_invoke$arity$1 ? fexpr__105930.cljs$core$IFn$_invoke$arity$1(G__105931) : fexpr__105930.call(null, G__105931));
258
+ }
259
+
260
+ }
261
+ }
262
+ }
263
+ }
264
+ break;
265
+ }
266
+ }));
267
+
268
+ (datahike.db.utils.entid.cljs$lang$maxFixedArity = 3);
269
+
270
+ datahike.db.utils.entid_strict = (function datahike$db$utils$entid_strict(var_args){
271
+ var G__105948 = arguments.length;
272
+ switch (G__105948) {
273
+ case 2:
274
+ return datahike.db.utils.entid_strict.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
275
+
276
+ break;
277
+ case 3:
278
+ return datahike.db.utils.entid_strict.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
279
+
280
+ break;
281
+ default:
282
+ throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
283
+
284
+ }
285
+ });
286
+
287
+ (datahike.db.utils.entid_strict.cljs$core$IFn$_invoke$arity$2 = (function (db,eid){
288
+ return datahike.db.utils.entid_strict.cljs$core$IFn$_invoke$arity$3(db,eid,null);
289
+ }));
290
+
291
+ (datahike.db.utils.entid_strict.cljs$core$IFn$_invoke$arity$3 = (function (db,eid,error_code){
292
+ var or__5002__auto__ = datahike.db.utils.entid.cljs$core$IFn$_invoke$arity$3(db,eid,error_code);
293
+ if(cljs.core.truth_(or__5002__auto__)){
294
+ return or__5002__auto__;
295
+ } else {
296
+ var or__5002__auto____$1 = error_code;
297
+ if(cljs.core.truth_(or__5002__auto____$1)){
298
+ return or__5002__auto____$1;
299
+ } else {
300
+ var G__105964 = (function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Nothing found for entity id ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([eid], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("entity-id","missing","entity-id/missing",1234588374),new cljs.core.Keyword(null,"entity-id","entity-id",1485898093),eid], null))})();
301
+ var fexpr__105963 = taoensso.timbre._log_BANG_.cljs$core$IFn$_invoke$arity$14(taoensso.timbre._STAR_config_STAR_,new cljs.core.Keyword(null,"error","error",-978969032),"datahike.db.utils",null,142,null,new cljs.core.Keyword(null,"p","p",151049309),new cljs.core.Keyword(null,"auto","auto",-566279492),(new cljs.core.Delay((function (){
302
+ return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, ["Nothing found for entity id ",eid,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("entity-id","missing","entity-id/missing",1234588374),new cljs.core.Keyword(null,"entity-id","entity-id",1485898093),eid], null)], null);
303
+ }),null)),null,(351),null,null,null);
304
+ return (fexpr__105963.cljs$core$IFn$_invoke$arity$1 ? fexpr__105963.cljs$core$IFn$_invoke$arity$1(G__105964) : fexpr__105963.call(null, G__105964));
305
+ }
306
+ }
307
+ }));
308
+
309
+ (datahike.db.utils.entid_strict.cljs$lang$maxFixedArity = 3);
310
+
311
+ datahike.db.utils.entid_some = (function datahike$db$utils$entid_some(db,eid){
312
+ if(cljs.core.truth_(eid)){
313
+ return datahike.db.utils.entid_strict.cljs$core$IFn$_invoke$arity$2(db,eid);
314
+ } else {
315
+ return null;
316
+ }
317
+ });
318
+ datahike.db.utils.attr_has_ref_QMARK_ = (function datahike$db$utils$attr_has_ref_QMARK_(db,attr){
319
+ var and__5000__auto__ = (!((attr == null)));
320
+ if(and__5000__auto__){
321
+ return new cljs.core.Keyword(null,"attribute-refs?","attribute-refs?",-1070298065).cljs$core$IFn$_invoke$arity$1(datahike.db.interface$._config(db));
322
+ } else {
323
+ return and__5000__auto__;
324
+ }
325
+ });
326
+ datahike.db.utils.attr_ref_or_ident = (function datahike$db$utils$attr_ref_or_ident(db,attr){
327
+ if(cljs.core.truth_((function (){var and__5000__auto__ = (!(typeof attr === 'number'));
328
+ if(and__5000__auto__){
329
+ return datahike.db.utils.attr_has_ref_QMARK_(db,attr);
330
+ } else {
331
+ return and__5000__auto__;
332
+ }
333
+ })())){
334
+ return datahike.db.interface$._ref_for(db,attr);
335
+ } else {
336
+ return attr;
337
+ }
338
+ });
339
+ /**
340
+ * Returns identifier name and reference value of an attributes. Both values are identical for non-reference databases.
341
+ */
342
+ datahike.db.utils.attr_info = (function datahike$db$utils$attr_info(db,attr){
343
+ if(cljs.core.truth_(datahike.db.utils.attr_has_ref_QMARK_(db,attr))){
344
+ if(typeof attr === 'number'){
345
+ return new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"ident","ident",-742346),datahike.db.interface$._ident_for(db,attr),new cljs.core.Keyword(null,"ref","ref",1289896967),attr], null);
346
+ } else {
347
+ return new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"ident","ident",-742346),attr,new cljs.core.Keyword(null,"ref","ref",1289896967),datahike.db.interface$._ref_for(db,attr)], null);
348
+ }
349
+ } else {
350
+ return new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"ident","ident",-742346),attr,new cljs.core.Keyword(null,"ref","ref",1289896967),attr], null);
351
+ }
352
+ });
353
+ datahike.db.utils.ident_name_QMARK_ = (function datahike$db$utils$ident_name_QMARK_(x){
354
+ return (((x instanceof cljs.core.Keyword)) || (typeof x === 'string'));
355
+ });
356
+ datahike.db.utils.validate_attr_ident = (function datahike$db$utils$validate_attr_ident(a_ident,at,db){
357
+ if(datahike.db.utils.ident_name_QMARK_(a_ident)){
358
+ } else {
359
+ var G__105989_106043 = (function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Bad entity attribute ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([a_ident], 0))," at ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([at], 0)),", expected keyword or string"].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","syntax","transact/syntax",-299207078),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),a_ident,new cljs.core.Keyword(null,"context","context",-830191113),at], null))})();
360
+ var fexpr__105988_106044 = taoensso.timbre._log_BANG_.cljs$core$IFn$_invoke$arity$14(taoensso.timbre._STAR_config_STAR_,new cljs.core.Keyword(null,"error","error",-978969032),"datahike.db.utils",null,174,null,new cljs.core.Keyword(null,"p","p",151049309),new cljs.core.Keyword(null,"auto","auto",-566279492),(new cljs.core.Delay((function (){
361
+ return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, ["Bad entity attribute ",a_ident," at ",at,", expected keyword or string",new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","syntax","transact/syntax",-299207078),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),a_ident,new cljs.core.Keyword(null,"context","context",-830191113),at], null)], null);
362
+ }),null)),null,(353),null,null,null);
363
+ (fexpr__105988_106044.cljs$core$IFn$_invoke$arity$1 ? fexpr__105988_106044.cljs$core$IFn$_invoke$arity$1(G__105989_106043) : fexpr__105988_106044.call(null, G__105989_106043));
364
+ }
365
+
366
+ if(((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"write","write",-1857649168),new cljs.core.Keyword(null,"schema-flexibility","schema-flexibility",-1255871751).cljs$core$IFn$_invoke$arity$1(datahike.db.interface$._config(db)))) && ((!(((datahike.schema.meta_attr_QMARK_(a_ident)) || (((datahike.schema.schema_attr_QMARK_(a_ident)) || (datahike.schema.entity_spec_attr_QMARK_(a_ident)))))))))){
367
+ var temp__5802__auto__ = new cljs.core.Keyword("db","ident","db/ident",-737096).cljs$core$IFn$_invoke$arity$1(datahike.db.interface$._rschema(db));
368
+ if(cljs.core.truth_(temp__5802__auto__)){
369
+ var db_idents = temp__5802__auto__;
370
+ var attr = ((datahike.db.utils.reverse_ref_QMARK_(a_ident))?datahike.db.utils.reverse_ref(a_ident):a_ident);
371
+ if(cljs.core.truth_((db_idents.cljs$core$IFn$_invoke$arity$1 ? db_idents.cljs$core$IFn$_invoke$arity$1(attr) : db_idents.call(null, attr)))){
372
+ return null;
373
+ } else {
374
+ var G__105993 = (function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Bad entity attribute ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([a_ident], 0))," at ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([at], 0)),", not defined in current schema"].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","schema","transact/schema",1426844139),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),a_ident,new cljs.core.Keyword(null,"context","context",-830191113),at], null))})();
375
+ var fexpr__105992 = taoensso.timbre._log_BANG_.cljs$core$IFn$_invoke$arity$14(taoensso.timbre._STAR_config_STAR_,new cljs.core.Keyword(null,"error","error",-978969032),"datahike.db.utils",null,183,null,new cljs.core.Keyword(null,"p","p",151049309),new cljs.core.Keyword(null,"auto","auto",-566279492),(new cljs.core.Delay((function (){
376
+ return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, ["Bad entity attribute ",a_ident," at ",at,", not defined in current schema",new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","schema","transact/schema",1426844139),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),a_ident,new cljs.core.Keyword(null,"context","context",-830191113),at], null)], null);
377
+ }),null)),null,(355),null,null,null);
378
+ return (fexpr__105992.cljs$core$IFn$_invoke$arity$1 ? fexpr__105992.cljs$core$IFn$_invoke$arity$1(G__105993) : fexpr__105992.call(null, G__105993));
379
+ }
380
+ } else {
381
+ var G__106000 = (function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2("No schema found in db.",new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","schema","transact/schema",1426844139),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),a_ident,new cljs.core.Keyword(null,"context","context",-830191113),at], null))})();
382
+ var fexpr__105999 = taoensso.timbre._log_BANG_.cljs$core$IFn$_invoke$arity$14(taoensso.timbre._STAR_config_STAR_,new cljs.core.Keyword(null,"error","error",-978969032),"datahike.db.utils",null,185,null,new cljs.core.Keyword(null,"p","p",151049309),new cljs.core.Keyword(null,"auto","auto",-566279492),(new cljs.core.Delay((function (){
383
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, ["No schema found in db.",new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","schema","transact/schema",1426844139),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),a_ident,new cljs.core.Keyword(null,"context","context",-830191113),at], null)], null);
384
+ }),null)),null,(357),null,null,null);
385
+ return (fexpr__105999.cljs$core$IFn$_invoke$arity$1 ? fexpr__105999.cljs$core$IFn$_invoke$arity$1(G__106000) : fexpr__105999.call(null, G__106000));
386
+ }
387
+ } else {
388
+ return null;
389
+ }
390
+ });
391
+ datahike.db.utils.resolve_datom = (function datahike$db$utils$resolve_datom(db,e,a,v,t,default_e,default_tx){
392
+ var map__106001 = datahike.db.utils.attr_info(db,a);
393
+ var map__106001__$1 = cljs.core.__destructure_map(map__106001);
394
+ var a_ident = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__106001__$1,new cljs.core.Keyword(null,"ident","ident",-742346));
395
+ var a_db = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__106001__$1,new cljs.core.Keyword(null,"ref","ref",1289896967));
396
+ if(cljs.core.truth_(a_ident)){
397
+ datahike.db.utils.validate_attr_ident(a_ident,(new cljs.core.List(null,new cljs.core.Symbol(null,"resolve-datom","resolve-datom",-294110827,null),(new cljs.core.List(null,new cljs.core.Symbol(null,"db","db",-1661185010,null),(new cljs.core.List(null,e,(new cljs.core.List(null,a,(new cljs.core.List(null,v,(new cljs.core.List(null,t,null,(1),null)),(2),null)),(3),null)),(4),null)),(5),null)),(6),null)),db);
398
+ } else {
399
+ }
400
+
401
+ return datahike.datom.datom.cljs$core$IFn$_invoke$arity$4((function (){var or__5002__auto__ = datahike.db.utils.entid_some(db,e);
402
+ if(cljs.core.truth_(or__5002__auto__)){
403
+ return or__5002__auto__;
404
+ } else {
405
+ return default_e;
406
+ }
407
+ })(),a_db,(((((!((v == null)))) && (datahike.db.utils.ref_QMARK_(db,a_ident))))?datahike.db.utils.entid_strict.cljs$core$IFn$_invoke$arity$2(db,v):v),(function (){var or__5002__auto__ = datahike.db.utils.entid_some(db,t);
408
+ if(cljs.core.truth_(or__5002__auto__)){
409
+ return or__5002__auto__;
410
+ } else {
411
+ return default_tx;
412
+ }
413
+ })());
414
+ });
415
+ datahike.db.utils.components__GT_pattern = (function datahike$db$utils$components__GT_pattern(db,index,p__106007,default_e,default_tx){
416
+ var vec__106008 = p__106007;
417
+ var c0 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__106008,(0),null);
418
+ var c1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__106008,(1),null);
419
+ var c2 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__106008,(2),null);
420
+ var c3 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__106008,(3),null);
421
+ var G__106011 = index;
422
+ var G__106011__$1 = (((G__106011 instanceof cljs.core.Keyword))?G__106011.fqn:null);
423
+ switch (G__106011__$1) {
424
+ case "eavt":
425
+ return datahike.db.utils.resolve_datom(db,c0,c1,c2,c3,default_e,default_tx);
426
+
427
+ break;
428
+ case "aevt":
429
+ return datahike.db.utils.resolve_datom(db,c1,c0,c2,c3,default_e,default_tx);
430
+
431
+ break;
432
+ case "avet":
433
+ return datahike.db.utils.resolve_datom(db,c2,c0,c1,c3,default_e,default_tx);
434
+
435
+ break;
436
+ default:
437
+ throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__106011__$1)].join('')));
438
+
439
+ }
440
+ });
441
+ datahike.db.utils.merge_datoms = (function datahike$db$utils$merge_datoms(index_type,a,b){
442
+ if(cljs.core.truth_(index_type)){
443
+ return datahike.tools.merge_distinct_sorted_seqs(datahike.datom.index_type__GT_cmp_quick.cljs$core$IFn$_invoke$arity$2(index_type,false),a,b);
444
+ } else {
445
+ return cljs.core.concat.cljs$core$IFn$_invoke$arity$2(a,(new cljs.core.LazySeq(null,(function (){
446
+ return cljs.core.remove.cljs$core$IFn$_invoke$arity$2(cljs.core.set(a),b);
447
+ }),null,null)));
448
+ }
449
+ });
450
+ datahike.db.utils.distinct_sorted_datoms_QMARK_ = (function datahike$db$utils$distinct_sorted_datoms_QMARK_(index_type,datoms){
451
+ if(cljs.core.truth_(index_type)){
452
+ return datahike.tools.distinct_sorted_seq_QMARK_(datahike.datom.index_type__GT_cmp_quick.cljs$core$IFn$_invoke$arity$2(index_type,false),datoms);
453
+ } else {
454
+ return null;
455
+ }
456
+ });
457
+ datahike.db.utils.distinct_datoms = (function datahike$db$utils$distinct_datoms(db,index_type,current_datoms,history_datoms){
458
+ if(cljs.core.truth_(datahike.db.interface$._keep_history_QMARK_(db))){
459
+ return datahike.db.utils.merge_datoms(index_type,cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (datom){
460
+ var a = new cljs.core.Keyword(null,"a","a",-2123407586).cljs$core$IFn$_invoke$arity$1(datom);
461
+ return ((datahike.db.utils.no_history_QMARK_(db,a)) || (datahike.db.utils.multival_QMARK_(db,a)));
462
+ }),current_datoms),history_datoms);
463
+ } else {
464
+ return current_datoms;
465
+ }
466
+ });
467
+ datahike.db.utils.temporal_datoms = (function datahike$db$utils$temporal_datoms(db,index_type,cs){
468
+ var index = cljs.core.get.cljs$core$IFn$_invoke$arity$2(db,index_type);
469
+ var temporal_index = cljs.core.get.cljs$core$IFn$_invoke$arity$2(db,cljs.core.keyword.cljs$core$IFn$_invoke$arity$1(["temporal-",cljs.core.name(index_type)].join('')));
470
+ var from = datahike.db.utils.components__GT_pattern(db,index_type,cs,(0),(536870912));
471
+ var to = datahike.db.utils.components__GT_pattern(db,index_type,cs,(2147483647),(2147483647));
472
+ return datahike.db.utils.distinct_datoms(db,index_type,(datahike.index._slice.cljs$core$IFn$_invoke$arity$4 ? datahike.index._slice.cljs$core$IFn$_invoke$arity$4(index,from,to,index_type) : datahike.index._slice.call(null, index,from,to,index_type)),(datahike.index._slice.cljs$core$IFn$_invoke$arity$4 ? datahike.index._slice.cljs$core$IFn$_invoke$arity$4(temporal_index,from,to,index_type) : datahike.index._slice.call(null, temporal_index,from,to,index_type)));
473
+ });
474
+ datahike.db.utils.temporal_context = cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(datahike.db.interface$.base_context,new cljs.core.Keyword(null,"temporal","temporal",675125662),true,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"historical","historical",-1097523491),false], 0));
475
+ datahike.db.utils.filter_txInstant = (function datahike$db$utils$filter_txInstant(datoms,pred,db){
476
+ var txInstant = (cljs.core.truth_(new cljs.core.Keyword(null,"attribute-refs?","attribute-refs?",-1070298065).cljs$core$IFn$_invoke$arity$1(datahike.db.interface$._config(db)))?datahike.db.interface$._ref_for(db,new cljs.core.Keyword("db","txInstant","db/txInstant",-990494199)):new cljs.core.Keyword("db","txInstant","db/txInstant",-990494199));
477
+ return cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentHashSet.EMPTY,cljs.core.comp.cljs$core$IFn$_invoke$arity$variadic(cljs.core.map.cljs$core$IFn$_invoke$arity$1(datahike.datom.datom_tx),cljs.core.distinct.cljs$core$IFn$_invoke$arity$0(),cljs.core.mapcat.cljs$core$IFn$_invoke$arity$1((function (tx){
478
+ return datahike.db.interface$._datoms(db,new cljs.core.Keyword(null,"eavt","eavt",-666437073),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [tx], null),datahike.db.utils.temporal_context);
479
+ })),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.keep.cljs$core$IFn$_invoke$arity$1((function (d){
480
+ if(cljs.core.truth_((function (){var and__5000__auto__ = cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(txInstant,d.a);
481
+ if(and__5000__auto__){
482
+ return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(d) : pred.call(null, d));
483
+ } else {
484
+ return and__5000__auto__;
485
+ }
486
+ })())){
487
+ return d.e;
488
+ } else {
489
+ return null;
490
+ }
491
+ }))], 0)),datoms);
492
+ });
493
+ datahike.db.utils.validate_attr = (function datahike$db$utils$validate_attr(attr,at,db){
494
+ if(cljs.core.truth_(new cljs.core.Keyword(null,"attribute-refs?","attribute-refs?",-1070298065).cljs$core$IFn$_invoke$arity$1(datahike.db.interface$._config(db)))){
495
+ if(typeof attr === 'number'){
496
+ } else {
497
+ var G__106024_106052 = (function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Bad entity attribute ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([attr], 0))," at ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([at], 0)),", expected reference number"].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","syntax","transact/syntax",-299207078),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),attr,new cljs.core.Keyword(null,"context","context",-830191113),at], null))})();
498
+ var fexpr__106023_106053 = taoensso.timbre._log_BANG_.cljs$core$IFn$_invoke$arity$14(taoensso.timbre._STAR_config_STAR_,new cljs.core.Keyword(null,"error","error",-978969032),"datahike.db.utils",null,262,null,new cljs.core.Keyword(null,"p","p",151049309),new cljs.core.Keyword(null,"auto","auto",-566279492),(new cljs.core.Delay((function (){
499
+ return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, ["Bad entity attribute ",attr," at ",at,", expected reference number",new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","syntax","transact/syntax",-299207078),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),attr,new cljs.core.Keyword(null,"context","context",-830191113),at], null)], null);
500
+ }),null)),null,(360),null,null,null);
501
+ (fexpr__106023_106053.cljs$core$IFn$_invoke$arity$1 ? fexpr__106023_106053.cljs$core$IFn$_invoke$arity$1(G__106024_106052) : fexpr__106023_106053.call(null, G__106024_106052));
502
+ }
503
+
504
+ var temp__5802__auto__ = cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(db,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"ref-ident-map","ref-ident-map",107296375),attr], null));
505
+ if(cljs.core.truth_(temp__5802__auto__)){
506
+ var a_ident = temp__5802__auto__;
507
+ return datahike.db.utils.validate_attr_ident(a_ident,at,db);
508
+ } else {
509
+ var G__106026 = (function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Bad entity attribute ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([attr], 0))," at ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([at], 0)),", not defined in current schema"].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","schema","transact/schema",1426844139),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),attr,new cljs.core.Keyword(null,"context","context",-830191113),at], null))})();
510
+ var fexpr__106025 = taoensso.timbre._log_BANG_.cljs$core$IFn$_invoke$arity$14(taoensso.timbre._STAR_config_STAR_,new cljs.core.Keyword(null,"error","error",-978969032),"datahike.db.utils",null,266,null,new cljs.core.Keyword(null,"p","p",151049309),new cljs.core.Keyword(null,"auto","auto",-566279492),(new cljs.core.Delay((function (){
511
+ return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, ["Bad entity attribute ",attr," at ",at,", not defined in current schema",new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("transact","schema","transact/schema",1426844139),new cljs.core.Keyword(null,"attribute","attribute",-2074029119),attr,new cljs.core.Keyword(null,"context","context",-830191113),at], null)], null);
512
+ }),null)),null,(362),null,null,null);
513
+ return (fexpr__106025.cljs$core$IFn$_invoke$arity$1 ? fexpr__106025.cljs$core$IFn$_invoke$arity$1(G__106026) : fexpr__106025.call(null, G__106026));
514
+ }
515
+ } else {
516
+ return datahike.db.utils.validate_attr_ident(attr,at,db);
517
+ }
518
+ });
519
+ datahike.db.utils.normalize_and_validate_attr = (function datahike$db$utils$normalize_and_validate_attr(attr,at,db){
520
+ var attr__$1 = datahike.db.utils.attr_ref_or_ident(db,attr);
521
+ datahike.db.utils.validate_attr(attr__$1,at,db);
522
+
523
+ return attr__$1;
524
+ });
525
+ datahike.db.utils.attr__GT_properties = (function datahike$db$utils$attr__GT_properties(k,v){
526
+ var G__106030 = v;
527
+ var G__106030__$1 = (((G__106030 instanceof cljs.core.Keyword))?G__106030.fqn:null);
528
+ switch (G__106030__$1) {
529
+ case "db.unique/identity":
530
+ return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db","unique","db/unique",329396388),new cljs.core.Keyword("db.unique","identity","db.unique/identity",1675950722),new cljs.core.Keyword("db","index","db/index",-1531680669)], null);
531
+
532
+ break;
533
+ case "db.unique/value":
534
+ return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db","unique","db/unique",329396388),new cljs.core.Keyword("db.unique","value","db.unique/value",276903088),new cljs.core.Keyword("db","index","db/index",-1531680669)], null);
535
+
536
+ break;
537
+ case "db.cardinality/many":
538
+ return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db.cardinality","many","db.cardinality/many",772806234)], null);
539
+
540
+ break;
541
+ case "db.type/ref":
542
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db.type","ref","db.type/ref",-1728373079),new cljs.core.Keyword("db","index","db/index",-1531680669)], null);
543
+
544
+ break;
545
+ case "db.type/tuple":
546
+ return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db.type","tuple","db.type/tuple",938234914)], null);
547
+
548
+ break;
549
+ case "db.type/valueType":
550
+ return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db","systemAttribRef","db/systemAttribRef",-740486325)], null);
551
+
552
+ break;
553
+ case "db.type/cardinality":
554
+ return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db","systemAttribRef","db/systemAttribRef",-740486325)], null);
555
+
556
+ break;
557
+ case "db.type/unique":
558
+ return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db","systemAttribRef","db/systemAttribRef",-740486325)], null);
559
+
560
+ break;
561
+ default:
562
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(k,new cljs.core.Keyword("db","ident","db/ident",-737096))){
563
+ return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db","ident","db/ident",-737096)], null);
564
+ } else {
565
+ if(v === true){
566
+ var G__106032 = k;
567
+ var G__106032__$1 = (((G__106032 instanceof cljs.core.Keyword))?G__106032.fqn:null);
568
+ switch (G__106032__$1) {
569
+ case "db/isComponent":
570
+ return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db","isComponent","db/isComponent",423352398)], null);
571
+
572
+ break;
573
+ case "db/index":
574
+ return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db","index","db/index",-1531680669)], null);
575
+
576
+ break;
577
+ case "db/noHistory":
578
+ return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db","noHistory","db/noHistory",-1975127444)], null);
579
+
580
+ break;
581
+ default:
582
+ return cljs.core.PersistentVector.EMPTY;
583
+
584
+ }
585
+ } else {
586
+ return null;
587
+ }
588
+ }
589
+
590
+ }
591
+ });
592
+ /**
593
+ * Same as reduce, but `f` takes [acc el idx]
594
+ */
595
+ datahike.db.utils.reduce_indexed = (function datahike$db$utils$reduce_indexed(f,init,xs){
596
+ return cljs.core.first(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (p__106033,x){
597
+ var vec__106035 = p__106033;
598
+ var acc = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__106035,(0),null);
599
+ var idx = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__106035,(1),null);
600
+ var res = (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(acc,x,idx) : f.call(null, acc,x,idx));
601
+ if(cljs.core.reduced_QMARK_(res)){
602
+ return cljs.core.reduced(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [res,idx], null));
603
+ } else {
604
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [res,(idx + (1))], null);
605
+ }
606
+ }),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [init,(0)], null),xs));
607
+ });
608
+ /**
609
+ * For each attribute involved in a composite tuple, returns a map made of the tuple attribute it is involved in, plus its position in the tuple.
610
+ * E.g. {:a => {:a+b+c 0, :a+d 0}
611
+ * :b => {:a+b+c 1}
612
+ * ... }
613
+ */
614
+ datahike.db.utils.attrTuples = (function datahike$db$utils$attrTuples(schema,rschema){
615
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (m,tuple_attr){
616
+ return datahike.db.utils.reduce_indexed((function (m__$1,attr,idx){
617
+ return cljs.core.update.cljs$core$IFn$_invoke$arity$5(m__$1,attr,cljs.core.assoc,tuple_attr,idx);
618
+ }),m,new cljs.core.Keyword("db","tupleAttrs","db/tupleAttrs",250080092).cljs$core$IFn$_invoke$arity$1((tuple_attr.cljs$core$IFn$_invoke$arity$1 ? tuple_attr.cljs$core$IFn$_invoke$arity$1(schema) : tuple_attr.call(null, schema))));
619
+ }),cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword("db.type","tuple","db.type/tuple",938234914).cljs$core$IFn$_invoke$arity$1(rschema));
620
+ });
621
+ datahike.db.utils.rschema = (function datahike$db$utils$rschema(schema){
622
+ var rschema = cljs.core.reduce_kv((function (m,attr,keys__GT_values){
623
+ if((keys__GT_values instanceof cljs.core.Keyword)){
624
+ return m;
625
+ } else {
626
+ return cljs.core.reduce_kv((function (m__$1,key,value){
627
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (m__$2,prop){
628
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m__$2,prop,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(m__$2,prop,cljs.core.PersistentHashSet.EMPTY),attr));
629
+ }),m__$1,datahike.db.utils.attr__GT_properties(key,value));
630
+ }),cljs.core.update.cljs$core$IFn$_invoke$arity$3(m,new cljs.core.Keyword("db","ident","db/ident",-737096),(function (coll){
631
+ if(cljs.core.truth_(coll)){
632
+ return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(coll,attr);
633
+ } else {
634
+ return cljs.core.PersistentHashSet.createAsIfByAssoc([attr]);
635
+ }
636
+ })),keys__GT_values);
637
+ }
638
+ }),cljs.core.PersistentArrayMap.EMPTY,schema);
639
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(rschema,new cljs.core.Keyword("db","attrTuples","db/attrTuples",860541631),datahike.db.utils.attrTuples(schema,rschema));
640
+ });
641
+
642
+ //# sourceMappingURL=datahike.db.utils.js.map