@anysoftinc/anydb-sdk 0.1.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +100 -163
  2. package/dist/anydb.datascript.core.js +336 -0
  3. package/dist/anydb.datascript.rules.js +29 -0
  4. package/dist/anydb.datascript.schema.js +35 -0
  5. package/dist/client.d.ts +46 -96
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +332 -305
  8. package/dist/cljs.core.js +38752 -0
  9. package/dist/cljs.reader.js +450 -0
  10. package/dist/cljs.tools.reader.edn.js +945 -0
  11. package/dist/cljs.tools.reader.impl.commons.js +205 -0
  12. package/dist/cljs.tools.reader.impl.errors.js +429 -0
  13. package/dist/cljs.tools.reader.impl.inspect.js +170 -0
  14. package/dist/cljs.tools.reader.impl.utils.js +413 -0
  15. package/dist/cljs.tools.reader.js +1815 -0
  16. package/dist/cljs.tools.reader.reader_types.js +826 -0
  17. package/dist/cljs_env.js +7672 -0
  18. package/dist/clojure.data.js +307 -0
  19. package/dist/clojure.edn.js +107 -0
  20. package/dist/clojure.set.js +394 -0
  21. package/dist/clojure.string.js +490 -0
  22. package/dist/clojure.walk.js +144 -0
  23. package/dist/datascript-backend.d.ts +26 -0
  24. package/dist/datascript-backend.d.ts.map +1 -0
  25. package/dist/datascript-backend.js +113 -0
  26. package/dist/datascript.built_ins.js +680 -0
  27. package/dist/datascript.conn.js +814 -0
  28. package/dist/datascript.core.js +1285 -0
  29. package/dist/datascript.db.js +4058 -0
  30. package/dist/datascript.impl.entity.js +588 -0
  31. package/dist/datascript.lru.js +213 -0
  32. package/dist/datascript.parser.js +8598 -0
  33. package/dist/datascript.pull_api.js +2287 -0
  34. package/dist/datascript.pull_parser.js +865 -0
  35. package/dist/datascript.query.js +2785 -0
  36. package/dist/datascript.serialize.js +352 -0
  37. package/dist/datascript.storage.js +50 -0
  38. package/dist/datascript.util.js +82 -0
  39. package/dist/extend_clj.core.js +134 -0
  40. package/dist/me.tonsky.persistent_sorted_set.arrays.js +54 -0
  41. package/dist/me.tonsky.persistent_sorted_set.js +2485 -0
  42. package/dist/nextauth-adapter.d.ts +7 -2
  43. package/dist/nextauth-adapter.d.ts.map +1 -1
  44. package/dist/nextauth-adapter.js +251 -149
  45. package/package.json +9 -5
  46. package/dist/query-builder.d.ts +0 -126
  47. package/dist/query-builder.d.ts.map +0 -1
  48. package/dist/query-builder.js +0 -207
