@verdant-web/store 2.7.7-next.0 → 2.7.8

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 (698) hide show
  1. package/dist/bundle/index.js +1 -1
  2. package/dist/bundle/index.js.map +3 -3
  3. package/dist/cjs/BackoffScheduler.d.ts +19 -19
  4. package/dist/cjs/BackoffScheduler.js +44 -44
  5. package/dist/cjs/DocumentManager.d.ts +28 -31
  6. package/dist/cjs/DocumentManager.js +44 -44
  7. package/dist/cjs/FakeWeakRef.d.ts +11 -11
  8. package/dist/cjs/FakeWeakRef.js +18 -18
  9. package/dist/cjs/IDBService.d.ts +9 -9
  10. package/dist/cjs/IDBService.js +63 -63
  11. package/dist/cjs/UndoHistory.d.ts +16 -16
  12. package/dist/cjs/UndoHistory.js +50 -50
  13. package/dist/cjs/__tests__/batching.test.d.ts +1 -1
  14. package/dist/cjs/__tests__/batching.test.js +44 -44
  15. package/dist/cjs/__tests__/documents.test.d.ts +1 -1
  16. package/dist/cjs/__tests__/documents.test.js +415 -415
  17. package/dist/cjs/__tests__/fixtures/testStorage.d.ts +123 -123
  18. package/dist/cjs/__tests__/fixtures/testStorage.js +117 -117
  19. package/dist/cjs/__tests__/legacyOids.test.d.ts +1 -1
  20. package/dist/cjs/__tests__/legacyOids.test.js +290 -290
  21. package/dist/cjs/__tests__/mutations.test.d.ts +1 -1
  22. package/dist/cjs/__tests__/mutations.test.js +41 -41
  23. package/dist/cjs/__tests__/queries.test.d.ts +1 -1
  24. package/dist/cjs/__tests__/queries.test.js +318 -318
  25. package/dist/cjs/__tests__/setup/indexedDB.d.ts +1 -1
  26. package/dist/cjs/__tests__/setup/indexedDB.js +3 -3
  27. package/dist/cjs/__tests__/undo.test.d.ts +1 -1
  28. package/dist/cjs/__tests__/undo.test.js +86 -86
  29. package/dist/cjs/client/Client.d.ts +99 -98
  30. package/dist/cjs/client/Client.js +227 -227
  31. package/dist/cjs/client/ClientDescriptor.d.ts +76 -76
  32. package/dist/cjs/client/ClientDescriptor.js +197 -197
  33. package/dist/cjs/client/constants.d.ts +1 -1
  34. package/dist/cjs/client/constants.js +4 -4
  35. package/dist/cjs/constants.d.ts +1 -1
  36. package/dist/cjs/constants.js +4 -4
  37. package/dist/cjs/context.d.ts +29 -29
  38. package/dist/cjs/context.js +2 -2
  39. package/dist/cjs/entities/DocumentFamiliyCache.d.ts +90 -90
  40. package/dist/cjs/entities/DocumentFamiliyCache.js +282 -282
  41. package/dist/cjs/entities/Entity.d.ts +206 -206
  42. package/dist/cjs/entities/Entity.js +520 -520
  43. package/dist/cjs/entities/EntityStore.d.ts +85 -85
  44. package/dist/cjs/entities/EntityStore.js +479 -479
  45. package/dist/cjs/files/EntityFile.d.ts +31 -31
  46. package/dist/cjs/files/EntityFile.js +76 -76
  47. package/dist/cjs/files/FileManager.d.ts +42 -42
  48. package/dist/cjs/files/FileManager.js +152 -152
  49. package/dist/cjs/files/FileStorage.d.ts +28 -28
  50. package/dist/cjs/files/FileStorage.js +104 -104
  51. package/dist/cjs/files/utils.d.ts +8 -8
  52. package/dist/cjs/files/utils.js +55 -55
  53. package/dist/cjs/files/utils.test.d.ts +1 -1
  54. package/dist/cjs/files/utils.test.js +80 -80
  55. package/dist/cjs/idb.d.ts +11 -11
  56. package/dist/cjs/idb.js +111 -111
  57. package/dist/cjs/index.d.ts +21 -21
  58. package/dist/cjs/index.js +23 -23
  59. package/dist/cjs/metadata/AckInfoStore.d.ts +10 -10
  60. package/dist/cjs/metadata/AckInfoStore.js +25 -25
  61. package/dist/cjs/metadata/BaselinesStore.d.ts +33 -33
  62. package/dist/cjs/metadata/BaselinesStore.js +89 -89
  63. package/dist/cjs/metadata/LocalReplicaStore.d.ts +17 -17
  64. package/dist/cjs/metadata/LocalReplicaStore.js +47 -47
  65. package/dist/cjs/metadata/MessageCreator.d.ts +19 -19
  66. package/dist/cjs/metadata/MessageCreator.js +127 -127
  67. package/dist/cjs/metadata/Metadata.d.ts +112 -112
  68. package/dist/cjs/metadata/Metadata.js +352 -352
  69. package/dist/cjs/metadata/OperationsStore.d.ts +53 -53
  70. package/dist/cjs/metadata/OperationsStore.js +152 -152
  71. package/dist/cjs/metadata/SchemaStore.d.ts +9 -9
  72. package/dist/cjs/metadata/SchemaStore.js +38 -38
  73. package/dist/cjs/metadata/openMetadataDatabase.d.ts +19 -19
  74. package/dist/cjs/metadata/openMetadataDatabase.js +219 -219
  75. package/dist/cjs/migration/db.d.ts +8 -8
  76. package/dist/cjs/migration/db.js +111 -111
  77. package/dist/cjs/migration/errors.d.ts +5 -5
  78. package/dist/cjs/migration/errors.js +11 -11
  79. package/dist/cjs/migration/openDatabase.d.ts +20 -20
  80. package/dist/cjs/migration/openDatabase.js +428 -428
  81. package/dist/cjs/migration/paths.d.ts +6 -6
  82. package/dist/cjs/migration/paths.js +52 -52
  83. package/dist/cjs/migration/paths.test.d.ts +1 -1
  84. package/dist/cjs/migration/paths.test.js +90 -90
  85. package/dist/cjs/queries/BaseQuery.d.ts +53 -53
  86. package/dist/cjs/queries/BaseQuery.js +135 -135
  87. package/dist/cjs/queries/CollectionQueries.d.ts +55 -55
  88. package/dist/cjs/queries/CollectionQueries.js +91 -91
  89. package/dist/cjs/queries/FindAllQuery.d.ts +12 -12
  90. package/dist/cjs/queries/FindAllQuery.js +42 -42
  91. package/dist/cjs/queries/FindInfiniteQuery.d.ts +19 -19
  92. package/dist/cjs/queries/FindInfiniteQuery.js +69 -69
  93. package/dist/cjs/queries/FindOneQuery.d.ts +12 -12
  94. package/dist/cjs/queries/FindOneQuery.js +42 -42
  95. package/dist/cjs/queries/FindPageQuery.d.ts +24 -24
  96. package/dist/cjs/queries/FindPageQuery.js +76 -76
  97. package/dist/cjs/queries/GetQuery.d.ts +10 -10
  98. package/dist/cjs/queries/GetQuery.js +29 -29
  99. package/dist/cjs/queries/QueryCache.d.ts +16 -16
  100. package/dist/cjs/queries/QueryCache.js +41 -41
  101. package/dist/cjs/queries/dbQueries.d.ts +22 -22
  102. package/dist/cjs/queries/dbQueries.js +125 -125
  103. package/dist/cjs/queries/keys.d.ts +10 -10
  104. package/dist/cjs/queries/keys.js +33 -33
  105. package/dist/cjs/queries/ranges.d.ts +2 -2
  106. package/dist/cjs/queries/ranges.js +69 -69
  107. package/dist/cjs/queries/types.d.ts +6 -6
  108. package/dist/cjs/queries/types.js +2 -2
  109. package/dist/cjs/queries/utils.d.ts +3 -3
  110. package/dist/cjs/queries/utils.js +24 -24
  111. package/dist/cjs/sync/FileSync.d.ts +23 -23
  112. package/dist/cjs/sync/FileSync.js +84 -84
  113. package/dist/cjs/sync/Heartbeat.d.ts +25 -25
  114. package/dist/cjs/sync/Heartbeat.js +63 -63
  115. package/dist/cjs/sync/PresenceManager.d.ts +43 -43
  116. package/dist/cjs/sync/PresenceManager.js +119 -119
  117. package/dist/cjs/sync/PushPullSync.d.ts +36 -36
  118. package/dist/cjs/sync/PushPullSync.js +143 -143
  119. package/dist/cjs/sync/ServerSyncEndpointProvider.d.ts +27 -27
  120. package/dist/cjs/sync/ServerSyncEndpointProvider.js +64 -64
  121. package/dist/cjs/sync/Sync.d.ts +146 -146
  122. package/dist/cjs/sync/Sync.js +270 -270
  123. package/dist/cjs/sync/WebSocketSync.d.ts +41 -41
  124. package/dist/cjs/sync/WebSocketSync.js +190 -190
  125. package/dist/cjs/types.d.ts +12 -12
  126. package/dist/cjs/types.js +2 -2
  127. package/dist/cjs/utils/Disposable.d.ts +6 -6
  128. package/dist/cjs/utils/Disposable.js +18 -18
  129. package/dist/cjs/utils/Resolvable.d.ts +8 -8
  130. package/dist/cjs/utils/Resolvable.js +22 -22
  131. package/dist/cjs/vanilla.d.ts +1 -1
  132. package/dist/cjs/vanilla.js +27 -27
  133. package/dist/esm/BackoffScheduler.d.ts +19 -19
  134. package/dist/esm/BackoffScheduler.js +39 -39
  135. package/dist/esm/DocumentManager.d.ts +28 -28
  136. package/dist/esm/DocumentManager.js +40 -40
  137. package/dist/esm/FakeWeakRef.d.ts +11 -11
  138. package/dist/esm/FakeWeakRef.js +14 -14
  139. package/dist/esm/IDBService.d.ts +9 -9
  140. package/dist/esm/IDBService.js +59 -59
  141. package/dist/esm/UndoHistory.d.ts +16 -16
  142. package/dist/esm/UndoHistory.js +46 -46
  143. package/dist/esm/__tests__/batching.test.d.ts +1 -1
  144. package/dist/esm/__tests__/batching.test.js +42 -42
  145. package/dist/esm/__tests__/documents.test.d.ts +1 -1
  146. package/dist/esm/__tests__/documents.test.js +413 -413
  147. package/dist/esm/__tests__/fixtures/testStorage.d.ts +123 -123
  148. package/dist/esm/__tests__/fixtures/testStorage.js +113 -113
  149. package/dist/esm/__tests__/legacyOids.test.d.ts +1 -1
  150. package/dist/esm/__tests__/legacyOids.test.js +288 -288
  151. package/dist/esm/__tests__/mutations.test.d.ts +1 -1
  152. package/dist/esm/__tests__/mutations.test.js +39 -39
  153. package/dist/esm/__tests__/queries.test.d.ts +1 -1
  154. package/dist/esm/__tests__/queries.test.js +316 -316
  155. package/dist/esm/__tests__/setup/indexedDB.d.ts +1 -1
  156. package/dist/esm/__tests__/setup/indexedDB.js +1 -1
  157. package/dist/esm/__tests__/undo.test.d.ts +1 -1
  158. package/dist/esm/__tests__/undo.test.js +84 -84
  159. package/dist/esm/client/Client.d.ts +99 -99
  160. package/dist/esm/client/Client.js +223 -223
  161. package/dist/esm/client/ClientDescriptor.d.ts +76 -76
  162. package/dist/esm/client/ClientDescriptor.js +193 -193
  163. package/dist/esm/client/constants.d.ts +1 -1
  164. package/dist/esm/client/constants.js +1 -1
  165. package/dist/esm/constants.d.ts +1 -1
  166. package/dist/esm/constants.js +1 -1
  167. package/dist/esm/context.d.ts +29 -29
  168. package/dist/esm/context.js +1 -1
  169. package/dist/esm/entities/DocumentFamiliyCache.d.ts +90 -90
  170. package/dist/esm/entities/DocumentFamiliyCache.js +278 -278
  171. package/dist/esm/entities/Entity.d.ts +206 -206
  172. package/dist/esm/entities/Entity.js +515 -515
  173. package/dist/esm/entities/EntityStore.d.ts +85 -85
  174. package/dist/esm/entities/EntityStore.js +475 -475
  175. package/dist/esm/files/EntityFile.d.ts +31 -31
  176. package/dist/esm/files/EntityFile.js +72 -72
  177. package/dist/esm/files/FileManager.d.ts +42 -42
  178. package/dist/esm/files/FileManager.js +148 -148
  179. package/dist/esm/files/FileStorage.d.ts +28 -28
  180. package/dist/esm/files/FileStorage.js +99 -99
  181. package/dist/esm/files/utils.d.ts +8 -8
  182. package/dist/esm/files/utils.js +46 -46
  183. package/dist/esm/files/utils.test.d.ts +1 -1
  184. package/dist/esm/files/utils.test.js +78 -78
  185. package/dist/esm/idb.d.ts +11 -11
  186. package/dist/esm/idb.js +100 -100
  187. package/dist/esm/index.d.ts +21 -21
  188. package/dist/esm/index.js +12 -12
  189. package/dist/esm/metadata/AckInfoStore.d.ts +10 -10
  190. package/dist/esm/metadata/AckInfoStore.js +21 -21
  191. package/dist/esm/metadata/BaselinesStore.d.ts +33 -33
  192. package/dist/esm/metadata/BaselinesStore.js +85 -85
  193. package/dist/esm/metadata/LocalReplicaStore.d.ts +17 -17
  194. package/dist/esm/metadata/LocalReplicaStore.js +40 -40
  195. package/dist/esm/metadata/MessageCreator.d.ts +19 -19
  196. package/dist/esm/metadata/MessageCreator.js +123 -123
  197. package/dist/esm/metadata/Metadata.d.ts +112 -112
  198. package/dist/esm/metadata/Metadata.js +348 -348
  199. package/dist/esm/metadata/OperationsStore.d.ts +53 -53
  200. package/dist/esm/metadata/OperationsStore.js +148 -148
  201. package/dist/esm/metadata/SchemaStore.d.ts +9 -9
  202. package/dist/esm/metadata/SchemaStore.js +34 -34
  203. package/dist/esm/metadata/openMetadataDatabase.d.ts +19 -19
  204. package/dist/esm/metadata/openMetadataDatabase.js +214 -214
  205. package/dist/esm/migration/db.d.ts +8 -8
  206. package/dist/esm/migration/db.js +103 -103
  207. package/dist/esm/migration/errors.d.ts +5 -5
  208. package/dist/esm/migration/errors.js +7 -7
  209. package/dist/esm/migration/openDatabase.d.ts +20 -20
  210. package/dist/esm/migration/openDatabase.js +423 -423
  211. package/dist/esm/migration/paths.d.ts +6 -6
  212. package/dist/esm/migration/paths.js +48 -48
  213. package/dist/esm/migration/paths.test.d.ts +1 -1
  214. package/dist/esm/migration/paths.test.js +88 -88
  215. package/dist/esm/queries/BaseQuery.d.ts +53 -53
  216. package/dist/esm/queries/BaseQuery.js +131 -131
  217. package/dist/esm/queries/CollectionQueries.d.ts +55 -55
  218. package/dist/esm/queries/CollectionQueries.js +87 -87
  219. package/dist/esm/queries/FindAllQuery.d.ts +12 -12
  220. package/dist/esm/queries/FindAllQuery.js +38 -38
  221. package/dist/esm/queries/FindInfiniteQuery.d.ts +19 -19
  222. package/dist/esm/queries/FindInfiniteQuery.js +65 -65
  223. package/dist/esm/queries/FindOneQuery.d.ts +12 -12
  224. package/dist/esm/queries/FindOneQuery.js +38 -38
  225. package/dist/esm/queries/FindPageQuery.d.ts +24 -24
  226. package/dist/esm/queries/FindPageQuery.js +72 -72
  227. package/dist/esm/queries/GetQuery.d.ts +10 -10
  228. package/dist/esm/queries/GetQuery.js +25 -25
  229. package/dist/esm/queries/QueryCache.d.ts +16 -16
  230. package/dist/esm/queries/QueryCache.js +37 -37
  231. package/dist/esm/queries/dbQueries.d.ts +22 -22
  232. package/dist/esm/queries/dbQueries.js +119 -119
  233. package/dist/esm/queries/keys.d.ts +10 -10
  234. package/dist/esm/queries/keys.js +29 -29
  235. package/dist/esm/queries/ranges.d.ts +2 -2
  236. package/dist/esm/queries/ranges.js +65 -65
  237. package/dist/esm/queries/types.d.ts +6 -6
  238. package/dist/esm/queries/types.js +1 -1
  239. package/dist/esm/queries/utils.d.ts +3 -3
  240. package/dist/esm/queries/utils.js +19 -19
  241. package/dist/esm/sync/FileSync.d.ts +23 -23
  242. package/dist/esm/sync/FileSync.js +80 -80
  243. package/dist/esm/sync/Heartbeat.d.ts +25 -25
  244. package/dist/esm/sync/Heartbeat.js +59 -59
  245. package/dist/esm/sync/PresenceManager.d.ts +43 -43
  246. package/dist/esm/sync/PresenceManager.js +115 -115
  247. package/dist/esm/sync/PushPullSync.d.ts +36 -36
  248. package/dist/esm/sync/PushPullSync.js +139 -139
  249. package/dist/esm/sync/ServerSyncEndpointProvider.d.ts +27 -27
  250. package/dist/esm/sync/ServerSyncEndpointProvider.js +57 -57
  251. package/dist/esm/sync/Sync.d.ts +146 -146
  252. package/dist/esm/sync/Sync.js +265 -265
  253. package/dist/esm/sync/{WebsocketSync.d.ts → WebSocketSync.d.ts} +41 -41
  254. package/dist/esm/sync/{WebsocketSync.js → WebSocketSync.js} +186 -186
  255. package/dist/esm/types.d.ts +12 -12
  256. package/dist/esm/types.js +1 -1
  257. package/dist/esm/utils/Disposable.d.ts +6 -6
  258. package/dist/esm/utils/Disposable.js +14 -14
  259. package/dist/esm/utils/Resolvable.d.ts +8 -8
  260. package/dist/esm/utils/Resolvable.js +18 -18
  261. package/dist/esm/vanilla.d.ts +1 -1
  262. package/dist/esm/vanilla.js +2 -2
  263. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  264. package/dist/tsconfig.tsbuildinfo +1 -1
  265. package/package.json +2 -2
  266. package/dist/cjs/AckInfoStore.d.ts +0 -10
  267. package/dist/cjs/AckInfoStore.js +0 -26
  268. package/dist/cjs/AckInfoStore.js.map +0 -1
  269. package/dist/cjs/BaselinesStore.d.ts +0 -10
  270. package/dist/cjs/BaselinesStore.js +0 -36
  271. package/dist/cjs/BaselinesStore.js.map +0 -1
  272. package/dist/cjs/Entity.d.ts +0 -96
  273. package/dist/cjs/Entity.js +0 -345
  274. package/dist/cjs/Entity.js.map +0 -1
  275. package/dist/cjs/EntityStore.d.ts +0 -36
  276. package/dist/cjs/EntityStore.js +0 -172
  277. package/dist/cjs/EntityStore.js.map +0 -1
  278. package/dist/cjs/LocalHistoryStore.d.ts +0 -15
  279. package/dist/cjs/LocalHistoryStore.js +0 -53
  280. package/dist/cjs/LocalHistoryStore.js.map +0 -1
  281. package/dist/cjs/LocalReplicaStore.d.ts +0 -13
  282. package/dist/cjs/LocalReplicaStore.js +0 -49
  283. package/dist/cjs/LocalReplicaStore.js.map +0 -1
  284. package/dist/cjs/MessageCreator.d.ts +0 -19
  285. package/dist/cjs/MessageCreator.js +0 -104
  286. package/dist/cjs/MessageCreator.js.map +0 -1
  287. package/dist/cjs/Metadata.d.ts +0 -91
  288. package/dist/cjs/Metadata.js +0 -250
  289. package/dist/cjs/Metadata.js.map +0 -1
  290. package/dist/cjs/OperationsStore.d.ts +0 -38
  291. package/dist/cjs/OperationsStore.js +0 -146
  292. package/dist/cjs/OperationsStore.js.map +0 -1
  293. package/dist/cjs/PresenceManager.d.ts +0 -30
  294. package/dist/cjs/PresenceManager.js +0 -89
  295. package/dist/cjs/PresenceManager.js.map +0 -1
  296. package/dist/cjs/Query.d.ts +0 -26
  297. package/dist/cjs/Query.js +0 -86
  298. package/dist/cjs/Query.js.map +0 -1
  299. package/dist/cjs/QueryMaker.d.ts +0 -18
  300. package/dist/cjs/QueryMaker.js +0 -98
  301. package/dist/cjs/QueryMaker.js.map +0 -1
  302. package/dist/cjs/QueryStore.d.ts +0 -38
  303. package/dist/cjs/QueryStore.js +0 -146
  304. package/dist/cjs/QueryStore.js.map +0 -1
  305. package/dist/cjs/SchemaStore.d.ts +0 -9
  306. package/dist/cjs/SchemaStore.js +0 -35
  307. package/dist/cjs/SchemaStore.js.map +0 -1
  308. package/dist/cjs/Storage.d.ts +0 -147
  309. package/dist/cjs/Storage.js +0 -346
  310. package/dist/cjs/Storage.js.map +0 -1
  311. package/dist/cjs/Sync.d.ts +0 -117
  312. package/dist/cjs/Sync.js +0 -561
  313. package/dist/cjs/Sync.js.map +0 -1
  314. package/dist/cjs/SyncHarness.d.ts +0 -45
  315. package/dist/cjs/SyncHarness.js +0 -110
  316. package/dist/cjs/SyncHarness.js.map +0 -1
  317. package/dist/cjs/indexes.d.ts +0 -3
  318. package/dist/cjs/indexes.js +0 -20
  319. package/dist/cjs/indexes.js.map +0 -1
  320. package/dist/cjs/metadata/LocalHistoryStore.d.ts +0 -15
  321. package/dist/cjs/metadata/LocalHistoryStore.js +0 -53
  322. package/dist/cjs/metadata/LocalHistoryStore.js.map +0 -1
  323. package/dist/cjs/openDocumentDatabase.d.ts +0 -12
  324. package/dist/cjs/openDocumentDatabase.js +0 -432
  325. package/dist/cjs/openDocumentDatabase.js.map +0 -1
  326. package/dist/cjs/queries/LiveQuery.d.ts +0 -28
  327. package/dist/cjs/queries/LiveQuery.js +0 -96
  328. package/dist/cjs/queries/LiveQuery.js.map +0 -1
  329. package/dist/cjs/queries/LiveQueryMaker.d.ts +0 -15
  330. package/dist/cjs/queries/LiveQueryMaker.js +0 -42
  331. package/dist/cjs/queries/LiveQueryMaker.js.map +0 -1
  332. package/dist/cjs/queries/LiveQueryStore.d.ts +0 -33
  333. package/dist/cjs/queries/LiveQueryStore.js +0 -85
  334. package/dist/cjs/queries/LiveQueryStore.js.map +0 -1
  335. package/dist/cjs/queries/Query.d.ts +0 -18
  336. package/dist/cjs/queries/Query.js +0 -36
  337. package/dist/cjs/queries/Query.js.map +0 -1
  338. package/dist/cjs/queries/QueryMaker.d.ts +0 -14
  339. package/dist/cjs/queries/QueryMaker.js +0 -42
  340. package/dist/cjs/queries/QueryMaker.js.map +0 -1
  341. package/dist/cjs/queries/QueryStore.d.ts +0 -35
  342. package/dist/cjs/queries/QueryStore.js +0 -130
  343. package/dist/cjs/queries/QueryStore.js.map +0 -1
  344. package/dist/cjs/queries2/BaseQuery.d.ts +0 -39
  345. package/dist/cjs/queries2/BaseQuery.js +0 -99
  346. package/dist/cjs/queries2/BaseQuery.js.map +0 -1
  347. package/dist/cjs/queries2/CollectionQueries.d.ts +0 -55
  348. package/dist/cjs/queries2/CollectionQueries.js +0 -83
  349. package/dist/cjs/queries2/CollectionQueries.js.map +0 -1
  350. package/dist/cjs/queries2/FindAllQuery.d.ts +0 -11
  351. package/dist/cjs/queries2/FindAllQuery.js +0 -34
  352. package/dist/cjs/queries2/FindAllQuery.js.map +0 -1
  353. package/dist/cjs/queries2/FindInfiniteQuery.d.ts +0 -18
  354. package/dist/cjs/queries2/FindInfiniteQuery.js +0 -61
  355. package/dist/cjs/queries2/FindInfiniteQuery.js.map +0 -1
  356. package/dist/cjs/queries2/FindOneQuery.d.ts +0 -11
  357. package/dist/cjs/queries2/FindOneQuery.js +0 -34
  358. package/dist/cjs/queries2/FindOneQuery.js.map +0 -1
  359. package/dist/cjs/queries2/FindPageQuery.d.ts +0 -23
  360. package/dist/cjs/queries2/FindPageQuery.js +0 -68
  361. package/dist/cjs/queries2/FindPageQuery.js.map +0 -1
  362. package/dist/cjs/queries2/GetQuery.d.ts +0 -10
  363. package/dist/cjs/queries2/GetQuery.js +0 -30
  364. package/dist/cjs/queries2/GetQuery.js.map +0 -1
  365. package/dist/cjs/queries2/QueryCache.d.ts +0 -16
  366. package/dist/cjs/queries2/QueryCache.js +0 -40
  367. package/dist/cjs/queries2/QueryCache.js.map +0 -1
  368. package/dist/cjs/queries2/dbQueries.d.ts +0 -22
  369. package/dist/cjs/queries2/dbQueries.js +0 -126
  370. package/dist/cjs/queries2/dbQueries.js.map +0 -1
  371. package/dist/cjs/queries2/keys.d.ts +0 -10
  372. package/dist/cjs/queries2/keys.js +0 -34
  373. package/dist/cjs/queries2/keys.js.map +0 -1
  374. package/dist/cjs/queries2/ranges.d.ts +0 -2
  375. package/dist/cjs/queries2/ranges.js +0 -70
  376. package/dist/cjs/queries2/ranges.js.map +0 -1
  377. package/dist/cjs/queries2/types.d.ts +0 -6
  378. package/dist/cjs/queries2/types.js +0 -3
  379. package/dist/cjs/queries2/types.js.map +0 -1
  380. package/dist/cjs/queries2/utils.d.ts +0 -1
  381. package/dist/cjs/queries2/utils.js +0 -20
  382. package/dist/cjs/queries2/utils.js.map +0 -1
  383. package/dist/cjs/reactives/DocumentFamiliyCache.d.ts +0 -47
  384. package/dist/cjs/reactives/DocumentFamiliyCache.js +0 -211
  385. package/dist/cjs/reactives/DocumentFamiliyCache.js.map +0 -1
  386. package/dist/cjs/reactives/Entity.d.ts +0 -191
  387. package/dist/cjs/reactives/Entity.js +0 -463
  388. package/dist/cjs/reactives/Entity.js.map +0 -1
  389. package/dist/cjs/reactives/EntityStore.d.ts +0 -84
  390. package/dist/cjs/reactives/EntityStore.js +0 -422
  391. package/dist/cjs/reactives/EntityStore.js.map +0 -1
  392. package/dist/cjs/reactives/FakeWeakRef.d.ts +0 -11
  393. package/dist/cjs/reactives/FakeWeakRef.js +0 -19
  394. package/dist/cjs/reactives/FakeWeakRef.js.map +0 -1
  395. package/dist/cjs/v2/AckInfoStore.d.ts +0 -10
  396. package/dist/cjs/v2/AckInfoStore.js +0 -26
  397. package/dist/cjs/v2/AckInfoStore.js.map +0 -1
  398. package/dist/cjs/v2/BaselinesStore.d.ts +0 -10
  399. package/dist/cjs/v2/BaselinesStore.js +0 -36
  400. package/dist/cjs/v2/BaselinesStore.js.map +0 -1
  401. package/dist/cjs/v2/DocumentManager.d.ts +0 -19
  402. package/dist/cjs/v2/DocumentManager.js +0 -47
  403. package/dist/cjs/v2/DocumentManager.js.map +0 -1
  404. package/dist/cjs/v2/Entity.d.ts +0 -87
  405. package/dist/cjs/v2/Entity.js +0 -305
  406. package/dist/cjs/v2/Entity.js.map +0 -1
  407. package/dist/cjs/v2/EntityStore.d.ts +0 -37
  408. package/dist/cjs/v2/EntityStore.js +0 -165
  409. package/dist/cjs/v2/EntityStore.js.map +0 -1
  410. package/dist/cjs/v2/IDBService.d.ts +0 -7
  411. package/dist/cjs/v2/IDBService.js +0 -26
  412. package/dist/cjs/v2/IDBService.js.map +0 -1
  413. package/dist/cjs/v2/LocalHistoryStore.d.ts +0 -15
  414. package/dist/cjs/v2/LocalHistoryStore.js +0 -53
  415. package/dist/cjs/v2/LocalHistoryStore.js.map +0 -1
  416. package/dist/cjs/v2/LocalReplicaStore.d.ts +0 -14
  417. package/dist/cjs/v2/LocalReplicaStore.js +0 -49
  418. package/dist/cjs/v2/LocalReplicaStore.js.map +0 -1
  419. package/dist/cjs/v2/MessageCreator.d.ts +0 -19
  420. package/dist/cjs/v2/MessageCreator.js +0 -99
  421. package/dist/cjs/v2/MessageCreator.js.map +0 -1
  422. package/dist/cjs/v2/Metadata.d.ts +0 -90
  423. package/dist/cjs/v2/Metadata.js +0 -251
  424. package/dist/cjs/v2/Metadata.js.map +0 -1
  425. package/dist/cjs/v2/OperationsStore.d.ts +0 -38
  426. package/dist/cjs/v2/OperationsStore.js +0 -146
  427. package/dist/cjs/v2/OperationsStore.js.map +0 -1
  428. package/dist/cjs/v2/PresenceManager.d.ts +0 -24
  429. package/dist/cjs/v2/PresenceManager.js +0 -73
  430. package/dist/cjs/v2/PresenceManager.js.map +0 -1
  431. package/dist/cjs/v2/Query.d.ts +0 -24
  432. package/dist/cjs/v2/Query.js +0 -79
  433. package/dist/cjs/v2/Query.js.map +0 -1
  434. package/dist/cjs/v2/QueryMaker.d.ts +0 -16
  435. package/dist/cjs/v2/QueryMaker.js +0 -84
  436. package/dist/cjs/v2/QueryMaker.js.map +0 -1
  437. package/dist/cjs/v2/QueryStore.d.ts +0 -26
  438. package/dist/cjs/v2/QueryStore.js +0 -136
  439. package/dist/cjs/v2/QueryStore.js.map +0 -1
  440. package/dist/cjs/v2/SchemaStore.d.ts +0 -9
  441. package/dist/cjs/v2/SchemaStore.js +0 -35
  442. package/dist/cjs/v2/SchemaStore.js.map +0 -1
  443. package/dist/cjs/v2/Storage.d.ts +0 -80
  444. package/dist/cjs/v2/Storage.js +0 -154
  445. package/dist/cjs/v2/Storage.js.map +0 -1
  446. package/dist/cjs/v2/Sync.d.ts +0 -42
  447. package/dist/cjs/v2/Sync.js +0 -98
  448. package/dist/cjs/v2/Sync.js.map +0 -1
  449. package/dist/cjs/v2/SyncHarness.d.ts +0 -45
  450. package/dist/cjs/v2/SyncHarness.js +0 -110
  451. package/dist/cjs/v2/SyncHarness.js.map +0 -1
  452. package/dist/cjs/v2/__tests__/documents.test.d.ts +0 -1
  453. package/dist/cjs/v2/__tests__/documents.test.js +0 -185
  454. package/dist/cjs/v2/__tests__/documents.test.js.map +0 -1
  455. package/dist/cjs/v2/__tests__/fixtures/testStorage.d.ts +0 -189
  456. package/dist/cjs/v2/__tests__/fixtures/testStorage.js +0 -93
  457. package/dist/cjs/v2/__tests__/fixtures/testStorage.js.map +0 -1
  458. package/dist/cjs/v2/__tests__/queries.test.d.ts +0 -1
  459. package/dist/cjs/v2/__tests__/queries.test.js +0 -92
  460. package/dist/cjs/v2/__tests__/queries.test.js.map +0 -1
  461. package/dist/cjs/v2/__tests__/setup/indexedDB.d.ts +0 -1
  462. package/dist/cjs/v2/__tests__/setup/indexedDB.js +0 -4
  463. package/dist/cjs/v2/__tests__/setup/indexedDB.js.map +0 -1
  464. package/dist/cjs/v2/constants.d.ts +0 -1
  465. package/dist/cjs/v2/constants.js +0 -5
  466. package/dist/cjs/v2/constants.js.map +0 -1
  467. package/dist/cjs/v2/idb.d.ts +0 -6
  468. package/dist/cjs/v2/idb.js +0 -71
  469. package/dist/cjs/v2/idb.js.map +0 -1
  470. package/dist/cjs/v2/index.d.ts +0 -6
  471. package/dist/cjs/v2/index.js +0 -14
  472. package/dist/cjs/v2/index.js.map +0 -1
  473. package/dist/cjs/v2/indexes.d.ts +0 -3
  474. package/dist/cjs/v2/indexes.js +0 -20
  475. package/dist/cjs/v2/indexes.js.map +0 -1
  476. package/dist/cjs/v2/openDocumentDatabase.d.ts +0 -9
  477. package/dist/cjs/v2/openDocumentDatabase.js +0 -100
  478. package/dist/cjs/v2/openDocumentDatabase.js.map +0 -1
  479. package/dist/cjs/v2/types.d.ts +0 -3
  480. package/dist/cjs/v2/types.js +0 -3
  481. package/dist/cjs/v2/types.js.map +0 -1
  482. package/dist/esm/AckInfoStore.d.ts +0 -10
  483. package/dist/esm/AckInfoStore.js +0 -22
  484. package/dist/esm/AckInfoStore.js.map +0 -1
  485. package/dist/esm/BaselinesStore.d.ts +0 -10
  486. package/dist/esm/BaselinesStore.js +0 -32
  487. package/dist/esm/BaselinesStore.js.map +0 -1
  488. package/dist/esm/Entity.d.ts +0 -96
  489. package/dist/esm/Entity.js +0 -337
  490. package/dist/esm/Entity.js.map +0 -1
  491. package/dist/esm/EntityStore.d.ts +0 -36
  492. package/dist/esm/EntityStore.js +0 -168
  493. package/dist/esm/EntityStore.js.map +0 -1
  494. package/dist/esm/LocalHistoryStore.d.ts +0 -15
  495. package/dist/esm/LocalHistoryStore.js +0 -49
  496. package/dist/esm/LocalHistoryStore.js.map +0 -1
  497. package/dist/esm/LocalReplicaStore.d.ts +0 -13
  498. package/dist/esm/LocalReplicaStore.js +0 -42
  499. package/dist/esm/LocalReplicaStore.js.map +0 -1
  500. package/dist/esm/MessageCreator.d.ts +0 -19
  501. package/dist/esm/MessageCreator.js +0 -97
  502. package/dist/esm/MessageCreator.js.map +0 -1
  503. package/dist/esm/Metadata.d.ts +0 -91
  504. package/dist/esm/Metadata.js +0 -245
  505. package/dist/esm/Metadata.js.map +0 -1
  506. package/dist/esm/OperationsStore.d.ts +0 -38
  507. package/dist/esm/OperationsStore.js +0 -142
  508. package/dist/esm/OperationsStore.js.map +0 -1
  509. package/dist/esm/PresenceManager.d.ts +0 -30
  510. package/dist/esm/PresenceManager.js +0 -85
  511. package/dist/esm/PresenceManager.js.map +0 -1
  512. package/dist/esm/Query.d.ts +0 -26
  513. package/dist/esm/Query.js +0 -82
  514. package/dist/esm/Query.js.map +0 -1
  515. package/dist/esm/QueryMaker.d.ts +0 -18
  516. package/dist/esm/QueryMaker.js +0 -94
  517. package/dist/esm/QueryMaker.js.map +0 -1
  518. package/dist/esm/QueryStore.d.ts +0 -38
  519. package/dist/esm/QueryStore.js +0 -142
  520. package/dist/esm/QueryStore.js.map +0 -1
  521. package/dist/esm/SchemaStore.d.ts +0 -9
  522. package/dist/esm/SchemaStore.js +0 -31
  523. package/dist/esm/SchemaStore.js.map +0 -1
  524. package/dist/esm/Storage.d.ts +0 -147
  525. package/dist/esm/Storage.js +0 -341
  526. package/dist/esm/Storage.js.map +0 -1
  527. package/dist/esm/Sync.d.ts +0 -117
  528. package/dist/esm/Sync.js +0 -553
  529. package/dist/esm/Sync.js.map +0 -1
  530. package/dist/esm/SyncHarness.d.ts +0 -45
  531. package/dist/esm/SyncHarness.js +0 -105
  532. package/dist/esm/SyncHarness.js.map +0 -1
  533. package/dist/esm/indexes.d.ts +0 -3
  534. package/dist/esm/indexes.js +0 -15
  535. package/dist/esm/indexes.js.map +0 -1
  536. package/dist/esm/metadata/LocalHistoryStore.d.ts +0 -15
  537. package/dist/esm/metadata/LocalHistoryStore.js +0 -49
  538. package/dist/esm/metadata/LocalHistoryStore.js.map +0 -1
  539. package/dist/esm/openDocumentDatabase.d.ts +0 -12
  540. package/dist/esm/openDocumentDatabase.js +0 -428
  541. package/dist/esm/openDocumentDatabase.js.map +0 -1
  542. package/dist/esm/queries/LiveQuery.d.ts +0 -28
  543. package/dist/esm/queries/LiveQuery.js +0 -92
  544. package/dist/esm/queries/LiveQuery.js.map +0 -1
  545. package/dist/esm/queries/LiveQueryMaker.d.ts +0 -15
  546. package/dist/esm/queries/LiveQueryMaker.js +0 -38
  547. package/dist/esm/queries/LiveQueryMaker.js.map +0 -1
  548. package/dist/esm/queries/LiveQueryStore.d.ts +0 -33
  549. package/dist/esm/queries/LiveQueryStore.js +0 -81
  550. package/dist/esm/queries/LiveQueryStore.js.map +0 -1
  551. package/dist/esm/queries/Query.d.ts +0 -18
  552. package/dist/esm/queries/Query.js +0 -32
  553. package/dist/esm/queries/Query.js.map +0 -1
  554. package/dist/esm/queries/QueryMaker.d.ts +0 -14
  555. package/dist/esm/queries/QueryMaker.js +0 -38
  556. package/dist/esm/queries/QueryMaker.js.map +0 -1
  557. package/dist/esm/queries/QueryStore.d.ts +0 -35
  558. package/dist/esm/queries/QueryStore.js +0 -126
  559. package/dist/esm/queries/QueryStore.js.map +0 -1
  560. package/dist/esm/queries2/BaseQuery.d.ts +0 -39
  561. package/dist/esm/queries2/BaseQuery.js +0 -95
  562. package/dist/esm/queries2/BaseQuery.js.map +0 -1
  563. package/dist/esm/queries2/CollectionQueries.d.ts +0 -55
  564. package/dist/esm/queries2/CollectionQueries.js +0 -79
  565. package/dist/esm/queries2/CollectionQueries.js.map +0 -1
  566. package/dist/esm/queries2/FindAllQuery.d.ts +0 -11
  567. package/dist/esm/queries2/FindAllQuery.js +0 -30
  568. package/dist/esm/queries2/FindAllQuery.js.map +0 -1
  569. package/dist/esm/queries2/FindInfiniteQuery.d.ts +0 -18
  570. package/dist/esm/queries2/FindInfiniteQuery.js +0 -57
  571. package/dist/esm/queries2/FindInfiniteQuery.js.map +0 -1
  572. package/dist/esm/queries2/FindOneQuery.d.ts +0 -11
  573. package/dist/esm/queries2/FindOneQuery.js +0 -30
  574. package/dist/esm/queries2/FindOneQuery.js.map +0 -1
  575. package/dist/esm/queries2/FindPageQuery.d.ts +0 -23
  576. package/dist/esm/queries2/FindPageQuery.js +0 -64
  577. package/dist/esm/queries2/FindPageQuery.js.map +0 -1
  578. package/dist/esm/queries2/GetQuery.d.ts +0 -10
  579. package/dist/esm/queries2/GetQuery.js +0 -26
  580. package/dist/esm/queries2/GetQuery.js.map +0 -1
  581. package/dist/esm/queries2/QueryCache.d.ts +0 -16
  582. package/dist/esm/queries2/QueryCache.js +0 -36
  583. package/dist/esm/queries2/QueryCache.js.map +0 -1
  584. package/dist/esm/queries2/dbQueries.d.ts +0 -22
  585. package/dist/esm/queries2/dbQueries.js +0 -120
  586. package/dist/esm/queries2/dbQueries.js.map +0 -1
  587. package/dist/esm/queries2/keys.d.ts +0 -10
  588. package/dist/esm/queries2/keys.js +0 -30
  589. package/dist/esm/queries2/keys.js.map +0 -1
  590. package/dist/esm/queries2/ranges.d.ts +0 -2
  591. package/dist/esm/queries2/ranges.js +0 -66
  592. package/dist/esm/queries2/ranges.js.map +0 -1
  593. package/dist/esm/queries2/types.d.ts +0 -6
  594. package/dist/esm/queries2/types.js +0 -2
  595. package/dist/esm/queries2/types.js.map +0 -1
  596. package/dist/esm/queries2/utils.d.ts +0 -1
  597. package/dist/esm/queries2/utils.js +0 -16
  598. package/dist/esm/queries2/utils.js.map +0 -1
  599. package/dist/esm/reactives/DocumentFamiliyCache.d.ts +0 -47
  600. package/dist/esm/reactives/DocumentFamiliyCache.js +0 -207
  601. package/dist/esm/reactives/DocumentFamiliyCache.js.map +0 -1
  602. package/dist/esm/reactives/Entity.d.ts +0 -191
  603. package/dist/esm/reactives/Entity.js +0 -458
  604. package/dist/esm/reactives/Entity.js.map +0 -1
  605. package/dist/esm/reactives/EntityStore.d.ts +0 -84
  606. package/dist/esm/reactives/EntityStore.js +0 -418
  607. package/dist/esm/reactives/EntityStore.js.map +0 -1
  608. package/dist/esm/reactives/FakeWeakRef.d.ts +0 -11
  609. package/dist/esm/reactives/FakeWeakRef.js +0 -15
  610. package/dist/esm/reactives/FakeWeakRef.js.map +0 -1
  611. package/dist/esm/v2/AckInfoStore.d.ts +0 -10
  612. package/dist/esm/v2/AckInfoStore.js +0 -22
  613. package/dist/esm/v2/AckInfoStore.js.map +0 -1
  614. package/dist/esm/v2/BaselinesStore.d.ts +0 -10
  615. package/dist/esm/v2/BaselinesStore.js +0 -32
  616. package/dist/esm/v2/BaselinesStore.js.map +0 -1
  617. package/dist/esm/v2/DocumentManager.d.ts +0 -19
  618. package/dist/esm/v2/DocumentManager.js +0 -43
  619. package/dist/esm/v2/DocumentManager.js.map +0 -1
  620. package/dist/esm/v2/Entity.d.ts +0 -91
  621. package/dist/esm/v2/Entity.js +0 -305
  622. package/dist/esm/v2/Entity.js.map +0 -1
  623. package/dist/esm/v2/EntityStore.d.ts +0 -37
  624. package/dist/esm/v2/EntityStore.js +0 -166
  625. package/dist/esm/v2/EntityStore.js.map +0 -1
  626. package/dist/esm/v2/IDBService.d.ts +0 -7
  627. package/dist/esm/v2/IDBService.js +0 -22
  628. package/dist/esm/v2/IDBService.js.map +0 -1
  629. package/dist/esm/v2/LocalHistoryStore.d.ts +0 -15
  630. package/dist/esm/v2/LocalHistoryStore.js +0 -49
  631. package/dist/esm/v2/LocalHistoryStore.js.map +0 -1
  632. package/dist/esm/v2/LocalReplicaStore.d.ts +0 -14
  633. package/dist/esm/v2/LocalReplicaStore.js +0 -42
  634. package/dist/esm/v2/LocalReplicaStore.js.map +0 -1
  635. package/dist/esm/v2/MessageCreator.d.ts +0 -19
  636. package/dist/esm/v2/MessageCreator.js +0 -92
  637. package/dist/esm/v2/MessageCreator.js.map +0 -1
  638. package/dist/esm/v2/Metadata.d.ts +0 -90
  639. package/dist/esm/v2/Metadata.js +0 -246
  640. package/dist/esm/v2/Metadata.js.map +0 -1
  641. package/dist/esm/v2/OperationsStore.d.ts +0 -38
  642. package/dist/esm/v2/OperationsStore.js +0 -142
  643. package/dist/esm/v2/OperationsStore.js.map +0 -1
  644. package/dist/esm/v2/PresenceManager.d.ts +0 -24
  645. package/dist/esm/v2/PresenceManager.js +0 -69
  646. package/dist/esm/v2/PresenceManager.js.map +0 -1
  647. package/dist/esm/v2/Query.d.ts +0 -24
  648. package/dist/esm/v2/Query.js +0 -75
  649. package/dist/esm/v2/Query.js.map +0 -1
  650. package/dist/esm/v2/QueryMaker.d.ts +0 -16
  651. package/dist/esm/v2/QueryMaker.js +0 -80
  652. package/dist/esm/v2/QueryMaker.js.map +0 -1
  653. package/dist/esm/v2/QueryStore.d.ts +0 -26
  654. package/dist/esm/v2/QueryStore.js +0 -132
  655. package/dist/esm/v2/QueryStore.js.map +0 -1
  656. package/dist/esm/v2/SchemaStore.d.ts +0 -9
  657. package/dist/esm/v2/SchemaStore.js +0 -31
  658. package/dist/esm/v2/SchemaStore.js.map +0 -1
  659. package/dist/esm/v2/Storage.d.ts +0 -80
  660. package/dist/esm/v2/Storage.js +0 -149
  661. package/dist/esm/v2/Storage.js.map +0 -1
  662. package/dist/esm/v2/Sync.d.ts +0 -42
  663. package/dist/esm/v2/Sync.js +0 -94
  664. package/dist/esm/v2/Sync.js.map +0 -1
  665. package/dist/esm/v2/SyncHarness.d.ts +0 -45
  666. package/dist/esm/v2/SyncHarness.js +0 -105
  667. package/dist/esm/v2/SyncHarness.js.map +0 -1
  668. package/dist/esm/v2/__tests__/documents.test.d.ts +0 -1
  669. package/dist/esm/v2/__tests__/documents.test.js +0 -208
  670. package/dist/esm/v2/__tests__/documents.test.js.map +0 -1
  671. package/dist/esm/v2/__tests__/fixtures/testStorage.d.ts +0 -223
  672. package/dist/esm/v2/__tests__/fixtures/testStorage.js +0 -106
  673. package/dist/esm/v2/__tests__/fixtures/testStorage.js.map +0 -1
  674. package/dist/esm/v2/__tests__/queries.test.d.ts +0 -1
  675. package/dist/esm/v2/__tests__/queries.test.js +0 -90
  676. package/dist/esm/v2/__tests__/queries.test.js.map +0 -1
  677. package/dist/esm/v2/__tests__/setup/indexedDB.d.ts +0 -1
  678. package/dist/esm/v2/__tests__/setup/indexedDB.js +0 -2
  679. package/dist/esm/v2/__tests__/setup/indexedDB.js.map +0 -1
  680. package/dist/esm/v2/constants.d.ts +0 -1
  681. package/dist/esm/v2/constants.js +0 -2
  682. package/dist/esm/v2/constants.js.map +0 -1
  683. package/dist/esm/v2/idb.d.ts +0 -6
  684. package/dist/esm/v2/idb.js +0 -65
  685. package/dist/esm/v2/idb.js.map +0 -1
  686. package/dist/esm/v2/index.d.ts +0 -6
  687. package/dist/esm/v2/index.js +0 -5
  688. package/dist/esm/v2/index.js.map +0 -1
  689. package/dist/esm/v2/indexes.d.ts +0 -3
  690. package/dist/esm/v2/indexes.js +0 -15
  691. package/dist/esm/v2/indexes.js.map +0 -1
  692. package/dist/esm/v2/openDocumentDatabase.d.ts +0 -9
  693. package/dist/esm/v2/openDocumentDatabase.js +0 -96
  694. package/dist/esm/v2/openDocumentDatabase.js.map +0 -1
  695. package/dist/esm/v2/types.d.ts +0 -3
  696. package/dist/esm/v2/types.js +0 -2
  697. package/dist/esm/v2/types.js.map +0 -1
  698. /package/dist/esm/sync/{WebsocketSync.js.map → WebSocketSync.js.map} +0 -0
