@verdant-web/store 3.12.1 → 4.0.0-next.1

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 (279) hide show
  1. package/dist/bundle/index.js +11 -13
  2. package/dist/bundle/index.js.map +4 -4
  3. package/dist/esm/__tests__/batching.test.js +5 -5
  4. package/dist/esm/__tests__/batching.test.js.map +1 -1
  5. package/dist/esm/__tests__/entities.test.js +1 -1
  6. package/dist/esm/__tests__/entities.test.js.map +1 -1
  7. package/dist/esm/__tests__/fixtures/testStorage.d.ts +1 -3
  8. package/dist/esm/__tests__/fixtures/testStorage.js +3 -3
  9. package/dist/esm/__tests__/fixtures/testStorage.js.map +1 -1
  10. package/dist/esm/__tests__/queries.test.js.map +1 -1
  11. package/dist/esm/backup.d.ts +3 -4
  12. package/dist/esm/backup.js.map +1 -1
  13. package/dist/esm/client/Client.d.ts +28 -33
  14. package/dist/esm/client/Client.js +50 -161
  15. package/dist/esm/client/Client.js.map +1 -1
  16. package/dist/esm/client/ClientDescriptor.d.ts +8 -11
  17. package/dist/esm/client/ClientDescriptor.js +39 -141
  18. package/dist/esm/client/ClientDescriptor.js.map +1 -1
  19. package/dist/esm/context/Time.d.ts +13 -0
  20. package/dist/esm/context/Time.js +27 -0
  21. package/dist/esm/context/Time.js.map +1 -0
  22. package/dist/esm/context/context.d.ts +170 -0
  23. package/dist/esm/{context.js.map → context/context.js.map} +1 -1
  24. package/dist/esm/entities/DocumentManager.js.map +1 -1
  25. package/dist/esm/entities/Entity.d.ts +4 -5
  26. package/dist/esm/entities/Entity.js +5 -3
  27. package/dist/esm/entities/Entity.js.map +1 -1
  28. package/dist/esm/entities/Entity.test.js +4 -3
  29. package/dist/esm/entities/Entity.test.js.map +1 -1
  30. package/dist/esm/entities/EntityCache.d.ts +0 -3
  31. package/dist/esm/entities/EntityCache.js +0 -9
  32. package/dist/esm/entities/EntityCache.js.map +1 -1
  33. package/dist/esm/entities/EntityMetadata.d.ts +1 -1
  34. package/dist/esm/entities/EntityMetadata.js +6 -5
  35. package/dist/esm/entities/EntityMetadata.js.map +1 -1
  36. package/dist/esm/entities/EntityStore.d.ts +2 -6
  37. package/dist/esm/entities/EntityStore.js +22 -16
  38. package/dist/esm/entities/EntityStore.js.map +1 -1
  39. package/dist/esm/entities/OperationBatcher.d.ts +2 -5
  40. package/dist/esm/entities/OperationBatcher.js +9 -7
  41. package/dist/esm/entities/OperationBatcher.js.map +1 -1
  42. package/dist/esm/errors.d.ts +8 -0
  43. package/dist/esm/errors.js +12 -0
  44. package/dist/esm/errors.js.map +1 -0
  45. package/dist/esm/files/EntityFile.d.ts +6 -3
  46. package/dist/esm/files/EntityFile.js +22 -19
  47. package/dist/esm/files/EntityFile.js.map +1 -1
  48. package/dist/esm/files/FileManager.d.ts +8 -39
  49. package/dist/esm/files/FileManager.js +26 -170
  50. package/dist/esm/files/FileManager.js.map +1 -1
  51. package/dist/esm/files/utils.d.ts +0 -1
  52. package/dist/esm/files/utils.js +0 -14
  53. package/dist/esm/files/utils.js.map +1 -1
  54. package/dist/esm/index.d.ts +1 -2
  55. package/dist/esm/index.js +0 -1
  56. package/dist/esm/index.js.map +1 -1
  57. package/dist/esm/{metadata → persistence}/MessageCreator.d.ts +5 -6
  58. package/dist/esm/{metadata → persistence}/MessageCreator.js +31 -38
  59. package/dist/esm/persistence/MessageCreator.js.map +1 -0
  60. package/dist/esm/persistence/PersistenceFiles.d.ts +48 -0
  61. package/dist/esm/persistence/PersistenceFiles.js +160 -0
  62. package/dist/esm/persistence/PersistenceFiles.js.map +1 -0
  63. package/dist/esm/persistence/PersistenceMetadata.d.ts +69 -0
  64. package/dist/esm/persistence/PersistenceMetadata.js +302 -0
  65. package/dist/esm/persistence/PersistenceMetadata.js.map +1 -0
  66. package/dist/esm/persistence/PersistenceQueries.d.ts +34 -0
  67. package/dist/esm/persistence/PersistenceQueries.js +15 -0
  68. package/dist/esm/persistence/PersistenceQueries.js.map +1 -0
  69. package/dist/esm/persistence/PersistenceRebaser.d.ts +32 -0
  70. package/dist/esm/persistence/PersistenceRebaser.js +120 -0
  71. package/dist/esm/persistence/PersistenceRebaser.js.map +1 -0
  72. package/dist/esm/{IDBService.d.ts → persistence/idb/IdbService.d.ts} +9 -7
  73. package/dist/esm/{IDBService.js → persistence/idb/IdbService.js} +29 -8
  74. package/dist/esm/persistence/idb/IdbService.js.map +1 -0
  75. package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.d.ts +58 -0
  76. package/dist/esm/{files/FileStorage.js → persistence/idb/files/IdbPersistenceFileDb.js} +85 -50
  77. package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.js.map +1 -0
  78. package/dist/esm/persistence/idb/idbPersistence.d.ts +19 -0
  79. package/dist/esm/persistence/idb/idbPersistence.js +80 -0
  80. package/dist/esm/persistence/idb/idbPersistence.js.map +1 -0
  81. package/dist/esm/persistence/idb/metadata/IdbMetadataDb.d.ts +72 -0
  82. package/dist/esm/persistence/idb/metadata/IdbMetadataDb.js +235 -0
  83. package/dist/esm/persistence/idb/metadata/IdbMetadataDb.js.map +1 -0
  84. package/dist/esm/{metadata → persistence/idb/metadata}/openMetadataDatabase.d.ts +3 -1
  85. package/dist/esm/{metadata → persistence/idb/metadata}/openMetadataDatabase.js +12 -3
  86. package/dist/esm/persistence/idb/metadata/openMetadataDatabase.js.map +1 -0
  87. package/dist/esm/persistence/idb/queries/IdbQueryDb.d.ts +41 -0
  88. package/dist/esm/persistence/idb/queries/IdbQueryDb.js +174 -0
  89. package/dist/esm/persistence/idb/queries/IdbQueryDb.js.map +1 -0
  90. package/dist/esm/{migration → persistence/idb/queries/migration}/db.d.ts +1 -1
  91. package/dist/esm/{migration → persistence/idb/queries/migration}/db.js +10 -48
  92. package/dist/esm/persistence/idb/queries/migration/db.js.map +1 -0
  93. package/dist/esm/persistence/idb/queries/migration/engine.d.ts +12 -0
  94. package/dist/esm/{migration → persistence/idb/queries/migration}/engine.js +29 -46
  95. package/dist/esm/persistence/idb/queries/migration/engine.js.map +1 -0
  96. package/dist/esm/{migration → persistence/idb/queries/migration}/migrations.d.ts +1 -3
  97. package/dist/esm/{migration → persistence/idb/queries/migration}/migrations.js +11 -10
  98. package/dist/esm/persistence/idb/queries/migration/migrations.js.map +1 -0
  99. package/dist/esm/{migration → persistence/idb/queries/migration}/openQueryDatabase.d.ts +1 -3
  100. package/dist/esm/{migration → persistence/idb/queries/migration}/openQueryDatabase.js +4 -7
  101. package/dist/esm/persistence/idb/queries/migration/openQueryDatabase.js.map +1 -0
  102. package/dist/esm/{migration → persistence/idb/queries/migration}/paths.js +2 -2
  103. package/dist/esm/persistence/idb/queries/migration/paths.js.map +1 -0
  104. package/dist/esm/persistence/idb/queries/migration/paths.test.js.map +1 -0
  105. package/dist/esm/persistence/idb/queries/migration/types.d.ts +6 -0
  106. package/dist/esm/persistence/idb/queries/migration/types.js.map +1 -0
  107. package/dist/esm/persistence/idb/queries/ranges.d.ts +2 -0
  108. package/dist/esm/persistence/idb/queries/ranges.js +66 -0
  109. package/dist/esm/persistence/idb/queries/ranges.js.map +1 -0
  110. package/dist/esm/{idb.d.ts → persistence/idb/util.d.ts} +11 -0
  111. package/dist/esm/{idb.js → persistence/idb/util.js} +58 -1
  112. package/dist/esm/persistence/idb/util.js.map +1 -0
  113. package/dist/esm/persistence/interfaces.d.ts +181 -0
  114. package/dist/esm/persistence/interfaces.js +2 -0
  115. package/dist/esm/persistence/interfaces.js.map +1 -0
  116. package/dist/esm/persistence/persistence.d.ts +4 -0
  117. package/dist/esm/persistence/persistence.js +126 -0
  118. package/dist/esm/persistence/persistence.js.map +1 -0
  119. package/dist/esm/queries/BaseQuery.d.ts +2 -1
  120. package/dist/esm/queries/BaseQuery.js +3 -0
  121. package/dist/esm/queries/BaseQuery.js.map +1 -1
  122. package/dist/esm/queries/CollectionQueries.d.ts +1 -1
  123. package/dist/esm/queries/FindAllQuery.js +1 -3
  124. package/dist/esm/queries/FindAllQuery.js.map +1 -1
  125. package/dist/esm/queries/FindInfiniteQuery.js +2 -5
  126. package/dist/esm/queries/FindInfiniteQuery.js.map +1 -1
  127. package/dist/esm/queries/FindOneQuery.js +1 -3
  128. package/dist/esm/queries/FindOneQuery.js.map +1 -1
  129. package/dist/esm/queries/FindPageQuery.js +1 -3
  130. package/dist/esm/queries/FindPageQuery.js.map +1 -1
  131. package/dist/esm/queries/QueryCache.d.ts +1 -1
  132. package/dist/esm/queries/QueryCache.js +4 -0
  133. package/dist/esm/queries/QueryCache.js.map +1 -1
  134. package/dist/esm/sync/FileSync.d.ts +23 -8
  135. package/dist/esm/sync/FileSync.js +76 -28
  136. package/dist/esm/sync/FileSync.js.map +1 -1
  137. package/dist/esm/sync/PresenceManager.d.ts +4 -3
  138. package/dist/esm/sync/PresenceManager.js +2 -2
  139. package/dist/esm/sync/PresenceManager.js.map +1 -1
  140. package/dist/esm/sync/PushPullSync.d.ts +4 -6
  141. package/dist/esm/sync/PushPullSync.js +13 -12
  142. package/dist/esm/sync/PushPullSync.js.map +1 -1
  143. package/dist/esm/sync/Sync.d.ts +10 -11
  144. package/dist/esm/sync/Sync.js +55 -30
  145. package/dist/esm/sync/Sync.js.map +1 -1
  146. package/dist/esm/sync/WebSocketSync.d.ts +4 -6
  147. package/dist/esm/sync/WebSocketSync.js +20 -22
  148. package/dist/esm/sync/WebSocketSync.js.map +1 -1
  149. package/dist/esm/utils/Disposable.d.ts +5 -2
  150. package/dist/esm/utils/Disposable.js +3 -2
  151. package/dist/esm/utils/Disposable.js.map +1 -1
  152. package/dist/esm/utils/wip.d.ts +2 -0
  153. package/dist/esm/utils/wip.js +5 -0
  154. package/dist/esm/utils/wip.js.map +1 -0
  155. package/package.json +2 -2
  156. package/src/__tests__/batching.test.ts +6 -6
  157. package/src/__tests__/entities.test.ts +1 -1
  158. package/src/__tests__/fixtures/testStorage.ts +2 -10
  159. package/src/__tests__/queries.test.ts +1 -1
  160. package/src/backup.ts +3 -4
  161. package/src/client/Client.ts +69 -226
  162. package/src/client/ClientDescriptor.ts +53 -184
  163. package/src/context/Time.ts +35 -0
  164. package/src/context/context.ts +200 -0
  165. package/src/entities/DocumentManager.ts +0 -3
  166. package/src/entities/Entity.test.ts +9 -9
  167. package/src/entities/Entity.ts +6 -12
  168. package/src/entities/EntityCache.ts +0 -9
  169. package/src/entities/EntityMetadata.ts +4 -4
  170. package/src/entities/EntityStore.ts +26 -29
  171. package/src/entities/OperationBatcher.ts +9 -11
  172. package/src/errors.ts +13 -0
  173. package/src/files/EntityFile.ts +16 -5
  174. package/src/files/FileManager.ts +35 -245
  175. package/src/files/utils.ts +0 -15
  176. package/src/index.ts +2 -1
  177. package/src/{metadata → persistence}/MessageCreator.ts +46 -36
  178. package/src/persistence/PersistenceFiles.ts +227 -0
  179. package/src/persistence/PersistenceMetadata.ts +425 -0
  180. package/src/persistence/PersistenceQueries.ts +22 -0
  181. package/src/persistence/PersistenceRebaser.ts +171 -0
  182. package/src/{IDBService.ts → persistence/idb/IdbService.ts} +45 -12
  183. package/src/{files/FileStorage.ts → persistence/idb/files/IdbPersistenceFileDb.ts} +128 -86
  184. package/src/persistence/idb/idbPersistence.ts +116 -0
  185. package/src/persistence/idb/metadata/IdbMetadataDb.ts +460 -0
  186. package/src/{metadata → persistence/idb/metadata}/openMetadataDatabase.ts +21 -4
  187. package/src/persistence/idb/queries/IdbQueryDb.ts +251 -0
  188. package/src/{migration → persistence/idb/queries/migration}/db.ts +18 -72
  189. package/src/{migration → persistence/idb/queries/migration}/engine.ts +39 -62
  190. package/src/{migration → persistence/idb/queries/migration}/migrations.ts +13 -18
  191. package/src/{migration → persistence/idb/queries/migration}/openQueryDatabase.ts +5 -14
  192. package/src/{migration → persistence/idb/queries/migration}/paths.ts +4 -3
  193. package/src/persistence/idb/queries/migration/types.ts +8 -0
  194. package/src/persistence/idb/queries/ranges.ts +107 -0
  195. package/src/{idb.ts → persistence/idb/util.ts} +75 -0
  196. package/src/persistence/interfaces.ts +240 -0
  197. package/src/persistence/persistence.ts +223 -0
  198. package/src/queries/BaseQuery.ts +5 -1
  199. package/src/queries/CollectionQueries.ts +2 -2
  200. package/src/queries/FindAllQuery.ts +1 -3
  201. package/src/queries/FindInfiniteQuery.ts +2 -5
  202. package/src/queries/FindOneQuery.ts +1 -3
  203. package/src/queries/FindPageQuery.ts +1 -3
  204. package/src/queries/QueryCache.ts +20 -1
  205. package/src/sync/FileSync.ts +93 -30
  206. package/src/sync/PresenceManager.ts +5 -7
  207. package/src/sync/PushPullSync.ts +23 -19
  208. package/src/sync/Sync.ts +71 -37
  209. package/src/sync/WebSocketSync.ts +41 -27
  210. package/src/utils/Disposable.ts +7 -4
  211. package/src/utils/wip.ts +5 -0
  212. package/dist/esm/IDBService.js.map +0 -1
  213. package/dist/esm/__tests__/legacyOids.test.d.ts +0 -1
  214. package/dist/esm/__tests__/legacyOids.test.js +0 -352
  215. package/dist/esm/__tests__/legacyOids.test.js.map +0 -1
  216. package/dist/esm/context.d.ts +0 -45
  217. package/dist/esm/files/FileStorage.d.ts +0 -47
  218. package/dist/esm/files/FileStorage.js.map +0 -1
  219. package/dist/esm/idb.js.map +0 -1
  220. package/dist/esm/metadata/AckInfoStore.d.ts +0 -10
  221. package/dist/esm/metadata/AckInfoStore.js +0 -22
  222. package/dist/esm/metadata/AckInfoStore.js.map +0 -1
  223. package/dist/esm/metadata/BaselinesStore.d.ts +0 -40
  224. package/dist/esm/metadata/BaselinesStore.js +0 -102
  225. package/dist/esm/metadata/BaselinesStore.js.map +0 -1
  226. package/dist/esm/metadata/LocalReplicaStore.d.ts +0 -19
  227. package/dist/esm/metadata/LocalReplicaStore.js +0 -56
  228. package/dist/esm/metadata/LocalReplicaStore.js.map +0 -1
  229. package/dist/esm/metadata/MessageCreator.js.map +0 -1
  230. package/dist/esm/metadata/Metadata.d.ts +0 -146
  231. package/dist/esm/metadata/Metadata.js +0 -452
  232. package/dist/esm/metadata/Metadata.js.map +0 -1
  233. package/dist/esm/metadata/OperationsStore.d.ts +0 -62
  234. package/dist/esm/metadata/OperationsStore.js +0 -175
  235. package/dist/esm/metadata/OperationsStore.js.map +0 -1
  236. package/dist/esm/metadata/SchemaStore.d.ts +0 -9
  237. package/dist/esm/metadata/SchemaStore.js +0 -35
  238. package/dist/esm/metadata/SchemaStore.js.map +0 -1
  239. package/dist/esm/metadata/openMetadataDatabase.js.map +0 -1
  240. package/dist/esm/migration/db.js.map +0 -1
  241. package/dist/esm/migration/engine.d.ts +0 -15
  242. package/dist/esm/migration/engine.js.map +0 -1
  243. package/dist/esm/migration/errors.d.ts +0 -5
  244. package/dist/esm/migration/errors.js +0 -8
  245. package/dist/esm/migration/errors.js.map +0 -1
  246. package/dist/esm/migration/migrations.js.map +0 -1
  247. package/dist/esm/migration/openQueryDatabase.js.map +0 -1
  248. package/dist/esm/migration/openWIPDatabase.d.ts +0 -11
  249. package/dist/esm/migration/openWIPDatabase.js +0 -65
  250. package/dist/esm/migration/openWIPDatabase.js.map +0 -1
  251. package/dist/esm/migration/paths.js.map +0 -1
  252. package/dist/esm/migration/paths.test.js.map +0 -1
  253. package/dist/esm/migration/types.d.ts +0 -3
  254. package/dist/esm/migration/types.js.map +0 -1
  255. package/dist/esm/queries/QueryableStorage.d.ts +0 -20
  256. package/dist/esm/queries/QueryableStorage.js +0 -90
  257. package/dist/esm/queries/QueryableStorage.js.map +0 -1
  258. package/dist/esm/queries/dbQueries.d.ts +0 -22
  259. package/dist/esm/queries/dbQueries.js +0 -130
  260. package/dist/esm/queries/dbQueries.js.map +0 -1
  261. package/src/__tests__/legacyOids.test.ts +0 -375
  262. package/src/context.ts +0 -55
  263. package/src/metadata/AckInfoStore.ts +0 -30
  264. package/src/metadata/BaselinesStore.ts +0 -188
  265. package/src/metadata/LocalReplicaStore.ts +0 -79
  266. package/src/metadata/Metadata.ts +0 -685
  267. package/src/metadata/OperationsStore.ts +0 -332
  268. package/src/metadata/SchemaStore.ts +0 -47
  269. package/src/migration/errors.ts +0 -7
  270. package/src/migration/openWIPDatabase.ts +0 -97
  271. package/src/migration/types.ts +0 -4
  272. package/src/queries/QueryableStorage.ts +0 -122
  273. package/src/queries/dbQueries.ts +0 -161
  274. /package/dist/esm/{context.js → context/context.js} +0 -0
  275. /package/dist/esm/{migration → persistence/idb/queries/migration}/paths.d.ts +0 -0
  276. /package/dist/esm/{migration → persistence/idb/queries/migration}/paths.test.d.ts +0 -0
  277. /package/dist/esm/{migration → persistence/idb/queries/migration}/paths.test.js +0 -0
  278. /package/dist/esm/{migration → persistence/idb/queries/migration}/types.js +0 -0
  279. /package/src/{migration → persistence/idb/queries/migration}/paths.test.ts +0 -0
