@anysoftinc/anydb-sdk 0.3.0 → 0.4.0

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 (42) hide show
  1. package/README.md +13 -0
  2. package/dist/anydb.datascript.core.js +336 -0
  3. package/dist/anydb.datascript.rules.js +29 -0
  4. package/dist/anydb.datascript.schema.js +35 -0
  5. package/dist/client.d.ts +1 -0
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +59 -0
  8. package/dist/cljs.core.js +38752 -0
  9. package/dist/cljs.reader.js +450 -0
  10. package/dist/cljs.tools.reader.edn.js +945 -0
  11. package/dist/cljs.tools.reader.impl.commons.js +205 -0
  12. package/dist/cljs.tools.reader.impl.errors.js +429 -0
  13. package/dist/cljs.tools.reader.impl.inspect.js +170 -0
  14. package/dist/cljs.tools.reader.impl.utils.js +413 -0
  15. package/dist/cljs.tools.reader.js +1815 -0
  16. package/dist/cljs.tools.reader.reader_types.js +826 -0
  17. package/dist/cljs_env.js +7672 -0
  18. package/dist/clojure.data.js +307 -0
  19. package/dist/clojure.edn.js +107 -0
  20. package/dist/clojure.set.js +394 -0
  21. package/dist/clojure.string.js +490 -0
  22. package/dist/clojure.walk.js +144 -0
  23. package/dist/datascript-backend.js +2 -2
  24. package/dist/datascript.built_ins.js +680 -0
  25. package/dist/datascript.conn.js +814 -0
  26. package/dist/datascript.core.js +1285 -0
  27. package/dist/datascript.db.js +4058 -0
  28. package/dist/datascript.impl.entity.js +588 -0
  29. package/dist/datascript.lru.js +213 -0
  30. package/dist/datascript.parser.js +8598 -0
  31. package/dist/datascript.pull_api.js +2287 -0
  32. package/dist/datascript.pull_parser.js +865 -0
  33. package/dist/datascript.query.js +2785 -0
  34. package/dist/datascript.serialize.js +352 -0
  35. package/dist/datascript.storage.js +50 -0
  36. package/dist/datascript.util.js +82 -0
  37. package/dist/extend_clj.core.js +134 -0
  38. package/dist/me.tonsky.persistent_sorted_set.arrays.js +54 -0
  39. package/dist/me.tonsky.persistent_sorted_set.js +2485 -0
  40. package/dist/nextauth-adapter.d.ts.map +1 -1
  41. package/dist/nextauth-adapter.js +8 -11
  42. package/package.json +5 -4
package/README.md CHANGED
@@ -115,6 +115,19 @@ SchemaBuilder and DatomicUtils have been removed in v2. Use plain tx maps with k
115
115
 
116
116
  Utility helpers for tempids and entity builders were removed in v2.
117
117
 
118
+ ### Idempotent Schema Install
119
+
120
+ Use `ensureAttributes(db, schemaEntities)` to install attribute idents exactly once per database alias. It checks which idents already exist and only transacts the missing ones.
121
+
122
+ ```ts
123
+ import { ensureAttributes, kw } from "@anysoftinc/anydb-sdk";
124
+
125
+ await ensureAttributes(db, [
126
+ { "db/ident": kw("person/name"), "db/valueType": kw("db.type/string"), "db/cardinality": kw("db.cardinality/one") },
127
+ { "db/ident": kw("person/age"), "db/valueType": kw("db.type/long"), "db/cardinality": kw("db.cardinality/one") },
128
+ ]);
129
+ ```
130
+
118
131
  ## Advanced Features
119
132
 
120
133
  ### EDN Data Types
