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.
Files changed (282) hide show
  1. package/README.md +226 -0
  2. package/cljs.analyzer.api.js +427 -0
  3. package/cljs.analyzer.api.js.map +1 -0
  4. package/cljs.analyzer.impl.js +86 -0
  5. package/cljs.analyzer.impl.js.map +1 -0
  6. package/cljs.analyzer.impl.namespaces.js +219 -0
  7. package/cljs.analyzer.impl.namespaces.js.map +1 -0
  8. package/cljs.analyzer.js +7186 -0
  9. package/cljs.analyzer.js.map +1 -0
  10. package/cljs.analyzer.passes.and_or.js +141 -0
  11. package/cljs.analyzer.passes.and_or.js.map +1 -0
  12. package/cljs.analyzer.passes.js +104 -0
  13. package/cljs.analyzer.passes.js.map +1 -0
  14. package/cljs.cache.js +1145 -0
  15. package/cljs.cache.js.map +1 -0
  16. package/cljs.cache.wrapped.js +352 -0
  17. package/cljs.cache.wrapped.js.map +1 -0
  18. package/cljs.core.async.impl.buffers.js +489 -0
  19. package/cljs.core.async.impl.buffers.js.map +1 -0
  20. package/cljs.core.async.impl.channels.js +711 -0
  21. package/cljs.core.async.impl.channels.js.map +1 -0
  22. package/cljs.core.async.impl.dispatch.js +81 -0
  23. package/cljs.core.async.impl.dispatch.js.map +1 -0
  24. package/cljs.core.async.impl.ioc_helpers.js +192 -0
  25. package/cljs.core.async.impl.ioc_helpers.js.map +1 -0
  26. package/cljs.core.async.impl.protocols.js +368 -0
  27. package/cljs.core.async.impl.protocols.js.map +1 -0
  28. package/cljs.core.async.impl.timers.js +510 -0
  29. package/cljs.core.async.impl.timers.js.map +1 -0
  30. package/cljs.core.async.js +8813 -0
  31. package/cljs.core.async.js.map +1 -0
  32. package/cljs.core.js +38764 -0
  33. package/cljs.core.js.map +1 -0
  34. package/cljs.env.js +60 -0
  35. package/cljs.env.js.map +1 -0
  36. package/cljs.nodejs.js +80 -0
  37. package/cljs.nodejs.js.map +1 -0
  38. package/cljs.reader.js +462 -0
  39. package/cljs.reader.js.map +1 -0
  40. package/cljs.spec.alpha.js +5312 -0
  41. package/cljs.spec.alpha.js.map +1 -0
  42. package/cljs.spec.gen.alpha.js +2020 -0
  43. package/cljs.spec.gen.alpha.js.map +1 -0
  44. package/cljs.tagged_literals.js +103 -0
  45. package/cljs.tagged_literals.js.map +1 -0
  46. package/cljs.tools.reader.edn.js +960 -0
  47. package/cljs.tools.reader.edn.js.map +1 -0
  48. package/cljs.tools.reader.impl.commons.js +217 -0
  49. package/cljs.tools.reader.impl.commons.js.map +1 -0
  50. package/cljs.tools.reader.impl.errors.js +441 -0
  51. package/cljs.tools.reader.impl.errors.js.map +1 -0
  52. package/cljs.tools.reader.impl.inspect.js +182 -0
  53. package/cljs.tools.reader.impl.inspect.js.map +1 -0
  54. package/cljs.tools.reader.impl.utils.js +429 -0
  55. package/cljs.tools.reader.impl.utils.js.map +1 -0
  56. package/cljs.tools.reader.js +1830 -0
  57. package/cljs.tools.reader.js.map +1 -0
  58. package/cljs.tools.reader.reader_types.js +838 -0
  59. package/cljs.tools.reader.reader_types.js.map +1 -0
  60. package/cljs_env.js +18192 -0
  61. package/cljs_node_io.core.js +1278 -0
  62. package/cljs_node_io.core.js.map +1 -0
  63. package/cljs_node_io.file.js +918 -0
  64. package/cljs_node_io.file.js.map +1 -0
  65. package/cljs_node_io.fs.js +3911 -0
  66. package/cljs_node_io.fs.js.map +1 -0
  67. package/clojure.data.js +319 -0
  68. package/clojure.data.js.map +1 -0
  69. package/clojure.edn.js +119 -0
  70. package/clojure.edn.js.map +1 -0
  71. package/clojure.set.js +406 -0
  72. package/clojure.set.js.map +1 -0
  73. package/clojure.string.js +502 -0
  74. package/clojure.string.js.map +1 -0
  75. package/clojure.walk.js +156 -0
  76. package/clojure.walk.js.map +1 -0
  77. package/datahike.api.impl.js +621 -0
  78. package/datahike.api.impl.js.map +1 -0
  79. package/datahike.api.specification.js +85 -0
  80. package/datahike.api.specification.js.map +1 -0
  81. package/datahike.array.js +275 -0
  82. package/datahike.array.js.map +1 -0
  83. package/datahike.config.js +437 -0
  84. package/datahike.config.js.map +1 -0
  85. package/datahike.connections.js +55 -0
  86. package/datahike.connections.js.map +1 -0
  87. package/datahike.connector.js +1248 -0
  88. package/datahike.connector.js.map +1 -0
  89. package/datahike.constants.js +66 -0
  90. package/datahike.constants.js.map +1 -0
  91. package/datahike.core.js +628 -0
  92. package/datahike.core.js.map +1 -0
  93. package/datahike.datom.js +963 -0
  94. package/datahike.datom.js.map +1 -0
  95. package/datahike.db.interface.js +819 -0
  96. package/datahike.db.interface.js.map +1 -0
  97. package/datahike.db.js +3095 -0
  98. package/datahike.db.js.map +1 -0
  99. package/datahike.db.search.js +1004 -0
  100. package/datahike.db.search.js.map +1 -0
  101. package/datahike.db.transaction.js +1904 -0
  102. package/datahike.db.transaction.js.map +1 -0
  103. package/datahike.db.utils.js +642 -0
  104. package/datahike.db.utils.js.map +1 -0
  105. package/datahike.gc.js +1618 -0
  106. package/datahike.gc.js.map +1 -0
  107. package/datahike.impl.entity.js +604 -0
  108. package/datahike.impl.entity.js.map +1 -0
  109. package/datahike.index.interface.js +484 -0
  110. package/datahike.index.interface.js.map +1 -0
  111. package/datahike.index.js +50 -0
  112. package/datahike.index.js.map +1 -0
  113. package/datahike.index.persistent_set.js +1250 -0
  114. package/datahike.index.persistent_set.js.map +1 -0
  115. package/datahike.js.api.js +2211 -0
  116. package/datahike.js.api.js.map +1 -0
  117. package/datahike.lru.js +404 -0
  118. package/datahike.lru.js.map +1 -0
  119. package/datahike.pull_api.js +533 -0
  120. package/datahike.pull_api.js.map +1 -0
  121. package/datahike.query.js +11891 -0
  122. package/datahike.query.js.map +1 -0
  123. package/datahike.query_stats.js +152 -0
  124. package/datahike.query_stats.js.map +1 -0
  125. package/datahike.readers.js +166 -0
  126. package/datahike.readers.js.map +1 -0
  127. package/datahike.schema.js +251 -0
  128. package/datahike.schema.js.map +1 -0
  129. package/datahike.schema_cache.js +66 -0
  130. package/datahike.schema_cache.js.map +1 -0
  131. package/datahike.spec.js +70 -0
  132. package/datahike.spec.js.map +1 -0
  133. package/datahike.store.js +514 -0
  134. package/datahike.store.js.map +1 -0
  135. package/datahike.tools.js +436 -0
  136. package/datahike.tools.js.map +1 -0
  137. package/datahike.writer.js +3463 -0
  138. package/datahike.writer.js.map +1 -0
  139. package/datahike.writing.js +3168 -0
  140. package/datahike.writing.js.map +1 -0
  141. package/datalog.parser.impl.js +1421 -0
  142. package/datalog.parser.impl.js.map +1 -0
  143. package/datalog.parser.impl.proto.js +213 -0
  144. package/datalog.parser.impl.proto.js.map +1 -0
  145. package/datalog.parser.impl.util.js +117 -0
  146. package/datalog.parser.impl.util.js.map +1 -0
  147. package/datalog.parser.js +47 -0
  148. package/datalog.parser.js.map +1 -0
  149. package/datalog.parser.pull.js +2603 -0
  150. package/datalog.parser.pull.js.map +1 -0
  151. package/datalog.parser.type.js +7502 -0
  152. package/datalog.parser.type.js.map +1 -0
  153. package/datalog.parser.util.js +60 -0
  154. package/datalog.parser.util.js.map +1 -0
  155. package/environ.core.js +263 -0
  156. package/environ.core.js.map +1 -0
  157. package/fress.api.js +607 -0
  158. package/fress.api.js.map +1 -0
  159. package/fress.impl.adler32.js +435 -0
  160. package/fress.impl.adler32.js.map +1 -0
  161. package/fress.impl.bigint.js +185 -0
  162. package/fress.impl.bigint.js.map +1 -0
  163. package/fress.impl.buffer.js +1087 -0
  164. package/fress.impl.buffer.js.map +1 -0
  165. package/fress.impl.codes.js +105 -0
  166. package/fress.impl.codes.js.map +1 -0
  167. package/fress.impl.hopmap.js +603 -0
  168. package/fress.impl.hopmap.js.map +1 -0
  169. package/fress.impl.ranges.js +49 -0
  170. package/fress.impl.ranges.js.map +1 -0
  171. package/fress.impl.raw_input.js +837 -0
  172. package/fress.impl.raw_input.js.map +1 -0
  173. package/fress.impl.raw_output.js +653 -0
  174. package/fress.impl.raw_output.js.map +1 -0
  175. package/fress.impl.table.js +133 -0
  176. package/fress.impl.table.js.map +1 -0
  177. package/fress.reader.js +2312 -0
  178. package/fress.reader.js.map +1 -0
  179. package/fress.util.js +458 -0
  180. package/fress.util.js.map +1 -0
  181. package/fress.writer.js +2141 -0
  182. package/fress.writer.js.map +1 -0
  183. package/geheimnis.aes.js +132 -0
  184. package/geheimnis.aes.js.map +1 -0
  185. package/hasch.base64.js +42 -0
  186. package/hasch.base64.js.map +1 -0
  187. package/hasch.benc.js +201 -0
  188. package/hasch.benc.js.map +1 -0
  189. package/hasch.core.js +188 -0
  190. package/hasch.core.js.map +1 -0
  191. package/hasch.platform.js +221 -0
  192. package/hasch.platform.js.map +1 -0
  193. package/incognito.base.js +276 -0
  194. package/incognito.base.js.map +1 -0
  195. package/incognito.edn.js +54 -0
  196. package/incognito.edn.js.map +1 -0
  197. package/incognito.fressian.js +330 -0
  198. package/incognito.fressian.js.map +1 -0
  199. package/index.d.ts +660 -0
  200. package/is.simm.partial_cps.async.js +142 -0
  201. package/is.simm.partial_cps.async.js.map +1 -0
  202. package/is.simm.partial_cps.runtime.js +65 -0
  203. package/is.simm.partial_cps.runtime.js.map +1 -0
  204. package/is.simm.partial_cps.sequence.js +1255 -0
  205. package/is.simm.partial_cps.sequence.js.map +1 -0
  206. package/konserve.cache.js +2519 -0
  207. package/konserve.cache.js.map +1 -0
  208. package/konserve.compressor.js +502 -0
  209. package/konserve.compressor.js.map +1 -0
  210. package/konserve.core.js +8052 -0
  211. package/konserve.core.js.map +1 -0
  212. package/konserve.encryptor.js +553 -0
  213. package/konserve.encryptor.js.map +1 -0
  214. package/konserve.gc.js +541 -0
  215. package/konserve.gc.js.map +1 -0
  216. package/konserve.impl.defaults.js +8290 -0
  217. package/konserve.impl.defaults.js.map +1 -0
  218. package/konserve.impl.storage_layout.js +849 -0
  219. package/konserve.impl.storage_layout.js.map +1 -0
  220. package/konserve.memory.js +2102 -0
  221. package/konserve.memory.js.map +1 -0
  222. package/konserve.node_filestore.js +2951 -0
  223. package/konserve.node_filestore.js.map +1 -0
  224. package/konserve.protocols.js +590 -0
  225. package/konserve.protocols.js.map +1 -0
  226. package/konserve.serializers.js +562 -0
  227. package/konserve.serializers.js.map +1 -0
  228. package/konserve.store.js +2245 -0
  229. package/konserve.store.js.map +1 -0
  230. package/konserve.tiered.js +9574 -0
  231. package/konserve.tiered.js.map +1 -0
  232. package/konserve.utils.js +180 -0
  233. package/konserve.utils.js.map +1 -0
  234. package/me.tonsky.persistent_sorted_set.arrays.js +66 -0
  235. package/me.tonsky.persistent_sorted_set.arrays.js.map +1 -0
  236. package/me.tonsky.persistent_sorted_set.branch.js +2779 -0
  237. package/me.tonsky.persistent_sorted_set.branch.js.map +1 -0
  238. package/me.tonsky.persistent_sorted_set.btset.js +14196 -0
  239. package/me.tonsky.persistent_sorted_set.btset.js.map +1 -0
  240. package/me.tonsky.persistent_sorted_set.impl.node.js +324 -0
  241. package/me.tonsky.persistent_sorted_set.impl.node.js.map +1 -0
  242. package/me.tonsky.persistent_sorted_set.impl.storage.js +123 -0
  243. package/me.tonsky.persistent_sorted_set.impl.storage.js.map +1 -0
  244. package/me.tonsky.persistent_sorted_set.js +890 -0
  245. package/me.tonsky.persistent_sorted_set.js.map +1 -0
  246. package/me.tonsky.persistent_sorted_set.leaf.js +561 -0
  247. package/me.tonsky.persistent_sorted_set.leaf.js.map +1 -0
  248. package/me.tonsky.persistent_sorted_set.util.js +402 -0
  249. package/me.tonsky.persistent_sorted_set.util.js.map +1 -0
  250. package/medley.core.js +1857 -0
  251. package/medley.core.js.map +1 -0
  252. package/package.json +38 -0
  253. package/spec_tools.core.js +1925 -0
  254. package/spec_tools.core.js.map +1 -0
  255. package/spec_tools.data_spec.js +1291 -0
  256. package/spec_tools.data_spec.js.map +1 -0
  257. package/spec_tools.form.js +185 -0
  258. package/spec_tools.form.js.map +1 -0
  259. package/spec_tools.impl.js +362 -0
  260. package/spec_tools.impl.js.map +1 -0
  261. package/spec_tools.parse.js +427 -0
  262. package/spec_tools.parse.js.map +1 -0
  263. package/spec_tools.transform.js +288 -0
  264. package/spec_tools.transform.js.map +1 -0
  265. package/superv.async.js +8617 -0
  266. package/superv.async.js.map +1 -0
  267. package/tailrecursion.priority_map.js +994 -0
  268. package/tailrecursion.priority_map.js.map +1 -0
  269. package/taoensso.encore.js +12385 -0
  270. package/taoensso.encore.js.map +1 -0
  271. package/taoensso.timbre.appenders.core.js +239 -0
  272. package/taoensso.timbre.appenders.core.js.map +1 -0
  273. package/taoensso.timbre.js +1264 -0
  274. package/taoensso.timbre.js.map +1 -0
  275. package/taoensso.truss.impl.js +442 -0
  276. package/taoensso.truss.impl.js.map +1 -0
  277. package/taoensso.truss.js +743 -0
  278. package/taoensso.truss.js.map +1 -0
  279. package/test-config-keys.js +33 -0
  280. package/test-final.js +36 -0
  281. package/test-key-duplication.js +67 -0
  282. 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]}