@lossless.org/client 0.1.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 (255) hide show
  1. package/.smartconfig.json +37 -0
  2. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  3. package/dist_ts/00_commitinfo_data.js +9 -0
  4. package/dist_ts/classes.losslessorgclient.d.ts +32 -0
  5. package/dist_ts/classes.losslessorgclient.js +103 -0
  6. package/dist_ts/core/classes.error.d.ts +16 -0
  7. package/dist_ts/core/classes.error.js +29 -0
  8. package/dist_ts/core/classes.operation.d.ts +17 -0
  9. package/dist_ts/core/classes.operation.js +70 -0
  10. package/dist_ts/core/interfaces.d.ts +18 -0
  11. package/dist_ts/core/interfaces.js +2 -0
  12. package/dist_ts/index.d.ts +4 -0
  13. package/dist_ts/index.js +3 -0
  14. package/dist_ts/nosqldb/classes.atomicdelete.d.ts +26 -0
  15. package/dist_ts/nosqldb/classes.atomicdelete.js +44 -0
  16. package/dist_ts/nosqldb/classes.atomicfindoneandupdate.d.ts +27 -0
  17. package/dist_ts/nosqldb/classes.atomicfindoneandupdate.js +86 -0
  18. package/dist_ts/nosqldb/classes.atomicupdate.d.ts +26 -0
  19. package/dist_ts/nosqldb/classes.atomicupdate.js +55 -0
  20. package/dist_ts/nosqldb/classes.bootstraprecord.d.ts +14 -0
  21. package/dist_ts/nosqldb/classes.bootstraprecord.js +80 -0
  22. package/dist_ts/nosqldb/classes.bsonassertion.d.ts +2 -0
  23. package/dist_ts/nosqldb/classes.bsonassertion.js +29 -0
  24. package/dist_ts/nosqldb/classes.bsonobjectid.d.ts +2 -0
  25. package/dist_ts/nosqldb/classes.bsonobjectid.js +50 -0
  26. package/dist_ts/nosqldb/classes.bsonsnapshot.d.ts +3 -0
  27. package/dist_ts/nosqldb/classes.bsonsnapshot.js +126 -0
  28. package/dist_ts/nosqldb/classes.cached-document.d.ts +27 -0
  29. package/dist_ts/nosqldb/classes.cached-document.js +112 -0
  30. package/dist_ts/nosqldb/classes.collection.d.ts +302 -0
  31. package/dist_ts/nosqldb/classes.collection.js +1568 -0
  32. package/dist_ts/nosqldb/classes.collectionfactory.d.ts +30 -0
  33. package/dist_ts/nosqldb/classes.collectionfactory.js +65 -0
  34. package/dist_ts/nosqldb/classes.collectionlifecycle.d.ts +4 -0
  35. package/dist_ts/nosqldb/classes.collectionlifecycle.js +15 -0
  36. package/dist_ts/nosqldb/classes.collectionpreparation.d.ts +34 -0
  37. package/dist_ts/nosqldb/classes.collectionpreparation.js +134 -0
  38. package/dist_ts/nosqldb/classes.collectiontopology.d.ts +47 -0
  39. package/dist_ts/nosqldb/classes.collectiontopology.js +388 -0
  40. package/dist_ts/nosqldb/classes.connection.d.ts +18 -0
  41. package/dist_ts/nosqldb/classes.connection.js +23 -0
  42. package/dist_ts/nosqldb/classes.convenience.d.ts +1 -0
  43. package/dist_ts/nosqldb/classes.convenience.js +5 -0
  44. package/dist_ts/nosqldb/classes.cursor.d.ts +15 -0
  45. package/dist_ts/nosqldb/classes.cursor.js +82 -0
  46. package/dist_ts/nosqldb/classes.cursoroperation.d.ts +7 -0
  47. package/dist_ts/nosqldb/classes.cursoroperation.js +36 -0
  48. package/dist_ts/nosqldb/classes.db.d.ts +98 -0
  49. package/dist_ts/nosqldb/classes.db.js +434 -0
  50. package/dist_ts/nosqldb/classes.distributedcoordinator.d.ts +52 -0
  51. package/dist_ts/nosqldb/classes.distributedcoordinator.js +314 -0
  52. package/dist_ts/nosqldb/classes.doc.d.ts +722 -0
  53. package/dist_ts/nosqldb/classes.doc.js +2976 -0
  54. package/dist_ts/nosqldb/classes.easystore.d.ts +42 -0
  55. package/dist_ts/nosqldb/classes.easystore.js +199 -0
  56. package/dist_ts/nosqldb/classes.exactpersistence.d.ts +141 -0
  57. package/dist_ts/nosqldb/classes.exactpersistence.js +1110 -0
  58. package/dist_ts/nosqldb/classes.lucene.adapter.d.ts +173 -0
  59. package/dist_ts/nosqldb/classes.lucene.adapter.js +623 -0
  60. package/dist_ts/nosqldb/classes.mongoadministration.d.ts +73 -0
  61. package/dist_ts/nosqldb/classes.mongoadministration.js +497 -0
  62. package/dist_ts/nosqldb/classes.namespaceinspection.d.ts +42 -0
  63. package/dist_ts/nosqldb/classes.namespaceinspection.js +138 -0
  64. package/dist_ts/nosqldb/classes.operationbudget.d.ts +22 -0
  65. package/dist_ts/nosqldb/classes.operationbudget.js +65 -0
  66. package/dist_ts/nosqldb/classes.ordinarypersistence.d.ts +18 -0
  67. package/dist_ts/nosqldb/classes.ordinarypersistence.js +71 -0
  68. package/dist_ts/nosqldb/classes.persistence.d.ts +14 -0
  69. package/dist_ts/nosqldb/classes.persistence.js +34 -0
  70. package/dist_ts/nosqldb/classes.session.d.ts +28 -0
  71. package/dist_ts/nosqldb/classes.session.js +246 -0
  72. package/dist_ts/nosqldb/classes.storedinspection.d.ts +44 -0
  73. package/dist_ts/nosqldb/classes.storedinspection.js +100 -0
  74. package/dist_ts/nosqldb/classes.testdatabase.d.ts +56 -0
  75. package/dist_ts/nosqldb/classes.testdatabase.js +250 -0
  76. package/dist_ts/nosqldb/classes.watcher.d.ts +37 -0
  77. package/dist_ts/nosqldb/classes.watcher.js +98 -0
  78. package/dist_ts/nosqldb/index.d.ts +27 -0
  79. package/dist_ts/nosqldb/index.js +18 -0
  80. package/dist_ts/nosqldb/logging.d.ts +2 -0
  81. package/dist_ts/nosqldb/logging.js +3 -0
  82. package/dist_ts/nosqldb/plugins.d.ts +17 -0
  83. package/dist_ts/nosqldb/plugins.js +20 -0
  84. package/dist_ts/nosqldb/shim.d.ts +1 -0
  85. package/dist_ts/nosqldb/shim.js +8 -0
  86. package/dist_ts/nosqldb/testsupport.d.ts +3 -0
  87. package/dist_ts/nosqldb/testsupport.js +3 -0
  88. package/dist_ts/objectstorage/classes.bucket.d.ts +227 -0
  89. package/dist_ts/objectstorage/classes.bucket.js +939 -0
  90. package/dist_ts/objectstorage/classes.connection.d.ts +21 -0
  91. package/dist_ts/objectstorage/classes.connection.js +27 -0
  92. package/dist_ts/objectstorage/classes.directory.d.ts +124 -0
  93. package/dist_ts/objectstorage/classes.directory.js +335 -0
  94. package/dist_ts/objectstorage/classes.exactpathpurgeerror.d.ts +5 -0
  95. package/dist_ts/objectstorage/classes.exactpathpurgeerror.js +18 -0
  96. package/dist_ts/objectstorage/classes.exactuploaderror.d.ts +5 -0
  97. package/dist_ts/objectstorage/classes.exactuploaderror.js +19 -0
  98. package/dist_ts/objectstorage/classes.file.d.ts +91 -0
  99. package/dist_ts/objectstorage/classes.file.js +255 -0
  100. package/dist_ts/objectstorage/classes.listcursor.d.ts +41 -0
  101. package/dist_ts/objectstorage/classes.listcursor.js +67 -0
  102. package/dist_ts/objectstorage/classes.metadata.d.ts +57 -0
  103. package/dist_ts/objectstorage/classes.metadata.js +113 -0
  104. package/dist_ts/objectstorage/classes.smartbucket.d.ts +57 -0
  105. package/dist_ts/objectstorage/classes.smartbucket.js +357 -0
  106. package/dist_ts/objectstorage/classes.trash.d.ts +11 -0
  107. package/dist_ts/objectstorage/classes.trash.js +22 -0
  108. package/dist_ts/objectstorage/classes.watcher.d.ts +79 -0
  109. package/dist_ts/objectstorage/classes.watcher.js +249 -0
  110. package/dist_ts/objectstorage/helpers.d.ts +25 -0
  111. package/dist_ts/objectstorage/helpers.js +215 -0
  112. package/dist_ts/objectstorage/index.d.ts +13 -0
  113. package/dist_ts/objectstorage/index.js +13 -0
  114. package/dist_ts/objectstorage/interfaces.d.ts +276 -0
  115. package/dist_ts/objectstorage/interfaces.js +2 -0
  116. package/dist_ts/objectstorage/internal.exactpathpurge.operations.d.ts +11 -0
  117. package/dist_ts/objectstorage/internal.exactpathpurge.operations.js +1069 -0
  118. package/dist_ts/objectstorage/internal.exactupload.capability.d.ts +40 -0
  119. package/dist_ts/objectstorage/internal.exactupload.capability.js +382 -0
  120. package/dist_ts/objectstorage/internal.exactupload.operations.d.ts +11 -0
  121. package/dist_ts/objectstorage/internal.exactupload.operations.js +1104 -0
  122. package/dist_ts/objectstorage/internal.multipart.planner.d.ts +8 -0
  123. package/dist_ts/objectstorage/internal.multipart.planner.js +63 -0
  124. package/dist_ts/objectstorage/internal.multipart.stream.d.ts +17 -0
  125. package/dist_ts/objectstorage/internal.multipart.stream.js +440 -0
  126. package/dist_ts/objectstorage/internal.multipart.types.d.ts +82 -0
  127. package/dist_ts/objectstorage/internal.multipart.types.js +2 -0
  128. package/dist_ts/objectstorage/plugins.d.ts +17 -0
  129. package/dist_ts/objectstorage/plugins.js +23 -0
  130. package/dist_ts/plugins.d.ts +4 -0
  131. package/dist_ts/plugins.js +5 -0
  132. package/dist_ts/sqldb/classes.clickhouseconnection.d.ts +39 -0
  133. package/dist_ts/sqldb/classes.clickhouseconnection.js +225 -0
  134. package/dist_ts/sqldb/classes.sqlconnection.d.ts +50 -0
  135. package/dist_ts/sqldb/classes.sqlconnection.js +376 -0
  136. package/dist_ts/sqldb/classes.sqltable.d.ts +29 -0
  137. package/dist_ts/sqldb/classes.sqltable.js +70 -0
  138. package/dist_ts/sqldb/clickhouse/classes.metricwriter.d.ts +27 -0
  139. package/dist_ts/sqldb/clickhouse/classes.metricwriter.js +89 -0
  140. package/dist_ts/sqldb/clickhouse/index.d.ts +9 -0
  141. package/dist_ts/sqldb/clickhouse/index.js +13 -0
  142. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.clickhousetable.d.ts +88 -0
  143. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.clickhousetable.js +304 -0
  144. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.httpclient.d.ts +28 -0
  145. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.httpclient.js +46 -0
  146. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.querybuilder.d.ts +43 -0
  147. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.querybuilder.js +155 -0
  148. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.resultset.d.ts +13 -0
  149. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.resultset.js +36 -0
  150. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.smartclickhouse.d.ts +49 -0
  151. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.smartclickhouse.js +106 -0
  152. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.timedatatable.d.ts +51 -0
  153. package/dist_ts/sqldb/clickhouse/smartclickhouse.classes.timedatatable.js +96 -0
  154. package/dist_ts/sqldb/clickhouse/smartclickhouse.plugins.d.ts +5 -0
  155. package/dist_ts/sqldb/clickhouse/smartclickhouse.plugins.js +6 -0
  156. package/dist_ts/sqldb/clickhouse/smartclickhouse.types.d.ts +53 -0
  157. package/dist_ts/sqldb/clickhouse/smartclickhouse.types.js +41 -0
  158. package/dist_ts/sqldb/index.d.ts +6 -0
  159. package/dist_ts/sqldb/index.js +6 -0
  160. package/dist_ts/sqldb/interfaces.d.ts +53 -0
  161. package/dist_ts/sqldb/interfaces.js +19 -0
  162. package/dist_ts/sqldb/internal.sqlpool.d.ts +51 -0
  163. package/dist_ts/sqldb/internal.sqlpool.js +214 -0
  164. package/dist_ts/sqldb/plugins.clickhouse.d.ts +4 -0
  165. package/dist_ts/sqldb/plugins.clickhouse.js +5 -0
  166. package/dist_ts/sqldb/plugins.mariadb.d.ts +4 -0
  167. package/dist_ts/sqldb/plugins.mariadb.js +5 -0
  168. package/docs/source/smartbucket/license.md +19 -0
  169. package/docs/source/smartclickhouse/license.md +19 -0
  170. package/license.md +21 -0
  171. package/package.json +101 -0
  172. package/readme.md +157 -0
  173. package/ts/00_commitinfo_data.ts +8 -0
  174. package/ts/classes.losslessorgclient.ts +104 -0
  175. package/ts/core/classes.error.ts +31 -0
  176. package/ts/core/classes.operation.ts +60 -0
  177. package/ts/core/interfaces.ts +24 -0
  178. package/ts/index.ts +4 -0
  179. package/ts/nosqldb/classes.atomicdelete.ts +81 -0
  180. package/ts/nosqldb/classes.atomicfindoneandupdate.ts +152 -0
  181. package/ts/nosqldb/classes.atomicupdate.ts +99 -0
  182. package/ts/nosqldb/classes.bootstraprecord.ts +107 -0
  183. package/ts/nosqldb/classes.bsonassertion.ts +25 -0
  184. package/ts/nosqldb/classes.bsonobjectid.ts +45 -0
  185. package/ts/nosqldb/classes.bsonsnapshot.ts +105 -0
  186. package/ts/nosqldb/classes.cached-document.ts +67 -0
  187. package/ts/nosqldb/classes.collection.ts +2399 -0
  188. package/ts/nosqldb/classes.collectionfactory.ts +87 -0
  189. package/ts/nosqldb/classes.collectionlifecycle.ts +24 -0
  190. package/ts/nosqldb/classes.collectionpreparation.ts +164 -0
  191. package/ts/nosqldb/classes.collectiontopology.ts +645 -0
  192. package/ts/nosqldb/classes.connection.ts +31 -0
  193. package/ts/nosqldb/classes.convenience.ts +5 -0
  194. package/ts/nosqldb/classes.cursor.ts +88 -0
  195. package/ts/nosqldb/classes.cursoroperation.ts +38 -0
  196. package/ts/nosqldb/classes.db.ts +637 -0
  197. package/ts/nosqldb/classes.distributedcoordinator.ts +305 -0
  198. package/ts/nosqldb/classes.doc.ts +4928 -0
  199. package/ts/nosqldb/classes.easystore.ts +154 -0
  200. package/ts/nosqldb/classes.exactpersistence.ts +1974 -0
  201. package/ts/nosqldb/classes.lucene.adapter.ts +780 -0
  202. package/ts/nosqldb/classes.mongoadministration.ts +867 -0
  203. package/ts/nosqldb/classes.namespaceinspection.ts +199 -0
  204. package/ts/nosqldb/classes.operationbudget.ts +75 -0
  205. package/ts/nosqldb/classes.ordinarypersistence.ts +84 -0
  206. package/ts/nosqldb/classes.persistence.ts +62 -0
  207. package/ts/nosqldb/classes.session.ts +389 -0
  208. package/ts/nosqldb/classes.storedinspection.ts +151 -0
  209. package/ts/nosqldb/classes.testdatabase.ts +272 -0
  210. package/ts/nosqldb/classes.watcher.ts +96 -0
  211. package/ts/nosqldb/index.ts +51 -0
  212. package/ts/nosqldb/logging.ts +3 -0
  213. package/ts/nosqldb/plugins.ts +37 -0
  214. package/ts/nosqldb/shim.ts +6 -0
  215. package/ts/nosqldb/testsupport.ts +13 -0
  216. package/ts/objectstorage/classes.bucket.ts +1114 -0
  217. package/ts/objectstorage/classes.connection.ts +36 -0
  218. package/ts/objectstorage/classes.directory.ts +425 -0
  219. package/ts/objectstorage/classes.exactpathpurgeerror.ts +24 -0
  220. package/ts/objectstorage/classes.exactuploaderror.ts +25 -0
  221. package/ts/objectstorage/classes.file.ts +303 -0
  222. package/ts/objectstorage/classes.listcursor.ts +89 -0
  223. package/ts/objectstorage/classes.metadata.ts +134 -0
  224. package/ts/objectstorage/classes.smartbucket.ts +445 -0
  225. package/ts/objectstorage/classes.trash.ts +30 -0
  226. package/ts/objectstorage/classes.watcher.ts +289 -0
  227. package/ts/objectstorage/helpers.ts +254 -0
  228. package/ts/objectstorage/index.ts +13 -0
  229. package/ts/objectstorage/interfaces.ts +389 -0
  230. package/ts/objectstorage/internal.exactpathpurge.operations.ts +1936 -0
  231. package/ts/objectstorage/internal.exactupload.capability.ts +580 -0
  232. package/ts/objectstorage/internal.exactupload.operations.ts +1715 -0
  233. package/ts/objectstorage/internal.multipart.planner.ts +90 -0
  234. package/ts/objectstorage/internal.multipart.stream.ts +606 -0
  235. package/ts/objectstorage/internal.multipart.types.ts +106 -0
  236. package/ts/objectstorage/plugins.ts +35 -0
  237. package/ts/plugins.ts +4 -0
  238. package/ts/sqldb/classes.clickhouseconnection.ts +189 -0
  239. package/ts/sqldb/classes.sqlconnection.ts +350 -0
  240. package/ts/sqldb/classes.sqltable.ts +70 -0
  241. package/ts/sqldb/clickhouse/classes.metricwriter.ts +72 -0
  242. package/ts/sqldb/clickhouse/index.ts +16 -0
  243. package/ts/sqldb/clickhouse/smartclickhouse.classes.clickhousetable.ts +372 -0
  244. package/ts/sqldb/clickhouse/smartclickhouse.classes.httpclient.ts +52 -0
  245. package/ts/sqldb/clickhouse/smartclickhouse.classes.querybuilder.ts +120 -0
  246. package/ts/sqldb/clickhouse/smartclickhouse.classes.resultset.ts +44 -0
  247. package/ts/sqldb/clickhouse/smartclickhouse.classes.smartclickhouse.ts +123 -0
  248. package/ts/sqldb/clickhouse/smartclickhouse.classes.timedatatable.ts +114 -0
  249. package/ts/sqldb/clickhouse/smartclickhouse.plugins.ts +5 -0
  250. package/ts/sqldb/clickhouse/smartclickhouse.types.ts +134 -0
  251. package/ts/sqldb/index.ts +6 -0
  252. package/ts/sqldb/interfaces.ts +61 -0
  253. package/ts/sqldb/internal.sqlpool.ts +179 -0
  254. package/ts/sqldb/plugins.clickhouse.ts +4 -0
  255. package/ts/sqldb/plugins.mariadb.ts +4 -0