@@ -0,0 +1,336 @@
1
+ var $CLJS = require("./cljs_env");
2
+ var $jscomp = $CLJS.$jscomp;
3
+ var COMPILED = false;
4
+ require("./cljs.core.js");
5
+ require("./datascript.core.js");
6
+ require("./clojure.edn.js");
7
+ require("./clojure.string.js");
8
+ require("./anydb.datascript.schema.js");
9
+ require("./anydb.datascript.rules.js");
10
+ var anydb=$CLJS.anydb || ($CLJS.anydb = {});
11
+ var clojure=$CLJS.clojure || ($CLJS.clojure = {});
12
+ var cljs=$CLJS.cljs || ($CLJS.cljs = {});
13
+ var goog=$CLJS.goog || ($CLJS.goog = {});
14
+ var datascript=$CLJS.datascript || ($CLJS.datascript = {});
15
+ var me=$CLJS.me || ($CLJS.me = {});
16
+ var extend_clj=$CLJS.extend_clj || ($CLJS.extend_clj = {});
17
+
18
+ $CLJS.SHADOW_ENV.setLoaded("anydb.datascript.core.js");
19
+
20
+ goog.provide('anydb.datascript.core');
21
+ if((typeof anydb !== 'undefined') && (typeof anydb.datascript !== 'undefined') && (typeof anydb.datascript.core !== 'undefined') && (typeof anydb.datascript.core.db_registry !== 'undefined')){
22
+ } else {
23
+ anydb.datascript.core.db_registry = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);
24
+ }
25
+ anydb.datascript.core.schema_attributes = new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 9, [new cljs.core.Keyword("db","index","db/index",-1531680669),null,new cljs.core.Keyword("db","unique","db/unique",329396388),null,new cljs.core.Keyword("db","valueType","db/valueType",1827971944),null,new cljs.core.Keyword("db","noHistory","db/noHistory",-1975127444),null,new cljs.core.Keyword("db","isComponent","db/isComponent",423352398),null,new cljs.core.Keyword("db","fulltext","db/fulltext",-1432910705),null,new cljs.core.Keyword("db","cardinality","db/cardinality",-104975659),null,new cljs.core.Keyword("db","doc","db/doc",1913350069),null,new cljs.core.Keyword("db","ident","db/ident",-737096),null], null), null);
26
+ /**
27
+ * Detect if a transaction contains schema attribute changes
28
+ */
29
+ anydb.datascript.core.detect_schema_changes = (function anydb$datascript$core$detect_schema_changes(tx_data){
30
+ return cljs.core.some((function (datom_or_map){
31
+ var attrs = ((cljs.core.map_QMARK_(datom_or_map))?cljs.core.keys(datom_or_map):new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"a","a",-2123407586).cljs$core$IFn$_invoke$arity$1(datom_or_map)], null));
32
+ return cljs.core.some(anydb.datascript.core.schema_attributes,attrs);
33
+ }),tx_data);
34
+ });
35
+ /**
36
+ * Extract schema map from current database for recreation
37
+ */
38
+ anydb.datascript.core.extract_schema_from_db = (function anydb$datascript$core$extract_schema_from_db(db){
39
+ var schema_datoms = datascript.core.datoms.cljs$core$IFn$_invoke$arity$2(db,new cljs.core.Keyword(null,"aevt","aevt",-585148059));
40
+ return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (attr_map){
41
+ return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db","ident","db/ident",-737096).cljs$core$IFn$_invoke$arity$1(attr_map),cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(attr_map,new cljs.core.Keyword("db","ident","db/ident",-737096))], null);
42
+ }),cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (p1__15283_SHARP_){
43
+ return cljs.core.contains_QMARK_(p1__15283_SHARP_,new cljs.core.Keyword("db","ident","db/ident",-737096));
44
+ }),cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p__15284){
45
+ var vec__15285 = p__15284;
46
+ var _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__15285,(0),null);
47
+ var datoms = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__15285,(1),null);
48
+ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (acc,p__15288){
49
+ var map__15289 = p__15288;
50
+ var map__15289__$1 = cljs.core.__destructure_map(map__15289);
51
+ var a = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__15289__$1,new cljs.core.Keyword(null,"a","a",-2123407586));
52
+ var v = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__15289__$1,new cljs.core.Keyword(null,"v","v",21465059));
53
+ return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(acc,a,v);
54
+ }),cljs.core.PersistentArrayMap.EMPTY,datoms);
55
+ }),cljs.core.group_by(new cljs.core.Keyword(null,"e","e",1381269198),cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (p1__15282_SHARP_){
56
+ var G__15290 = new cljs.core.Keyword(null,"a","a",-2123407586).cljs$core$IFn$_invoke$arity$1(p1__15282_SHARP_);
57
+ return (anydb.datascript.core.schema_attributes.cljs$core$IFn$_invoke$arity$1 ? anydb.datascript.core.schema_attributes.cljs$core$IFn$_invoke$arity$1(G__15290) : anydb.datascript.core.schema_attributes.call(null,G__15290));
58
+ }),schema_datoms))))));
59
+ });
60
+ /**
61
+ * Check for schema changes and recreate connection if needed
62
+ */
63
+ anydb.datascript.core.migrate_schema_if_needed = (function anydb$datascript$core$migrate_schema_if_needed(db_alias,conn,tx_data){
64
+ if(cljs.core.truth_(anydb.datascript.core.detect_schema_changes(tx_data))){
65
+ var old_db = datascript.core.db(conn);
66
+ var old_schema = anydb.datascript.core.extract_schema_from_db(old_db);
67
+ var all_datoms = cljs.core.vec(datascript.core.datoms.cljs$core$IFn$_invoke$arity$2(old_db,new cljs.core.Keyword(null,"eavt","eavt",-666437073)));
68
+ var temp_conn = (datascript.core.create_conn.cljs$core$IFn$_invoke$arity$1 ? datascript.core.create_conn.cljs$core$IFn$_invoke$arity$1(old_schema) : datascript.core.create_conn.call(null,old_schema));
69
+ var _ = (datascript.core.transact_BANG_.cljs$core$IFn$_invoke$arity$2 ? datascript.core.transact_BANG_.cljs$core$IFn$_invoke$arity$2(temp_conn,tx_data) : datascript.core.transact_BANG_.call(null,temp_conn,tx_data));
70
+ var new_schema = anydb.datascript.core.extract_schema_from_db(datascript.core.db(temp_conn));
71
+ var new_conn = (datascript.core.create_conn.cljs$core$IFn$_invoke$arity$1 ? datascript.core.create_conn.cljs$core$IFn$_invoke$arity$1(new_schema) : datascript.core.create_conn.call(null,new_schema));
72
+ var non_schema_datoms_15309 = cljs.core.remove.cljs$core$IFn$_invoke$arity$2((function (p1__15291_SHARP_){
73
+ var G__15292 = new cljs.core.Keyword(null,"a","a",-2123407586).cljs$core$IFn$_invoke$arity$1(p1__15291_SHARP_);
74
+ return (anydb.datascript.core.schema_attributes.cljs$core$IFn$_invoke$arity$1 ? anydb.datascript.core.schema_attributes.cljs$core$IFn$_invoke$arity$1(G__15292) : anydb.datascript.core.schema_attributes.call(null,G__15292));
75
+ }),all_datoms);
76
+ if(cljs.core.seq(non_schema_datoms_15309)){
77
+ var G__15293_15310 = new_conn;
78
+ var G__15294_15311 = cljs.core.mapv.cljs$core$IFn$_invoke$arity$2((function (p__15295){
79
+ var map__15296 = p__15295;
80
+ var map__15296__$1 = cljs.core.__destructure_map(map__15296);
81
+ var e = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__15296__$1,new cljs.core.Keyword(null,"e","e",1381269198));
82
+ var a = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__15296__$1,new cljs.core.Keyword(null,"a","a",-2123407586));
83
+ var v = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__15296__$1,new cljs.core.Keyword(null,"v","v",21465059));
84
+ return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("db","add","db/add",235286841),e,a,v], null);
85
+ }),non_schema_datoms_15309);
86
+ (datascript.core.transact_BANG_.cljs$core$IFn$_invoke$arity$2 ? datascript.core.transact_BANG_.cljs$core$IFn$_invoke$arity$2(G__15293_15310,G__15294_15311) : datascript.core.transact_BANG_.call(null,G__15293_15310,G__15294_15311));
87
+ } else {
88
+ }
89
+
90
+ (datascript.core.transact_BANG_.cljs$core$IFn$_invoke$arity$2 ? datascript.core.transact_BANG_.cljs$core$IFn$_invoke$arity$2(new_conn,tx_data) : datascript.core.transact_BANG_.call(null,new_conn,tx_data));
91
+
92
+ cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(anydb.datascript.core.db_registry,cljs.core.assoc,db_alias,new_conn);
93
+
94
+ return new_conn;
95
+ } else {
96
+ (datascript.core.transact_BANG_.cljs$core$IFn$_invoke$arity$2 ? datascript.core.transact_BANG_.cljs$core$IFn$_invoke$arity$2(conn,tx_data) : datascript.core.transact_BANG_.call(null,conn,tx_data));
97
+
98
+ return conn;
99
+ }
100
+ });
101
+ /**
102
+ * Get or create a DataScript connection for a database alias
103
+ */
104
+ anydb.datascript.core.get_or_create_conn = (function anydb$datascript$core$get_or_create_conn(db_alias){
105
+ var or__5002__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(anydb.datascript.core.db_registry),db_alias);
106
+ if(cljs.core.truth_(or__5002__auto__)){
107
+ return or__5002__auto__;
108
+ } else {
109
+ var initial_schema = anydb.datascript.schema.get_initial_schema();
110
+ var conn = (datascript.core.create_conn.cljs$core$IFn$_invoke$arity$1 ? datascript.core.create_conn.cljs$core$IFn$_invoke$arity$1(initial_schema) : datascript.core.create_conn.call(null,initial_schema));
111
+ cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(anydb.datascript.core.db_registry,cljs.core.assoc,db_alias,conn);
112
+
113
+ return conn;
114
+ }
115
+ });
116
+ /**
117
+ * List all currently active DataScript databases
118
+ */
119
+ anydb.datascript.core.list_databases = (function anydb$datascript$core$list_databases(){
120
+ return cljs.core.vec(cljs.core.keys(cljs.core.deref(anydb.datascript.core.db_registry)));
121
+ });
122
+ /**
123
+ * Delete a DataScript database (remove from registry)
124
+ */
125
+ anydb.datascript.core.delete_database = (function anydb$datascript$core$delete_database(db_alias){
126
+ if(cljs.core.contains_QMARK_(cljs.core.deref(anydb.datascript.core.db_registry),db_alias)){
127
+ cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3(anydb.datascript.core.db_registry,cljs.core.dissoc,db_alias);
128
+
129
+ return new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"db-deleted","db-deleted",1500904071),db_alias], null);
130
+ } else {
131
+ return null;
132
+ }
133
+ });
134
+ /**
135
+ * Execute transaction on DataScript database with schema migration
136
+ */
137
+ anydb.datascript.core.transact = (function anydb$datascript$core$transact(db_alias,tx_data){
138
+ var conn = anydb.datascript.core.get_or_create_conn(db_alias);
139
+ var old_db = datascript.core.db(conn);
140
+ var updated_conn = anydb.datascript.core.migrate_schema_if_needed(db_alias,conn,tx_data);
141
+ var new_db = datascript.core.db(updated_conn);
142
+ var tx_report = cljs.core.deref(datascript.core.transact.cljs$core$IFn$_invoke$arity$2(updated_conn,cljs.core.PersistentVector.EMPTY));
143
+ return new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"db-before","db-before",-553691536),old_db,new cljs.core.Keyword(null,"db-after","db-after",-571884666),new_db,new cljs.core.Keyword(null,"tx-data","tx-data",934159761),new cljs.core.Keyword(null,"tx-data","tx-data",934159761).cljs$core$IFn$_invoke$arity$1(tx_report),new cljs.core.Keyword(null,"tempids","tempids",1767509089),new cljs.core.Keyword(null,"tempids","tempids",1767509089).cljs$core$IFn$_invoke$arity$1(tx_report)], null);
144
+ });
145
+ /**
146
+ * Execute Datalog query on DataScript database
147
+ */
148
+ anydb.datascript.core.query = (function anydb$datascript$core$query(var_args){
149
+ var args__5732__auto__ = [];
150
+ var len__5726__auto___15312 = arguments.length;
151
+ var i__5727__auto___15313 = (0);
152
+ while(true){
153
+ if((i__5727__auto___15313 < len__5726__auto___15312)){
154
+ args__5732__auto__.push((arguments[i__5727__auto___15313]));
155
+
156
+ var G__15314 = (i__5727__auto___15313 + (1));
157
+ i__5727__auto___15313 = G__15314;
158
+ continue;
159
+ } else {
160
+ }
161
+ break;
162
+ }
163
+
164
+ var argseq__5733__auto__ = ((((2) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((2)),(0),null)):null);
165
+ return anydb.datascript.core.query.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__5733__auto__);
166
+ });
167
+
168
+ (anydb.datascript.core.query.cljs$core$IFn$_invoke$arity$variadic = (function (q,db_alias,args){
169
+ var conn = anydb.datascript.core.get_or_create_conn(db_alias);
170
+ var db = datascript.core.db(conn);
171
+ return cljs.core.apply.cljs$core$IFn$_invoke$arity$4(datascript.core.q,q,db,args);
172
+ }));
173
+
174
+ (anydb.datascript.core.query.cljs$lang$maxFixedArity = (2));
175
+
176
+ /** @this {Function} */
177
+ (anydb.datascript.core.query.cljs$lang$applyTo = (function (seq15297){
178
+ var G__15298 = cljs.core.first(seq15297);
179
+ var seq15297__$1 = cljs.core.next(seq15297);
180
+ var G__15299 = cljs.core.first(seq15297__$1);
181
+ var seq15297__$2 = cljs.core.next(seq15297__$1);
182
+ var self__5711__auto__ = this;
183
+ return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__15298,G__15299,seq15297__$2);
184
+ }));
185
+
186
+ /**
187
+ * Get entity by ID from DataScript database
188
+ */
189
+ anydb.datascript.core.entity = (function anydb$datascript$core$entity(db_alias,entity_id){
190
+ var conn = anydb.datascript.core.get_or_create_conn(db_alias);
191
+ var db = datascript.core.db(conn);
192
+ return (datascript.core.entity.cljs$core$IFn$_invoke$arity$2 ? datascript.core.entity.cljs$core$IFn$_invoke$arity$2(db,entity_id) : datascript.core.entity.call(null,db,entity_id));
193
+ });
194
+ /**
195
+ * Get datoms from DataScript database
196
+ */
197
+ anydb.datascript.core.datoms = (function anydb$datascript$core$datoms(var_args){
198
+ var args__5732__auto__ = [];
199
+ var len__5726__auto___15315 = arguments.length;
200
+ var i__5727__auto___15316 = (0);
201
+ while(true){
202
+ if((i__5727__auto___15316 < len__5726__auto___15315)){
203
+ args__5732__auto__.push((arguments[i__5727__auto___15316]));
204
+
205
+ var G__15317 = (i__5727__auto___15316 + (1));
206
+ i__5727__auto___15316 = G__15317;
207
+ continue;
208
+ } else {
209
+ }
210
+ break;
211
+ }
212
+
213
+ var argseq__5733__auto__ = ((((2) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((2)),(0),null)):null);
214
+ return anydb.datascript.core.datoms.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__5733__auto__);
215
+ });
216
+
217
+ (anydb.datascript.core.datoms.cljs$core$IFn$_invoke$arity$variadic = (function (db_alias,index,components){
218
+ var conn = anydb.datascript.core.get_or_create_conn(db_alias);
219
+ var db = datascript.core.db(conn);
220
+ return cljs.core.apply.cljs$core$IFn$_invoke$arity$4(datascript.core.datoms,db,index,components);
221
+ }));
222
+
223
+ (anydb.datascript.core.datoms.cljs$lang$maxFixedArity = (2));
224
+
225
+ /** @this {Function} */
226
+ (anydb.datascript.core.datoms.cljs$lang$applyTo = (function (seq15300){
227
+ var G__15301 = cljs.core.first(seq15300);
228
+ var seq15300__$1 = cljs.core.next(seq15300);
229
+ var G__15302 = cljs.core.first(seq15300__$1);
230
+ var seq15300__$2 = cljs.core.next(seq15300__$1);
231
+ var self__5711__auto__ = this;
232
+ return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__15301,G__15302,seq15300__$2);
233
+ }));
234
+
235
+ anydb.datascript.core.createDatabase = (function anydb$datascript$core$createDatabase(db_alias){
236
+ anydb.datascript.core.get_or_create_conn(db_alias);
237
+
238
+ return new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"db-created","db-created",1312908662),db_alias], null);
239
+ });
240
+ anydb.datascript.core.listDatabases = (function anydb$datascript$core$listDatabases(){
241
+ return cljs.core.clj__GT_js(anydb.datascript.core.list_databases());
242
+ });
243
+ anydb.datascript.core.deleteDatabase = (function anydb$datascript$core$deleteDatabase(db_alias){
244
+ return cljs.core.clj__GT_js(anydb.datascript.core.delete_database(db_alias));
245
+ });
246
+ anydb.datascript.core.transactData = (function anydb$datascript$core$transactData(db_alias,tx_data_edn){
247
+ var tx_data = clojure.edn.read_string.cljs$core$IFn$_invoke$arity$1(tx_data_edn);
248
+ return cljs.core.clj__GT_js(anydb.datascript.core.transact(db_alias,tx_data));
249
+ });
250
+ anydb.datascript.core.queryData = (function anydb$datascript$core$queryData(var_args){
251
+ var args__5732__auto__ = [];
252
+ var len__5726__auto___15318 = arguments.length;
253
+ var i__5727__auto___15319 = (0);
254
+ while(true){
255
+ if((i__5727__auto___15319 < len__5726__auto___15318)){
256
+ args__5732__auto__.push((arguments[i__5727__auto___15319]));
257
+
258
+ var G__15320 = (i__5727__auto___15319 + (1));
259
+ i__5727__auto___15319 = G__15320;
260
+ continue;
261
+ } else {
262
+ }
263
+ break;
264
+ }
265
+
266
+ var argseq__5733__auto__ = ((((2) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((2)),(0),null)):null);
267
+ return anydb.datascript.core.queryData.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__5733__auto__);
268
+ });
269
+ goog.exportSymbol('anydb.datascript.core.queryData', anydb.datascript.core.queryData);
270
+
271
+ (anydb.datascript.core.queryData.cljs$core$IFn$_invoke$arity$variadic = (function (q_edn,db_alias,args_edn){
272
+ var q = clojure.edn.read_string.cljs$core$IFn$_invoke$arity$1(q_edn);
273
+ var args = cljs.core.map.cljs$core$IFn$_invoke$arity$2(clojure.edn.read_string,args_edn);
274
+ return cljs.core.clj__GT_js(cljs.core.apply.cljs$core$IFn$_invoke$arity$4(anydb.datascript.core.query,q,db_alias,args));
275
+ }));
276
+
277
+ (anydb.datascript.core.queryData.cljs$lang$maxFixedArity = (2));
278
+
279
+ /** @this {Function} */
280
+ (anydb.datascript.core.queryData.cljs$lang$applyTo = (function (seq15303){
281
+ var G__15304 = cljs.core.first(seq15303);
282
+ var seq15303__$1 = cljs.core.next(seq15303);
283
+ var G__15305 = cljs.core.first(seq15303__$1);
284
+ var seq15303__$2 = cljs.core.next(seq15303__$1);
285
+ var self__5711__auto__ = this;
286
+ return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__15304,G__15305,seq15303__$2);
287
+ }));
288
+
289
+ anydb.datascript.core.getEntity = (function anydb$datascript$core$getEntity(db_alias,entity_id){
290
+ return cljs.core.clj__GT_js(anydb.datascript.core.entity(db_alias,entity_id));
291
+ });
292
+ anydb.datascript.core.getDatoms = (function anydb$datascript$core$getDatoms(var_args){
293
+ var args__5732__auto__ = [];
294
+ var len__5726__auto___15321 = arguments.length;
295
+ var i__5727__auto___15322 = (0);
296
+ while(true){
297
+ if((i__5727__auto___15322 < len__5726__auto___15321)){
298
+ args__5732__auto__.push((arguments[i__5727__auto___15322]));
299
+
300
+ var G__15323 = (i__5727__auto___15322 + (1));
301
+ i__5727__auto___15322 = G__15323;
302
+ continue;
303
+ } else {
304
+ }
305
+ break;
306
+ }
307
+
308
+ var argseq__5733__auto__ = ((((2) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((2)),(0),null)):null);
309
+ return anydb.datascript.core.getDatoms.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__5733__auto__);
310
+ });
311
+ goog.exportSymbol('anydb.datascript.core.getDatoms', anydb.datascript.core.getDatoms);
312
+
313
+ (anydb.datascript.core.getDatoms.cljs$core$IFn$_invoke$arity$variadic = (function (db_alias,index,components){
314
+ return cljs.core.clj__GT_js(cljs.core.apply.cljs$core$IFn$_invoke$arity$4(anydb.datascript.core.datoms,db_alias,cljs.core.keyword.cljs$core$IFn$_invoke$arity$1(index),components));
315
+ }));
316
+
317
+ (anydb.datascript.core.getDatoms.cljs$lang$maxFixedArity = (2));
318
+
319
+ /** @this {Function} */
320
+ (anydb.datascript.core.getDatoms.cljs$lang$applyTo = (function (seq15306){
321
+ var G__15307 = cljs.core.first(seq15306);
322
+ var seq15306__$1 = cljs.core.next(seq15306);
323
+ var G__15308 = cljs.core.first(seq15306__$1);
324
+ var seq15306__$2 = cljs.core.next(seq15306__$1);
325
+ var self__5711__auto__ = this;
326
+ return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__15307,G__15308,seq15306__$2);
327
+ }));
328
+
329
+ Object.defineProperty(module.exports, "createDatabase", { enumerable: true, get: function() { return anydb.datascript.core.createDatabase; } });
330
+ Object.defineProperty(module.exports, "listDatabases", { enumerable: true, get: function() { return anydb.datascript.core.listDatabases; } });
331
+ Object.defineProperty(module.exports, "deleteDatabase", { enumerable: true, get: function() { return anydb.datascript.core.deleteDatabase; } });
332
+ Object.defineProperty(module.exports, "transactData", { enumerable: true, get: function() { return anydb.datascript.core.transactData; } });
333
+ Object.defineProperty(module.exports, "queryData", { enumerable: true, get: function() { return anydb.datascript.core.queryData; } });
334
+ Object.defineProperty(module.exports, "getEntity", { enumerable: true, get: function() { return anydb.datascript.core.getEntity; } });
335
+ Object.defineProperty(module.exports, "getDatoms", { enumerable: true, get: function() { return anydb.datascript.core.getDatoms; } });
336
+ //# sourceMappingURL=anydb.datascript.core.js.map
@@ -0,0 +1,29 @@
1
+ var $CLJS = require("./cljs_env");
2
+ var $jscomp = $CLJS.$jscomp;
3
+ var COMPILED = false;
4
+ require("./cljs.core.js");
5
+ var anydb=$CLJS.anydb || ($CLJS.anydb = {});
6
+ var clojure=$CLJS.clojure || ($CLJS.clojure = {});
7
+ var cljs=$CLJS.cljs || ($CLJS.cljs = {});
8
+ var goog=$CLJS.goog || ($CLJS.goog = {});
9
+ var datascript=$CLJS.datascript || ($CLJS.datascript = {});
10
+ var me=$CLJS.me || ($CLJS.me = {});
11
+ var extend_clj=$CLJS.extend_clj || ($CLJS.extend_clj = {});
12
+
13
+ $CLJS.SHADOW_ENV.setLoaded("anydb.datascript.rules.js");
14
+
15
+ goog.provide('anydb.datascript.rules');
16
+ /**
17
+ * Create ABAC filter - for now just allow everything for development
18
+ */
19
+ anydb.datascript.rules.make_abac_filter = (function anydb$datascript$rules$make_abac_filter(db,subject,action){
20
+ return cljs.core.constantly(true);
21
+ });
22
+ /**
23
+ * Find policies - placeholder for development
24
+ */
25
+ anydb.datascript.rules.find_policies = (function anydb$datascript$rules$find_policies(db,subject,action){
26
+ return cljs.core.PersistentVector.EMPTY;
27
+ });
28
+
29
+ //# sourceMappingURL=anydb.datascript.rules.js.map
@@ -0,0 +1,35 @@
1
+ var $CLJS = require("./cljs_env");
2
+ var $jscomp = $CLJS.$jscomp;
3
+ var COMPILED = false;
4
+ require("./cljs.core.js");
5
+ var anydb=$CLJS.anydb || ($CLJS.anydb = {});
6
+ var clojure=$CLJS.clojure || ($CLJS.clojure = {});
7
+ var cljs=$CLJS.cljs || ($CLJS.cljs = {});
8
+ var goog=$CLJS.goog || ($CLJS.goog = {});
9
+ var datascript=$CLJS.datascript || ($CLJS.datascript = {});
10
+ var me=$CLJS.me || ($CLJS.me = {});
11
+ var extend_clj=$CLJS.extend_clj || ($CLJS.extend_clj = {});
12
+
13
+ $CLJS.SHADOW_ENV.setLoaded("anydb.datascript.schema.js");
14
+
15
+ goog.provide('anydb.datascript.schema');
16
+ /**
17
+ * Base schema with essential Datomic attributes
18
+ */
19
+ anydb.datascript.schema.base_schema = cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword("db","index","db/index",-1531680669),new cljs.core.Keyword("db","unique","db/unique",329396388),new cljs.core.Keyword("db","valueType","db/valueType",1827971944),new cljs.core.Keyword("db","noHistory","db/noHistory",-1975127444),new cljs.core.Keyword("db","isComponent","db/isComponent",423352398),new cljs.core.Keyword("db","fulltext","db/fulltext",-1432910705),new cljs.core.Keyword("db","cardinality","db/cardinality",-104975659),new cljs.core.Keyword("db","doc","db/doc",1913350069),new cljs.core.Keyword("db","ident","db/ident",-737096)],[cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","unique","db/unique",329396388),new cljs.core.Keyword("db.unique","identity","db.unique/identity",1675950722)], null)]);
20
+ /**
21
+ * Authentication schema matching Datomic version
22
+ */
23
+ anydb.datascript.schema.auth_schema = cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword("anydb.auth.account.v1","expires-at","anydb.auth.account.v1/expires-at",606383524),new cljs.core.Keyword("anydb.auth.session.v1","user-id","anydb.auth.session.v1/user-id",-1474562396),new cljs.core.Keyword("anydb.auth.user.v1","email","anydb.auth.user.v1/email",408674374),new cljs.core.Keyword("anydb.auth.account.v1","provider-account-id","anydb.auth.account.v1/provider-account-id",354659754),new cljs.core.Keyword("anydb.auth.account.v1","type","anydb.auth.account.v1/type",2122210282),new cljs.core.Keyword("anydb.auth.account.v1","user-id","anydb.auth.account.v1/user-id",858502027),new cljs.core.Keyword("anydb.auth.vtoken.v1","expires","anydb.auth.vtoken.v1/expires",-1415084052),new cljs.core.Keyword("anydb.auth.account.v1","token-type","anydb.auth.account.v1/token-type",230053326),new cljs.core.Keyword("anydb.auth.account.v1","scope","anydb.auth.account.v1/scope",626022544),new cljs.core.Keyword("anydb.auth.account.v1","id-token","anydb.auth.account.v1/id-token",-1438219888),new cljs.core.Keyword("anydb.auth.vtoken.v1","id","anydb.auth.vtoken.v1/id",85885712),new cljs.core.Keyword("anydb.auth.session.v1","session-token","anydb.auth.session.v1/session-token",1759289457),new cljs.core.Keyword("anydb.auth.vtoken.v1","identifier","anydb.auth.vtoken.v1/identifier",765319474),new cljs.core.Keyword("anydb.auth.user.v1","email-verified","anydb.auth.user.v1/email-verified",-1060690478),new cljs.core.Keyword("anydb.auth.user.v1","name","anydb.auth.user.v1/name",837523829),new cljs.core.Keyword("anydb.auth.vtoken.v1","token","anydb.auth.vtoken.v1/token",560685717),new cljs.core.Keyword("anydb.auth.account.v1","id","anydb.auth.account.v1/id",-306231562),new cljs.core.Keyword("anydb.auth.account.v1","access-token","anydb.auth.account.v1/access-token",411190071),new cljs.core.Keyword("anydb.auth.user.v1","id","anydb.auth.user.v1/id",424050968),new cljs.core.Keyword("anydb.auth.account.v1","session-state","anydb.auth.account.v1/session-state",-1912084678),new cljs.core.Keyword("anydb.auth.session.v1","expires","anydb.auth.session.v1/expires",-375846693),new cljs.core.Keyword("anydb.auth.user.v1","image","anydb.auth.user.v1/image",813147164),new cljs.core.Keyword("anydb.auth.account.v1","refresh-token","anydb.auth.account.v1/refresh-token",50087070),new cljs.core.Keyword("anydb.auth.account.v1","provider","anydb.auth.account.v1/provider",763211294),new cljs.core.Keyword("anydb.auth.session.v1","id","anydb.auth.session.v1/id",1999569887)],[cljs.core.PersistentArrayMap.EMPTY,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","valueType","db/valueType",1827971944),new cljs.core.Keyword("db.type","ref","db.type/ref",-1728373079)], null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","unique","db/unique",329396388),new cljs.core.Keyword("db.unique","identity","db.unique/identity",1675950722)], null),cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","valueType","db/valueType",1827971944),new cljs.core.Keyword("db.type","ref","db.type/ref",-1728373079)], null),cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","unique","db/unique",329396388),new cljs.core.Keyword("db.unique","identity","db.unique/identity",1675950722)], null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","unique","db/unique",329396388),new cljs.core.Keyword("db.unique","identity","db.unique/identity",1675950722)], null),cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","unique","db/unique",329396388),new cljs.core.Keyword("db.unique","identity","db.unique/identity",1675950722)], null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","unique","db/unique",329396388),new cljs.core.Keyword("db.unique","identity","db.unique/identity",1675950722)], null),cljs.core.PersistentArrayMap.EMPTY,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","unique","db/unique",329396388),new cljs.core.Keyword("db.unique","identity","db.unique/identity",1675950722)], null),cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","unique","db/unique",329396388),new cljs.core.Keyword("db.unique","identity","db.unique/identity",1675950722)], null)]);
24
+ /**
25
+ * ABAC policy schema
26
+ */
27
+ anydb.datascript.schema.policy_schema = cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword("anydb.policy.v1","condition","anydb.policy.v1/condition",157767879),new cljs.core.Keyword("anydb.policy.v1","resources","anydb.policy.v1/resources",-1155158966),new cljs.core.Keyword("anydb.policy.v1","subject","anydb.policy.v1/subject",1575700076),new cljs.core.Keyword("anydb.effect.v1","allow","anydb.effect.v1/allow",-215888429),new cljs.core.Keyword("anydb.action.v1","read","anydb.action.v1/read",186721782),new cljs.core.Keyword("anydb.effect.v1","deny","anydb.effect.v1/deny",-87231945),new cljs.core.Keyword("anydb.system.v1","subject","anydb.system.v1/subject",-1423265001),new cljs.core.Keyword("anydb.policy.v1","effect","anydb.policy.v1/effect",1118373528),new cljs.core.Keyword("anydb.action.v1","write","anydb.action.v1/write",707273535),new cljs.core.Keyword("anydb.policy.v1","actions","anydb.policy.v1/actions",1038406495)],[cljs.core.PersistentArrayMap.EMPTY,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","cardinality","db/cardinality",-104975659),new cljs.core.Keyword("db.cardinality","many","db.cardinality/many",772806234)], null),cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,cljs.core.PersistentArrayMap.EMPTY,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("db","cardinality","db/cardinality",-104975659),new cljs.core.Keyword("db.cardinality","many","db.cardinality/many",772806234)], null)]);
28
+ /**
29
+ * Get complete initial schema for DataScript
30
+ */
31
+ anydb.datascript.schema.get_initial_schema = (function anydb$datascript$schema$get_initial_schema(){
32
+ return cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([anydb.datascript.schema.base_schema,anydb.datascript.schema.auth_schema,anydb.datascript.schema.policy_schema], 0));
33
+ });
34
+
35
+ //# sourceMappingURL=anydb.datascript.schema.js.map
package/dist/client.d.ts CHANGED
@@ -113,4 +113,5 @@ export declare function createAnyDBClient(client: DatomicClient, storageAlias: s
113
113
  export declare function pluckFirstColumn(rows: any[][]): any[];
114
114
  export { shouldUseDataScript, isDataScriptAvailable };
115
115
  export default DatomicClient;
116
+ export declare function ensureAttributes(db: AnyDBClient, schemaEntities: Array<Record<string, any>>): Promise<void>;
116
117
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -363,3 +363,62 @@ export function pluckFirstColumn(rows) {
363
363
  // Re-export DataScript helpers for consumers that need feature-detection
364
364
  export { shouldUseDataScript, isDataScriptAvailable };
365
365
  export default DatomicClient;
366
+ // ===== Schema helpers (idempotent ensure) =====
367
+ const __ensuredIdentsCache = new Map();
368
+ function getDbAliasCached(db) {
369
+ return db.info().then((info) => info["db/alias"]);
370
+ }
371
+ function extractIdentName(entity) {
372
+ const identVal = entity["db/ident"];
373
+ if (!identVal)
374
+ return null;
375
+ if (typeof identVal === "string")
376
+ return identVal.startsWith(":") ? identVal.slice(1) : identVal;
377
+ if (typeof identVal === "object" && identVal && identVal._type === "keyword") {
378
+ return identVal.value;
379
+ }
380
+ return null;
381
+ }
382
+ export async function ensureAttributes(db, schemaEntities) {
383
+ const alias = await getDbAliasCached(db);
384
+ const cached = __ensuredIdentsCache.get(alias) || new Set();
385
+ // Compute desired idents
386
+ const desired = schemaEntities
387
+ .map(extractIdentName)
388
+ .filter((v) => Boolean(v));
389
+ // Filter out those already ensured in this process
390
+ const toCheck = desired.filter((n) => !cached.has(n));
391
+ if (toCheck.length === 0)
392
+ return;
393
+ // Determine which exist already in DB
394
+ const existing = new Set();
395
+ for (const ident of toCheck) {
396
+ try {
397
+ const q = {
398
+ find: [sym("?e")],
399
+ where: [
400
+ [sym("?e"), kw("db/ident"), kw(ident)],
401
+ ],
402
+ };
403
+ const rows = await db.query(q);
404
+ if (Array.isArray(rows) && rows.length > 0)
405
+ existing.add(ident);
406
+ }
407
+ catch (_) {
408
+ // ignore transient errors
409
+ }
410
+ }
411
+ const missing = toCheck.filter((n) => !existing.has(n));
412
+ if (missing.length > 0) {
413
+ const tx = schemaEntities.filter((e) => {
414
+ const n = extractIdentName(e);
415
+ return n != null && missing.includes(n);
416
+ });
417
+ if (tx.length > 0) {
418
+ await db.transact(tx);
419
+ }
420
+ }
421
+ // Update cache
422
+ const updated = new Set([...cached, ...toCheck]);
423
+ __ensuredIdentsCache.set(alias, updated);
424
+ }