@anysoftinc/anydb-sdk
Version:
AnyDB TypeScript SDK for querying and transacting with Datomic databases
353 lines (325 loc) • 19.1 kB
JavaScript
var $CLJS = require("./cljs_env");
var $jscomp = $CLJS.$jscomp;
var COMPILED = false;
require("./cljs.core.js");
require("./clojure.edn.js");
require("./clojure.string.js");
require("./datascript.db.js");
require("./datascript.lru.js");
require("./datascript.storage.js");
require("./me.tonsky.persistent_sorted_set.js");
require("./me.tonsky.persistent_sorted_set.arrays.js");
var anydb=$CLJS.anydb || ($CLJS.anydb = {});
var clojure=$CLJS.clojure || ($CLJS.clojure = {});
var cljs=$CLJS.cljs || ($CLJS.cljs = {});
var goog=$CLJS.goog || ($CLJS.goog = {});
var datascript=$CLJS.datascript || ($CLJS.datascript = {});
var me=$CLJS.me || ($CLJS.me = {});
var extend_clj=$CLJS.extend_clj || ($CLJS.extend_clj = {});
$CLJS.SHADOW_ENV.setLoaded("datascript.serialize.js");
goog.provide('datascript.serialize');
datascript.serialize.marker_kw = (0);
datascript.serialize.marker_other = (1);
datascript.serialize.marker_inf = (2);
datascript.serialize.marker_minus_inf = (3);
datascript.serialize.marker_nan = (4);
datascript.serialize.if_cljs = (function datascript$serialize$if_cljs(env,then,else$){
if(cljs.core.truth_(new cljs.core.Keyword(null,"ns","ns",441598760).cljs$core$IFn$_invoke$arity$1(env))){
return then;
} else {
return else$;
}
});
datascript.serialize.array_get = (function datascript$serialize$array_get(d,i){
if(cljs.core.array_QMARK_(d)){
return (d[i]);
} else {
return cljs.core.nth.cljs$core$IFn$_invoke$arity$2(d,i);
}
});
datascript.serialize.dict_get = (function datascript$serialize$dict_get(d,k){
if(cljs.core.map_QMARK_(d)){
return (d.cljs$core$IFn$_invoke$arity$1 ? d.cljs$core$IFn$_invoke$arity$1(k) : d.call(null,k));
} else {
return (d[k]);
}
});
datascript.serialize.array_QMARK_ = (function datascript$serialize$array_QMARK_(a){
return ((cljs.core.array_QMARK_(a)) || (cljs.core.vector_QMARK_(a)));
});
datascript.serialize.amap = (function datascript$serialize$amap(f,xs){
var arr = (new Array(cljs.core.count(xs)));
cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (idx,x){
(arr[idx] = (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(x) : f.call(null,x)));
return (idx + (1));
}),(0),xs);
return arr;
});
datascript.serialize.amap_indexed = (function datascript$serialize$amap_indexed(f,xs){
var arr = (new Array(cljs.core.count(xs)));
cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (idx,x){
(arr[idx] = (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(idx,x) : f.call(null,idx,x)));
return (idx + (1));
}),(0),xs);
return arr;
});
/**
* Looks for a datom with attribute exactly bigger than the given one
*/
datascript.serialize.attr_comparator = (function datascript$serialize$attr_comparator(d1,d2){
if((d2.a == null)){
return (-1);
} else {
if((cljs.core.compare(d1.a,d2.a) <= (0))){
return (-1);
} else {
return (1);
}
}
});
/**
* All attrs in a DB, distinct, sorted
*/
datascript.serialize.all_attrs = (function datascript$serialize$all_attrs(db){
if(cljs.core.empty_QMARK_(new cljs.core.Keyword(null,"aevt","aevt",-585148059).cljs$core$IFn$_invoke$arity$1(db))){
return cljs.core.PersistentVector.EMPTY;
} else {
var attrs = cljs.core.transient$(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"a","a",-2123407586).cljs$core$IFn$_invoke$arity$1(cljs.core.first(new cljs.core.Keyword(null,"aevt","aevt",-585148059).cljs$core$IFn$_invoke$arity$1(db)))], null));
while(true){
var attr = cljs.core.nth.cljs$core$IFn$_invoke$arity$2(attrs,(cljs.core.count(attrs) - (1)));
var left = datascript.db.datom.cljs$core$IFn$_invoke$arity$3((0),attr,null);
var right = datascript.db.datom.cljs$core$IFn$_invoke$arity$3((2147483647),null,null);
var next_attr = new cljs.core.Keyword(null,"a","a",-2123407586).cljs$core$IFn$_invoke$arity$1(cljs.core.first(me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$4(new cljs.core.Keyword(null,"aevt","aevt",-585148059).cljs$core$IFn$_invoke$arity$1(db),left,right,datascript.serialize.attr_comparator)));
if((!((next_attr == null)))){
var G__12288 = cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(attrs,next_attr);
attrs = G__12288;
continue;
} else {
return cljs.core.persistent_BANG_(attrs);
}
break;
}
}
});
datascript.serialize.freeze_kw = cljs.core.str;
datascript.serialize.thaw_kw = (function datascript$serialize$thaw_kw(s){
if(clojure.string.starts_with_QMARK_(s,":")){
return cljs.core.keyword.cljs$core$IFn$_invoke$arity$1(cljs.core.subs.cljs$core$IFn$_invoke$arity$2(s,(1)));
} else {
return s;
}
});
/**
* Serialized structure breakdown:
*
* count :: number
* tx0 :: number
* max-eid :: number
* max-tx :: number
* schema :: freezed :schema
* attrs :: [keywords ...]
* keywords :: [keywords ...]
* eavt :: [[e a-idx v dtx] ...]
* a-idx :: index in attrs
* v :: (string | number | boolean | [0 <index in keywords>] | [1 <freezed v>])
* dtx :: tx - tx0
* aevt :: [<index in eavt> ...]
* avet :: [<index in eavt> ...]
*/
datascript.serialize.serializable_impl = (function datascript$serialize$serializable_impl(db,p__12157){
var map__12158 = p__12157;
var map__12158__$1 = cljs.core.__destructure_map(map__12158);
var freeze_fn = cljs.core.get.cljs$core$IFn$_invoke$arity$3(map__12158__$1,new cljs.core.Keyword(null,"freeze-fn","freeze-fn",-575885995),cljs.core.pr_str);
var freeze_kw = cljs.core.get.cljs$core$IFn$_invoke$arity$3(map__12158__$1,new cljs.core.Keyword(null,"freeze-kw","freeze-kw",391758233),datascript.serialize.freeze_kw);
if(cljs.core.truth_(datascript.storage.storage(db))){
throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2("serializable doesn't work with databases that have :storage",cljs.core.PersistentArrayMap.EMPTY);
} else {
}
var attrs = datascript.serialize.all_attrs(db);
var attrs_map = cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$3(cljs.core.vector,attrs,cljs.core.range.cljs$core$IFn$_invoke$arity$0()));
var _STAR_kws = cljs.core.volatile_BANG_(cljs.core.transient$(cljs.core.PersistentVector.EMPTY));
var _STAR_kw_map = cljs.core.volatile_BANG_(cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY));
var write_kw = (function (kw){
var idx = (function (){var or__5002__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(_STAR_kw_map),kw);
if(cljs.core.truth_(or__5002__auto__)){
return or__5002__auto__;
} else {
var keywords = _STAR_kws.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(_STAR_kws.cljs$core$IDeref$_deref$arity$1(null),kw));
var idx = (cljs.core.count(keywords) - (1));
_STAR_kw_map.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(_STAR_kw_map.cljs$core$IDeref$_deref$arity$1(null),kw,idx));
return idx;
}
})();
return [(0),idx];
});
var write_other = (function (v){
return [(1),(freeze_fn.cljs$core$IFn$_invoke$arity$1 ? freeze_fn.cljs$core$IFn$_invoke$arity$1(v) : freeze_fn.call(null,v))];
});
var write_v = (function (v){
if(typeof v === 'string'){
return v;
} else {
if(typeof v === 'number'){
if((Infinity === v)){
return [(2)];
} else {
if((-Infinity === v)){
return [(3)];
} else {
if(cljs.core.truth_(isNaN(v))){
return [(4)];
} else {
return v;
}
}
}
} else {
if(cljs.core.boolean_QMARK_(v)){
return v;
} else {
if((v instanceof cljs.core.Keyword)){
return write_kw(v);
} else {
return write_other(v);
}
}
}
}
});
var eavt = datascript.serialize.amap_indexed((function (idx,d){
d.datascript$db$IDatom$datom_set_idx$arity$2(null,idx);
var e = d.e;
var a = (function (){var G__12176 = d.a;
return (attrs_map.cljs$core$IFn$_invoke$arity$1 ? attrs_map.cljs$core$IFn$_invoke$arity$1(G__12176) : attrs_map.call(null,G__12176));
})();
var v = write_v(d.v);
var tx = (d.tx - (536870912));
return [e,a,v,tx];
}),new cljs.core.Keyword(null,"eavt","eavt",-666437073).cljs$core$IFn$_invoke$arity$1(db));
var aevt = datascript.serialize.amap_indexed((function (_,d){
return d.datascript$db$IDatom$datom_get_idx$arity$1(null);
}),new cljs.core.Keyword(null,"aevt","aevt",-585148059).cljs$core$IFn$_invoke$arity$1(db));
var avet = datascript.serialize.amap_indexed((function (_,d){
return d.datascript$db$IDatom$datom_get_idx$arity$1(null);
}),new cljs.core.Keyword(null,"avet","avet",1383857032).cljs$core$IFn$_invoke$arity$1(db));
var schema = (function (){var G__12186 = new cljs.core.Keyword(null,"schema","schema",-1582001791).cljs$core$IFn$_invoke$arity$1(db);
return (freeze_fn.cljs$core$IFn$_invoke$arity$1 ? freeze_fn.cljs$core$IFn$_invoke$arity$1(G__12186) : freeze_fn.call(null,G__12186));
})();
var attrs__$1 = datascript.serialize.amap(freeze_kw,attrs);
var kws = datascript.serialize.amap(freeze_kw,cljs.core.persistent_BANG_(cljs.core.deref(_STAR_kws)));
return {"count":cljs.core.count(new cljs.core.Keyword(null,"eavt","eavt",-666437073).cljs$core$IFn$_invoke$arity$1(db)),"tx0":(536870912),"max-eid":new cljs.core.Keyword(null,"max-eid","max-eid",2134868075).cljs$core$IFn$_invoke$arity$1(db),"max-tx":new cljs.core.Keyword(null,"max-tx","max-tx",1119558339).cljs$core$IFn$_invoke$arity$1(db),"schema":schema,"attrs":attrs__$1,"keywords":kws,"eavt":eavt,"aevt":aevt,"avet":avet};
});
datascript.serialize.serializable = (function datascript$serialize$serializable(var_args){
var G__12208 = arguments.length;
switch (G__12208) {
case 1:
return datascript.serialize.serializable.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return datascript.serialize.serializable.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
(datascript.serialize.serializable.cljs$core$IFn$_invoke$arity$1 = (function (db){
return datascript.serialize.serializable_impl(db,cljs.core.PersistentArrayMap.EMPTY);
}));
(datascript.serialize.serializable.cljs$core$IFn$_invoke$arity$2 = (function (db,opts){
return datascript.serialize.serializable_impl(db,opts);
}));
(datascript.serialize.serializable.cljs$lang$maxFixedArity = 2);
datascript.serialize.from_serializable = (function datascript$serialize$from_serializable(var_args){
var G__12219 = arguments.length;
switch (G__12219) {
case 1:
return datascript.serialize.from_serializable.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return datascript.serialize.from_serializable.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
(datascript.serialize.from_serializable.cljs$core$IFn$_invoke$arity$1 = (function (from){
return datascript.serialize.from_serializable.cljs$core$IFn$_invoke$arity$2(from,cljs.core.PersistentArrayMap.EMPTY);
}));
(datascript.serialize.from_serializable.cljs$core$IFn$_invoke$arity$2 = (function (from,p__12229){
var map__12230 = p__12229;
var map__12230__$1 = cljs.core.__destructure_map(map__12230);
var opts = map__12230__$1;
var thaw_fn = cljs.core.get.cljs$core$IFn$_invoke$arity$3(map__12230__$1,new cljs.core.Keyword(null,"thaw-fn","thaw-fn",-240544261),clojure.edn.read_string);
var thaw_kw = cljs.core.get.cljs$core$IFn$_invoke$arity$3(map__12230__$1,new cljs.core.Keyword(null,"thaw-kw","thaw-kw",1076733097),datascript.serialize.thaw_kw);
var tx0 = datascript.serialize.dict_get(from,"tx0");
var schema = (function (){var G__12234 = datascript.serialize.dict_get(from,"schema");
return (thaw_fn.cljs$core$IFn$_invoke$arity$1 ? thaw_fn.cljs$core$IFn$_invoke$arity$1(G__12234) : thaw_fn.call(null,G__12234));
})();
var _ = (function (){var fexpr__12257 = new cljs.core.Var(function(){return datascript.db.validate_schema;},new cljs.core.Symbol("datascript.db","validate-schema","datascript.db/validate-schema",-783030261,null),cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,"private","private",-558947994),new cljs.core.Keyword(null,"ns","ns",441598760),new cljs.core.Keyword(null,"name","name",1843675177),new cljs.core.Keyword(null,"file","file",-1269645878),new cljs.core.Keyword(null,"end-column","end-column",1425389514),new cljs.core.Keyword(null,"column","column",2078222095),new cljs.core.Keyword(null,"line","line",212345235),new cljs.core.Keyword(null,"end-line","end-line",1837326455),new cljs.core.Keyword(null,"arglists","arglists",1661989754),new cljs.core.Keyword(null,"doc","doc",1913296891),new cljs.core.Keyword(null,"test","test",577538877)],[true,new cljs.core.Symbol(null,"datascript.db","datascript.db",-444456104,null),new cljs.core.Symbol(null,"validate-schema","validate-schema",758884380,null),"datascript/db.cljc",23,1,922,922,cljs.core.list(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"schema","schema",58529736,null)], null)),null,(cljs.core.truth_(datascript.db.validate_schema)?datascript.db.validate_schema.cljs$lang$test:null)]));
return (fexpr__12257.cljs$core$IFn$_invoke$arity$1 ? fexpr__12257.cljs$core$IFn$_invoke$arity$1(schema) : fexpr__12257.call(null,schema));
})();
var attrs = cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(thaw_kw,datascript.serialize.dict_get(from,"attrs"));
var keywords = cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(thaw_kw,datascript.serialize.dict_get(from,"keywords"));
var eavt = datascript.serialize.amap((function (arr){
var e = datascript.serialize.array_get(arr,(0));
var a = cljs.core.nth.cljs$core$IFn$_invoke$arity$2(attrs,datascript.serialize.array_get(arr,(1)));
var v = datascript.serialize.array_get(arr,(2));
var v__$1 = ((typeof v === 'number')?v:((typeof v === 'string')?v:((cljs.core.boolean_QMARK_(v))?v:((datascript.serialize.array_QMARK_(v))?(function (){var marker = datascript.serialize.array_get(v,(0));
var pred__12258 = cljs.core._EQ__EQ_;
var expr__12259 = marker;
if(cljs.core.truth_((pred__12258.cljs$core$IFn$_invoke$arity$2 ? pred__12258.cljs$core$IFn$_invoke$arity$2((0),expr__12259) : pred__12258.call(null,(0),expr__12259)))){
return cljs.core.nth.cljs$core$IFn$_invoke$arity$2(keywords,datascript.serialize.array_get(v,(1)));
} else {
if(cljs.core.truth_((pred__12258.cljs$core$IFn$_invoke$arity$2 ? pred__12258.cljs$core$IFn$_invoke$arity$2((1),expr__12259) : pred__12258.call(null,(1),expr__12259)))){
var G__12261 = datascript.serialize.array_get(v,(1));
return (thaw_fn.cljs$core$IFn$_invoke$arity$1 ? thaw_fn.cljs$core$IFn$_invoke$arity$1(G__12261) : thaw_fn.call(null,G__12261));
} else {
if(cljs.core.truth_((pred__12258.cljs$core$IFn$_invoke$arity$2 ? pred__12258.cljs$core$IFn$_invoke$arity$2((2),expr__12259) : pred__12258.call(null,(2),expr__12259)))){
return Infinity;
} else {
if(cljs.core.truth_((pred__12258.cljs$core$IFn$_invoke$arity$2 ? pred__12258.cljs$core$IFn$_invoke$arity$2((3),expr__12259) : pred__12258.call(null,(3),expr__12259)))){
return -Infinity;
} else {
if(cljs.core.truth_((pred__12258.cljs$core$IFn$_invoke$arity$2 ? pred__12258.cljs$core$IFn$_invoke$arity$2((4),expr__12259) : pred__12258.call(null,(4),expr__12259)))){
return NaN;
} else {
throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Unexpected value marker ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([marker], 0))," in ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([v], 0))], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword(null,"serialize","serialize",-69216574),new cljs.core.Keyword(null,"value","value",305978217),v], null));
}
}
}
}
}
})():(function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(["Unexpected value type ",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.type(v)], 0))," (",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([v], 0))], 0)),")"].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"error","error",-978969032),new cljs.core.Keyword(null,"serialize","serialize",-69216574),new cljs.core.Keyword(null,"value","value",305978217),v], null))})()
))));
var tx = (tx0 + datascript.serialize.array_get(arr,(3)));
return datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,a,v__$1,tx);
}),datascript.serialize.dict_get(from,"eavt"));
var aevt = (function (){var G__12263 = datascript.serialize.dict_get(from,"aevt");
if((G__12263 == null)){
return null;
} else {
return datascript.serialize.amap((function (p1__12216_SHARP_){
return (eavt[p1__12216_SHARP_]);
}),G__12263);
}
})();
var avet = (function (){var G__12265 = datascript.serialize.dict_get(from,"avet");
if((G__12265 == null)){
return null;
} else {
return datascript.serialize.amap((function (p1__12217_SHARP_){
return (eavt[p1__12217_SHARP_]);
}),G__12265);
}
})();
var settings = cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"branching-factor","branching-factor",1903198601),datascript.serialize.dict_get(from,"branching-factor"),new cljs.core.Keyword(null,"ref-type","ref-type",-1367328851),(function (){var G__12267 = datascript.serialize.dict_get(from,"ref-type");
if((G__12267 == null)){
return null;
} else {
return cljs.core.keyword.cljs$core$IFn$_invoke$arity$1(G__12267);
}
})()], null),cljs.core.select_keys(opts,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"branching-factor","branching-factor",1903198601),new cljs.core.Keyword(null,"ref-type","ref-type",-1367328851)], null))], 0));
return datascript.db.restore_db(new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Keyword(null,"schema","schema",-1582001791),schema,new cljs.core.Keyword(null,"eavt","eavt",-666437073),me.tonsky.persistent_sorted_set.from_sorted_array.cljs$core$IFn$_invoke$arity$4(datascript.db.cmp_datoms_eavt,eavt,eavt.length,settings),new cljs.core.Keyword(null,"aevt","aevt",-585148059),me.tonsky.persistent_sorted_set.from_sorted_array.cljs$core$IFn$_invoke$arity$4(datascript.db.cmp_datoms_aevt,aevt,aevt.length,settings),new cljs.core.Keyword(null,"avet","avet",1383857032),me.tonsky.persistent_sorted_set.from_sorted_array.cljs$core$IFn$_invoke$arity$4(datascript.db.cmp_datoms_avet,avet,avet.length,settings),new cljs.core.Keyword(null,"max-eid","max-eid",2134868075),datascript.serialize.dict_get(from,"max-eid"),new cljs.core.Keyword(null,"max-tx","max-tx",1119558339),datascript.serialize.dict_get(from,"max-tx")], null));
}));
(datascript.serialize.from_serializable.cljs$lang$maxFixedArity = 2);
//# sourceMappingURL=datascript.serialize.js.map