@@ -0,0 +1,42 @@
1
+ import { SmartdataDb } from './classes.db.js';
2
+ /**
3
+ * EasyStore allows the storage of easy objects. It also allows easy sharing of the object between different instances
4
+ */
5
+ export declare class EasyStore<T> {
6
+ smartdataDbRef: SmartdataDb;
7
+ nameId: string;
8
+ private easyStoreClass;
9
+ constructor(nameIdArg: string, smartdataDbRefArg: SmartdataDb);
10
+ private easyStorePromise?;
11
+ private getEasyStore;
12
+ /**
13
+ * reads all keyValue pairs at once and returns them
14
+ */
15
+ readAll(): Promise<any>;
16
+ /**
17
+ * reads a keyValueFile from disk
18
+ */
19
+ readKey<TKey extends keyof T>(keyArg: TKey): Promise<Partial<T>[TKey]>;
20
+ /**
21
+ * writes a specific key to the keyValueStore
22
+ */
23
+ writeKey<TKey extends keyof T>(keyArg: TKey, valueArg: T[TKey]): Promise<void>;
24
+ deleteKey(keyArg: keyof T): Promise<void>;
25
+ /**
26
+ * merges all keyValue pairs from the object argument into the store.
27
+ * Existing keys that are not present in `keyValueObject` are preserved.
28
+ * To overwrite the entire store and drop missing keys, use `replace()`.
29
+ */
30
+ writeAll(keyValueObject: Partial<T>): Promise<void>;
31
+ /**
32
+ * atomically replaces the entire store with the given object.
33
+ * Unlike `writeAll` (which merges), `replace` clears any keys not
34
+ * present in `keyValueObject`. Useful when you need to drop a key.
35
+ */
36
+ replace(keyValueObject: Partial<T>): Promise<void>;
37
+ /**
38
+ * wipes a key value store from disk
39
+ */
40
+ wipe(): Promise<void>;
41
+ cleanUpEphemeral(): Promise<void>;
42
+ }
@@ -0,0 +1,199 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import * as plugins from './plugins.js';
36
+ import { Collection } from './classes.collection.js';
37
+ import { SmartdataDb } from './classes.db.js';
38
+ import { SmartDataDbDoc, svDb, unI } from './classes.doc.js';
39
+ const easyStoreClassByDb = new WeakMap();
40
+ const getEasyStoreClassForDb = (smartdataDbArg) => {
41
+ const existingClass = easyStoreClassByDb.get(smartdataDbArg);
42
+ if (existingClass) {
43
+ return existingClass;
44
+ }
45
+ let SmartdataEasyStore = (() => {
46
+ let _classDecorators = [Collection(() => smartdataDbArg)];
47
+ let _classDescriptor;
48
+ let _classExtraInitializers = [];
49
+ let _classThis;
50
+ let _classSuper = SmartDataDbDoc;
51
+ let _nameId_decorators;
52
+ let _nameId_initializers = [];
53
+ let _nameId_extraInitializers = [];
54
+ let _ephemeral_decorators;
55
+ let _ephemeral_initializers = [];
56
+ let _ephemeral_extraInitializers = [];
57
+ let _lastEdit_decorators;
58
+ let _lastEdit_initializers = [];
59
+ let _lastEdit_extraInitializers = [];
60
+ let _data_decorators;
61
+ let _data_initializers = [];
62
+ let _data_extraInitializers = [];
63
+ var SmartdataEasyStore = class extends _classSuper {
64
+ static { _classThis = this; }
65
+ static {
66
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
67
+ _nameId_decorators = [unI()];
68
+ _ephemeral_decorators = [svDb()];
69
+ _lastEdit_decorators = [svDb()];
70
+ _data_decorators = [svDb()];
71
+ __esDecorate(null, null, _nameId_decorators, { kind: "field", name: "nameId", static: false, private: false, access: { has: obj => "nameId" in obj, get: obj => obj.nameId, set: (obj, value) => { obj.nameId = value; } }, metadata: _metadata }, _nameId_initializers, _nameId_extraInitializers);
72
+ __esDecorate(null, null, _ephemeral_decorators, { kind: "field", name: "ephemeral", static: false, private: false, access: { has: obj => "ephemeral" in obj, get: obj => obj.ephemeral, set: (obj, value) => { obj.ephemeral = value; } }, metadata: _metadata }, _ephemeral_initializers, _ephemeral_extraInitializers);
73
+ __esDecorate(null, null, _lastEdit_decorators, { kind: "field", name: "lastEdit", static: false, private: false, access: { has: obj => "lastEdit" in obj, get: obj => obj.lastEdit, set: (obj, value) => { obj.lastEdit = value; } }, metadata: _metadata }, _lastEdit_initializers, _lastEdit_extraInitializers);
74
+ __esDecorate(null, null, _data_decorators, { kind: "field", name: "data", static: false, private: false, access: { has: obj => "data" in obj, get: obj => obj.data, set: (obj, value) => { obj.data = value; } }, metadata: _metadata }, _data_initializers, _data_extraInitializers);
75
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
76
+ SmartdataEasyStore = _classThis = _classDescriptor.value;
77
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
78
+ __runInitializers(_classThis, _classExtraInitializers);
79
+ }
80
+ nameId = __runInitializers(this, _nameId_initializers, void 0);
81
+ ephemeral = (__runInitializers(this, _nameId_extraInitializers), __runInitializers(this, _ephemeral_initializers, void 0));
82
+ lastEdit = (__runInitializers(this, _ephemeral_extraInitializers), __runInitializers(this, _lastEdit_initializers, void 0));
83
+ data = (__runInitializers(this, _lastEdit_extraInitializers), __runInitializers(this, _data_initializers, void 0));
84
+ constructor() {
85
+ super(...arguments);
86
+ __runInitializers(this, _data_extraInitializers);
87
+ }
88
+ };
89
+ return SmartdataEasyStore = _classThis;
90
+ })();
91
+ easyStoreClassByDb.set(smartdataDbArg, SmartdataEasyStore);
92
+ return SmartdataEasyStore;
93
+ };
94
+ /**
95
+ * EasyStore allows the storage of easy objects. It also allows easy sharing of the object between different instances
96
+ */
97
+ export class EasyStore {
98
+ // instance
99
+ smartdataDbRef;
100
+ nameId;
101
+ easyStoreClass;
102
+ constructor(nameIdArg, smartdataDbRefArg) {
103
+ this.smartdataDbRef = smartdataDbRefArg;
104
+ this.nameId = nameIdArg;
105
+ this.easyStoreClass = getEasyStoreClassForDb(smartdataDbRefArg);
106
+ }
107
+ easyStorePromise;
108
+ async getEasyStore() {
109
+ if (this.easyStorePromise) {
110
+ return this.easyStorePromise;
111
+ }
112
+ // first run from here
113
+ const deferred = plugins.smartpromise.defer();
114
+ this.easyStorePromise = deferred.promise;
115
+ try {
116
+ let easyStore = await this.easyStoreClass.getInstance({
117
+ nameId: this.nameId,
118
+ });
119
+ if (!easyStore) {
120
+ easyStore = new this.easyStoreClass();
121
+ easyStore.nameId = this.nameId;
122
+ easyStore.data = {};
123
+ await easyStore.save();
124
+ }
125
+ deferred.resolve(easyStore);
126
+ }
127
+ catch (error) {
128
+ // settle the deferred and clear the cache so concurrent callers get the
129
+ // error instead of awaiting forever, and later callers can retry
130
+ this.easyStorePromise = undefined;
131
+ deferred.reject(error);
132
+ }
133
+ return deferred.promise;
134
+ }
135
+ /**
136
+ * reads all keyValue pairs at once and returns them
137
+ */
138
+ async readAll() {
139
+ const easyStore = await this.getEasyStore();
140
+ return easyStore.data;
141
+ }
142
+ /**
143
+ * reads a keyValueFile from disk
144
+ */
145
+ async readKey(keyArg) {
146
+ const easyStore = await this.getEasyStore();
147
+ return easyStore.data[keyArg];
148
+ }
149
+ /**
150
+ * writes a specific key to the keyValueStore
151
+ */
152
+ async writeKey(keyArg, valueArg) {
153
+ const easyStore = await this.getEasyStore();
154
+ easyStore.data[keyArg] = valueArg;
155
+ await easyStore.save();
156
+ }
157
+ async deleteKey(keyArg) {
158
+ const easyStore = await this.getEasyStore();
159
+ delete easyStore.data[keyArg];
160
+ await easyStore.save();
161
+ }
162
+ /**
163
+ * merges all keyValue pairs from the object argument into the store.
164
+ * Existing keys that are not present in `keyValueObject` are preserved.
165
+ * To overwrite the entire store and drop missing keys, use `replace()`.
166
+ */
167
+ async writeAll(keyValueObject) {
168
+ const easyStore = await this.getEasyStore();
169
+ easyStore.data = { ...easyStore.data, ...keyValueObject };
170
+ await easyStore.save();
171
+ }
172
+ /**
173
+ * atomically replaces the entire store with the given object.
174
+ * Unlike `writeAll` (which merges), `replace` clears any keys not
175
+ * present in `keyValueObject`. Useful when you need to drop a key.
176
+ */
177
+ async replace(keyValueObject) {
178
+ const easyStore = await this.getEasyStore();
179
+ easyStore.data = { ...keyValueObject };
180
+ await easyStore.save();
181
+ }
182
+ /**
183
+ * wipes a key value store from disk
184
+ */
185
+ async wipe() {
186
+ const easyStore = await this.getEasyStore();
187
+ easyStore.data = {};
188
+ await easyStore.save();
189
+ }
190
+ async cleanUpEphemeral() {
191
+ // Clean up ephemeral data periodically while connected
192
+ while (this.smartdataDbRef.status === 'connected') {
193
+ await plugins.smartdelay.delayFor(60000); // Check every minute
194
+ // TODO: Implement actual cleanup logic for ephemeral data
195
+ // For now, this prevents the infinite CPU loop
196
+ }
197
+ }
198
+ }
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5lYXN5c3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9ub3NxbGRiL2NsYXNzZXMuZWFzeXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTdELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQW9CLENBQUM7QUFFM0QsTUFBTSxzQkFBc0IsR0FBRyxDQUFJLGNBQTJCLEVBQUUsRUFBRTtJQUNoRSxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0QsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO1FBRUssa0JBQWtCO2dDQUR2QixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDOzs7OzBCQUNBLGNBQWM7Ozs7Ozs7Ozs7Ozs7c0NBQXRCLFNBQVEsV0FHaEM7Ozs7c0NBQ0UsR0FBRyxFQUFFO3lDQUdMLElBQUksRUFBRTt3Q0FNTixJQUFJLEVBQUU7b0NBR04sSUFBSSxFQUFFO2dCQVhQLG9LQUFPLE1BQU0sNkJBQU4sTUFBTSx1RkFBVTtnQkFHdkIsNktBQU8sU0FBUyw2QkFBVCxTQUFTLDZGQUdkO2dCQUdGLDBLQUFBLFFBQVEsNkJBQVIsUUFBUSwyRkFBVTtnQkFHbEIsOEpBQU8sSUFBSSw2QkFBSixJQUFJLG1GQUFjO2dCQWpCM0IsNktBa0JDOzs7Z0JBbEJLLHVEQUFrQjs7WUFLZixNQUFNLHlEQUFVO1lBR2hCLFNBQVMsa0hBR2Q7WUFHRixRQUFRLG9IQUFVO1lBR1gsSUFBSSwrR0FBYzs7Ozs7Ozs7SUFFM0Isa0JBQWtCLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzNELE9BQU8sa0JBQWtCLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sU0FBUztJQUNwQixXQUFXO0lBQ0osY0FBYyxDQUFjO0lBQzVCLE1BQU0sQ0FBUztJQUVkLGNBQWMsQ0FBK0M7SUFFckUsWUFBWSxTQUFpQixFQUFFLGlCQUE4QjtRQUMzRCxJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsc0JBQXNCLENBQUksaUJBQWlCLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU8sZ0JBQWdCLENBQXFEO0lBQ3JFLEtBQUssQ0FBQyxZQUFZO1FBQ3hCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0IsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBNEMsQ0FBQztRQUN4RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUV6QyxJQUFJLENBQUM7WUFDSCxJQUFJLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDO2dCQUNwRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07YUFDcEIsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNmLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEMsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUMvQixTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsQ0FBQztZQUNELFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZix3RUFBd0U7WUFDeEUsaUVBQWlFO1lBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7WUFDbEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsT0FBTyxDQUF1QixNQUFZO1FBQ3JELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsUUFBUSxDQUF1QixNQUFZLEVBQUUsUUFBaUI7UUFDekUsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDbEMsTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBZTtRQUNwQyxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQTBCO1FBQzlDLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUMxRCxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBMEI7UUFDN0MsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUMsU0FBUyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDdkMsTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQjtRQUMzQix1REFBdUQ7UUFDdkQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNsRCxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQXFCO1lBQy9ELDBEQUEwRDtZQUMxRCwrQ0FBK0M7UUFDakQsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
@@ -0,0 +1,141 @@
1
+ import * as plugins from './plugins.js';
2
+ import type { SmartdataCollection } from './classes.collection.js';
3
+ import type { SmartdataSession } from './classes.session.js';
4
+ import { type MongoFilter, type SmartDataDbDoc } from './classes.doc.js';
5
+ declare const reservedKeys: readonly ["_id", "_smartdataRevision", "_createdAt", "_updatedAt"];
6
+ type TReservedKey = (typeof reservedKeys)[number];
7
+ export type TExactPersistedDocument<TPersisted extends object> = Omit<TPersisted, TReservedKey> & {
8
+ [TKey in TReservedKey]?: never;
9
+ };
10
+ export type TStoredDocument<TPersisted extends object> = Omit<TPersisted, TReservedKey> & {
11
+ _id: plugins.mongodb.ObjectId;
12
+ _smartdataRevision?: string;
13
+ _createdAt?: never;
14
+ _updatedAt?: never;
15
+ };
16
+ export type TExactDistinctValue<TValue> = TValue extends ReadonlyArray<infer TEntry> ? TEntry : TValue;
17
+ type TExactDocumentPathLeaf = string | number | boolean | bigint | symbol | null | undefined | Date | RegExp | Uint8Array | ((...args: any[]) => unknown) | {
18
+ readonly _bsontype: string;
19
+ };
20
+ type TExactDocumentPathTarget<TValue> = NonNullable<TValue> extends ReadonlyArray<infer TEntry> ? NonNullable<TEntry> : NonNullable<TValue>;
21
+ type TExactDocumentPathInternal<TDocument, TDepth extends readonly unknown[]> = TDepth['length'] extends 8 ? never : TDocument extends TExactDocumentPathLeaf ? never : TDocument extends object ? {
22
+ [TKey in keyof TDocument & string]: TExactDocumentPathTarget<TDocument[TKey]> extends TExactDocumentPathLeaf ? TKey : TExactDocumentPathTarget<TDocument[TKey]> extends object ? TKey | `${TKey}.${TExactDocumentPathInternal<TExactDocumentPathTarget<TDocument[TKey]>, [
23
+ ...TDepth,
24
+ unknown
25
+ ]>}` : TKey;
26
+ }[keyof TDocument & string] : never;
27
+ type TExactDocumentPathContainer<TValue> = NonNullable<TValue> extends ReadonlyArray<infer TEntry> ? NonNullable<TEntry> : NonNullable<TValue>;
28
+ export type TExactDocumentPath<TDocument extends object> = TExactDocumentPathInternal<TDocument, []>;
29
+ type TExactDocumentPathValueForContainer<TContainer, TPath extends string> = TContainer extends unknown ? TPath extends `${infer THead}.${infer TTail}` ? THead extends keyof TContainer ? TExactDocumentPathValue<TContainer[THead], TTail> : never : TPath extends keyof TContainer ? Exclude<TContainer[TPath], undefined> : never : never;
30
+ export type TExactDocumentPathValue<TDocument, TPath extends string> = TExactDocumentPathValueForContainer<TExactDocumentPathContainer<TDocument>, TPath>;
31
+ export declare const isMongoObjectId: (valueArg: unknown) => valueArg is plugins.mongodb.ObjectId;
32
+ export type TExactInsertResult<TPersisted extends object> = {
33
+ status: 'inserted' | 'already_committed';
34
+ document: TStoredDocument<TPersisted>;
35
+ } | {
36
+ status: 'conflict';
37
+ document: TStoredDocument<TPersisted>;
38
+ };
39
+ export type TExactTransitionResult<TPersisted extends object> = {
40
+ status: 'transitioned';
41
+ document: TStoredDocument<TPersisted>;
42
+ } | {
43
+ status: 'concurrent_change';
44
+ };
45
+ export type TExactDeleteResult = {
46
+ status: 'deleted';
47
+ deletedCount: 1;
48
+ } | {
49
+ status: 'concurrent_change';
50
+ deletedCount: 0;
51
+ };
52
+ export type TExactPersistenceErrorCode = 'ambiguous_write' | 'invalid_configuration' | 'invalid_document' | 'noncanonical_document' | 'reserved_field' | 'unique_conflict' | 'unsupported_operation';
53
+ export declare class SmartdataExactPersistenceError extends Error {
54
+ readonly code: TExactPersistenceErrorCode;
55
+ constructor(codeArg: TExactPersistenceErrorCode, messageArg: string, optionsArg?: ErrorOptions);
56
+ }
57
+ export type TExactDocumentAssertion<TPersisted extends object> = (documentArg: unknown) => asserts documentArg is TPersisted;
58
+ type TExactAssertedDocument<TAssertion extends TExactDocumentAssertion<object>> = TAssertion extends TExactDocumentAssertion<infer TPersisted> ? TPersisted : never;
59
+ export type TExactIdentityKey<TPersisted extends object> = {
60
+ [TKey in Exclude<keyof TPersisted, TReservedKey> & string]-?: [
61
+ TPersisted[TKey]
62
+ ] extends [string] ? TKey : never;
63
+ }[Exclude<keyof TPersisted, TReservedKey> & string];
64
+ export interface IExactPersistenceOptions<TPersisted extends object> {
65
+ reconcileBy?: TExactIdentityKey<TPersisted>;
66
+ assertDocument: TExactDocumentAssertion<TPersisted>;
67
+ }
68
+ export type TPersistedOf<TModel extends SmartDataDbDoc<any, any, any>> = TModel extends SmartDataDbDoc<any, infer TPersisted, any> ? TPersisted : never;
69
+ export type TExact<TModel extends SmartDataDbDoc<any, any, any>> = SmartdataExactCollection<TModel, TPersistedOf<TModel>>;
70
+ export interface IExactSessionOptions {
71
+ session?: SmartdataSession;
72
+ }
73
+ export interface IExactReadOptions extends IExactSessionOptions {
74
+ signal?: AbortSignal;
75
+ }
76
+ export interface IFindStoredOptions<TPersisted extends object> extends IExactReadOptions {
77
+ filter?: MongoFilter<TStoredDocument<TPersisted>>;
78
+ sort?: Partial<Record<TExactDocumentPath<TStoredDocument<TPersisted>>, 1 | -1>>;
79
+ skip?: number;
80
+ limit?: number;
81
+ }
82
+ interface IExactModelConstructor<TModel extends SmartDataDbDoc<any, any, any>> {
83
+ new (...args: any[]): TModel;
84
+ collection: SmartdataCollection<any>;
85
+ createInstanceFromMongoDbNativeDoc<T>(documentArg: any): T;
86
+ name: string;
87
+ prototype: TModel;
88
+ }
89
+ export declare class SmartdataExactCollection<TModel extends SmartDataDbDoc<any, any, any>, TPersisted extends object> {
90
+ private readonly modelConstructor;
91
+ private readonly collection;
92
+ private readonly options;
93
+ private initializationPromise?;
94
+ private initializedCollection?;
95
+ private initializationTarget?;
96
+ private initializationGeneration;
97
+ private readonly allowedPersistedKeys;
98
+ private readonly uniqueIndexes;
99
+ private readonly reconcileBy;
100
+ constructor(modelConstructor: IExactModelConstructor<TModel>, collection: SmartdataCollection<any>, options: IExactPersistenceOptions<TPersisted>);
101
+ private initialize;
102
+ private initializeOnce;
103
+ prepare(): Promise<void>;
104
+ private beginOperation;
105
+ private runOperation;
106
+ private canonicalizeDocument;
107
+ private assertAllowedTopLevelKeys;
108
+ private canonicalizePersistedDocument;
109
+ private canonicalizeStoredDocument;
110
+ private assertWithoutMutation;
111
+ private getPersistedBody;
112
+ private persistedDocumentsEqual;
113
+ private storedDocumentsEqual;
114
+ private validateReconcileIdentity;
115
+ private serializeModel;
116
+ private createPersistedDocument;
117
+ private hydrateStoredDocument;
118
+ private findByReconcileIdentity;
119
+ private ambiguousWriteError;
120
+ private canonicalizeDeleteCurrent;
121
+ private reconcileDeleteOutcome;
122
+ insert(documentArg: TModel | TExactPersistedDocument<TPersisted>, optionsArg?: IExactSessionOptions): Promise<TExactInsertResult<TPersisted>>;
123
+ toPersisted(storedDocumentArg: TStoredDocument<TPersisted>): TExactPersistedDocument<TPersisted>;
124
+ canonicalBytes(persistedDocumentArg: TExactPersistedDocument<TPersisted>): Uint8Array;
125
+ findStoredOne(filterArg: MongoFilter<TStoredDocument<TPersisted>>, optionsArg?: IExactReadOptions): Promise<TStoredDocument<TPersisted> | null>;
126
+ findStored(optionsArg?: IFindStoredOptions<TPersisted>): Promise<Array<TStoredDocument<TPersisted>>>;
127
+ count(filterArg?: MongoFilter<TStoredDocument<TPersisted>>, optionsArg?: IExactSessionOptions): Promise<number>;
128
+ distinct<TField extends TExactDocumentPath<TStoredDocument<TPersisted>>>(fieldArg: TField, filterArg?: MongoFilter<TStoredDocument<TPersisted>>, optionsArg?: IExactSessionOptions): Promise<Array<TExactDistinctValue<TExactDocumentPathValue<TStoredDocument<TPersisted>, TField>>>>;
129
+ transition(optionsArg: {
130
+ current: TStoredDocument<TPersisted>;
131
+ change: (modelArg: TModel) => void;
132
+ }, sessionOptionsArg?: IExactSessionOptions): Promise<TExactTransitionResult<TPersisted>>;
133
+ delete(optionsArg: {
134
+ current: TStoredDocument<TPersisted>;
135
+ }, sessionOptionsArg?: IExactSessionOptions): Promise<TExactDeleteResult>;
136
+ }
137
+ export declare function exactPersistence<TAssertion extends TExactDocumentAssertion<object>>(optionsArg: {
138
+ assertDocument: TAssertion;
139
+ reconcileBy?: TExactIdentityKey<TExactAssertedDocument<TAssertion>>;
140
+ }): <TConstructor extends new (...args: any[]) => SmartDataDbDoc<any, TExactAssertedDocument<TAssertion>, any> & TExactAssertedDocument<TAssertion>>(valueArg: TConstructor, contextArg: ClassDecoratorContext) => void;
141
+ export {};