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,275 @@
|
|
|
1
|
+
var $CLJS = require("./cljs_env");
|
|
2
|
+
var $jscomp = $CLJS.$jscomp;
|
|
3
|
+
var COMPILED = false;
|
|
4
|
+
require("./cljs.core.js");
|
|
5
|
+
var environ=$CLJS.environ || ($CLJS.environ = {});
|
|
6
|
+
var fress=$CLJS.fress || ($CLJS.fress = {});
|
|
7
|
+
var datahike=$CLJS.datahike || ($CLJS.datahike = {});
|
|
8
|
+
var clojure=$CLJS.clojure || ($CLJS.clojure = {});
|
|
9
|
+
var hasch=$CLJS.hasch || ($CLJS.hasch = {});
|
|
10
|
+
var tailrecursion=$CLJS.tailrecursion || ($CLJS.tailrecursion = {});
|
|
11
|
+
var superv=$CLJS.superv || ($CLJS.superv = {});
|
|
12
|
+
var geheimnis=$CLJS.geheimnis || ($CLJS.geheimnis = {});
|
|
13
|
+
var is=$CLJS.is || ($CLJS.is = {});
|
|
14
|
+
var cljs=$CLJS.cljs || ($CLJS.cljs = {});
|
|
15
|
+
var cljs_node_io=$CLJS.cljs_node_io || ($CLJS.cljs_node_io = {});
|
|
16
|
+
var goog=$CLJS.goog || ($CLJS.goog = {});
|
|
17
|
+
var konserve=$CLJS.konserve || ($CLJS.konserve = {});
|
|
18
|
+
var datalog=$CLJS.datalog || ($CLJS.datalog = {});
|
|
19
|
+
var spec_tools=$CLJS.spec_tools || ($CLJS.spec_tools = {});
|
|
20
|
+
var taoensso=$CLJS.taoensso || ($CLJS.taoensso = {});
|
|
21
|
+
var incognito=$CLJS.incognito || ($CLJS.incognito = {});
|
|
22
|
+
var medley=$CLJS.medley || ($CLJS.medley = {});
|
|
23
|
+
var me=$CLJS.me || ($CLJS.me = {});
|
|
24
|
+
|
|
25
|
+
$CLJS.SHADOW_ENV.setLoaded("datahike.array.js");
|
|
26
|
+
|
|
27
|
+
goog.provide('datahike.array');
|
|
28
|
+
goog.scope(function(){
|
|
29
|
+
datahike.array.goog$module$goog$array = goog.module.get('goog.array');
|
|
30
|
+
});
|
|
31
|
+
datahike.array.bytes_QMARK_ = (function datahike$array$bytes_QMARK_(x){
|
|
32
|
+
return (((x.buffer instanceof ArrayBuffer)) && (typeof x.byteLength === 'number'));
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Compare two arrays a and b element-wise in ascending order. If one array is a
|
|
36
|
+
* prefix of another then it comes first.
|
|
37
|
+
*/
|
|
38
|
+
datahike.array.compare_arrays = (function datahike$array$compare_arrays(a,b){
|
|
39
|
+
return datahike.array.goog$module$goog$array.compare3(a,b);
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* Represents a byte array as a string. Two byte arrays are said to be equal iff their corresponding values after applying this function are equal. That way, we rely on the equality and hash code implementations of the String class to compare byte arrays.
|
|
43
|
+
*/
|
|
44
|
+
datahike.array.string_from_bytes = (function datahike$array$string_from_bytes(x){
|
|
45
|
+
return (new TextDecoder("utf8")).decode(x);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @constructor
|
|
50
|
+
* @implements {cljs.core.IRecord}
|
|
51
|
+
* @implements {cljs.core.IKVReduce}
|
|
52
|
+
* @implements {cljs.core.IEquiv}
|
|
53
|
+
* @implements {cljs.core.IHash}
|
|
54
|
+
* @implements {cljs.core.ICollection}
|
|
55
|
+
* @implements {cljs.core.ICounted}
|
|
56
|
+
* @implements {cljs.core.ISeqable}
|
|
57
|
+
* @implements {cljs.core.IMeta}
|
|
58
|
+
* @implements {cljs.core.ICloneable}
|
|
59
|
+
* @implements {cljs.core.IPrintWithWriter}
|
|
60
|
+
* @implements {cljs.core.IIterable}
|
|
61
|
+
* @implements {cljs.core.IWithMeta}
|
|
62
|
+
* @implements {cljs.core.IAssociative}
|
|
63
|
+
* @implements {cljs.core.IMap}
|
|
64
|
+
* @implements {cljs.core.ILookup}
|
|
65
|
+
*/
|
|
66
|
+
datahike.array.WrappedBytes = (function (string_repr,__meta,__extmap,__hash){
|
|
67
|
+
this.string_repr = string_repr;
|
|
68
|
+
this.__meta = __meta;
|
|
69
|
+
this.__extmap = __extmap;
|
|
70
|
+
this.__hash = __hash;
|
|
71
|
+
this.cljs$lang$protocol_mask$partition0$ = 2230716170;
|
|
72
|
+
this.cljs$lang$protocol_mask$partition1$ = 139264;
|
|
73
|
+
});
|
|
74
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (this__5300__auto__,k__5301__auto__){
|
|
75
|
+
var self__ = this;
|
|
76
|
+
var this__5300__auto____$1 = this;
|
|
77
|
+
return this__5300__auto____$1.cljs$core$ILookup$_lookup$arity$3(null, k__5301__auto__,null);
|
|
78
|
+
}));
|
|
79
|
+
|
|
80
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (this__5302__auto__,k102734,else__5303__auto__){
|
|
81
|
+
var self__ = this;
|
|
82
|
+
var this__5302__auto____$1 = this;
|
|
83
|
+
var G__102752 = k102734;
|
|
84
|
+
var G__102752__$1 = (((G__102752 instanceof cljs.core.Keyword))?G__102752.fqn:null);
|
|
85
|
+
switch (G__102752__$1) {
|
|
86
|
+
case "string-repr":
|
|
87
|
+
return self__.string_repr;
|
|
88
|
+
|
|
89
|
+
break;
|
|
90
|
+
default:
|
|
91
|
+
return cljs.core.get.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k102734,else__5303__auto__);
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
}));
|
|
95
|
+
|
|
96
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (this__5320__auto__,f__5321__auto__,init__5322__auto__){
|
|
97
|
+
var self__ = this;
|
|
98
|
+
var this__5320__auto____$1 = this;
|
|
99
|
+
return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (ret__5323__auto__,p__102759){
|
|
100
|
+
var vec__102761 = p__102759;
|
|
101
|
+
var k__5324__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__102761,(0),null);
|
|
102
|
+
var v__5325__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__102761,(1),null);
|
|
103
|
+
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__));
|
|
104
|
+
}),init__5322__auto__,this__5320__auto____$1);
|
|
105
|
+
}));
|
|
106
|
+
|
|
107
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (this__5315__auto__,writer__5316__auto__,opts__5317__auto__){
|
|
108
|
+
var self__ = this;
|
|
109
|
+
var this__5315__auto____$1 = this;
|
|
110
|
+
var pr_pair__5318__auto__ = (function (keyval__5319__auto__){
|
|
111
|
+
return cljs.core.pr_sequential_writer(writer__5316__auto__,cljs.core.pr_writer,""," ","",opts__5317__auto__,keyval__5319__auto__);
|
|
112
|
+
});
|
|
113
|
+
return cljs.core.pr_sequential_writer(writer__5316__auto__,pr_pair__5318__auto__,"#datahike.array.WrappedBytes{",", ","}",opts__5317__auto__,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"string-repr","string-repr",431081264),self__.string_repr],null))], null),self__.__extmap));
|
|
114
|
+
}));
|
|
115
|
+
|
|
116
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (G__102733){
|
|
117
|
+
var self__ = this;
|
|
118
|
+
var G__102733__$1 = this;
|
|
119
|
+
return (new cljs.core.RecordIter((0),G__102733__$1,1,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"string-repr","string-repr",431081264)], null),(cljs.core.truth_(self__.__extmap)?cljs.core._iterator(self__.__extmap):cljs.core.nil_iter())));
|
|
120
|
+
}));
|
|
121
|
+
|
|
122
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$IMeta$_meta$arity$1 = (function (this__5298__auto__){
|
|
123
|
+
var self__ = this;
|
|
124
|
+
var this__5298__auto____$1 = this;
|
|
125
|
+
return self__.__meta;
|
|
126
|
+
}));
|
|
127
|
+
|
|
128
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (this__5295__auto__){
|
|
129
|
+
var self__ = this;
|
|
130
|
+
var this__5295__auto____$1 = this;
|
|
131
|
+
return (new datahike.array.WrappedBytes(self__.string_repr,self__.__meta,self__.__extmap,self__.__hash));
|
|
132
|
+
}));
|
|
133
|
+
|
|
134
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$ICounted$_count$arity$1 = (function (this__5304__auto__){
|
|
135
|
+
var self__ = this;
|
|
136
|
+
var this__5304__auto____$1 = this;
|
|
137
|
+
return (1 + cljs.core.count(self__.__extmap));
|
|
138
|
+
}));
|
|
139
|
+
|
|
140
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$IHash$_hash$arity$1 = (function (this__5296__auto__){
|
|
141
|
+
var self__ = this;
|
|
142
|
+
var this__5296__auto____$1 = this;
|
|
143
|
+
var h__5111__auto__ = self__.__hash;
|
|
144
|
+
if((!((h__5111__auto__ == null)))){
|
|
145
|
+
return h__5111__auto__;
|
|
146
|
+
} else {
|
|
147
|
+
var h__5111__auto____$1 = (function (coll__5297__auto__){
|
|
148
|
+
return (-959997962 ^ cljs.core.hash_unordered_coll(coll__5297__auto__));
|
|
149
|
+
})(this__5296__auto____$1);
|
|
150
|
+
(self__.__hash = h__5111__auto____$1);
|
|
151
|
+
|
|
152
|
+
return h__5111__auto____$1;
|
|
153
|
+
}
|
|
154
|
+
}));
|
|
155
|
+
|
|
156
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this102735,other102736){
|
|
157
|
+
var self__ = this;
|
|
158
|
+
var this102735__$1 = this;
|
|
159
|
+
return (((!((other102736 == null)))) && ((((this102735__$1.constructor === other102736.constructor)) && (((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this102735__$1.string_repr,other102736.string_repr)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this102735__$1.__extmap,other102736.__extmap)))))));
|
|
160
|
+
}));
|
|
161
|
+
|
|
162
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (this__5310__auto__,k__5311__auto__){
|
|
163
|
+
var self__ = this;
|
|
164
|
+
var this__5310__auto____$1 = this;
|
|
165
|
+
if(cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"string-repr","string-repr",431081264),null], null), null),k__5311__auto__)){
|
|
166
|
+
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__);
|
|
167
|
+
} else {
|
|
168
|
+
return (new datahike.array.WrappedBytes(self__.string_repr,self__.__meta,cljs.core.not_empty(cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.__extmap,k__5311__auto__)),null));
|
|
169
|
+
}
|
|
170
|
+
}));
|
|
171
|
+
|
|
172
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (this__5307__auto__,k102734){
|
|
173
|
+
var self__ = this;
|
|
174
|
+
var this__5307__auto____$1 = this;
|
|
175
|
+
var G__102774 = k102734;
|
|
176
|
+
var G__102774__$1 = (((G__102774 instanceof cljs.core.Keyword))?G__102774.fqn:null);
|
|
177
|
+
switch (G__102774__$1) {
|
|
178
|
+
case "string-repr":
|
|
179
|
+
return true;
|
|
180
|
+
|
|
181
|
+
break;
|
|
182
|
+
default:
|
|
183
|
+
return cljs.core.contains_QMARK_(self__.__extmap,k102734);
|
|
184
|
+
|
|
185
|
+
}
|
|
186
|
+
}));
|
|
187
|
+
|
|
188
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (this__5308__auto__,k__5309__auto__,G__102733){
|
|
189
|
+
var self__ = this;
|
|
190
|
+
var this__5308__auto____$1 = this;
|
|
191
|
+
var pred__102776 = cljs.core.keyword_identical_QMARK_;
|
|
192
|
+
var expr__102777 = k__5309__auto__;
|
|
193
|
+
if(cljs.core.truth_((pred__102776.cljs$core$IFn$_invoke$arity$2 ? pred__102776.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"string-repr","string-repr",431081264),expr__102777) : pred__102776.call(null, new cljs.core.Keyword(null,"string-repr","string-repr",431081264),expr__102777)))){
|
|
194
|
+
return (new datahike.array.WrappedBytes(G__102733,self__.__meta,self__.__extmap,null));
|
|
195
|
+
} else {
|
|
196
|
+
return (new datahike.array.WrappedBytes(self__.string_repr,self__.__meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k__5309__auto__,G__102733),null));
|
|
197
|
+
}
|
|
198
|
+
}));
|
|
199
|
+
|
|
200
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this__5313__auto__){
|
|
201
|
+
var self__ = this;
|
|
202
|
+
var this__5313__auto____$1 = this;
|
|
203
|
+
return cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.MapEntry(new cljs.core.Keyword(null,"string-repr","string-repr",431081264),self__.string_repr,null))], null),self__.__extmap));
|
|
204
|
+
}));
|
|
205
|
+
|
|
206
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (this__5299__auto__,G__102733){
|
|
207
|
+
var self__ = this;
|
|
208
|
+
var this__5299__auto____$1 = this;
|
|
209
|
+
return (new datahike.array.WrappedBytes(self__.string_repr,G__102733,self__.__extmap,self__.__hash));
|
|
210
|
+
}));
|
|
211
|
+
|
|
212
|
+
(datahike.array.WrappedBytes.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this__5305__auto__,entry__5306__auto__){
|
|
213
|
+
var self__ = this;
|
|
214
|
+
var this__5305__auto____$1 = this;
|
|
215
|
+
if(cljs.core.vector_QMARK_(entry__5306__auto__)){
|
|
216
|
+
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)));
|
|
217
|
+
} else {
|
|
218
|
+
return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,this__5305__auto____$1,entry__5306__auto__);
|
|
219
|
+
}
|
|
220
|
+
}));
|
|
221
|
+
|
|
222
|
+
(datahike.array.WrappedBytes.getBasis = (function (){
|
|
223
|
+
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"string-repr","string-repr",2071612791,null)], null);
|
|
224
|
+
}));
|
|
225
|
+
|
|
226
|
+
(datahike.array.WrappedBytes.cljs$lang$type = true);
|
|
227
|
+
|
|
228
|
+
(datahike.array.WrappedBytes.cljs$lang$ctorPrSeq = (function (this__5346__auto__){
|
|
229
|
+
return (new cljs.core.List(null,"datahike.array/WrappedBytes",null,(1),null));
|
|
230
|
+
}));
|
|
231
|
+
|
|
232
|
+
(datahike.array.WrappedBytes.cljs$lang$ctorPrWriter = (function (this__5346__auto__,writer__5347__auto__){
|
|
233
|
+
return cljs.core._write(writer__5347__auto__,"datahike.array/WrappedBytes");
|
|
234
|
+
}));
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Positional factory function for datahike.array/WrappedBytes.
|
|
238
|
+
*/
|
|
239
|
+
datahike.array.__GT_WrappedBytes = (function datahike$array$__GT_WrappedBytes(string_repr){
|
|
240
|
+
return (new datahike.array.WrappedBytes(string_repr,null,null,null));
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Factory function for datahike.array/WrappedBytes, taking a map of keywords to field values.
|
|
245
|
+
*/
|
|
246
|
+
datahike.array.map__GT_WrappedBytes = (function datahike$array$map__GT_WrappedBytes(G__102741){
|
|
247
|
+
var extmap__5342__auto__ = (function (){var G__102820 = cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(G__102741,new cljs.core.Keyword(null,"string-repr","string-repr",431081264));
|
|
248
|
+
if(cljs.core.record_QMARK_(G__102741)){
|
|
249
|
+
return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,G__102820);
|
|
250
|
+
} else {
|
|
251
|
+
return G__102820;
|
|
252
|
+
}
|
|
253
|
+
})();
|
|
254
|
+
return (new datahike.array.WrappedBytes(new cljs.core.Keyword(null,"string-repr","string-repr",431081264).cljs$core$IFn$_invoke$arity$1(G__102741),null,cljs.core.not_empty(extmap__5342__auto__),null));
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* This functions is such that `(a= x y)` is equivalent to `(= (wrap-comparable x) (wrap-comparable y))`. This lets us also use these semantics in hash-sets or as keys in maps.
|
|
259
|
+
*/
|
|
260
|
+
datahike.array.wrap_comparable = (function datahike$array$wrap_comparable(x){
|
|
261
|
+
if(datahike.array.bytes_QMARK_(x)){
|
|
262
|
+
return (new datahike.array.WrappedBytes(x,null,null,null));
|
|
263
|
+
} else {
|
|
264
|
+
return x;
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
/**
|
|
268
|
+
* Extension of Clojure's equality to things we also want to treat like values,
|
|
269
|
+
* e.g. certain array types.
|
|
270
|
+
*/
|
|
271
|
+
datahike.array.a_EQ_ = (function datahike$array$a_EQ_(a,b){
|
|
272
|
+
return ((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(a,b)) || ((((a === b)) || ((datahike.array.compare_arrays(a,b) === (0))))));
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
//# sourceMappingURL=datahike.array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["datahike/array.cljc"],"mappings":"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","names":["datahike.array/bytes?","x","js/ArrayBuffer","datahike.array/compare-arrays","a","b","datahike.array.goog$module$goog$array.compare3","datahike.array/string-from-bytes","js/TextDecoder","this__5300__auto__","k__5301__auto__","this__5302__auto__","k102734","else__5303__auto__","G__102752","cljs.core/Keyword","string-repr","cljs.core.get","__extmap","this__5320__auto__","f__5321__auto__","init__5322__auto__","cljs.core.reduce","ret__5323__auto__","p__102759","vec__102761","k__5324__auto__","cljs.core.nth","v__5325__auto__","this__5315__auto__","writer__5316__auto__","opts__5317__auto__","pr-pair__5318__auto__","keyval__5319__auto__","cljs.core/pr-sequential-writer","cljs.core.concat","cljs.core/PersistentVector","G__102733","cljs.core/RecordIter","cljs.core/-iterator","cljs.core/nil-iter","this__5298__auto__","__meta","this__5295__auto__","__hash","this__5304__auto__","cljs.core/count","this__5296__auto__","h__5111__auto__","coll__5297__auto__","cljs.core/hash-unordered-coll","this102735","other102736","cljs.core._EQ_","this__5310__auto__","k__5311__auto__","cljs.core/contains?","cljs.core.dissoc","cljs.core/-with-meta","cljs.core.into","cljs.core/not-empty","this__5307__auto__","G__102774","this__5308__auto__","k__5309__auto__","pred__102776","cljs.core/keyword-identical?","expr__102777","cljs.core.assoc","this__5313__auto__","cljs.core/seq","cljs.core/MapEntry","this__5299__auto__","this__5305__auto__","entry__5306__auto__","cljs.core/vector?","cljs.core/-nth","cljs.core/-conj","datahike.array/WrappedBytes","this__5346__auto__","cljs.core/List","writer__5347__auto__","cljs.core/-write","G__102741","extmap__5342__auto__","G__102820","cljs.core/record?","datahike.array/->WrappedBytes","datahike.array/map->WrappedBytes","datahike.array/wrap-comparable","datahike.array/a="],"sourcesContent":["(ns ^:no-doc datahike.array\n #?(:cljs (:require [goog.array]))\n #?(:clj (:import [java.util Arrays])))\n\n#?(:clj\n (defonce ^:private hh-node-ns\n (try\n (require 'hitchhiker.tree.node)\n (find-ns 'hitchhiker.tree.node)\n (catch Exception _ nil))))\n\n#?(:clj\n (defn java8? []\n (try\n (= 8 (Integer/parseInt (subs (System/getProperty \"java.specification.version\") 2)))\n (catch Exception _\n false))))\n\n#?(:clj\n ;; meta data doesn't get expanded in macros :/\n (defn array-compare [a b] (Arrays/compare ^bytes a ^bytes b)))\n\n#?(:clj\n (defmacro raw-array-compare [a b]\n (if (java8?)\n ;; slow fallback for Java 8, but has same semantics\n `(let [bl# (alength ~b)\n al# (alength ~a)]\n (loop [i# 1]\n (cond (and (> i# bl#) (> i# al#))\n 0\n\n (> i# bl#)\n 1 ;; b is a prefix of a\n\n (> i# al#)\n -1 ;; a is a prefix of b\n\n :else\n (let [ec# (compare (aget ~a (dec i#)) (aget ~b (dec i#)))]\n (if (not (zero? ec#))\n ec#\n (recur (inc i#)))))))\n `(array-compare ~a ~b))))\n\n#?(:cljs\n (defn bytes? [x]\n (and (instance? js/ArrayBuffer (.-buffer x))\n (number? (.-byteLength x)))))\n\n(defn compare-arrays\n \"Compare two arrays a and b element-wise in ascending order. If one array is a\nprefix of another then it comes first.\"\n [a b]\n #?(:cljs (goog.array/compare3 a b)\n :clj\n (if (not (and (bytes? a) (bytes? b)))\n (try\n (compare a b)\n (catch ClassCastException _\n (if hh-node-ns\n (let [order-fn (ns-resolve hh-node-ns '-order-on-edn-types)]\n (- (order-fn a) (order-fn b)))\n ;; Fallback when hitchhiker-tree not available\n (compare (class a) (class b)))))\n (raw-array-compare a b))))\n\n(defn string-from-bytes\n \"Represents a byte array as a string. Two byte arrays are said to be equal iff their corresponding values after applying this function are equal. That way, we rely on the equality and hash code implementations of the String class to compare byte arrays.\"\n [x]\n #?(:cljs (.decode (js/TextDecoder. \"utf8\") x)\n :clj\n (let [n (alength x)\n dst (char-array n)]\n (dotimes [i n]\n (aset dst i (char (aget x i))))\n (String. dst))))\n\n(defrecord WrappedBytes [string-repr])\n\n(defn wrap-comparable\n \"This functions is such that `(a= x y)` is equivalent to `(= (wrap-comparable x) (wrap-comparable y))`. This lets us also use these semantics in hash-sets or as keys in maps.\"\n [x]\n (if (bytes? x)\n (WrappedBytes. #?(:clj (string-from-bytes x)\n :cljs x))\n x))\n\n(defn a=\n \"Extension of Clojure's equality to things we also want to treat like values,\n e.g. certain array types.\"\n [a b]\n (or (= a b)\n #?(:clj (and (bytes? a)\n (bytes? b)\n (zero? (compare-arrays a b)))\n :cljs (or (identical? a b)\n (zero? (compare-arrays a b))))))\n"]}
|