@@ -0,0 +1,2785 @@
1
+ var $CLJS = require("./cljs_env");
2
+ var $jscomp = $CLJS.$jscomp;
3
+ var COMPILED = false;
4
+ require("./cljs.core.js");
5
+ require("./cljs.reader.js");
6
+ require("./clojure.set.js");
7
+ require("./clojure.string.js");
8
+ require("./clojure.walk.js");
9
+ require("./datascript.built_ins.js");
10
+ require("./datascript.db.js");
11
+ require("./me.tonsky.persistent_sorted_set.arrays.js");
12
+ require("./datascript.lru.js");
13
+ require("./datascript.impl.entity.js");
14
+ require("./datascript.parser.js");
15
+ require("./datascript.pull_api.js");
16
+ require("./datascript.util.js");
17
+ var anydb=$CLJS.anydb || ($CLJS.anydb = {});
18
+ var clojure=$CLJS.clojure || ($CLJS.clojure = {});
19
+ var cljs=$CLJS.cljs || ($CLJS.cljs = {});
20
+ var goog=$CLJS.goog || ($CLJS.goog = {});
21
+ var datascript=$CLJS.datascript || ($CLJS.datascript = {});
22
+ var me=$CLJS.me || ($CLJS.me = {});
23
+ var extend_clj=$CLJS.extend_clj || ($CLJS.extend_clj = {});
24
+
25
+ $CLJS.SHADOW_ENV.setLoaded("datascript.query.js");
26
+
27
+ goog.provide('datascript.query');
28
+ datascript.query._STAR_query_cache_STAR_ = datascript.lru.cache((100));
29
+
30
+
31
+
32
+
33
+ /**
34
+ * @constructor
35
+ * @implements {cljs.core.IRecord}
36
+ * @implements {cljs.core.IKVReduce}
37
+ * @implements {cljs.core.IEquiv}
38
+ * @implements {cljs.core.IHash}
39
+ * @implements {cljs.core.ICollection}
40
+ * @implements {cljs.core.ICounted}
41
+ * @implements {cljs.core.ISeqable}
42
+ * @implements {cljs.core.IMeta}
43
+ * @implements {cljs.core.ICloneable}
44
+ * @implements {cljs.core.IPrintWithWriter}
45
+ * @implements {cljs.core.IIterable}
46
+ * @implements {cljs.core.IWithMeta}
47
+ * @implements {cljs.core.IAssociative}
48
+ * @implements {cljs.core.IMap}
49
+ * @implements {cljs.core.ILookup}
50
+ */
51
+ datascript.query.Context = (function (rels,sources,rules,__meta,__extmap,__hash){
52
+ this.rels = rels;
53
+ this.sources = sources;
54
+ this.rules = rules;
55
+ this.__meta = __meta;
56
+ this.__extmap = __extmap;
57
+ this.__hash = __hash;
58
+ this.cljs$lang$protocol_mask$partition0$ = 2230716170;
59
+ this.cljs$lang$protocol_mask$partition1$ = 139264;
60
+ });
61
+ (datascript.query.Context.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (this__5300__auto__,k__5301__auto__){
62
+ var self__ = this;
63
+ var this__5300__auto____$1 = this;
64
+ return this__5300__auto____$1.cljs$core$ILookup$_lookup$arity$3(null,k__5301__auto__,null);
65
+ }));
66
+
67
+ (datascript.query.Context.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (this__5302__auto__,k9251,else__5303__auto__){
68
+ var self__ = this;
69
+ var this__5302__auto____$1 = this;
70
+ var G__9255 = k9251;
71
+ var G__9255__$1 = (((G__9255 instanceof cljs.core.Keyword))?G__9255.fqn:null);
72
+ switch (G__9255__$1) {
73
+ case "rels":
74
+ return self__.rels;
75
+
76
+ break;
77
+ case "sources":
78
+ return self__.sources;
79
+
80
+ break;
81
+ case "rules":
82
+ return self__.rules;
83
+
84
+ break;
85
+ default:
86
+ return cljs.core.get.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k9251,else__5303__auto__);
87
+
88
+ }
89
+ }));
90
+
91
+ (datascript.query.Context.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (this__5320__auto__,f__5321__auto__,init__5322__auto__){
92
+ var self__ = this;
93
+ var this__5320__auto____$1 = this;
94
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (ret__5323__auto__,p__9256){
95
+ var vec__9257 = p__9256;
96
+ var k__5324__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9257,(0),null);
97
+ var v__5325__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9257,(1),null);
98
+ return (f__5321__auto__.cljs$core$IFn$_invoke$arity$3 ? f__5321__auto__.cljs$core$IFn$_invoke$arity$3(ret__5323__auto__,k__5324__auto__,v__5325__auto__) : f__5321__auto__.call(null,ret__5323__auto__,k__5324__auto__,v__5325__auto__));
99
+ }),init__5322__auto__,this__5320__auto____$1);
100
+ }));
101
+
102
+ (datascript.query.Context.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (this__5315__auto__,writer__5316__auto__,opts__5317__auto__){
103
+ var self__ = this;
104
+ var this__5315__auto____$1 = this;
105
+ var pr_pair__5318__auto__ = (function (keyval__5319__auto__){
106
+ return cljs.core.pr_sequential_writer(writer__5316__auto__,cljs.core.pr_writer,""," ","",opts__5317__auto__,keyval__5319__auto__);
107
+ });
108
+ return cljs.core.pr_sequential_writer(writer__5316__auto__,pr_pair__5318__auto__,"#datascript.query.Context{",", ","}",opts__5317__auto__,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"rels","rels",1770187185),self__.rels],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"sources","sources",-321166424),self__.sources],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"rules","rules",1198912366),self__.rules],null))], null),self__.__extmap));
109
+ }));
110
+
111
+ (datascript.query.Context.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (G__9250){
112
+ var self__ = this;
113
+ var G__9250__$1 = this;
114
+ return (new cljs.core.RecordIter((0),G__9250__$1,3,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"rels","rels",1770187185),new cljs.core.Keyword(null,"sources","sources",-321166424),new cljs.core.Keyword(null,"rules","rules",1198912366)], null),(cljs.core.truth_(self__.__extmap)?cljs.core._iterator(self__.__extmap):cljs.core.nil_iter())));
115
+ }));
116
+
117
+ (datascript.query.Context.prototype.cljs$core$IMeta$_meta$arity$1 = (function (this__5298__auto__){
118
+ var self__ = this;
119
+ var this__5298__auto____$1 = this;
120
+ return self__.__meta;
121
+ }));
122
+
123
+ (datascript.query.Context.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (this__5295__auto__){
124
+ var self__ = this;
125
+ var this__5295__auto____$1 = this;
126
+ return (new datascript.query.Context(self__.rels,self__.sources,self__.rules,self__.__meta,self__.__extmap,self__.__hash));
127
+ }));
128
+
129
+ (datascript.query.Context.prototype.cljs$core$ICounted$_count$arity$1 = (function (this__5304__auto__){
130
+ var self__ = this;
131
+ var this__5304__auto____$1 = this;
132
+ return (3 + cljs.core.count(self__.__extmap));
133
+ }));
134
+
135
+ (datascript.query.Context.prototype.cljs$core$IHash$_hash$arity$1 = (function (this__5296__auto__){
136
+ var self__ = this;
137
+ var this__5296__auto____$1 = this;
138
+ var h__5111__auto__ = self__.__hash;
139
+ if((!((h__5111__auto__ == null)))){
140
+ return h__5111__auto__;
141
+ } else {
142
+ var h__5111__auto____$1 = (function (coll__5297__auto__){
143
+ return (1014232958 ^ cljs.core.hash_unordered_coll(coll__5297__auto__));
144
+ })(this__5296__auto____$1);
145
+ (self__.__hash = h__5111__auto____$1);
146
+
147
+ return h__5111__auto____$1;
148
+ }
149
+ }));
150
+
151
+ (datascript.query.Context.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this9252,other9253){
152
+ var self__ = this;
153
+ var this9252__$1 = this;
154
+ return (((!((other9253 == null)))) && ((((this9252__$1.constructor === other9253.constructor)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this9252__$1.rels,other9253.rels)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this9252__$1.sources,other9253.sources)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this9252__$1.rules,other9253.rules)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this9252__$1.__extmap,other9253.__extmap)))))))))));
155
+ }));
156
+
157
+ (datascript.query.Context.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (this__5310__auto__,k__5311__auto__){
158
+ var self__ = this;
159
+ var this__5310__auto____$1 = this;
160
+ if(cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"sources","sources",-321166424),null,new cljs.core.Keyword(null,"rules","rules",1198912366),null,new cljs.core.Keyword(null,"rels","rels",1770187185),null], null), null),k__5311__auto__)){
161
+ return cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(cljs.core._with_meta(cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,this__5310__auto____$1),self__.__meta),k__5311__auto__);
162
+ } else {
163
+ return (new datascript.query.Context(self__.rels,self__.sources,self__.rules,self__.__meta,cljs.core.not_empty(cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.__extmap,k__5311__auto__)),null));
164
+ }
165
+ }));
166
+
167
+ (datascript.query.Context.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (this__5307__auto__,k9251){
168
+ var self__ = this;
169
+ var this__5307__auto____$1 = this;
170
+ var G__9260 = k9251;
171
+ var G__9260__$1 = (((G__9260 instanceof cljs.core.Keyword))?G__9260.fqn:null);
172
+ switch (G__9260__$1) {
173
+ case "rels":
174
+ case "sources":
175
+ case "rules":
176
+ return true;
177
+
178
+ break;
179
+ default:
180
+ return cljs.core.contains_QMARK_(self__.__extmap,k9251);
181
+
182
+ }
183
+ }));
184
+
185
+ (datascript.query.Context.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (this__5308__auto__,k__5309__auto__,G__9250){
186
+ var self__ = this;
187
+ var this__5308__auto____$1 = this;
188
+ var pred__9261 = cljs.core.keyword_identical_QMARK_;
189
+ var expr__9262 = k__5309__auto__;
190
+ if(cljs.core.truth_((pred__9261.cljs$core$IFn$_invoke$arity$2 ? pred__9261.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"rels","rels",1770187185),expr__9262) : pred__9261.call(null,new cljs.core.Keyword(null,"rels","rels",1770187185),expr__9262)))){
191
+ return (new datascript.query.Context(G__9250,self__.sources,self__.rules,self__.__meta,self__.__extmap,null));
192
+ } else {
193
+ if(cljs.core.truth_((pred__9261.cljs$core$IFn$_invoke$arity$2 ? pred__9261.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"sources","sources",-321166424),expr__9262) : pred__9261.call(null,new cljs.core.Keyword(null,"sources","sources",-321166424),expr__9262)))){
194
+ return (new datascript.query.Context(self__.rels,G__9250,self__.rules,self__.__meta,self__.__extmap,null));
195
+ } else {
196
+ if(cljs.core.truth_((pred__9261.cljs$core$IFn$_invoke$arity$2 ? pred__9261.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"rules","rules",1198912366),expr__9262) : pred__9261.call(null,new cljs.core.Keyword(null,"rules","rules",1198912366),expr__9262)))){
197
+ return (new datascript.query.Context(self__.rels,self__.sources,G__9250,self__.__meta,self__.__extmap,null));
198
+ } else {
199
+ return (new datascript.query.Context(self__.rels,self__.sources,self__.rules,self__.__meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k__5309__auto__,G__9250),null));
200
+ }
201
+ }
202
+ }
203
+ }));
204
+
205
+ (datascript.query.Context.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this__5313__auto__){
206
+ var self__ = this;
207
+ var this__5313__auto____$1 = this;
208
+ return cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.MapEntry(new cljs.core.Keyword(null,"rels","rels",1770187185),self__.rels,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,"sources","sources",-321166424),self__.sources,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,"rules","rules",1198912366),self__.rules,null))], null),self__.__extmap));
209
+ }));
210
+
211
+ (datascript.query.Context.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (this__5299__auto__,G__9250){
212
+ var self__ = this;
213
+ var this__5299__auto____$1 = this;
214
+ return (new datascript.query.Context(self__.rels,self__.sources,self__.rules,G__9250,self__.__extmap,self__.__hash));
215
+ }));
216
+
217
+ (datascript.query.Context.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this__5305__auto__,entry__5306__auto__){
218
+ var self__ = this;
219
+ var this__5305__auto____$1 = this;
220
+ if(cljs.core.vector_QMARK_(entry__5306__auto__)){
221
+ return this__5305__auto____$1.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth(entry__5306__auto__,(0)),cljs.core._nth(entry__5306__auto__,(1)));
222
+ } else {
223
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,this__5305__auto____$1,entry__5306__auto__);
224
+ }
225
+ }));
226
+
227
+ (datascript.query.Context.getBasis = (function (){
228
+ return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"rels","rels",-884248584,null),new cljs.core.Symbol(null,"sources","sources",1319365103,null),new cljs.core.Symbol(null,"rules","rules",-1455523403,null)], null);
229
+ }));
230
+
231
+ (datascript.query.Context.cljs$lang$type = true);
232
+
233
+ (datascript.query.Context.cljs$lang$ctorPrSeq = (function (this__5346__auto__){
234
+ return (new cljs.core.List(null,"datascript.query/Context",null,(1),null));
235
+ }));
236
+
237
+ (datascript.query.Context.cljs$lang$ctorPrWriter = (function (this__5346__auto__,writer__5347__auto__){
238
+ return cljs.core._write(writer__5347__auto__,"datascript.query/Context");
239
+ }));
240
+
241
+ /**
242
+ * Positional factory function for datascript.query/Context.
243
+ */
244
+ datascript.query.__GT_Context = (function datascript$query$__GT_Context(rels,sources,rules){
245
+ return (new datascript.query.Context(rels,sources,rules,null,null,null));
246
+ });
247
+
248
+ /**
249
+ * Factory function for datascript.query/Context, taking a map of keywords to field values.
250
+ */
251
+ datascript.query.map__GT_Context = (function datascript$query$map__GT_Context(G__9254){
252
+ var extmap__5342__auto__ = (function (){var G__9264 = cljs.core.dissoc.cljs$core$IFn$_invoke$arity$variadic(G__9254,new cljs.core.Keyword(null,"rels","rels",1770187185),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"sources","sources",-321166424),new cljs.core.Keyword(null,"rules","rules",1198912366)], 0));
253
+ if(cljs.core.record_QMARK_(G__9254)){
254
+ return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,G__9264);
255
+ } else {
256
+ return G__9264;
257
+ }
258
+ })();
259
+ return (new datascript.query.Context(new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(G__9254),new cljs.core.Keyword(null,"sources","sources",-321166424).cljs$core$IFn$_invoke$arity$1(G__9254),new cljs.core.Keyword(null,"rules","rules",1198912366).cljs$core$IFn$_invoke$arity$1(G__9254),null,cljs.core.not_empty(extmap__5342__auto__),null));
260
+ });
261
+
262
+
263
+ /**
264
+ * @constructor
265
+ * @implements {cljs.core.IRecord}
266
+ * @implements {cljs.core.IKVReduce}
267
+ * @implements {cljs.core.IEquiv}
268
+ * @implements {cljs.core.IHash}
269
+ * @implements {cljs.core.ICollection}
270
+ * @implements {cljs.core.ICounted}
271
+ * @implements {cljs.core.ISeqable}
272
+ * @implements {cljs.core.IMeta}
273
+ * @implements {cljs.core.ICloneable}
274
+ * @implements {cljs.core.IPrintWithWriter}
275
+ * @implements {cljs.core.IIterable}
276
+ * @implements {cljs.core.IWithMeta}
277
+ * @implements {cljs.core.IAssociative}
278
+ * @implements {cljs.core.IMap}
279
+ * @implements {cljs.core.ILookup}
280
+ */
281
+ datascript.query.Relation = (function (attrs,tuples,__meta,__extmap,__hash){
282
+ this.attrs = attrs;
283
+ this.tuples = tuples;
284
+ this.__meta = __meta;
285
+ this.__extmap = __extmap;
286
+ this.__hash = __hash;
287
+ this.cljs$lang$protocol_mask$partition0$ = 2230716170;
288
+ this.cljs$lang$protocol_mask$partition1$ = 139264;
289
+ });
290
+ (datascript.query.Relation.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (this__5300__auto__,k__5301__auto__){
291
+ var self__ = this;
292
+ var this__5300__auto____$1 = this;
293
+ return this__5300__auto____$1.cljs$core$ILookup$_lookup$arity$3(null,k__5301__auto__,null);
294
+ }));
295
+
296
+ (datascript.query.Relation.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (this__5302__auto__,k9266,else__5303__auto__){
297
+ var self__ = this;
298
+ var this__5302__auto____$1 = this;
299
+ var G__9270 = k9266;
300
+ var G__9270__$1 = (((G__9270 instanceof cljs.core.Keyword))?G__9270.fqn:null);
301
+ switch (G__9270__$1) {
302
+ case "attrs":
303
+ return self__.attrs;
304
+
305
+ break;
306
+ case "tuples":
307
+ return self__.tuples;
308
+
309
+ break;
310
+ default:
311
+ return cljs.core.get.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k9266,else__5303__auto__);
312
+
313
+ }
314
+ }));
315
+
316
+ (datascript.query.Relation.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (this__5320__auto__,f__5321__auto__,init__5322__auto__){
317
+ var self__ = this;
318
+ var this__5320__auto____$1 = this;
319
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (ret__5323__auto__,p__9271){
320
+ var vec__9272 = p__9271;
321
+ var k__5324__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9272,(0),null);
322
+ var v__5325__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9272,(1),null);
323
+ return (f__5321__auto__.cljs$core$IFn$_invoke$arity$3 ? f__5321__auto__.cljs$core$IFn$_invoke$arity$3(ret__5323__auto__,k__5324__auto__,v__5325__auto__) : f__5321__auto__.call(null,ret__5323__auto__,k__5324__auto__,v__5325__auto__));
324
+ }),init__5322__auto__,this__5320__auto____$1);
325
+ }));
326
+
327
+ (datascript.query.Relation.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (this__5315__auto__,writer__5316__auto__,opts__5317__auto__){
328
+ var self__ = this;
329
+ var this__5315__auto____$1 = this;
330
+ var pr_pair__5318__auto__ = (function (keyval__5319__auto__){
331
+ return cljs.core.pr_sequential_writer(writer__5316__auto__,cljs.core.pr_writer,""," ","",opts__5317__auto__,keyval__5319__auto__);
332
+ });
333
+ return cljs.core.pr_sequential_writer(writer__5316__auto__,pr_pair__5318__auto__,"#datascript.query.Relation{",", ","}",opts__5317__auto__,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"attrs","attrs",-2090668713),self__.attrs],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"tuples","tuples",-676032639),self__.tuples],null))], null),self__.__extmap));
334
+ }));
335
+
336
+ (datascript.query.Relation.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (G__9265){
337
+ var self__ = this;
338
+ var G__9265__$1 = this;
339
+ return (new cljs.core.RecordIter((0),G__9265__$1,2,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"attrs","attrs",-2090668713),new cljs.core.Keyword(null,"tuples","tuples",-676032639)], null),(cljs.core.truth_(self__.__extmap)?cljs.core._iterator(self__.__extmap):cljs.core.nil_iter())));
340
+ }));
341
+
342
+ (datascript.query.Relation.prototype.cljs$core$IMeta$_meta$arity$1 = (function (this__5298__auto__){
343
+ var self__ = this;
344
+ var this__5298__auto____$1 = this;
345
+ return self__.__meta;
346
+ }));
347
+
348
+ (datascript.query.Relation.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (this__5295__auto__){
349
+ var self__ = this;
350
+ var this__5295__auto____$1 = this;
351
+ return (new datascript.query.Relation(self__.attrs,self__.tuples,self__.__meta,self__.__extmap,self__.__hash));
352
+ }));
353
+
354
+ (datascript.query.Relation.prototype.cljs$core$ICounted$_count$arity$1 = (function (this__5304__auto__){
355
+ var self__ = this;
356
+ var this__5304__auto____$1 = this;
357
+ return (2 + cljs.core.count(self__.__extmap));
358
+ }));
359
+
360
+ (datascript.query.Relation.prototype.cljs$core$IHash$_hash$arity$1 = (function (this__5296__auto__){
361
+ var self__ = this;
362
+ var this__5296__auto____$1 = this;
363
+ var h__5111__auto__ = self__.__hash;
364
+ if((!((h__5111__auto__ == null)))){
365
+ return h__5111__auto__;
366
+ } else {
367
+ var h__5111__auto____$1 = (function (coll__5297__auto__){
368
+ return (1107093117 ^ cljs.core.hash_unordered_coll(coll__5297__auto__));
369
+ })(this__5296__auto____$1);
370
+ (self__.__hash = h__5111__auto____$1);
371
+
372
+ return h__5111__auto____$1;
373
+ }
374
+ }));
375
+
376
+ (datascript.query.Relation.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this9267,other9268){
377
+ var self__ = this;
378
+ var this9267__$1 = this;
379
+ return (((!((other9268 == null)))) && ((((this9267__$1.constructor === other9268.constructor)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this9267__$1.attrs,other9268.attrs)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this9267__$1.tuples,other9268.tuples)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this9267__$1.__extmap,other9268.__extmap)))))))));
380
+ }));
381
+
382
+ (datascript.query.Relation.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (this__5310__auto__,k__5311__auto__){
383
+ var self__ = this;
384
+ var this__5310__auto____$1 = this;
385
+ if(cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"tuples","tuples",-676032639),null,new cljs.core.Keyword(null,"attrs","attrs",-2090668713),null], null), null),k__5311__auto__)){
386
+ return cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(cljs.core._with_meta(cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,this__5310__auto____$1),self__.__meta),k__5311__auto__);
387
+ } else {
388
+ return (new datascript.query.Relation(self__.attrs,self__.tuples,self__.__meta,cljs.core.not_empty(cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.__extmap,k__5311__auto__)),null));
389
+ }
390
+ }));
391
+
392
+ (datascript.query.Relation.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (this__5307__auto__,k9266){
393
+ var self__ = this;
394
+ var this__5307__auto____$1 = this;
395
+ var G__9275 = k9266;
396
+ var G__9275__$1 = (((G__9275 instanceof cljs.core.Keyword))?G__9275.fqn:null);
397
+ switch (G__9275__$1) {
398
+ case "attrs":
399
+ case "tuples":
400
+ return true;
401
+
402
+ break;
403
+ default:
404
+ return cljs.core.contains_QMARK_(self__.__extmap,k9266);
405
+
406
+ }
407
+ }));
408
+
409
+ (datascript.query.Relation.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (this__5308__auto__,k__5309__auto__,G__9265){
410
+ var self__ = this;
411
+ var this__5308__auto____$1 = this;
412
+ var pred__9276 = cljs.core.keyword_identical_QMARK_;
413
+ var expr__9277 = k__5309__auto__;
414
+ if(cljs.core.truth_((pred__9276.cljs$core$IFn$_invoke$arity$2 ? pred__9276.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"attrs","attrs",-2090668713),expr__9277) : pred__9276.call(null,new cljs.core.Keyword(null,"attrs","attrs",-2090668713),expr__9277)))){
415
+ return (new datascript.query.Relation(G__9265,self__.tuples,self__.__meta,self__.__extmap,null));
416
+ } else {
417
+ if(cljs.core.truth_((pred__9276.cljs$core$IFn$_invoke$arity$2 ? pred__9276.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"tuples","tuples",-676032639),expr__9277) : pred__9276.call(null,new cljs.core.Keyword(null,"tuples","tuples",-676032639),expr__9277)))){
418
+ return (new datascript.query.Relation(self__.attrs,G__9265,self__.__meta,self__.__extmap,null));
419
+ } else {
420
+ return (new datascript.query.Relation(self__.attrs,self__.tuples,self__.__meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k__5309__auto__,G__9265),null));
421
+ }
422
+ }
423
+ }));
424
+
425
+ (datascript.query.Relation.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this__5313__auto__){
426
+ var self__ = this;
427
+ var this__5313__auto____$1 = this;
428
+ return cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.MapEntry(new cljs.core.Keyword(null,"attrs","attrs",-2090668713),self__.attrs,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,"tuples","tuples",-676032639),self__.tuples,null))], null),self__.__extmap));
429
+ }));
430
+
431
+ (datascript.query.Relation.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (this__5299__auto__,G__9265){
432
+ var self__ = this;
433
+ var this__5299__auto____$1 = this;
434
+ return (new datascript.query.Relation(self__.attrs,self__.tuples,G__9265,self__.__extmap,self__.__hash));
435
+ }));
436
+
437
+ (datascript.query.Relation.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this__5305__auto__,entry__5306__auto__){
438
+ var self__ = this;
439
+ var this__5305__auto____$1 = this;
440
+ if(cljs.core.vector_QMARK_(entry__5306__auto__)){
441
+ return this__5305__auto____$1.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth(entry__5306__auto__,(0)),cljs.core._nth(entry__5306__auto__,(1)));
442
+ } else {
443
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,this__5305__auto____$1,entry__5306__auto__);
444
+ }
445
+ }));
446
+
447
+ (datascript.query.Relation.getBasis = (function (){
448
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"attrs","attrs",-450137186,null),new cljs.core.Symbol(null,"tuples","tuples",964498888,null)], null);
449
+ }));
450
+
451
+ (datascript.query.Relation.cljs$lang$type = true);
452
+
453
+ (datascript.query.Relation.cljs$lang$ctorPrSeq = (function (this__5346__auto__){
454
+ return (new cljs.core.List(null,"datascript.query/Relation",null,(1),null));
455
+ }));
456
+
457
+ (datascript.query.Relation.cljs$lang$ctorPrWriter = (function (this__5346__auto__,writer__5347__auto__){
458
+ return cljs.core._write(writer__5347__auto__,"datascript.query/Relation");
459
+ }));
460
+
461
+ /**
462
+ * Positional factory function for datascript.query/Relation.
463
+ */
464
+ datascript.query.__GT_Relation = (function datascript$query$__GT_Relation(attrs,tuples){
465
+ return (new datascript.query.Relation(attrs,tuples,null,null,null));
466
+ });
467
+
468
+ /**
469
+ * Factory function for datascript.query/Relation, taking a map of keywords to field values.
470
+ */
471
+ datascript.query.map__GT_Relation = (function datascript$query$map__GT_Relation(G__9269){
472
+ var extmap__5342__auto__ = (function (){var G__9279 = cljs.core.dissoc.cljs$core$IFn$_invoke$arity$variadic(G__9269,new cljs.core.Keyword(null,"attrs","attrs",-2090668713),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"tuples","tuples",-676032639)], 0));
473
+ if(cljs.core.record_QMARK_(G__9269)){
474
+ return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,G__9279);
475
+ } else {
476
+ return G__9279;
477
+ }
478
+ })();
479
+ return (new datascript.query.Relation(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(G__9269),new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(G__9269),null,cljs.core.not_empty(extmap__5342__auto__),null));
480
+ });
481
+
482
+ datascript.query.single = (function datascript$query$single(coll){
483
+ if((cljs.core.next(coll) == null)){
484
+ } else {
485
+ throw (new Error(["Assert failed: ","Expected single element","\n","(nil? (next coll))"].join('')));
486
+ }
487
+
488
+ return cljs.core.first(coll);
489
+ });
490
+ datascript.query.intersect_keys = (function datascript$query$intersect_keys(attrs1,attrs2){
491
+ return clojure.set.intersection.cljs$core$IFn$_invoke$arity$2(cljs.core.set(cljs.core.keys(attrs1)),cljs.core.set(cljs.core.keys(attrs2)));
492
+ });
493
+ datascript.query.concatv = (function datascript$query$concatv(var_args){
494
+ var args__5732__auto__ = [];
495
+ var len__5726__auto___9579 = arguments.length;
496
+ var i__5727__auto___9580 = (0);
497
+ while(true){
498
+ if((i__5727__auto___9580 < len__5726__auto___9579)){
499
+ args__5732__auto__.push((arguments[i__5727__auto___9580]));
500
+
501
+ var G__9581 = (i__5727__auto___9580 + (1));
502
+ i__5727__auto___9580 = G__9581;
503
+ continue;
504
+ } else {
505
+ }
506
+ break;
507
+ }
508
+
509
+ var argseq__5733__auto__ = ((((0) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((0)),(0),null)):null);
510
+ return datascript.query.concatv.cljs$core$IFn$_invoke$arity$variadic(argseq__5733__auto__);
511
+ });
512
+
513
+ (datascript.query.concatv.cljs$core$IFn$_invoke$arity$variadic = (function (xs){
514
+ return cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentVector.EMPTY,cljs.core.cat,xs);
515
+ }));
516
+
517
+ (datascript.query.concatv.cljs$lang$maxFixedArity = (0));
518
+
519
+ /** @this {Function} */
520
+ (datascript.query.concatv.cljs$lang$applyTo = (function (seq9280){
521
+ var self__5712__auto__ = this;
522
+ return self__5712__auto__.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq(seq9280));
523
+ }));
524
+
525
+ datascript.query.zip = (function datascript$query$zip(var_args){
526
+ var G__9285 = arguments.length;
527
+ switch (G__9285) {
528
+ case 2:
529
+ return datascript.query.zip.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
530
+
531
+ break;
532
+ default:
533
+ var args_arr__5751__auto__ = [];
534
+ var len__5726__auto___9583 = arguments.length;
535
+ var i__5727__auto___9584 = (0);
536
+ while(true){
537
+ if((i__5727__auto___9584 < len__5726__auto___9583)){
538
+ args_arr__5751__auto__.push((arguments[i__5727__auto___9584]));
539
+
540
+ var G__9585 = (i__5727__auto___9584 + (1));
541
+ i__5727__auto___9584 = G__9585;
542
+ continue;
543
+ } else {
544
+ }
545
+ break;
546
+ }
547
+
548
+ var argseq__5752__auto__ = ((((2) < args_arr__5751__auto__.length))?(new cljs.core.IndexedSeq(args_arr__5751__auto__.slice((2)),(0),null)):null);
549
+ return datascript.query.zip.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__5752__auto__);
550
+
551
+ }
552
+ });
553
+
554
+ (datascript.query.zip.cljs$core$IFn$_invoke$arity$2 = (function (a,b){
555
+ return cljs.core.mapv.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,a,b);
556
+ }));
557
+
558
+ (datascript.query.zip.cljs$core$IFn$_invoke$arity$variadic = (function (a,b,rest){
559
+ return cljs.core.apply.cljs$core$IFn$_invoke$arity$5(cljs.core.mapv,cljs.core.vector,a,b,rest);
560
+ }));
561
+
562
+ /** @this {Function} */
563
+ (datascript.query.zip.cljs$lang$applyTo = (function (seq9282){
564
+ var G__9283 = cljs.core.first(seq9282);
565
+ var seq9282__$1 = cljs.core.next(seq9282);
566
+ var G__9284 = cljs.core.first(seq9282__$1);
567
+ var seq9282__$2 = cljs.core.next(seq9282__$1);
568
+ var self__5711__auto__ = this;
569
+ return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__9283,G__9284,seq9282__$2);
570
+ }));
571
+
572
+ (datascript.query.zip.cljs$lang$maxFixedArity = (2));
573
+
574
+ datascript.query.same_keys_QMARK_ = (function datascript$query$same_keys_QMARK_(a,b){
575
+ return ((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.count(a),cljs.core.count(b))) && (((cljs.core.every_QMARK_((function (p1__9286_SHARP_){
576
+ return cljs.core.contains_QMARK_(b,p1__9286_SHARP_);
577
+ }),cljs.core.keys(a))) && (cljs.core.every_QMARK_((function (p1__9287_SHARP_){
578
+ return cljs.core.contains_QMARK_(a,p1__9287_SHARP_);
579
+ }),cljs.core.keys(b))))));
580
+ });
581
+ datascript.query.looks_like_QMARK_ = (function datascript$query$looks_like_QMARK_(pattern,form){
582
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Symbol(null,"_","_",-1201019570,null),pattern)){
583
+ return true;
584
+ } else {
585
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"*","*",345799209,null)], null),pattern)){
586
+ return cljs.core.sequential_QMARK_(form);
587
+ } else {
588
+ if((pattern instanceof cljs.core.Symbol)){
589
+ return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(form,pattern);
590
+ } else {
591
+ if(cljs.core.sequential_QMARK_(pattern)){
592
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.last(pattern),new cljs.core.Symbol(null,"*","*",345799209,null))){
593
+ return ((cljs.core.sequential_QMARK_(form)) && (cljs.core.every_QMARK_((function (p__9288){
594
+ var vec__9289 = p__9288;
595
+ var pattern_el = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9289,(0),null);
596
+ var form_el = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9289,(1),null);
597
+ return (datascript.query.looks_like_QMARK_.cljs$core$IFn$_invoke$arity$2 ? datascript.query.looks_like_QMARK_.cljs$core$IFn$_invoke$arity$2(pattern_el,form_el) : datascript.query.looks_like_QMARK_.call(null,pattern_el,form_el));
598
+ }),cljs.core.map.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,cljs.core.butlast(pattern),form))));
599
+ } else {
600
+ return ((cljs.core.sequential_QMARK_(form)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.count(form),cljs.core.count(pattern))) && (cljs.core.every_QMARK_((function (p__9292){
601
+ var vec__9293 = p__9292;
602
+ var pattern_el = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9293,(0),null);
603
+ var form_el = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9293,(1),null);
604
+ return (datascript.query.looks_like_QMARK_.cljs$core$IFn$_invoke$arity$2 ? datascript.query.looks_like_QMARK_.cljs$core$IFn$_invoke$arity$2(pattern_el,form_el) : datascript.query.looks_like_QMARK_.call(null,pattern_el,form_el));
605
+ }),cljs.core.map.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,pattern,form))))));
606
+ }
607
+ } else {
608
+ return (pattern.cljs$core$IFn$_invoke$arity$1 ? pattern.cljs$core$IFn$_invoke$arity$1(form) : pattern.call(null,form));
609
+
610
+ }
611
+ }
612
+ }
613
+ }
614
+ });
615
+ datascript.query.source_QMARK_ = (function datascript$query$source_QMARK_(sym){
616
+ return (((sym instanceof cljs.core.Symbol)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2("$",cljs.core.first(cljs.core.name(sym)))));
617
+ });
618
+ datascript.query.free_var_QMARK_ = (function datascript$query$free_var_QMARK_(sym){
619
+ return (((sym instanceof cljs.core.Symbol)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2("?",cljs.core.first(cljs.core.name(sym)))));
620
+ });
621
+ datascript.query.attr_QMARK_ = (function datascript$query$attr_QMARK_(form){
622
+ return (((form instanceof cljs.core.Keyword)) || (typeof form === 'string'));
623
+ });
624
+ datascript.query.lookup_ref_QMARK_ = (function datascript$query$lookup_ref_QMARK_(form){
625
+ return ((((cljs.core.sequential_QMARK_(form)) || (me.tonsky.persistent_sorted_set.arrays.array_QMARK_(form)))) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2((2),cljs.core.count(form))) && (datascript.query.attr_QMARK_(cljs.core.first(form))))));
626
+ });
627
+ datascript.query.join_tuples = (function datascript$query$join_tuples(t1,idxs1,t2,idxs2){
628
+ var l1 = idxs1.length;
629
+ var l2 = idxs2.length;
630
+ var res = me.tonsky.persistent_sorted_set.arrays.make_array((l1 + l2));
631
+ var n__5593__auto___9586 = l1;
632
+ var i_9587 = (0);
633
+ while(true){
634
+ if((i_9587 < n__5593__auto___9586)){
635
+ (res[i_9587] = (t1[(idxs1[i_9587])]));
636
+
637
+ var G__9588 = (i_9587 + (1));
638
+ i_9587 = G__9588;
639
+ continue;
640
+ } else {
641
+ }
642
+ break;
643
+ }
644
+
645
+ var n__5593__auto___9589 = l2;
646
+ var i_9590 = (0);
647
+ while(true){
648
+ if((i_9590 < n__5593__auto___9589)){
649
+ (res[(l1 + i_9590)] = (t2[(idxs2[i_9590])]));
650
+
651
+ var G__9591 = (i_9590 + (1));
652
+ i_9590 = G__9591;
653
+ continue;
654
+ } else {
655
+ }
656
+ break;
657
+ }
658
+
659
+ return res;
660
+ });
661
+ datascript.query.sum_rel_STAR_ = (function datascript$query$sum_rel_STAR_(attrs_a,tuples_a,attrs_b,tuples_b){
662
+ var idxb__GT_idxa = cljs.core.vec((function (){var iter__5480__auto__ = (function datascript$query$sum_rel_STAR__$_iter__9296(s__9297){
663
+ return (new cljs.core.LazySeq(null,(function (){
664
+ var s__9297__$1 = s__9297;
665
+ while(true){
666
+ var temp__5804__auto__ = cljs.core.seq(s__9297__$1);
667
+ if(temp__5804__auto__){
668
+ var s__9297__$2 = temp__5804__auto__;
669
+ if(cljs.core.chunked_seq_QMARK_(s__9297__$2)){
670
+ var c__5478__auto__ = cljs.core.chunk_first(s__9297__$2);
671
+ var size__5479__auto__ = cljs.core.count(c__5478__auto__);
672
+ var b__9299 = cljs.core.chunk_buffer(size__5479__auto__);
673
+ if((function (){var i__9298 = (0);
674
+ while(true){
675
+ if((i__9298 < size__5479__auto__)){
676
+ var vec__9300 = cljs.core._nth(c__5478__auto__,i__9298);
677
+ var sym = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9300,(0),null);
678
+ var idx_b = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9300,(1),null);
679
+ cljs.core.chunk_append(b__9299,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [idx_b,(attrs_a.cljs$core$IFn$_invoke$arity$1 ? attrs_a.cljs$core$IFn$_invoke$arity$1(sym) : attrs_a.call(null,sym))], null));
680
+
681
+ var G__9592 = (i__9298 + (1));
682
+ i__9298 = G__9592;
683
+ continue;
684
+ } else {
685
+ return true;
686
+ }
687
+ break;
688
+ }
689
+ })()){
690
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9299),datascript$query$sum_rel_STAR__$_iter__9296(cljs.core.chunk_rest(s__9297__$2)));
691
+ } else {
692
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9299),null);
693
+ }
694
+ } else {
695
+ var vec__9303 = cljs.core.first(s__9297__$2);
696
+ var sym = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9303,(0),null);
697
+ var idx_b = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9303,(1),null);
698
+ return cljs.core.cons(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [idx_b,(attrs_a.cljs$core$IFn$_invoke$arity$1 ? attrs_a.cljs$core$IFn$_invoke$arity$1(sym) : attrs_a.call(null,sym))], null),datascript$query$sum_rel_STAR__$_iter__9296(cljs.core.rest(s__9297__$2)));
699
+ }
700
+ } else {
701
+ return null;
702
+ }
703
+ break;
704
+ }
705
+ }),null,null));
706
+ });
707
+ return iter__5480__auto__(attrs_b);
708
+ })());
709
+ var tlen = (cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(cljs.core.max,cljs.core.vals(attrs_a)) + (1));
710
+ var tuples_SINGLEQUOTE_ = cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc,tuple_b){
711
+ var tuple_SINGLEQUOTE_ = me.tonsky.persistent_sorted_set.arrays.make_array(tlen);
712
+ var seq__9306_9593 = cljs.core.seq(idxb__GT_idxa);
713
+ var chunk__9307_9594 = null;
714
+ var count__9308_9595 = (0);
715
+ var i__9309_9596 = (0);
716
+ while(true){
717
+ if((i__9309_9596 < count__9308_9595)){
718
+ var vec__9316_9597 = chunk__9307_9594.cljs$core$IIndexed$_nth$arity$2(null,i__9309_9596);
719
+ var idx_b_9598 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9316_9597,(0),null);
720
+ var idx_a_9599 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9316_9597,(1),null);
721
+ (tuple_SINGLEQUOTE_[idx_a_9599] = (tuple_b[idx_b_9598]));
722
+
723
+
724
+ var G__9600 = seq__9306_9593;
725
+ var G__9601 = chunk__9307_9594;
726
+ var G__9602 = count__9308_9595;
727
+ var G__9603 = (i__9309_9596 + (1));
728
+ seq__9306_9593 = G__9600;
729
+ chunk__9307_9594 = G__9601;
730
+ count__9308_9595 = G__9602;
731
+ i__9309_9596 = G__9603;
732
+ continue;
733
+ } else {
734
+ var temp__5804__auto___9604 = cljs.core.seq(seq__9306_9593);
735
+ if(temp__5804__auto___9604){
736
+ var seq__9306_9605__$1 = temp__5804__auto___9604;
737
+ if(cljs.core.chunked_seq_QMARK_(seq__9306_9605__$1)){
738
+ var c__5525__auto___9606 = cljs.core.chunk_first(seq__9306_9605__$1);
739
+ var G__9607 = cljs.core.chunk_rest(seq__9306_9605__$1);
740
+ var G__9608 = c__5525__auto___9606;
741
+ var G__9609 = cljs.core.count(c__5525__auto___9606);
742
+ var G__9610 = (0);
743
+ seq__9306_9593 = G__9607;
744
+ chunk__9307_9594 = G__9608;
745
+ count__9308_9595 = G__9609;
746
+ i__9309_9596 = G__9610;
747
+ continue;
748
+ } else {
749
+ var vec__9319_9611 = cljs.core.first(seq__9306_9605__$1);
750
+ var idx_b_9612 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9319_9611,(0),null);
751
+ var idx_a_9613 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9319_9611,(1),null);
752
+ (tuple_SINGLEQUOTE_[idx_a_9613] = (tuple_b[idx_b_9612]));
753
+
754
+
755
+ var G__9614 = cljs.core.next(seq__9306_9605__$1);
756
+ var G__9615 = null;
757
+ var G__9616 = (0);
758
+ var G__9617 = (0);
759
+ seq__9306_9593 = G__9614;
760
+ chunk__9307_9594 = G__9615;
761
+ count__9308_9595 = G__9616;
762
+ i__9309_9596 = G__9617;
763
+ continue;
764
+ }
765
+ } else {
766
+ }
767
+ }
768
+ break;
769
+ }
770
+
771
+ return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(acc,tuple_SINGLEQUOTE_);
772
+ }),cljs.core.transient$(cljs.core.vec(tuples_a)),tuples_b));
773
+ return (new datascript.query.Relation(attrs_a,tuples_SINGLEQUOTE_,null,null,null));
774
+ });
775
+ datascript.query.sum_rel = (function datascript$query$sum_rel(a,b){
776
+ var map__9322 = a;
777
+ var map__9322__$1 = cljs.core.__destructure_map(map__9322);
778
+ var attrs_a = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__9322__$1,new cljs.core.Keyword(null,"attrs","attrs",-2090668713));
779
+ var tuples_a = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__9322__$1,new cljs.core.Keyword(null,"tuples","tuples",-676032639));
780
+ var map__9323 = b;
781
+ var map__9323__$1 = cljs.core.__destructure_map(map__9323);
782
+ var attrs_b = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__9323__$1,new cljs.core.Keyword(null,"attrs","attrs",-2090668713));
783
+ var tuples_b = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__9323__$1,new cljs.core.Keyword(null,"tuples","tuples",-676032639));
784
+ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(attrs_a,attrs_b)){
785
+ return (new datascript.query.Relation(attrs_a,cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.vec(tuples_a),tuples_b),null,null,null));
786
+ } else {
787
+ if(cljs.core.empty_QMARK_(tuples_a)){
788
+ return b;
789
+ } else {
790
+ if(cljs.core.empty_QMARK_(tuples_b)){
791
+ return a;
792
+ } else {
793
+ if((!(datascript.query.same_keys_QMARK_(attrs_a,attrs_b)))){
794
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Can\u2019t sum relations with different attrs: ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([attrs_a], 0))," and ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([attrs_b], 0))].join(''),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","where","query/where",-1935159429)], null));
795
+ } else {
796
+ if(cljs.core.every_QMARK_(cljs.core.number_QMARK_,cljs.core.vals(attrs_a))){
797
+ return datascript.query.sum_rel_STAR_(attrs_a,tuples_a,attrs_b,tuples_b);
798
+ } else {
799
+ var number_attrs = cljs.core.zipmap(cljs.core.keys(attrs_a),cljs.core.range.cljs$core$IFn$_invoke$arity$0());
800
+ var G__9324 = datascript.query.sum_rel_STAR_(number_attrs,cljs.core.PersistentVector.EMPTY,attrs_a,tuples_a);
801
+ var G__9325 = b;
802
+ return (datascript.query.sum_rel.cljs$core$IFn$_invoke$arity$2 ? datascript.query.sum_rel.cljs$core$IFn$_invoke$arity$2(G__9324,G__9325) : datascript.query.sum_rel.call(null,G__9324,G__9325));
803
+
804
+ }
805
+ }
806
+ }
807
+ }
808
+ }
809
+ });
810
+ datascript.query.prod_rel = (function datascript$query$prod_rel(var_args){
811
+ var G__9327 = arguments.length;
812
+ switch (G__9327) {
813
+ case 0:
814
+ return datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$0();
815
+
816
+ break;
817
+ case 2:
818
+ return datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
819
+
820
+ break;
821
+ default:
822
+ throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
823
+
824
+ }
825
+ });
826
+
827
+ (datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$0 = (function (){
828
+ return (new datascript.query.Relation(cljs.core.PersistentArrayMap.EMPTY,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [me.tonsky.persistent_sorted_set.arrays.make_array((0))], null),null,null,null));
829
+ }));
830
+
831
+ (datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$2 = (function (rel1,rel2){
832
+ var attrs1 = cljs.core.keys(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel1));
833
+ var attrs2 = cljs.core.keys(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel2));
834
+ var idxs1 = cljs.core.to_array(cljs.core.map.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel1),attrs1));
835
+ var idxs2 = cljs.core.to_array(cljs.core.map.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel2),attrs2));
836
+ return (new datascript.query.Relation(cljs.core.zipmap(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(attrs1,attrs2),cljs.core.range.cljs$core$IFn$_invoke$arity$0()),cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc,t1){
837
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc__$1,t2){
838
+ return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(acc__$1,datascript.query.join_tuples(t1,idxs1,t2,idxs2));
839
+ }),acc,new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(rel2));
840
+ }),cljs.core.transient$(cljs.core.PersistentVector.EMPTY),new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(rel1))),null,null,null));
841
+ }));
842
+
843
+ (datascript.query.prod_rel.cljs$lang$maxFixedArity = 2);
844
+
845
+ datascript.query.parse_rules = (function datascript$query$parse_rules(rules){
846
+ var rules__$1 = ((typeof rules === 'string')?cljs.reader.read_string.cljs$core$IFn$_invoke$arity$1(rules):rules);
847
+ datascript.parser.parse_rules(rules__$1);
848
+
849
+ return cljs.core.group_by(cljs.core.ffirst,rules__$1);
850
+ });
851
+ datascript.query.empty_rel = (function datascript$query$empty_rel(binding){
852
+ var vars = cljs.core.map.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"symbol","symbol",-1038572696),datascript.parser.collect_vars_distinct(binding));
853
+ return (new datascript.query.Relation(cljs.core.zipmap(vars,cljs.core.range.cljs$core$IFn$_invoke$arity$0()),cljs.core.PersistentVector.EMPTY,null,null,null));
854
+ });
855
+
856
+ /**
857
+ * @interface
858
+ */
859
+ datascript.query.IBinding = function(){};
860
+
861
+ var datascript$query$IBinding$in__GT_rel$dyn_9619 = (function (binding,value){
862
+ var x__5350__auto__ = (((binding == null))?null:binding);
863
+ var m__5351__auto__ = (datascript.query.in__GT_rel[goog.typeOf(x__5350__auto__)]);
864
+ if((!((m__5351__auto__ == null)))){
865
+ return (m__5351__auto__.cljs$core$IFn$_invoke$arity$2 ? m__5351__auto__.cljs$core$IFn$_invoke$arity$2(binding,value) : m__5351__auto__.call(null,binding,value));
866
+ } else {
867
+ var m__5349__auto__ = (datascript.query.in__GT_rel["_"]);
868
+ if((!((m__5349__auto__ == null)))){
869
+ return (m__5349__auto__.cljs$core$IFn$_invoke$arity$2 ? m__5349__auto__.cljs$core$IFn$_invoke$arity$2(binding,value) : m__5349__auto__.call(null,binding,value));
870
+ } else {
871
+ throw cljs.core.missing_protocol("IBinding.in->rel",binding);
872
+ }
873
+ }
874
+ });
875
+ datascript.query.in__GT_rel = (function datascript$query$in__GT_rel(binding,value){
876
+ if((((!((binding == null)))) && ((!((binding.datascript$query$IBinding$in__GT_rel$arity$2 == null)))))){
877
+ return binding.datascript$query$IBinding$in__GT_rel$arity$2(binding,value);
878
+ } else {
879
+ return datascript$query$IBinding$in__GT_rel$dyn_9619(binding,value);
880
+ }
881
+ });
882
+
883
+ (datascript.parser.BindIgnore.prototype.datascript$query$IBinding$ = cljs.core.PROTOCOL_SENTINEL);
884
+
885
+ (datascript.parser.BindIgnore.prototype.datascript$query$IBinding$in__GT_rel$arity$2 = (function (_,___$1){
886
+ var ___$2 = this;
887
+ return datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$0();
888
+ }));
889
+
890
+ (datascript.parser.BindScalar.prototype.datascript$query$IBinding$ = cljs.core.PROTOCOL_SENTINEL);
891
+
892
+ (datascript.parser.BindScalar.prototype.datascript$query$IBinding$in__GT_rel$arity$2 = (function (binding,value){
893
+ var binding__$1 = this;
894
+ return (new datascript.query.Relation(cljs.core.PersistentArrayMap.createAsIfByAssoc([cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(binding__$1,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"variable","variable",-281346492),new cljs.core.Keyword(null,"symbol","symbol",-1038572696)], null)),(0)]),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [value], null))], null),null,null,null));
895
+ }));
896
+
897
+ (datascript.parser.BindColl.prototype.datascript$query$IBinding$ = cljs.core.PROTOCOL_SENTINEL);
898
+
899
+ (datascript.parser.BindColl.prototype.datascript$query$IBinding$in__GT_rel$arity$2 = (function (binding,coll){
900
+ var binding__$1 = this;
901
+ if((!(datascript.db.seqable_QMARK_(coll)))){
902
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Cannot bind value ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([coll], 0))," to collection ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.parser.source(binding__$1)], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","binding","query/binding",698240489),new cljs.core.Keyword(null,"value","value",305978217),coll,new cljs.core.Keyword(null,"binding","binding",539932593),datascript.parser.source(binding__$1)], null));
903
+ } else {
904
+ if(cljs.core.empty_QMARK_(coll)){
905
+ return datascript.query.empty_rel(binding__$1);
906
+ } else {
907
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.sum_rel,cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__9328_SHARP_){
908
+ return datascript.query.in__GT_rel(binding__$1.binding,p1__9328_SHARP_);
909
+ }),coll));
910
+
911
+ }
912
+ }
913
+ }));
914
+
915
+ (datascript.parser.BindTuple.prototype.datascript$query$IBinding$ = cljs.core.PROTOCOL_SENTINEL);
916
+
917
+ (datascript.parser.BindTuple.prototype.datascript$query$IBinding$in__GT_rel$arity$2 = (function (binding,coll){
918
+ var binding__$1 = this;
919
+ if((!(datascript.db.seqable_QMARK_(coll)))){
920
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Cannot bind value ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([coll], 0))," to tuple ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.parser.source(binding__$1)], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","binding","query/binding",698240489),new cljs.core.Keyword(null,"value","value",305978217),coll,new cljs.core.Keyword(null,"binding","binding",539932593),datascript.parser.source(binding__$1)], null));
921
+ } else {
922
+ if((cljs.core.count(coll) < cljs.core.count(binding__$1.bindings))){
923
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Not enough elements in a collection ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([coll], 0))," to bind tuple ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.parser.source(binding__$1)], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","binding","query/binding",698240489),new cljs.core.Keyword(null,"value","value",305978217),coll,new cljs.core.Keyword(null,"binding","binding",539932593),datascript.parser.source(binding__$1)], null));
924
+ } else {
925
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.prod_rel,cljs.core.map.cljs$core$IFn$_invoke$arity$3((function (p1__9329_SHARP_,p2__9330_SHARP_){
926
+ return datascript.query.in__GT_rel(p1__9329_SHARP_,p2__9330_SHARP_);
927
+ }),binding__$1.bindings,coll));
928
+
929
+ }
930
+ }
931
+ }));
932
+ datascript.query.resolve_in = (function datascript$query$resolve_in(context,p__9331){
933
+ var vec__9332 = p__9331;
934
+ var binding = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9332,(0),null);
935
+ var value = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9332,(1),null);
936
+ if((((binding instanceof datascript.parser.BindScalar)) && ((new cljs.core.Keyword(null,"variable","variable",-281346492).cljs$core$IFn$_invoke$arity$1(binding) instanceof datascript.parser.SrcVar)))){
937
+ return cljs.core.update.cljs$core$IFn$_invoke$arity$5(context,new cljs.core.Keyword(null,"sources","sources",-321166424),cljs.core.assoc,cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(binding,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"variable","variable",-281346492),new cljs.core.Keyword(null,"symbol","symbol",-1038572696)], null)),value);
938
+ } else {
939
+ if((((binding instanceof datascript.parser.BindScalar)) && ((new cljs.core.Keyword(null,"variable","variable",-281346492).cljs$core$IFn$_invoke$arity$1(binding) instanceof datascript.parser.RulesVar)))){
940
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(context,new cljs.core.Keyword(null,"rules","rules",1198912366),datascript.query.parse_rules(value));
941
+ } else {
942
+ return cljs.core.update.cljs$core$IFn$_invoke$arity$4(context,new cljs.core.Keyword(null,"rels","rels",1770187185),cljs.core.conj,datascript.query.in__GT_rel(binding,value));
943
+
944
+ }
945
+ }
946
+ });
947
+ datascript.query.resolve_ins = (function datascript$query$resolve_ins(context,bindings,values){
948
+ var cb = cljs.core.count(bindings);
949
+ var cv = cljs.core.count(values);
950
+ if((cb < cv)){
951
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Extra inputs passed, expected: ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((function (p1__9335_SHARP_){
952
+ return new cljs.core.Keyword(null,"source","source",-433931539).cljs$core$IFn$_invoke$arity$1(cljs.core.meta(p1__9335_SHARP_));
953
+ }),bindings)], 0)),", got: ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cv], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","inputs","query/inputs",1042810394),new cljs.core.Keyword(null,"expected","expected",1583670997),bindings,new cljs.core.Keyword(null,"got","got",-1674745710),values], null));
954
+ } else {
955
+ if((cb > cv)){
956
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Too few inputs passed, expected: ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((function (p1__9336_SHARP_){
957
+ return new cljs.core.Keyword(null,"source","source",-433931539).cljs$core$IFn$_invoke$arity$1(cljs.core.meta(p1__9336_SHARP_));
958
+ }),bindings)], 0)),", got: ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cv], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","inputs","query/inputs",1042810394),new cljs.core.Keyword(null,"expected","expected",1583670997),bindings,new cljs.core.Keyword(null,"got","got",-1674745710),values], null));
959
+ } else {
960
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.query.resolve_in,context,cljs.core.zipmap(bindings,values));
961
+
962
+ }
963
+ }
964
+ });
965
+ /**
966
+ * List of symbols in current pattern that might potentiall be resolved to refs
967
+ */
968
+ datascript.query._STAR_lookup_attrs_STAR_ = null;
969
+ /**
970
+ * Default pattern source. Lookup refs, patterns, rules will be resolved with it
971
+ */
972
+ datascript.query._STAR_implicit_source_STAR_ = null;
973
+ datascript.query.getter_fn = (function datascript$query$getter_fn(attrs,attr){
974
+ var idx = (attrs.cljs$core$IFn$_invoke$arity$1 ? attrs.cljs$core$IFn$_invoke$arity$1(attr) : attrs.call(null,attr));
975
+ if(cljs.core.contains_QMARK_(datascript.query._STAR_lookup_attrs_STAR_,attr)){
976
+ if(cljs.core.int_QMARK_(idx)){
977
+ var idx__$1 = (idx | (0));
978
+ return (function datascript$query$getter_fn_$_contained_int_getter_fn(tuple){
979
+ var eid = (tuple[idx__$1]);
980
+ if(typeof eid === 'number'){
981
+ return eid;
982
+ } else {
983
+ if(cljs.core.sequential_QMARK_(eid)){
984
+ return datascript.db.entid(datascript.query._STAR_implicit_source_STAR_,eid);
985
+ } else {
986
+ if(me.tonsky.persistent_sorted_set.arrays.array_QMARK_(eid)){
987
+ return datascript.db.entid(datascript.query._STAR_implicit_source_STAR_,eid);
988
+ } else {
989
+ return eid;
990
+
991
+ }
992
+ }
993
+ }
994
+ });
995
+ } else {
996
+ return (function datascript$query$getter_fn_$_contained_getter_fn(tuple){
997
+ var eid = (tuple[idx]);
998
+ if(typeof eid === 'number'){
999
+ return eid;
1000
+ } else {
1001
+ if(cljs.core.sequential_QMARK_(eid)){
1002
+ return datascript.db.entid(datascript.query._STAR_implicit_source_STAR_,eid);
1003
+ } else {
1004
+ if(me.tonsky.persistent_sorted_set.arrays.array_QMARK_(eid)){
1005
+ return datascript.db.entid(datascript.query._STAR_implicit_source_STAR_,eid);
1006
+ } else {
1007
+ return eid;
1008
+
1009
+ }
1010
+ }
1011
+ }
1012
+ });
1013
+ }
1014
+ } else {
1015
+ if(cljs.core.int_QMARK_(idx)){
1016
+ var idx__$1 = (idx | (0));
1017
+ return (function datascript$query$getter_fn_$_int_getter(tuple){
1018
+ return (tuple[idx__$1]);
1019
+ });
1020
+ } else {
1021
+ return (function datascript$query$getter_fn_$_getter(tuple){
1022
+ return (tuple[idx]);
1023
+ });
1024
+ }
1025
+ }
1026
+ });
1027
+ datascript.query.tuple_key_fn = (function datascript$query$tuple_key_fn(attrs,common_attrs){
1028
+ var n = cljs.core.count(common_attrs);
1029
+ if((n === (1))){
1030
+ return datascript.query.getter_fn(attrs,cljs.core.first(common_attrs));
1031
+ } else {
1032
+ var getters_arr = cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(common_attrs);
1033
+ var i = (0);
1034
+ while(true){
1035
+ if((i < n)){
1036
+ (getters_arr[i] = datascript.query.getter_fn(attrs,(getters_arr[i])));
1037
+
1038
+ var G__9620 = (i + (1));
1039
+ i = G__9620;
1040
+ continue;
1041
+ } else {
1042
+ return ((function (i,getters_arr,n){
1043
+ return (function (tuple){
1044
+ return cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$1(getters_arr.map(((function (i,getters_arr,n){
1045
+ return (function (p1__9337_SHARP_){
1046
+ return (p1__9337_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__9337_SHARP_.cljs$core$IFn$_invoke$arity$1(tuple) : p1__9337_SHARP_.call(null,tuple));
1047
+ });})(i,getters_arr,n))
1048
+ ));
1049
+ });
1050
+ ;})(i,getters_arr,n))
1051
+ }
1052
+ break;
1053
+ }
1054
+ }
1055
+ });
1056
+ datascript.query._group_by = (function datascript$query$_group_by(f,init,coll){
1057
+ return cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (ret,x){
1058
+ var k = (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(x) : f.call(null,x));
1059
+ return cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(ret,k,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(ret,k,init),x));
1060
+ }),cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY),coll));
1061
+ });
1062
+ datascript.query.hash_attrs = (function datascript$query$hash_attrs(key_fn,tuples){
1063
+ return datascript.query._group_by(key_fn,cljs.core.List.EMPTY,tuples);
1064
+ });
1065
+ datascript.query.hash_join = (function datascript$query$hash_join(rel1,rel2){
1066
+ var tuples1 = new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(rel1);
1067
+ var tuples2 = new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(rel2);
1068
+ var attrs1 = new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel1);
1069
+ var attrs2 = new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel2);
1070
+ var common_attrs = cljs.core.vec(datascript.query.intersect_keys(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel1),new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel2)));
1071
+ var keep_attrs1 = cljs.core.keys(attrs1);
1072
+ var keep_attrs2 = cljs.core.persistent_BANG_(cljs.core.reduce_kv((function datascript$query$hash_join_$_keeper(vec,k,_){
1073
+ if(cljs.core.truth_((attrs1.cljs$core$IFn$_invoke$arity$1 ? attrs1.cljs$core$IFn$_invoke$arity$1(k) : attrs1.call(null,k)))){
1074
+ return vec;
1075
+ } else {
1076
+ return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(vec,k);
1077
+ }
1078
+ }),cljs.core.transient$(cljs.core.PersistentVector.EMPTY),attrs2));
1079
+ var keep_idxs1 = cljs.core.to_array(cljs.core.vals(attrs1));
1080
+ var keep_idxs2 = cljs.core.to_array(cljs.core.__GT_Eduction(cljs.core.map.cljs$core$IFn$_invoke$arity$1(attrs2),keep_attrs2));
1081
+ var key_fn1 = datascript.query.tuple_key_fn(attrs1,common_attrs);
1082
+ var key_fn2 = datascript.query.tuple_key_fn(attrs2,common_attrs);
1083
+ var hash = datascript.query.hash_attrs(key_fn1,tuples1);
1084
+ var new_tuples = cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function datascript$query$hash_join_$_outer(acc,tuple2){
1085
+ var key = key_fn2(tuple2);
1086
+ var temp__5806__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(hash,key);
1087
+ if((temp__5806__auto__ == null)){
1088
+ return acc;
1089
+ } else {
1090
+ var tuples1__$1 = temp__5806__auto__;
1091
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function datascript$query$hash_join_$_outer_$_inner(acc__$1,tuple1){
1092
+ return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(acc__$1,datascript.query.join_tuples(tuple1,keep_idxs1,tuple2,keep_idxs2));
1093
+ }),acc,tuples1__$1);
1094
+ }
1095
+ }),cljs.core.transient$(cljs.core.PersistentVector.EMPTY),tuples2));
1096
+ return (new datascript.query.Relation(cljs.core.zipmap(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(keep_attrs1,keep_attrs2),cljs.core.range.cljs$core$IFn$_invoke$arity$0()),new_tuples,null,null,null));
1097
+ });
1098
+ datascript.query.subtract_rel = (function datascript$query$subtract_rel(a,b){
1099
+ var map__9339 = a;
1100
+ var map__9339__$1 = cljs.core.__destructure_map(map__9339);
1101
+ var attrs_a = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__9339__$1,new cljs.core.Keyword(null,"attrs","attrs",-2090668713));
1102
+ var tuples_a = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__9339__$1,new cljs.core.Keyword(null,"tuples","tuples",-676032639));
1103
+ var map__9340 = b;
1104
+ var map__9340__$1 = cljs.core.__destructure_map(map__9340);
1105
+ var attrs_b = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__9340__$1,new cljs.core.Keyword(null,"attrs","attrs",-2090668713));
1106
+ var tuples_b = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__9340__$1,new cljs.core.Keyword(null,"tuples","tuples",-676032639));
1107
+ var attrs = cljs.core.vec(datascript.query.intersect_keys(attrs_a,attrs_b));
1108
+ var key_fn_b = datascript.query.tuple_key_fn(attrs_b,attrs);
1109
+ var hash = datascript.query.hash_attrs(key_fn_b,tuples_b);
1110
+ var key_fn_a = datascript.query.tuple_key_fn(attrs_a,attrs);
1111
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(a,new cljs.core.Keyword(null,"tuples","tuples",-676032639),cljs.core.filterv((function (p1__9338_SHARP_){
1112
+ return ((function (){var G__9341 = key_fn_a(p1__9338_SHARP_);
1113
+ return (hash.cljs$core$IFn$_invoke$arity$1 ? hash.cljs$core$IFn$_invoke$arity$1(G__9341) : hash.call(null,G__9341));
1114
+ })() == null);
1115
+ }),tuples_a));
1116
+ });
1117
+ datascript.query.rel_with_attr = (function datascript$query$rel_with_attr(context,sym){
1118
+ return cljs.core.some((function (p1__9342_SHARP_){
1119
+ if(cljs.core.contains_QMARK_(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(p1__9342_SHARP_),sym)){
1120
+ return p1__9342_SHARP_;
1121
+ } else {
1122
+ return null;
1123
+ }
1124
+ }),new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(context));
1125
+ });
1126
+ datascript.query.substitute_constant = (function datascript$query$substitute_constant(context,pattern_el){
1127
+ if(datascript.query.free_var_QMARK_(pattern_el)){
1128
+ var temp__5808__auto__ = datascript.query.rel_with_attr(context,pattern_el);
1129
+ if((temp__5808__auto__ == null)){
1130
+ return null;
1131
+ } else {
1132
+ var rel = temp__5808__auto__;
1133
+ var temp__5808__auto____$1 = cljs.core.first(new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(rel));
1134
+ if((temp__5808__auto____$1 == null)){
1135
+ return null;
1136
+ } else {
1137
+ var tuple = temp__5808__auto____$1;
1138
+ if((cljs.core.fnext(new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(rel)) == null)){
1139
+ var idx = cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel),pattern_el);
1140
+ return (tuple[idx]);
1141
+ } else {
1142
+ return null;
1143
+ }
1144
+ }
1145
+ }
1146
+ } else {
1147
+ return null;
1148
+ }
1149
+ });
1150
+ datascript.query.substitute_constants = (function datascript$query$substitute_constants(context,pattern){
1151
+ return cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((function (p1__9343_SHARP_){
1152
+ var or__5002__auto__ = datascript.query.substitute_constant(context,p1__9343_SHARP_);
1153
+ if(cljs.core.truth_(or__5002__auto__)){
1154
+ return or__5002__auto__;
1155
+ } else {
1156
+ return p1__9343_SHARP_;
1157
+ }
1158
+ }),pattern);
1159
+ });
1160
+ datascript.query.resolve_pattern_lookup_refs = (function datascript$query$resolve_pattern_lookup_refs(source,pattern){
1161
+ if((((!((source == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === source.datascript$db$IDB$))))?true:(((!source.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(datascript.db.IDB,source):false)):cljs.core.native_satisfies_QMARK_(datascript.db.IDB,source))){
1162
+ var vec__9345 = pattern;
1163
+ var e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9345,(0),null);
1164
+ var a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9345,(1),null);
1165
+ var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9345,(2),null);
1166
+ var tx = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9345,(3),null);
1167
+ var e_SINGLEQUOTE_ = ((((datascript.query.lookup_ref_QMARK_(e)) || (datascript.query.attr_QMARK_(e))))?datascript.db.entid_strict(source,e):e);
1168
+ var v_SINGLEQUOTE_ = (cljs.core.truth_((function (){var and__5000__auto__ = v;
1169
+ if(cljs.core.truth_(and__5000__auto__)){
1170
+ return ((datascript.query.attr_QMARK_(a)) && (((datascript.db.ref_QMARK_(source,a)) && (((datascript.query.lookup_ref_QMARK_(v)) || (datascript.query.attr_QMARK_(v)))))));
1171
+ } else {
1172
+ return and__5000__auto__;
1173
+ }
1174
+ })())?datascript.db.entid_strict(source,v):v);
1175
+ var tx_SINGLEQUOTE_ = ((datascript.query.lookup_ref_QMARK_(tx))?datascript.db.entid_strict(source,tx):tx);
1176
+ return cljs.core.subvec.cljs$core$IFn$_invoke$arity$3(new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [e_SINGLEQUOTE_,a,v_SINGLEQUOTE_,tx_SINGLEQUOTE_], null),(0),cljs.core.count(pattern));
1177
+ } else {
1178
+ return pattern;
1179
+ }
1180
+ });
1181
+ datascript.query.lookup_pattern_db = (function datascript$query$lookup_pattern_db(context,db,pattern){
1182
+ var search_pattern = cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((function (p1__9348_SHARP_){
1183
+ if(((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(p1__9348_SHARP_,new cljs.core.Symbol(null,"_","_",-1201019570,null))) || (datascript.query.free_var_QMARK_(p1__9348_SHARP_)))){
1184
+ return null;
1185
+ } else {
1186
+ return p1__9348_SHARP_;
1187
+ }
1188
+ }),datascript.query.resolve_pattern_lookup_refs(db,datascript.query.substitute_constants(context,pattern)));
1189
+ var datoms = datascript.db._search(db,search_pattern);
1190
+ var attr__GT_prop = cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (p__9349){
1191
+ var vec__9350 = p__9349;
1192
+ var s = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9350,(0),null);
1193
+ var _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9350,(1),null);
1194
+ return datascript.query.free_var_QMARK_(s);
1195
+ }),cljs.core.map.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,pattern,new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, ["e","a","v","tx"], null))));
1196
+ return (new datascript.query.Relation(attr__GT_prop,datoms,null,null,null));
1197
+ });
1198
+ datascript.query.matches_pattern_QMARK_ = (function datascript$query$matches_pattern_QMARK_(pattern,tuple){
1199
+ var tuple__$1 = tuple;
1200
+ var pattern__$1 = pattern;
1201
+ while(true){
1202
+ if(cljs.core.truth_((function (){var and__5000__auto__ = tuple__$1;
1203
+ if(cljs.core.truth_(and__5000__auto__)){
1204
+ return pattern__$1;
1205
+ } else {
1206
+ return and__5000__auto__;
1207
+ }
1208
+ })())){
1209
+ var t = cljs.core.first(tuple__$1);
1210
+ var p = cljs.core.first(pattern__$1);
1211
+ if(((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(p,new cljs.core.Symbol(null,"_","_",-1201019570,null))) || (((datascript.query.free_var_QMARK_(p)) || (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(t,p)))))){
1212
+ var G__9621 = cljs.core.next(tuple__$1);
1213
+ var G__9622 = cljs.core.next(pattern__$1);
1214
+ tuple__$1 = G__9621;
1215
+ pattern__$1 = G__9622;
1216
+ continue;
1217
+ } else {
1218
+ return false;
1219
+ }
1220
+ } else {
1221
+ return true;
1222
+ }
1223
+ break;
1224
+ }
1225
+ });
1226
+ datascript.query.lookup_pattern_coll = (function datascript$query$lookup_pattern_coll(context,coll,pattern){
1227
+ var data = cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (p1__9353_SHARP_){
1228
+ return datascript.query.matches_pattern_QMARK_(pattern,p1__9353_SHARP_);
1229
+ }),coll);
1230
+ var attr__GT_idx = cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (p__9354){
1231
+ var vec__9355 = p__9354;
1232
+ var s = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9355,(0),null);
1233
+ var _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9355,(1),null);
1234
+ return datascript.query.free_var_QMARK_(s);
1235
+ }),cljs.core.map.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,pattern,cljs.core.range.cljs$core$IFn$_invoke$arity$0())));
1236
+ return (new datascript.query.Relation(attr__GT_idx,cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(cljs.core.to_array,data),null,null,null));
1237
+ });
1238
+ datascript.query.normalize_pattern_clause = (function datascript$query$normalize_pattern_clause(clause){
1239
+ if(datascript.query.source_QMARK_(cljs.core.first(clause))){
1240
+ return clause;
1241
+ } else {
1242
+ return cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"$","$",-1580747756,null)], null),clause);
1243
+ }
1244
+ });
1245
+ datascript.query.lookup_pattern = (function datascript$query$lookup_pattern(context,source,pattern){
1246
+ if((((!((source == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === source.datascript$db$ISearch$))))?true:(((!source.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(datascript.db.ISearch,source):false)):cljs.core.native_satisfies_QMARK_(datascript.db.ISearch,source))){
1247
+ return datascript.query.lookup_pattern_db(context,source,pattern);
1248
+ } else {
1249
+ return datascript.query.lookup_pattern_coll(context,source,pattern);
1250
+ }
1251
+ });
1252
+ datascript.query.collapse_rels = (function datascript$query$collapse_rels(rels,new_rel){
1253
+ var rels__$1 = rels;
1254
+ var new_rel__$1 = new_rel;
1255
+ var acc = cljs.core.PersistentVector.EMPTY;
1256
+ while(true){
1257
+ var temp__5806__auto__ = cljs.core.first(rels__$1);
1258
+ if((temp__5806__auto__ == null)){
1259
+ return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(acc,new_rel__$1);
1260
+ } else {
1261
+ var rel = temp__5806__auto__;
1262
+ if(cljs.core.truth_(cljs.core.not_empty(datascript.query.intersect_keys(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(new_rel__$1),new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel))))){
1263
+ var G__9623 = cljs.core.next(rels__$1);
1264
+ var G__9624 = datascript.query.hash_join(rel,new_rel__$1);
1265
+ var G__9625 = acc;
1266
+ rels__$1 = G__9623;
1267
+ new_rel__$1 = G__9624;
1268
+ acc = G__9625;
1269
+ continue;
1270
+ } else {
1271
+ var G__9626 = cljs.core.next(rels__$1);
1272
+ var G__9627 = new_rel__$1;
1273
+ var G__9628 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(acc,rel);
1274
+ rels__$1 = G__9626;
1275
+ new_rel__$1 = G__9627;
1276
+ acc = G__9628;
1277
+ continue;
1278
+ }
1279
+ }
1280
+ break;
1281
+ }
1282
+ });
1283
+ datascript.query.context_resolve_val = (function datascript$query$context_resolve_val(context,sym){
1284
+ var temp__5808__auto__ = datascript.query.rel_with_attr(context,sym);
1285
+ if((temp__5808__auto__ == null)){
1286
+ return null;
1287
+ } else {
1288
+ var rel = temp__5808__auto__;
1289
+ var temp__5808__auto____$1 = cljs.core.first(new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(rel));
1290
+ if((temp__5808__auto____$1 == null)){
1291
+ return null;
1292
+ } else {
1293
+ var tuple = temp__5808__auto____$1;
1294
+ return (tuple[(function (){var fexpr__9359 = new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel);
1295
+ return (fexpr__9359.cljs$core$IFn$_invoke$arity$1 ? fexpr__9359.cljs$core$IFn$_invoke$arity$1(sym) : fexpr__9359.call(null,sym));
1296
+ })()]);
1297
+ }
1298
+ }
1299
+ });
1300
+ datascript.query.rel_contains_attrs_QMARK_ = (function datascript$query$rel_contains_attrs_QMARK_(rel,attrs){
1301
+ return cljs.core.some((function (p1__9360_SHARP_){
1302
+ return cljs.core.contains_QMARK_(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel),p1__9360_SHARP_);
1303
+ }),attrs);
1304
+ });
1305
+ datascript.query.rel_prod_by_attrs = (function datascript$query$rel_prod_by_attrs(context,attrs){
1306
+ var rels = cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (p1__9361_SHARP_){
1307
+ return datascript.query.rel_contains_attrs_QMARK_(p1__9361_SHARP_,attrs);
1308
+ }),new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(context));
1309
+ var production = cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.prod_rel,rels);
1310
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.update.cljs$core$IFn$_invoke$arity$3(context,new cljs.core.Keyword(null,"rels","rels",1770187185),(function (p1__9362_SHARP_){
1311
+ return cljs.core.remove.cljs$core$IFn$_invoke$arity$2(cljs.core.set(rels),p1__9362_SHARP_);
1312
+ })),production], null);
1313
+ });
1314
+ datascript.query._call_fn = (function datascript$query$_call_fn(context,rel,f,args){
1315
+ var sources = new cljs.core.Keyword(null,"sources","sources",-321166424).cljs$core$IFn$_invoke$arity$1(context);
1316
+ var attrs = new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel);
1317
+ var len = cljs.core.count(args);
1318
+ var static_args = me.tonsky.persistent_sorted_set.arrays.make_array(len);
1319
+ var tuples_args = me.tonsky.persistent_sorted_set.arrays.make_array(len);
1320
+ var n__5593__auto___9629 = len;
1321
+ var i_9630 = (0);
1322
+ while(true){
1323
+ if((i_9630 < n__5593__auto___9629)){
1324
+ var arg_9631 = cljs.core.nth.cljs$core$IFn$_invoke$arity$2(args,i_9630);
1325
+ if((arg_9631 instanceof cljs.core.Symbol)){
1326
+ var temp__5806__auto___9632 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(sources,arg_9631);
1327
+ if((temp__5806__auto___9632 == null)){
1328
+ (tuples_args[i_9630] = cljs.core.get.cljs$core$IFn$_invoke$arity$2(attrs,arg_9631));
1329
+ } else {
1330
+ var source_9633 = temp__5806__auto___9632;
1331
+ (static_args[i_9630] = source_9633);
1332
+ }
1333
+ } else {
1334
+ (static_args[i_9630] = arg_9631);
1335
+ }
1336
+
1337
+ var G__9634 = (i_9630 + (1));
1338
+ i_9630 = G__9634;
1339
+ continue;
1340
+ } else {
1341
+ }
1342
+ break;
1343
+ }
1344
+
1345
+ if((f === cljs.core.vector)){
1346
+ return (function (tuple){
1347
+ var args__$1 = me.tonsky.persistent_sorted_set.arrays.aclone(static_args);
1348
+ var n__5593__auto___9635 = len;
1349
+ var i_9636 = (0);
1350
+ while(true){
1351
+ if((i_9636 < n__5593__auto___9635)){
1352
+ var temp__5808__auto___9637 = (tuples_args[i_9636]);
1353
+ if((temp__5808__auto___9637 == null)){
1354
+ } else {
1355
+ var tuple_idx_9638 = temp__5808__auto___9637;
1356
+ var v_9639 = (tuple[tuple_idx_9638]);
1357
+ (args__$1[i_9636] = v_9639);
1358
+ }
1359
+
1360
+ var G__9640 = (i_9636 + (1));
1361
+ i_9636 = G__9640;
1362
+ continue;
1363
+ } else {
1364
+ }
1365
+ break;
1366
+ }
1367
+
1368
+ return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(f,args__$1);
1369
+ });
1370
+ } else {
1371
+ return (function (tuple){
1372
+ var n__5593__auto___9641 = len;
1373
+ var i_9642 = (0);
1374
+ while(true){
1375
+ if((i_9642 < n__5593__auto___9641)){
1376
+ var temp__5808__auto___9643 = (tuples_args[i_9642]);
1377
+ if((temp__5808__auto___9643 == null)){
1378
+ } else {
1379
+ var tuple_idx_9644 = temp__5808__auto___9643;
1380
+ var v_9645 = (tuple[tuple_idx_9644]);
1381
+ (static_args[i_9642] = v_9645);
1382
+ }
1383
+
1384
+ var G__9646 = (i_9642 + (1));
1385
+ i_9642 = G__9646;
1386
+ continue;
1387
+ } else {
1388
+ }
1389
+ break;
1390
+ }
1391
+
1392
+ return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(f,static_args);
1393
+ });
1394
+ }
1395
+ });
1396
+ datascript.query.resolve_sym = (function datascript$query$resolve_sym(sym){
1397
+ return null;
1398
+ });
1399
+ datascript.query.filter_by_pred = (function datascript$query$filter_by_pred(context,clause){
1400
+ var vec__9364 = clause;
1401
+ var vec__9367 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9364,(0),null);
1402
+ var seq__9368 = cljs.core.seq(vec__9367);
1403
+ var first__9369 = cljs.core.first(seq__9368);
1404
+ var seq__9368__$1 = cljs.core.next(seq__9368);
1405
+ var f = first__9369;
1406
+ var args = seq__9368__$1;
1407
+ var pred = (function (){var or__5002__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(datascript.built_ins.query_fns,f);
1408
+ if(cljs.core.truth_(or__5002__auto__)){
1409
+ return or__5002__auto__;
1410
+ } else {
1411
+ var or__5002__auto____$1 = datascript.query.context_resolve_val(context,f);
1412
+ if(cljs.core.truth_(or__5002__auto____$1)){
1413
+ return or__5002__auto____$1;
1414
+ } else {
1415
+ var or__5002__auto____$2 = datascript.query.resolve_sym(f);
1416
+ if(cljs.core.truth_(or__5002__auto____$2)){
1417
+ return or__5002__auto____$2;
1418
+ } else {
1419
+ if((datascript.query.rel_with_attr(context,f) == null)){
1420
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Unknown predicate '",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([f], 0))," in ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([clause], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","where","query/where",-1935159429),new cljs.core.Keyword(null,"form","form",-1624062471),clause,new cljs.core.Keyword(null,"var","var",-769682797),f], null));
1421
+ } else {
1422
+ return null;
1423
+ }
1424
+ }
1425
+ }
1426
+ }
1427
+ })();
1428
+ var vec__9370 = datascript.query.rel_prod_by_attrs(context,cljs.core.filter.cljs$core$IFn$_invoke$arity$2(cljs.core.symbol_QMARK_,args));
1429
+ var context__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9370,(0),null);
1430
+ var production = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9370,(1),null);
1431
+ var new_rel = (cljs.core.truth_(pred)?(function (){var tuple_pred = datascript.query._call_fn(context__$1,production,pred,args);
1432
+ return cljs.core.update.cljs$core$IFn$_invoke$arity$3(production,new cljs.core.Keyword(null,"tuples","tuples",-676032639),(function (p1__9363_SHARP_){
1433
+ return cljs.core.filter.cljs$core$IFn$_invoke$arity$2(tuple_pred,p1__9363_SHARP_);
1434
+ }));
1435
+ })():cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(production,new cljs.core.Keyword(null,"tuples","tuples",-676032639),cljs.core.PersistentVector.EMPTY));
1436
+ return cljs.core.update.cljs$core$IFn$_invoke$arity$4(context__$1,new cljs.core.Keyword(null,"rels","rels",1770187185),cljs.core.conj,new_rel);
1437
+ });
1438
+ datascript.query.bind_by_fn = (function datascript$query$bind_by_fn(context,clause){
1439
+ var vec__9373 = clause;
1440
+ var vec__9376 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9373,(0),null);
1441
+ var seq__9377 = cljs.core.seq(vec__9376);
1442
+ var first__9378 = cljs.core.first(seq__9377);
1443
+ var seq__9377__$1 = cljs.core.next(seq__9377);
1444
+ var f = first__9378;
1445
+ var args = seq__9377__$1;
1446
+ var out = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9373,(1),null);
1447
+ var binding = datascript.parser.parse_binding(out);
1448
+ var fun = (function (){var or__5002__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(datascript.built_ins.query_fns,f);
1449
+ if(cljs.core.truth_(or__5002__auto__)){
1450
+ return or__5002__auto__;
1451
+ } else {
1452
+ var or__5002__auto____$1 = datascript.query.context_resolve_val(context,f);
1453
+ if(cljs.core.truth_(or__5002__auto____$1)){
1454
+ return or__5002__auto____$1;
1455
+ } else {
1456
+ var or__5002__auto____$2 = datascript.query.resolve_sym(f);
1457
+ if(cljs.core.truth_(or__5002__auto____$2)){
1458
+ return or__5002__auto____$2;
1459
+ } else {
1460
+ if((datascript.query.rel_with_attr(context,f) == null)){
1461
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Unknown function '",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([f], 0))," in ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([clause], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","where","query/where",-1935159429),new cljs.core.Keyword(null,"form","form",-1624062471),clause,new cljs.core.Keyword(null,"var","var",-769682797),f], null));
1462
+ } else {
1463
+ return null;
1464
+ }
1465
+ }
1466
+ }
1467
+ }
1468
+ })();
1469
+ var vec__9379 = datascript.query.rel_prod_by_attrs(context,cljs.core.filter.cljs$core$IFn$_invoke$arity$2(cljs.core.symbol_QMARK_,args));
1470
+ var context__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9379,(0),null);
1471
+ var production = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9379,(1),null);
1472
+ var new_rel = (cljs.core.truth_(fun)?(function (){var tuple_fn = datascript.query._call_fn(context__$1,production,fun,args);
1473
+ var rels = (function (){var iter__5480__auto__ = (function datascript$query$bind_by_fn_$_iter__9382(s__9383){
1474
+ return (new cljs.core.LazySeq(null,(function (){
1475
+ var s__9383__$1 = s__9383;
1476
+ while(true){
1477
+ var temp__5804__auto__ = cljs.core.seq(s__9383__$1);
1478
+ if(temp__5804__auto__){
1479
+ var s__9383__$2 = temp__5804__auto__;
1480
+ if(cljs.core.chunked_seq_QMARK_(s__9383__$2)){
1481
+ var c__5478__auto__ = cljs.core.chunk_first(s__9383__$2);
1482
+ var size__5479__auto__ = cljs.core.count(c__5478__auto__);
1483
+ var b__9385 = cljs.core.chunk_buffer(size__5479__auto__);
1484
+ if((function (){var i__9384 = (0);
1485
+ while(true){
1486
+ if((i__9384 < size__5479__auto__)){
1487
+ var tuple = cljs.core._nth(c__5478__auto__,i__9384);
1488
+ var val = tuple_fn(tuple);
1489
+ if((!((val == null)))){
1490
+ cljs.core.chunk_append(b__9385,datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$2((new datascript.query.Relation(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(production),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [tuple], null),null,null,null)),datascript.query.in__GT_rel(binding,val)));
1491
+
1492
+ var G__9647 = (i__9384 + (1));
1493
+ i__9384 = G__9647;
1494
+ continue;
1495
+ } else {
1496
+ var G__9648 = (i__9384 + (1));
1497
+ i__9384 = G__9648;
1498
+ continue;
1499
+ }
1500
+ } else {
1501
+ return true;
1502
+ }
1503
+ break;
1504
+ }
1505
+ })()){
1506
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9385),datascript$query$bind_by_fn_$_iter__9382(cljs.core.chunk_rest(s__9383__$2)));
1507
+ } else {
1508
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9385),null);
1509
+ }
1510
+ } else {
1511
+ var tuple = cljs.core.first(s__9383__$2);
1512
+ var val = tuple_fn(tuple);
1513
+ if((!((val == null)))){
1514
+ return cljs.core.cons(datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$2((new datascript.query.Relation(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(production),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [tuple], null),null,null,null)),datascript.query.in__GT_rel(binding,val)),datascript$query$bind_by_fn_$_iter__9382(cljs.core.rest(s__9383__$2)));
1515
+ } else {
1516
+ var G__9649 = cljs.core.rest(s__9383__$2);
1517
+ s__9383__$1 = G__9649;
1518
+ continue;
1519
+ }
1520
+ }
1521
+ } else {
1522
+ return null;
1523
+ }
1524
+ break;
1525
+ }
1526
+ }),null,null));
1527
+ });
1528
+ return iter__5480__auto__(new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(production));
1529
+ })();
1530
+ if(cljs.core.empty_QMARK_(rels)){
1531
+ return datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$2(production,datascript.query.empty_rel(binding));
1532
+ } else {
1533
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.sum_rel,rels);
1534
+ }
1535
+ })():datascript.query.prod_rel.cljs$core$IFn$_invoke$arity$2(cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(production,new cljs.core.Keyword(null,"tuples","tuples",-676032639),cljs.core.PersistentVector.EMPTY),datascript.query.empty_rel(binding)));
1536
+ return cljs.core.update.cljs$core$IFn$_invoke$arity$4(context__$1,new cljs.core.Keyword(null,"rels","rels",1770187185),datascript.query.collapse_rels,new_rel);
1537
+ });
1538
+ datascript.query.substitute_constant = (function datascript$query$substitute_constant(context,pattern_el){
1539
+ if(datascript.query.free_var_QMARK_(pattern_el)){
1540
+ var temp__5808__auto__ = datascript.query.rel_with_attr(context,pattern_el);
1541
+ if((temp__5808__auto__ == null)){
1542
+ return null;
1543
+ } else {
1544
+ var rel = temp__5808__auto__;
1545
+ var temp__5808__auto____$1 = cljs.core.first(new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(rel));
1546
+ if((temp__5808__auto____$1 == null)){
1547
+ return null;
1548
+ } else {
1549
+ var tuple = temp__5808__auto____$1;
1550
+ if((cljs.core.fnext(new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(rel)) == null)){
1551
+ var idx = cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel),pattern_el);
1552
+ return (tuple[idx]);
1553
+ } else {
1554
+ return null;
1555
+ }
1556
+ }
1557
+ }
1558
+ } else {
1559
+ return null;
1560
+ }
1561
+ });
1562
+ datascript.query.substitute_constants = (function datascript$query$substitute_constants(context,pattern){
1563
+ return cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((function (p1__9386_SHARP_){
1564
+ var or__5002__auto__ = datascript.query.substitute_constant(context,p1__9386_SHARP_);
1565
+ if(cljs.core.truth_(or__5002__auto__)){
1566
+ return or__5002__auto__;
1567
+ } else {
1568
+ return p1__9386_SHARP_;
1569
+ }
1570
+ }),pattern);
1571
+ });
1572
+ datascript.query.rule_QMARK_ = (function datascript$query$rule_QMARK_(context,clause){
1573
+ if((!(cljs.core.sequential_QMARK_(clause)))){
1574
+ return false;
1575
+ } else {
1576
+ var head = ((datascript.query.source_QMARK_(cljs.core.first(clause)))?cljs.core.second(clause):cljs.core.first(clause));
1577
+ if((!((head instanceof cljs.core.Symbol)))){
1578
+ return false;
1579
+ } else {
1580
+ if(datascript.query.free_var_QMARK_(head)){
1581
+ return false;
1582
+ } else {
1583
+ if(cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Symbol(null,"and","and",668631710,null),null,new cljs.core.Symbol(null,"not","not",1044554643,null),null,new cljs.core.Symbol(null,"not-join","not-join",-645515756,null),null,new cljs.core.Symbol(null,"or-join","or-join",591375469,null),null,new cljs.core.Symbol(null,"or","or",1876275696,null),null,new cljs.core.Symbol(null,"_","_",-1201019570,null),null], null), null),head)){
1584
+ return false;
1585
+ } else {
1586
+ if((!(cljs.core.contains_QMARK_(new cljs.core.Keyword(null,"rules","rules",1198912366).cljs$core$IFn$_invoke$arity$1(context),head)))){
1587
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Unknown rule '",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([head], 0))," in ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([clause], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","where","query/where",-1935159429),new cljs.core.Keyword(null,"form","form",-1624062471),clause], null));
1588
+ } else {
1589
+ return true;
1590
+
1591
+ }
1592
+ }
1593
+ }
1594
+ }
1595
+ }
1596
+ });
1597
+ datascript.query.rule_seqid = cljs.core.atom.cljs$core$IFn$_invoke$arity$1((0));
1598
+ datascript.query.expand_rule = (function datascript$query$expand_rule(clause,context,used_args){
1599
+ var vec__9388 = clause;
1600
+ var seq__9389 = cljs.core.seq(vec__9388);
1601
+ var first__9390 = cljs.core.first(seq__9389);
1602
+ var seq__9389__$1 = cljs.core.next(seq__9389);
1603
+ var rule = first__9390;
1604
+ var call_args = seq__9389__$1;
1605
+ var seqid = cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(datascript.query.rule_seqid,cljs.core.inc);
1606
+ var branches = cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"rules","rules",1198912366).cljs$core$IFn$_invoke$arity$1(context),rule);
1607
+ var iter__5480__auto__ = (function datascript$query$expand_rule_$_iter__9391(s__9392){
1608
+ return (new cljs.core.LazySeq(null,(function (){
1609
+ var s__9392__$1 = s__9392;
1610
+ while(true){
1611
+ var temp__5804__auto__ = cljs.core.seq(s__9392__$1);
1612
+ if(temp__5804__auto__){
1613
+ var s__9392__$2 = temp__5804__auto__;
1614
+ if(cljs.core.chunked_seq_QMARK_(s__9392__$2)){
1615
+ var c__5478__auto__ = cljs.core.chunk_first(s__9392__$2);
1616
+ var size__5479__auto__ = cljs.core.count(c__5478__auto__);
1617
+ var b__9394 = cljs.core.chunk_buffer(size__5479__auto__);
1618
+ if((function (){var i__9393 = (0);
1619
+ while(true){
1620
+ if((i__9393 < size__5479__auto__)){
1621
+ var branch = cljs.core._nth(c__5478__auto__,i__9393);
1622
+ var vec__9395 = branch;
1623
+ var seq__9396 = cljs.core.seq(vec__9395);
1624
+ var first__9397 = cljs.core.first(seq__9396);
1625
+ var seq__9396__$1 = cljs.core.next(seq__9396);
1626
+ var vec__9398 = first__9397;
1627
+ var seq__9399 = cljs.core.seq(vec__9398);
1628
+ var first__9400 = cljs.core.first(seq__9399);
1629
+ var seq__9399__$1 = cljs.core.next(seq__9399);
1630
+ var _ = first__9400;
1631
+ var rule_args = seq__9399__$1;
1632
+ var clauses = seq__9396__$1;
1633
+ var replacements = cljs.core.zipmap(rule_args,call_args);
1634
+ cljs.core.chunk_append(b__9394,clojure.walk.postwalk(((function (i__9393,vec__9395,seq__9396,first__9397,seq__9396__$1,vec__9398,seq__9399,first__9400,seq__9399__$1,_,rule_args,clauses,replacements,branch,c__5478__auto__,size__5479__auto__,b__9394,s__9392__$2,temp__5804__auto__,vec__9388,seq__9389,first__9390,seq__9389__$1,rule,call_args,seqid,branches){
1635
+ return (function (p1__9387_SHARP_){
1636
+ if(datascript.query.free_var_QMARK_(p1__9387_SHARP_)){
1637
+ var x__6549__auto__ = (replacements.cljs$core$IFn$_invoke$arity$1 ? replacements.cljs$core$IFn$_invoke$arity$1(p1__9387_SHARP_) : replacements.call(null,p1__9387_SHARP_));
1638
+ if((x__6549__auto__ == null)){
1639
+ return cljs.core.symbol.cljs$core$IFn$_invoke$arity$1([cljs.core.name(p1__9387_SHARP_),"__auto__",cljs.core.str.cljs$core$IFn$_invoke$arity$1(seqid)].join(''));
1640
+ } else {
1641
+ return x__6549__auto__;
1642
+ }
1643
+ } else {
1644
+ return p1__9387_SHARP_;
1645
+ }
1646
+ });})(i__9393,vec__9395,seq__9396,first__9397,seq__9396__$1,vec__9398,seq__9399,first__9400,seq__9399__$1,_,rule_args,clauses,replacements,branch,c__5478__auto__,size__5479__auto__,b__9394,s__9392__$2,temp__5804__auto__,vec__9388,seq__9389,first__9390,seq__9389__$1,rule,call_args,seqid,branches))
1647
+ ,clauses));
1648
+
1649
+ var G__9650 = (i__9393 + (1));
1650
+ i__9393 = G__9650;
1651
+ continue;
1652
+ } else {
1653
+ return true;
1654
+ }
1655
+ break;
1656
+ }
1657
+ })()){
1658
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9394),datascript$query$expand_rule_$_iter__9391(cljs.core.chunk_rest(s__9392__$2)));
1659
+ } else {
1660
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9394),null);
1661
+ }
1662
+ } else {
1663
+ var branch = cljs.core.first(s__9392__$2);
1664
+ var vec__9401 = branch;
1665
+ var seq__9402 = cljs.core.seq(vec__9401);
1666
+ var first__9403 = cljs.core.first(seq__9402);
1667
+ var seq__9402__$1 = cljs.core.next(seq__9402);
1668
+ var vec__9404 = first__9403;
1669
+ var seq__9405 = cljs.core.seq(vec__9404);
1670
+ var first__9406 = cljs.core.first(seq__9405);
1671
+ var seq__9405__$1 = cljs.core.next(seq__9405);
1672
+ var _ = first__9406;
1673
+ var rule_args = seq__9405__$1;
1674
+ var clauses = seq__9402__$1;
1675
+ var replacements = cljs.core.zipmap(rule_args,call_args);
1676
+ return cljs.core.cons(clojure.walk.postwalk(((function (vec__9401,seq__9402,first__9403,seq__9402__$1,vec__9404,seq__9405,first__9406,seq__9405__$1,_,rule_args,clauses,replacements,branch,s__9392__$2,temp__5804__auto__,vec__9388,seq__9389,first__9390,seq__9389__$1,rule,call_args,seqid,branches){
1677
+ return (function (p1__9387_SHARP_){
1678
+ if(datascript.query.free_var_QMARK_(p1__9387_SHARP_)){
1679
+ var x__6549__auto__ = (replacements.cljs$core$IFn$_invoke$arity$1 ? replacements.cljs$core$IFn$_invoke$arity$1(p1__9387_SHARP_) : replacements.call(null,p1__9387_SHARP_));
1680
+ if((x__6549__auto__ == null)){
1681
+ return cljs.core.symbol.cljs$core$IFn$_invoke$arity$1([cljs.core.name(p1__9387_SHARP_),"__auto__",cljs.core.str.cljs$core$IFn$_invoke$arity$1(seqid)].join(''));
1682
+ } else {
1683
+ return x__6549__auto__;
1684
+ }
1685
+ } else {
1686
+ return p1__9387_SHARP_;
1687
+ }
1688
+ });})(vec__9401,seq__9402,first__9403,seq__9402__$1,vec__9404,seq__9405,first__9406,seq__9405__$1,_,rule_args,clauses,replacements,branch,s__9392__$2,temp__5804__auto__,vec__9388,seq__9389,first__9390,seq__9389__$1,rule,call_args,seqid,branches))
1689
+ ,clauses),datascript$query$expand_rule_$_iter__9391(cljs.core.rest(s__9392__$2)));
1690
+ }
1691
+ } else {
1692
+ return null;
1693
+ }
1694
+ break;
1695
+ }
1696
+ }),null,null));
1697
+ });
1698
+ return iter__5480__auto__(branches);
1699
+ });
1700
+ datascript.query.remove_pairs = (function datascript$query$remove_pairs(xs,ys){
1701
+ var pairs = cljs.core.remove.cljs$core$IFn$_invoke$arity$2((function (p__9407){
1702
+ var vec__9408 = p__9407;
1703
+ var x = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9408,(0),null);
1704
+ var y = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9408,(1),null);
1705
+ return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(x,y);
1706
+ }),cljs.core.map.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,xs,ys));
1707
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.first,pairs),cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.second,pairs)], null);
1708
+ });
1709
+ datascript.query.rule_gen_guards = (function datascript$query$rule_gen_guards(rule_clause,used_args){
1710
+ var vec__9411 = rule_clause;
1711
+ var seq__9412 = cljs.core.seq(vec__9411);
1712
+ var first__9413 = cljs.core.first(seq__9412);
1713
+ var seq__9412__$1 = cljs.core.next(seq__9412);
1714
+ var rule = first__9413;
1715
+ var call_args = seq__9412__$1;
1716
+ var prev_call_args = cljs.core.get.cljs$core$IFn$_invoke$arity$2(used_args,rule);
1717
+ var iter__5480__auto__ = (function datascript$query$rule_gen_guards_$_iter__9414(s__9415){
1718
+ return (new cljs.core.LazySeq(null,(function (){
1719
+ var s__9415__$1 = s__9415;
1720
+ while(true){
1721
+ var temp__5804__auto__ = cljs.core.seq(s__9415__$1);
1722
+ if(temp__5804__auto__){
1723
+ var s__9415__$2 = temp__5804__auto__;
1724
+ if(cljs.core.chunked_seq_QMARK_(s__9415__$2)){
1725
+ var c__5478__auto__ = cljs.core.chunk_first(s__9415__$2);
1726
+ var size__5479__auto__ = cljs.core.count(c__5478__auto__);
1727
+ var b__9417 = cljs.core.chunk_buffer(size__5479__auto__);
1728
+ if((function (){var i__9416 = (0);
1729
+ while(true){
1730
+ if((i__9416 < size__5479__auto__)){
1731
+ var prev_args = cljs.core._nth(c__5478__auto__,i__9416);
1732
+ var vec__9418 = datascript.query.remove_pairs(call_args,prev_args);
1733
+ var call_args__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9418,(0),null);
1734
+ var prev_args__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9418,(1),null);
1735
+ cljs.core.chunk_append(b__9417,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"-differ?","-differ?",1465687357,null)], null),call_args__$1,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([prev_args__$1], 0))], null));
1736
+
1737
+ var G__9651 = (i__9416 + (1));
1738
+ i__9416 = G__9651;
1739
+ continue;
1740
+ } else {
1741
+ return true;
1742
+ }
1743
+ break;
1744
+ }
1745
+ })()){
1746
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9417),datascript$query$rule_gen_guards_$_iter__9414(cljs.core.chunk_rest(s__9415__$2)));
1747
+ } else {
1748
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9417),null);
1749
+ }
1750
+ } else {
1751
+ var prev_args = cljs.core.first(s__9415__$2);
1752
+ var vec__9421 = datascript.query.remove_pairs(call_args,prev_args);
1753
+ var call_args__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9421,(0),null);
1754
+ var prev_args__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9421,(1),null);
1755
+ return cljs.core.cons(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"-differ?","-differ?",1465687357,null)], null),call_args__$1,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([prev_args__$1], 0))], null),datascript$query$rule_gen_guards_$_iter__9414(cljs.core.rest(s__9415__$2)));
1756
+ }
1757
+ } else {
1758
+ return null;
1759
+ }
1760
+ break;
1761
+ }
1762
+ }),null,null));
1763
+ });
1764
+ return iter__5480__auto__(prev_call_args);
1765
+ });
1766
+ datascript.query.walk_collect = (function datascript$query$walk_collect(form,pred){
1767
+ var res = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentVector.EMPTY);
1768
+ clojure.walk.postwalk((function (p1__9424_SHARP_){
1769
+ if(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(p1__9424_SHARP_) : pred.call(null,p1__9424_SHARP_)))){
1770
+ cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3(res,cljs.core.conj,p1__9424_SHARP_);
1771
+ } else {
1772
+ }
1773
+
1774
+ return p1__9424_SHARP_;
1775
+ }),form);
1776
+
1777
+ return cljs.core.deref(res);
1778
+ });
1779
+ datascript.query.collect_vars = (function datascript$query$collect_vars(clause){
1780
+ return cljs.core.set(datascript.query.walk_collect(clause,datascript.query.free_var_QMARK_));
1781
+ });
1782
+ datascript.query.split_guards = (function datascript$query$split_guards(clauses,guards){
1783
+ var bound_vars = datascript.query.collect_vars(clauses);
1784
+ var pred = (function (p__9425){
1785
+ var vec__9426 = p__9425;
1786
+ var vec__9429 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9426,(0),null);
1787
+ var seq__9430 = cljs.core.seq(vec__9429);
1788
+ var first__9431 = cljs.core.first(seq__9430);
1789
+ var seq__9430__$1 = cljs.core.next(seq__9430);
1790
+ var _ = first__9431;
1791
+ var vars = seq__9430__$1;
1792
+ return cljs.core.every_QMARK_(bound_vars,vars);
1793
+ });
1794
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.filter.cljs$core$IFn$_invoke$arity$2(pred,guards),cljs.core.remove.cljs$core$IFn$_invoke$arity$2(pred,guards)], null);
1795
+ });
1796
+ datascript.query.solve_rule = (function datascript$query$solve_rule(context,clause){
1797
+ var final_attrs = cljs.core.filter.cljs$core$IFn$_invoke$arity$2(datascript.query.free_var_QMARK_,clause);
1798
+ var final_attrs_map = cljs.core.zipmap(final_attrs,cljs.core.range.cljs$core$IFn$_invoke$arity$0());
1799
+ var solve = (function (prefix_context,clauses){
1800
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.query._resolve_clause,prefix_context,clauses);
1801
+ });
1802
+ var empty_rels_QMARK_ = (function (context__$1){
1803
+ return cljs.core.some((function (p1__9432_SHARP_){
1804
+ return cljs.core.empty_QMARK_(new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(p1__9432_SHARP_));
1805
+ }),new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(context__$1));
1806
+ });
1807
+ var stack = (new cljs.core.List(null,new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"prefix-clauses","prefix-clauses",1294180028),cljs.core.PersistentVector.EMPTY,new cljs.core.Keyword(null,"prefix-context","prefix-context",-1269613591),context,new cljs.core.Keyword(null,"clauses","clauses",1454841241),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [clause], null),new cljs.core.Keyword(null,"used-args","used-args",23596256),cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword(null,"pending-guards","pending-guards",-1255527308),cljs.core.PersistentArrayMap.EMPTY], null),null,(1),null));
1808
+ var rel = (new datascript.query.Relation(final_attrs_map,cljs.core.PersistentVector.EMPTY,null,null,null));
1809
+ while(true){
1810
+ var temp__5806__auto__ = cljs.core.first(stack);
1811
+ if((temp__5806__auto__ == null)){
1812
+ return rel;
1813
+ } else {
1814
+ var frame = temp__5806__auto__;
1815
+ var vec__9451 = cljs.core.split_with(((function (stack,rel,frame,temp__5806__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_){
1816
+ return (function (p1__9433_SHARP_){
1817
+ return (!(datascript.query.rule_QMARK_(context,p1__9433_SHARP_)));
1818
+ });})(stack,rel,frame,temp__5806__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_))
1819
+ ,new cljs.core.Keyword(null,"clauses","clauses",1454841241).cljs$core$IFn$_invoke$arity$1(frame));
1820
+ var clauses = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9451,(0),null);
1821
+ var vec__9454 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9451,(1),null);
1822
+ var seq__9455 = cljs.core.seq(vec__9454);
1823
+ var first__9456 = cljs.core.first(seq__9455);
1824
+ var seq__9455__$1 = cljs.core.next(seq__9455);
1825
+ var rule_clause = first__9456;
1826
+ var next_clauses = seq__9455__$1;
1827
+ if((rule_clause == null)){
1828
+ var context__$1 = solve(new cljs.core.Keyword(null,"prefix-context","prefix-context",-1269613591).cljs$core$IFn$_invoke$arity$1(frame),clauses);
1829
+ var tuples = datascript.util.distinct_by(cljs.core.vec,(datascript.query._collect.cljs$core$IFn$_invoke$arity$2 ? datascript.query._collect.cljs$core$IFn$_invoke$arity$2(context__$1,final_attrs) : datascript.query._collect.call(null,context__$1,final_attrs)));
1830
+ var new_rel = (new datascript.query.Relation(final_attrs_map,tuples,null,null,null));
1831
+ var G__9652 = cljs.core.next(stack);
1832
+ var G__9653 = datascript.query.sum_rel(rel,new_rel);
1833
+ stack = G__9652;
1834
+ rel = G__9653;
1835
+ continue;
1836
+ } else {
1837
+ var vec__9457 = rule_clause;
1838
+ var seq__9458 = cljs.core.seq(vec__9457);
1839
+ var first__9459 = cljs.core.first(seq__9458);
1840
+ var seq__9458__$1 = cljs.core.next(seq__9458);
1841
+ var rule = first__9459;
1842
+ var call_args = seq__9458__$1;
1843
+ var guards = datascript.query.rule_gen_guards(rule_clause,new cljs.core.Keyword(null,"used-args","used-args",23596256).cljs$core$IFn$_invoke$arity$1(frame));
1844
+ var vec__9460 = datascript.query.split_guards(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"prefix-clauses","prefix-clauses",1294180028).cljs$core$IFn$_invoke$arity$1(frame),clauses),cljs.core.concat.cljs$core$IFn$_invoke$arity$2(guards,new cljs.core.Keyword(null,"pending-guards","pending-guards",-1255527308).cljs$core$IFn$_invoke$arity$1(frame)));
1845
+ var active_gs = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9460,(0),null);
1846
+ var pending_gs = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9460,(1),null);
1847
+ if(cljs.core.truth_(cljs.core.some(((function (stack,rel,vec__9457,seq__9458,first__9459,seq__9458__$1,rule,call_args,guards,vec__9460,active_gs,pending_gs,vec__9451,clauses,vec__9454,seq__9455,first__9456,seq__9455__$1,rule_clause,next_clauses,frame,temp__5806__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_){
1848
+ return (function (p1__9434_SHARP_){
1849
+ return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(p1__9434_SHARP_,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.list(new cljs.core.Symbol(null,"-differ?","-differ?",1465687357,null))], null));
1850
+ });})(stack,rel,vec__9457,seq__9458,first__9459,seq__9458__$1,rule,call_args,guards,vec__9460,active_gs,pending_gs,vec__9451,clauses,vec__9454,seq__9455,first__9456,seq__9455__$1,rule_clause,next_clauses,frame,temp__5806__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_))
1851
+ ,active_gs))){
1852
+ var G__9654 = cljs.core.next(stack);
1853
+ var G__9655 = rel;
1854
+ stack = G__9654;
1855
+ rel = G__9655;
1856
+ continue;
1857
+ } else {
1858
+ var prefix_clauses = cljs.core.concat.cljs$core$IFn$_invoke$arity$2(clauses,active_gs);
1859
+ var prefix_context = solve(new cljs.core.Keyword(null,"prefix-context","prefix-context",-1269613591).cljs$core$IFn$_invoke$arity$1(frame),prefix_clauses);
1860
+ if(cljs.core.truth_(empty_rels_QMARK_(prefix_context))){
1861
+ var G__9656 = cljs.core.next(stack);
1862
+ var G__9657 = rel;
1863
+ stack = G__9656;
1864
+ rel = G__9657;
1865
+ continue;
1866
+ } else {
1867
+ var used_args = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(new cljs.core.Keyword(null,"used-args","used-args",23596256).cljs$core$IFn$_invoke$arity$1(frame),rule,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(new cljs.core.Keyword(null,"used-args","used-args",23596256).cljs$core$IFn$_invoke$arity$1(frame),rule,cljs.core.PersistentVector.EMPTY),call_args));
1868
+ var branches = datascript.query.expand_rule(rule_clause,context,used_args);
1869
+ var G__9658 = cljs.core.concat.cljs$core$IFn$_invoke$arity$2((function (){var iter__5480__auto__ = ((function (stack,rel,used_args,branches,prefix_clauses,prefix_context,vec__9457,seq__9458,first__9459,seq__9458__$1,rule,call_args,guards,vec__9460,active_gs,pending_gs,vec__9451,clauses,vec__9454,seq__9455,first__9456,seq__9455__$1,rule_clause,next_clauses,frame,temp__5806__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_){
1870
+ return (function datascript$query$solve_rule_$_iter__9463(s__9464){
1871
+ return (new cljs.core.LazySeq(null,((function (stack,rel,used_args,branches,prefix_clauses,prefix_context,vec__9457,seq__9458,first__9459,seq__9458__$1,rule,call_args,guards,vec__9460,active_gs,pending_gs,vec__9451,clauses,vec__9454,seq__9455,first__9456,seq__9455__$1,rule_clause,next_clauses,frame,temp__5806__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_){
1872
+ return (function (){
1873
+ var s__9464__$1 = s__9464;
1874
+ while(true){
1875
+ var temp__5804__auto__ = cljs.core.seq(s__9464__$1);
1876
+ if(temp__5804__auto__){
1877
+ var s__9464__$2 = temp__5804__auto__;
1878
+ if(cljs.core.chunked_seq_QMARK_(s__9464__$2)){
1879
+ var c__5478__auto__ = cljs.core.chunk_first(s__9464__$2);
1880
+ var size__5479__auto__ = cljs.core.count(c__5478__auto__);
1881
+ var b__9466 = cljs.core.chunk_buffer(size__5479__auto__);
1882
+ if((function (){var i__9465 = (0);
1883
+ while(true){
1884
+ if((i__9465 < size__5479__auto__)){
1885
+ var branch = cljs.core._nth(c__5478__auto__,i__9465);
1886
+ cljs.core.chunk_append(b__9466,new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"prefix-clauses","prefix-clauses",1294180028),prefix_clauses,new cljs.core.Keyword(null,"prefix-context","prefix-context",-1269613591),prefix_context,new cljs.core.Keyword(null,"clauses","clauses",1454841241),datascript.query.concatv.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([branch,next_clauses], 0)),new cljs.core.Keyword(null,"used-args","used-args",23596256),used_args,new cljs.core.Keyword(null,"pending-guards","pending-guards",-1255527308),pending_gs], null));
1887
+
1888
+ var G__9660 = (i__9465 + (1));
1889
+ i__9465 = G__9660;
1890
+ continue;
1891
+ } else {
1892
+ return true;
1893
+ }
1894
+ break;
1895
+ }
1896
+ })()){
1897
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9466),datascript$query$solve_rule_$_iter__9463(cljs.core.chunk_rest(s__9464__$2)));
1898
+ } else {
1899
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9466),null);
1900
+ }
1901
+ } else {
1902
+ var branch = cljs.core.first(s__9464__$2);
1903
+ return cljs.core.cons(new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"prefix-clauses","prefix-clauses",1294180028),prefix_clauses,new cljs.core.Keyword(null,"prefix-context","prefix-context",-1269613591),prefix_context,new cljs.core.Keyword(null,"clauses","clauses",1454841241),datascript.query.concatv.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([branch,next_clauses], 0)),new cljs.core.Keyword(null,"used-args","used-args",23596256),used_args,new cljs.core.Keyword(null,"pending-guards","pending-guards",-1255527308),pending_gs], null),datascript$query$solve_rule_$_iter__9463(cljs.core.rest(s__9464__$2)));
1904
+ }
1905
+ } else {
1906
+ return null;
1907
+ }
1908
+ break;
1909
+ }
1910
+ });})(stack,rel,used_args,branches,prefix_clauses,prefix_context,vec__9457,seq__9458,first__9459,seq__9458__$1,rule,call_args,guards,vec__9460,active_gs,pending_gs,vec__9451,clauses,vec__9454,seq__9455,first__9456,seq__9455__$1,rule_clause,next_clauses,frame,temp__5806__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_))
1911
+ ,null,null));
1912
+ });})(stack,rel,used_args,branches,prefix_clauses,prefix_context,vec__9457,seq__9458,first__9459,seq__9458__$1,rule,call_args,guards,vec__9460,active_gs,pending_gs,vec__9451,clauses,vec__9454,seq__9455,first__9456,seq__9455__$1,rule_clause,next_clauses,frame,temp__5806__auto__,final_attrs,final_attrs_map,solve,empty_rels_QMARK_))
1913
+ ;
1914
+ return iter__5480__auto__(branches);
1915
+ })(),cljs.core.next(stack));
1916
+ var G__9659 = rel;
1917
+ stack = G__9658;
1918
+ rel = G__9659;
1919
+ continue;
1920
+ }
1921
+ }
1922
+ }
1923
+ }
1924
+ break;
1925
+ }
1926
+ });
1927
+ datascript.query.dynamic_lookup_attrs = (function datascript$query$dynamic_lookup_attrs(source,pattern){
1928
+ var vec__9467 = pattern;
1929
+ var e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9467,(0),null);
1930
+ var a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9467,(1),null);
1931
+ var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9467,(2),null);
1932
+ var tx = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9467,(3),null);
1933
+ var G__9470 = cljs.core.PersistentHashSet.EMPTY;
1934
+ var G__9470__$1 = ((datascript.query.free_var_QMARK_(e))?cljs.core.conj.cljs$core$IFn$_invoke$arity$2(G__9470,e):G__9470);
1935
+ var G__9470__$2 = ((datascript.query.free_var_QMARK_(tx))?cljs.core.conj.cljs$core$IFn$_invoke$arity$2(G__9470__$1,tx):G__9470__$1);
1936
+ if(((datascript.query.free_var_QMARK_(v)) && ((((!(datascript.query.free_var_QMARK_(a)))) && (datascript.db.ref_QMARK_(source,a)))))){
1937
+ return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(G__9470__$2,v);
1938
+ } else {
1939
+ return G__9470__$2;
1940
+ }
1941
+ });
1942
+ datascript.query.limit_rel = (function datascript$query$limit_rel(rel,vars){
1943
+ var temp__5808__auto__ = cljs.core.not_empty(cljs.core.select_keys(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel),vars));
1944
+ if((temp__5808__auto__ == null)){
1945
+ return null;
1946
+ } else {
1947
+ var attrs_SINGLEQUOTE_ = temp__5808__auto__;
1948
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(rel,new cljs.core.Keyword(null,"attrs","attrs",-2090668713),attrs_SINGLEQUOTE_);
1949
+ }
1950
+ });
1951
+ datascript.query.limit_context = (function datascript$query$limit_context(context,vars){
1952
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(context,new cljs.core.Keyword(null,"rels","rels",1770187185),cljs.core.keep.cljs$core$IFn$_invoke$arity$2((function (p1__9471_SHARP_){
1953
+ return datascript.query.limit_rel(p1__9471_SHARP_,vars);
1954
+ }),new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(context)));
1955
+ });
1956
+ datascript.query.bound_vars = (function datascript$query$bound_vars(context){
1957
+ return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentHashSet.EMPTY,cljs.core.mapcat.cljs$core$IFn$_invoke$arity$variadic((function (p1__9472_SHARP_){
1958
+ return cljs.core.keys(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(p1__9472_SHARP_));
1959
+ }),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(context)], 0)));
1960
+ });
1961
+ datascript.query.check_bound = (function datascript$query$check_bound(bound,vars,form){
1962
+ if(clojure.set.subset_QMARK_(vars,bound)){
1963
+ return null;
1964
+ } else {
1965
+ var missing = clojure.set.difference.cljs$core$IFn$_invoke$arity$2(cljs.core.set(vars),bound);
1966
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Insufficient bindings: ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([missing], 0))," not bound in ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([form], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","where","query/where",-1935159429),new cljs.core.Keyword(null,"form","form",-1624062471),form,new cljs.core.Keyword(null,"vars","vars",-2046957217),missing], null));
1967
+ }
1968
+ });
1969
+ datascript.query.check_free_same = (function datascript$query$check_free_same(bound,branches,form){
1970
+ var free = cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((function (p1__9473_SHARP_){
1971
+ return clojure.set.difference.cljs$core$IFn$_invoke$arity$2(datascript.query.collect_vars(p1__9473_SHARP_),bound);
1972
+ }),branches);
1973
+ if(cljs.core.truth_(cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core._EQ_,free))){
1974
+ return null;
1975
+ } else {
1976
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["All clauses in 'or' must use same set of free vars, had ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([free], 0))," in ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([form], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","where","query/where",-1935159429),new cljs.core.Keyword(null,"form","form",-1624062471),form,new cljs.core.Keyword(null,"vars","vars",-2046957217),free], null));
1977
+ }
1978
+ });
1979
+ datascript.query.check_free_subset = (function datascript$query$check_free_subset(bound,vars,branches){
1980
+ var free = cljs.core.set(cljs.core.remove.cljs$core$IFn$_invoke$arity$2(bound,vars));
1981
+ var seq__9474 = cljs.core.seq(branches);
1982
+ var chunk__9475 = null;
1983
+ var count__9476 = (0);
1984
+ var i__9477 = (0);
1985
+ while(true){
1986
+ if((i__9477 < count__9476)){
1987
+ var branch = chunk__9475.cljs$core$IIndexed$_nth$arity$2(null,i__9477);
1988
+ var temp__5808__auto___9661 = cljs.core.not_empty(clojure.set.difference.cljs$core$IFn$_invoke$arity$2(free,datascript.query.collect_vars(branch)));
1989
+ if((temp__5808__auto___9661 == null)){
1990
+ } else {
1991
+ var missing_9662 = temp__5808__auto___9661;
1992
+ cljs.core.prn.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([branch,bound,vars,free], 0));
1993
+
1994
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["All clauses in 'or' must use same set of free vars, had ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([missing_9662], 0))," not bound in ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([branch], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","where","query/where",-1935159429),new cljs.core.Keyword(null,"form","form",-1624062471),branch,new cljs.core.Keyword(null,"vars","vars",-2046957217),missing_9662], null));
1995
+ }
1996
+
1997
+
1998
+ var G__9663 = seq__9474;
1999
+ var G__9664 = chunk__9475;
2000
+ var G__9665 = count__9476;
2001
+ var G__9666 = (i__9477 + (1));
2002
+ seq__9474 = G__9663;
2003
+ chunk__9475 = G__9664;
2004
+ count__9476 = G__9665;
2005
+ i__9477 = G__9666;
2006
+ continue;
2007
+ } else {
2008
+ var temp__5804__auto__ = cljs.core.seq(seq__9474);
2009
+ if(temp__5804__auto__){
2010
+ var seq__9474__$1 = temp__5804__auto__;
2011
+ if(cljs.core.chunked_seq_QMARK_(seq__9474__$1)){
2012
+ var c__5525__auto__ = cljs.core.chunk_first(seq__9474__$1);
2013
+ var G__9667 = cljs.core.chunk_rest(seq__9474__$1);
2014
+ var G__9668 = c__5525__auto__;
2015
+ var G__9669 = cljs.core.count(c__5525__auto__);
2016
+ var G__9670 = (0);
2017
+ seq__9474 = G__9667;
2018
+ chunk__9475 = G__9668;
2019
+ count__9476 = G__9669;
2020
+ i__9477 = G__9670;
2021
+ continue;
2022
+ } else {
2023
+ var branch = cljs.core.first(seq__9474__$1);
2024
+ var temp__5808__auto___9671 = cljs.core.not_empty(clojure.set.difference.cljs$core$IFn$_invoke$arity$2(free,datascript.query.collect_vars(branch)));
2025
+ if((temp__5808__auto___9671 == null)){
2026
+ } else {
2027
+ var missing_9672 = temp__5808__auto___9671;
2028
+ cljs.core.prn.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([branch,bound,vars,free], 0));
2029
+
2030
+ throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["All clauses in 'or' must use same set of free vars, had ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([missing_9672], 0))," not bound in ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([branch], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","where","query/where",-1935159429),new cljs.core.Keyword(null,"form","form",-1624062471),branch,new cljs.core.Keyword(null,"vars","vars",-2046957217),missing_9672], null));
2031
+ }
2032
+
2033
+
2034
+ var G__9673 = cljs.core.next(seq__9474__$1);
2035
+ var G__9674 = null;
2036
+ var G__9675 = (0);
2037
+ var G__9676 = (0);
2038
+ seq__9474 = G__9673;
2039
+ chunk__9475 = G__9674;
2040
+ count__9476 = G__9675;
2041
+ i__9477 = G__9676;
2042
+ continue;
2043
+ }
2044
+ } else {
2045
+ return null;
2046
+ }
2047
+ }
2048
+ break;
2049
+ }
2050
+ });
2051
+ datascript.query._resolve_clause = (function datascript$query$_resolve_clause(var_args){
2052
+ var G__9483 = arguments.length;
2053
+ switch (G__9483) {
2054
+ case 2:
2055
+ return datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
2056
+
2057
+ break;
2058
+ case 3:
2059
+ return datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
2060
+
2061
+ break;
2062
+ default:
2063
+ throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
2064
+
2065
+ }
2066
+ });
2067
+
2068
+ (datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$2 = (function (context,clause){
2069
+ return datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$3(context,clause,clause);
2070
+ }));
2071
+
2072
+ (datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$3 = (function (context,clause,orig_clause){
2073
+ while(true){
2074
+ var pred__9484 = datascript.query.looks_like_QMARK_;
2075
+ var expr__9485 = clause;
2076
+ if(cljs.core.truth_((function (){var G__9487 = new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.symbol_QMARK_,new cljs.core.Symbol(null,"*","*",345799209,null)], null)], null);
2077
+ var G__9488 = expr__9485;
2078
+ return (pred__9484.cljs$core$IFn$_invoke$arity$2 ? pred__9484.cljs$core$IFn$_invoke$arity$2(G__9487,G__9488) : pred__9484.call(null,G__9487,G__9488));
2079
+ })())){
2080
+ datascript.query.check_bound(datascript.query.bound_vars(context),cljs.core.filter.cljs$core$IFn$_invoke$arity$2(datascript.query.free_var_QMARK_,cljs.core.nfirst(clause)),clause);
2081
+
2082
+ return datascript.query.filter_by_pred(context,clause);
2083
+ } else {
2084
+ if(cljs.core.truth_((function (){var G__9489 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.symbol_QMARK_,new cljs.core.Symbol(null,"*","*",345799209,null)], null),new cljs.core.Symbol(null,"_","_",-1201019570,null)], null);
2085
+ var G__9490 = expr__9485;
2086
+ return (pred__9484.cljs$core$IFn$_invoke$arity$2 ? pred__9484.cljs$core$IFn$_invoke$arity$2(G__9489,G__9490) : pred__9484.call(null,G__9489,G__9490));
2087
+ })())){
2088
+ datascript.query.check_bound(datascript.query.bound_vars(context),cljs.core.filter.cljs$core$IFn$_invoke$arity$2(datascript.query.free_var_QMARK_,cljs.core.nfirst(clause)),clause);
2089
+
2090
+ return datascript.query.bind_by_fn(context,clause);
2091
+ } else {
2092
+ if(cljs.core.truth_((function (){var G__9491 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [datascript.query.source_QMARK_,new cljs.core.Symbol(null,"*","*",345799209,null)], null);
2093
+ var G__9492 = expr__9485;
2094
+ return (pred__9484.cljs$core$IFn$_invoke$arity$2 ? pred__9484.cljs$core$IFn$_invoke$arity$2(G__9491,G__9492) : pred__9484.call(null,G__9491,G__9492));
2095
+ })())){
2096
+ var vec__9493 = clause;
2097
+ var seq__9494 = cljs.core.seq(vec__9493);
2098
+ var first__9495 = cljs.core.first(seq__9494);
2099
+ var seq__9494__$1 = cljs.core.next(seq__9494);
2100
+ var source_sym = first__9495;
2101
+ var rest = seq__9494__$1;
2102
+ var _STAR_implicit_source_STAR__orig_val__9496 = datascript.query._STAR_implicit_source_STAR_;
2103
+ var _STAR_implicit_source_STAR__temp_val__9497 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"sources","sources",-321166424).cljs$core$IFn$_invoke$arity$1(context),source_sym);
2104
+ (datascript.query._STAR_implicit_source_STAR_ = _STAR_implicit_source_STAR__temp_val__9497);
2105
+
2106
+ try{return datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$3(context,rest,clause);
2107
+ }finally {(datascript.query._STAR_implicit_source_STAR_ = _STAR_implicit_source_STAR__orig_val__9496);
2108
+ }} else {
2109
+ if(cljs.core.truth_((function (){var G__9498 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"or","or",1876275696,null),new cljs.core.Symbol(null,"*","*",345799209,null)], null);
2110
+ var G__9499 = expr__9485;
2111
+ return (pred__9484.cljs$core$IFn$_invoke$arity$2 ? pred__9484.cljs$core$IFn$_invoke$arity$2(G__9498,G__9499) : pred__9484.call(null,G__9498,G__9499));
2112
+ })())){
2113
+ var vec__9500 = clause;
2114
+ var seq__9501 = cljs.core.seq(vec__9500);
2115
+ var first__9502 = cljs.core.first(seq__9501);
2116
+ var seq__9501__$1 = cljs.core.next(seq__9501);
2117
+ var _ = first__9502;
2118
+ var branches = seq__9501__$1;
2119
+ var ___$1 = datascript.query.check_free_same(datascript.query.bound_vars(context),branches,clause);
2120
+ var contexts = cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (context,clause,orig_clause,vec__9500,seq__9501,first__9502,seq__9501__$1,_,branches,___$1,pred__9484,expr__9485){
2121
+ return (function (p1__9478_SHARP_){
2122
+ return (datascript.query.resolve_clause.cljs$core$IFn$_invoke$arity$2 ? datascript.query.resolve_clause.cljs$core$IFn$_invoke$arity$2(context,p1__9478_SHARP_) : datascript.query.resolve_clause.call(null,context,p1__9478_SHARP_));
2123
+ });})(context,clause,orig_clause,vec__9500,seq__9501,first__9502,seq__9501__$1,_,branches,___$1,pred__9484,expr__9485))
2124
+ ,branches);
2125
+ var rels = cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (context,clause,orig_clause,vec__9500,seq__9501,first__9502,seq__9501__$1,_,branches,___$1,contexts,pred__9484,expr__9485){
2126
+ return (function (p1__9479_SHARP_){
2127
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.hash_join,new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(p1__9479_SHARP_));
2128
+ });})(context,clause,orig_clause,vec__9500,seq__9501,first__9502,seq__9501__$1,_,branches,___$1,contexts,pred__9484,expr__9485))
2129
+ ,contexts);
2130
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(cljs.core.first(contexts),new cljs.core.Keyword(null,"rels","rels",1770187185),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.sum_rel,rels)], null));
2131
+ } else {
2132
+ if(cljs.core.truth_((function (){var G__9503 = new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"or-join","or-join",591375469,null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"*","*",345799209,null)], null),new cljs.core.Symbol(null,"*","*",345799209,null)], null),new cljs.core.Symbol(null,"*","*",345799209,null)], null);
2133
+ var G__9504 = expr__9485;
2134
+ return (pred__9484.cljs$core$IFn$_invoke$arity$2 ? pred__9484.cljs$core$IFn$_invoke$arity$2(G__9503,G__9504) : pred__9484.call(null,G__9503,G__9504));
2135
+ })())){
2136
+ var vec__9505 = clause;
2137
+ var seq__9506 = cljs.core.seq(vec__9505);
2138
+ var first__9507 = cljs.core.first(seq__9506);
2139
+ var seq__9506__$1 = cljs.core.next(seq__9506);
2140
+ var _ = first__9507;
2141
+ var first__9507__$1 = cljs.core.first(seq__9506__$1);
2142
+ var seq__9506__$2 = cljs.core.next(seq__9506__$1);
2143
+ var vec__9508 = first__9507__$1;
2144
+ var seq__9509 = cljs.core.seq(vec__9508);
2145
+ var first__9510 = cljs.core.first(seq__9509);
2146
+ var seq__9509__$1 = cljs.core.next(seq__9509);
2147
+ var req_vars = first__9510;
2148
+ var vars = seq__9509__$1;
2149
+ var branches = seq__9506__$2;
2150
+ var bound = datascript.query.bound_vars(context);
2151
+ datascript.query.check_bound(bound,req_vars,orig_clause);
2152
+
2153
+ datascript.query.check_free_subset(bound,vars,branches);
2154
+
2155
+ var G__9678 = context;
2156
+ var G__9679 = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$3(new cljs.core.Symbol(null,"or-join","or-join",591375469,null),cljs.core.concat.cljs$core$IFn$_invoke$arity$2(req_vars,vars),branches);
2157
+ var G__9680 = clause;
2158
+ context = G__9678;
2159
+ clause = G__9679;
2160
+ orig_clause = G__9680;
2161
+ continue;
2162
+ } else {
2163
+ if(cljs.core.truth_((function (){var G__9511 = new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"or-join","or-join",591375469,null),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"*","*",345799209,null)], null),new cljs.core.Symbol(null,"*","*",345799209,null)], null);
2164
+ var G__9512 = expr__9485;
2165
+ return (pred__9484.cljs$core$IFn$_invoke$arity$2 ? pred__9484.cljs$core$IFn$_invoke$arity$2(G__9511,G__9512) : pred__9484.call(null,G__9511,G__9512));
2166
+ })())){
2167
+ var vec__9513 = clause;
2168
+ var seq__9514 = cljs.core.seq(vec__9513);
2169
+ var first__9515 = cljs.core.first(seq__9514);
2170
+ var seq__9514__$1 = cljs.core.next(seq__9514);
2171
+ var _ = first__9515;
2172
+ var first__9515__$1 = cljs.core.first(seq__9514__$1);
2173
+ var seq__9514__$2 = cljs.core.next(seq__9514__$1);
2174
+ var vars = first__9515__$1;
2175
+ var branches = seq__9514__$2;
2176
+ var vars__$1 = cljs.core.set(vars);
2177
+ var ___$1 = datascript.query.check_free_subset(datascript.query.bound_vars(context),vars__$1,branches);
2178
+ var join_context = datascript.query.limit_context(context,vars__$1);
2179
+ var contexts = cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (context,clause,orig_clause,vec__9513,seq__9514,first__9515,seq__9514__$1,_,first__9515__$1,seq__9514__$2,vars,branches,vars__$1,___$1,join_context,pred__9484,expr__9485){
2180
+ return (function (p1__9480_SHARP_){
2181
+ return datascript.query.limit_context((datascript.query.resolve_clause.cljs$core$IFn$_invoke$arity$2 ? datascript.query.resolve_clause.cljs$core$IFn$_invoke$arity$2(join_context,p1__9480_SHARP_) : datascript.query.resolve_clause.call(null,join_context,p1__9480_SHARP_)),vars__$1);
2182
+ });})(context,clause,orig_clause,vec__9513,seq__9514,first__9515,seq__9514__$1,_,first__9515__$1,seq__9514__$2,vars,branches,vars__$1,___$1,join_context,pred__9484,expr__9485))
2183
+ ,branches);
2184
+ var rels = cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (context,clause,orig_clause,vec__9513,seq__9514,first__9515,seq__9514__$1,_,first__9515__$1,seq__9514__$2,vars,branches,vars__$1,___$1,join_context,contexts,pred__9484,expr__9485){
2185
+ return (function (p1__9481_SHARP_){
2186
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.hash_join,new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(p1__9481_SHARP_));
2187
+ });})(context,clause,orig_clause,vec__9513,seq__9514,first__9515,seq__9514__$1,_,first__9515__$1,seq__9514__$2,vars,branches,vars__$1,___$1,join_context,contexts,pred__9484,expr__9485))
2188
+ ,contexts);
2189
+ var sum_rel = cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.sum_rel,rels);
2190
+ return cljs.core.update.cljs$core$IFn$_invoke$arity$4(context,new cljs.core.Keyword(null,"rels","rels",1770187185),datascript.query.collapse_rels,sum_rel);
2191
+ } else {
2192
+ if(cljs.core.truth_((function (){var G__9516 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"and","and",668631710,null),new cljs.core.Symbol(null,"*","*",345799209,null)], null);
2193
+ var G__9517 = expr__9485;
2194
+ return (pred__9484.cljs$core$IFn$_invoke$arity$2 ? pred__9484.cljs$core$IFn$_invoke$arity$2(G__9516,G__9517) : pred__9484.call(null,G__9516,G__9517));
2195
+ })())){
2196
+ var vec__9518 = clause;
2197
+ var seq__9519 = cljs.core.seq(vec__9518);
2198
+ var first__9520 = cljs.core.first(seq__9519);
2199
+ var seq__9519__$1 = cljs.core.next(seq__9519);
2200
+ var _ = first__9520;
2201
+ var clauses = seq__9519__$1;
2202
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.query.resolve_clause,context,clauses);
2203
+ } else {
2204
+ if(cljs.core.truth_((function (){var G__9521 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"not","not",1044554643,null),new cljs.core.Symbol(null,"*","*",345799209,null)], null);
2205
+ var G__9522 = expr__9485;
2206
+ return (pred__9484.cljs$core$IFn$_invoke$arity$2 ? pred__9484.cljs$core$IFn$_invoke$arity$2(G__9521,G__9522) : pred__9484.call(null,G__9521,G__9522));
2207
+ })())){
2208
+ var vec__9523 = clause;
2209
+ var seq__9524 = cljs.core.seq(vec__9523);
2210
+ var first__9525 = cljs.core.first(seq__9524);
2211
+ var seq__9524__$1 = cljs.core.next(seq__9524);
2212
+ var _ = first__9525;
2213
+ var clauses = seq__9524__$1;
2214
+ var bound = datascript.query.bound_vars(context);
2215
+ var negation_vars = datascript.query.collect_vars(clauses);
2216
+ var ___$1 = ((cljs.core.empty_QMARK_(clojure.set.intersection.cljs$core$IFn$_invoke$arity$2(bound,negation_vars)))?(function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Insufficient bindings: none of ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([negation_vars], 0))," is bound in ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([orig_clause], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword("query","where","query/where",-1935159429),new cljs.core.Keyword(null,"form","form",-1624062471),orig_clause], null))})():null);
2217
+ var context_SINGLEQUOTE_ = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(context,new cljs.core.Keyword(null,"rels","rels",1770187185),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.hash_join,new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(context))], null));
2218
+ var negation_context = cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.query.resolve_clause,context_SINGLEQUOTE_,clauses);
2219
+ var negation = datascript.query.subtract_rel(datascript.query.single(new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(context_SINGLEQUOTE_)),cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.hash_join,new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(negation_context)));
2220
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(context_SINGLEQUOTE_,new cljs.core.Keyword(null,"rels","rels",1770187185),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [negation], null));
2221
+ } else {
2222
+ if(cljs.core.truth_((function (){var G__9526 = new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"not-join","not-join",-645515756,null),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"*","*",345799209,null)], null),new cljs.core.Symbol(null,"*","*",345799209,null)], null);
2223
+ var G__9527 = expr__9485;
2224
+ return (pred__9484.cljs$core$IFn$_invoke$arity$2 ? pred__9484.cljs$core$IFn$_invoke$arity$2(G__9526,G__9527) : pred__9484.call(null,G__9526,G__9527));
2225
+ })())){
2226
+ var vec__9528 = clause;
2227
+ var seq__9529 = cljs.core.seq(vec__9528);
2228
+ var first__9530 = cljs.core.first(seq__9529);
2229
+ var seq__9529__$1 = cljs.core.next(seq__9529);
2230
+ var _ = first__9530;
2231
+ var first__9530__$1 = cljs.core.first(seq__9529__$1);
2232
+ var seq__9529__$2 = cljs.core.next(seq__9529__$1);
2233
+ var vars = first__9530__$1;
2234
+ var clauses = seq__9529__$2;
2235
+ var bound = datascript.query.bound_vars(context);
2236
+ var ___$1 = datascript.query.check_bound(bound,vars,orig_clause);
2237
+ var context_SINGLEQUOTE_ = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(context,new cljs.core.Keyword(null,"rels","rels",1770187185),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.hash_join,new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(context))], null));
2238
+ var join_context = datascript.query.limit_context(context_SINGLEQUOTE_,vars);
2239
+ var negation_context = datascript.query.limit_context(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.query.resolve_clause,join_context,clauses),vars);
2240
+ var negation = datascript.query.subtract_rel(datascript.query.single(new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(context_SINGLEQUOTE_)),cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(datascript.query.hash_join,new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(negation_context)));
2241
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(context_SINGLEQUOTE_,new cljs.core.Keyword(null,"rels","rels",1770187185),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [negation], null));
2242
+ } else {
2243
+ if(cljs.core.truth_((function (){var G__9531 = new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"*","*",345799209,null)], null);
2244
+ var G__9532 = expr__9485;
2245
+ return (pred__9484.cljs$core$IFn$_invoke$arity$2 ? pred__9484.cljs$core$IFn$_invoke$arity$2(G__9531,G__9532) : pred__9484.call(null,G__9531,G__9532));
2246
+ })())){
2247
+ var source = datascript.query._STAR_implicit_source_STAR_;
2248
+ var pattern_SINGLEQUOTE_ = datascript.query.resolve_pattern_lookup_refs(source,clause);
2249
+ var relation = datascript.query.lookup_pattern(context,source,pattern_SINGLEQUOTE_);
2250
+ var _STAR_lookup_attrs_STAR__orig_val__9533 = datascript.query._STAR_lookup_attrs_STAR_;
2251
+ var _STAR_lookup_attrs_STAR__temp_val__9534 = (((((!((source == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === source.datascript$db$IDB$))))?true:(((!source.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(datascript.db.IDB,source):false)):cljs.core.native_satisfies_QMARK_(datascript.db.IDB,source)))?datascript.query.dynamic_lookup_attrs(source,pattern_SINGLEQUOTE_):datascript.query._STAR_lookup_attrs_STAR_);
2252
+ (datascript.query._STAR_lookup_attrs_STAR_ = _STAR_lookup_attrs_STAR__temp_val__9534);
2253
+
2254
+ try{return cljs.core.update.cljs$core$IFn$_invoke$arity$4(context,new cljs.core.Keyword(null,"rels","rels",1770187185),datascript.query.collapse_rels,relation);
2255
+ }finally {(datascript.query._STAR_lookup_attrs_STAR_ = _STAR_lookup_attrs_STAR__orig_val__9533);
2256
+ }} else {
2257
+ throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(expr__9485)].join('')));
2258
+ }
2259
+ }
2260
+ }
2261
+ }
2262
+ }
2263
+ }
2264
+ }
2265
+ }
2266
+ }
2267
+ }
2268
+ break;
2269
+ }
2270
+ }));
2271
+
2272
+ (datascript.query._resolve_clause.cljs$lang$maxFixedArity = 3);
2273
+
2274
+ datascript.query.resolve_clause = (function datascript$query$resolve_clause(context,clause){
2275
+ if(cljs.core.truth_(cljs.core.some(cljs.core.comp.cljs$core$IFn$_invoke$arity$2(cljs.core.empty_QMARK_,new cljs.core.Keyword(null,"tuples","tuples",-676032639)),new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(context)))){
2276
+ return context;
2277
+ } else {
2278
+ if(datascript.query.rule_QMARK_(context,clause)){
2279
+ if(datascript.query.source_QMARK_(cljs.core.first(clause))){
2280
+ var _STAR_implicit_source_STAR__orig_val__9536 = datascript.query._STAR_implicit_source_STAR_;
2281
+ var _STAR_implicit_source_STAR__temp_val__9537 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"sources","sources",-321166424).cljs$core$IFn$_invoke$arity$1(context),cljs.core.first(clause));
2282
+ (datascript.query._STAR_implicit_source_STAR_ = _STAR_implicit_source_STAR__temp_val__9537);
2283
+
2284
+ try{var G__9538 = context;
2285
+ var G__9539 = cljs.core.next(clause);
2286
+ return (datascript.query.resolve_clause.cljs$core$IFn$_invoke$arity$2 ? datascript.query.resolve_clause.cljs$core$IFn$_invoke$arity$2(G__9538,G__9539) : datascript.query.resolve_clause.call(null,G__9538,G__9539));
2287
+ }finally {(datascript.query._STAR_implicit_source_STAR_ = _STAR_implicit_source_STAR__orig_val__9536);
2288
+ }} else {
2289
+ return cljs.core.update.cljs$core$IFn$_invoke$arity$4(context,new cljs.core.Keyword(null,"rels","rels",1770187185),datascript.query.collapse_rels,datascript.query.solve_rule(context,clause));
2290
+ }
2291
+ } else {
2292
+ return datascript.query._resolve_clause.cljs$core$IFn$_invoke$arity$2(context,clause);
2293
+ }
2294
+ }
2295
+ });
2296
+ datascript.query._q = (function datascript$query$_q(context,clauses){
2297
+ var _STAR_implicit_source_STAR__orig_val__9540 = datascript.query._STAR_implicit_source_STAR_;
2298
+ var _STAR_implicit_source_STAR__temp_val__9541 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"sources","sources",-321166424).cljs$core$IFn$_invoke$arity$1(context),new cljs.core.Symbol(null,"$","$",-1580747756,null));
2299
+ (datascript.query._STAR_implicit_source_STAR_ = _STAR_implicit_source_STAR__temp_val__9541);
2300
+
2301
+ try{return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.query.resolve_clause,context,clauses);
2302
+ }finally {(datascript.query._STAR_implicit_source_STAR_ = _STAR_implicit_source_STAR__orig_val__9540);
2303
+ }});
2304
+ datascript.query._collect_tuples = (function datascript$query$_collect_tuples(acc,rel,len,copy_map){
2305
+ return cljs.core.__GT_Eduction(cljs.core.comp.cljs$core$IFn$_invoke$arity$2(cljs.core.map.cljs$core$IFn$_invoke$arity$1((function (t1){
2306
+ return cljs.core.__GT_Eduction(cljs.core.map.cljs$core$IFn$_invoke$arity$1((function (t2){
2307
+ var res = cljs.core.aclone(t1);
2308
+ var n__5593__auto___9681 = len;
2309
+ var i_9682 = (0);
2310
+ while(true){
2311
+ if((i_9682 < n__5593__auto___9681)){
2312
+ var temp__5808__auto___9683 = (copy_map[i_9682]);
2313
+ if((temp__5808__auto___9683 == null)){
2314
+ } else {
2315
+ var idx_9684 = temp__5808__auto___9683;
2316
+ (res[i_9682] = (t2[idx_9684]));
2317
+ }
2318
+
2319
+ var G__9685 = (i_9682 + (1));
2320
+ i_9682 = G__9685;
2321
+ continue;
2322
+ } else {
2323
+ }
2324
+ break;
2325
+ }
2326
+
2327
+ return res;
2328
+ })),new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(rel));
2329
+ })),cljs.core.cat),acc);
2330
+ });
2331
+ datascript.query._collect = (function datascript$query$_collect(var_args){
2332
+ var G__9544 = arguments.length;
2333
+ switch (G__9544) {
2334
+ case 2:
2335
+ return datascript.query._collect.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
2336
+
2337
+ break;
2338
+ case 3:
2339
+ return datascript.query._collect.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
2340
+
2341
+ break;
2342
+ default:
2343
+ throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
2344
+
2345
+ }
2346
+ });
2347
+
2348
+ (datascript.query._collect.cljs$core$IFn$_invoke$arity$2 = (function (context,symbols){
2349
+ var rels = new cljs.core.Keyword(null,"rels","rels",1770187185).cljs$core$IFn$_invoke$arity$1(context);
2350
+ return datascript.query._collect.cljs$core$IFn$_invoke$arity$3(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [me.tonsky.persistent_sorted_set.arrays.make_array(cljs.core.count(symbols))], null),rels,symbols);
2351
+ }));
2352
+
2353
+ (datascript.query._collect.cljs$core$IFn$_invoke$arity$3 = (function (acc,rels,symbols){
2354
+ while(true){
2355
+ var rel = cljs.core.first(rels);
2356
+ if((rel == null)){
2357
+ return acc;
2358
+ } else {
2359
+ if(cljs.core.empty_QMARK_(new cljs.core.Keyword(null,"tuples","tuples",-676032639).cljs$core$IFn$_invoke$arity$1(rel))){
2360
+ return cljs.core.PersistentVector.EMPTY;
2361
+ } else {
2362
+ var keep_attrs = cljs.core.select_keys(new cljs.core.Keyword(null,"attrs","attrs",-2090668713).cljs$core$IFn$_invoke$arity$1(rel),symbols);
2363
+ if(cljs.core.empty_QMARK_(keep_attrs)){
2364
+ var G__9687 = acc;
2365
+ var G__9688 = cljs.core.next(rels);
2366
+ var G__9689 = symbols;
2367
+ acc = G__9687;
2368
+ rels = G__9688;
2369
+ symbols = G__9689;
2370
+ continue;
2371
+ } else {
2372
+ var copy_map = cljs.core.to_array(cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (acc,rels,symbols,keep_attrs,rel){
2373
+ return (function (p1__9542_SHARP_){
2374
+ return cljs.core.get.cljs$core$IFn$_invoke$arity$2(keep_attrs,p1__9542_SHARP_);
2375
+ });})(acc,rels,symbols,keep_attrs,rel))
2376
+ ,symbols));
2377
+ var len = cljs.core.count(symbols);
2378
+ var G__9690 = datascript.query._collect_tuples(acc,rel,len,copy_map);
2379
+ var G__9691 = cljs.core.next(rels);
2380
+ var G__9692 = symbols;
2381
+ acc = G__9690;
2382
+ rels = G__9691;
2383
+ symbols = G__9692;
2384
+ continue;
2385
+
2386
+ }
2387
+ }
2388
+ }
2389
+ break;
2390
+ }
2391
+ }));
2392
+
2393
+ (datascript.query._collect.cljs$lang$maxFixedArity = 3);
2394
+
2395
+ datascript.query.collect = (function datascript$query$collect(context,symbols){
2396
+ return cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentHashSet.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$1(cljs.core.vec),datascript.query._collect.cljs$core$IFn$_invoke$arity$2(context,symbols));
2397
+ });
2398
+
2399
+ /**
2400
+ * @interface
2401
+ */
2402
+ datascript.query.IContextResolve = function(){};
2403
+
2404
+ var datascript$query$IContextResolve$_context_resolve$dyn_9693 = (function (var$,context){
2405
+ var x__5350__auto__ = (((var$ == null))?null:var$);
2406
+ var m__5351__auto__ = (datascript.query._context_resolve[goog.typeOf(x__5350__auto__)]);
2407
+ if((!((m__5351__auto__ == null)))){
2408
+ return (m__5351__auto__.cljs$core$IFn$_invoke$arity$2 ? m__5351__auto__.cljs$core$IFn$_invoke$arity$2(var$,context) : m__5351__auto__.call(null,var$,context));
2409
+ } else {
2410
+ var m__5349__auto__ = (datascript.query._context_resolve["_"]);
2411
+ if((!((m__5349__auto__ == null)))){
2412
+ return (m__5349__auto__.cljs$core$IFn$_invoke$arity$2 ? m__5349__auto__.cljs$core$IFn$_invoke$arity$2(var$,context) : m__5349__auto__.call(null,var$,context));
2413
+ } else {
2414
+ throw cljs.core.missing_protocol("IContextResolve.-context-resolve",var$);
2415
+ }
2416
+ }
2417
+ });
2418
+ datascript.query._context_resolve = (function datascript$query$_context_resolve(var$,context){
2419
+ if((((!((var$ == null)))) && ((!((var$.datascript$query$IContextResolve$_context_resolve$arity$2 == null)))))){
2420
+ return var$.datascript$query$IContextResolve$_context_resolve$arity$2(var$,context);
2421
+ } else {
2422
+ return datascript$query$IContextResolve$_context_resolve$dyn_9693(var$,context);
2423
+ }
2424
+ });
2425
+
2426
+ (datascript.parser.Variable.prototype.datascript$query$IContextResolve$ = cljs.core.PROTOCOL_SENTINEL);
2427
+
2428
+ (datascript.parser.Variable.prototype.datascript$query$IContextResolve$_context_resolve$arity$2 = (function (var$,context){
2429
+ var var$__$1 = this;
2430
+ return datascript.query.context_resolve_val(context,var$__$1.symbol);
2431
+ }));
2432
+
2433
+ (datascript.parser.SrcVar.prototype.datascript$query$IContextResolve$ = cljs.core.PROTOCOL_SENTINEL);
2434
+
2435
+ (datascript.parser.SrcVar.prototype.datascript$query$IContextResolve$_context_resolve$arity$2 = (function (var$,context){
2436
+ var var$__$1 = this;
2437
+ return cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(context,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"sources","sources",-321166424),var$__$1.symbol], null));
2438
+ }));
2439
+
2440
+ (datascript.parser.PlainSymbol.prototype.datascript$query$IContextResolve$ = cljs.core.PROTOCOL_SENTINEL);
2441
+
2442
+ (datascript.parser.PlainSymbol.prototype.datascript$query$IContextResolve$_context_resolve$arity$2 = (function (var$,_){
2443
+ var var$__$1 = this;
2444
+ var or__5002__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(datascript.built_ins.aggregates,var$__$1.symbol);
2445
+ if(cljs.core.truth_(or__5002__auto__)){
2446
+ return or__5002__auto__;
2447
+ } else {
2448
+ return datascript.query.resolve_sym(var$__$1.symbol);
2449
+ }
2450
+ }));
2451
+
2452
+ (datascript.parser.Constant.prototype.datascript$query$IContextResolve$ = cljs.core.PROTOCOL_SENTINEL);
2453
+
2454
+ (datascript.parser.Constant.prototype.datascript$query$IContextResolve$_context_resolve$arity$2 = (function (var$,_){
2455
+ var var$__$1 = this;
2456
+ return var$__$1.value;
2457
+ }));
2458
+ datascript.query._aggregate = (function datascript$query$_aggregate(find_elements,context,tuples){
2459
+ return cljs.core.mapv.cljs$core$IFn$_invoke$arity$4((function (element,fixed_value,i){
2460
+ if(datascript.parser.aggregate_QMARK_(element)){
2461
+ var f = datascript.query._context_resolve(new cljs.core.Keyword(null,"fn","fn",-1175266204).cljs$core$IFn$_invoke$arity$1(element),context);
2462
+ var args = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__9545_SHARP_){
2463
+ return datascript.query._context_resolve(p1__9545_SHARP_,context);
2464
+ }),cljs.core.butlast(new cljs.core.Keyword(null,"args","args",1315556576).cljs$core$IFn$_invoke$arity$1(element)));
2465
+ var vals = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__9546_SHARP_){
2466
+ return cljs.core.nth.cljs$core$IFn$_invoke$arity$2(p1__9546_SHARP_,i);
2467
+ }),tuples);
2468
+ return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(f,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(args,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [vals], null)));
2469
+ } else {
2470
+ return fixed_value;
2471
+ }
2472
+ }),find_elements,cljs.core.first(tuples),cljs.core.range.cljs$core$IFn$_invoke$arity$0());
2473
+ });
2474
+ datascript.query.idxs_of = (function datascript$query$idxs_of(pred,coll){
2475
+ return cljs.core.remove.cljs$core$IFn$_invoke$arity$2(cljs.core.nil_QMARK_,cljs.core.map.cljs$core$IFn$_invoke$arity$3((function (p1__9547_SHARP_,p2__9548_SHARP_){
2476
+ if(cljs.core.truth_((pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(p1__9547_SHARP_) : pred.call(null,p1__9547_SHARP_)))){
2477
+ return p2__9548_SHARP_;
2478
+ } else {
2479
+ return null;
2480
+ }
2481
+ }),coll,cljs.core.range.cljs$core$IFn$_invoke$arity$0()));
2482
+ });
2483
+ datascript.query.aggregate = (function datascript$query$aggregate(find_elements,context,resultset){
2484
+ var group_idxs = datascript.query.idxs_of(cljs.core.complement(datascript.parser.aggregate_QMARK_),find_elements);
2485
+ var group_fn = (function (tuple){
2486
+ return cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__9549_SHARP_){
2487
+ return cljs.core.nth.cljs$core$IFn$_invoke$arity$2(tuple,p1__9549_SHARP_);
2488
+ }),group_idxs);
2489
+ });
2490
+ var grouped = cljs.core.group_by(group_fn,resultset);
2491
+ var iter__5480__auto__ = (function datascript$query$aggregate_$_iter__9550(s__9551){
2492
+ return (new cljs.core.LazySeq(null,(function (){
2493
+ var s__9551__$1 = s__9551;
2494
+ while(true){
2495
+ var temp__5804__auto__ = cljs.core.seq(s__9551__$1);
2496
+ if(temp__5804__auto__){
2497
+ var s__9551__$2 = temp__5804__auto__;
2498
+ if(cljs.core.chunked_seq_QMARK_(s__9551__$2)){
2499
+ var c__5478__auto__ = cljs.core.chunk_first(s__9551__$2);
2500
+ var size__5479__auto__ = cljs.core.count(c__5478__auto__);
2501
+ var b__9553 = cljs.core.chunk_buffer(size__5479__auto__);
2502
+ if((function (){var i__9552 = (0);
2503
+ while(true){
2504
+ if((i__9552 < size__5479__auto__)){
2505
+ var vec__9554 = cljs.core._nth(c__5478__auto__,i__9552);
2506
+ var _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9554,(0),null);
2507
+ var tuples = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9554,(1),null);
2508
+ cljs.core.chunk_append(b__9553,datascript.query._aggregate(find_elements,context,tuples));
2509
+
2510
+ var G__9694 = (i__9552 + (1));
2511
+ i__9552 = G__9694;
2512
+ continue;
2513
+ } else {
2514
+ return true;
2515
+ }
2516
+ break;
2517
+ }
2518
+ })()){
2519
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9553),datascript$query$aggregate_$_iter__9550(cljs.core.chunk_rest(s__9551__$2)));
2520
+ } else {
2521
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9553),null);
2522
+ }
2523
+ } else {
2524
+ var vec__9557 = cljs.core.first(s__9551__$2);
2525
+ var _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9557,(0),null);
2526
+ var tuples = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9557,(1),null);
2527
+ return cljs.core.cons(datascript.query._aggregate(find_elements,context,tuples),datascript$query$aggregate_$_iter__9550(cljs.core.rest(s__9551__$2)));
2528
+ }
2529
+ } else {
2530
+ return null;
2531
+ }
2532
+ break;
2533
+ }
2534
+ }),null,null));
2535
+ });
2536
+ return iter__5480__auto__(grouped);
2537
+ });
2538
+ datascript.query.map_STAR_ = (function datascript$query$map_STAR_(f,xs){
2539
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (p1__9560_SHARP_,p2__9561_SHARP_){
2540
+ return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(p1__9560_SHARP_,(f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(p2__9561_SHARP_) : f.call(null,p2__9561_SHARP_)));
2541
+ }),cljs.core.empty(xs),xs);
2542
+ });
2543
+ datascript.query.tuples__GT_return_map = (function datascript$query$tuples__GT_return_map(return_map,tuples){
2544
+ var symbols = new cljs.core.Keyword(null,"symbols","symbols",1211743).cljs$core$IFn$_invoke$arity$1(return_map);
2545
+ var idxs = cljs.core.range.cljs$core$IFn$_invoke$arity$2((0),cljs.core.count(symbols));
2546
+ return datascript.query.map_STAR_((function (tuple){
2547
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (m,i){
2548
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,cljs.core.nth.cljs$core$IFn$_invoke$arity$2(symbols,i),cljs.core.nth.cljs$core$IFn$_invoke$arity$2(tuple,i));
2549
+ }),cljs.core.PersistentArrayMap.EMPTY,idxs);
2550
+ }),tuples);
2551
+ });
2552
+
2553
+ /**
2554
+ * @interface
2555
+ */
2556
+ datascript.query.IPostProcess = function(){};
2557
+
2558
+ var datascript$query$IPostProcess$_post_process$dyn_9695 = (function (find,return_map,tuples){
2559
+ var x__5350__auto__ = (((find == null))?null:find);
2560
+ var m__5351__auto__ = (datascript.query._post_process[goog.typeOf(x__5350__auto__)]);
2561
+ if((!((m__5351__auto__ == null)))){
2562
+ return (m__5351__auto__.cljs$core$IFn$_invoke$arity$3 ? m__5351__auto__.cljs$core$IFn$_invoke$arity$3(find,return_map,tuples) : m__5351__auto__.call(null,find,return_map,tuples));
2563
+ } else {
2564
+ var m__5349__auto__ = (datascript.query._post_process["_"]);
2565
+ if((!((m__5349__auto__ == null)))){
2566
+ return (m__5349__auto__.cljs$core$IFn$_invoke$arity$3 ? m__5349__auto__.cljs$core$IFn$_invoke$arity$3(find,return_map,tuples) : m__5349__auto__.call(null,find,return_map,tuples));
2567
+ } else {
2568
+ throw cljs.core.missing_protocol("IPostProcess.-post-process",find);
2569
+ }
2570
+ }
2571
+ });
2572
+ datascript.query._post_process = (function datascript$query$_post_process(find,return_map,tuples){
2573
+ if((((!((find == null)))) && ((!((find.datascript$query$IPostProcess$_post_process$arity$3 == null)))))){
2574
+ return find.datascript$query$IPostProcess$_post_process$arity$3(find,return_map,tuples);
2575
+ } else {
2576
+ return datascript$query$IPostProcess$_post_process$dyn_9695(find,return_map,tuples);
2577
+ }
2578
+ });
2579
+
2580
+ (datascript.parser.FindRel.prototype.datascript$query$IPostProcess$ = cljs.core.PROTOCOL_SENTINEL);
2581
+
2582
+ (datascript.parser.FindRel.prototype.datascript$query$IPostProcess$_post_process$arity$3 = (function (_,return_map,tuples){
2583
+ var ___$1 = this;
2584
+ if((return_map == null)){
2585
+ return tuples;
2586
+ } else {
2587
+ return datascript.query.tuples__GT_return_map(return_map,tuples);
2588
+ }
2589
+ }));
2590
+
2591
+ (datascript.parser.FindColl.prototype.datascript$query$IPostProcess$ = cljs.core.PROTOCOL_SENTINEL);
2592
+
2593
+ (datascript.parser.FindColl.prototype.datascript$query$IPostProcess$_post_process$arity$3 = (function (_,return_map,tuples){
2594
+ var ___$1 = this;
2595
+ return cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentVector.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$1(cljs.core.first),tuples);
2596
+ }));
2597
+
2598
+ (datascript.parser.FindScalar.prototype.datascript$query$IPostProcess$ = cljs.core.PROTOCOL_SENTINEL);
2599
+
2600
+ (datascript.parser.FindScalar.prototype.datascript$query$IPostProcess$_post_process$arity$3 = (function (_,return_map,tuples){
2601
+ var ___$1 = this;
2602
+ return cljs.core.ffirst(tuples);
2603
+ }));
2604
+
2605
+ (datascript.parser.FindTuple.prototype.datascript$query$IPostProcess$ = cljs.core.PROTOCOL_SENTINEL);
2606
+
2607
+ (datascript.parser.FindTuple.prototype.datascript$query$IPostProcess$_post_process$arity$3 = (function (_,return_map,tuples){
2608
+ var ___$1 = this;
2609
+ if((!((return_map == null)))){
2610
+ return cljs.core.first(datascript.query.tuples__GT_return_map(return_map,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.first(tuples)], null)));
2611
+ } else {
2612
+ return cljs.core.first(tuples);
2613
+ }
2614
+ }));
2615
+ datascript.query.pull = (function datascript$query$pull(find_elements,context,resultset){
2616
+ var resolved = (function (){var iter__5480__auto__ = (function datascript$query$pull_$_iter__9562(s__9563){
2617
+ return (new cljs.core.LazySeq(null,(function (){
2618
+ var s__9563__$1 = s__9563;
2619
+ while(true){
2620
+ var temp__5804__auto__ = cljs.core.seq(s__9563__$1);
2621
+ if(temp__5804__auto__){
2622
+ var s__9563__$2 = temp__5804__auto__;
2623
+ if(cljs.core.chunked_seq_QMARK_(s__9563__$2)){
2624
+ var c__5478__auto__ = cljs.core.chunk_first(s__9563__$2);
2625
+ var size__5479__auto__ = cljs.core.count(c__5478__auto__);
2626
+ var b__9565 = cljs.core.chunk_buffer(size__5479__auto__);
2627
+ if((function (){var i__9564 = (0);
2628
+ while(true){
2629
+ if((i__9564 < size__5479__auto__)){
2630
+ var find = cljs.core._nth(c__5478__auto__,i__9564);
2631
+ cljs.core.chunk_append(b__9565,((datascript.parser.pull_QMARK_(find))?(function (){var db = datascript.query._context_resolve(new cljs.core.Keyword(null,"source","source",-433931539).cljs$core$IFn$_invoke$arity$1(find),context);
2632
+ var pattern = datascript.query._context_resolve(new cljs.core.Keyword(null,"pattern","pattern",242135423).cljs$core$IFn$_invoke$arity$1(find),context);
2633
+ return datascript.pull_api.parse_opts.cljs$core$IFn$_invoke$arity$2(db,pattern);
2634
+ })():null));
2635
+
2636
+ var G__9696 = (i__9564 + (1));
2637
+ i__9564 = G__9696;
2638
+ continue;
2639
+ } else {
2640
+ return true;
2641
+ }
2642
+ break;
2643
+ }
2644
+ })()){
2645
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9565),datascript$query$pull_$_iter__9562(cljs.core.chunk_rest(s__9563__$2)));
2646
+ } else {
2647
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9565),null);
2648
+ }
2649
+ } else {
2650
+ var find = cljs.core.first(s__9563__$2);
2651
+ return cljs.core.cons(((datascript.parser.pull_QMARK_(find))?(function (){var db = datascript.query._context_resolve(new cljs.core.Keyword(null,"source","source",-433931539).cljs$core$IFn$_invoke$arity$1(find),context);
2652
+ var pattern = datascript.query._context_resolve(new cljs.core.Keyword(null,"pattern","pattern",242135423).cljs$core$IFn$_invoke$arity$1(find),context);
2653
+ return datascript.pull_api.parse_opts.cljs$core$IFn$_invoke$arity$2(db,pattern);
2654
+ })():null),datascript$query$pull_$_iter__9562(cljs.core.rest(s__9563__$2)));
2655
+ }
2656
+ } else {
2657
+ return null;
2658
+ }
2659
+ break;
2660
+ }
2661
+ }),null,null));
2662
+ });
2663
+ return iter__5480__auto__(find_elements);
2664
+ })();
2665
+ var iter__5480__auto__ = (function datascript$query$pull_$_iter__9566(s__9567){
2666
+ return (new cljs.core.LazySeq(null,(function (){
2667
+ var s__9567__$1 = s__9567;
2668
+ while(true){
2669
+ var temp__5804__auto__ = cljs.core.seq(s__9567__$1);
2670
+ if(temp__5804__auto__){
2671
+ var s__9567__$2 = temp__5804__auto__;
2672
+ if(cljs.core.chunked_seq_QMARK_(s__9567__$2)){
2673
+ var c__5478__auto__ = cljs.core.chunk_first(s__9567__$2);
2674
+ var size__5479__auto__ = cljs.core.count(c__5478__auto__);
2675
+ var b__9569 = cljs.core.chunk_buffer(size__5479__auto__);
2676
+ if((function (){var i__9568 = (0);
2677
+ while(true){
2678
+ if((i__9568 < size__5479__auto__)){
2679
+ var tuple = cljs.core._nth(c__5478__auto__,i__9568);
2680
+ cljs.core.chunk_append(b__9569,cljs.core.mapv.cljs$core$IFn$_invoke$arity$3(((function (i__9568,tuple,c__5478__auto__,size__5479__auto__,b__9569,s__9567__$2,temp__5804__auto__,resolved){
2681
+ return (function (parsed_opts,el){
2682
+ if(cljs.core.truth_(parsed_opts)){
2683
+ return datascript.pull_api.pull_impl(parsed_opts,el);
2684
+ } else {
2685
+ return el;
2686
+ }
2687
+ });})(i__9568,tuple,c__5478__auto__,size__5479__auto__,b__9569,s__9567__$2,temp__5804__auto__,resolved))
2688
+ ,resolved,tuple));
2689
+
2690
+ var G__9697 = (i__9568 + (1));
2691
+ i__9568 = G__9697;
2692
+ continue;
2693
+ } else {
2694
+ return true;
2695
+ }
2696
+ break;
2697
+ }
2698
+ })()){
2699
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9569),datascript$query$pull_$_iter__9566(cljs.core.chunk_rest(s__9567__$2)));
2700
+ } else {
2701
+ return cljs.core.chunk_cons(cljs.core.chunk(b__9569),null);
2702
+ }
2703
+ } else {
2704
+ var tuple = cljs.core.first(s__9567__$2);
2705
+ return cljs.core.cons(cljs.core.mapv.cljs$core$IFn$_invoke$arity$3(((function (tuple,s__9567__$2,temp__5804__auto__,resolved){
2706
+ return (function (parsed_opts,el){
2707
+ if(cljs.core.truth_(parsed_opts)){
2708
+ return datascript.pull_api.pull_impl(parsed_opts,el);
2709
+ } else {
2710
+ return el;
2711
+ }
2712
+ });})(tuple,s__9567__$2,temp__5804__auto__,resolved))
2713
+ ,resolved,tuple),datascript$query$pull_$_iter__9566(cljs.core.rest(s__9567__$2)));
2714
+ }
2715
+ } else {
2716
+ return null;
2717
+ }
2718
+ break;
2719
+ }
2720
+ }),null,null));
2721
+ });
2722
+ return iter__5480__auto__(resultset);
2723
+ });
2724
+ datascript.query.q = (function datascript$query$q(var_args){
2725
+ var args__5732__auto__ = [];
2726
+ var len__5726__auto___9698 = arguments.length;
2727
+ var i__5727__auto___9699 = (0);
2728
+ while(true){
2729
+ if((i__5727__auto___9699 < len__5726__auto___9698)){
2730
+ args__5732__auto__.push((arguments[i__5727__auto___9699]));
2731
+
2732
+ var G__9700 = (i__5727__auto___9699 + (1));
2733
+ i__5727__auto___9699 = G__9700;
2734
+ continue;
2735
+ } else {
2736
+ }
2737
+ break;
2738
+ }
2739
+
2740
+ var argseq__5733__auto__ = ((((1) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((1)),(0),null)):null);
2741
+ return datascript.query.q.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__5733__auto__);
2742
+ });
2743
+
2744
+ (datascript.query.q.cljs$core$IFn$_invoke$arity$variadic = (function (q,inputs){
2745
+ var parsed_q = datascript.lru._get(datascript.query._STAR_query_cache_STAR_,q,(function (){
2746
+ return datascript.parser.parse_query(q);
2747
+ }));
2748
+ var find = new cljs.core.Keyword(null,"qfind","qfind",1529332972).cljs$core$IFn$_invoke$arity$1(parsed_q);
2749
+ var find_elements = datascript.parser.find_elements(find);
2750
+ var find_vars = datascript.parser.find_vars(find);
2751
+ var result_arity = cljs.core.count(find_elements);
2752
+ var with$ = new cljs.core.Keyword(null,"qwith","qwith",-45809392).cljs$core$IFn$_invoke$arity$1(parsed_q);
2753
+ var all_vars = cljs.core.concat.cljs$core$IFn$_invoke$arity$2(find_vars,cljs.core.map.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"symbol","symbol",-1038572696),with$));
2754
+ var q__$1 = (function (){var G__9573 = q;
2755
+ if(cljs.core.sequential_QMARK_(q)){
2756
+ return datascript.parser.query__GT_map(G__9573);
2757
+ } else {
2758
+ return G__9573;
2759
+ }
2760
+ })();
2761
+ var wheres = new cljs.core.Keyword(null,"where","where",-2044795965).cljs$core$IFn$_invoke$arity$1(q__$1);
2762
+ var context = datascript.query.resolve_ins((new datascript.query.Context(cljs.core.PersistentVector.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,null,null,null)),new cljs.core.Keyword(null,"qin","qin",1372651151).cljs$core$IFn$_invoke$arity$1(parsed_q),inputs);
2763
+ var resultset = datascript.query.collect(datascript.query._q(context,wheres),all_vars);
2764
+ var G__9574 = resultset;
2765
+ var G__9574__$1 = (cljs.core.truth_(new cljs.core.Keyword(null,"with","with",-1536296876).cljs$core$IFn$_invoke$arity$1(q__$1))?cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((function (p1__9570_SHARP_){
2766
+ return cljs.core.vec(cljs.core.subvec.cljs$core$IFn$_invoke$arity$3(p1__9570_SHARP_,(0),result_arity));
2767
+ }),G__9574):G__9574);
2768
+ var G__9574__$2 = (cljs.core.truth_(cljs.core.some(datascript.parser.aggregate_QMARK_,find_elements))?datascript.query.aggregate(find_elements,context,G__9574__$1):G__9574__$1);
2769
+ var G__9574__$3 = (cljs.core.truth_(cljs.core.some(datascript.parser.pull_QMARK_,find_elements))?datascript.query.pull(find_elements,context,G__9574__$2):G__9574__$2);
2770
+ return datascript.query._post_process(find,new cljs.core.Keyword(null,"qreturn-map","qreturn-map",1841215994).cljs$core$IFn$_invoke$arity$1(parsed_q),G__9574__$3);
2771
+
2772
+ }));
2773
+
2774
+ (datascript.query.q.cljs$lang$maxFixedArity = (1));
2775
+
2776
+ /** @this {Function} */
2777
+ (datascript.query.q.cljs$lang$applyTo = (function (seq9571){
2778
+ var G__9572 = cljs.core.first(seq9571);
2779
+ var seq9571__$1 = cljs.core.next(seq9571);
2780
+ var self__5711__auto__ = this;
2781
+ return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__9572,seq9571__$1);
2782
+ }));
2783
+
2784
+
2785
+ //# sourceMappingURL=datascript.query.js.map