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.
- package/README.md +226 -0
- package/cljs.analyzer.api.js +427 -0
- package/cljs.analyzer.api.js.map +1 -0
- package/cljs.analyzer.impl.js +86 -0
- package/cljs.analyzer.impl.js.map +1 -0
- package/cljs.analyzer.impl.namespaces.js +219 -0
- package/cljs.analyzer.impl.namespaces.js.map +1 -0
- package/cljs.analyzer.js +7186 -0
- package/cljs.analyzer.js.map +1 -0
- package/cljs.analyzer.passes.and_or.js +141 -0
- package/cljs.analyzer.passes.and_or.js.map +1 -0
- package/cljs.analyzer.passes.js +104 -0
- package/cljs.analyzer.passes.js.map +1 -0
- package/cljs.cache.js +1145 -0
- package/cljs.cache.js.map +1 -0
- package/cljs.cache.wrapped.js +352 -0
- package/cljs.cache.wrapped.js.map +1 -0
- package/cljs.core.async.impl.buffers.js +489 -0
- package/cljs.core.async.impl.buffers.js.map +1 -0
- package/cljs.core.async.impl.channels.js +711 -0
- package/cljs.core.async.impl.channels.js.map +1 -0
- package/cljs.core.async.impl.dispatch.js +81 -0
- package/cljs.core.async.impl.dispatch.js.map +1 -0
- package/cljs.core.async.impl.ioc_helpers.js +192 -0
- package/cljs.core.async.impl.ioc_helpers.js.map +1 -0
- package/cljs.core.async.impl.protocols.js +368 -0
- package/cljs.core.async.impl.protocols.js.map +1 -0
- package/cljs.core.async.impl.timers.js +510 -0
- package/cljs.core.async.impl.timers.js.map +1 -0
- package/cljs.core.async.js +8813 -0
- package/cljs.core.async.js.map +1 -0
- package/cljs.core.js +38764 -0
- package/cljs.core.js.map +1 -0
- package/cljs.env.js +60 -0
- package/cljs.env.js.map +1 -0
- package/cljs.nodejs.js +80 -0
- package/cljs.nodejs.js.map +1 -0
- package/cljs.reader.js +462 -0
- package/cljs.reader.js.map +1 -0
- package/cljs.spec.alpha.js +5312 -0
- package/cljs.spec.alpha.js.map +1 -0
- package/cljs.spec.gen.alpha.js +2020 -0
- package/cljs.spec.gen.alpha.js.map +1 -0
- package/cljs.tagged_literals.js +103 -0
- package/cljs.tagged_literals.js.map +1 -0
- package/cljs.tools.reader.edn.js +960 -0
- package/cljs.tools.reader.edn.js.map +1 -0
- package/cljs.tools.reader.impl.commons.js +217 -0
- package/cljs.tools.reader.impl.commons.js.map +1 -0
- package/cljs.tools.reader.impl.errors.js +441 -0
- package/cljs.tools.reader.impl.errors.js.map +1 -0
- package/cljs.tools.reader.impl.inspect.js +182 -0
- package/cljs.tools.reader.impl.inspect.js.map +1 -0
- package/cljs.tools.reader.impl.utils.js +429 -0
- package/cljs.tools.reader.impl.utils.js.map +1 -0
- package/cljs.tools.reader.js +1830 -0
- package/cljs.tools.reader.js.map +1 -0
- package/cljs.tools.reader.reader_types.js +838 -0
- package/cljs.tools.reader.reader_types.js.map +1 -0
- package/cljs_env.js +18192 -0
- package/cljs_node_io.core.js +1278 -0
- package/cljs_node_io.core.js.map +1 -0
- package/cljs_node_io.file.js +918 -0
- package/cljs_node_io.file.js.map +1 -0
- package/cljs_node_io.fs.js +3911 -0
- package/cljs_node_io.fs.js.map +1 -0
- package/clojure.data.js +319 -0
- package/clojure.data.js.map +1 -0
- package/clojure.edn.js +119 -0
- package/clojure.edn.js.map +1 -0
- package/clojure.set.js +406 -0
- package/clojure.set.js.map +1 -0
- package/clojure.string.js +502 -0
- package/clojure.string.js.map +1 -0
- package/clojure.walk.js +156 -0
- package/clojure.walk.js.map +1 -0
- package/datahike.api.impl.js +621 -0
- package/datahike.api.impl.js.map +1 -0
- package/datahike.api.specification.js +85 -0
- package/datahike.api.specification.js.map +1 -0
- package/datahike.array.js +275 -0
- package/datahike.array.js.map +1 -0
- package/datahike.config.js +437 -0
- package/datahike.config.js.map +1 -0
- package/datahike.connections.js +55 -0
- package/datahike.connections.js.map +1 -0
- package/datahike.connector.js +1248 -0
- package/datahike.connector.js.map +1 -0
- package/datahike.constants.js +66 -0
- package/datahike.constants.js.map +1 -0
- package/datahike.core.js +628 -0
- package/datahike.core.js.map +1 -0
- package/datahike.datom.js +963 -0
- package/datahike.datom.js.map +1 -0
- package/datahike.db.interface.js +819 -0
- package/datahike.db.interface.js.map +1 -0
- package/datahike.db.js +3095 -0
- package/datahike.db.js.map +1 -0
- package/datahike.db.search.js +1004 -0
- package/datahike.db.search.js.map +1 -0
- package/datahike.db.transaction.js +1904 -0
- package/datahike.db.transaction.js.map +1 -0
- package/datahike.db.utils.js +642 -0
- package/datahike.db.utils.js.map +1 -0
- package/datahike.gc.js +1618 -0
- package/datahike.gc.js.map +1 -0
- package/datahike.impl.entity.js +604 -0
- package/datahike.impl.entity.js.map +1 -0
- package/datahike.index.interface.js +484 -0
- package/datahike.index.interface.js.map +1 -0
- package/datahike.index.js +50 -0
- package/datahike.index.js.map +1 -0
- package/datahike.index.persistent_set.js +1250 -0
- package/datahike.index.persistent_set.js.map +1 -0
- package/datahike.js.api.js +2211 -0
- package/datahike.js.api.js.map +1 -0
- package/datahike.lru.js +404 -0
- package/datahike.lru.js.map +1 -0
- package/datahike.pull_api.js +533 -0
- package/datahike.pull_api.js.map +1 -0
- package/datahike.query.js +11891 -0
- package/datahike.query.js.map +1 -0
- package/datahike.query_stats.js +152 -0
- package/datahike.query_stats.js.map +1 -0
- package/datahike.readers.js +166 -0
- package/datahike.readers.js.map +1 -0
- package/datahike.schema.js +251 -0
- package/datahike.schema.js.map +1 -0
- package/datahike.schema_cache.js +66 -0
- package/datahike.schema_cache.js.map +1 -0
- package/datahike.spec.js +70 -0
- package/datahike.spec.js.map +1 -0
- package/datahike.store.js +514 -0
- package/datahike.store.js.map +1 -0
- package/datahike.tools.js +436 -0
- package/datahike.tools.js.map +1 -0
- package/datahike.writer.js +3463 -0
- package/datahike.writer.js.map +1 -0
- package/datahike.writing.js +3168 -0
- package/datahike.writing.js.map +1 -0
- package/datalog.parser.impl.js +1421 -0
- package/datalog.parser.impl.js.map +1 -0
- package/datalog.parser.impl.proto.js +213 -0
- package/datalog.parser.impl.proto.js.map +1 -0
- package/datalog.parser.impl.util.js +117 -0
- package/datalog.parser.impl.util.js.map +1 -0
- package/datalog.parser.js +47 -0
- package/datalog.parser.js.map +1 -0
- package/datalog.parser.pull.js +2603 -0
- package/datalog.parser.pull.js.map +1 -0
- package/datalog.parser.type.js +7502 -0
- package/datalog.parser.type.js.map +1 -0
- package/datalog.parser.util.js +60 -0
- package/datalog.parser.util.js.map +1 -0
- package/environ.core.js +263 -0
- package/environ.core.js.map +1 -0
- package/fress.api.js +607 -0
- package/fress.api.js.map +1 -0
- package/fress.impl.adler32.js +435 -0
- package/fress.impl.adler32.js.map +1 -0
- package/fress.impl.bigint.js +185 -0
- package/fress.impl.bigint.js.map +1 -0
- package/fress.impl.buffer.js +1087 -0
- package/fress.impl.buffer.js.map +1 -0
- package/fress.impl.codes.js +105 -0
- package/fress.impl.codes.js.map +1 -0
- package/fress.impl.hopmap.js +603 -0
- package/fress.impl.hopmap.js.map +1 -0
- package/fress.impl.ranges.js +49 -0
- package/fress.impl.ranges.js.map +1 -0
- package/fress.impl.raw_input.js +837 -0
- package/fress.impl.raw_input.js.map +1 -0
- package/fress.impl.raw_output.js +653 -0
- package/fress.impl.raw_output.js.map +1 -0
- package/fress.impl.table.js +133 -0
- package/fress.impl.table.js.map +1 -0
- package/fress.reader.js +2312 -0
- package/fress.reader.js.map +1 -0
- package/fress.util.js +458 -0
- package/fress.util.js.map +1 -0
- package/fress.writer.js +2141 -0
- package/fress.writer.js.map +1 -0
- package/geheimnis.aes.js +132 -0
- package/geheimnis.aes.js.map +1 -0
- package/hasch.base64.js +42 -0
- package/hasch.base64.js.map +1 -0
- package/hasch.benc.js +201 -0
- package/hasch.benc.js.map +1 -0
- package/hasch.core.js +188 -0
- package/hasch.core.js.map +1 -0
- package/hasch.platform.js +221 -0
- package/hasch.platform.js.map +1 -0
- package/incognito.base.js +276 -0
- package/incognito.base.js.map +1 -0
- package/incognito.edn.js +54 -0
- package/incognito.edn.js.map +1 -0
- package/incognito.fressian.js +330 -0
- package/incognito.fressian.js.map +1 -0
- package/index.d.ts +660 -0
- package/is.simm.partial_cps.async.js +142 -0
- package/is.simm.partial_cps.async.js.map +1 -0
- package/is.simm.partial_cps.runtime.js +65 -0
- package/is.simm.partial_cps.runtime.js.map +1 -0
- package/is.simm.partial_cps.sequence.js +1255 -0
- package/is.simm.partial_cps.sequence.js.map +1 -0
- package/konserve.cache.js +2519 -0
- package/konserve.cache.js.map +1 -0
- package/konserve.compressor.js +502 -0
- package/konserve.compressor.js.map +1 -0
- package/konserve.core.js +8052 -0
- package/konserve.core.js.map +1 -0
- package/konserve.encryptor.js +553 -0
- package/konserve.encryptor.js.map +1 -0
- package/konserve.gc.js +541 -0
- package/konserve.gc.js.map +1 -0
- package/konserve.impl.defaults.js +8290 -0
- package/konserve.impl.defaults.js.map +1 -0
- package/konserve.impl.storage_layout.js +849 -0
- package/konserve.impl.storage_layout.js.map +1 -0
- package/konserve.memory.js +2102 -0
- package/konserve.memory.js.map +1 -0
- package/konserve.node_filestore.js +2951 -0
- package/konserve.node_filestore.js.map +1 -0
- package/konserve.protocols.js +590 -0
- package/konserve.protocols.js.map +1 -0
- package/konserve.serializers.js +562 -0
- package/konserve.serializers.js.map +1 -0
- package/konserve.store.js +2245 -0
- package/konserve.store.js.map +1 -0
- package/konserve.tiered.js +9574 -0
- package/konserve.tiered.js.map +1 -0
- package/konserve.utils.js +180 -0
- package/konserve.utils.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.arrays.js +66 -0
- package/me.tonsky.persistent_sorted_set.arrays.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.branch.js +2779 -0
- package/me.tonsky.persistent_sorted_set.branch.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.btset.js +14196 -0
- package/me.tonsky.persistent_sorted_set.btset.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.impl.node.js +324 -0
- package/me.tonsky.persistent_sorted_set.impl.node.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.impl.storage.js +123 -0
- package/me.tonsky.persistent_sorted_set.impl.storage.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.js +890 -0
- package/me.tonsky.persistent_sorted_set.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.leaf.js +561 -0
- package/me.tonsky.persistent_sorted_set.leaf.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.util.js +402 -0
- package/me.tonsky.persistent_sorted_set.util.js.map +1 -0
- package/medley.core.js +1857 -0
- package/medley.core.js.map +1 -0
- package/package.json +38 -0
- package/spec_tools.core.js +1925 -0
- package/spec_tools.core.js.map +1 -0
- package/spec_tools.data_spec.js +1291 -0
- package/spec_tools.data_spec.js.map +1 -0
- package/spec_tools.form.js +185 -0
- package/spec_tools.form.js.map +1 -0
- package/spec_tools.impl.js +362 -0
- package/spec_tools.impl.js.map +1 -0
- package/spec_tools.parse.js +427 -0
- package/spec_tools.parse.js.map +1 -0
- package/spec_tools.transform.js +288 -0
- package/spec_tools.transform.js.map +1 -0
- package/superv.async.js +8617 -0
- package/superv.async.js.map +1 -0
- package/tailrecursion.priority_map.js +994 -0
- package/tailrecursion.priority_map.js.map +1 -0
- package/taoensso.encore.js +12385 -0
- package/taoensso.encore.js.map +1 -0
- package/taoensso.timbre.appenders.core.js +239 -0
- package/taoensso.timbre.appenders.core.js.map +1 -0
- package/taoensso.timbre.js +1264 -0
- package/taoensso.timbre.js.map +1 -0
- package/taoensso.truss.impl.js +442 -0
- package/taoensso.truss.impl.js.map +1 -0
- package/taoensso.truss.js +743 -0
- package/taoensso.truss.js.map +1 -0
- package/test-config-keys.js +33 -0
- package/test-final.js +36 -0
- package/test-key-duplication.js +67 -0
- package/test.js +557 -0
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
var $CLJS = require("./cljs_env");
|
|
2
|
+
var $jscomp = $CLJS.$jscomp;
|
|
3
|
+
var COMPILED = false;
|
|
4
|
+
require("./cljs.core.js");
|
|
5
|
+
require("./datahike.db.utils.js");
|
|
6
|
+
require("./datahike.db.interface.js");
|
|
7
|
+
require("./datalog.parser.pull.js");
|
|
8
|
+
var environ=$CLJS.environ || ($CLJS.environ = {});
|
|
9
|
+
var fress=$CLJS.fress || ($CLJS.fress = {});
|
|
10
|
+
var datahike=$CLJS.datahike || ($CLJS.datahike = {});
|
|
11
|
+
var clojure=$CLJS.clojure || ($CLJS.clojure = {});
|
|
12
|
+
var hasch=$CLJS.hasch || ($CLJS.hasch = {});
|
|
13
|
+
var tailrecursion=$CLJS.tailrecursion || ($CLJS.tailrecursion = {});
|
|
14
|
+
var superv=$CLJS.superv || ($CLJS.superv = {});
|
|
15
|
+
var geheimnis=$CLJS.geheimnis || ($CLJS.geheimnis = {});
|
|
16
|
+
var is=$CLJS.is || ($CLJS.is = {});
|
|
17
|
+
var cljs=$CLJS.cljs || ($CLJS.cljs = {});
|
|
18
|
+
var cljs_node_io=$CLJS.cljs_node_io || ($CLJS.cljs_node_io = {});
|
|
19
|
+
var goog=$CLJS.goog || ($CLJS.goog = {});
|
|
20
|
+
var konserve=$CLJS.konserve || ($CLJS.konserve = {});
|
|
21
|
+
var datalog=$CLJS.datalog || ($CLJS.datalog = {});
|
|
22
|
+
var spec_tools=$CLJS.spec_tools || ($CLJS.spec_tools = {});
|
|
23
|
+
var taoensso=$CLJS.taoensso || ($CLJS.taoensso = {});
|
|
24
|
+
var incognito=$CLJS.incognito || ($CLJS.incognito = {});
|
|
25
|
+
var medley=$CLJS.medley || ($CLJS.medley = {});
|
|
26
|
+
var me=$CLJS.me || ($CLJS.me = {});
|
|
27
|
+
|
|
28
|
+
$CLJS.SHADOW_ENV.setLoaded("datahike.pull_api.js");
|
|
29
|
+
|
|
30
|
+
goog.provide('datahike.pull_api');
|
|
31
|
+
datahike.pull_api.into_BANG_ = (function datahike$pull_api$into_BANG_(transient_coll,items){
|
|
32
|
+
return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.conj_BANG_,transient_coll,items);
|
|
33
|
+
});
|
|
34
|
+
datahike.pull_api._PLUS_default_limit_PLUS_ = (1000);
|
|
35
|
+
/**
|
|
36
|
+
* Creates an empty pattern frame according to pattern information.
|
|
37
|
+
*/
|
|
38
|
+
datahike.pull_api.initial_frame = (function datahike$pull_api$initial_frame(pattern,eids,multi_QMARK_){
|
|
39
|
+
return cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"multi?","multi?",-749311069),new cljs.core.Keyword(null,"eids","eids",1546550700),new cljs.core.Keyword(null,"state","state",-1988618099),new cljs.core.Keyword(null,"recursion","recursion",-749738765),new cljs.core.Keyword(null,"specs","specs",1426570741),new cljs.core.Keyword(null,"wildcard?","wildcard?",-686044101),new cljs.core.Keyword(null,"kvps","kvps",65308317),new cljs.core.Keyword(null,"pattern","pattern",242135423),new cljs.core.Keyword(null,"results","results",-1134170113)],[multi_QMARK_,eids,new cljs.core.Keyword(null,"pattern","pattern",242135423),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"depth","depth",1768663640),cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword(null,"seen","seen",-518999789),cljs.core.PersistentHashSet.EMPTY], null),cljs.core.seq(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(pattern)),new cljs.core.Keyword(null,"wildcard?","wildcard?",-686044101).cljs$core$IFn$_invoke$arity$1(pattern),cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY),pattern,cljs.core.transient$(cljs.core.PersistentVector.EMPTY)]);
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* Returns frame specific for given attribute
|
|
43
|
+
*/
|
|
44
|
+
datahike.pull_api.subpattern_frame = (function datahike$pull_api$subpattern_frame(pattern,eids,multi_QMARK_,attr){
|
|
45
|
+
return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(datahike.pull_api.initial_frame(pattern,eids,multi_QMARK_),new cljs.core.Keyword(null,"attr","attr",-604132353),attr);
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* Recalculate frame attributes from frame pattern and transfer end results to frame-specific result section
|
|
49
|
+
*/
|
|
50
|
+
datahike.pull_api.reset_frame = (function datahike$pull_api$reset_frame(frame,eids,kvps){
|
|
51
|
+
var pattern = new cljs.core.Keyword(null,"pattern","pattern",242135423).cljs$core$IFn$_invoke$arity$1(frame);
|
|
52
|
+
return cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(frame,new cljs.core.Keyword(null,"eids","eids",1546550700),eids,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"specs","specs",1426570741),cljs.core.seq(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(pattern)),new cljs.core.Keyword(null,"wildcard?","wildcard?",-686044101),new cljs.core.Keyword(null,"wildcard?","wildcard?",-686044101).cljs$core$IFn$_invoke$arity$1(pattern),new cljs.core.Keyword(null,"kvps","kvps",65308317),cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY),new cljs.core.Keyword(null,"results","results",-1134170113),(function (){var G__112464 = new cljs.core.Keyword(null,"results","results",-1134170113).cljs$core$IFn$_invoke$arity$1(frame);
|
|
53
|
+
if(cljs.core.seq(kvps)){
|
|
54
|
+
return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(G__112464,kvps);
|
|
55
|
+
} else {
|
|
56
|
+
return G__112464;
|
|
57
|
+
}
|
|
58
|
+
})()], 0));
|
|
59
|
+
});
|
|
60
|
+
/**
|
|
61
|
+
* Push newly processed entity and increase recursion depth.
|
|
62
|
+
*/
|
|
63
|
+
datahike.pull_api.push_recursion = (function datahike$pull_api$push_recursion(rec,attr,eid){
|
|
64
|
+
var map__112472 = rec;
|
|
65
|
+
var map__112472__$1 = cljs.core.__destructure_map(map__112472);
|
|
66
|
+
var depth = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__112472__$1,new cljs.core.Keyword(null,"depth","depth",1768663640));
|
|
67
|
+
var seen = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__112472__$1,new cljs.core.Keyword(null,"seen","seen",-518999789));
|
|
68
|
+
return cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(rec,new cljs.core.Keyword(null,"depth","depth",1768663640),cljs.core.update.cljs$core$IFn$_invoke$arity$3(depth,attr,cljs.core.fnil.cljs$core$IFn$_invoke$arity$2(cljs.core.inc,(0))),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"seen","seen",-518999789),cljs.core.conj.cljs$core$IFn$_invoke$arity$2(seen,eid)], 0));
|
|
69
|
+
});
|
|
70
|
+
datahike.pull_api.seen_eid_QMARK_ = (function datahike$pull_api$seen_eid_QMARK_(frame,eid){
|
|
71
|
+
return cljs.core.contains_QMARK_(cljs.core.get_in.cljs$core$IFn$_invoke$arity$3(frame,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"recursion","recursion",-749738765),new cljs.core.Keyword(null,"seen","seen",-518999789)], null),cljs.core.PersistentHashSet.EMPTY),eid);
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* Add eid to result set if entity already seen. Else return nil.
|
|
75
|
+
*/
|
|
76
|
+
datahike.pull_api.pull_seen_eid = (function datahike$pull_api$pull_seen_eid(frame,frames,eid){
|
|
77
|
+
if(datahike.pull_api.seen_eid_QMARK_(frame,eid)){
|
|
78
|
+
return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,cljs.core.update.cljs$core$IFn$_invoke$arity$4(frame,new cljs.core.Keyword(null,"results","results",-1134170113),cljs.core.conj_BANG_,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","id","db/id",-1388397098),eid], null)));
|
|
79
|
+
} else {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
datahike.pull_api.single_frame_result = (function datahike$pull_api$single_frame_result(key,frame){
|
|
84
|
+
var G__112481 = new cljs.core.Keyword(null,"kvps","kvps",65308317).cljs$core$IFn$_invoke$arity$1(frame);
|
|
85
|
+
var G__112481__$1 = (((G__112481 == null))?null:cljs.core.persistent_BANG_(G__112481));
|
|
86
|
+
if((G__112481__$1 == null)){
|
|
87
|
+
return null;
|
|
88
|
+
} else {
|
|
89
|
+
return cljs.core.get.cljs$core$IFn$_invoke$arity$2(G__112481__$1,key);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
datahike.pull_api.recursion_result = (function datahike$pull_api$recursion_result(frame){
|
|
93
|
+
return datahike.pull_api.single_frame_result(new cljs.core.Keyword("datahike.pull-api","recursion","datahike.pull-api/recursion",-1095311814),frame);
|
|
94
|
+
});
|
|
95
|
+
datahike.pull_api.recursion_frame = (function datahike$pull_api$recursion_frame(parent,eid){
|
|
96
|
+
var attr = new cljs.core.Keyword(null,"attr","attr",-604132353).cljs$core$IFn$_invoke$arity$1(parent);
|
|
97
|
+
var rec = datahike.pull_api.push_recursion(new cljs.core.Keyword(null,"recursion","recursion",-749738765).cljs$core$IFn$_invoke$arity$1(parent),attr,eid);
|
|
98
|
+
return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(datahike.pull_api.subpattern_frame(new cljs.core.Keyword(null,"pattern","pattern",242135423).cljs$core$IFn$_invoke$arity$1(parent),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid], null),false,new cljs.core.Keyword("datahike.pull-api","recursion","datahike.pull-api/recursion",-1095311814)),new cljs.core.Keyword(null,"recursion","recursion",-749738765),rec);
|
|
99
|
+
});
|
|
100
|
+
/**
|
|
101
|
+
* Processes recursion for one entity ID or collects results.
|
|
102
|
+
* Replaces current frame with
|
|
103
|
+
* - one frame with remaining entiy IDs and
|
|
104
|
+
* - one subpattern frame
|
|
105
|
+
*/
|
|
106
|
+
datahike.pull_api.pull_recursion_frame = (function datahike$pull_api$pull_recursion_frame(db,p__112491){
|
|
107
|
+
var vec__112492 = p__112491;
|
|
108
|
+
var seq__112493 = cljs.core.seq(vec__112492);
|
|
109
|
+
var first__112494 = cljs.core.first(seq__112493);
|
|
110
|
+
var seq__112493__$1 = cljs.core.next(seq__112493);
|
|
111
|
+
var frame = first__112494;
|
|
112
|
+
var frames = seq__112493__$1;
|
|
113
|
+
var temp__5802__auto__ = cljs.core.seq(new cljs.core.Keyword(null,"eids","eids",1546550700).cljs$core$IFn$_invoke$arity$1(frame));
|
|
114
|
+
if(temp__5802__auto__){
|
|
115
|
+
var eids = temp__5802__auto__;
|
|
116
|
+
var frame__$1 = datahike.pull_api.reset_frame(frame,cljs.core.rest(eids),datahike.pull_api.recursion_result(frame));
|
|
117
|
+
var eid = cljs.core.first(eids);
|
|
118
|
+
var or__5002__auto__ = datahike.pull_api.pull_seen_eid(frame__$1,frames,eid);
|
|
119
|
+
if(cljs.core.truth_(or__5002__auto__)){
|
|
120
|
+
return or__5002__auto__;
|
|
121
|
+
} else {
|
|
122
|
+
return cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,frame__$1,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datahike.pull_api.recursion_frame(frame__$1,eid)], 0));
|
|
123
|
+
}
|
|
124
|
+
} else {
|
|
125
|
+
var kvps = datahike.pull_api.recursion_result(frame);
|
|
126
|
+
var results = (function (){var G__112497 = new cljs.core.Keyword(null,"results","results",-1134170113).cljs$core$IFn$_invoke$arity$1(frame);
|
|
127
|
+
if(cljs.core.seq(kvps)){
|
|
128
|
+
return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(G__112497,kvps);
|
|
129
|
+
} else {
|
|
130
|
+
return G__112497;
|
|
131
|
+
}
|
|
132
|
+
})();
|
|
133
|
+
return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(frame,new cljs.core.Keyword(null,"state","state",-1988618099),new cljs.core.Keyword(null,"done","done",-889844188),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"results","results",-1134170113),results], 0)));
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
/**
|
|
137
|
+
* Adds recursion frame to frame set if maximum recursion depth not reached
|
|
138
|
+
*/
|
|
139
|
+
datahike.pull_api.recurse_attr = (function datahike$pull_api$recurse_attr(db,attr,multi_QMARK_,eids,eid,parent,frames){
|
|
140
|
+
var map__112500 = parent;
|
|
141
|
+
var map__112500__$1 = cljs.core.__destructure_map(map__112500);
|
|
142
|
+
var recursion = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__112500__$1,new cljs.core.Keyword(null,"recursion","recursion",-749738765));
|
|
143
|
+
var pattern = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__112500__$1,new cljs.core.Keyword(null,"pattern","pattern",242135423));
|
|
144
|
+
var depth = cljs.core.get.cljs$core$IFn$_invoke$arity$3(cljs.core.get.cljs$core$IFn$_invoke$arity$2(recursion,new cljs.core.Keyword(null,"depth","depth",1768663640)),attr,(0));
|
|
145
|
+
if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"recursion","recursion",-749738765).cljs$core$IFn$_invoke$arity$1(cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(pattern),attr)),depth)){
|
|
146
|
+
return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,parent);
|
|
147
|
+
} else {
|
|
148
|
+
return datahike.pull_api.pull_recursion_frame(db,cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,parent,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentArrayMap(null, 7, [new cljs.core.Keyword(null,"state","state",-1988618099),new cljs.core.Keyword(null,"recursion","recursion",-749738765),new cljs.core.Keyword(null,"pattern","pattern",242135423),pattern,new cljs.core.Keyword(null,"attr","attr",-604132353),attr,new cljs.core.Keyword(null,"multi?","multi?",-749311069),multi_QMARK_,new cljs.core.Keyword(null,"eids","eids",1546550700),eids,new cljs.core.Keyword(null,"recursion","recursion",-749738765),recursion,new cljs.core.Keyword(null,"results","results",-1134170113),cljs.core.transient$(cljs.core.PersistentVector.EMPTY)], null)], 0)));
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
var pattern_112651 = (new datalog.parser.pull.PullSpec(true,cljs.core.PersistentArrayMap.EMPTY,null,null,null));
|
|
152
|
+
datahike.pull_api.expand_frame = (function datahike$pull_api$expand_frame(parent,eid,attr_key,multi_QMARK_,eids){
|
|
153
|
+
var rec = datahike.pull_api.push_recursion(new cljs.core.Keyword(null,"recursion","recursion",-749738765).cljs$core$IFn$_invoke$arity$1(parent),attr_key,eid);
|
|
154
|
+
return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(datahike.pull_api.subpattern_frame(pattern_112651,eids,multi_QMARK_,attr_key),new cljs.core.Keyword(null,"recursion","recursion",-749738765),rec);
|
|
155
|
+
});
|
|
156
|
+
datahike.pull_api.db_ident_and_id = (function datahike$pull_api$db_ident_and_id(db,x){
|
|
157
|
+
var map__112511 = datahike.db.utils.attr_info(db,x);
|
|
158
|
+
var map__112511__$1 = cljs.core.__destructure_map(map__112511);
|
|
159
|
+
var ident = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__112511__$1,new cljs.core.Keyword(null,"ident","ident",-742346));
|
|
160
|
+
var ref = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__112511__$1,new cljs.core.Keyword(null,"ref","ref",1289896967));
|
|
161
|
+
if(datahike.db.utils.ident_name_QMARK_(ident)){
|
|
162
|
+
return new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword("db","id","db/id",-1388397098),ref,new cljs.core.Keyword("db","ident","db/ident",-737096),ident], null);
|
|
163
|
+
} else {
|
|
164
|
+
return new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","id","db/id",-1388397098),ref], null);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
/**
|
|
168
|
+
* Processes datoms found to requested pattern for given attribute, i.e.
|
|
169
|
+
* - limits the result set to specified or default limit,
|
|
170
|
+
* - renames attribute key if requested,
|
|
171
|
+
* - adds default value on missing attributes if requested.
|
|
172
|
+
* Adds frame if
|
|
173
|
+
* - subpattern requested on attribute,
|
|
174
|
+
* - recursion requested,
|
|
175
|
+
* - attribute is reference.
|
|
176
|
+
* Returns frame set.
|
|
177
|
+
*/
|
|
178
|
+
datahike.pull_api.pull_attr_datoms = (function datahike$pull_api$pull_attr_datoms(db,attr_key,attr,eid,forward_QMARK_,datoms,opts,p__112514){
|
|
179
|
+
var vec__112515 = p__112514;
|
|
180
|
+
var seq__112516 = cljs.core.seq(vec__112515);
|
|
181
|
+
var first__112517 = cljs.core.first(seq__112516);
|
|
182
|
+
var seq__112516__$1 = cljs.core.next(seq__112516);
|
|
183
|
+
var parent = first__112517;
|
|
184
|
+
var frames = seq__112516__$1;
|
|
185
|
+
var limit = cljs.core.get.cljs$core$IFn$_invoke$arity$3(opts,new cljs.core.Keyword(null,"limit","limit",-1355822363),(1000));
|
|
186
|
+
var attr_key__$1 = (function (){var or__5002__auto__ = new cljs.core.Keyword(null,"as","as",1148689641).cljs$core$IFn$_invoke$arity$1(opts);
|
|
187
|
+
if(cljs.core.truth_(or__5002__auto__)){
|
|
188
|
+
return or__5002__auto__;
|
|
189
|
+
} else {
|
|
190
|
+
return attr_key;
|
|
191
|
+
}
|
|
192
|
+
})();
|
|
193
|
+
var found = cljs.core.not_empty((function (){var G__112522 = datoms;
|
|
194
|
+
if(cljs.core.truth_(limit)){
|
|
195
|
+
return cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentVector.EMPTY,cljs.core.take.cljs$core$IFn$_invoke$arity$1(limit),G__112522);
|
|
196
|
+
} else {
|
|
197
|
+
return G__112522;
|
|
198
|
+
}
|
|
199
|
+
})());
|
|
200
|
+
if(cljs.core.truth_(found)){
|
|
201
|
+
var ref_QMARK_ = datahike.db.utils.ref_QMARK_(db,attr);
|
|
202
|
+
var system_attrib_ref_QMARK_ = datahike.db.utils.system_attrib_ref_QMARK_(db,attr);
|
|
203
|
+
var component_QMARK_ = ((ref_QMARK_) && (datahike.db.utils.component_QMARK_(db,attr)));
|
|
204
|
+
var multi_QMARK_ = (cljs.core.truth_(forward_QMARK_)?datahike.db.utils.multival_QMARK_(db,attr):(!(component_QMARK_)));
|
|
205
|
+
var datom_val = (cljs.core.truth_(forward_QMARK_)?(function (d){
|
|
206
|
+
return d.v;
|
|
207
|
+
}):(function (d){
|
|
208
|
+
return d.e;
|
|
209
|
+
}));
|
|
210
|
+
if(cljs.core.contains_QMARK_(opts,new cljs.core.Keyword(null,"subpattern","subpattern",45002743))){
|
|
211
|
+
return cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,parent,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datahike.pull_api.subpattern_frame(new cljs.core.Keyword(null,"subpattern","subpattern",45002743).cljs$core$IFn$_invoke$arity$1(opts),cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(datom_val,found),multi_QMARK_,attr_key__$1)], 0));
|
|
212
|
+
} else {
|
|
213
|
+
if(cljs.core.contains_QMARK_(opts,new cljs.core.Keyword(null,"recursion","recursion",-749738765))){
|
|
214
|
+
return datahike.pull_api.recurse_attr(db,attr_key__$1,multi_QMARK_,cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(datom_val,found),eid,parent,frames);
|
|
215
|
+
} else {
|
|
216
|
+
if(cljs.core.truth_((function (){var and__5000__auto__ = component_QMARK_;
|
|
217
|
+
if(and__5000__auto__){
|
|
218
|
+
return forward_QMARK_;
|
|
219
|
+
} else {
|
|
220
|
+
return and__5000__auto__;
|
|
221
|
+
}
|
|
222
|
+
})())){
|
|
223
|
+
return cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,parent,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datahike.pull_api.expand_frame(parent,eid,attr_key__$1,multi_QMARK_,cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(datom_val,found))], 0));
|
|
224
|
+
} else {
|
|
225
|
+
var as_value = ((((ref_QMARK_) || (system_attrib_ref_QMARK_)))?(function (p1__112512_SHARP_){
|
|
226
|
+
return datahike.pull_api.db_ident_and_id(db,datom_val(p1__112512_SHARP_));
|
|
227
|
+
}):datom_val);
|
|
228
|
+
var single_QMARK_ = (!(multi_QMARK_));
|
|
229
|
+
return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,cljs.core.update.cljs$core$IFn$_invoke$arity$5(parent,new cljs.core.Keyword(null,"kvps","kvps",65308317),cljs.core.assoc_BANG_,attr_key__$1,(function (){var G__112532 = cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentVector.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$1(as_value),found);
|
|
230
|
+
if(single_QMARK_){
|
|
231
|
+
return cljs.core.first(G__112532);
|
|
232
|
+
} else {
|
|
233
|
+
return G__112532;
|
|
234
|
+
}
|
|
235
|
+
})()));
|
|
236
|
+
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
} else {
|
|
241
|
+
return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,(function (){var G__112533 = parent;
|
|
242
|
+
if(cljs.core.contains_QMARK_(opts,new cljs.core.Keyword(null,"default","default",-1987822328))){
|
|
243
|
+
return cljs.core.update.cljs$core$IFn$_invoke$arity$5(G__112533,new cljs.core.Keyword(null,"kvps","kvps",65308317),cljs.core.assoc_BANG_,attr_key__$1,new cljs.core.Keyword(null,"default","default",-1987822328).cljs$core$IFn$_invoke$arity$1(opts));
|
|
244
|
+
} else {
|
|
245
|
+
return G__112533;
|
|
246
|
+
}
|
|
247
|
+
})());
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
/**
|
|
251
|
+
* Retrieve datoms for given entity id and specification from database
|
|
252
|
+
*/
|
|
253
|
+
datahike.pull_api.pull_attr = (function datahike$pull_api$pull_attr(db,spec,eid,frames){
|
|
254
|
+
var vec__112537 = spec;
|
|
255
|
+
var attr_key = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__112537,(0),null);
|
|
256
|
+
var opts = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__112537,(1),null);
|
|
257
|
+
if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword("db","id","db/id",-1388397098),attr_key)){
|
|
258
|
+
if(cljs.core.truth_(cljs.core.not_empty(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, [eid], null))))){
|
|
259
|
+
return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.rest(frames),cljs.core.update.cljs$core$IFn$_invoke$arity$5(cljs.core.first(frames),new cljs.core.Keyword(null,"kvps","kvps",65308317),cljs.core.assoc_BANG_,new cljs.core.Keyword("db","id","db/id",-1388397098),eid));
|
|
260
|
+
} else {
|
|
261
|
+
return frames;
|
|
262
|
+
}
|
|
263
|
+
} else {
|
|
264
|
+
var attr = new cljs.core.Keyword(null,"attr","attr",-604132353).cljs$core$IFn$_invoke$arity$1(opts);
|
|
265
|
+
var forward_QMARK_ = cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(attr_key,attr);
|
|
266
|
+
var a = (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));
|
|
267
|
+
if(cljs.core.truth_(and__5000__auto__)){
|
|
268
|
+
return (!(typeof attr === 'number'));
|
|
269
|
+
} else {
|
|
270
|
+
return and__5000__auto__;
|
|
271
|
+
}
|
|
272
|
+
})())?datahike.db.interface$._ref_for(db,attr):attr);
|
|
273
|
+
var results = (((a == null))?cljs.core.PersistentVector.EMPTY:((forward_QMARK_)?datahike.db.interface$.datoms(db,new cljs.core.Keyword(null,"eavt","eavt",-666437073),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid,a], null)):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, [a,eid], null))));
|
|
274
|
+
return datahike.pull_api.pull_attr_datoms(db,attr_key,attr,eid,forward_QMARK_,results,opts,frames);
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
datahike.pull_api.filter_reverse_attrs = cljs.core.filter.cljs$core$IFn$_invoke$arity$1((function (p__112544){
|
|
278
|
+
var vec__112545 = p__112544;
|
|
279
|
+
var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__112545,(0),null);
|
|
280
|
+
var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__112545,(1),null);
|
|
281
|
+
return cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(k,new cljs.core.Keyword(null,"attr","attr",-604132353).cljs$core$IFn$_invoke$arity$1(v));
|
|
282
|
+
}));
|
|
283
|
+
datahike.pull_api.expand_reverse_subpattern_frame = (function datahike$pull_api$expand_reverse_subpattern_frame(parent,eid,rattrs){
|
|
284
|
+
return datahike.pull_api.subpattern_frame(cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(new cljs.core.Keyword(null,"pattern","pattern",242135423).cljs$core$IFn$_invoke$arity$1(parent),new cljs.core.Keyword(null,"attrs","attrs",-2090668713),rattrs,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"wildcard?","wildcard?",-686044101),false], 0)),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid], null),false,new cljs.core.Keyword("datahike.pull-api","expand-rev","datahike.pull-api/expand-rev",1335028467));
|
|
285
|
+
});
|
|
286
|
+
/**
|
|
287
|
+
* Add intermediate result to frame next in line. Return frame set.
|
|
288
|
+
*/
|
|
289
|
+
datahike.pull_api.expand_result = (function datahike$pull_api$expand_result(frames,kvps){
|
|
290
|
+
return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.rest(frames),cljs.core.update.cljs$core$IFn$_invoke$arity$4(cljs.core.first(frames),new cljs.core.Keyword(null,"kvps","kvps",65308317),datahike.pull_api.into_BANG_,cljs.core.persistent_BANG_(kvps)));
|
|
291
|
+
});
|
|
292
|
+
/**
|
|
293
|
+
* Adds expand results of current frame to next frame in frame set.
|
|
294
|
+
*/
|
|
295
|
+
datahike.pull_api.pull_expand_reverse_frame = (function datahike$pull_api$pull_expand_reverse_frame(db,p__112548){
|
|
296
|
+
var vec__112549 = p__112548;
|
|
297
|
+
var seq__112550 = cljs.core.seq(vec__112549);
|
|
298
|
+
var first__112551 = cljs.core.first(seq__112550);
|
|
299
|
+
var seq__112550__$1 = cljs.core.next(seq__112550);
|
|
300
|
+
var frame = first__112551;
|
|
301
|
+
var frames = seq__112550__$1;
|
|
302
|
+
return datahike.pull_api.expand_result(frames,datahike.pull_api.into_BANG_(new cljs.core.Keyword(null,"expand-kvps","expand-kvps",44141154).cljs$core$IFn$_invoke$arity$1(frame),(function (){var or__5002__auto__ = datahike.pull_api.single_frame_result(new cljs.core.Keyword("datahike.pull-api","expand-rev","datahike.pull-api/expand-rev",1335028467),frame);
|
|
303
|
+
if(cljs.core.truth_(or__5002__auto__)){
|
|
304
|
+
return or__5002__auto__;
|
|
305
|
+
} else {
|
|
306
|
+
return cljs.core.PersistentArrayMap.EMPTY;
|
|
307
|
+
}
|
|
308
|
+
})()));
|
|
309
|
+
});
|
|
310
|
+
/**
|
|
311
|
+
* Processes datoms for one attribute or changes frame state to process reverse attributes
|
|
312
|
+
* and spawns new frame for subpattern.
|
|
313
|
+
*/
|
|
314
|
+
datahike.pull_api.pull_expand_frame = (function datahike$pull_api$pull_expand_frame(db,p__112553){
|
|
315
|
+
var vec__112554 = p__112553;
|
|
316
|
+
var seq__112555 = cljs.core.seq(vec__112554);
|
|
317
|
+
var first__112556 = cljs.core.first(seq__112555);
|
|
318
|
+
var seq__112555__$1 = cljs.core.next(seq__112555);
|
|
319
|
+
var frame = first__112556;
|
|
320
|
+
var frames = seq__112555__$1;
|
|
321
|
+
var temp__5802__auto__ = cljs.core.seq(new cljs.core.Keyword(null,"datoms","datoms",-290874434).cljs$core$IFn$_invoke$arity$1(frame));
|
|
322
|
+
if(temp__5802__auto__){
|
|
323
|
+
var datoms_by_attr = temp__5802__auto__;
|
|
324
|
+
var vec__112565 = cljs.core.first(datoms_by_attr);
|
|
325
|
+
var attr = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__112565,(0),null);
|
|
326
|
+
var datoms = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__112565,(1),null);
|
|
327
|
+
var opts = cljs.core.get.cljs$core$IFn$_invoke$arity$3(cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(frame,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"pattern","pattern",242135423),new cljs.core.Keyword(null,"attrs","attrs",-2090668713)], null)),attr,cljs.core.PersistentArrayMap.EMPTY);
|
|
328
|
+
return datahike.pull_api.pull_attr_datoms(db,attr,attr,new cljs.core.Keyword(null,"eid","eid",559519930).cljs$core$IFn$_invoke$arity$1(frame),true,datoms,opts,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,cljs.core.update.cljs$core$IFn$_invoke$arity$3(frame,new cljs.core.Keyword(null,"datoms","datoms",-290874434),cljs.core.rest)));
|
|
329
|
+
} else {
|
|
330
|
+
var temp__5802__auto____$1 = cljs.core.not_empty(cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentArrayMap.EMPTY,datahike.pull_api.filter_reverse_attrs,cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(frame,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"pattern","pattern",242135423),new cljs.core.Keyword(null,"attrs","attrs",-2090668713)], null))));
|
|
331
|
+
if(cljs.core.truth_(temp__5802__auto____$1)){
|
|
332
|
+
var rattrs = temp__5802__auto____$1;
|
|
333
|
+
var frame__$1 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(frame,new cljs.core.Keyword(null,"state","state",-1988618099),new cljs.core.Keyword(null,"expand-rev","expand-rev",1249112650),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"expand-kvps","expand-kvps",44141154),new cljs.core.Keyword(null,"kvps","kvps",65308317).cljs$core$IFn$_invoke$arity$1(frame),new cljs.core.Keyword(null,"kvps","kvps",65308317),cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY)], 0));
|
|
334
|
+
return cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,frame__$1,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datahike.pull_api.expand_reverse_subpattern_frame(frame__$1,new cljs.core.Keyword(null,"eid","eid",559519930).cljs$core$IFn$_invoke$arity$1(frame__$1),rattrs)], 0));
|
|
335
|
+
} else {
|
|
336
|
+
return datahike.pull_api.expand_result(frames,new cljs.core.Keyword(null,"kvps","kvps",65308317).cljs$core$IFn$_invoke$arity$1(frame));
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
datahike.pull_api.pull_wildcard_expand = (function datahike$pull_api$pull_wildcard_expand(db,frame,frames,eid,pattern){
|
|
341
|
+
var datoms = cljs.core.group_by((function (d){
|
|
342
|
+
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)))){
|
|
343
|
+
return datahike.db.interface$._ident_for(db,d.a);
|
|
344
|
+
} else {
|
|
345
|
+
return d.a;
|
|
346
|
+
}
|
|
347
|
+
}),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, [eid], null)));
|
|
348
|
+
var map__112573 = frame;
|
|
349
|
+
var map__112573__$1 = cljs.core.__destructure_map(map__112573);
|
|
350
|
+
var attr = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__112573__$1,new cljs.core.Keyword(null,"attr","attr",-604132353));
|
|
351
|
+
var recursion = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__112573__$1,new cljs.core.Keyword(null,"recursion","recursion",-749738765));
|
|
352
|
+
var rec = (function (){var G__112578 = recursion;
|
|
353
|
+
if((!((attr == null)))){
|
|
354
|
+
return datahike.pull_api.push_recursion(G__112578,attr,eid);
|
|
355
|
+
} else {
|
|
356
|
+
return G__112578;
|
|
357
|
+
}
|
|
358
|
+
})();
|
|
359
|
+
return datahike.pull_api.pull_expand_frame(db,cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,frame,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Keyword(null,"state","state",-1988618099),new cljs.core.Keyword(null,"expand","expand",595248157),new cljs.core.Keyword(null,"kvps","kvps",65308317),cljs.core.transient$(new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","id","db/id",-1388397098),eid], null)),new cljs.core.Keyword(null,"eid","eid",559519930),eid,new cljs.core.Keyword(null,"pattern","pattern",242135423),pattern,new cljs.core.Keyword(null,"datoms","datoms",-290874434),cljs.core.seq(datoms),new cljs.core.Keyword(null,"recursion","recursion",-749738765),rec], null)], 0)));
|
|
360
|
+
});
|
|
361
|
+
datahike.pull_api.pull_wildcard = (function datahike$pull_api$pull_wildcard(db,frame,frames){
|
|
362
|
+
var map__112583 = frame;
|
|
363
|
+
var map__112583__$1 = cljs.core.__destructure_map(map__112583);
|
|
364
|
+
var eid = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__112583__$1,new cljs.core.Keyword(null,"eid","eid",559519930));
|
|
365
|
+
var pattern = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__112583__$1,new cljs.core.Keyword(null,"pattern","pattern",242135423));
|
|
366
|
+
var or__5002__auto__ = datahike.pull_api.pull_seen_eid(frame,frames,eid);
|
|
367
|
+
if(cljs.core.truth_(or__5002__auto__)){
|
|
368
|
+
return or__5002__auto__;
|
|
369
|
+
} else {
|
|
370
|
+
return datahike.pull_api.pull_wildcard_expand(db,frame,frames,eid,pattern);
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
datahike.pull_api.pull_pattern_frame = (function datahike$pull_api$pull_pattern_frame(db,p__112588){
|
|
374
|
+
while(true){
|
|
375
|
+
var vec__112589 = p__112588;
|
|
376
|
+
var seq__112590 = cljs.core.seq(vec__112589);
|
|
377
|
+
var first__112591 = cljs.core.first(seq__112590);
|
|
378
|
+
var seq__112590__$1 = cljs.core.next(seq__112590);
|
|
379
|
+
var frame = first__112591;
|
|
380
|
+
var frames = seq__112590__$1;
|
|
381
|
+
var temp__5802__auto__ = cljs.core.seq(new cljs.core.Keyword(null,"eids","eids",1546550700).cljs$core$IFn$_invoke$arity$1(frame));
|
|
382
|
+
if(temp__5802__auto__){
|
|
383
|
+
var eids = temp__5802__auto__;
|
|
384
|
+
if(cljs.core.truth_(new cljs.core.Keyword(null,"wildcard?","wildcard?",-686044101).cljs$core$IFn$_invoke$arity$1(frame))){
|
|
385
|
+
return datahike.pull_api.pull_wildcard(db,cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(frame,new cljs.core.Keyword(null,"specs","specs",1426570741),cljs.core.PersistentVector.EMPTY,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"eid","eid",559519930),cljs.core.first(eids),new cljs.core.Keyword(null,"wildcard?","wildcard?",-686044101),false], 0)),frames);
|
|
386
|
+
} else {
|
|
387
|
+
var temp__5802__auto____$1 = cljs.core.seq(new cljs.core.Keyword(null,"specs","specs",1426570741).cljs$core$IFn$_invoke$arity$1(frame));
|
|
388
|
+
if(temp__5802__auto____$1){
|
|
389
|
+
var specs = temp__5802__auto____$1;
|
|
390
|
+
var spec = cljs.core.first(specs);
|
|
391
|
+
var new_frames = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(frame,new cljs.core.Keyword(null,"specs","specs",1426570741),cljs.core.rest(specs)));
|
|
392
|
+
return datahike.pull_api.pull_attr(db,spec,cljs.core.first(eids),new_frames);
|
|
393
|
+
} else {
|
|
394
|
+
var G__112670 = db;
|
|
395
|
+
var G__112671 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,datahike.pull_api.reset_frame(frame,cljs.core.rest(eids),cljs.core.not_empty(cljs.core.persistent_BANG_(new cljs.core.Keyword(null,"kvps","kvps",65308317).cljs$core$IFn$_invoke$arity$1(frame)))));
|
|
396
|
+
db = G__112670;
|
|
397
|
+
p__112588 = G__112671;
|
|
398
|
+
continue;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
} else {
|
|
402
|
+
return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(frame,new cljs.core.Keyword(null,"state","state",-1988618099),new cljs.core.Keyword(null,"done","done",-889844188)));
|
|
403
|
+
}
|
|
404
|
+
break;
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
datahike.pull_api.pull_pattern = (function datahike$pull_api$pull_pattern(db,frames){
|
|
408
|
+
while(true){
|
|
409
|
+
var G__112596 = new cljs.core.Keyword(null,"state","state",-1988618099).cljs$core$IFn$_invoke$arity$1(cljs.core.first(frames));
|
|
410
|
+
var G__112596__$1 = (((G__112596 instanceof cljs.core.Keyword))?G__112596.fqn:null);
|
|
411
|
+
switch (G__112596__$1) {
|
|
412
|
+
case "expand":
|
|
413
|
+
var G__112673 = db;
|
|
414
|
+
var G__112674 = datahike.pull_api.pull_expand_frame(db,frames);
|
|
415
|
+
db = G__112673;
|
|
416
|
+
frames = G__112674;
|
|
417
|
+
continue;
|
|
418
|
+
|
|
419
|
+
break;
|
|
420
|
+
case "expand-rev":
|
|
421
|
+
var G__112675 = db;
|
|
422
|
+
var G__112676 = datahike.pull_api.pull_expand_reverse_frame(db,frames);
|
|
423
|
+
db = G__112675;
|
|
424
|
+
frames = G__112676;
|
|
425
|
+
continue;
|
|
426
|
+
|
|
427
|
+
break;
|
|
428
|
+
case "pattern":
|
|
429
|
+
var G__112677 = db;
|
|
430
|
+
var G__112678 = datahike.pull_api.pull_pattern_frame(db,frames);
|
|
431
|
+
db = G__112677;
|
|
432
|
+
frames = G__112678;
|
|
433
|
+
continue;
|
|
434
|
+
|
|
435
|
+
break;
|
|
436
|
+
case "recursion":
|
|
437
|
+
var G__112679 = db;
|
|
438
|
+
var G__112680 = datahike.pull_api.pull_recursion_frame(db,frames);
|
|
439
|
+
db = G__112679;
|
|
440
|
+
frames = G__112680;
|
|
441
|
+
continue;
|
|
442
|
+
|
|
443
|
+
break;
|
|
444
|
+
case "done":
|
|
445
|
+
var vec__112601 = frames;
|
|
446
|
+
var seq__112602 = cljs.core.seq(vec__112601);
|
|
447
|
+
var first__112603 = cljs.core.first(seq__112602);
|
|
448
|
+
var seq__112602__$1 = cljs.core.next(seq__112602);
|
|
449
|
+
var f = first__112603;
|
|
450
|
+
var remaining = seq__112602__$1;
|
|
451
|
+
var result = (function (){var G__112605 = cljs.core.persistent_BANG_(new cljs.core.Keyword(null,"results","results",-1134170113).cljs$core$IFn$_invoke$arity$1(f));
|
|
452
|
+
if(cljs.core.not(new cljs.core.Keyword(null,"multi?","multi?",-749311069).cljs$core$IFn$_invoke$arity$1(f))){
|
|
453
|
+
return cljs.core.first(G__112605);
|
|
454
|
+
} else {
|
|
455
|
+
return G__112605;
|
|
456
|
+
}
|
|
457
|
+
})();
|
|
458
|
+
if(cljs.core.seq(remaining)){
|
|
459
|
+
var G__112682 = db;
|
|
460
|
+
var G__112683 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.rest(remaining),(function (){var G__112610 = cljs.core.first(remaining);
|
|
461
|
+
if(cljs.core.truth_(result)){
|
|
462
|
+
return cljs.core.update.cljs$core$IFn$_invoke$arity$5(G__112610,new cljs.core.Keyword(null,"kvps","kvps",65308317),cljs.core.assoc_BANG_,new cljs.core.Keyword(null,"attr","attr",-604132353).cljs$core$IFn$_invoke$arity$1(f),result);
|
|
463
|
+
} else {
|
|
464
|
+
return G__112610;
|
|
465
|
+
}
|
|
466
|
+
})());
|
|
467
|
+
db = G__112682;
|
|
468
|
+
frames = G__112683;
|
|
469
|
+
continue;
|
|
470
|
+
} else {
|
|
471
|
+
return result;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
break;
|
|
475
|
+
default:
|
|
476
|
+
throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__112596__$1)].join('')));
|
|
477
|
+
|
|
478
|
+
}
|
|
479
|
+
break;
|
|
480
|
+
}
|
|
481
|
+
});
|
|
482
|
+
datahike.pull_api.pull_spec = (function datahike$pull_api$pull_spec(db,pattern,eids,multi_QMARK_){
|
|
483
|
+
var eids__$1 = cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentVector.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$1((function (p1__112617_SHARP_){
|
|
484
|
+
return datahike.db.utils.entid_strict.cljs$core$IFn$_invoke$arity$2(db,p1__112617_SHARP_);
|
|
485
|
+
})),eids);
|
|
486
|
+
return datahike.pull_api.pull_pattern(db,(new cljs.core.List(null,datahike.pull_api.initial_frame(pattern,eids__$1,multi_QMARK_),null,(1),null)));
|
|
487
|
+
});
|
|
488
|
+
datahike.pull_api.pull = (function datahike$pull_api$pull(var_args){
|
|
489
|
+
var G__112623 = arguments.length;
|
|
490
|
+
switch (G__112623) {
|
|
491
|
+
case 2:
|
|
492
|
+
return datahike.pull_api.pull.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
|
493
|
+
|
|
494
|
+
break;
|
|
495
|
+
case 3:
|
|
496
|
+
return datahike.pull_api.pull.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
|
|
497
|
+
|
|
498
|
+
break;
|
|
499
|
+
default:
|
|
500
|
+
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
|
501
|
+
|
|
502
|
+
}
|
|
503
|
+
});
|
|
504
|
+
|
|
505
|
+
(datahike.pull_api.pull.cljs$core$IFn$_invoke$arity$2 = (function (db,p__112627){
|
|
506
|
+
var map__112628 = p__112627;
|
|
507
|
+
var map__112628__$1 = cljs.core.__destructure_map(map__112628);
|
|
508
|
+
var selector = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__112628__$1,new cljs.core.Keyword(null,"selector","selector",762528866));
|
|
509
|
+
var eid = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__112628__$1,new cljs.core.Keyword(null,"eid","eid",559519930));
|
|
510
|
+
return datahike.pull_api.pull.cljs$core$IFn$_invoke$arity$3(db,selector,eid);
|
|
511
|
+
}));
|
|
512
|
+
|
|
513
|
+
(datahike.pull_api.pull.cljs$core$IFn$_invoke$arity$3 = (function (db,selector,eid){
|
|
514
|
+
if(datahike.db.utils.db_QMARK_(db)){
|
|
515
|
+
} else {
|
|
516
|
+
throw (new Error("Assert failed: (dbu/db? db)"));
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
return datahike.pull_api.pull_spec(db,datalog.parser.pull.parse_pull(selector),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid], null),false);
|
|
520
|
+
}));
|
|
521
|
+
|
|
522
|
+
(datahike.pull_api.pull.cljs$lang$maxFixedArity = 3);
|
|
523
|
+
|
|
524
|
+
datahike.pull_api.pull_many = (function datahike$pull_api$pull_many(db,selector,eids){
|
|
525
|
+
if(datahike.db.utils.db_QMARK_(db)){
|
|
526
|
+
} else {
|
|
527
|
+
throw (new Error("Assert failed: (dbu/db? db)"));
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
return datahike.pull_api.pull_spec(db,datalog.parser.pull.parse_pull(selector),eids,true);
|
|
531
|
+
});
|
|
532
|
+
|
|
533
|
+
//# sourceMappingURL=datahike.pull_api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["datahike/pull_api.cljc"],"mappings":"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","names":["datahike.pull-api/into!","transient-coll","items","cljs.core.reduce","cljs.core/conj!","datahike.pull-api/+default-limit+","datahike.pull-api/initial-frame","pattern","eids","multi?","cljs.core/seq","cljs.core/transient","datahike.pull-api/subpattern-frame","attr","cljs.core.assoc","datahike.pull-api/reset-frame","frame","kvps","G__112464","cljs.core.conj_BANG_","datahike.pull-api/push-recursion","rec","eid","map__112472","cljs.core/--destructure-map","cljs.core.get","depth","seen","cljs.core.update","cljs.core.fnil","cljs.core/inc","cljs.core.conj","datahike.pull-api/seen-eid?","cljs.core.get_in","cljs.core/contains?","datahike.pull-api/pull-seen-eid","frames","datahike.pull-api/single-frame-result","key","G__112481","cljs.core/persistent!","datahike.pull-api/recursion-result","datahike.pull-api/recursion-frame","parent","p__112491","vec__112492","seq__112493","first__112494","cljs.core/first","cljs.core/next","datahike.pull-api/pull-recursion-frame","db","temp__5802__auto__","cljs.core/rest","or__5002__auto__","results","G__112497","datahike.pull-api/recurse-attr","map__112500","recursion","cljs.core._EQ_","datalog.parser.pull/PullSpec","datahike.pull-api/expand-frame","attr-key","datahike.pull-api/db-ident-and-id","x","map__112511","ident","ref","datahike.db.utils/attr-info","datahike.db.utils/ident-name?","p__112514","vec__112515","seq__112516","first__112517","datahike.pull-api/pull-attr-datoms","forward?","datoms","opts","limit","found","cljs.core/not-empty","G__112522","cljs.core.into","cljs.core.take","ref?","datahike.db.utils/ref?","system-attrib-ref?","datahike.db.utils/system-attrib-ref?","component?","datahike.db.utils/component?","datahike.db.utils/multival?","datom-val","d","cljs.core.mapv","and__5000__auto__","as-value","p1__112512#","single?","G__112532","cljs.core.map","cljs.core/assoc!","G__112533","datahike.pull-api/pull-attr","spec","vec__112537","cljs.core.nth","datahike.db.interface/datoms","a","datahike.db.interface/-config","datahike.db.interface/-ref-for","datahike.pull-api/filter-reverse-attrs","cljs.core.filter","p__112544","vec__112545","k","v","cljs.core.not_EQ_","datahike.pull-api/expand-reverse-subpattern-frame","rattrs","datahike.pull-api/expand-result","p__112548","vec__112549","seq__112550","first__112551","datahike.pull-api/pull-expand-reverse-frame","p__112553","vec__112554","seq__112555","first__112556","datahike.pull-api/pull-expand-frame","datoms-by-attr","vec__112565","datahike.pull-api/pull-wildcard-expand","map__112573","cljs.core/group-by","datahike.db.interface/-ident-for","G__112578","datahike.pull-api/pull-wildcard","map__112583","p__112588","vec__112589","seq__112590","first__112591","datahike.pull-api/pull-pattern-frame","specs","new-frames","datahike.pull-api/pull-pattern","G__112596","cljs.core/Keyword","js/Error","vec__112601","seq__112602","first__112603","f","remaining","result","G__112605","cljs.core/not","G__112610","datahike.pull-api/pull-spec","p1__112617#","datahike.db.utils.entid_strict","cljs.core/List","var_args","G__112623","datahike.pull-api/pull","p__112627","map__112628","selector","datahike.pull_api.pull","datahike.db.utils/db?","datalog.parser.pull/parse-pull","datahike.pull-api/pull-many"],"sourcesContent":["(ns ^:no-doc datahike.pull-api\n (:require\n [datahike.db.utils :as dbu]\n [datahike.db.interface :as dbi]\n [datalog.parser.pull :as dpp #?@(:cljs [:refer [PullSpec]])])\n #?(:clj\n (:import\n [datahike.datom Datom]\n [datalog.parser.pull PullSpec])))\n\n(defn- into!\n [transient-coll items]\n (reduce conj! transient-coll items))\n\n(def ^:private ^:const +default-limit+ 1000)\n\n(defn- initial-frame\n \"Creates an empty pattern frame according to pattern information.\"\n [pattern eids multi?]\n {:state :pattern\n :pattern pattern\n :wildcard? (:wildcard? pattern)\n :specs (-> pattern :attrs seq)\n :results (transient [])\n :kvps (transient {})\n :eids eids\n :multi? multi?\n :recursion {:depth {} :seen #{}}})\n\n(defn subpattern-frame\n \"Returns frame specific for given attribute\"\n [pattern eids multi? attr]\n (assoc (initial-frame pattern eids multi?) :attr attr))\n\n(defn reset-frame\n \"Recalculate frame attributes from frame pattern and transfer end results to frame-specific result section\"\n [frame eids kvps]\n (let [pattern (:pattern frame)]\n (assoc frame\n :eids eids\n :specs (seq (:attrs pattern))\n :wildcard? (:wildcard? pattern)\n :kvps (transient {})\n :results (cond-> (:results frame)\n (seq kvps) (conj! kvps)))))\n\n(defn push-recursion\n \"Push newly processed entity and increase recursion depth.\"\n [rec attr eid]\n (let [{:keys [depth seen]} rec]\n (assoc rec\n :depth (update depth attr (fnil inc 0))\n :seen (conj seen eid))))\n\n(defn seen-eid?\n [frame eid]\n (-> frame\n (get-in [:recursion :seen] #{})\n (contains? eid)))\n\n(defn pull-seen-eid\n \"Add eid to result set if entity already seen. Else return nil.\"\n [frame frames eid]\n (when (seen-eid? frame eid)\n (conj frames (update frame :results conj! {:db/id eid}))))\n\n(defn single-frame-result\n [key frame]\n (some-> (:kvps frame) persistent! (get key)))\n\n(defn recursion-result [frame]\n (single-frame-result ::recursion frame))\n\n(defn recursion-frame\n [parent eid]\n (let [attr (:attr parent)\n rec (push-recursion (:recursion parent) attr eid)]\n (assoc (subpattern-frame (:pattern parent) [eid] false ::recursion)\n :recursion rec)))\n\n(defn pull-recursion-frame\n \"Processes recursion for one entity ID or collects results.\n Replaces current frame with\n - one frame with remaining entiy IDs and\n - one subpattern frame\"\n [db [frame & frames]]\n (if-let [eids (seq (:eids frame))]\n (let [frame (reset-frame frame (rest eids) (recursion-result frame))\n eid (first eids)]\n (or (pull-seen-eid frame frames eid)\n (conj frames frame (recursion-frame frame eid))))\n (let [kvps (recursion-result frame)\n results (cond-> (:results frame)\n (seq kvps) (conj! kvps))]\n (conj frames (assoc frame :state :done :results results)))))\n\n(defn recurse-attr\n \"Adds recursion frame to frame set if maximum recursion depth not reached\"\n [db attr multi? eids eid parent frames]\n (let [{:keys [recursion pattern]} parent\n depth (-> recursion (get :depth) (get attr 0))]\n (if (-> pattern :attrs (get attr) :recursion (= depth))\n (conj frames parent)\n (pull-recursion-frame\n db\n (conj frames parent\n {:state :recursion :pattern pattern\n :attr attr :multi? multi? :eids eids\n :recursion recursion\n :results (transient [])})))))\n\n(let [pattern (PullSpec. true {})] ;; For performance purposes?\n (defn- expand-frame\n [parent eid attr-key multi? eids]\n (let [rec (push-recursion (:recursion parent) attr-key eid)]\n (-> pattern\n (subpattern-frame eids multi? attr-key)\n (assoc :recursion rec)))))\n\n(defn db-ident-and-id [db x]\n (let [{:keys [ident ref]} (dbu/attr-info db x)]\n (if (dbu/ident-name? ident)\n {:db/id ref :db/ident ident}\n {:db/id ref})))\n\n(defn pull-attr-datoms\n \"Processes datoms found to requested pattern for given attribute, i.e.\n - limits the result set to specified or default limit,\n - renames attribute key if requested,\n - adds default value on missing attributes if requested.\n Adds frame if\n - subpattern requested on attribute,\n - recursion requested,\n - attribute is reference.\n Returns frame set.\"\n [db attr-key attr eid forward? datoms opts [parent & frames]]\n (let [limit (get opts :limit +default-limit+)\n attr-key (or (:as opts) attr-key)\n found (not-empty\n (cond->> datoms\n limit (into [] (take limit))))]\n (if found\n (let [ref? (dbu/ref? db attr)\n system-attrib-ref? (dbu/system-attrib-ref? db attr)\n component? (and ref? (dbu/component? db attr))\n multi? (if forward? (dbu/multival? db attr)\n (not component?))\n datom-val (if forward? (fn [d] (.-v ^Datom d))\n (fn [d] (.-e ^Datom d)))]\n\n (cond\n (contains? opts :subpattern)\n (->> (subpattern-frame (:subpattern opts)\n (mapv datom-val found)\n multi? attr-key)\n (conj frames parent))\n\n (contains? opts :recursion)\n (recurse-attr db attr-key multi?\n (mapv datom-val found)\n eid parent frames)\n\n (and component? forward?)\n (->> found\n (mapv datom-val)\n (expand-frame parent eid attr-key multi?)\n (conj frames parent))\n\n :else\n (let [as-value (if (or ref? system-attrib-ref?)\n #(db-ident-and-id db (datom-val %))\n datom-val)\n single? (not multi?)]\n (->> (cond-> (into [] (map as-value) found)\n single? first)\n (update parent :kvps assoc! attr-key)\n (conj frames)))))\n (->> (cond-> parent\n (contains? opts :default)\n (update :kvps assoc! attr-key (:default opts)))\n (conj frames)))))\n\n(defn pull-attr\n \"Retrieve datoms for given entity id and specification from database\"\n [db spec eid frames]\n (let [[attr-key opts] spec]\n (if (= :db/id attr-key)\n (if (not-empty (dbi/datoms db :eavt [eid]))\n (conj (rest frames)\n (update (first frames) :kvps assoc! :db/id eid))\n frames)\n (let [attr (:attr opts)\n forward? (= attr-key attr)\n a (if (and (:attribute-refs? (dbi/-config db))\n (not (number? attr)))\n (dbi/-ref-for db attr)\n attr)\n results (if (nil? a)\n []\n (if forward?\n (dbi/datoms db :eavt [eid a])\n (dbi/datoms db :avet [a eid])))]\n (pull-attr-datoms db attr-key attr eid forward?\n results opts frames)))))\n\n(def ^:private filter-reverse-attrs\n (filter (fn [[k v]] (not= k (:attr v)))))\n\n(defn expand-reverse-subpattern-frame\n [parent eid rattrs]\n (-> (:pattern parent)\n (assoc :attrs rattrs :wildcard? false)\n (subpattern-frame [eid] false ::expand-rev)))\n\n(defn expand-result\n \"Add intermediate result to frame next in line. Return frame set.\"\n [frames kvps]\n (->> kvps\n (persistent!)\n (update (first frames) :kvps into!)\n (conj (rest frames))))\n\n(defn pull-expand-reverse-frame\n \"Adds expand results of current frame to next frame in frame set.\"\n [db [frame & frames]]\n (->> (or (single-frame-result ::expand-rev frame) {})\n (into! (:expand-kvps frame))\n (expand-result frames)))\n\n(defn pull-expand-frame\n \"Processes datoms for one attribute or changes frame state to process reverse attributes\n and spawns new frame for subpattern.\"\n [db [frame & frames]]\n (if-let [datoms-by-attr (seq (:datoms frame))]\n (let [[attr datoms] (first datoms-by-attr)\n opts (-> frame\n (get-in [:pattern :attrs])\n (get attr {}))]\n (pull-attr-datoms db attr attr (:eid frame) true datoms opts\n (conj frames (update frame :datoms rest))))\n (if-let [rattrs (->> (get-in frame [:pattern :attrs])\n (into {} filter-reverse-attrs)\n not-empty)]\n (let [frame (assoc frame\n :state :expand-rev\n :expand-kvps (:kvps frame)\n :kvps (transient {}))]\n (->> rattrs\n (expand-reverse-subpattern-frame frame (:eid frame))\n (conj frames frame)))\n (expand-result frames (:kvps frame)))))\n\n(defn pull-wildcard-expand\n [db frame frames eid pattern]\n (let [datoms (group-by (fn [d] (if (:attribute-refs? (dbi/-config db))\n (dbi/-ident-for db (.-a ^Datom d))\n (.-a ^Datom d)))\n (dbi/datoms db :eavt [eid]))\n {:keys [attr recursion]} frame\n rec (cond-> recursion\n (some? attr) (push-recursion attr eid))]\n (->> {:state :expand :kvps (transient {:db/id eid})\n :eid eid :pattern pattern :datoms (seq datoms)\n :recursion rec}\n (conj frames frame)\n (pull-expand-frame db))))\n\n(defn pull-wildcard\n [db frame frames]\n (let [{:keys [eid pattern]} frame]\n (or (pull-seen-eid frame frames eid)\n (pull-wildcard-expand db frame frames eid pattern))))\n\n(defn pull-pattern-frame\n [db [frame & frames]]\n (if-let [eids (seq (:eids frame))]\n (if (:wildcard? frame)\n (pull-wildcard db\n (assoc frame\n :specs []\n :eid (first eids)\n :wildcard? false)\n frames)\n (if-let [specs (seq (:specs frame))]\n (let [spec (first specs)\n new-frames (conj frames (assoc frame :specs (rest specs)))]\n (pull-attr db spec (first eids) new-frames))\n (->> frame :kvps persistent! not-empty\n (reset-frame frame (rest eids))\n (conj frames)\n (recur db))))\n (conj frames (assoc frame :state :done))))\n\n(defn pull-pattern\n [db frames]\n (case (:state (first frames))\n :expand (recur db (pull-expand-frame db frames))\n :expand-rev (recur db (pull-expand-reverse-frame db frames))\n :pattern (recur db (pull-pattern-frame db frames))\n :recursion (recur db (pull-recursion-frame db frames))\n :done (let [[f & remaining] frames\n result (cond-> (persistent! (:results f))\n (not (:multi? f)) first)]\n (if (seq remaining)\n (->> (cond-> (first remaining)\n result (update :kvps assoc! (:attr f) result))\n (conj (rest remaining))\n (recur db))\n result))))\n\n(defn pull-spec\n [db pattern eids multi?]\n (let [eids (into [] (map #(dbu/entid-strict db %)) eids)]\n (pull-pattern db (list (initial-frame pattern eids multi?)))))\n\n(defn pull\n ([db {:keys [selector eid]}]\n (pull db selector eid))\n ([db selector eid]\n {:pre [(dbu/db? db)]}\n (pull-spec db (dpp/parse-pull selector) [eid] false)))\n\n(defn pull-many [db selector eids]\n {:pre [(dbu/db? db)]}\n (pull-spec db (dpp/parse-pull selector) eids true))\n"]}
|