datahike 0.7.1630
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +226 -0
- package/cljs.analyzer.api.js +427 -0
- package/cljs.analyzer.api.js.map +1 -0
- package/cljs.analyzer.impl.js +86 -0
- package/cljs.analyzer.impl.js.map +1 -0
- package/cljs.analyzer.impl.namespaces.js +219 -0
- package/cljs.analyzer.impl.namespaces.js.map +1 -0
- package/cljs.analyzer.js +7186 -0
- package/cljs.analyzer.js.map +1 -0
- package/cljs.analyzer.passes.and_or.js +141 -0
- package/cljs.analyzer.passes.and_or.js.map +1 -0
- package/cljs.analyzer.passes.js +104 -0
- package/cljs.analyzer.passes.js.map +1 -0
- package/cljs.cache.js +1145 -0
- package/cljs.cache.js.map +1 -0
- package/cljs.cache.wrapped.js +352 -0
- package/cljs.cache.wrapped.js.map +1 -0
- package/cljs.core.async.impl.buffers.js +489 -0
- package/cljs.core.async.impl.buffers.js.map +1 -0
- package/cljs.core.async.impl.channels.js +711 -0
- package/cljs.core.async.impl.channels.js.map +1 -0
- package/cljs.core.async.impl.dispatch.js +81 -0
- package/cljs.core.async.impl.dispatch.js.map +1 -0
- package/cljs.core.async.impl.ioc_helpers.js +192 -0
- package/cljs.core.async.impl.ioc_helpers.js.map +1 -0
- package/cljs.core.async.impl.protocols.js +368 -0
- package/cljs.core.async.impl.protocols.js.map +1 -0
- package/cljs.core.async.impl.timers.js +510 -0
- package/cljs.core.async.impl.timers.js.map +1 -0
- package/cljs.core.async.js +8813 -0
- package/cljs.core.async.js.map +1 -0
- package/cljs.core.js +38764 -0
- package/cljs.core.js.map +1 -0
- package/cljs.env.js +60 -0
- package/cljs.env.js.map +1 -0
- package/cljs.nodejs.js +80 -0
- package/cljs.nodejs.js.map +1 -0
- package/cljs.reader.js +462 -0
- package/cljs.reader.js.map +1 -0
- package/cljs.spec.alpha.js +5312 -0
- package/cljs.spec.alpha.js.map +1 -0
- package/cljs.spec.gen.alpha.js +2020 -0
- package/cljs.spec.gen.alpha.js.map +1 -0
- package/cljs.tagged_literals.js +103 -0
- package/cljs.tagged_literals.js.map +1 -0
- package/cljs.tools.reader.edn.js +960 -0
- package/cljs.tools.reader.edn.js.map +1 -0
- package/cljs.tools.reader.impl.commons.js +217 -0
- package/cljs.tools.reader.impl.commons.js.map +1 -0
- package/cljs.tools.reader.impl.errors.js +441 -0
- package/cljs.tools.reader.impl.errors.js.map +1 -0
- package/cljs.tools.reader.impl.inspect.js +182 -0
- package/cljs.tools.reader.impl.inspect.js.map +1 -0
- package/cljs.tools.reader.impl.utils.js +429 -0
- package/cljs.tools.reader.impl.utils.js.map +1 -0
- package/cljs.tools.reader.js +1830 -0
- package/cljs.tools.reader.js.map +1 -0
- package/cljs.tools.reader.reader_types.js +838 -0
- package/cljs.tools.reader.reader_types.js.map +1 -0
- package/cljs_env.js +18192 -0
- package/cljs_node_io.core.js +1278 -0
- package/cljs_node_io.core.js.map +1 -0
- package/cljs_node_io.file.js +918 -0
- package/cljs_node_io.file.js.map +1 -0
- package/cljs_node_io.fs.js +3911 -0
- package/cljs_node_io.fs.js.map +1 -0
- package/clojure.data.js +319 -0
- package/clojure.data.js.map +1 -0
- package/clojure.edn.js +119 -0
- package/clojure.edn.js.map +1 -0
- package/clojure.set.js +406 -0
- package/clojure.set.js.map +1 -0
- package/clojure.string.js +502 -0
- package/clojure.string.js.map +1 -0
- package/clojure.walk.js +156 -0
- package/clojure.walk.js.map +1 -0
- package/datahike.api.impl.js +621 -0
- package/datahike.api.impl.js.map +1 -0
- package/datahike.api.specification.js +85 -0
- package/datahike.api.specification.js.map +1 -0
- package/datahike.array.js +275 -0
- package/datahike.array.js.map +1 -0
- package/datahike.config.js +437 -0
- package/datahike.config.js.map +1 -0
- package/datahike.connections.js +55 -0
- package/datahike.connections.js.map +1 -0
- package/datahike.connector.js +1248 -0
- package/datahike.connector.js.map +1 -0
- package/datahike.constants.js +66 -0
- package/datahike.constants.js.map +1 -0
- package/datahike.core.js +628 -0
- package/datahike.core.js.map +1 -0
- package/datahike.datom.js +963 -0
- package/datahike.datom.js.map +1 -0
- package/datahike.db.interface.js +819 -0
- package/datahike.db.interface.js.map +1 -0
- package/datahike.db.js +3095 -0
- package/datahike.db.js.map +1 -0
- package/datahike.db.search.js +1004 -0
- package/datahike.db.search.js.map +1 -0
- package/datahike.db.transaction.js +1904 -0
- package/datahike.db.transaction.js.map +1 -0
- package/datahike.db.utils.js +642 -0
- package/datahike.db.utils.js.map +1 -0
- package/datahike.gc.js +1618 -0
- package/datahike.gc.js.map +1 -0
- package/datahike.impl.entity.js +604 -0
- package/datahike.impl.entity.js.map +1 -0
- package/datahike.index.interface.js +484 -0
- package/datahike.index.interface.js.map +1 -0
- package/datahike.index.js +50 -0
- package/datahike.index.js.map +1 -0
- package/datahike.index.persistent_set.js +1250 -0
- package/datahike.index.persistent_set.js.map +1 -0
- package/datahike.js.api.js +2211 -0
- package/datahike.js.api.js.map +1 -0
- package/datahike.lru.js +404 -0
- package/datahike.lru.js.map +1 -0
- package/datahike.pull_api.js +533 -0
- package/datahike.pull_api.js.map +1 -0
- package/datahike.query.js +11891 -0
- package/datahike.query.js.map +1 -0
- package/datahike.query_stats.js +152 -0
- package/datahike.query_stats.js.map +1 -0
- package/datahike.readers.js +166 -0
- package/datahike.readers.js.map +1 -0
- package/datahike.schema.js +251 -0
- package/datahike.schema.js.map +1 -0
- package/datahike.schema_cache.js +66 -0
- package/datahike.schema_cache.js.map +1 -0
- package/datahike.spec.js +70 -0
- package/datahike.spec.js.map +1 -0
- package/datahike.store.js +514 -0
- package/datahike.store.js.map +1 -0
- package/datahike.tools.js +436 -0
- package/datahike.tools.js.map +1 -0
- package/datahike.writer.js +3463 -0
- package/datahike.writer.js.map +1 -0
- package/datahike.writing.js +3168 -0
- package/datahike.writing.js.map +1 -0
- package/datalog.parser.impl.js +1421 -0
- package/datalog.parser.impl.js.map +1 -0
- package/datalog.parser.impl.proto.js +213 -0
- package/datalog.parser.impl.proto.js.map +1 -0
- package/datalog.parser.impl.util.js +117 -0
- package/datalog.parser.impl.util.js.map +1 -0
- package/datalog.parser.js +47 -0
- package/datalog.parser.js.map +1 -0
- package/datalog.parser.pull.js +2603 -0
- package/datalog.parser.pull.js.map +1 -0
- package/datalog.parser.type.js +7502 -0
- package/datalog.parser.type.js.map +1 -0
- package/datalog.parser.util.js +60 -0
- package/datalog.parser.util.js.map +1 -0
- package/environ.core.js +263 -0
- package/environ.core.js.map +1 -0
- package/fress.api.js +607 -0
- package/fress.api.js.map +1 -0
- package/fress.impl.adler32.js +435 -0
- package/fress.impl.adler32.js.map +1 -0
- package/fress.impl.bigint.js +185 -0
- package/fress.impl.bigint.js.map +1 -0
- package/fress.impl.buffer.js +1087 -0
- package/fress.impl.buffer.js.map +1 -0
- package/fress.impl.codes.js +105 -0
- package/fress.impl.codes.js.map +1 -0
- package/fress.impl.hopmap.js +603 -0
- package/fress.impl.hopmap.js.map +1 -0
- package/fress.impl.ranges.js +49 -0
- package/fress.impl.ranges.js.map +1 -0
- package/fress.impl.raw_input.js +837 -0
- package/fress.impl.raw_input.js.map +1 -0
- package/fress.impl.raw_output.js +653 -0
- package/fress.impl.raw_output.js.map +1 -0
- package/fress.impl.table.js +133 -0
- package/fress.impl.table.js.map +1 -0
- package/fress.reader.js +2312 -0
- package/fress.reader.js.map +1 -0
- package/fress.util.js +458 -0
- package/fress.util.js.map +1 -0
- package/fress.writer.js +2141 -0
- package/fress.writer.js.map +1 -0
- package/geheimnis.aes.js +132 -0
- package/geheimnis.aes.js.map +1 -0
- package/hasch.base64.js +42 -0
- package/hasch.base64.js.map +1 -0
- package/hasch.benc.js +201 -0
- package/hasch.benc.js.map +1 -0
- package/hasch.core.js +188 -0
- package/hasch.core.js.map +1 -0
- package/hasch.platform.js +221 -0
- package/hasch.platform.js.map +1 -0
- package/incognito.base.js +276 -0
- package/incognito.base.js.map +1 -0
- package/incognito.edn.js +54 -0
- package/incognito.edn.js.map +1 -0
- package/incognito.fressian.js +330 -0
- package/incognito.fressian.js.map +1 -0
- package/index.d.ts +660 -0
- package/is.simm.partial_cps.async.js +142 -0
- package/is.simm.partial_cps.async.js.map +1 -0
- package/is.simm.partial_cps.runtime.js +65 -0
- package/is.simm.partial_cps.runtime.js.map +1 -0
- package/is.simm.partial_cps.sequence.js +1255 -0
- package/is.simm.partial_cps.sequence.js.map +1 -0
- package/konserve.cache.js +2519 -0
- package/konserve.cache.js.map +1 -0
- package/konserve.compressor.js +502 -0
- package/konserve.compressor.js.map +1 -0
- package/konserve.core.js +8052 -0
- package/konserve.core.js.map +1 -0
- package/konserve.encryptor.js +553 -0
- package/konserve.encryptor.js.map +1 -0
- package/konserve.gc.js +541 -0
- package/konserve.gc.js.map +1 -0
- package/konserve.impl.defaults.js +8290 -0
- package/konserve.impl.defaults.js.map +1 -0
- package/konserve.impl.storage_layout.js +849 -0
- package/konserve.impl.storage_layout.js.map +1 -0
- package/konserve.memory.js +2102 -0
- package/konserve.memory.js.map +1 -0
- package/konserve.node_filestore.js +2951 -0
- package/konserve.node_filestore.js.map +1 -0
- package/konserve.protocols.js +590 -0
- package/konserve.protocols.js.map +1 -0
- package/konserve.serializers.js +562 -0
- package/konserve.serializers.js.map +1 -0
- package/konserve.store.js +2245 -0
- package/konserve.store.js.map +1 -0
- package/konserve.tiered.js +9574 -0
- package/konserve.tiered.js.map +1 -0
- package/konserve.utils.js +180 -0
- package/konserve.utils.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.arrays.js +66 -0
- package/me.tonsky.persistent_sorted_set.arrays.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.branch.js +2779 -0
- package/me.tonsky.persistent_sorted_set.branch.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.btset.js +14196 -0
- package/me.tonsky.persistent_sorted_set.btset.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.impl.node.js +324 -0
- package/me.tonsky.persistent_sorted_set.impl.node.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.impl.storage.js +123 -0
- package/me.tonsky.persistent_sorted_set.impl.storage.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.js +890 -0
- package/me.tonsky.persistent_sorted_set.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.leaf.js +561 -0
- package/me.tonsky.persistent_sorted_set.leaf.js.map +1 -0
- package/me.tonsky.persistent_sorted_set.util.js +402 -0
- package/me.tonsky.persistent_sorted_set.util.js.map +1 -0
- package/medley.core.js +1857 -0
- package/medley.core.js.map +1 -0
- package/package.json +38 -0
- package/spec_tools.core.js +1925 -0
- package/spec_tools.core.js.map +1 -0
- package/spec_tools.data_spec.js +1291 -0
- package/spec_tools.data_spec.js.map +1 -0
- package/spec_tools.form.js +185 -0
- package/spec_tools.form.js.map +1 -0
- package/spec_tools.impl.js +362 -0
- package/spec_tools.impl.js.map +1 -0
- package/spec_tools.parse.js +427 -0
- package/spec_tools.parse.js.map +1 -0
- package/spec_tools.transform.js +288 -0
- package/spec_tools.transform.js.map +1 -0
- package/superv.async.js +8617 -0
- package/superv.async.js.map +1 -0
- package/tailrecursion.priority_map.js +994 -0
- package/tailrecursion.priority_map.js.map +1 -0
- package/taoensso.encore.js +12385 -0
- package/taoensso.encore.js.map +1 -0
- package/taoensso.timbre.appenders.core.js +239 -0
- package/taoensso.timbre.appenders.core.js.map +1 -0
- package/taoensso.timbre.js +1264 -0
- package/taoensso.timbre.js.map +1 -0
- package/taoensso.truss.impl.js +442 -0
- package/taoensso.truss.impl.js.map +1 -0
- package/taoensso.truss.js +743 -0
- package/taoensso.truss.js.map +1 -0
- package/test-config-keys.js +33 -0
- package/test-final.js +36 -0
- package/test-key-duplication.js +67 -0
- package/test.js +557 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
var $CLJS = require("./cljs_env");
|
|
2
|
+
var $jscomp = $CLJS.$jscomp;
|
|
3
|
+
var COMPILED = false;
|
|
4
|
+
require("./cljs.core.js");
|
|
5
|
+
require("./clojure.walk.js");
|
|
6
|
+
require("./konserve.protocols.js");
|
|
7
|
+
var environ=$CLJS.environ || ($CLJS.environ = {});
|
|
8
|
+
var fress=$CLJS.fress || ($CLJS.fress = {});
|
|
9
|
+
var datahike=$CLJS.datahike || ($CLJS.datahike = {});
|
|
10
|
+
var clojure=$CLJS.clojure || ($CLJS.clojure = {});
|
|
11
|
+
var hasch=$CLJS.hasch || ($CLJS.hasch = {});
|
|
12
|
+
var tailrecursion=$CLJS.tailrecursion || ($CLJS.tailrecursion = {});
|
|
13
|
+
var superv=$CLJS.superv || ($CLJS.superv = {});
|
|
14
|
+
var geheimnis=$CLJS.geheimnis || ($CLJS.geheimnis = {});
|
|
15
|
+
var is=$CLJS.is || ($CLJS.is = {});
|
|
16
|
+
var cljs=$CLJS.cljs || ($CLJS.cljs = {});
|
|
17
|
+
var cljs_node_io=$CLJS.cljs_node_io || ($CLJS.cljs_node_io = {});
|
|
18
|
+
var goog=$CLJS.goog || ($CLJS.goog = {});
|
|
19
|
+
var konserve=$CLJS.konserve || ($CLJS.konserve = {});
|
|
20
|
+
var datalog=$CLJS.datalog || ($CLJS.datalog = {});
|
|
21
|
+
var spec_tools=$CLJS.spec_tools || ($CLJS.spec_tools = {});
|
|
22
|
+
var taoensso=$CLJS.taoensso || ($CLJS.taoensso = {});
|
|
23
|
+
var incognito=$CLJS.incognito || ($CLJS.incognito = {});
|
|
24
|
+
var medley=$CLJS.medley || ($CLJS.medley = {});
|
|
25
|
+
var me=$CLJS.me || ($CLJS.me = {});
|
|
26
|
+
|
|
27
|
+
$CLJS.SHADOW_ENV.setLoaded("konserve.utils.js");
|
|
28
|
+
|
|
29
|
+
goog.provide('konserve.utils');
|
|
30
|
+
konserve.utils.invert_map = (function konserve$utils$invert_map(m){
|
|
31
|
+
return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p__37700){
|
|
32
|
+
var vec__37701 = p__37700;
|
|
33
|
+
var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__37701,(0),null);
|
|
34
|
+
var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__37701,(1),null);
|
|
35
|
+
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [v,k], null);
|
|
36
|
+
}),m));
|
|
37
|
+
});
|
|
38
|
+
konserve.utils.now = (function konserve$utils$now(){
|
|
39
|
+
return (new Date());
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* Metadata has following 'edn' format
|
|
43
|
+
* {:key 'The stored key'
|
|
44
|
+
* :type 'The type of the stored value binary or edn'
|
|
45
|
+
* :last-write Date timestamp in milliseconds.}
|
|
46
|
+
* Returns the meta value of the stored key-value tuple. Returns metadata if the key
|
|
47
|
+
* value not exist, if it does it will update the last-write to date now.
|
|
48
|
+
*/
|
|
49
|
+
konserve.utils.meta_update = (function konserve$utils$meta_update(key,type,old){
|
|
50
|
+
if(cljs.core.empty_QMARK_(old)){
|
|
51
|
+
return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"key","key",-1516042587),key,new cljs.core.Keyword(null,"type","type",1174270348),type,new cljs.core.Keyword(null,"last-write","last-write",447600431),konserve.utils.now()], null);
|
|
52
|
+
} else {
|
|
53
|
+
return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(old,new cljs.core.Keyword(null,"last-write","last-write",447600431),konserve.utils.now());
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* Checks whether the store supports multi-key operations.
|
|
58
|
+
*
|
|
59
|
+
* This function is used by the high-level API to determine if a store supports multi-key operations.
|
|
60
|
+
*/
|
|
61
|
+
konserve.utils.multi_key_capable_QMARK_ = (function konserve$utils$multi_key_capable_QMARK_(store){
|
|
62
|
+
var and__5000__auto__ = (((!((store == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === store.konserve$protocols$PMultiKeyEDNValueStore$))))?true:(((!store.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(konserve.protocols.PMultiKeyEDNValueStore,store):false)):cljs.core.native_satisfies_QMARK_(konserve.protocols.PMultiKeyEDNValueStore,store));
|
|
63
|
+
if(and__5000__auto__){
|
|
64
|
+
return konserve.protocols._supports_multi_key_QMARK_(store);
|
|
65
|
+
} else {
|
|
66
|
+
return and__5000__auto__;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
/**
|
|
70
|
+
* Checks whether the store supports write hooks.
|
|
71
|
+
*
|
|
72
|
+
* This function is used by the high-level API and compliance tests to determine
|
|
73
|
+
* if a store supports the PWriteHookStore protocol.
|
|
74
|
+
*/
|
|
75
|
+
konserve.utils.write_hooks_capable_QMARK_ = (function konserve$utils$write_hooks_capable_QMARK_(store){
|
|
76
|
+
var and__5000__auto__ = (((!((store == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === store.konserve$protocols$PWriteHookStore$))))?true:(((!store.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(konserve.protocols.PWriteHookStore,store):false)):cljs.core.native_satisfies_QMARK_(konserve.protocols.PWriteHookStore,store));
|
|
77
|
+
if(and__5000__auto__){
|
|
78
|
+
return (!((konserve.protocols._get_write_hooks(store) == null)));
|
|
79
|
+
} else {
|
|
80
|
+
return and__5000__auto__;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
/**
|
|
84
|
+
* Invoke all registered write hooks with the operation details.
|
|
85
|
+
* Hooks are called synchronously after a successful write.
|
|
86
|
+
*/
|
|
87
|
+
konserve.utils.invoke_write_hooks_BANG_ = (function konserve$utils$invoke_write_hooks_BANG_(store,hook_event){
|
|
88
|
+
var temp__5804__auto__ = konserve.protocols._get_write_hooks(store);
|
|
89
|
+
if(cljs.core.truth_(temp__5804__auto__)){
|
|
90
|
+
var hooks_atom = temp__5804__auto__;
|
|
91
|
+
var temp__5804__auto____$1 = cljs.core.deref(hooks_atom);
|
|
92
|
+
if(cljs.core.truth_(temp__5804__auto____$1)){
|
|
93
|
+
var hooks = temp__5804__auto____$1;
|
|
94
|
+
if(cljs.core.seq(hooks)){
|
|
95
|
+
var seq__37723 = cljs.core.seq(hooks);
|
|
96
|
+
var chunk__37724 = null;
|
|
97
|
+
var count__37725 = (0);
|
|
98
|
+
var i__37726 = (0);
|
|
99
|
+
while(true){
|
|
100
|
+
if((i__37726 < count__37725)){
|
|
101
|
+
var vec__37742 = chunk__37724.cljs$core$IIndexed$_nth$arity$2(null, i__37726);
|
|
102
|
+
var hook_id = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__37742,(0),null);
|
|
103
|
+
var hook_fn = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__37742,(1),null);
|
|
104
|
+
try{(hook_fn.cljs$core$IFn$_invoke$arity$1 ? hook_fn.cljs$core$IFn$_invoke$arity$1(hook_event) : hook_fn.call(null, hook_event));
|
|
105
|
+
}catch (e37745){if((e37745 instanceof Error)){
|
|
106
|
+
var e_37775 = e37745;
|
|
107
|
+
console.warn("Write hook error:",hook_id,cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e_37775], 0)));
|
|
108
|
+
} else {
|
|
109
|
+
throw e37745;
|
|
110
|
+
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
var G__37776 = seq__37723;
|
|
115
|
+
var G__37777 = chunk__37724;
|
|
116
|
+
var G__37778 = count__37725;
|
|
117
|
+
var G__37779 = (i__37726 + (1));
|
|
118
|
+
seq__37723 = G__37776;
|
|
119
|
+
chunk__37724 = G__37777;
|
|
120
|
+
count__37725 = G__37778;
|
|
121
|
+
i__37726 = G__37779;
|
|
122
|
+
continue;
|
|
123
|
+
} else {
|
|
124
|
+
var temp__5804__auto____$2 = cljs.core.seq(seq__37723);
|
|
125
|
+
if(temp__5804__auto____$2){
|
|
126
|
+
var seq__37723__$1 = temp__5804__auto____$2;
|
|
127
|
+
if(cljs.core.chunked_seq_QMARK_(seq__37723__$1)){
|
|
128
|
+
var c__5525__auto__ = cljs.core.chunk_first(seq__37723__$1);
|
|
129
|
+
var G__37780 = cljs.core.chunk_rest(seq__37723__$1);
|
|
130
|
+
var G__37781 = c__5525__auto__;
|
|
131
|
+
var G__37782 = cljs.core.count(c__5525__auto__);
|
|
132
|
+
var G__37783 = (0);
|
|
133
|
+
seq__37723 = G__37780;
|
|
134
|
+
chunk__37724 = G__37781;
|
|
135
|
+
count__37725 = G__37782;
|
|
136
|
+
i__37726 = G__37783;
|
|
137
|
+
continue;
|
|
138
|
+
} else {
|
|
139
|
+
var vec__37750 = cljs.core.first(seq__37723__$1);
|
|
140
|
+
var hook_id = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__37750,(0),null);
|
|
141
|
+
var hook_fn = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__37750,(1),null);
|
|
142
|
+
try{(hook_fn.cljs$core$IFn$_invoke$arity$1 ? hook_fn.cljs$core$IFn$_invoke$arity$1(hook_event) : hook_fn.call(null, hook_event));
|
|
143
|
+
}catch (e37753){if((e37753 instanceof Error)){
|
|
144
|
+
var e_37784 = e37753;
|
|
145
|
+
console.warn("Write hook error:",hook_id,cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e_37784], 0)));
|
|
146
|
+
} else {
|
|
147
|
+
throw e37753;
|
|
148
|
+
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
var G__37785 = cljs.core.next(seq__37723__$1);
|
|
153
|
+
var G__37786 = null;
|
|
154
|
+
var G__37787 = (0);
|
|
155
|
+
var G__37788 = (0);
|
|
156
|
+
seq__37723 = G__37785;
|
|
157
|
+
chunk__37724 = G__37786;
|
|
158
|
+
count__37725 = G__37787;
|
|
159
|
+
i__37726 = G__37788;
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
} else {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
} else {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
} else {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
} else {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
konserve.utils._STAR_default_sync_translation_STAR_ = new cljs.core.PersistentArrayMap(null, 7, [new cljs.core.Symbol(null,"go-try","go-try",1412345407,null),new cljs.core.Symbol(null,"try","try",-1273693247,null),new cljs.core.Symbol(null,"<?","<?",-1929864530,null),new cljs.core.Symbol(null,"do","do",1686842252,null),new cljs.core.Symbol(null,"go-try-","go-try-",480981026,null),new cljs.core.Symbol(null,"try","try",-1273693247,null),new cljs.core.Symbol(null,"<!-","<!-",-1906786470,null),new cljs.core.Symbol(null,"do","do",1686842252,null),new cljs.core.Symbol(null,"<?-","<?-",209151002,null),new cljs.core.Symbol(null,"do","do",1686842252,null),new cljs.core.Symbol(null,"go-locked","go-locked",318391579,null),new cljs.core.Symbol(null,"locked","locked",-18232293,null),new cljs.core.Symbol(null,"maybe-go-locked","maybe-go-locked",-633521351,null),new cljs.core.Symbol(null,"maybe-locked","maybe-locked",2124511125,null)], null);
|
|
179
|
+
|
|
180
|
+
//# sourceMappingURL=konserve.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["konserve/utils.cljc"],"mappings":"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","names":["konserve.utils/invert-map","m","cljs.core.map","p__37700","vec__37701","cljs.core.nth","k","v","cljs.core.into","konserve.utils/now","js/Date","konserve.utils/meta-update","key","type","old","cljs.core/empty?","cljs.core.assoc","konserve.utils/multi-key-capable?","store","and__5000__auto__","cljs.core/PROTOCOL_SENTINEL","cljs.core/native-satisfies?","konserve.protocols/PMultiKeyEDNValueStore","konserve.protocols/-supports-multi-key?","konserve.utils/write-hooks-capable?","konserve.protocols/PWriteHookStore","konserve.protocols/-get-write-hooks","konserve.utils/invoke-write-hooks!","hook-event","temp__5804__auto__","hooks-atom","cljs.core/deref","hooks","cljs.core/seq","seq__37723","chunk__37724","count__37725","i__37726","vec__37742","cljs.core/chunked-seq?","c__5525__auto__","cljs.core/chunk-first","cljs.core/chunk-rest","cljs.core/count","vec__37750","cljs.core/first","cljs.core/next","hook-id","hook-fn","e37745","e37753","js/Error","e","js/console.warn","cljs.core.pr_str","konserve.utils/*default-sync-translation*"],"sourcesContent":["(ns konserve.utils\n (:require [clojure.walk]\n [konserve.protocols :as protocols]\n #?(:clj [taoensso.timbre :as timbre])))\n\n(defn invert-map [m]\n (->> (map (fn [[k v]] [v k]) m)\n (into {})))\n\n(defn now []\n #?(:clj (java.util.Date.)\n :cljs (js/Date.)))\n\n(defn meta-update\n \"Metadata has following 'edn' format\n {:key 'The stored key'\n :type 'The type of the stored value binary or edn'\n :last-write Date timestamp in milliseconds.}\n Returns the meta value of the stored key-value tuple. Returns metadata if the key\n value not exist, if it does it will update the last-write to date now. \"\n [key type old]\n (if (empty? old)\n {:key key :type type :last-write (now)}\n (clojure.core/assoc old :last-write (now))))\n\n(defn multi-key-capable?\n \"Checks whether the store supports multi-key operations.\n\n This function is used by the high-level API to determine if a store supports multi-key operations.\"\n [store]\n (and (satisfies? protocols/PMultiKeyEDNValueStore store)\n (protocols/-supports-multi-key? store)))\n\n(defn write-hooks-capable?\n \"Checks whether the store supports write hooks.\n\n This function is used by the high-level API and compliance tests to determine\n if a store supports the PWriteHookStore protocol.\"\n [store]\n (and (satisfies? protocols/PWriteHookStore store)\n (some? (protocols/-get-write-hooks store))))\n\n(defn invoke-write-hooks!\n \"Invoke all registered write hooks with the operation details.\n Hooks are called synchronously after a successful write.\"\n [store hook-event]\n (when-let [hooks-atom (protocols/-get-write-hooks store)]\n (when-let [hooks @hooks-atom]\n (when (seq hooks)\n (doseq [[hook-id hook-fn] hooks]\n (try\n (hook-fn hook-event)\n (catch #?(:clj Exception :cljs js/Error) e\n ;; Log hook errors for debugging but don't break writes\n #?(:clj (timbre/warn e \"Write hook error\" {:hook-id hook-id\n :api-op (:api-op hook-event)\n :key (:key hook-event)})\n :cljs (js/console.warn \"Write hook error:\" hook-id (pr-str e))))))))))\n\n(defmacro async+sync\n [sync? async->sync async-code]\n (let [async->sync (if (symbol? async->sync)\n (or (resolve async->sync)\n (when-let [_ns (or (get-in &env [:ns :use-macros async->sync])\n (get-in &env [:ns :uses async->sync]))]\n (resolve (symbol (str _ns) (str async->sync)))))\n async->sync)]\n (assert (some? async->sync))\n `(if ~sync?\n ~(clojure.walk/postwalk (fn [n]\n (if-not (meta n)\n (async->sync n n) ;; primitives have no metadata\n (with-meta (async->sync n n)\n (update (meta n) :tag (fn [t] (async->sync t t))))))\n async-code)\n ~async-code)))\n\n(def ^:dynamic *default-sync-translation*\n '{go-try try\n <? do\n go-try- try\n <!- do\n <?- do\n go-locked locked\n maybe-go-locked maybe-locked})\n\n(defmacro with-promise [sym & body]\n `(let [~sym (cljs.core.async/promise-chan)]\n ~@body\n ~sym))\n"],"x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
var $CLJS = require("./cljs_env");
|
|
2
|
+
var $jscomp = $CLJS.$jscomp;
|
|
3
|
+
var COMPILED = false;
|
|
4
|
+
require("./cljs.core.js");
|
|
5
|
+
require("./clojure.string.js");
|
|
6
|
+
var environ=$CLJS.environ || ($CLJS.environ = {});
|
|
7
|
+
var fress=$CLJS.fress || ($CLJS.fress = {});
|
|
8
|
+
var datahike=$CLJS.datahike || ($CLJS.datahike = {});
|
|
9
|
+
var clojure=$CLJS.clojure || ($CLJS.clojure = {});
|
|
10
|
+
var hasch=$CLJS.hasch || ($CLJS.hasch = {});
|
|
11
|
+
var tailrecursion=$CLJS.tailrecursion || ($CLJS.tailrecursion = {});
|
|
12
|
+
var superv=$CLJS.superv || ($CLJS.superv = {});
|
|
13
|
+
var geheimnis=$CLJS.geheimnis || ($CLJS.geheimnis = {});
|
|
14
|
+
var is=$CLJS.is || ($CLJS.is = {});
|
|
15
|
+
var cljs=$CLJS.cljs || ($CLJS.cljs = {});
|
|
16
|
+
var cljs_node_io=$CLJS.cljs_node_io || ($CLJS.cljs_node_io = {});
|
|
17
|
+
var goog=$CLJS.goog || ($CLJS.goog = {});
|
|
18
|
+
var konserve=$CLJS.konserve || ($CLJS.konserve = {});
|
|
19
|
+
var datalog=$CLJS.datalog || ($CLJS.datalog = {});
|
|
20
|
+
var spec_tools=$CLJS.spec_tools || ($CLJS.spec_tools = {});
|
|
21
|
+
var taoensso=$CLJS.taoensso || ($CLJS.taoensso = {});
|
|
22
|
+
var incognito=$CLJS.incognito || ($CLJS.incognito = {});
|
|
23
|
+
var medley=$CLJS.medley || ($CLJS.medley = {});
|
|
24
|
+
var me=$CLJS.me || ($CLJS.me = {});
|
|
25
|
+
|
|
26
|
+
$CLJS.SHADOW_ENV.setLoaded("me.tonsky.persistent_sorted_set.arrays.js");
|
|
27
|
+
|
|
28
|
+
goog.provide('me.tonsky.persistent_sorted_set.arrays');
|
|
29
|
+
me.tonsky.persistent_sorted_set.arrays.if_cljs = (function me$tonsky$persistent_sorted_set$arrays$if_cljs(env,then,else$){
|
|
30
|
+
if(cljs.core.truth_(new cljs.core.Keyword(null,"ns","ns",441598760).cljs$core$IFn$_invoke$arity$1(env))){
|
|
31
|
+
return then;
|
|
32
|
+
} else {
|
|
33
|
+
return else$;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
me.tonsky.persistent_sorted_set.arrays.make_array = (function me$tonsky$persistent_sorted_set$arrays$make_array(size){
|
|
37
|
+
return (new Array(size));
|
|
38
|
+
});
|
|
39
|
+
me.tonsky.persistent_sorted_set.arrays.into_array = (function me$tonsky$persistent_sorted_set$arrays$into_array(aseq){
|
|
40
|
+
return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (a,x){
|
|
41
|
+
a.push(x);
|
|
42
|
+
|
|
43
|
+
return a;
|
|
44
|
+
}),(new Array()),aseq);
|
|
45
|
+
});
|
|
46
|
+
me.tonsky.persistent_sorted_set.arrays.aclone = (function me$tonsky$persistent_sorted_set$arrays$aclone(from){
|
|
47
|
+
return from.slice((0));
|
|
48
|
+
});
|
|
49
|
+
me.tonsky.persistent_sorted_set.arrays.aconcat = (function me$tonsky$persistent_sorted_set$arrays$aconcat(a,b){
|
|
50
|
+
return a.concat(b);
|
|
51
|
+
});
|
|
52
|
+
me.tonsky.persistent_sorted_set.arrays.amap = (function me$tonsky$persistent_sorted_set$arrays$amap(f,arr){
|
|
53
|
+
return arr.map(f);
|
|
54
|
+
});
|
|
55
|
+
me.tonsky.persistent_sorted_set.arrays.asort = (function me$tonsky$persistent_sorted_set$arrays$asort(arr,cmp){
|
|
56
|
+
return arr.sort(cmp);
|
|
57
|
+
});
|
|
58
|
+
me.tonsky.persistent_sorted_set.arrays.array_QMARK_ = (function me$tonsky$persistent_sorted_set$arrays$array_QMARK_(x){
|
|
59
|
+
if((cljs.core._STAR_target_STAR_ === "nodejs")){
|
|
60
|
+
return Array.isArray(x);
|
|
61
|
+
} else {
|
|
62
|
+
return (x instanceof Array);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=me.tonsky.persistent_sorted_set.arrays.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["me/tonsky/persistent_sorted_set/arrays.cljc"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,iDAAA,jDAAOA,0GAASC,IAAIC,KAAKC;AAAzB,AACE,oBAAI,AAAA,8EAAKF;AAAKC;;AAAKC;;;AAGlB,oDAAA,pDAAaC,gHAAYC;AAAzB,AAA+B,YAAAC,MAAWD;;AAM1C,oDAAA,pDAAaE,gHAAYC;AAAzB,AACE,OAACC,+CAAO,WAAKC,EAAEC;AAAP,AAAU,AAAOD,OAAEC;;AAAGD;GAAG,KAAAJ,SAAYE;;AA+ClD,gDAAA,hDAAMI,wGAAQC;AAAd,AAEW,kBAAA,XAAQA;;AAEnB,iDAAA,jDAAMC,0GAASJ,EAAEK;AAAjB,AACW,OAASL,SAAEK;;AAQnB,8CAAA,9CAAMC,oGAAMC,EAAEC;AAAd,AACE,OAAMA,QAAID;;AAWf,+CAAA,/CAAME,sGAAOD,IAAIE;AAAjB,AACW,OAAOF,SAAIE;;AAInB,sDAAA,tDAAeC,oHAAQV;AAAvB,AACE,GAAI,kCAAA,jCAAYW;AACd,OAAUhB,cAASK;;AACnB,qBAAWL,bAASK","names":["me.tonsky.persistent-sorted-set.arrays/if-cljs","env","then","else","me.tonsky.persistent-sorted-set.arrays/make-array","size","js/Array","me.tonsky.persistent-sorted-set.arrays/into-array","aseq","cljs.core.reduce","a","x","me.tonsky.persistent-sorted-set.arrays/aclone","from","me.tonsky.persistent-sorted-set.arrays/aconcat","b","me.tonsky.persistent-sorted-set.arrays/amap","f","arr","me.tonsky.persistent-sorted-set.arrays/asort","cmp","me.tonsky.persistent-sorted-set.arrays/array?","cljs.core/*target*"],"sourcesContent":["(ns ^:no-doc me.tonsky.persistent-sorted-set.arrays\n (:require\n [clojure.string :as str])\n (:refer-clojure :exclude [make-array into-array array amap aget aset alength array? aclone])\n #?(:cljs (:require-macros me.tonsky.persistent-sorted-set.arrays))\n #?(:clj (:import [java.util Arrays])))\n\n(defn- if-cljs [env then else]\n (if (:ns env) then else))\n\n#?(:cljs\n (defn ^array make-array [size] (js/Array. size))\n :clj\n (defn make-array ^{:tag \"[[Ljava.lang.Object;\"} [size]\n (clojure.core/make-array java.lang.Object size)))\n\n#?(:cljs\n (defn ^array into-array [aseq]\n (reduce (fn [a x] (.push a x) a) (js/Array.) aseq))\n :clj\n (defn into-array ^{:tag \"[[Ljava.lang.Object;\"} [aseq]\n (clojure.core/into-array java.lang.Object aseq)))\n\n#?(:clj\n (defmacro aget [arr i]\n (if-cljs &env\n (list 'js* \"(~{}[~{}])\" arr i)\n `(clojure.lang.RT/aget ~(vary-meta arr assoc :tag \"[[Ljava.lang.Object;\") (int ~i)))))\n\n#?(:clj\n (defmacro alength [arr]\n (if-cljs &env\n (-> (list 'js* \"~{}.length\" arr)\n (vary-meta assoc :tag 'number))\n `(clojure.lang.RT/alength ~(vary-meta arr assoc :tag \"[[Ljava.lang.Object;\")))))\n\n#?(:clj\n (defmacro aset [arr i v]\n (if-cljs &env\n (list 'js* \"(~{}[~{}] = ~{})\" arr i v)\n `(clojure.lang.RT/aset ~(vary-meta arr assoc :tag \"[[Ljava.lang.Object;\") (int ~i) ~v))))\n\n#?(:clj\n (defmacro array [& args]\n (if-cljs &env\n (->\n (list* 'js* (str \"[\" (str/join \",\" (repeat (count args) \"~{}\")) \"]\") args)\n (vary-meta assoc :tag 'array))\n (let [len (count args)]\n (if (zero? len)\n 'clojure.lang.RT/EMPTY_ARRAY\n `(let [arr# (clojure.core/make-array java.lang.Object ~len)]\n (doto ^{:tag \"[[Ljava.lang.Object;\"} arr#\n ~@(map #(list 'aset % (nth args %)) (range len)))))))))\n\n#?(:clj\n (defmacro acopy [from from-start from-end to to-start]\n (if-cljs &env\n `(let [l# (- ~from-end ~from-start)]\n (dotimes [i# l#]\n (aset ~to (+ i# ~to-start) (aget ~from (+ i# ~from-start)))))\n `(let [l# (- ~from-end ~from-start)]\n (when (pos? l#)\n (System/arraycopy ~from ~from-start ~to ~to-start l#))))))\n\n(defn aclone [from]\n #?(:clj (Arrays/copyOf ^{:tag \"[[Ljava.lang.Object;\"} from (alength from))\n :cljs (.slice from 0)))\n\n(defn aconcat [a b]\n #?(:cljs (.concat a b)\n :clj (let [al (alength a)\n bl (alength b)\n res (Arrays/copyOf ^{:tag \"[[Ljava.lang.Object;\"} a (+ al bl))]\n (System/arraycopy ^{:tag \"[[Ljava.lang.Object;\"} b 0 res al bl)\n res)))\n\n#?(:cljs\n (defn amap [f arr]\n (.map arr f))\n :clj\n (defn amap\n ([f arr]\n (amap f Object arr))\n ([f type arr] ;; TODO check if faster in Java\n (let [res (clojure.core/make-array type (alength arr))]\n (dotimes [i (alength arr)]\n (aset res i (f (aget arr i))))\n res))))\n\n(defn asort [arr cmp]\n #?(:cljs (.sort arr cmp)\n :clj (doto arr (Arrays/parallelSort cmp))))\n\n#?(:cljs\n (defn ^boolean array? [x]\n (if (identical? *target* \"nodejs\")\n (.isArray js/Array x)\n (instance? js/Array x)))\n :clj\n (defn array? [^Object x]\n (some-> x .getClass .isArray)))\n\n#?(:clj\n (defmacro alast [arr]\n `(let [arr# ~arr]\n (aget arr# (dec (alength arr#))))))\n\n#?(:clj\n (defmacro half [x]\n `(unsigned-bit-shift-right ~x 1)))\n\n#?(:clj\n (def array-type\n (memoize\n (fn [type]\n (.getClass ^Object (java.lang.reflect.Array/newInstance ^Class type 0))))))\n"],"x_google_ignoreList":[0]}
|