@@ -1,516 +1,516 @@
1
- var _a, _b;
2
- import { assert, assignOid, cloneDeep, decomposeOid, EventSubscriber, isFileRef, isObjectRef, maybeGetOid, traverseCollectionFieldsAndApplyDefaults, } from '@verdant-web/common';
3
- import { processValueFiles } from '../files/utils.js';
4
- export const ADD_OPERATIONS = '@@addOperations';
5
- export const DELETE = '@@delete';
6
- export const REBASE = '@@rebase';
7
- const REFRESH = '@@refresh';
8
- export const DEEP_CHANGE = '@@deepChange';
9
- export function refreshEntity(entity, info) {
10
- return entity[REFRESH](info);
11
- }
12
- export class Entity {
13
- hasSubscribersToDeepChanges() {
14
- return this.events.subscriberCount('changeDeep') > 0;
15
- }
16
- get hasSubscribers() {
17
- var _c, _d;
18
- if (this.events.totalSubscriberCount() > 0) {
19
- return true;
20
- }
21
- // even if nobody subscribes directly to this entity, if a parent
22
- // has a deep subscription that counts.
23
- let parent = (_c = this.parent) === null || _c === void 0 ? void 0 : _c.deref();
24
- while (parent) {
25
- if (parent.hasSubscribersToDeepChanges()) {
26
- return true;
27
- }
28
- parent = (_d = parent.parent) === null || _d === void 0 ? void 0 : _d.deref();
29
- }
30
- return false;
31
- }
32
- get deleted() {
33
- return this._deleted;
34
- }
35
- get value() {
36
- return this._current;
37
- }
38
- get isList() {
39
- return Array.isArray(this._current);
40
- }
41
- get updatedAt() {
42
- return this._updatedAt;
43
- }
44
- get deepUpdatedAt() {
45
- if (this.cachedDeepUpdatedAt)
46
- return this.cachedDeepUpdatedAt;
47
- // iterate over all children and take the latest timestamp
48
- let latest = this._updatedAt;
49
- if (this.isList) {
50
- this.forEach((child) => {
51
- if (child instanceof Entity) {
52
- const childTimestamp = child.deepUpdatedAt;
53
- if (childTimestamp && (!latest || childTimestamp > latest)) {
54
- latest = childTimestamp;
55
- }
56
- }
57
- });
58
- }
59
- else {
60
- this.values().forEach((child) => {
61
- if (child instanceof Entity) {
62
- const childTimestamp = child.deepUpdatedAt;
63
- if (childTimestamp && (!latest || childTimestamp > latest)) {
64
- latest = childTimestamp;
65
- }
66
- }
67
- });
68
- }
69
- this.cachedDeepUpdatedAt = latest;
70
- return latest;
71
- }
72
- get uid() {
73
- return this.oid;
74
- }
75
- constructor({ oid, store, fieldSchema, cache, parent, onAllUnsubscribed, readonlyKeys = [], }) {
76
- // if current is null, the entity was deleted.
77
- this._current = null;
78
- this._deleted = false;
79
- this.cachedSnapshot = null;
80
- this.cachedDestructure = null;
81
- this.cachedDeepUpdatedAt = null;
82
- this._updatedAt = null;
83
- this[_a] = (info) => {
84
- const { view, deleted, lastTimestamp } = this.cache.computeView(this.oid);
85
- this._current = view;
86
- const restored = this._deleted && !deleted;
87
- this._deleted = deleted;
88
- this.cachedDestructure = null;
89
- this._updatedAt = lastTimestamp ? lastTimestamp : null;
90
- this.cachedDeepUpdatedAt = null;
91
- if (this._deleted) {
92
- this.events.emit('delete', info);
93
- }
94
- else {
95
- this.events.emit('change', info);
96
- this[DEEP_CHANGE](this, info);
97
- }
98
- if (restored) {
99
- this.cachedSnapshot = null;
100
- this.events.emit('restore', info);
101
- }
102
- };
103
- this[_b] = (source, info) => {
104
- var _c;
105
- this.cachedSnapshot = null;
106
- this.cachedDeepUpdatedAt = null;
107
- this.events.emit('changeDeep', source, info);
108
- const parent = (_c = this.parent) === null || _c === void 0 ? void 0 : _c.deref();
109
- if (parent) {
110
- parent[DEEP_CHANGE](source, info);
111
- }
112
- };
113
- this.getChildFieldSchema = (key) => {
114
- if (this.fieldSchema.type === 'object') {
115
- return this.fieldSchema.properties[key];
116
- }
117
- else if (this.fieldSchema.type === 'array') {
118
- return this.fieldSchema.items;
119
- }
120
- else if (this.fieldSchema.type === 'map') {
121
- return this.fieldSchema.values;
122
- }
123
- else if (this.fieldSchema.type === 'any') {
124
- return this.fieldSchema;
125
- }
126
- throw new Error('Invalid field schema');
127
- };
128
- this.dispose = () => {
129
- this.events.dispose();
130
- };
131
- this.subscribe = (event, callback) => {
132
- const unsubscribe = this.events.subscribe(event, callback);
133
- return unsubscribe;
134
- };
135
- this.addPatches = (patches) => {
136
- this.store.addLocalOperations(patches);
137
- };
138
- this.cloneCurrent = () => {
139
- if (this._current === undefined) {
140
- return undefined;
141
- }
142
- return cloneDeep(this._current);
143
- };
144
- this.getSubObject = (oid, key) => {
145
- const fieldSchema = this.getChildFieldSchema(key);
146
- // this is a failure case, but trying to be graceful about it...
147
- // @ts-ignore
148
- // if (!fieldSchema) return null;
149
- return this.cache.getEntity(oid, fieldSchema, this);
150
- };
151
- this.wrapValue = (value, key) => {
152
- if (isObjectRef(value)) {
153
- const oid = value.id;
154
- const subObject = this.getSubObject(oid, key);
155
- if (subObject) {
156
- return subObject;
157
- }
158
- throw new Error(`CACHE MISS: Subobject ${oid} does not exist on ${this.oid}`);
159
- }
160
- else if (isFileRef(value)) {
161
- const file = this.store.getFile(value.id);
162
- if (file) {
163
- file.subscribe('change', () => {
164
- this[DEEP_CHANGE](this, {
165
- isLocal: false,
166
- });
167
- });
168
- return file;
169
- }
170
- }
171
- return value;
172
- };
173
- this.processInputValue = (value, key) => {
174
- // disassociate incoming OIDs on values and generally break object
175
- // references. cloning doesn't work on files so those are
176
- // filtered out.
177
- // The goal here is to be safe about a bunch of cases that could
178
- // result in corrupt data, like...
179
- // ent1.set('objField', ent2.get('objField'))
180
- // or
181
- // var shared = { foo: 'bar' };
182
- // ent1.set('objField', shared);
183
- // ent2.set('objField', shared);
184
- // ... each of these would result in the same object being
185
- // referenced in multiple entities, which could mean introduction
186
- // of foreign OIDs, or one object being assigned different OIDs
187
- // with unexpected results.
188
- if (!(value instanceof File)) {
189
- value = cloneDeep(value, false);
190
- }
191
- const fieldSchema = this.getChildFieldSchema(key);
192
- if (fieldSchema) {
193
- traverseCollectionFieldsAndApplyDefaults(value, fieldSchema);
194
- }
195
- return processValueFiles(value, this.store.addFile);
196
- };
197
- this.get = (key) => {
198
- if (this.value === undefined || this.value === null) {
199
- throw new Error('Cannot access deleted entity');
200
- }
201
- const value = this.value[key];
202
- return this.wrapValue(value, key);
203
- };
204
- this.getAll = () => {
205
- if (this.value === undefined || this.value === null) {
206
- throw new Error('Cannot access deleted entity');
207
- }
208
- if (this.cachedDestructure)
209
- return this.cachedDestructure;
210
- let result;
211
- if (Array.isArray(this.value)) {
212
- result = this.value.map((value, index) => this.wrapValue(value, index));
213
- }
214
- else {
215
- result = {};
216
- for (const key in this.value) {
217
- result[key] = this.get(key);
218
- }
219
- }
220
- this.cachedDestructure = result;
221
- return result;
222
- };
223
- /**
224
- * Returns a copy of the entity and all sub-objects as
225
- * a plain object or array.
226
- */
227
- this.getSnapshot = () => {
228
- var _c;
229
- if (!this.value) {
230
- return null;
231
- }
232
- if (this.deleted) {
233
- return null;
234
- }
235
- if (this.cachedSnapshot) {
236
- return this.cachedSnapshot;
237
- }
238
- let snapshot;
239
- if (Array.isArray(this.value)) {
240
- snapshot = this.value.map((item, idx) => {
241
- var _c;
242
- if (isObjectRef(item)) {
243
- return (_c = this.getSubObject(item.id, idx)) === null || _c === void 0 ? void 0 : _c.getSnapshot();
244
- }
245
- else if (isFileRef(item)) {
246
- return this.getFileSnapshot(item);
247
- }
248
- return item;
249
- });
250
- }
251
- else {
252
- snapshot = Object.assign({}, this.value);
253
- for (const [key, value] of Object.entries(snapshot)) {
254
- if (isObjectRef(value)) {
255
- snapshot[key] = (_c = this.getSubObject(value.id, key)) === null || _c === void 0 ? void 0 : _c.getSnapshot();
256
- }
257
- else if (isFileRef(value)) {
258
- snapshot[key] = this.getFileSnapshot(value);
259
- }
260
- }
261
- }
262
- assignOid(snapshot, this.oid);
263
- this.cachedSnapshot = snapshot;
264
- return snapshot;
265
- };
266
- /**
267
- * Object methods
268
- */
269
- this.keys = () => {
270
- return Object.keys(this.value || {});
271
- };
272
- this.entries = () => {
273
- return Object.entries(this.getAll());
274
- };
275
- this.values = () => {
276
- return Object.values(this.getAll());
277
- };
278
- this.set = (key, value) => {
279
- if (this.readonlyKeys.includes(key)) {
280
- throw new Error(`Cannot set readonly key ${key.toString()}`);
281
- }
282
- this.addPatches(this.store.patchCreator.createSet(this.oid, key, this.processInputValue(value, key)));
283
- };
284
- this.delete = (key) => {
285
- if (Array.isArray(this.value)) {
286
- this.addPatches(this.store.patchCreator.createListDelete(this.oid, key, 1));
287
- }
288
- else {
289
- // the key must be deletable - i.e. optional in the schema
290
- const deleteMode = this.getDeleteMode(key);
291
- if (!deleteMode) {
292
- throw new Error(`Cannot delete key ${key} - the property is not marked as optional in the schema`);
293
- }
294
- if (deleteMode === 'delete') {
295
- this.addPatches(this.store.patchCreator.createRemove(this.oid, key));
296
- }
297
- else {
298
- this.addPatches(this.store.patchCreator.createSet(this.oid, key, null));
299
- }
300
- }
301
- };
302
- this.getDeleteMode = (key) => {
303
- if (this.readonlyKeys.includes(key)) {
304
- return false;
305
- }
306
- // 'any' is always deletable, and map values can be removed completely
307
- if (this.fieldSchema.type === 'any' || this.fieldSchema.type === 'map') {
308
- return 'delete';
309
- }
310
- if (this.fieldSchema.type === 'object') {
311
- const property = this.fieldSchema.properties[key];
312
- if (!property) {
313
- // huh, trying to delete a field that isn't specified
314
- // in the schema. we should use 'delete' mode.
315
- return 'delete';
316
- }
317
- if (property.type === 'any')
318
- return 'delete';
319
- // map can't be nullable
320
- // TODO: should it be?
321
- if (property.type === 'map')
322
- return false;
323
- // nullable properties can only be set null
324
- if (property.nullable)
325
- return 'null';
326
- }
327
- // no other parent objects support deleting
328
- return false;
329
- };
330
- /** @deprecated - renamed to delete */
331
- this.remove = this.delete.bind(this);
332
- this.update = (value, { replaceSubObjects = false, merge = true, } = {
333
- /**
334
- * If true, merged sub-objects will be replaced entirely if there's
335
- * ambiguity about their identity.
336
- */
337
- replaceSubObjects: false,
338
- /**
339
- * If false, omitted keys will erase their respective fields.
340
- */
341
- merge: true,
342
- }) => {
343
- if (!merge &&
344
- this.fieldSchema.type !== 'any' &&
345
- this.fieldSchema.type !== 'map') {
346
- throw new Error('Cannot use .update without merge if the field has a strict schema type. merge: false is only available on "any" or "map" types.');
347
- }
348
- for (const [key, field] of Object.entries(value)) {
349
- if (this.readonlyKeys.includes(key)) {
350
- throw new Error(`Cannot set readonly key ${key.toString()}`);
351
- }
352
- const fieldSchema = this.getChildFieldSchema(key);
353
- if (fieldSchema) {
354
- traverseCollectionFieldsAndApplyDefaults(field, fieldSchema);
355
- }
356
- }
357
- const withoutFiles = processValueFiles(value, this.store.addFile);
358
- this.addPatches(this.store.patchCreator.createDiff(this.getSnapshot(), assignOid(withoutFiles, this.oid), {
359
- mergeUnknownObjects: !replaceSubObjects,
360
- defaultUndefined: merge,
361
- }));
362
- };
363
- /**
364
- * List methods
365
- */
366
- /**
367
- * Returns the referent value of an item in the list, used for
368
- * operations which act on items. if the item is an object,
369
- * it will attempt to create an OID reference to it. If it
370
- * is a primitive, it will return the primitive.
371
- */
372
- this.getItemRefValue = (item) => {
373
- if (typeof item === 'object') {
374
- const itemOid = maybeGetOid(item);
375
- if (!itemOid || !this.cache.hasOid(itemOid)) {
376
- throw new Error(`Cannot move object ${JSON.stringify(item)} which does not exist in this list`);
377
- }
378
- return itemOid;
379
- }
380
- else {
381
- return item;
382
- }
383
- };
384
- this.push = (value) => {
385
- this.addPatches(this.store.patchCreator.createListPush(this.oid, this.processInputValue(value, this.value.length)));
386
- };
387
- this.insert = (index, value) => {
388
- this.addPatches(this.store.patchCreator.createListInsert(this.oid, index, this.processInputValue(value, index)));
389
- };
390
- this.move = (from, to) => {
391
- this.addPatches(this.store.patchCreator.createListMoveByIndex(this.oid, from, to));
392
- };
393
- this.moveItem = (item, to) => {
394
- const itemRef = this.getItemRefValue(item);
395
- if (isObjectRef(itemRef)) {
396
- this.addPatches(this.store.patchCreator.createListMoveByRef(this.oid, itemRef, to));
397
- }
398
- else {
399
- const index = this.value.indexOf(itemRef);
400
- this.addPatches(this.store.patchCreator.createListMoveByIndex(this.oid, index, to));
401
- }
402
- };
403
- this.removeAll = (item) => {
404
- this.addPatches(this.store.patchCreator.createListRemove(this.oid, this.getItemRefValue(item)));
405
- };
406
- this.removeFirst = (item) => {
407
- this.addPatches(this.store.patchCreator.createListRemove(this.oid, this.getItemRefValue(item), 'first'));
408
- };
409
- this.removeLast = (item) => {
410
- this.addPatches(this.store.patchCreator.createListRemove(this.oid, this.getItemRefValue(item), 'last'));
411
- };
412
- this.add = (item) => {
413
- this.addPatches(this.store.patchCreator.createListAdd(this.oid, this.processInputValue(item, this.value.length)));
414
- };
415
- this.has = (item) => {
416
- if (typeof item === 'object') {
417
- return this.value.some((val) => {
418
- if (isObjectRef(val))
419
- return val.id === maybeGetOid(item);
420
- // Sets of files don't work right now, there's no way to compare them
421
- // effectively.
422
- if (isFileRef(val))
423
- return false;
424
- return false;
425
- });
426
- }
427
- return this.value.includes(item);
428
- };
429
- // additional access methods
430
- this.getAsWrapped = () => {
431
- if (!this.isList)
432
- throw new Error('Cannot map items of a non-list');
433
- return this.value.map(this.wrapValue);
434
- };
435
- this.map = (callback) => {
436
- return this.getAsWrapped().map(callback);
437
- };
438
- this.filter = (callback) => {
439
- return this.getAsWrapped().filter((val, index) => {
440
- return callback(val, index);
441
- });
442
- };
443
- this.forEach = (callback) => {
444
- this.getAsWrapped().forEach(callback);
445
- };
446
- this.some = (predicate) => {
447
- return this.getAsWrapped().some(predicate);
448
- };
449
- this.every = (predicate) => {
450
- return this.getAsWrapped().every(predicate);
451
- };
452
- this.find = (predicate) => {
453
- return this.getAsWrapped().find(predicate);
454
- };
455
- this.includes = (item) => {
456
- return this.has(item);
457
- };
458
- this.oid = oid;
459
- const { collection } = decomposeOid(oid);
460
- this.collection = collection;
461
- this.store = store;
462
- this.fieldSchema = fieldSchema;
463
- this.readonlyKeys = readonlyKeys;
464
- this.cache = cache;
465
- this.parent = parent && this.cache.weakRef(parent);
466
- const { view, deleted, lastTimestamp } = this.cache.computeView(oid);
467
- this._current = view;
468
- this._deleted = deleted;
469
- this._updatedAt = lastTimestamp ? lastTimestamp : null;
470
- this.cachedDeepUpdatedAt = null;
471
- this.events = new EventSubscriber(() => {
472
- if (!this.hasSubscribers) {
473
- onAllUnsubscribed === null || onAllUnsubscribed === void 0 ? void 0 : onAllUnsubscribed();
474
- }
475
- });
476
- if (this.oid.includes('.') && !this.parent) {
477
- throw new Error('Parent must be provided for sub entities');
478
- }
479
- assert(!!fieldSchema, 'Field schema must be provided');
480
- }
481
- getFileSnapshot(item) {
482
- const file = this.store.getFile(item.id);
483
- if (file.url) {
484
- return { id: item.id, url: file.url };
485
- }
486
- else if (file.loading || file.failed) {
487
- return { id: item.id, url: undefined };
488
- }
489
- else {
490
- return { id: item.id, url: null };
491
- }
492
- }
493
- get length() {
494
- return this.value.length;
495
- }
496
- // list implements an iterator which maps items to wrapped
497
- // versions
498
- [(_a = REFRESH, _b = DEEP_CHANGE, Symbol.iterator)]() {
499
- let index = 0;
500
- return {
501
- next: () => {
502
- if (index < this.value.length) {
503
- return {
504
- value: this.get(index++),
505
- done: false,
506
- };
507
- }
508
- return {
509
- value: undefined,
510
- done: true,
511
- };
512
- },
513
- };
514
- }
515
- }
1
+ var _a, _b;
2
+ import { assert, assignOid, cloneDeep, decomposeOid, EventSubscriber, isFileRef, isObjectRef, maybeGetOid, traverseCollectionFieldsAndApplyDefaults, } from '@verdant-web/common';
3
+ import { processValueFiles } from '../files/utils.js';
4
+ export const ADD_OPERATIONS = '@@addOperations';
5
+ export const DELETE = '@@delete';
6
+ export const REBASE = '@@rebase';
7
+ const REFRESH = '@@refresh';
8
+ export const DEEP_CHANGE = '@@deepChange';
9
+ export function refreshEntity(entity, info) {
10
+ return entity[REFRESH](info);
11
+ }
12
+ export class Entity {
13
+ hasSubscribersToDeepChanges() {
14
+ return this.events.subscriberCount('changeDeep') > 0;
15
+ }
16
+ get hasSubscribers() {
17
+ var _c, _d;
18
+ if (this.events.totalSubscriberCount() > 0) {
19
+ return true;
20
+ }
21
+ // even if nobody subscribes directly to this entity, if a parent
22
+ // has a deep subscription that counts.
23
+ let parent = (_c = this.parent) === null || _c === void 0 ? void 0 : _c.deref();
24
+ while (parent) {
25
+ if (parent.hasSubscribersToDeepChanges()) {
26
+ return true;
27
+ }
28
+ parent = (_d = parent.parent) === null || _d === void 0 ? void 0 : _d.deref();
29
+ }
30
+ return false;
31
+ }
32
+ get deleted() {
33
+ return this._deleted;
34
+ }
35
+ get value() {
36
+ return this._current;
37
+ }
38
+ get isList() {
39
+ return Array.isArray(this._current);
40
+ }
41
+ get updatedAt() {
42
+ return this._updatedAt;
43
+ }
44
+ get deepUpdatedAt() {
45
+ if (this.cachedDeepUpdatedAt)
46
+ return this.cachedDeepUpdatedAt;
47
+ // iterate over all children and take the latest timestamp
48
+ let latest = this._updatedAt;
49
+ if (this.isList) {
50
+ this.forEach((child) => {
51
+ if (child instanceof Entity) {
52
+ const childTimestamp = child.deepUpdatedAt;
53
+ if (childTimestamp && (!latest || childTimestamp > latest)) {
54
+ latest = childTimestamp;
55
+ }
56
+ }
57
+ });
58
+ }
59
+ else {
60
+ this.values().forEach((child) => {
61
+ if (child instanceof Entity) {
62
+ const childTimestamp = child.deepUpdatedAt;
63
+ if (childTimestamp && (!latest || childTimestamp > latest)) {
64
+ latest = childTimestamp;
65
+ }
66
+ }
67
+ });
68
+ }
69
+ this.cachedDeepUpdatedAt = latest;
70
+ return latest;
71
+ }
72
+ get uid() {
73
+ return this.oid;
74
+ }
75
+ constructor({ oid, store, fieldSchema, cache, parent, onAllUnsubscribed, readonlyKeys = [], }) {
76
+ // if current is null, the entity was deleted.
77
+ this._current = null;
78
+ this._deleted = false;
79
+ this.cachedSnapshot = null;
80
+ this.cachedDestructure = null;
81
+ this.cachedDeepUpdatedAt = null;
82
+ this._updatedAt = null;
83
+ this[_a] = (info) => {
84
+ const { view, deleted, lastTimestamp } = this.cache.computeView(this.oid);
85
+ this._current = view;
86
+ const restored = this._deleted && !deleted;
87
+ this._deleted = deleted;
88
+ this.cachedDestructure = null;
89
+ this._updatedAt = lastTimestamp ? lastTimestamp : null;
90
+ this.cachedDeepUpdatedAt = null;
91
+ if (this._deleted) {
92
+ this.events.emit('delete', info);
93
+ }
94
+ else {
95
+ this.events.emit('change', info);
96
+ this[DEEP_CHANGE](this, info);
97
+ }
98
+ if (restored) {
99
+ this.cachedSnapshot = null;
100
+ this.events.emit('restore', info);
101
+ }
102
+ };
103
+ this[_b] = (source, info) => {
104
+ var _c;
105
+ this.cachedSnapshot = null;
106
+ this.cachedDeepUpdatedAt = null;
107
+ this.events.emit('changeDeep', source, info);
108
+ const parent = (_c = this.parent) === null || _c === void 0 ? void 0 : _c.deref();
109
+ if (parent) {
110
+ parent[DEEP_CHANGE](source, info);
111
+ }
112
+ };
113
+ this.getChildFieldSchema = (key) => {
114
+ if (this.fieldSchema.type === 'object') {
115
+ return this.fieldSchema.properties[key];
116
+ }
117
+ else if (this.fieldSchema.type === 'array') {
118
+ return this.fieldSchema.items;
119
+ }
120
+ else if (this.fieldSchema.type === 'map') {
121
+ return this.fieldSchema.values;
122
+ }
123
+ else if (this.fieldSchema.type === 'any') {
124
+ return this.fieldSchema;
125
+ }
126
+ throw new Error('Invalid field schema');
127
+ };
128
+ this.dispose = () => {
129
+ this.events.dispose();
130
+ };
131
+ this.subscribe = (event, callback) => {
132
+ const unsubscribe = this.events.subscribe(event, callback);
133
+ return unsubscribe;
134
+ };
135
+ this.addPatches = (patches) => {
136
+ this.store.addLocalOperations(patches);
137
+ };
138
+ this.cloneCurrent = () => {
139
+ if (this._current === undefined) {
140
+ return undefined;
141
+ }
142
+ return cloneDeep(this._current);
143
+ };
144
+ this.getSubObject = (oid, key) => {
145
+ const fieldSchema = this.getChildFieldSchema(key);
146
+ // this is a failure case, but trying to be graceful about it...
147
+ // @ts-ignore
148
+ // if (!fieldSchema) return null;
149
+ return this.cache.getEntity(oid, fieldSchema, this);
150
+ };
151
+ this.wrapValue = (value, key) => {
152
+ if (isObjectRef(value)) {
153
+ const oid = value.id;
154
+ const subObject = this.getSubObject(oid, key);
155
+ if (subObject) {
156
+ return subObject;
157
+ }
158
+ throw new Error(`CACHE MISS: Subobject ${oid} does not exist on ${this.oid}`);
159
+ }
160
+ else if (isFileRef(value)) {
161
+ const file = this.store.getFile(value.id);
162
+ if (file) {
163
+ file.subscribe('change', () => {
164
+ this[DEEP_CHANGE](this, {
165
+ isLocal: false,
166
+ });
167
+ });
168
+ return file;
169
+ }
170
+ }
171
+ return value;
172
+ };
173
+ this.processInputValue = (value, key) => {
174
+ // disassociate incoming OIDs on values and generally break object
175
+ // references. cloning doesn't work on files so those are
176
+ // filtered out.
177
+ // The goal here is to be safe about a bunch of cases that could
178
+ // result in corrupt data, like...
179
+ // ent1.set('objField', ent2.get('objField'))
180
+ // or
181
+ // var shared = { foo: 'bar' };
182
+ // ent1.set('objField', shared);
183
+ // ent2.set('objField', shared);
184
+ // ... each of these would result in the same object being
185
+ // referenced in multiple entities, which could mean introduction
186
+ // of foreign OIDs, or one object being assigned different OIDs
187
+ // with unexpected results.
188
+ if (!(value instanceof File)) {
189
+ value = cloneDeep(value, false);
190
+ }
191
+ const fieldSchema = this.getChildFieldSchema(key);
192
+ if (fieldSchema) {
193
+ traverseCollectionFieldsAndApplyDefaults(value, fieldSchema);
194
+ }
195
+ return processValueFiles(value, this.store.addFile);
196
+ };
197
+ this.get = (key) => {
198
+ if (this.value === undefined || this.value === null) {
199
+ throw new Error('Cannot access deleted entity');
200
+ }
201
+ const value = this.value[key];
202
+ return this.wrapValue(value, key);
203
+ };
204
+ this.getAll = () => {
205
+ if (this.value === undefined || this.value === null) {
206
+ throw new Error('Cannot access deleted entity');
207
+ }
208
+ if (this.cachedDestructure)
209
+ return this.cachedDestructure;
210
+ let result;
211
+ if (Array.isArray(this.value)) {
212
+ result = this.value.map((value, index) => this.wrapValue(value, index));
213
+ }
214
+ else {
215
+ result = {};
216
+ for (const key in this.value) {
217
+ result[key] = this.get(key);
218
+ }
219
+ }
220
+ this.cachedDestructure = result;
221
+ return result;
222
+ };
223
+ /**
224
+ * Returns a copy of the entity and all sub-objects as
225
+ * a plain object or array.
226
+ */
227
+ this.getSnapshot = () => {
228
+ var _c;
229
+ if (!this.value) {
230
+ return null;
231
+ }
232
+ if (this.deleted) {
233
+ return null;
234
+ }
235
+ if (this.cachedSnapshot) {
236
+ return this.cachedSnapshot;
237
+ }
238
+ let snapshot;
239
+ if (Array.isArray(this.value)) {
240
+ snapshot = this.value.map((item, idx) => {
241
+ var _c;
242
+ if (isObjectRef(item)) {
243
+ return (_c = this.getSubObject(item.id, idx)) === null || _c === void 0 ? void 0 : _c.getSnapshot();
244
+ }
245
+ else if (isFileRef(item)) {
246
+ return this.getFileSnapshot(item);
247
+ }
248
+ return item;
249
+ });
250
+ }
251
+ else {
252
+ snapshot = Object.assign({}, this.value);
253
+ for (const [key, value] of Object.entries(snapshot)) {
254
+ if (isObjectRef(value)) {
255
+ snapshot[key] = (_c = this.getSubObject(value.id, key)) === null || _c === void 0 ? void 0 : _c.getSnapshot();
256
+ }
257
+ else if (isFileRef(value)) {
258
+ snapshot[key] = this.getFileSnapshot(value);
259
+ }
260
+ }
261
+ }
262
+ assignOid(snapshot, this.oid);
263
+ this.cachedSnapshot = snapshot;
264
+ return snapshot;
265
+ };
266
+ /**
267
+ * Object methods
268
+ */
269
+ this.keys = () => {
270
+ return Object.keys(this.value || {});
271
+ };
272
+ this.entries = () => {
273
+ return Object.entries(this.getAll());
274
+ };
275
+ this.values = () => {
276
+ return Object.values(this.getAll());
277
+ };
278
+ this.set = (key, value) => {
279
+ if (this.readonlyKeys.includes(key)) {
280
+ throw new Error(`Cannot set readonly key ${key.toString()}`);
281
+ }
282
+ this.addPatches(this.store.patchCreator.createSet(this.oid, key, this.processInputValue(value, key)));
283
+ };
284
+ this.delete = (key) => {
285
+ if (Array.isArray(this.value)) {
286
+ this.addPatches(this.store.patchCreator.createListDelete(this.oid, key, 1));
287
+ }
288
+ else {
289
+ // the key must be deletable - i.e. optional in the schema
290
+ const deleteMode = this.getDeleteMode(key);
291
+ if (!deleteMode) {
292
+ throw new Error(`Cannot delete key ${key} - the property is not marked as optional in the schema`);
293
+ }
294
+ if (deleteMode === 'delete') {
295
+ this.addPatches(this.store.patchCreator.createRemove(this.oid, key));
296
+ }
297
+ else {
298
+ this.addPatches(this.store.patchCreator.createSet(this.oid, key, null));
299
+ }
300
+ }
301
+ };
302
+ this.getDeleteMode = (key) => {
303
+ if (this.readonlyKeys.includes(key)) {
304
+ return false;
305
+ }
306
+ // 'any' is always deletable, and map values can be removed completely
307
+ if (this.fieldSchema.type === 'any' || this.fieldSchema.type === 'map') {
308
+ return 'delete';
309
+ }
310
+ if (this.fieldSchema.type === 'object') {
311
+ const property = this.fieldSchema.properties[key];
312
+ if (!property) {
313
+ // huh, trying to delete a field that isn't specified
314
+ // in the schema. we should use 'delete' mode.
315
+ return 'delete';
316
+ }
317
+ if (property.type === 'any')
318
+ return 'delete';
319
+ // map can't be nullable
320
+ // TODO: should it be?
321
+ if (property.type === 'map')
322
+ return false;
323
+ // nullable properties can only be set null
324
+ if (property.nullable)
325
+ return 'null';
326
+ }
327
+ // no other parent objects support deleting
328
+ return false;
329
+ };
330
+ /** @deprecated - renamed to delete */
331
+ this.remove = this.delete.bind(this);
332
+ this.update = (value, { replaceSubObjects = false, merge = true, } = {
333
+ /**
334
+ * If true, merged sub-objects will be replaced entirely if there's
335
+ * ambiguity about their identity.
336
+ */
337
+ replaceSubObjects: false,
338
+ /**
339
+ * If false, omitted keys will erase their respective fields.
340
+ */
341
+ merge: true,
342
+ }) => {
343
+ if (!merge &&
344
+ this.fieldSchema.type !== 'any' &&
345
+ this.fieldSchema.type !== 'map') {
346
+ throw new Error('Cannot use .update without merge if the field has a strict schema type. merge: false is only available on "any" or "map" types.');
347
+ }
348
+ for (const [key, field] of Object.entries(value)) {
349
+ if (this.readonlyKeys.includes(key)) {
350
+ throw new Error(`Cannot set readonly key ${key.toString()}`);
351
+ }
352
+ const fieldSchema = this.getChildFieldSchema(key);
353
+ if (fieldSchema) {
354
+ traverseCollectionFieldsAndApplyDefaults(field, fieldSchema);
355
+ }
356
+ }
357
+ const withoutFiles = processValueFiles(value, this.store.addFile);
358
+ this.addPatches(this.store.patchCreator.createDiff(this.getSnapshot(), assignOid(withoutFiles, this.oid), {
359
+ mergeUnknownObjects: !replaceSubObjects,
360
+ defaultUndefined: merge,
361
+ }));
362
+ };
363
+ /**
364
+ * List methods
365
+ */
366
+ /**
367
+ * Returns the referent value of an item in the list, used for
368
+ * operations which act on items. if the item is an object,
369
+ * it will attempt to create an OID reference to it. If it
370
+ * is a primitive, it will return the primitive.
371
+ */
372
+ this.getItemRefValue = (item) => {
373
+ if (typeof item === 'object') {
374
+ const itemOid = maybeGetOid(item);
375
+ if (!itemOid || !this.cache.hasOid(itemOid)) {
376
+ throw new Error(`Cannot move object ${JSON.stringify(item)} which does not exist in this list`);
377
+ }
378
+ return itemOid;
379
+ }
380
+ else {
381
+ return item;
382
+ }
383
+ };
384
+ this.push = (value) => {
385
+ this.addPatches(this.store.patchCreator.createListPush(this.oid, this.processInputValue(value, this.value.length)));
386
+ };
387
+ this.insert = (index, value) => {
388
+ this.addPatches(this.store.patchCreator.createListInsert(this.oid, index, this.processInputValue(value, index)));
389
+ };
390
+ this.move = (from, to) => {
391
+ this.addPatches(this.store.patchCreator.createListMoveByIndex(this.oid, from, to));
392
+ };
393
+ this.moveItem = (item, to) => {
394
+ const itemRef = this.getItemRefValue(item);
395
+ if (isObjectRef(itemRef)) {
396
+ this.addPatches(this.store.patchCreator.createListMoveByRef(this.oid, itemRef, to));
397
+ }
398
+ else {
399
+ const index = this.value.indexOf(itemRef);
400
+ this.addPatches(this.store.patchCreator.createListMoveByIndex(this.oid, index, to));
401
+ }
402
+ };
403
+ this.removeAll = (item) => {
404
+ this.addPatches(this.store.patchCreator.createListRemove(this.oid, this.getItemRefValue(item)));
405
+ };
406
+ this.removeFirst = (item) => {
407
+ this.addPatches(this.store.patchCreator.createListRemove(this.oid, this.getItemRefValue(item), 'first'));
408
+ };
409
+ this.removeLast = (item) => {
410
+ this.addPatches(this.store.patchCreator.createListRemove(this.oid, this.getItemRefValue(item), 'last'));
411
+ };
412
+ this.add = (item) => {
413
+ this.addPatches(this.store.patchCreator.createListAdd(this.oid, this.processInputValue(item, this.value.length)));
414
+ };
415
+ this.has = (item) => {
416
+ if (typeof item === 'object') {
417
+ return this.value.some((val) => {
418
+ if (isObjectRef(val))
419
+ return val.id === maybeGetOid(item);
420
+ // Sets of files don't work right now, there's no way to compare them
421
+ // effectively.
422
+ if (isFileRef(val))
423
+ return false;
424
+ return false;
425
+ });
426
+ }
427
+ return this.value.includes(item);
428
+ };
429
+ // additional access methods
430
+ this.getAsWrapped = () => {
431
+ if (!this.isList)
432
+ throw new Error('Cannot map items of a non-list');
433
+ return this.value.map(this.wrapValue);
434
+ };
435
+ this.map = (callback) => {
436
+ return this.getAsWrapped().map(callback);
437
+ };
438
+ this.filter = (callback) => {
439
+ return this.getAsWrapped().filter((val, index) => {
440
+ return callback(val, index);
441
+ });
442
+ };
443
+ this.forEach = (callback) => {
444
+ this.getAsWrapped().forEach(callback);
445
+ };
446
+ this.some = (predicate) => {
447
+ return this.getAsWrapped().some(predicate);
448
+ };
449
+ this.every = (predicate) => {
450
+ return this.getAsWrapped().every(predicate);
451
+ };
452
+ this.find = (predicate) => {
453
+ return this.getAsWrapped().find(predicate);
454
+ };
455
+ this.includes = (item) => {
456
+ return this.has(item);
457
+ };
458
+ this.oid = oid;
459
+ const { collection } = decomposeOid(oid);
460
+ this.collection = collection;
461
+ this.store = store;
462
+ this.fieldSchema = fieldSchema;
463
+ this.readonlyKeys = readonlyKeys;
464
+ this.cache = cache;
465
+ this.parent = parent && this.cache.weakRef(parent);
466
+ const { view, deleted, lastTimestamp } = this.cache.computeView(oid);
467
+ this._current = view;
468
+ this._deleted = deleted;
469
+ this._updatedAt = lastTimestamp ? lastTimestamp : null;
470
+ this.cachedDeepUpdatedAt = null;
471
+ this.events = new EventSubscriber(() => {
472
+ if (!this.hasSubscribers) {
473
+ onAllUnsubscribed === null || onAllUnsubscribed === void 0 ? void 0 : onAllUnsubscribed();
474
+ }
475
+ });
476
+ if (this.oid.includes('.') && !this.parent) {
477
+ throw new Error('Parent must be provided for sub entities');
478
+ }
479
+ assert(!!fieldSchema, 'Field schema must be provided');
480
+ }
481
+ getFileSnapshot(item) {
482
+ const file = this.store.getFile(item.id);
483
+ if (file.url) {
484
+ return { id: item.id, url: file.url };
485
+ }
486
+ else if (file.loading || file.failed) {
487
+ return { id: item.id, url: undefined };
488
+ }
489
+ else {
490
+ return { id: item.id, url: null };
491
+ }
492
+ }
493
+ get length() {
494
+ return this.value.length;
495
+ }
496
+ // list implements an iterator which maps items to wrapped
497
+ // versions
498
+ [(_a = REFRESH, _b = DEEP_CHANGE, Symbol.iterator)]() {
499
+ let index = 0;
500
+ return {
501
+ next: () => {
502
+ if (index < this.value.length) {
503
+ return {
504
+ value: this.get(index++),
505
+ done: false,
506
+ };
507
+ }
508
+ return {
509
+ value: undefined,
510
+ done: true,
511
+ };
512
+ },
513
+ };
514
+ }
515
+ }
516
516
  //# sourceMappingURL=Entity.js.map