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
package/README.md
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Datahike - JavaScript API
|
|
2
|
+
|
|
3
|
+
Durable Datalog database for JavaScript and Node.js, powered by ClojureScript.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Datalog Queries**: Expressive query language inspired by Datomic
|
|
8
|
+
- **Schema Support**: Optional schema with validation
|
|
9
|
+
- **Time Travel**: Access database history and temporal queries
|
|
10
|
+
- **Pluggable Backends**: Memory, file, or custom storage
|
|
11
|
+
- **Promise-based API**: Native JavaScript async/await support
|
|
12
|
+
- **TypeScript Support**: Complete type definitions included
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install datahike
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
```javascript
|
|
23
|
+
const d = require('datahike');
|
|
24
|
+
const crypto = require('crypto');
|
|
25
|
+
|
|
26
|
+
async function example() {
|
|
27
|
+
// Create database configuration (requires UUID for :id)
|
|
28
|
+
const config = {
|
|
29
|
+
store: {
|
|
30
|
+
backend: ':memory',
|
|
31
|
+
id: crypto.randomUUID()
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// Create and connect to database
|
|
36
|
+
await d.createDatabase(config);
|
|
37
|
+
const conn = await d.connect(config);
|
|
38
|
+
|
|
39
|
+
// Define schema
|
|
40
|
+
// Keys: WITHOUT colon, Values: WITH colon
|
|
41
|
+
const schema = [
|
|
42
|
+
{
|
|
43
|
+
'db/ident': ':name',
|
|
44
|
+
'db/valueType': ':db.type/string',
|
|
45
|
+
'db/cardinality': ':db.cardinality/one'
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
'db/ident': ':age',
|
|
49
|
+
'db/valueType': ':db.type/long',
|
|
50
|
+
'db/cardinality': ':db.cardinality/one'
|
|
51
|
+
}
|
|
52
|
+
];
|
|
53
|
+
await d.transact(conn, schema);
|
|
54
|
+
|
|
55
|
+
// Add data (data keys without colons)
|
|
56
|
+
const data = [
|
|
57
|
+
{ name: 'Alice', age: 30 },
|
|
58
|
+
{ name: 'Bob', age: 25 }
|
|
59
|
+
];
|
|
60
|
+
await d.transact(conn, data);
|
|
61
|
+
|
|
62
|
+
// Query with Datalog
|
|
63
|
+
const db = await d.db(conn);
|
|
64
|
+
const results = await d.q(
|
|
65
|
+
'[:find ?name ?age :where [?e :name ?name] [?e :age ?age]]',
|
|
66
|
+
db
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
console.log(results); // [['Alice', 30], ['Bob', 25]]
|
|
70
|
+
|
|
71
|
+
// Disconnect
|
|
72
|
+
d.release(conn);
|
|
73
|
+
await d.deleteDatabase(config);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
example();
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Documentation
|
|
80
|
+
|
|
81
|
+
### Configuration
|
|
82
|
+
|
|
83
|
+
**⚠️ Note:** Keyword syntax may change in future versions to simplify the API.
|
|
84
|
+
|
|
85
|
+
```javascript
|
|
86
|
+
const crypto = require('crypto');
|
|
87
|
+
|
|
88
|
+
const config = {
|
|
89
|
+
store: {
|
|
90
|
+
backend: ':memory', // or ':file'
|
|
91
|
+
id: crypto.randomUUID() // Required: UUID identifier
|
|
92
|
+
},
|
|
93
|
+
// Optional configuration:
|
|
94
|
+
'keep-history': true, // default: true
|
|
95
|
+
'schema-flexibility': ':write' // or ':read'
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// File backend example (Node.js only)
|
|
99
|
+
const fileConfig = {
|
|
100
|
+
store: {
|
|
101
|
+
backend: ':file',
|
|
102
|
+
path: './data'
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Keywords
|
|
108
|
+
|
|
109
|
+
**Current keyword rules:**
|
|
110
|
+
- **Schema keys**: WITHOUT `:` prefix (`'db/ident'`, not `':db/ident'`)
|
|
111
|
+
- **Schema values**: WITH `:` prefix (`':name'`, `':db.type/string'`)
|
|
112
|
+
- **Data keys**: WITHOUT `:` prefix (`name`, `age`)
|
|
113
|
+
- **Pull patterns**: WITH `:` prefix (`[':name', ':age']`)
|
|
114
|
+
|
|
115
|
+
### Datalog Queries
|
|
116
|
+
|
|
117
|
+
Queries use EDN string format (Datalog DSL):
|
|
118
|
+
|
|
119
|
+
```javascript
|
|
120
|
+
// Find relationships
|
|
121
|
+
await d.q('[:find ?e ?name :where [?e :name ?name]]', db);
|
|
122
|
+
|
|
123
|
+
// Find collection
|
|
124
|
+
await d.q('[:find [?name ...] :where [_ :name ?name]]', db);
|
|
125
|
+
|
|
126
|
+
// With predicates
|
|
127
|
+
await d.q('[:find ?name :where [?e :name ?name] [?e :age ?age] [(> ?age 25)]]', db);
|
|
128
|
+
|
|
129
|
+
// Parameterized
|
|
130
|
+
await d.q('[:find ?e :in $ ?name :where [?e :name ?name]]', db, 'Alice');
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Pull API
|
|
134
|
+
|
|
135
|
+
Retrieve entity data by pattern:
|
|
136
|
+
|
|
137
|
+
```javascript
|
|
138
|
+
// Pull single entity
|
|
139
|
+
await d.pull(db, ['*'], entityId);
|
|
140
|
+
|
|
141
|
+
// Pull with specific attributes
|
|
142
|
+
await d.pull(db, [':name', ':age'], entityId);
|
|
143
|
+
|
|
144
|
+
// Pull many entities
|
|
145
|
+
await d.pullMany(db, ['*'], [id1, id2, id3]);
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Transactions
|
|
149
|
+
|
|
150
|
+
Add or retract data:
|
|
151
|
+
|
|
152
|
+
```javascript
|
|
153
|
+
// Entity maps (data keys without colons)
|
|
154
|
+
const data = [
|
|
155
|
+
{ name: 'Charlie', age: 35 }
|
|
156
|
+
];
|
|
157
|
+
await d.transact(conn, data);
|
|
158
|
+
|
|
159
|
+
// Tuple form
|
|
160
|
+
await d.transact(conn, [
|
|
161
|
+
[':db/add', entityId, ':age', 36]
|
|
162
|
+
]);
|
|
163
|
+
|
|
164
|
+
// Retract
|
|
165
|
+
await d.transact(conn, [
|
|
166
|
+
[':db/retract', entityId, ':age', 35]
|
|
167
|
+
]);
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Temporal Queries
|
|
171
|
+
|
|
172
|
+
Access database history:
|
|
173
|
+
|
|
174
|
+
```javascript
|
|
175
|
+
// Database at specific time
|
|
176
|
+
const historicalDb = d.asOf(d.db(conn), date);
|
|
177
|
+
|
|
178
|
+
// Full history
|
|
179
|
+
const historyDb = d.history(d.db(conn));
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## API Reference
|
|
183
|
+
|
|
184
|
+
See [TypeScript definitions](index.d.ts) for complete API documentation.
|
|
185
|
+
|
|
186
|
+
### Core Functions
|
|
187
|
+
|
|
188
|
+
- `createDatabase(config)` - Create new database
|
|
189
|
+
- `deleteDatabase(config)` - Delete database
|
|
190
|
+
- `databaseExists(config)` - Check if database exists
|
|
191
|
+
- `connect(config)` - Connect to database
|
|
192
|
+
- `release(conn)` - Close connection
|
|
193
|
+
- `db(conn)` - Get current database value
|
|
194
|
+
- `transact(conn, txData)` - Execute transaction
|
|
195
|
+
- `q(query, ...args)` - Execute Datalog query
|
|
196
|
+
- `pull(db, pattern, entityId)` - Pull entity by pattern
|
|
197
|
+
- `pullMany(db, pattern, entityIds)` - Pull multiple entities
|
|
198
|
+
- `entity(db, entityId)` - Get entity (returns ClojureScript entity)
|
|
199
|
+
- `datoms(db, index, ...components)` - Access datoms directly
|
|
200
|
+
- `seekDatoms(db, index, ...components)` - Seek in index
|
|
201
|
+
- `schema(db)` - Get database schema
|
|
202
|
+
- `reverse_schema(db)` - Get reverse schema
|
|
203
|
+
- `metrics(db)` - Get database metrics
|
|
204
|
+
|
|
205
|
+
### Temporal Functions
|
|
206
|
+
|
|
207
|
+
- `asOf(db, timePoint)` - Database at specific time
|
|
208
|
+
- `since(db, timePoint)` - Changes since time
|
|
209
|
+
- `history(db)` - Full database history
|
|
210
|
+
|
|
211
|
+
## Known Limitations
|
|
212
|
+
|
|
213
|
+
- **Query API**: Requires EDN string format (no JavaScript object syntax)
|
|
214
|
+
- **Entity API**: Returns ClojureScript objects (use Pull API for plain JavaScript objects)
|
|
215
|
+
- **Keyword syntax**: May change in future versions for simplification
|
|
216
|
+
- **Advanced Datalog**: Some advanced features may have limited support
|
|
217
|
+
|
|
218
|
+
## License
|
|
219
|
+
|
|
220
|
+
Eclipse Public License 1.0
|
|
221
|
+
|
|
222
|
+
## Links
|
|
223
|
+
|
|
224
|
+
- [GitHub Repository](https://github.com/replikativ/datahike)
|
|
225
|
+
- [Documentation](https://github.com/replikativ/datahike/tree/master/doc)
|
|
226
|
+
- [ClojureScript API Docs](https://cljdoc.org/d/io.replikativ/datahike)
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
var $CLJS = require("./cljs_env");
|
|
2
|
+
var $jscomp = $CLJS.$jscomp;
|
|
3
|
+
var COMPILED = false;
|
|
4
|
+
require("./cljs.core.js");
|
|
5
|
+
require("./cljs.analyzer.js");
|
|
6
|
+
require("./cljs.env.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("cljs.analyzer.api.js");
|
|
28
|
+
|
|
29
|
+
goog.provide('cljs.analyzer.api');
|
|
30
|
+
/**
|
|
31
|
+
* Creates an empty compilation state Atom<Map>. The optional opts arg is a map
|
|
32
|
+
* representing the compiler configuration. See the documentation
|
|
33
|
+
* for details: https://clojurescript.org/reference/compiler-options
|
|
34
|
+
*/
|
|
35
|
+
cljs.analyzer.api.empty_state = (function cljs$analyzer$api$empty_state(var_args){
|
|
36
|
+
var G__123963 = arguments.length;
|
|
37
|
+
switch (G__123963) {
|
|
38
|
+
case 0:
|
|
39
|
+
return cljs.analyzer.api.empty_state.cljs$core$IFn$_invoke$arity$0();
|
|
40
|
+
|
|
41
|
+
break;
|
|
42
|
+
case 1:
|
|
43
|
+
return cljs.analyzer.api.empty_state.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
|
44
|
+
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
(cljs.analyzer.api.empty_state.cljs$core$IFn$_invoke$arity$0 = (function (){
|
|
53
|
+
if((!((cljs.env._STAR_compiler_STAR_ == null)))){
|
|
54
|
+
return cljs.env._STAR_compiler_STAR_;
|
|
55
|
+
} else {
|
|
56
|
+
return cljs.env.default_compiler_env.cljs$core$IFn$_invoke$arity$0();
|
|
57
|
+
}
|
|
58
|
+
}));
|
|
59
|
+
|
|
60
|
+
(cljs.analyzer.api.empty_state.cljs$core$IFn$_invoke$arity$1 = (function (opts){
|
|
61
|
+
return cljs.env.default_compiler_env.cljs$core$IFn$_invoke$arity$1(opts);
|
|
62
|
+
}));
|
|
63
|
+
|
|
64
|
+
(cljs.analyzer.api.empty_state.cljs$lang$maxFixedArity = 1);
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Return the current compiler state atom.
|
|
68
|
+
*/
|
|
69
|
+
cljs.analyzer.api.current_state = (function cljs$analyzer$api$current_state(){
|
|
70
|
+
return cljs.env._STAR_compiler_STAR_;
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* Return the current file under analysis or compilation.
|
|
74
|
+
*/
|
|
75
|
+
cljs.analyzer.api.current_file = (function cljs$analyzer$api$current_file(){
|
|
76
|
+
return cljs.analyzer._STAR_cljs_file_STAR_;
|
|
77
|
+
});
|
|
78
|
+
/**
|
|
79
|
+
* Return the current ns under analysis or compilation.
|
|
80
|
+
*/
|
|
81
|
+
cljs.analyzer.api.current_ns = (function cljs$analyzer$api$current_ns(){
|
|
82
|
+
return cljs.analyzer._STAR_cljs_ns_STAR_;
|
|
83
|
+
});
|
|
84
|
+
/**
|
|
85
|
+
* Creates an empty analysis environment.
|
|
86
|
+
*/
|
|
87
|
+
cljs.analyzer.api.empty_env = (function cljs$analyzer$api$empty_env(){
|
|
88
|
+
return cljs.analyzer.empty_env();
|
|
89
|
+
});
|
|
90
|
+
/**
|
|
91
|
+
* Test if the given warning-type is enabled.
|
|
92
|
+
*/
|
|
93
|
+
cljs.analyzer.api.warning_enabled_QMARK_ = (function cljs$analyzer$api$warning_enabled_QMARK_(warning_type){
|
|
94
|
+
return cljs.analyzer._STAR_cljs_warnings_STAR_.call(null, warning_type);
|
|
95
|
+
});
|
|
96
|
+
/**
|
|
97
|
+
* The default warning handler.
|
|
98
|
+
*
|
|
99
|
+
* Outputs the warning messages to *err*.
|
|
100
|
+
*/
|
|
101
|
+
cljs.analyzer.api.default_warning_handler = (function cljs$analyzer$api$default_warning_handler(warning_type,env,extra){
|
|
102
|
+
return cljs.analyzer.default_warning_handler(warning_type,env,extra);
|
|
103
|
+
});
|
|
104
|
+
/**
|
|
105
|
+
* Helper for generating the standard analyzer messages for warnings. Should be
|
|
106
|
+
* passed warn-type and warn-info. See with-warning-handlers.
|
|
107
|
+
*/
|
|
108
|
+
cljs.analyzer.api.warning_message = (function cljs$analyzer$api$warning_message(warn_type,warn_info){
|
|
109
|
+
return cljs.analyzer.error_message.cljs$core$IFn$_invoke$arity$2(warn_type,warn_info);
|
|
110
|
+
});
|
|
111
|
+
/**
|
|
112
|
+
* Get the enabled warning types.
|
|
113
|
+
*/
|
|
114
|
+
cljs.analyzer.api.enabled_warnings = (function cljs$analyzer$api$enabled_warnings(){
|
|
115
|
+
return cljs.analyzer._STAR_cljs_warnings_STAR_;
|
|
116
|
+
});
|
|
117
|
+
/**
|
|
118
|
+
* Return the compiler options from compiler state.
|
|
119
|
+
*/
|
|
120
|
+
cljs.analyzer.api.get_options = (function cljs$analyzer$api$get_options(var_args){
|
|
121
|
+
var G__124075 = arguments.length;
|
|
122
|
+
switch (G__124075) {
|
|
123
|
+
case 0:
|
|
124
|
+
return cljs.analyzer.api.get_options.cljs$core$IFn$_invoke$arity$0();
|
|
125
|
+
|
|
126
|
+
break;
|
|
127
|
+
case 1:
|
|
128
|
+
return cljs.analyzer.api.get_options.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
|
129
|
+
|
|
130
|
+
break;
|
|
131
|
+
default:
|
|
132
|
+
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
|
133
|
+
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
(cljs.analyzer.api.get_options.cljs$core$IFn$_invoke$arity$0 = (function (){
|
|
138
|
+
return cljs.analyzer.api.get_options.cljs$core$IFn$_invoke$arity$1(cljs.analyzer.api.current_state());
|
|
139
|
+
}));
|
|
140
|
+
|
|
141
|
+
(cljs.analyzer.api.get_options.cljs$core$IFn$_invoke$arity$1 = (function (state){
|
|
142
|
+
return cljs.core.get.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(state),new cljs.core.Keyword(null,"options","options",99638489));
|
|
143
|
+
}));
|
|
144
|
+
|
|
145
|
+
(cljs.analyzer.api.get_options.cljs$lang$maxFixedArity = 1);
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Return the currently computed Google Closure js dependency index from the
|
|
149
|
+
* compiler state.
|
|
150
|
+
*/
|
|
151
|
+
cljs.analyzer.api.get_js_index = (function cljs$analyzer$api$get_js_index(var_args){
|
|
152
|
+
var G__124088 = arguments.length;
|
|
153
|
+
switch (G__124088) {
|
|
154
|
+
case 0:
|
|
155
|
+
return cljs.analyzer.api.get_js_index.cljs$core$IFn$_invoke$arity$0();
|
|
156
|
+
|
|
157
|
+
break;
|
|
158
|
+
case 1:
|
|
159
|
+
return cljs.analyzer.api.get_js_index.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
|
160
|
+
|
|
161
|
+
break;
|
|
162
|
+
default:
|
|
163
|
+
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
|
164
|
+
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
(cljs.analyzer.api.get_js_index.cljs$core$IFn$_invoke$arity$0 = (function (){
|
|
169
|
+
return cljs.analyzer.api.get_js_index.cljs$core$IFn$_invoke$arity$1(cljs.analyzer.api.current_state());
|
|
170
|
+
}));
|
|
171
|
+
|
|
172
|
+
(cljs.analyzer.api.get_js_index.cljs$core$IFn$_invoke$arity$1 = (function (state){
|
|
173
|
+
return cljs.core.get.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(state),new cljs.core.Keyword(null,"js-dependency-index","js-dependency-index",-1887042131));
|
|
174
|
+
}));
|
|
175
|
+
|
|
176
|
+
(cljs.analyzer.api.get_js_index.cljs$lang$maxFixedArity = 1);
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* ClojureScript's default analysis passes.
|
|
180
|
+
*/
|
|
181
|
+
cljs.analyzer.api.default_passes = cljs.analyzer.default_passes;
|
|
182
|
+
/**
|
|
183
|
+
* Given an analysis environment resolve a var. Analogous to
|
|
184
|
+
* clojure.core/resolve
|
|
185
|
+
*/
|
|
186
|
+
cljs.analyzer.api.resolve = (function cljs$analyzer$api$resolve(env,sym){
|
|
187
|
+
if(cljs.core.map_QMARK_(env)){
|
|
188
|
+
} else {
|
|
189
|
+
throw (new Error("Assert failed: (map? env)"));
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
if((sym instanceof cljs.core.Symbol)){
|
|
193
|
+
} else {
|
|
194
|
+
throw (new Error("Assert failed: (symbol? sym)"));
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
try{var _STAR_private_var_access_nowarn_STAR__orig_val__124129 = cljs.analyzer._STAR_private_var_access_nowarn_STAR_;
|
|
198
|
+
var _STAR_private_var_access_nowarn_STAR__temp_val__124130 = true;
|
|
199
|
+
(cljs.analyzer._STAR_private_var_access_nowarn_STAR_ = _STAR_private_var_access_nowarn_STAR__temp_val__124130);
|
|
200
|
+
|
|
201
|
+
try{return cljs.analyzer.resolve_var.cljs$core$IFn$_invoke$arity$3(env,sym,cljs.analyzer.confirm_var_exists_throw());
|
|
202
|
+
}finally {(cljs.analyzer._STAR_private_var_access_nowarn_STAR_ = _STAR_private_var_access_nowarn_STAR__orig_val__124129);
|
|
203
|
+
}}catch (e124114){var e = e124114;
|
|
204
|
+
return cljs.analyzer.resolve_macro_var(env,sym);
|
|
205
|
+
}});
|
|
206
|
+
/**
|
|
207
|
+
* Return all namespaces. Analagous to clojure.core/all-ns but
|
|
208
|
+
* returns symbols identifying namespaces not Namespace instances.
|
|
209
|
+
*/
|
|
210
|
+
cljs.analyzer.api.all_ns = (function cljs$analyzer$api$all_ns(var_args){
|
|
211
|
+
var G__124137 = arguments.length;
|
|
212
|
+
switch (G__124137) {
|
|
213
|
+
case 0:
|
|
214
|
+
return cljs.analyzer.api.all_ns.cljs$core$IFn$_invoke$arity$0();
|
|
215
|
+
|
|
216
|
+
break;
|
|
217
|
+
case 1:
|
|
218
|
+
return cljs.analyzer.api.all_ns.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
|
219
|
+
|
|
220
|
+
break;
|
|
221
|
+
default:
|
|
222
|
+
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
|
223
|
+
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
(cljs.analyzer.api.all_ns.cljs$core$IFn$_invoke$arity$0 = (function (){
|
|
228
|
+
return cljs.analyzer.api.all_ns.cljs$core$IFn$_invoke$arity$1(cljs.env._STAR_compiler_STAR_);
|
|
229
|
+
}));
|
|
230
|
+
|
|
231
|
+
(cljs.analyzer.api.all_ns.cljs$core$IFn$_invoke$arity$1 = (function (state){
|
|
232
|
+
return cljs.core.keys(cljs.core.get.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(state),new cljs.core.Keyword("cljs.analyzer","namespaces","cljs.analyzer/namespaces",-260788927)));
|
|
233
|
+
}));
|
|
234
|
+
|
|
235
|
+
(cljs.analyzer.api.all_ns.cljs$lang$maxFixedArity = 1);
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Given a namespace return the corresponding namespace analysis map. Analagous
|
|
239
|
+
* to clojure.core/find-ns.
|
|
240
|
+
*/
|
|
241
|
+
cljs.analyzer.api.find_ns = (function cljs$analyzer$api$find_ns(var_args){
|
|
242
|
+
var G__124145 = arguments.length;
|
|
243
|
+
switch (G__124145) {
|
|
244
|
+
case 1:
|
|
245
|
+
return cljs.analyzer.api.find_ns.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
|
246
|
+
|
|
247
|
+
break;
|
|
248
|
+
case 2:
|
|
249
|
+
return cljs.analyzer.api.find_ns.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
|
250
|
+
|
|
251
|
+
break;
|
|
252
|
+
default:
|
|
253
|
+
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
|
254
|
+
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
(cljs.analyzer.api.find_ns.cljs$core$IFn$_invoke$arity$1 = (function (sym){
|
|
259
|
+
return cljs.analyzer.api.find_ns.cljs$core$IFn$_invoke$arity$2(cljs.env._STAR_compiler_STAR_,sym);
|
|
260
|
+
}));
|
|
261
|
+
|
|
262
|
+
(cljs.analyzer.api.find_ns.cljs$core$IFn$_invoke$arity$2 = (function (state,sym){
|
|
263
|
+
if((sym instanceof cljs.core.Symbol)){
|
|
264
|
+
} else {
|
|
265
|
+
throw (new Error("Assert failed: (symbol? sym)"));
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(state),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("cljs.analyzer","namespaces","cljs.analyzer/namespaces",-260788927),sym], null));
|
|
269
|
+
}));
|
|
270
|
+
|
|
271
|
+
(cljs.analyzer.api.find_ns.cljs$lang$maxFixedArity = 2);
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Given a namespace return all the var analysis maps. Analagous to
|
|
275
|
+
* clojure.core/ns-interns but returns var analysis maps not vars.
|
|
276
|
+
*/
|
|
277
|
+
cljs.analyzer.api.ns_interns = (function cljs$analyzer$api$ns_interns(var_args){
|
|
278
|
+
var G__124154 = arguments.length;
|
|
279
|
+
switch (G__124154) {
|
|
280
|
+
case 1:
|
|
281
|
+
return cljs.analyzer.api.ns_interns.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
|
282
|
+
|
|
283
|
+
break;
|
|
284
|
+
case 2:
|
|
285
|
+
return cljs.analyzer.api.ns_interns.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
|
286
|
+
|
|
287
|
+
break;
|
|
288
|
+
default:
|
|
289
|
+
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
|
290
|
+
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
(cljs.analyzer.api.ns_interns.cljs$core$IFn$_invoke$arity$1 = (function (ns){
|
|
295
|
+
return cljs.analyzer.api.ns_interns.cljs$core$IFn$_invoke$arity$2(cljs.env._STAR_compiler_STAR_,ns);
|
|
296
|
+
}));
|
|
297
|
+
|
|
298
|
+
(cljs.analyzer.api.ns_interns.cljs$core$IFn$_invoke$arity$2 = (function (state,ns){
|
|
299
|
+
if((ns instanceof cljs.core.Symbol)){
|
|
300
|
+
} else {
|
|
301
|
+
throw (new Error("Assert failed: (symbol? ns)"));
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
return cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(state),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("cljs.analyzer","namespaces","cljs.analyzer/namespaces",-260788927),ns,new cljs.core.Keyword(null,"macros","macros",811339431)], null)),cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(state),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("cljs.analyzer","namespaces","cljs.analyzer/namespaces",-260788927),ns,new cljs.core.Keyword(null,"defs","defs",1398449717)], null))], 0));
|
|
305
|
+
}));
|
|
306
|
+
|
|
307
|
+
(cljs.analyzer.api.ns_interns.cljs$lang$maxFixedArity = 2);
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Given a namespace return all the public var analysis maps. Analagous to
|
|
311
|
+
* clojure.core/ns-publics but returns var analysis maps not vars.
|
|
312
|
+
*/
|
|
313
|
+
cljs.analyzer.api.ns_publics = (function cljs$analyzer$api$ns_publics(var_args){
|
|
314
|
+
var G__124180 = arguments.length;
|
|
315
|
+
switch (G__124180) {
|
|
316
|
+
case 1:
|
|
317
|
+
return cljs.analyzer.api.ns_publics.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
|
318
|
+
|
|
319
|
+
break;
|
|
320
|
+
case 2:
|
|
321
|
+
return cljs.analyzer.api.ns_publics.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
|
322
|
+
|
|
323
|
+
break;
|
|
324
|
+
default:
|
|
325
|
+
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
|
326
|
+
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
(cljs.analyzer.api.ns_publics.cljs$core$IFn$_invoke$arity$1 = (function (ns){
|
|
331
|
+
return cljs.analyzer.api.ns_publics.cljs$core$IFn$_invoke$arity$2(cljs.env._STAR_compiler_STAR_,ns);
|
|
332
|
+
}));
|
|
333
|
+
|
|
334
|
+
(cljs.analyzer.api.ns_publics.cljs$core$IFn$_invoke$arity$2 = (function (state,ns){
|
|
335
|
+
if((ns instanceof cljs.core.Symbol)){
|
|
336
|
+
} else {
|
|
337
|
+
throw (new Error("Assert failed: (symbol? ns)"));
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,cljs.core.remove.cljs$core$IFn$_invoke$arity$2((function (p__124205){
|
|
341
|
+
var vec__124207 = p__124205;
|
|
342
|
+
var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__124207,(0),null);
|
|
343
|
+
var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__124207,(1),null);
|
|
344
|
+
return new cljs.core.Keyword(null,"private","private",-558947994).cljs$core$IFn$_invoke$arity$1(v);
|
|
345
|
+
}),cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(state),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("cljs.analyzer","namespaces","cljs.analyzer/namespaces",-260788927),ns,new cljs.core.Keyword(null,"macros","macros",811339431)], null)),cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(state),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("cljs.analyzer","namespaces","cljs.analyzer/namespaces",-260788927),ns,new cljs.core.Keyword(null,"defs","defs",1398449717)], null))], 0))));
|
|
346
|
+
}));
|
|
347
|
+
|
|
348
|
+
(cljs.analyzer.api.ns_publics.cljs$lang$maxFixedArity = 2);
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Given a namespace and a symbol return the corresponding var analysis map.
|
|
352
|
+
* Analagous to clojure.core/ns-resolve but returns var analysis map not Var.
|
|
353
|
+
*/
|
|
354
|
+
cljs.analyzer.api.ns_resolve = (function cljs$analyzer$api$ns_resolve(var_args){
|
|
355
|
+
var G__124221 = arguments.length;
|
|
356
|
+
switch (G__124221) {
|
|
357
|
+
case 2:
|
|
358
|
+
return cljs.analyzer.api.ns_resolve.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
|
359
|
+
|
|
360
|
+
break;
|
|
361
|
+
case 3:
|
|
362
|
+
return cljs.analyzer.api.ns_resolve.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
|
|
363
|
+
|
|
364
|
+
break;
|
|
365
|
+
default:
|
|
366
|
+
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
|
367
|
+
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
(cljs.analyzer.api.ns_resolve.cljs$core$IFn$_invoke$arity$2 = (function (ns,sym){
|
|
372
|
+
return cljs.analyzer.api.ns_resolve.cljs$core$IFn$_invoke$arity$3(cljs.env._STAR_compiler_STAR_,ns,sym);
|
|
373
|
+
}));
|
|
374
|
+
|
|
375
|
+
(cljs.analyzer.api.ns_resolve.cljs$core$IFn$_invoke$arity$3 = (function (state,ns,sym){
|
|
376
|
+
if((ns instanceof cljs.core.Symbol)){
|
|
377
|
+
} else {
|
|
378
|
+
throw (new Error("Assert failed: (symbol? ns)"));
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
if((sym instanceof cljs.core.Symbol)){
|
|
382
|
+
} else {
|
|
383
|
+
throw (new Error("Assert failed: (symbol? sym)"));
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
return cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(state),new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("cljs.analyzer","namespaces","cljs.analyzer/namespaces",-260788927),ns,new cljs.core.Keyword(null,"defs","defs",1398449717),sym], null));
|
|
387
|
+
}));
|
|
388
|
+
|
|
389
|
+
(cljs.analyzer.api.ns_resolve.cljs$lang$maxFixedArity = 3);
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Removes the namespace named by the symbol.
|
|
393
|
+
*/
|
|
394
|
+
cljs.analyzer.api.remove_ns = (function cljs$analyzer$api$remove_ns(var_args){
|
|
395
|
+
var G__124255 = arguments.length;
|
|
396
|
+
switch (G__124255) {
|
|
397
|
+
case 1:
|
|
398
|
+
return cljs.analyzer.api.remove_ns.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
|
399
|
+
|
|
400
|
+
break;
|
|
401
|
+
case 2:
|
|
402
|
+
return cljs.analyzer.api.remove_ns.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
|
403
|
+
|
|
404
|
+
break;
|
|
405
|
+
default:
|
|
406
|
+
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
|
407
|
+
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
|
|
411
|
+
(cljs.analyzer.api.remove_ns.cljs$core$IFn$_invoke$arity$1 = (function (ns){
|
|
412
|
+
return cljs.analyzer.api.remove_ns.cljs$core$IFn$_invoke$arity$2(cljs.env._STAR_compiler_STAR_,ns);
|
|
413
|
+
}));
|
|
414
|
+
|
|
415
|
+
(cljs.analyzer.api.remove_ns.cljs$core$IFn$_invoke$arity$2 = (function (state,ns){
|
|
416
|
+
if((ns instanceof cljs.core.Symbol)){
|
|
417
|
+
} else {
|
|
418
|
+
throw (new Error("Assert failed: (symbol? ns)"));
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$variadic(state,cljs.core.update_in,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("cljs.analyzer","namespaces","cljs.analyzer/namespaces",-260788927)], null),cljs.core.dissoc,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([ns], 0));
|
|
422
|
+
}));
|
|
423
|
+
|
|
424
|
+
(cljs.analyzer.api.remove_ns.cljs$lang$maxFixedArity = 2);
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
//# sourceMappingURL=cljs.analyzer.api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["cljs/analyzer/api.cljc"],"mappings":"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","names":["var_args","G__123963","cljs.analyzer.api/empty-state","js/Error","cljs.env/*compiler*","cljs.env.default_compiler_env","opts","cljs.analyzer.api/current-state","cljs.analyzer.api/current-file","cljs.analyzer/*cljs-file*","cljs.analyzer.api/current-ns","cljs.analyzer/*cljs-ns*","cljs.analyzer.api/empty-env","cljs.analyzer/empty-env","cljs.analyzer.api/warning-enabled?","warning-type","cljs.analyzer/*cljs-warnings*","cljs.analyzer.api/default-warning-handler","env","extra","cljs.analyzer/default-warning-handler","cljs.analyzer.api/warning-message","warn-type","warn-info","cljs.analyzer/error-message","cljs.analyzer.api/enabled-warnings","G__124075","cljs.analyzer.api/get-options","cljs.analyzer.api.get_options","state","cljs.core/deref","cljs.core.get","G__124088","cljs.analyzer.api/get-js-index","cljs.analyzer.api.get_js_index","cljs.analyzer.api/default-passes","cljs.analyzer/default-passes","cljs.analyzer.api/resolve","sym","cljs.core/map?","cljs.core/Symbol","e124114","*private-var-access-nowarn*-orig-val__124129","*private-var-access-nowarn*-temp-val__124130","cljs.analyzer/*private-var-access-nowarn*","cljs.analyzer.resolve_var","cljs.analyzer/confirm-var-exists-throw","e","cljs.analyzer/resolve-macro-var","G__124137","cljs.analyzer.api/all-ns","cljs.analyzer.api.all_ns","cljs.core/keys","G__124145","cljs.analyzer.api/find-ns","cljs.analyzer.api.find_ns","cljs.core.get_in","G__124154","cljs.analyzer.api/ns-interns","ns","cljs.analyzer.api.ns_interns","cljs.core.merge","G__124180","cljs.analyzer.api/ns-publics","cljs.analyzer.api.ns_publics","cljs.core.remove","p__124205","vec__124207","cljs.core.nth","k","v","cljs.core.into","G__124221","cljs.analyzer.api/ns-resolve","cljs.analyzer.api.ns_resolve","G__124255","cljs.analyzer.api/remove-ns","cljs.analyzer.api.remove_ns","cljs.core.swap_BANG_","cljs.core/update-in","cljs.core/dissoc"],"sourcesContent":["; Copyright (c) Rich Hickey. All rights reserved.\n; The use and distribution terms for this software are covered by the\n; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)\n; which can be found in the file epl-v10.html at the root of this distribution.\n; By using this software in any fashion, you are agreeing to be bound by\n; the terms of this license.\n; You must not remove this notice, or any other, from this software.\n\n(ns cljs.analyzer.api\n \"This is intended to be a stable api for those who need programmatic access\n to the analyzer.\"\n (:refer-clojure :exclude [all-ns ns-interns ns-resolve resolve find-ns\n ns-publics remove-ns])\n #?(:clj (:require [cljs.analyzer :as ana]\n [cljs.env :as env]\n [cljs.util :as util]\n [clojure.edn :as edn]\n [clojure.java.io :as io])\n :cljs (:require [cljs.analyzer :as ana]\n [cljs.env :as env])))\n\n;; =============================================================================\n;; Useful Utilities\n\n(defn empty-state\n \"Creates an empty compilation state Atom<Map>. The optional opts arg is a map\n representing the compiler configuration. See the documentation\n for details: https://clojurescript.org/reference/compiler-options\"\n ([]\n (if-not (nil? env/*compiler*)\n env/*compiler*\n (env/default-compiler-env)))\n ([opts]\n (env/default-compiler-env opts)))\n\n(defn current-state\n \"Return the current compiler state atom.\"\n []\n env/*compiler*)\n\n(defn current-file\n \"Return the current file under analysis or compilation.\"\n []\n ana/*cljs-file*)\n\n(defn current-ns\n \"Return the current ns under analysis or compilation.\"\n []\n ana/*cljs-ns*)\n\n(defmacro with-state\n \"Run the body with the given compilation state Atom<Map>.\"\n [state & body]\n `(env/with-compiler-env ~state\n ~@body))\n\n(defn empty-env\n \"Creates an empty analysis environment.\"\n []\n (ana/empty-env))\n\n(defmacro no-warn\n \"Disable analyzer warnings for any analysis executed in body.\"\n [& body]\n (let [no-warnings (zipmap (keys ana/*cljs-warnings*) (repeat false))]\n `(binding [ana/*cljs-warnings* ~no-warnings]\n ~@body)))\n\n(defn warning-enabled?\n \"Test if the given warning-type is enabled.\"\n [warning-type]\n (ana/*cljs-warnings* warning-type))\n\n(defn default-warning-handler\n \"The default warning handler.\n\n Outputs the warning messages to *err*.\"\n [warning-type env extra]\n (ana/default-warning-handler warning-type env extra))\n\n(defmacro with-warning-handlers\n \"Helper macro for custom handling of emitted warnings. Handlers should be\n a vector of functions. The signature of these functions is\n [warn-type env warn-info]. warn-type is a keyword describing the warning,\n env is the analysis environment, and warn-info is a map of extra useful\n information for a particular warning type.\"\n [handlers & body]\n `(ana/with-warning-handlers ~handlers\n ~@body))\n\n(defn warning-message\n \"Helper for generating the standard analyzer messages for warnings. Should be\n passed warn-type and warn-info. See with-warning-handlers.\"\n [warn-type warn-info]\n (ana/error-message warn-type warn-info))\n\n(defn enabled-warnings\n \"Get the enabled warning types.\"\n []\n ana/*cljs-warnings*)\n\n(defn get-options\n \"Return the compiler options from compiler state.\"\n ([] (get-options (current-state)))\n ([state]\n (get @state :options)))\n\n(defn get-js-index\n \"Return the currently computed Google Closure js dependency index from the\n compiler state.\"\n ([] (get-js-index (current-state)))\n ([state]\n (get @state :js-dependency-index)))\n\n(def\n ^{:doc \"ClojureScript's default analysis passes.\"}\n default-passes ana/default-passes)\n\n(defmacro with-passes\n \"Evaluate the body with the provided sequence of compiler passes.\"\n [passes & body]\n `(binding [ana/*passes* ~passes]\n ~@body))\n\n#?(:clj\n (defn analyze\n \"Given an environment, a map containing {:locals (mapping of names to bindings), :context\n (one of :statement, :expr, :return), :ns (a symbol naming the\n compilation ns)}, and form, returns an expression object (a map\n containing at least :form, :op and :env keys). If expr has any (immediately)\n nested exprs, must have :children entry. This must be a vector of keywords naming\n the immediately nested fields mapped to an expr or vector of exprs. This will\n facilitate code walking without knowing the details of the op set.\"\n ([env form] (analyze env form nil))\n ([env form name] (analyze env form name nil))\n ([env form name opts]\n (analyze (or (current-state) (empty-state opts)) env form name opts))\n ([state env form name opts]\n (env/with-compiler-env state\n (binding [ana/*cljs-warning-handlers* (:warning-handlers opts ana/*cljs-warning-handlers*)]\n (ana/analyze env form name opts))))))\n\n#?(:clj\n (defn forms-seq\n \"Seq of Clojure/ClojureScript forms from rdr, a java.io.Reader. Optionally\n accepts a filename argument which will be used in any emitted errors.\"\n ([rdr] (ana/forms-seq* rdr nil))\n ([rdr filename] (ana/forms-seq* rdr filename))))\n\n#?(:clj\n (defn parse-ns\n \"Helper for parsing only the essential namespace information from a\n ClojureScript source file and returning a cljs.closure/IJavaScript compatible\n map _not_ a namespace AST node.\n\n By default does not load macros or perform any analysis of dependencies. If\n opts parameter provided :analyze-deps and :load-macros keys their values will\n be used for *analyze-deps* and *load-macros* bindings respectively. This\n function does _not_ side-effect the ambient compilation environment unless\n requested via opts where :restore is false.\"\n ([src] (parse-ns src nil nil))\n ([src opts] (parse-ns src nil opts))\n ([src dest opts]\n (parse-ns (or (current-state) (empty-state opts)) src dest opts))\n ([state src dest opts]\n (env/with-compiler-env state\n (binding [ana/*cljs-warning-handlers* (:warning-handlers opts ana/*cljs-warning-handlers*)]\n (ana/parse-ns src dest opts))))))\n\n#?(:clj\n (defn analyze-file\n \"Given a java.io.File, java.net.URL or a string identifying a resource on the\n classpath attempt to analyze it.\n\n This function side-effects the ambient compilation environment\n `cljs.env/*compiler*` to aggregate analysis information. opts argument is\n compiler options, if :cache-analysis true will cache analysis to\n \\\":output-dir/some/ns/foo.cljs.cache.edn\\\". This function does not return a\n meaningful value.\"\n ([f] (analyze-file f nil))\n ([f opts]\n (analyze-file (or (current-state) (empty-state opts)) f opts))\n ([state f opts]\n (env/with-compiler-env state\n (binding [ana/*cljs-warning-handlers* (:warning-handlers opts ana/*cljs-warning-handlers*)]\n (ana/analyze-file f opts))))))\n\n#?(:clj\n (defn read-analysis-cache\n \"Read an analysis cache.\"\n [cache-file]\n (case (util/ext cache-file)\n \"edn\" (edn/read-string (slurp cache-file))\n \"json\" (let [{:keys [reader read]} @ana/transit]\n (with-open [is (io/input-stream cache-file)]\n (read (reader is :json ana/transit-read-opts)))))))\n\n;; =============================================================================\n;; Main API\n\n(defn resolve\n \"Given an analysis environment resolve a var. Analogous to\n clojure.core/resolve\"\n [env sym]\n {:pre [(map? env) (symbol? sym)]}\n (try\n (binding [ana/*private-var-access-nowarn* true]\n (ana/resolve-var env sym\n (ana/confirm-var-exists-throw)))\n (catch #?(:clj Exception :cljs :default) e\n (ana/resolve-macro-var env sym))))\n\n(defn all-ns\n \"Return all namespaces. Analagous to clojure.core/all-ns but\n returns symbols identifying namespaces not Namespace instances.\"\n ([]\n (all-ns env/*compiler*))\n ([state]\n (keys (get @state ::ana/namespaces))))\n\n(defn find-ns\n \"Given a namespace return the corresponding namespace analysis map. Analagous\n to clojure.core/find-ns.\"\n ([sym]\n (find-ns env/*compiler* sym))\n ([state sym]\n {:pre [(symbol? sym)]}\n (get-in @state [::ana/namespaces sym])))\n\n(defn ns-interns\n \"Given a namespace return all the var analysis maps. Analagous to\n clojure.core/ns-interns but returns var analysis maps not vars.\"\n ([ns]\n (ns-interns env/*compiler* ns))\n ([state ns]\n {:pre [(symbol? ns)]}\n (merge\n (get-in @state [::ana/namespaces ns :macros])\n (get-in @state [::ana/namespaces ns :defs]))))\n\n(defn ns-publics\n \"Given a namespace return all the public var analysis maps. Analagous to\n clojure.core/ns-publics but returns var analysis maps not vars.\"\n ([ns]\n (ns-publics env/*compiler* ns))\n ([state ns]\n {:pre [(symbol? ns)]}\n (->> (merge\n (get-in @state [::ana/namespaces ns :macros])\n (get-in @state [::ana/namespaces ns :defs]))\n (remove (fn [[k v]] (:private v)))\n (into {}))))\n\n(defn ns-resolve\n \"Given a namespace and a symbol return the corresponding var analysis map.\n Analagous to clojure.core/ns-resolve but returns var analysis map not Var.\"\n ([ns sym]\n (ns-resolve env/*compiler* ns sym))\n ([state ns sym]\n {:pre [(symbol? ns) (symbol? sym)]}\n (get-in @state [::ana/namespaces ns :defs sym])))\n\n(defn remove-ns\n \"Removes the namespace named by the symbol.\"\n ([ns]\n (remove-ns env/*compiler* ns))\n ([state ns]\n {:pre [(symbol? ns)]}\n (swap! state update-in [::ana/namespaces] dissoc ns)))\n\n(defmacro in-cljs-user\n \"Binds cljs.analyzer/*cljs-ns* to 'cljs.user and uses the given compilation\n environment atom and runs body.\"\n [env & body]\n `(binding [cljs.analyzer/*cljs-ns* 'cljs.user]\n (cljs.env/with-compiler-env ~env\n ~@body)))\n"],"x_google_ignoreList":[0]}
|