mini-program-cljs
Version:
1 lines • 80.2 kB
JSON
["^ ","~:output",["^ ","~:js","goog.provide('datascript.pull_api');\ndatascript.pull_api.into_BANG_ = (function datascript$pull_api$into_BANG_(transient_coll,items){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.conj_BANG_,transient_coll,items);\n});\ndatascript.pull_api._PLUS_default_limit_PLUS_ = (1000);\ndatascript.pull_api.initial_frame = (function datascript$pull_api$initial_frame(pattern,eids,multi_QMARK_){\nreturn 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)]);\n});\ndatascript.pull_api.subpattern_frame = (function datascript$pull_api$subpattern_frame(pattern,eids,multi_QMARK_,attr){\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(datascript.pull_api.initial_frame(pattern,eids,multi_QMARK_),new cljs.core.Keyword(null,\"attr\",\"attr\",-604132353),attr);\n});\ndatascript.pull_api.reset_frame = (function datascript$pull_api$reset_frame(frame,eids,kvps){\nvar pattern = new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423).cljs$core$IFn$_invoke$arity$1(frame);\nreturn 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__23009 = new cljs.core.Keyword(null,\"results\",\"results\",-1134170113).cljs$core$IFn$_invoke$arity$1(frame);\nif(cljs.core.seq(kvps)){\nreturn cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(G__23009,kvps);\n} else {\nreturn G__23009;\n}\n})()], 0));\n});\ndatascript.pull_api.push_recursion = (function datascript$pull_api$push_recursion(rec,attr,eid){\nvar map__23010 = rec;\nvar map__23010__$1 = (((((!((map__23010 == null))))?(((((map__23010.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__23010.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__23010):map__23010);\nvar depth = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23010__$1,new cljs.core.Keyword(null,\"depth\",\"depth\",1768663640));\nvar seen = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23010__$1,new cljs.core.Keyword(null,\"seen\",\"seen\",-518999789));\nreturn 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));\n});\ndatascript.pull_api.seen_eid_QMARK_ = (function datascript$pull_api$seen_eid_QMARK_(frame,eid){\nreturn 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);\n});\ndatascript.pull_api.pull_seen_eid = (function datascript$pull_api$pull_seen_eid(frame,frames,eid){\nif(datascript.pull_api.seen_eid_QMARK_(frame,eid)){\nreturn 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)));\n} else {\nreturn null;\n}\n});\ndatascript.pull_api.single_frame_result = (function datascript$pull_api$single_frame_result(key,frame){\nvar G__23012 = new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317).cljs$core$IFn$_invoke$arity$1(frame);\nvar G__23012__$1 = (((G__23012 == null))?null:cljs.core.persistent_BANG_(G__23012));\nif((G__23012__$1 == null)){\nreturn null;\n} else {\nreturn cljs.core.get.cljs$core$IFn$_invoke$arity$2(G__23012__$1,key);\n}\n});\ndatascript.pull_api.recursion_result = (function datascript$pull_api$recursion_result(frame){\nreturn datascript.pull_api.single_frame_result(new cljs.core.Keyword(\"datascript.pull-api\",\"recursion\",\"datascript.pull-api/recursion\",-1897884534),frame);\n});\ndatascript.pull_api.recursion_frame = (function datascript$pull_api$recursion_frame(parent,eid){\nvar attr = new cljs.core.Keyword(null,\"attr\",\"attr\",-604132353).cljs$core$IFn$_invoke$arity$1(parent);\nvar rec = datascript.pull_api.push_recursion(new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765).cljs$core$IFn$_invoke$arity$1(parent),attr,eid);\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(datascript.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(\"datascript.pull-api\",\"recursion\",\"datascript.pull-api/recursion\",-1897884534)),new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765),rec);\n});\ndatascript.pull_api.pull_recursion_frame = (function datascript$pull_api$pull_recursion_frame(db,p__23015){\nvar vec__23018 = p__23015;\nvar seq__23019 = cljs.core.seq(vec__23018);\nvar first__23020 = cljs.core.first(seq__23019);\nvar seq__23019__$1 = cljs.core.next(seq__23019);\nvar frame = first__23020;\nvar frames = seq__23019__$1;\nvar temp__5733__auto__ = cljs.core.seq(new cljs.core.Keyword(null,\"eids\",\"eids\",1546550700).cljs$core$IFn$_invoke$arity$1(frame));\nif(temp__5733__auto__){\nvar eids = temp__5733__auto__;\nvar frame__$1 = datascript.pull_api.reset_frame(frame,cljs.core.rest(eids),datascript.pull_api.recursion_result(frame));\nvar eid = cljs.core.first(eids);\nvar or__4185__auto__ = datascript.pull_api.pull_seen_eid(frame__$1,frames,eid);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,frame__$1,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.pull_api.recursion_frame(frame__$1,eid)], 0));\n}\n} else {\nvar kvps = datascript.pull_api.recursion_result(frame);\nvar results = (function (){var G__23021 = new cljs.core.Keyword(null,\"results\",\"results\",-1134170113).cljs$core$IFn$_invoke$arity$1(frame);\nif(cljs.core.seq(kvps)){\nreturn cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(G__23021,kvps);\n} else {\nreturn G__23021;\n}\n})();\nreturn 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)));\n}\n});\ndatascript.pull_api.recurse_attr = (function datascript$pull_api$recurse_attr(db,attr,multi_QMARK_,eids,eid,parent,frames){\nvar map__23022 = parent;\nvar map__23022__$1 = (((((!((map__23022 == null))))?(((((map__23022.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__23022.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__23022):map__23022);\nvar recursion = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23022__$1,new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765));\nvar pattern = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23022__$1,new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423));\nvar 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));\nif(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)){\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,parent);\n} else {\nreturn datascript.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)));\n}\n});\nvar pattern_23104 = (new datascript.pull_parser.PullSpec(true,cljs.core.PersistentArrayMap.EMPTY,null,null,null));\ndatascript.pull_api.expand_frame = (function datascript$pull_api$expand_frame(parent,eid,attr_key,multi_QMARK_,eids){\nvar rec = datascript.pull_api.push_recursion(new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765).cljs$core$IFn$_invoke$arity$1(parent),attr_key,eid);\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(datascript.pull_api.subpattern_frame(pattern_23104,eids,multi_QMARK_,attr_key),new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765),rec);\n});\ndatascript.pull_api.pull_attr_datoms = (function datascript$pull_api$pull_attr_datoms(db,attr_key,attr,eid,forward_QMARK_,datoms,opts,p__23027){\nvar vec__23028 = p__23027;\nvar seq__23029 = cljs.core.seq(vec__23028);\nvar first__23030 = cljs.core.first(seq__23029);\nvar seq__23029__$1 = cljs.core.next(seq__23029);\nvar parent = first__23030;\nvar frames = seq__23029__$1;\nvar limit = cljs.core.get.cljs$core$IFn$_invoke$arity$3(opts,new cljs.core.Keyword(null,\"limit\",\"limit\",-1355822363),(1000));\nvar attr_key__$1 = (function (){var or__4185__auto__ = new cljs.core.Keyword(null,\"as\",\"as\",1148689641).cljs$core$IFn$_invoke$arity$1(opts);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn attr_key;\n}\n})();\nvar found = cljs.core.not_empty((function (){var G__23031 = datoms;\nif(cljs.core.truth_(limit)){\nreturn cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentVector.EMPTY,cljs.core.take.cljs$core$IFn$_invoke$arity$1(limit),G__23031);\n} else {\nreturn G__23031;\n}\n})());\nif(cljs.core.truth_(found)){\nvar ref_QMARK_ = datascript.db.ref_QMARK_(db,attr);\nvar component_QMARK_ = ((ref_QMARK_) && (datascript.db.component_QMARK_(db,attr)));\nvar multi_QMARK_ = (cljs.core.truth_(forward_QMARK_)?datascript.db.multival_QMARK_(db,attr):(!(component_QMARK_)));\nvar datom_val = (cljs.core.truth_(forward_QMARK_)?(function (d){\nreturn d.v;\n}):(function (d){\nreturn d.e;\n}));\nif(cljs.core.contains_QMARK_(opts,new cljs.core.Keyword(null,\"subpattern\",\"subpattern\",45002743))){\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,parent,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.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));\n} else {\nif(cljs.core.contains_QMARK_(opts,new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765))){\nreturn datascript.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);\n} else {\nif(cljs.core.truth_(((component_QMARK_)?forward_QMARK_:false))){\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,parent,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.pull_api.expand_frame(parent,eid,attr_key__$1,multi_QMARK_,cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(datom_val,found))], 0));\n} else {\nvar as_value = (function (){var G__23032 = datom_val;\nif(ref_QMARK_){\nreturn cljs.core.comp.cljs$core$IFn$_invoke$arity$2((function (p1__23026_SHARP_){\nreturn cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098)],[p1__23026_SHARP_]);\n}),G__23032);\n} else {\nreturn G__23032;\n}\n})();\nvar single_QMARK_ = (!(multi_QMARK_));\nreturn 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__23033 = 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);\nif(single_QMARK_){\nreturn cljs.core.first(G__23033);\n} else {\nreturn G__23033;\n}\n})()));\n\n}\n}\n}\n} else {\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,(function (){var G__23035 = parent;\nif(cljs.core.contains_QMARK_(opts,new cljs.core.Keyword(null,\"default\",\"default\",-1987822328))){\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$5(G__23035,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));\n} else {\nreturn G__23035;\n}\n})());\n}\n});\ndatascript.pull_api.pull_attr = (function datascript$pull_api$pull_attr(db,spec,eid,frames){\nvar vec__23036 = spec;\nvar attr_key = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__23036,(0),null);\nvar opts = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__23036,(1),null);\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098),attr_key)){\nif(cljs.core.truth_(cljs.core.not_empty(datascript.db._datoms(db,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid], null))))){\nreturn 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));\n} else {\nreturn frames;\n}\n} else {\nvar attr = new cljs.core.Keyword(null,\"attr\",\"attr\",-604132353).cljs$core$IFn$_invoke$arity$1(opts);\nvar forward_QMARK_ = cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(attr_key,attr);\nvar results = ((forward_QMARK_)?datascript.db._datoms(db,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid,attr], null)):datascript.db._datoms(db,new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [attr,eid], null)));\nreturn datascript.pull_api.pull_attr_datoms(db,attr_key,attr,eid,forward_QMARK_,results,opts,frames);\n}\n});\ndatascript.pull_api.filter_reverse_attrs = cljs.core.filter.cljs$core$IFn$_invoke$arity$1((function (p__23039){\nvar vec__23040 = p__23039;\nvar k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__23040,(0),null);\nvar v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__23040,(1),null);\nreturn 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));\n}));\ndatascript.pull_api.expand_reverse_subpattern_frame = (function datascript$pull_api$expand_reverse_subpattern_frame(parent,eid,rattrs){\nreturn datascript.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(\"datascript.pull-api\",\"expand-rev\",\"datascript.pull-api/expand-rev\",2143627459));\n});\ndatascript.pull_api.expand_result = (function datascript$pull_api$expand_result(frames,kvps){\nreturn 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),datascript.pull_api.into_BANG_,cljs.core.persistent_BANG_(kvps)));\n});\ndatascript.pull_api.pull_expand_reverse_frame = (function datascript$pull_api$pull_expand_reverse_frame(db,p__23043){\nvar vec__23046 = p__23043;\nvar seq__23047 = cljs.core.seq(vec__23046);\nvar first__23048 = cljs.core.first(seq__23047);\nvar seq__23047__$1 = cljs.core.next(seq__23047);\nvar frame = first__23048;\nvar frames = seq__23047__$1;\nreturn datascript.pull_api.expand_result(frames,datascript.pull_api.into_BANG_(new cljs.core.Keyword(null,\"expand-kvps\",\"expand-kvps\",44141154).cljs$core$IFn$_invoke$arity$1(frame),(function (){var or__4185__auto__ = datascript.pull_api.single_frame_result(new cljs.core.Keyword(\"datascript.pull-api\",\"expand-rev\",\"datascript.pull-api/expand-rev\",2143627459),frame);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn cljs.core.PersistentArrayMap.EMPTY;\n}\n})()));\n});\ndatascript.pull_api.pull_expand_frame = (function datascript$pull_api$pull_expand_frame(db,p__23055){\nvar vec__23058 = p__23055;\nvar seq__23059 = cljs.core.seq(vec__23058);\nvar first__23060 = cljs.core.first(seq__23059);\nvar seq__23059__$1 = cljs.core.next(seq__23059);\nvar frame = first__23060;\nvar frames = seq__23059__$1;\nvar temp__5733__auto__ = cljs.core.seq(new cljs.core.Keyword(null,\"datoms\",\"datoms\",-290874434).cljs$core$IFn$_invoke$arity$1(frame));\nif(temp__5733__auto__){\nvar datoms_by_attr = temp__5733__auto__;\nvar vec__23061 = cljs.core.first(datoms_by_attr);\nvar attr = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__23061,(0),null);\nvar datoms = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__23061,(1),null);\nvar 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);\nreturn datascript.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)));\n} else {\nvar temp__5733__auto____$1 = cljs.core.not_empty(cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentArrayMap.EMPTY,datascript.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))));\nif(cljs.core.truth_(temp__5733__auto____$1)){\nvar rattrs = temp__5733__auto____$1;\nvar 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));\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,frame__$1,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.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));\n} else {\nreturn datascript.pull_api.expand_result(frames,new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317).cljs$core$IFn$_invoke$arity$1(frame));\n}\n}\n});\ndatascript.pull_api.pull_wildcard_expand = (function datascript$pull_api$pull_wildcard_expand(db,frame,frames,eid,pattern){\nvar datoms = cljs.core.group_by((function (d){\nreturn d.a;\n}),datascript.db._datoms(db,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid], null)));\nvar map__23070 = frame;\nvar map__23070__$1 = (((((!((map__23070 == null))))?(((((map__23070.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__23070.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__23070):map__23070);\nvar attr = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23070__$1,new cljs.core.Keyword(null,\"attr\",\"attr\",-604132353));\nvar recursion = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23070__$1,new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765));\nvar rec = (function (){var G__23072 = recursion;\nif((!((attr == null)))){\nreturn datascript.pull_api.push_recursion(G__23072,attr,eid);\n} else {\nreturn G__23072;\n}\n})();\nreturn datascript.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)));\n});\ndatascript.pull_api.pull_wildcard = (function datascript$pull_api$pull_wildcard(db,frame,frames){\nvar map__23073 = frame;\nvar map__23073__$1 = (((((!((map__23073 == null))))?(((((map__23073.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__23073.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__23073):map__23073);\nvar eid = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23073__$1,new cljs.core.Keyword(null,\"eid\",\"eid\",559519930));\nvar pattern = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23073__$1,new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423));\nvar or__4185__auto__ = datascript.pull_api.pull_seen_eid(frame,frames,eid);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn datascript.pull_api.pull_wildcard_expand(db,frame,frames,eid,pattern);\n}\n});\ndatascript.pull_api.pull_pattern_frame = (function datascript$pull_api$pull_pattern_frame(db,p__23075){\nwhile(true){\nvar vec__23076 = p__23075;\nvar seq__23077 = cljs.core.seq(vec__23076);\nvar first__23078 = cljs.core.first(seq__23077);\nvar seq__23077__$1 = cljs.core.next(seq__23077);\nvar frame = first__23078;\nvar frames = seq__23077__$1;\nvar temp__5733__auto__ = cljs.core.seq(new cljs.core.Keyword(null,\"eids\",\"eids\",1546550700).cljs$core$IFn$_invoke$arity$1(frame));\nif(temp__5733__auto__){\nvar eids = temp__5733__auto__;\nif(cljs.core.truth_(new cljs.core.Keyword(null,\"wildcard?\",\"wildcard?\",-686044101).cljs$core$IFn$_invoke$arity$1(frame))){\nreturn datascript.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);\n} else {\nvar temp__5733__auto____$1 = cljs.core.seq(new cljs.core.Keyword(null,\"specs\",\"specs\",1426570741).cljs$core$IFn$_invoke$arity$1(frame));\nif(temp__5733__auto____$1){\nvar specs = temp__5733__auto____$1;\nvar spec = cljs.core.first(specs);\nvar pattern = new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423).cljs$core$IFn$_invoke$arity$1(frame);\nvar 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)));\nreturn datascript.pull_api.pull_attr(db,spec,cljs.core.first(eids),new_frames);\n} else {\nvar G__23106 = db;\nvar G__23107 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,datascript.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)))));\ndb = G__23106;\np__23075 = G__23107;\ncontinue;\n}\n}\n} else {\nreturn 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)));\n}\nbreak;\n}\n});\ndatascript.pull_api.pull_pattern = (function datascript$pull_api$pull_pattern(db,frames){\nwhile(true){\nvar G__23086 = new cljs.core.Keyword(null,\"state\",\"state\",-1988618099).cljs$core$IFn$_invoke$arity$1(cljs.core.first(frames));\nvar G__23086__$1 = (((G__23086 instanceof cljs.core.Keyword))?G__23086.fqn:null);\nswitch (G__23086__$1) {\ncase \"expand\":\nvar G__23109 = db;\nvar G__23110 = datascript.pull_api.pull_expand_frame(db,frames);\ndb = G__23109;\nframes = G__23110;\ncontinue;\n\nbreak;\ncase \"expand-rev\":\nvar G__23111 = db;\nvar G__23112 = datascript.pull_api.pull_expand_reverse_frame(db,frames);\ndb = G__23111;\nframes = G__23112;\ncontinue;\n\nbreak;\ncase \"pattern\":\nvar G__23113 = db;\nvar G__23114 = datascript.pull_api.pull_pattern_frame(db,frames);\ndb = G__23113;\nframes = G__23114;\ncontinue;\n\nbreak;\ncase \"recursion\":\nvar G__23115 = db;\nvar G__23116 = datascript.pull_api.pull_recursion_frame(db,frames);\ndb = G__23115;\nframes = G__23116;\ncontinue;\n\nbreak;\ncase \"done\":\nvar vec__23091 = frames;\nvar seq__23092 = cljs.core.seq(vec__23091);\nvar first__23093 = cljs.core.first(seq__23092);\nvar seq__23092__$1 = cljs.core.next(seq__23092);\nvar f = first__23093;\nvar remaining = seq__23092__$1;\nvar result = (function (){var G__23094 = cljs.core.persistent_BANG_(new cljs.core.Keyword(null,\"results\",\"results\",-1134170113).cljs$core$IFn$_invoke$arity$1(f));\nif(cljs.core.not(new cljs.core.Keyword(null,\"multi?\",\"multi?\",-749311069).cljs$core$IFn$_invoke$arity$1(f))){\nreturn cljs.core.first(G__23094);\n} else {\nreturn G__23094;\n}\n})();\nif(cljs.core.seq(remaining)){\nvar G__23117 = db;\nvar G__23118 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.rest(remaining),(function (){var G__23095 = cljs.core.first(remaining);\nif(cljs.core.truth_(result)){\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$5(G__23095,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);\n} else {\nreturn G__23095;\n}\n})());\ndb = G__23117;\nframes = G__23118;\ncontinue;\n} else {\nreturn result;\n}\n\nbreak;\ndefault:\nthrow (new Error([\"No matching clause: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__23086__$1)].join('')));\n\n}\nbreak;\n}\n});\ndatascript.pull_api.pull_spec = (function datascript$pull_api$pull_spec(db,pattern,eids,multi_QMARK_){\nvar 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__23098_SHARP_){\nreturn datascript.db.entid_strict(db,p1__23098_SHARP_);\n})),eids);\nreturn datascript.pull_api.pull_pattern(db,(new cljs.core.List(null,datascript.pull_api.initial_frame(pattern,eids__$1,multi_QMARK_),null,(1),null)));\n});\ndatascript.pull_api.pull = (function datascript$pull_api$pull(db,selector,eid){\n\nreturn datascript.pull_api.pull_spec(db,datascript.pull_parser.parse_pull(selector),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid], null),false);\n});\ndatascript.pull_api.pull_many = (function datascript$pull_api$pull_many(db,selector,eids){\n\nreturn datascript.pull_api.pull_spec(db,datascript.pull_parser.parse_pull(selector),eids,true);\n});\n","~:ns-info",["^ ","~:rename-macros",null,"~:renames",["^ "],"~:meta",["^ ","~:file","datascript/pull_api.cljc","~:line",1,"~:column",14,"~:end-line",1,"~:end-column",33,"~:no-doc",true],"~:ns-aliases",["^ ","~$cljs.loader","~$shadow.loader"],"~:use-macros",null,"~:excludes",["~#set",[]],"~:name","~$datascript.pull-api","~:op","~:ns","~:imports",null,"~:requires",["^ ","~$datascript.db","^H","~$db","^H","~$datascript.pull-parser","^J","~$dpp","^J","~$cljs.core","^L","~$goog","^M"],"~:seen",["^A",["~:require"]],"~:uses",["^ ","~$PullSpec","^J"],"~:require-macros",["^ ","^L","^L","^H","^H","^I","^H"],"~:form",["~#list",["~$ns","^C",["^T",["^O",["^H","~:as","^I"],["^J","^V","^K","~:refer",["^Q"]]]]]],"~:flags",["^ ","^O",["^A",[]]],"~:js-deps",["^ "],"~:deps",["^M","^L","^H","^J"]],"^E","^C","~:resource-id",["~:shadow.build.classpath/resource","datascript/pull_api.cljc"],"~:compiled-at",1590237778219,"~:resource-name","datascript/pull_api.cljc","~:warnings",[],"~:source","(ns ^:no-doc datascript.pull-api\n (:require\n [datascript.db :as db]\n [datascript.pull-parser :as dpp #?@(:cljs [:refer [PullSpec]])])\n #?(:clj\n (:import\n [datascript.db Datom]\n [datascript.pull_parser 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 [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 [pattern eids multi? attr]\n (assoc (initial-frame pattern eids multi?) :attr attr))\n\n(defn- reset-frame\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 [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 [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 [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 [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 {})]\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- pull-attr-datoms\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? (db/ref? db attr)\n component? (and ref? (db/component? db attr))\n multi? (if forward? (db/multival? db attr) (not component?))\n datom-val (if forward? (fn [d] (.-v ^Datom d)) (fn [d] (.-e ^Datom d)))]\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 (cond->> datom-val\n ref? (comp #(hash-map :db/id %)))\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 [db spec eid frames]\n (let [[attr-key opts] spec]\n (if (= :db/id attr-key)\n (if (not-empty (db/-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 results (if forward?\n (db/-datoms db :eavt [eid attr])\n (db/-datoms db :avet [attr 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 [frames kvps]\n (->> kvps\n (persistent!)\n (update (first frames) :kvps into!)\n (conj (rest frames))))\n\n(defn- pull-expand-reverse-frame\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 [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] (.-a ^Datom d)) (db/-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 pattern (:pattern frame)\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 #(db/entid-strict db %)) eids)]\n (pull-pattern db (list (initial-frame pattern eids multi?)))))\n\n(defn pull [db selector eid]\n {:pre [(db/db? db)]}\n (pull-spec db (dpp/parse-pull selector) [eid] false))\n\n(defn pull-many [db selector eids]\n {:pre [(db/db? db)]}\n (pull-spec db (dpp/parse-pull selector) eids true))\n","~:reader-features",["^A",["~:cljs"]],"~:cljc",true,"~:source-map-compact",["^ ","mappings","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