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

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 (696) hide show
  1. package/dist/cjs/BackoffScheduler.d.ts +19 -19
  2. package/dist/cjs/BackoffScheduler.js +44 -44
  3. package/dist/cjs/DocumentManager.d.ts +28 -31
  4. package/dist/cjs/DocumentManager.js +44 -44
  5. package/dist/cjs/FakeWeakRef.d.ts +11 -11
  6. package/dist/cjs/FakeWeakRef.js +18 -18
  7. package/dist/cjs/IDBService.d.ts +9 -9
  8. package/dist/cjs/IDBService.js +63 -63
  9. package/dist/cjs/UndoHistory.d.ts +16 -16
  10. package/dist/cjs/UndoHistory.js +50 -50
  11. package/dist/cjs/__tests__/batching.test.d.ts +1 -1
  12. package/dist/cjs/__tests__/batching.test.js +44 -44
  13. package/dist/cjs/__tests__/documents.test.d.ts +1 -1
  14. package/dist/cjs/__tests__/documents.test.js +415 -415
  15. package/dist/cjs/__tests__/fixtures/testStorage.d.ts +123 -123
  16. package/dist/cjs/__tests__/fixtures/testStorage.js +117 -117
  17. package/dist/cjs/__tests__/legacyOids.test.d.ts +1 -1
  18. package/dist/cjs/__tests__/legacyOids.test.js +290 -290
  19. package/dist/cjs/__tests__/mutations.test.d.ts +1 -1
  20. package/dist/cjs/__tests__/mutations.test.js +41 -41
  21. package/dist/cjs/__tests__/queries.test.d.ts +1 -1
  22. package/dist/cjs/__tests__/queries.test.js +318 -318
  23. package/dist/cjs/__tests__/setup/indexedDB.d.ts +1 -1
  24. package/dist/cjs/__tests__/setup/indexedDB.js +3 -3
  25. package/dist/cjs/__tests__/undo.test.d.ts +1 -1
  26. package/dist/cjs/__tests__/undo.test.js +86 -86
  27. package/dist/cjs/client/Client.d.ts +99 -98
  28. package/dist/cjs/client/Client.js +227 -227
  29. package/dist/cjs/client/ClientDescriptor.d.ts +76 -76
  30. package/dist/cjs/client/ClientDescriptor.js +197 -197
  31. package/dist/cjs/client/constants.d.ts +1 -1
  32. package/dist/cjs/client/constants.js +4 -4
  33. package/dist/cjs/constants.d.ts +1 -1
  34. package/dist/cjs/constants.js +4 -4
  35. package/dist/cjs/context.d.ts +29 -29
  36. package/dist/cjs/context.js +2 -2
  37. package/dist/cjs/entities/DocumentFamiliyCache.d.ts +90 -90
  38. package/dist/cjs/entities/DocumentFamiliyCache.js +282 -282
  39. package/dist/cjs/entities/Entity.d.ts +206 -206
  40. package/dist/cjs/entities/Entity.js +520 -520
  41. package/dist/cjs/entities/EntityStore.d.ts +85 -85
  42. package/dist/cjs/entities/EntityStore.js +479 -479
  43. package/dist/cjs/files/EntityFile.d.ts +31 -31
  44. package/dist/cjs/files/EntityFile.js +76 -76
  45. package/dist/cjs/files/FileManager.d.ts +42 -42
  46. package/dist/cjs/files/FileManager.js +152 -152
  47. package/dist/cjs/files/FileStorage.d.ts +28 -28
  48. package/dist/cjs/files/FileStorage.js +104 -104
  49. package/dist/cjs/files/utils.d.ts +8 -8
  50. package/dist/cjs/files/utils.js +55 -55
  51. package/dist/cjs/files/utils.test.d.ts +1 -1
  52. package/dist/cjs/files/utils.test.js +80 -80
  53. package/dist/cjs/idb.d.ts +11 -11
  54. package/dist/cjs/idb.js +111 -111
  55. package/dist/cjs/index.d.ts +21 -21
  56. package/dist/cjs/index.js +23 -23
  57. package/dist/cjs/metadata/AckInfoStore.d.ts +10 -10
  58. package/dist/cjs/metadata/AckInfoStore.js +25 -25
  59. package/dist/cjs/metadata/BaselinesStore.d.ts +33 -33
  60. package/dist/cjs/metadata/BaselinesStore.js +89 -89
  61. package/dist/cjs/metadata/LocalReplicaStore.d.ts +17 -17
  62. package/dist/cjs/metadata/LocalReplicaStore.js +47 -47
  63. package/dist/cjs/metadata/MessageCreator.d.ts +19 -19
  64. package/dist/cjs/metadata/MessageCreator.js +127 -127
  65. package/dist/cjs/metadata/Metadata.d.ts +112 -112
  66. package/dist/cjs/metadata/Metadata.js +352 -352
  67. package/dist/cjs/metadata/OperationsStore.d.ts +53 -53
  68. package/dist/cjs/metadata/OperationsStore.js +152 -152
  69. package/dist/cjs/metadata/SchemaStore.d.ts +9 -9
  70. package/dist/cjs/metadata/SchemaStore.js +38 -38
  71. package/dist/cjs/metadata/openMetadataDatabase.d.ts +19 -19
  72. package/dist/cjs/metadata/openMetadataDatabase.js +219 -219
  73. package/dist/cjs/migration/db.d.ts +8 -8
  74. package/dist/cjs/migration/db.js +111 -111
  75. package/dist/cjs/migration/errors.d.ts +5 -5
  76. package/dist/cjs/migration/errors.js +11 -11
  77. package/dist/cjs/migration/openDatabase.d.ts +20 -20
  78. package/dist/cjs/migration/openDatabase.js +428 -428
  79. package/dist/cjs/migration/paths.d.ts +6 -6
  80. package/dist/cjs/migration/paths.js +52 -52
  81. package/dist/cjs/migration/paths.test.d.ts +1 -1
  82. package/dist/cjs/migration/paths.test.js +90 -90
  83. package/dist/cjs/queries/BaseQuery.d.ts +53 -53
  84. package/dist/cjs/queries/BaseQuery.js +135 -135
  85. package/dist/cjs/queries/CollectionQueries.d.ts +55 -55
  86. package/dist/cjs/queries/CollectionQueries.js +91 -91
  87. package/dist/cjs/queries/FindAllQuery.d.ts +12 -12
  88. package/dist/cjs/queries/FindAllQuery.js +42 -42
  89. package/dist/cjs/queries/FindInfiniteQuery.d.ts +19 -19
  90. package/dist/cjs/queries/FindInfiniteQuery.js +69 -69
  91. package/dist/cjs/queries/FindOneQuery.d.ts +12 -12
  92. package/dist/cjs/queries/FindOneQuery.js +42 -42
  93. package/dist/cjs/queries/FindPageQuery.d.ts +24 -24
  94. package/dist/cjs/queries/FindPageQuery.js +76 -76
  95. package/dist/cjs/queries/GetQuery.d.ts +10 -10
  96. package/dist/cjs/queries/GetQuery.js +29 -29
  97. package/dist/cjs/queries/QueryCache.d.ts +16 -16
  98. package/dist/cjs/queries/QueryCache.js +41 -41
  99. package/dist/cjs/queries/dbQueries.d.ts +22 -22
  100. package/dist/cjs/queries/dbQueries.js +125 -125
  101. package/dist/cjs/queries/keys.d.ts +10 -10
  102. package/dist/cjs/queries/keys.js +33 -33
  103. package/dist/cjs/queries/ranges.d.ts +2 -2
  104. package/dist/cjs/queries/ranges.js +69 -69
  105. package/dist/cjs/queries/types.d.ts +6 -6
  106. package/dist/cjs/queries/types.js +2 -2
  107. package/dist/cjs/queries/utils.d.ts +3 -3
  108. package/dist/cjs/queries/utils.js +24 -24
  109. package/dist/cjs/sync/FileSync.d.ts +23 -23
  110. package/dist/cjs/sync/FileSync.js +84 -84
  111. package/dist/cjs/sync/Heartbeat.d.ts +25 -25
  112. package/dist/cjs/sync/Heartbeat.js +63 -63
  113. package/dist/cjs/sync/PresenceManager.d.ts +43 -43
  114. package/dist/cjs/sync/PresenceManager.js +119 -119
  115. package/dist/cjs/sync/PushPullSync.d.ts +36 -36
  116. package/dist/cjs/sync/PushPullSync.js +143 -143
  117. package/dist/cjs/sync/ServerSyncEndpointProvider.d.ts +27 -27
  118. package/dist/cjs/sync/ServerSyncEndpointProvider.js +64 -64
  119. package/dist/cjs/sync/Sync.d.ts +146 -146
  120. package/dist/cjs/sync/Sync.js +270 -270
  121. package/dist/cjs/sync/WebSocketSync.d.ts +41 -41
  122. package/dist/cjs/sync/WebSocketSync.js +190 -190
  123. package/dist/cjs/types.d.ts +12 -12
  124. package/dist/cjs/types.js +2 -2
  125. package/dist/cjs/utils/Disposable.d.ts +6 -6
  126. package/dist/cjs/utils/Disposable.js +18 -18
  127. package/dist/cjs/utils/Resolvable.d.ts +8 -8
  128. package/dist/cjs/utils/Resolvable.js +22 -22
  129. package/dist/cjs/vanilla.d.ts +1 -1
  130. package/dist/cjs/vanilla.js +27 -27
  131. package/dist/esm/BackoffScheduler.d.ts +19 -19
  132. package/dist/esm/BackoffScheduler.js +39 -39
  133. package/dist/esm/DocumentManager.d.ts +28 -28
  134. package/dist/esm/DocumentManager.js +40 -40
  135. package/dist/esm/FakeWeakRef.d.ts +11 -11
  136. package/dist/esm/FakeWeakRef.js +14 -14
  137. package/dist/esm/IDBService.d.ts +9 -9
  138. package/dist/esm/IDBService.js +59 -59
  139. package/dist/esm/UndoHistory.d.ts +16 -16
  140. package/dist/esm/UndoHistory.js +46 -46
  141. package/dist/esm/__tests__/batching.test.d.ts +1 -1
  142. package/dist/esm/__tests__/batching.test.js +42 -42
  143. package/dist/esm/__tests__/documents.test.d.ts +1 -1
  144. package/dist/esm/__tests__/documents.test.js +413 -413
  145. package/dist/esm/__tests__/fixtures/testStorage.d.ts +123 -123
  146. package/dist/esm/__tests__/fixtures/testStorage.js +113 -113
  147. package/dist/esm/__tests__/legacyOids.test.d.ts +1 -1
  148. package/dist/esm/__tests__/legacyOids.test.js +288 -288
  149. package/dist/esm/__tests__/mutations.test.d.ts +1 -1
  150. package/dist/esm/__tests__/mutations.test.js +39 -39
  151. package/dist/esm/__tests__/queries.test.d.ts +1 -1
  152. package/dist/esm/__tests__/queries.test.js +316 -316
  153. package/dist/esm/__tests__/setup/indexedDB.d.ts +1 -1
  154. package/dist/esm/__tests__/setup/indexedDB.js +1 -1
  155. package/dist/esm/__tests__/undo.test.d.ts +1 -1
  156. package/dist/esm/__tests__/undo.test.js +84 -84
  157. package/dist/esm/client/Client.d.ts +99 -99
  158. package/dist/esm/client/Client.js +223 -223
  159. package/dist/esm/client/ClientDescriptor.d.ts +76 -76
  160. package/dist/esm/client/ClientDescriptor.js +193 -193
  161. package/dist/esm/client/constants.d.ts +1 -1
  162. package/dist/esm/client/constants.js +1 -1
  163. package/dist/esm/constants.d.ts +1 -1
  164. package/dist/esm/constants.js +1 -1
  165. package/dist/esm/context.d.ts +29 -29
  166. package/dist/esm/context.js +1 -1
  167. package/dist/esm/entities/DocumentFamiliyCache.d.ts +90 -90
  168. package/dist/esm/entities/DocumentFamiliyCache.js +278 -278
  169. package/dist/esm/entities/Entity.d.ts +206 -206
  170. package/dist/esm/entities/Entity.js +515 -515
  171. package/dist/esm/entities/EntityStore.d.ts +85 -85
  172. package/dist/esm/entities/EntityStore.js +475 -475
  173. package/dist/esm/files/EntityFile.d.ts +31 -31
  174. package/dist/esm/files/EntityFile.js +72 -72
  175. package/dist/esm/files/FileManager.d.ts +42 -42
  176. package/dist/esm/files/FileManager.js +148 -148
  177. package/dist/esm/files/FileStorage.d.ts +28 -28
  178. package/dist/esm/files/FileStorage.js +99 -99
  179. package/dist/esm/files/utils.d.ts +8 -8
  180. package/dist/esm/files/utils.js +46 -46
  181. package/dist/esm/files/utils.test.d.ts +1 -1
  182. package/dist/esm/files/utils.test.js +78 -78
  183. package/dist/esm/idb.d.ts +11 -11
  184. package/dist/esm/idb.js +100 -100
  185. package/dist/esm/index.d.ts +21 -21
  186. package/dist/esm/index.js +12 -12
  187. package/dist/esm/metadata/AckInfoStore.d.ts +10 -10
  188. package/dist/esm/metadata/AckInfoStore.js +21 -21
  189. package/dist/esm/metadata/BaselinesStore.d.ts +33 -33
  190. package/dist/esm/metadata/BaselinesStore.js +85 -85
  191. package/dist/esm/metadata/LocalReplicaStore.d.ts +17 -17
  192. package/dist/esm/metadata/LocalReplicaStore.js +40 -40
  193. package/dist/esm/metadata/MessageCreator.d.ts +19 -19
  194. package/dist/esm/metadata/MessageCreator.js +123 -123
  195. package/dist/esm/metadata/Metadata.d.ts +112 -112
  196. package/dist/esm/metadata/Metadata.js +348 -348
  197. package/dist/esm/metadata/OperationsStore.d.ts +53 -53
  198. package/dist/esm/metadata/OperationsStore.js +148 -148
  199. package/dist/esm/metadata/SchemaStore.d.ts +9 -9
  200. package/dist/esm/metadata/SchemaStore.js +34 -34
  201. package/dist/esm/metadata/openMetadataDatabase.d.ts +19 -19
  202. package/dist/esm/metadata/openMetadataDatabase.js +214 -214
  203. package/dist/esm/migration/db.d.ts +8 -8
  204. package/dist/esm/migration/db.js +103 -103
  205. package/dist/esm/migration/errors.d.ts +5 -5
  206. package/dist/esm/migration/errors.js +7 -7
  207. package/dist/esm/migration/openDatabase.d.ts +20 -20
  208. package/dist/esm/migration/openDatabase.js +423 -423
  209. package/dist/esm/migration/paths.d.ts +6 -6
  210. package/dist/esm/migration/paths.js +48 -48
  211. package/dist/esm/migration/paths.test.d.ts +1 -1
  212. package/dist/esm/migration/paths.test.js +88 -88
  213. package/dist/esm/queries/BaseQuery.d.ts +53 -53
  214. package/dist/esm/queries/BaseQuery.js +131 -131
  215. package/dist/esm/queries/CollectionQueries.d.ts +55 -55
  216. package/dist/esm/queries/CollectionQueries.js +87 -87
  217. package/dist/esm/queries/FindAllQuery.d.ts +12 -12
  218. package/dist/esm/queries/FindAllQuery.js +38 -38
  219. package/dist/esm/queries/FindInfiniteQuery.d.ts +19 -19
  220. package/dist/esm/queries/FindInfiniteQuery.js +65 -65
  221. package/dist/esm/queries/FindOneQuery.d.ts +12 -12
  222. package/dist/esm/queries/FindOneQuery.js +38 -38
  223. package/dist/esm/queries/FindPageQuery.d.ts +24 -24
  224. package/dist/esm/queries/FindPageQuery.js +72 -72
  225. package/dist/esm/queries/GetQuery.d.ts +10 -10
  226. package/dist/esm/queries/GetQuery.js +25 -25
  227. package/dist/esm/queries/QueryCache.d.ts +16 -16
  228. package/dist/esm/queries/QueryCache.js +37 -37
  229. package/dist/esm/queries/dbQueries.d.ts +22 -22
  230. package/dist/esm/queries/dbQueries.js +119 -119
  231. package/dist/esm/queries/keys.d.ts +10 -10
  232. package/dist/esm/queries/keys.js +29 -29
  233. package/dist/esm/queries/ranges.d.ts +2 -2
  234. package/dist/esm/queries/ranges.js +65 -65
  235. package/dist/esm/queries/types.d.ts +6 -6
  236. package/dist/esm/queries/types.js +1 -1
  237. package/dist/esm/queries/utils.d.ts +3 -3
  238. package/dist/esm/queries/utils.js +19 -19
  239. package/dist/esm/sync/FileSync.d.ts +23 -23
  240. package/dist/esm/sync/FileSync.js +80 -80
  241. package/dist/esm/sync/Heartbeat.d.ts +25 -25
  242. package/dist/esm/sync/Heartbeat.js +59 -59
  243. package/dist/esm/sync/PresenceManager.d.ts +43 -43
  244. package/dist/esm/sync/PresenceManager.js +115 -115
  245. package/dist/esm/sync/PushPullSync.d.ts +36 -36
  246. package/dist/esm/sync/PushPullSync.js +139 -139
  247. package/dist/esm/sync/ServerSyncEndpointProvider.d.ts +27 -27
  248. package/dist/esm/sync/ServerSyncEndpointProvider.js +57 -57
  249. package/dist/esm/sync/Sync.d.ts +146 -146
  250. package/dist/esm/sync/Sync.js +265 -265
  251. package/dist/esm/sync/{WebsocketSync.d.ts → WebSocketSync.d.ts} +41 -41
  252. package/dist/esm/sync/{WebsocketSync.js → WebSocketSync.js} +186 -186
  253. package/dist/esm/types.d.ts +12 -12
  254. package/dist/esm/types.js +1 -1
  255. package/dist/esm/utils/Disposable.d.ts +6 -6
  256. package/dist/esm/utils/Disposable.js +14 -14
  257. package/dist/esm/utils/Resolvable.d.ts +8 -8
  258. package/dist/esm/utils/Resolvable.js +18 -18
  259. package/dist/esm/vanilla.d.ts +1 -1
  260. package/dist/esm/vanilla.js +2 -2
  261. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  262. package/dist/tsconfig.tsbuildinfo +1 -1
  263. package/package.json +2 -2
  264. package/dist/cjs/AckInfoStore.d.ts +0 -10
  265. package/dist/cjs/AckInfoStore.js +0 -26
  266. package/dist/cjs/AckInfoStore.js.map +0 -1
  267. package/dist/cjs/BaselinesStore.d.ts +0 -10
  268. package/dist/cjs/BaselinesStore.js +0 -36
  269. package/dist/cjs/BaselinesStore.js.map +0 -1
  270. package/dist/cjs/Entity.d.ts +0 -96
  271. package/dist/cjs/Entity.js +0 -345
  272. package/dist/cjs/Entity.js.map +0 -1
  273. package/dist/cjs/EntityStore.d.ts +0 -36
  274. package/dist/cjs/EntityStore.js +0 -172
  275. package/dist/cjs/EntityStore.js.map +0 -1
  276. package/dist/cjs/LocalHistoryStore.d.ts +0 -15
  277. package/dist/cjs/LocalHistoryStore.js +0 -53
  278. package/dist/cjs/LocalHistoryStore.js.map +0 -1
  279. package/dist/cjs/LocalReplicaStore.d.ts +0 -13
  280. package/dist/cjs/LocalReplicaStore.js +0 -49
  281. package/dist/cjs/LocalReplicaStore.js.map +0 -1
  282. package/dist/cjs/MessageCreator.d.ts +0 -19
  283. package/dist/cjs/MessageCreator.js +0 -104
  284. package/dist/cjs/MessageCreator.js.map +0 -1
  285. package/dist/cjs/Metadata.d.ts +0 -91
  286. package/dist/cjs/Metadata.js +0 -250
  287. package/dist/cjs/Metadata.js.map +0 -1
  288. package/dist/cjs/OperationsStore.d.ts +0 -38
  289. package/dist/cjs/OperationsStore.js +0 -146
  290. package/dist/cjs/OperationsStore.js.map +0 -1
  291. package/dist/cjs/PresenceManager.d.ts +0 -30
  292. package/dist/cjs/PresenceManager.js +0 -89
  293. package/dist/cjs/PresenceManager.js.map +0 -1
  294. package/dist/cjs/Query.d.ts +0 -26
  295. package/dist/cjs/Query.js +0 -86
  296. package/dist/cjs/Query.js.map +0 -1
  297. package/dist/cjs/QueryMaker.d.ts +0 -18
  298. package/dist/cjs/QueryMaker.js +0 -98
  299. package/dist/cjs/QueryMaker.js.map +0 -1
  300. package/dist/cjs/QueryStore.d.ts +0 -38
  301. package/dist/cjs/QueryStore.js +0 -146
  302. package/dist/cjs/QueryStore.js.map +0 -1
  303. package/dist/cjs/SchemaStore.d.ts +0 -9
  304. package/dist/cjs/SchemaStore.js +0 -35
  305. package/dist/cjs/SchemaStore.js.map +0 -1
  306. package/dist/cjs/Storage.d.ts +0 -147
  307. package/dist/cjs/Storage.js +0 -346
  308. package/dist/cjs/Storage.js.map +0 -1
  309. package/dist/cjs/Sync.d.ts +0 -117
  310. package/dist/cjs/Sync.js +0 -561
  311. package/dist/cjs/Sync.js.map +0 -1
  312. package/dist/cjs/SyncHarness.d.ts +0 -45
  313. package/dist/cjs/SyncHarness.js +0 -110
  314. package/dist/cjs/SyncHarness.js.map +0 -1
  315. package/dist/cjs/indexes.d.ts +0 -3
  316. package/dist/cjs/indexes.js +0 -20
  317. package/dist/cjs/indexes.js.map +0 -1
  318. package/dist/cjs/metadata/LocalHistoryStore.d.ts +0 -15
  319. package/dist/cjs/metadata/LocalHistoryStore.js +0 -53
  320. package/dist/cjs/metadata/LocalHistoryStore.js.map +0 -1
  321. package/dist/cjs/openDocumentDatabase.d.ts +0 -12
  322. package/dist/cjs/openDocumentDatabase.js +0 -432
  323. package/dist/cjs/openDocumentDatabase.js.map +0 -1
  324. package/dist/cjs/queries/LiveQuery.d.ts +0 -28
  325. package/dist/cjs/queries/LiveQuery.js +0 -96
  326. package/dist/cjs/queries/LiveQuery.js.map +0 -1
  327. package/dist/cjs/queries/LiveQueryMaker.d.ts +0 -15
  328. package/dist/cjs/queries/LiveQueryMaker.js +0 -42
  329. package/dist/cjs/queries/LiveQueryMaker.js.map +0 -1
  330. package/dist/cjs/queries/LiveQueryStore.d.ts +0 -33
  331. package/dist/cjs/queries/LiveQueryStore.js +0 -85
  332. package/dist/cjs/queries/LiveQueryStore.js.map +0 -1
  333. package/dist/cjs/queries/Query.d.ts +0 -18
  334. package/dist/cjs/queries/Query.js +0 -36
  335. package/dist/cjs/queries/Query.js.map +0 -1
  336. package/dist/cjs/queries/QueryMaker.d.ts +0 -14
  337. package/dist/cjs/queries/QueryMaker.js +0 -42
  338. package/dist/cjs/queries/QueryMaker.js.map +0 -1
  339. package/dist/cjs/queries/QueryStore.d.ts +0 -35
  340. package/dist/cjs/queries/QueryStore.js +0 -130
  341. package/dist/cjs/queries/QueryStore.js.map +0 -1
  342. package/dist/cjs/queries2/BaseQuery.d.ts +0 -39
  343. package/dist/cjs/queries2/BaseQuery.js +0 -99
  344. package/dist/cjs/queries2/BaseQuery.js.map +0 -1
  345. package/dist/cjs/queries2/CollectionQueries.d.ts +0 -55
  346. package/dist/cjs/queries2/CollectionQueries.js +0 -83
  347. package/dist/cjs/queries2/CollectionQueries.js.map +0 -1
  348. package/dist/cjs/queries2/FindAllQuery.d.ts +0 -11
  349. package/dist/cjs/queries2/FindAllQuery.js +0 -34
  350. package/dist/cjs/queries2/FindAllQuery.js.map +0 -1
  351. package/dist/cjs/queries2/FindInfiniteQuery.d.ts +0 -18
  352. package/dist/cjs/queries2/FindInfiniteQuery.js +0 -61
  353. package/dist/cjs/queries2/FindInfiniteQuery.js.map +0 -1
  354. package/dist/cjs/queries2/FindOneQuery.d.ts +0 -11
  355. package/dist/cjs/queries2/FindOneQuery.js +0 -34
  356. package/dist/cjs/queries2/FindOneQuery.js.map +0 -1
  357. package/dist/cjs/queries2/FindPageQuery.d.ts +0 -23
  358. package/dist/cjs/queries2/FindPageQuery.js +0 -68
  359. package/dist/cjs/queries2/FindPageQuery.js.map +0 -1
  360. package/dist/cjs/queries2/GetQuery.d.ts +0 -10
  361. package/dist/cjs/queries2/GetQuery.js +0 -30
  362. package/dist/cjs/queries2/GetQuery.js.map +0 -1
  363. package/dist/cjs/queries2/QueryCache.d.ts +0 -16
  364. package/dist/cjs/queries2/QueryCache.js +0 -40
  365. package/dist/cjs/queries2/QueryCache.js.map +0 -1
  366. package/dist/cjs/queries2/dbQueries.d.ts +0 -22
  367. package/dist/cjs/queries2/dbQueries.js +0 -126
  368. package/dist/cjs/queries2/dbQueries.js.map +0 -1
  369. package/dist/cjs/queries2/keys.d.ts +0 -10
  370. package/dist/cjs/queries2/keys.js +0 -34
  371. package/dist/cjs/queries2/keys.js.map +0 -1
  372. package/dist/cjs/queries2/ranges.d.ts +0 -2
  373. package/dist/cjs/queries2/ranges.js +0 -70
  374. package/dist/cjs/queries2/ranges.js.map +0 -1
  375. package/dist/cjs/queries2/types.d.ts +0 -6
  376. package/dist/cjs/queries2/types.js +0 -3
  377. package/dist/cjs/queries2/types.js.map +0 -1
  378. package/dist/cjs/queries2/utils.d.ts +0 -1
  379. package/dist/cjs/queries2/utils.js +0 -20
  380. package/dist/cjs/queries2/utils.js.map +0 -1
  381. package/dist/cjs/reactives/DocumentFamiliyCache.d.ts +0 -47
  382. package/dist/cjs/reactives/DocumentFamiliyCache.js +0 -211
  383. package/dist/cjs/reactives/DocumentFamiliyCache.js.map +0 -1
  384. package/dist/cjs/reactives/Entity.d.ts +0 -191
  385. package/dist/cjs/reactives/Entity.js +0 -463
  386. package/dist/cjs/reactives/Entity.js.map +0 -1
  387. package/dist/cjs/reactives/EntityStore.d.ts +0 -84
  388. package/dist/cjs/reactives/EntityStore.js +0 -422
  389. package/dist/cjs/reactives/EntityStore.js.map +0 -1
  390. package/dist/cjs/reactives/FakeWeakRef.d.ts +0 -11
  391. package/dist/cjs/reactives/FakeWeakRef.js +0 -19
  392. package/dist/cjs/reactives/FakeWeakRef.js.map +0 -1
  393. package/dist/cjs/v2/AckInfoStore.d.ts +0 -10
  394. package/dist/cjs/v2/AckInfoStore.js +0 -26
  395. package/dist/cjs/v2/AckInfoStore.js.map +0 -1
  396. package/dist/cjs/v2/BaselinesStore.d.ts +0 -10
  397. package/dist/cjs/v2/BaselinesStore.js +0 -36
  398. package/dist/cjs/v2/BaselinesStore.js.map +0 -1
  399. package/dist/cjs/v2/DocumentManager.d.ts +0 -19
  400. package/dist/cjs/v2/DocumentManager.js +0 -47
  401. package/dist/cjs/v2/DocumentManager.js.map +0 -1
  402. package/dist/cjs/v2/Entity.d.ts +0 -87
  403. package/dist/cjs/v2/Entity.js +0 -305
  404. package/dist/cjs/v2/Entity.js.map +0 -1
  405. package/dist/cjs/v2/EntityStore.d.ts +0 -37
  406. package/dist/cjs/v2/EntityStore.js +0 -165
  407. package/dist/cjs/v2/EntityStore.js.map +0 -1
  408. package/dist/cjs/v2/IDBService.d.ts +0 -7
  409. package/dist/cjs/v2/IDBService.js +0 -26
  410. package/dist/cjs/v2/IDBService.js.map +0 -1
  411. package/dist/cjs/v2/LocalHistoryStore.d.ts +0 -15
  412. package/dist/cjs/v2/LocalHistoryStore.js +0 -53
  413. package/dist/cjs/v2/LocalHistoryStore.js.map +0 -1
  414. package/dist/cjs/v2/LocalReplicaStore.d.ts +0 -14
  415. package/dist/cjs/v2/LocalReplicaStore.js +0 -49
  416. package/dist/cjs/v2/LocalReplicaStore.js.map +0 -1
  417. package/dist/cjs/v2/MessageCreator.d.ts +0 -19
  418. package/dist/cjs/v2/MessageCreator.js +0 -99
  419. package/dist/cjs/v2/MessageCreator.js.map +0 -1
  420. package/dist/cjs/v2/Metadata.d.ts +0 -90
  421. package/dist/cjs/v2/Metadata.js +0 -251
  422. package/dist/cjs/v2/Metadata.js.map +0 -1
  423. package/dist/cjs/v2/OperationsStore.d.ts +0 -38
  424. package/dist/cjs/v2/OperationsStore.js +0 -146
  425. package/dist/cjs/v2/OperationsStore.js.map +0 -1
  426. package/dist/cjs/v2/PresenceManager.d.ts +0 -24
  427. package/dist/cjs/v2/PresenceManager.js +0 -73
  428. package/dist/cjs/v2/PresenceManager.js.map +0 -1
  429. package/dist/cjs/v2/Query.d.ts +0 -24
  430. package/dist/cjs/v2/Query.js +0 -79
  431. package/dist/cjs/v2/Query.js.map +0 -1
  432. package/dist/cjs/v2/QueryMaker.d.ts +0 -16
  433. package/dist/cjs/v2/QueryMaker.js +0 -84
  434. package/dist/cjs/v2/QueryMaker.js.map +0 -1
  435. package/dist/cjs/v2/QueryStore.d.ts +0 -26
  436. package/dist/cjs/v2/QueryStore.js +0 -136
  437. package/dist/cjs/v2/QueryStore.js.map +0 -1
  438. package/dist/cjs/v2/SchemaStore.d.ts +0 -9
  439. package/dist/cjs/v2/SchemaStore.js +0 -35
  440. package/dist/cjs/v2/SchemaStore.js.map +0 -1
  441. package/dist/cjs/v2/Storage.d.ts +0 -80
  442. package/dist/cjs/v2/Storage.js +0 -154
  443. package/dist/cjs/v2/Storage.js.map +0 -1
  444. package/dist/cjs/v2/Sync.d.ts +0 -42
  445. package/dist/cjs/v2/Sync.js +0 -98
  446. package/dist/cjs/v2/Sync.js.map +0 -1
  447. package/dist/cjs/v2/SyncHarness.d.ts +0 -45
  448. package/dist/cjs/v2/SyncHarness.js +0 -110
  449. package/dist/cjs/v2/SyncHarness.js.map +0 -1
  450. package/dist/cjs/v2/__tests__/documents.test.d.ts +0 -1
  451. package/dist/cjs/v2/__tests__/documents.test.js +0 -185
  452. package/dist/cjs/v2/__tests__/documents.test.js.map +0 -1
  453. package/dist/cjs/v2/__tests__/fixtures/testStorage.d.ts +0 -189
  454. package/dist/cjs/v2/__tests__/fixtures/testStorage.js +0 -93
  455. package/dist/cjs/v2/__tests__/fixtures/testStorage.js.map +0 -1
  456. package/dist/cjs/v2/__tests__/queries.test.d.ts +0 -1
  457. package/dist/cjs/v2/__tests__/queries.test.js +0 -92
  458. package/dist/cjs/v2/__tests__/queries.test.js.map +0 -1
  459. package/dist/cjs/v2/__tests__/setup/indexedDB.d.ts +0 -1
  460. package/dist/cjs/v2/__tests__/setup/indexedDB.js +0 -4
  461. package/dist/cjs/v2/__tests__/setup/indexedDB.js.map +0 -1
  462. package/dist/cjs/v2/constants.d.ts +0 -1
  463. package/dist/cjs/v2/constants.js +0 -5
  464. package/dist/cjs/v2/constants.js.map +0 -1
  465. package/dist/cjs/v2/idb.d.ts +0 -6
  466. package/dist/cjs/v2/idb.js +0 -71
  467. package/dist/cjs/v2/idb.js.map +0 -1
  468. package/dist/cjs/v2/index.d.ts +0 -6
  469. package/dist/cjs/v2/index.js +0 -14
  470. package/dist/cjs/v2/index.js.map +0 -1
  471. package/dist/cjs/v2/indexes.d.ts +0 -3
  472. package/dist/cjs/v2/indexes.js +0 -20
  473. package/dist/cjs/v2/indexes.js.map +0 -1
  474. package/dist/cjs/v2/openDocumentDatabase.d.ts +0 -9
  475. package/dist/cjs/v2/openDocumentDatabase.js +0 -100
  476. package/dist/cjs/v2/openDocumentDatabase.js.map +0 -1
  477. package/dist/cjs/v2/types.d.ts +0 -3
  478. package/dist/cjs/v2/types.js +0 -3
  479. package/dist/cjs/v2/types.js.map +0 -1
  480. package/dist/esm/AckInfoStore.d.ts +0 -10
  481. package/dist/esm/AckInfoStore.js +0 -22
  482. package/dist/esm/AckInfoStore.js.map +0 -1
  483. package/dist/esm/BaselinesStore.d.ts +0 -10
  484. package/dist/esm/BaselinesStore.js +0 -32
  485. package/dist/esm/BaselinesStore.js.map +0 -1
  486. package/dist/esm/Entity.d.ts +0 -96
  487. package/dist/esm/Entity.js +0 -337
  488. package/dist/esm/Entity.js.map +0 -1
  489. package/dist/esm/EntityStore.d.ts +0 -36
  490. package/dist/esm/EntityStore.js +0 -168
  491. package/dist/esm/EntityStore.js.map +0 -1
  492. package/dist/esm/LocalHistoryStore.d.ts +0 -15
  493. package/dist/esm/LocalHistoryStore.js +0 -49
  494. package/dist/esm/LocalHistoryStore.js.map +0 -1
  495. package/dist/esm/LocalReplicaStore.d.ts +0 -13
  496. package/dist/esm/LocalReplicaStore.js +0 -42
  497. package/dist/esm/LocalReplicaStore.js.map +0 -1
  498. package/dist/esm/MessageCreator.d.ts +0 -19
  499. package/dist/esm/MessageCreator.js +0 -97
  500. package/dist/esm/MessageCreator.js.map +0 -1
  501. package/dist/esm/Metadata.d.ts +0 -91
  502. package/dist/esm/Metadata.js +0 -245
  503. package/dist/esm/Metadata.js.map +0 -1
  504. package/dist/esm/OperationsStore.d.ts +0 -38
  505. package/dist/esm/OperationsStore.js +0 -142
  506. package/dist/esm/OperationsStore.js.map +0 -1
  507. package/dist/esm/PresenceManager.d.ts +0 -30
  508. package/dist/esm/PresenceManager.js +0 -85
  509. package/dist/esm/PresenceManager.js.map +0 -1
  510. package/dist/esm/Query.d.ts +0 -26
  511. package/dist/esm/Query.js +0 -82
  512. package/dist/esm/Query.js.map +0 -1
  513. package/dist/esm/QueryMaker.d.ts +0 -18
  514. package/dist/esm/QueryMaker.js +0 -94
  515. package/dist/esm/QueryMaker.js.map +0 -1
  516. package/dist/esm/QueryStore.d.ts +0 -38
  517. package/dist/esm/QueryStore.js +0 -142
  518. package/dist/esm/QueryStore.js.map +0 -1
  519. package/dist/esm/SchemaStore.d.ts +0 -9
  520. package/dist/esm/SchemaStore.js +0 -31
  521. package/dist/esm/SchemaStore.js.map +0 -1
  522. package/dist/esm/Storage.d.ts +0 -147
  523. package/dist/esm/Storage.js +0 -341
  524. package/dist/esm/Storage.js.map +0 -1
  525. package/dist/esm/Sync.d.ts +0 -117
  526. package/dist/esm/Sync.js +0 -553
  527. package/dist/esm/Sync.js.map +0 -1
  528. package/dist/esm/SyncHarness.d.ts +0 -45
  529. package/dist/esm/SyncHarness.js +0 -105
  530. package/dist/esm/SyncHarness.js.map +0 -1
  531. package/dist/esm/indexes.d.ts +0 -3
  532. package/dist/esm/indexes.js +0 -15
  533. package/dist/esm/indexes.js.map +0 -1
  534. package/dist/esm/metadata/LocalHistoryStore.d.ts +0 -15
  535. package/dist/esm/metadata/LocalHistoryStore.js +0 -49
  536. package/dist/esm/metadata/LocalHistoryStore.js.map +0 -1
  537. package/dist/esm/openDocumentDatabase.d.ts +0 -12
  538. package/dist/esm/openDocumentDatabase.js +0 -428
  539. package/dist/esm/openDocumentDatabase.js.map +0 -1
  540. package/dist/esm/queries/LiveQuery.d.ts +0 -28
  541. package/dist/esm/queries/LiveQuery.js +0 -92
  542. package/dist/esm/queries/LiveQuery.js.map +0 -1
  543. package/dist/esm/queries/LiveQueryMaker.d.ts +0 -15
  544. package/dist/esm/queries/LiveQueryMaker.js +0 -38
  545. package/dist/esm/queries/LiveQueryMaker.js.map +0 -1
  546. package/dist/esm/queries/LiveQueryStore.d.ts +0 -33
  547. package/dist/esm/queries/LiveQueryStore.js +0 -81
  548. package/dist/esm/queries/LiveQueryStore.js.map +0 -1
  549. package/dist/esm/queries/Query.d.ts +0 -18
  550. package/dist/esm/queries/Query.js +0 -32
  551. package/dist/esm/queries/Query.js.map +0 -1
  552. package/dist/esm/queries/QueryMaker.d.ts +0 -14
  553. package/dist/esm/queries/QueryMaker.js +0 -38
  554. package/dist/esm/queries/QueryMaker.js.map +0 -1
  555. package/dist/esm/queries/QueryStore.d.ts +0 -35
  556. package/dist/esm/queries/QueryStore.js +0 -126
  557. package/dist/esm/queries/QueryStore.js.map +0 -1
  558. package/dist/esm/queries2/BaseQuery.d.ts +0 -39
  559. package/dist/esm/queries2/BaseQuery.js +0 -95
  560. package/dist/esm/queries2/BaseQuery.js.map +0 -1
  561. package/dist/esm/queries2/CollectionQueries.d.ts +0 -55
  562. package/dist/esm/queries2/CollectionQueries.js +0 -79
  563. package/dist/esm/queries2/CollectionQueries.js.map +0 -1
  564. package/dist/esm/queries2/FindAllQuery.d.ts +0 -11
  565. package/dist/esm/queries2/FindAllQuery.js +0 -30
  566. package/dist/esm/queries2/FindAllQuery.js.map +0 -1
  567. package/dist/esm/queries2/FindInfiniteQuery.d.ts +0 -18
  568. package/dist/esm/queries2/FindInfiniteQuery.js +0 -57
  569. package/dist/esm/queries2/FindInfiniteQuery.js.map +0 -1
  570. package/dist/esm/queries2/FindOneQuery.d.ts +0 -11
  571. package/dist/esm/queries2/FindOneQuery.js +0 -30
  572. package/dist/esm/queries2/FindOneQuery.js.map +0 -1
  573. package/dist/esm/queries2/FindPageQuery.d.ts +0 -23
  574. package/dist/esm/queries2/FindPageQuery.js +0 -64
  575. package/dist/esm/queries2/FindPageQuery.js.map +0 -1
  576. package/dist/esm/queries2/GetQuery.d.ts +0 -10
  577. package/dist/esm/queries2/GetQuery.js +0 -26
  578. package/dist/esm/queries2/GetQuery.js.map +0 -1
  579. package/dist/esm/queries2/QueryCache.d.ts +0 -16
  580. package/dist/esm/queries2/QueryCache.js +0 -36
  581. package/dist/esm/queries2/QueryCache.js.map +0 -1
  582. package/dist/esm/queries2/dbQueries.d.ts +0 -22
  583. package/dist/esm/queries2/dbQueries.js +0 -120
  584. package/dist/esm/queries2/dbQueries.js.map +0 -1
  585. package/dist/esm/queries2/keys.d.ts +0 -10
  586. package/dist/esm/queries2/keys.js +0 -30
  587. package/dist/esm/queries2/keys.js.map +0 -1
  588. package/dist/esm/queries2/ranges.d.ts +0 -2
  589. package/dist/esm/queries2/ranges.js +0 -66
  590. package/dist/esm/queries2/ranges.js.map +0 -1
  591. package/dist/esm/queries2/types.d.ts +0 -6
  592. package/dist/esm/queries2/types.js +0 -2
  593. package/dist/esm/queries2/types.js.map +0 -1
  594. package/dist/esm/queries2/utils.d.ts +0 -1
  595. package/dist/esm/queries2/utils.js +0 -16
  596. package/dist/esm/queries2/utils.js.map +0 -1
  597. package/dist/esm/reactives/DocumentFamiliyCache.d.ts +0 -47
  598. package/dist/esm/reactives/DocumentFamiliyCache.js +0 -207
  599. package/dist/esm/reactives/DocumentFamiliyCache.js.map +0 -1
  600. package/dist/esm/reactives/Entity.d.ts +0 -191
  601. package/dist/esm/reactives/Entity.js +0 -458
  602. package/dist/esm/reactives/Entity.js.map +0 -1
  603. package/dist/esm/reactives/EntityStore.d.ts +0 -84
  604. package/dist/esm/reactives/EntityStore.js +0 -418
  605. package/dist/esm/reactives/EntityStore.js.map +0 -1
  606. package/dist/esm/reactives/FakeWeakRef.d.ts +0 -11
  607. package/dist/esm/reactives/FakeWeakRef.js +0 -15
  608. package/dist/esm/reactives/FakeWeakRef.js.map +0 -1
  609. package/dist/esm/v2/AckInfoStore.d.ts +0 -10
  610. package/dist/esm/v2/AckInfoStore.js +0 -22
  611. package/dist/esm/v2/AckInfoStore.js.map +0 -1
  612. package/dist/esm/v2/BaselinesStore.d.ts +0 -10
  613. package/dist/esm/v2/BaselinesStore.js +0 -32
  614. package/dist/esm/v2/BaselinesStore.js.map +0 -1
  615. package/dist/esm/v2/DocumentManager.d.ts +0 -19
  616. package/dist/esm/v2/DocumentManager.js +0 -43
  617. package/dist/esm/v2/DocumentManager.js.map +0 -1
  618. package/dist/esm/v2/Entity.d.ts +0 -91
  619. package/dist/esm/v2/Entity.js +0 -305
  620. package/dist/esm/v2/Entity.js.map +0 -1
  621. package/dist/esm/v2/EntityStore.d.ts +0 -37
  622. package/dist/esm/v2/EntityStore.js +0 -166
  623. package/dist/esm/v2/EntityStore.js.map +0 -1
  624. package/dist/esm/v2/IDBService.d.ts +0 -7
  625. package/dist/esm/v2/IDBService.js +0 -22
  626. package/dist/esm/v2/IDBService.js.map +0 -1
  627. package/dist/esm/v2/LocalHistoryStore.d.ts +0 -15
  628. package/dist/esm/v2/LocalHistoryStore.js +0 -49
  629. package/dist/esm/v2/LocalHistoryStore.js.map +0 -1
  630. package/dist/esm/v2/LocalReplicaStore.d.ts +0 -14
  631. package/dist/esm/v2/LocalReplicaStore.js +0 -42
  632. package/dist/esm/v2/LocalReplicaStore.js.map +0 -1
  633. package/dist/esm/v2/MessageCreator.d.ts +0 -19
  634. package/dist/esm/v2/MessageCreator.js +0 -92
  635. package/dist/esm/v2/MessageCreator.js.map +0 -1
  636. package/dist/esm/v2/Metadata.d.ts +0 -90
  637. package/dist/esm/v2/Metadata.js +0 -246
  638. package/dist/esm/v2/Metadata.js.map +0 -1
  639. package/dist/esm/v2/OperationsStore.d.ts +0 -38
  640. package/dist/esm/v2/OperationsStore.js +0 -142
  641. package/dist/esm/v2/OperationsStore.js.map +0 -1
  642. package/dist/esm/v2/PresenceManager.d.ts +0 -24
  643. package/dist/esm/v2/PresenceManager.js +0 -69
  644. package/dist/esm/v2/PresenceManager.js.map +0 -1
  645. package/dist/esm/v2/Query.d.ts +0 -24
  646. package/dist/esm/v2/Query.js +0 -75
  647. package/dist/esm/v2/Query.js.map +0 -1
  648. package/dist/esm/v2/QueryMaker.d.ts +0 -16
  649. package/dist/esm/v2/QueryMaker.js +0 -80
  650. package/dist/esm/v2/QueryMaker.js.map +0 -1
  651. package/dist/esm/v2/QueryStore.d.ts +0 -26
  652. package/dist/esm/v2/QueryStore.js +0 -132
  653. package/dist/esm/v2/QueryStore.js.map +0 -1
  654. package/dist/esm/v2/SchemaStore.d.ts +0 -9
  655. package/dist/esm/v2/SchemaStore.js +0 -31
  656. package/dist/esm/v2/SchemaStore.js.map +0 -1
  657. package/dist/esm/v2/Storage.d.ts +0 -80
  658. package/dist/esm/v2/Storage.js +0 -149
  659. package/dist/esm/v2/Storage.js.map +0 -1
  660. package/dist/esm/v2/Sync.d.ts +0 -42
  661. package/dist/esm/v2/Sync.js +0 -94
  662. package/dist/esm/v2/Sync.js.map +0 -1
  663. package/dist/esm/v2/SyncHarness.d.ts +0 -45
  664. package/dist/esm/v2/SyncHarness.js +0 -105
  665. package/dist/esm/v2/SyncHarness.js.map +0 -1
  666. package/dist/esm/v2/__tests__/documents.test.d.ts +0 -1
  667. package/dist/esm/v2/__tests__/documents.test.js +0 -208
  668. package/dist/esm/v2/__tests__/documents.test.js.map +0 -1
  669. package/dist/esm/v2/__tests__/fixtures/testStorage.d.ts +0 -223
  670. package/dist/esm/v2/__tests__/fixtures/testStorage.js +0 -106
  671. package/dist/esm/v2/__tests__/fixtures/testStorage.js.map +0 -1
  672. package/dist/esm/v2/__tests__/queries.test.d.ts +0 -1
  673. package/dist/esm/v2/__tests__/queries.test.js +0 -90
  674. package/dist/esm/v2/__tests__/queries.test.js.map +0 -1
  675. package/dist/esm/v2/__tests__/setup/indexedDB.d.ts +0 -1
  676. package/dist/esm/v2/__tests__/setup/indexedDB.js +0 -2
  677. package/dist/esm/v2/__tests__/setup/indexedDB.js.map +0 -1
  678. package/dist/esm/v2/constants.d.ts +0 -1
  679. package/dist/esm/v2/constants.js +0 -2
  680. package/dist/esm/v2/constants.js.map +0 -1
  681. package/dist/esm/v2/idb.d.ts +0 -6
  682. package/dist/esm/v2/idb.js +0 -65
  683. package/dist/esm/v2/idb.js.map +0 -1
  684. package/dist/esm/v2/index.d.ts +0 -6
  685. package/dist/esm/v2/index.js +0 -5
  686. package/dist/esm/v2/index.js.map +0 -1
  687. package/dist/esm/v2/indexes.d.ts +0 -3
  688. package/dist/esm/v2/indexes.js +0 -15
  689. package/dist/esm/v2/indexes.js.map +0 -1
  690. package/dist/esm/v2/openDocumentDatabase.d.ts +0 -9
  691. package/dist/esm/v2/openDocumentDatabase.js +0 -96
  692. package/dist/esm/v2/openDocumentDatabase.js.map +0 -1
  693. package/dist/esm/v2/types.d.ts +0 -3
  694. package/dist/esm/v2/types.js +0 -2
  695. package/dist/esm/v2/types.js.map +0 -1
  696. /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