@@ -1,130 +0,0 @@
1
- import { createOid } from '@verdant-web/common';
2
- import { getRange } from './ranges.js';
3
- import { isAbortError } from '../idb.js';
4
- function getStore(db, collection, write) {
5
- return db
6
- .transaction(collection, write ? 'readwrite' : 'readonly')
7
- .objectStore(collection);
8
- }
9
- export async function findOneOid({ collection, index, context, }) {
10
- const store = getStore(context.documentDb, collection);
11
- const source = (index === null || index === void 0 ? void 0 : index.where) ? store.index(index.where) : store;
12
- const range = getRange(context.schema, collection, index);
13
- const direction = (index === null || index === void 0 ? void 0 : index.order) === 'desc' ? 'prev' : 'next';
14
- const request = source.openCursor(range, direction);
15
- const result = await new Promise((resolve, reject) => {
16
- request.onsuccess = () => {
17
- const cursor = request.result;
18
- if (cursor) {
19
- resolve(createOid(collection, cursor.primaryKey.toString()));
20
- }
21
- else {
22
- resolve(null);
23
- }
24
- };
25
- request.onerror = () => {
26
- var _a;
27
- if (((_a = request.error) === null || _a === void 0 ? void 0 : _a.name) === 'InvalidStateError') {
28
- context.log('error', `findOne query failed with InvalidStateError`, request.error);
29
- resolve(null);
30
- }
31
- else if (isAbortError(request.error)) {
32
- resolve(null);
33
- }
34
- else {
35
- reject(request.error);
36
- }
37
- };
38
- });
39
- return result;
40
- }
41
- export async function findAllOids({ collection, index, context, }) {
42
- const store = getStore(context.documentDb, collection);
43
- const source = (index === null || index === void 0 ? void 0 : index.where) ? store.index(index.where) : store;
44
- const range = getRange(context.schema, collection, index);
45
- const direction = (index === null || index === void 0 ? void 0 : index.order) === 'desc' ? 'prev' : 'next';
46
- const request = source.openCursor(range, direction);
47
- const result = await new Promise((resolve, reject) => {
48
- const results = new Set();
49
- request.onsuccess = () => {
50
- const cursor = request.result;
51
- if (cursor) {
52
- results.add(createOid(collection, cursor.primaryKey.toString()));
53
- cursor.continue();
54
- }
55
- else {
56
- resolve(Array.from(results));
57
- }
58
- };
59
- request.onerror = () => {
60
- var _a;
61
- if (((_a = request.error) === null || _a === void 0 ? void 0 : _a.name) === 'InvalidStateError') {
62
- context.log('error', `findAll query failed with InvalidStateError`, request.error);
63
- resolve([]);
64
- }
65
- else if (isAbortError(request.error)) {
66
- resolve([]);
67
- }
68
- else {
69
- reject(request.error);
70
- }
71
- };
72
- });
73
- return result;
74
- }
75
- export async function findPageOfOids({ collection, index, context, limit, offset, }) {
76
- const store = getStore(context.documentDb, collection);
77
- const source = (index === null || index === void 0 ? void 0 : index.where) ? store.index(index.where) : store;
78
- const range = getRange(context.schema, collection, index);
79
- const direction = (index === null || index === void 0 ? void 0 : index.order) === 'desc' ? 'prev' : 'next';
80
- const request = source.openCursor(range, direction);
81
- let hasDoneOffset = !offset;
82
- let hasNextPage = false;
83
- let visited = 0;
84
- const result = await new Promise((resolve, reject) => {
85
- const results = new Set();
86
- request.onsuccess = () => {
87
- visited++;
88
- const cursor = request.result;
89
- if (cursor) {
90
- if (offset && !hasDoneOffset) {
91
- cursor.advance(offset);
92
- hasDoneOffset = true;
93
- }
94
- else {
95
- if (limit && results.size < limit) {
96
- results.add(createOid(collection, cursor.primaryKey.toString()));
97
- }
98
- if (limit && visited > limit) {
99
- hasNextPage = true;
100
- resolve(Array.from(results));
101
- }
102
- else {
103
- cursor.continue();
104
- }
105
- }
106
- }
107
- else {
108
- resolve(Array.from(results));
109
- }
110
- };
111
- request.onerror = () => {
112
- var _a;
113
- if (((_a = request.error) === null || _a === void 0 ? void 0 : _a.name) === 'InvalidStateError') {
114
- context.log('error', `find query failed with InvalidStateError`, request.error);
115
- resolve([]);
116
- }
117
- else if (isAbortError(request.error)) {
118
- resolve([]);
119
- }
120
- else {
121
- reject(request.error);
122
- }
123
- };
124
- });
125
- return {
126
- result: result,
127
- hasNextPage,
128
- };
129
- }
130
- //# sourceMappingURL=dbQueries.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dbQueries.js","sourceRoot":"","sources":["../../../src/queries/dbQueries.ts"],"names":[],"mappings":"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"}
@@ -1,375 +0,0 @@
1
- import {
2
- HybridLogicalClockTimestampProvider,
3
- OperationPatch,
4
- getIndexValues,
5
- makeObjectRef,
6
- } from '@verdant-web/common';
7
- import { storeRequestPromise } from '../idb.js';
8
- import { openMetadataDatabase } from '../metadata/openMetadataDatabase.js';
9
- import { createTestStorage, todoCollection } from './fixtures/testStorage.js';
10
- import { describe, expect, it } from 'vitest';
11
- import { OperationsStore } from '../metadata/OperationsStore.js';
12
- import { BaselinesStore } from '../metadata/BaselinesStore.js';
13
-
14
- const idb = new IDBFactory();
15
-
16
- async function seedDatabaseAndCreateClient() {
17
- const client1 = await createTestStorage({
18
- idb,
19
- metadataVersion: 4,
20
- });
21
- await client1.close();
22
- const { db } = await openMetadataDatabase({
23
- indexedDB: idb,
24
- namespace: 'test',
25
- metadataVersion: 4,
26
- });
27
- expect(db.version).toBe(4);
28
- const tx = db.transaction(['baselines', 'operations'], 'readwrite');
29
- const clock = new HybridLogicalClockTimestampProvider();
30
- const ops = new OperationsStore(db, {});
31
- const baselines = new BaselinesStore(db, {});
32
- await Promise.all([
33
- baselines.setAll(
34
- [
35
- {
36
- oid: 'weirds/b.objectMap.one:ghi',
37
- snapshot: { content: 'ghi' },
38
- timestamp: clock.now(1),
39
- },
40
- {
41
- oid: 'weirds/b.objectMap.two:jkl',
42
- snapshot: { content: 'jkl' },
43
- timestamp: clock.now(1),
44
- },
45
- {
46
- oid: 'weirds/b.map:abc',
47
- snapshot: {},
48
- timestamp: clock.now(1),
49
- },
50
- {
51
- oid: 'weirds/b.objectMap:def',
52
- snapshot: {
53
- one: makeObjectRef('weirds/b.objectMap.one:ghi'),
54
- two: makeObjectRef('weirds/b.objectMap.two:jkl'),
55
- },
56
- timestamp: clock.now(1),
57
- },
58
- {
59
- oid: 'weirds/b.weird.ok:opq',
60
- snapshot: {
61
- message: 'ok',
62
- },
63
- timestamp: clock.now(1),
64
- },
65
- {
66
- oid: 'weirds/b.weird.cool:rst',
67
- snapshot: {
68
- message: 'cool',
69
- },
70
- timestamp: clock.now(1),
71
- },
72
- {
73
- oid: 'weirds/b.weird.list.#:xyz',
74
- snapshot: {
75
- name: 'xyz',
76
- test: 1,
77
- },
78
- timestamp: clock.now(1),
79
- },
80
- {
81
- oid: 'weirds/b.weird.list.#:123',
82
- snapshot: {
83
- name: '123',
84
- test: 2,
85
- },
86
- timestamp: clock.now(1),
87
- },
88
- {
89
- oid: 'weirds/b.weird.list:uvw',
90
- snapshot: [
91
- makeObjectRef('weirds/b/weird.list.#:xyz'),
92
- makeObjectRef('weirds/b/weird.list.#:123'),
93
- ],
94
- timestamp: clock.now(1),
95
- },
96
- {
97
- oid: 'weirds/b.weird:lmn',
98
- snapshot: {
99
- ok: makeObjectRef('weirds/b.weird.ok:opq'),
100
- cool: makeObjectRef('weirds/b.weird.cool:rst'),
101
- list: makeObjectRef('weirds/b.weird.list:uvw'),
102
- },
103
- timestamp: clock.now(1),
104
- },
105
- {
106
- oid: 'weirds/b',
107
- snapshot: {
108
- id: 'b',
109
- map: makeObjectRef('weirds/b.map:abc'),
110
- objectMap: makeObjectRef('weirds/b.objectMap:def'),
111
- weird: makeObjectRef('weirds/b.weird:lmn'),
112
- },
113
- timestamp: clock.now(1),
114
- },
115
- {
116
- oid: 'todos/a.attachments.#:baz',
117
- snapshot: {
118
- name: 'baz',
119
- test: 1,
120
- },
121
- timestamp: clock.now(1),
122
- },
123
- {
124
- oid: 'todos/a.attachments.#:qux',
125
- snapshot: {
126
- name: 'qux',
127
- test: 2,
128
- },
129
- timestamp: clock.now(1),
130
- },
131
- {
132
- oid: 'todos/a.attachments:bar',
133
- snapshot: [
134
- makeObjectRef('todos/a.attachments.#:baz'),
135
- makeObjectRef('todos/a.attachments.#:qux'),
136
- ],
137
- timestamp: clock.now(1),
138
- },
139
- {
140
- oid: 'todos/a.tags:foo',
141
- snapshot: ['tag1'],
142
- timestamp: clock.now(1),
143
- },
144
- {
145
- oid: 'todos/a',
146
- snapshot: {
147
- id: 'a',
148
- content: 'item a',
149
- tags: makeObjectRef('todos/a.tags:foo'),
150
- done: false,
151
- category: 'default',
152
- attachments: makeObjectRef('todos/a.attachments:bar'),
153
- },
154
- timestamp: clock.now(1),
155
- },
156
- ],
157
- { transaction: tx },
158
- ),
159
- ops.addOperations(
160
- [
161
- // trying to cover all types of operations which use refs here
162
- {
163
- oid: 'todos/a.tags:foo',
164
- timestamp: clock.now(1),
165
- data: {
166
- op: 'list-push',
167
- value: 'tag2',
168
- } as OperationPatch,
169
- isLocal: true,
170
- },
171
- {
172
- oid: 'todos/a.attachments.#:bin',
173
- timestamp: clock.now(1),
174
- data: {
175
- op: 'initialize',
176
- value: {
177
- name: 'bin',
178
- test: 2,
179
- },
180
- },
181
- isLocal: true,
182
- },
183
- {
184
- oid: 'todos/a.attachments:bar',
185
- timestamp: clock.now(1),
186
- data: {
187
- op: 'list-push',
188
- value: makeObjectRef('todos/a.attachments.#:bin'),
189
- },
190
- isLocal: true,
191
- },
192
- {
193
- oid: 'todos/a.attachments:bar',
194
- timestamp: clock.now(1),
195
- isLocal: true,
196
- data: {
197
- op: 'list-remove',
198
- value: makeObjectRef('todos/a.attachments.#:baz'),
199
- },
200
- },
201
- {
202
- oid: 'weirds/b.weird.list:uvw',
203
- timestamp: clock.now(1),
204
- data: {
205
- op: 'delete',
206
- },
207
- isLocal: true,
208
- },
209
- ],
210
- { transaction: tx },
211
- ),
212
- ]);
213
- db.close();
214
- // documents are a little trickier.
215
- const docDbReq = idb.open('test_collections', 1);
216
- const docDb = await new Promise<IDBDatabase>((resolve, reject) => {
217
- docDbReq.addEventListener('success', () => resolve(docDbReq.result));
218
- docDbReq.addEventListener('error', reject);
219
- });
220
- const docTx = docDb.transaction(['todos'], 'readwrite');
221
- await Promise.all(
222
- [
223
- docTx.objectStore('todos').put(
224
- getIndexValues(todoCollection, {
225
- id: 'a',
226
- content: 'item a',
227
- tags: ['tag1', 'tag2'],
228
- done: false,
229
- category: 'default',
230
- attachments: [
231
- {
232
- name: 'qux',
233
- test: 2,
234
- },
235
- {
236
- name: 'bin',
237
- test: 2,
238
- },
239
- ],
240
- }),
241
- ),
242
- ].map(storeRequestPromise),
243
- );
244
- docDb.close();
245
- await new Promise((resolve) => setTimeout(resolve, 100));
246
- return createTestStorage({ idb });
247
- }
248
-
249
- // skipping this - pruning is messing with a lot of it
250
- // and of course this use case is no longer very relevant.
251
- describe.skip('clients with stored legacy oids', () => {
252
- it('can still function', async () => {
253
- const client = await seedDatabaseAndCreateClient();
254
- const todo = await client.todos.get('a').resolved;
255
- const weird = await client.weirds.get('b').resolved;
256
-
257
- // first: does the data look right?
258
- expect(todo.getSnapshot()).toMatchObject({
259
- id: 'a',
260
- content: 'item a',
261
- tags: ['tag1', 'tag2'],
262
- done: false,
263
- category: 'default',
264
- attachments: [
265
- {
266
- name: 'qux',
267
- test: 2,
268
- },
269
- {
270
- name: 'bin',
271
- test: 2,
272
- },
273
- ],
274
- });
275
- expect(weird.getSnapshot()).toMatchObject({
276
- id: 'b',
277
- map: {},
278
- objectMap: {},
279
- weird: {
280
- list: null,
281
- cool: {
282
- message: 'cool',
283
- },
284
- ok: {
285
- message: 'ok',
286
- },
287
- },
288
- });
289
-
290
- todo.get('attachments').push({
291
- name: 'qux',
292
- });
293
- await client.todos.put({
294
- id: 'aa',
295
- content: 'item aa',
296
- tags: [],
297
- category: 'default',
298
- attachments: [],
299
- });
300
-
301
- const allTodos = client.todos.findAll();
302
-
303
- expect((await allTodos.resolved).map((t) => t.getSnapshot())).toEqual([
304
- {
305
- id: 'a',
306
- content: 'item a',
307
- tags: ['tag1', 'tag2'],
308
- done: false,
309
- category: 'default',
310
- attachments: [
311
- {
312
- name: 'qux',
313
- test: 2,
314
- },
315
- {
316
- name: 'bin',
317
- test: 2,
318
- },
319
- {
320
- name: 'qux',
321
- test: 1,
322
- },
323
- ],
324
- },
325
- {
326
- id: 'aa',
327
- content: 'item aa',
328
- tags: [],
329
- category: 'default',
330
- attachments: [],
331
- done: false,
332
- },
333
- ]);
334
-
335
- await client.todos.delete('a');
336
- expect((await allTodos.resolved).map((t) => t.getSnapshot()))
337
- .toMatchInlineSnapshot(`
338
- [
339
- {
340
- "attachments": [],
341
- "category": "default",
342
- "content": "item aa",
343
- "done": false,
344
- "id": "aa",
345
- "tags": [],
346
- },
347
- ]
348
- `);
349
-
350
- weird.get('weird').set('another', 'bar');
351
- weird.get('weird').set('list', ['a', 'b', 'c']);
352
- weird.get('weird').delete('cool');
353
- weird.get('map').set('foo', 'bar');
354
- expect(weird.getSnapshot()).toMatchInlineSnapshot(`
355
- {
356
- "id": "b",
357
- "map": {
358
- "foo": "bar",
359
- },
360
- "objectMap": null,
361
- "weird": {
362
- "another": "bar",
363
- "list": [
364
- "a",
365
- "b",
366
- "c",
367
- ],
368
- "ok": {
369
- "message": "ok",
370
- },
371
- },
372
- }
373
- `);
374
- });
375
- });
package/src/context.ts DELETED
@@ -1,55 +0,0 @@
1
- import {
2
- EventSubscriber,
3
- Migration,
4
- ObjectIdentifier,
5
- StorageSchema,
6
- TimestampProvider,
7
- } from '@verdant-web/common';
8
- import { UndoHistory } from './UndoHistory.js';
9
-
10
- /**
11
- * Common components utilized across various client
12
- * services.
13
- */
14
- export interface Context {
15
- namespace: string;
16
- metaDb: IDBDatabase;
17
- documentDb: IDBDatabase;
18
- undoHistory: UndoHistory;
19
- schema: StorageSchema;
20
- oldSchemas?: StorageSchema[];
21
- log: (
22
- level: 'debug' | 'info' | 'warn' | 'error' | 'critical',
23
- ...args: any[]
24
- ) => void;
25
- entityEvents: EventSubscriber<{
26
- collectionsChanged: (names: string[]) => void;
27
- documentChanged: (oid: ObjectIdentifier) => void;
28
- }>;
29
- internalEvents: EventSubscriber<{
30
- documentDbChanged: (db: IDBDatabase) => void;
31
- }>;
32
- globalEvents: EventSubscriber<{
33
- /**
34
- * A change from a future version of the application has been
35
- * witnessed. These changes are not applied but it indicates
36
- * the app has been updated and we should prompt the user
37
- * to reload or have their app user manually reload.
38
- *
39
- * The parameter is the timestamp of the future change.
40
- */
41
- futureSeen: (timestamp: string) => void;
42
- /**
43
- * The server requested this replica reset its state
44
- * completely. This can happen when the replica has
45
- * been offline for too long and reconnects.
46
- */
47
- resetToServer: () => void;
48
- }>;
49
- weakRef<T extends object>(value: T): WeakRef<T>;
50
- migrations: Migration<any>[];
51
- /**
52
- * Get the current logical timestamp
53
- */
54
- getNow(): string;
55
- }
@@ -1,30 +0,0 @@
1
- import { IDBService } from '../IDBService.js';
2
-
3
- type AckInfo = {
4
- type: 'ack';
5
- // null means no operations are acknowledged
6
- // by every peer yet.
7
- globalAckTimestamp: string | null;
8
- };
9
-
10
- export class AckInfoStore extends IDBService {
11
- getAckInfo = async (): Promise<AckInfo> => {
12
- const result = await this.run<AckInfo>('info', (store) => store.get('ack'));
13
- if (result) {
14
- return result;
15
- } else {
16
- return {
17
- globalAckTimestamp: null,
18
- type: 'ack',
19
- };
20
- }
21
- };
22
-
23
- setGlobalAck = async (ack: string) => {
24
- await this.run(
25
- 'info',
26
- (store) => store.put({ type: 'ack', globalAckTimestamp: ack }),
27
- { mode: 'readwrite' },
28
- );
29
- };
30
- }