@verdant-web/store 3.3.2 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/dist/bundle/index.js +8 -8
  2. package/dist/bundle/index.js.map +4 -4
  3. package/dist/esm/BackoffScheduler.js.map +1 -1
  4. package/dist/esm/IDBService.js.map +1 -1
  5. package/dist/esm/UndoHistory.js.map +1 -1
  6. package/dist/esm/__tests__/documents.test.js.map +1 -1
  7. package/dist/esm/__tests__/queries.test.js.map +1 -1
  8. package/dist/esm/backup.js.map +1 -1
  9. package/dist/esm/client/Client.d.ts +2 -24
  10. package/dist/esm/client/Client.js +7 -0
  11. package/dist/esm/client/Client.js.map +1 -1
  12. package/dist/esm/client/ClientDescriptor.js.map +1 -1
  13. package/dist/esm/entities/Entity.js.map +1 -1
  14. package/dist/esm/entities/EntityCache.js.map +1 -1
  15. package/dist/esm/entities/EntityMetadata.d.ts +2 -2
  16. package/dist/esm/entities/EntityMetadata.js.map +1 -1
  17. package/dist/esm/entities/EntityStore.d.ts +1 -0
  18. package/dist/esm/entities/EntityStore.js.map +1 -1
  19. package/dist/esm/entities/OperationBatcher.js.map +1 -1
  20. package/dist/esm/files/EntityFile.js.map +1 -1
  21. package/dist/esm/files/FileManager.d.ts +1 -0
  22. package/dist/esm/files/FileManager.js +3 -0
  23. package/dist/esm/files/FileManager.js.map +1 -1
  24. package/dist/esm/files/FileStorage.js.map +1 -1
  25. package/dist/esm/files/utils.js.map +1 -1
  26. package/dist/esm/idb.js.map +1 -1
  27. package/dist/esm/metadata/AckInfoStore.js.map +1 -1
  28. package/dist/esm/metadata/BaselinesStore.d.ts +4 -4
  29. package/dist/esm/metadata/LocalReplicaStore.js.map +1 -1
  30. package/dist/esm/metadata/MessageCreator.js.map +1 -1
  31. package/dist/esm/metadata/Metadata.d.ts +1 -1
  32. package/dist/esm/metadata/Metadata.js.map +1 -1
  33. package/dist/esm/metadata/OperationsStore.js.map +1 -1
  34. package/dist/esm/metadata/SchemaStore.js.map +1 -1
  35. package/dist/esm/metadata/openMetadataDatabase.js.map +1 -1
  36. package/dist/esm/migration/db.js.map +1 -1
  37. package/dist/esm/migration/openDatabase.js.map +1 -1
  38. package/dist/esm/migration/paths.js.map +1 -1
  39. package/dist/esm/queries/BaseQuery.js.map +1 -1
  40. package/dist/esm/queries/QueryCache.js.map +1 -1
  41. package/dist/esm/queries/QueryableStorage.js.map +1 -1
  42. package/dist/esm/queries/dbQueries.js.map +1 -1
  43. package/dist/esm/queries/keys.js.map +1 -1
  44. package/dist/esm/queries/ranges.js.map +1 -1
  45. package/dist/esm/queries/utils.js.map +1 -1
  46. package/dist/esm/sync/FileSync.js.map +1 -1
  47. package/dist/esm/sync/Heartbeat.js.map +1 -1
  48. package/dist/esm/sync/PresenceManager.js.map +1 -1
  49. package/dist/esm/sync/PushPullSync.js.map +1 -1
  50. package/dist/esm/sync/ServerSyncEndpointProvider.js.map +1 -1
  51. package/dist/esm/sync/Sync.d.ts +1 -1
  52. package/dist/esm/sync/Sync.js.map +1 -1
  53. package/dist/esm/sync/WebSocketSync.js.map +1 -1
  54. package/package.json +9 -10
  55. package/src/client/Client.ts +8 -1
  56. package/src/files/FileManager.ts +4 -0
  57. package/src/sync/Sync.ts +2 -2
  58. package/dist/cjs/BackoffScheduler.d.ts +0 -19
  59. package/dist/cjs/BackoffScheduler.js +0 -45
  60. package/dist/cjs/BackoffScheduler.js.map +0 -1
  61. package/dist/cjs/DocumentManager.d.ts +0 -28
  62. package/dist/cjs/DocumentManager.js +0 -45
  63. package/dist/cjs/DocumentManager.js.map +0 -1
  64. package/dist/cjs/FakeWeakRef.d.ts +0 -11
  65. package/dist/cjs/FakeWeakRef.js +0 -19
  66. package/dist/cjs/FakeWeakRef.js.map +0 -1
  67. package/dist/cjs/IDBService.d.ts +0 -30
  68. package/dist/cjs/IDBService.js +0 -101
  69. package/dist/cjs/IDBService.js.map +0 -1
  70. package/dist/cjs/UndoHistory.d.ts +0 -16
  71. package/dist/cjs/UndoHistory.js +0 -55
  72. package/dist/cjs/UndoHistory.js.map +0 -1
  73. package/dist/cjs/__tests__/batching.test.d.ts +0 -1
  74. package/dist/cjs/__tests__/batching.test.js +0 -47
  75. package/dist/cjs/__tests__/batching.test.js.map +0 -1
  76. package/dist/cjs/__tests__/documents.test.d.ts +0 -1
  77. package/dist/cjs/__tests__/documents.test.js +0 -468
  78. package/dist/cjs/__tests__/documents.test.js.map +0 -1
  79. package/dist/cjs/__tests__/fixtures/testStorage.d.ts +0 -76
  80. package/dist/cjs/__tests__/fixtures/testStorage.js +0 -96
  81. package/dist/cjs/__tests__/fixtures/testStorage.js.map +0 -1
  82. package/dist/cjs/__tests__/legacyOids.test.d.ts +0 -1
  83. package/dist/cjs/__tests__/legacyOids.test.js +0 -354
  84. package/dist/cjs/__tests__/legacyOids.test.js.map +0 -1
  85. package/dist/cjs/__tests__/mutations.test.d.ts +0 -1
  86. package/dist/cjs/__tests__/mutations.test.js +0 -48
  87. package/dist/cjs/__tests__/mutations.test.js.map +0 -1
  88. package/dist/cjs/__tests__/queries.test.d.ts +0 -1
  89. package/dist/cjs/__tests__/queries.test.js +0 -323
  90. package/dist/cjs/__tests__/queries.test.js.map +0 -1
  91. package/dist/cjs/__tests__/setup/indexedDB.d.ts +0 -1
  92. package/dist/cjs/__tests__/setup/indexedDB.js +0 -16
  93. package/dist/cjs/__tests__/setup/indexedDB.js.map +0 -1
  94. package/dist/cjs/__tests__/undo.test.d.ts +0 -1
  95. package/dist/cjs/__tests__/undo.test.js +0 -94
  96. package/dist/cjs/__tests__/undo.test.js.map +0 -1
  97. package/dist/cjs/backup.d.ts +0 -10
  98. package/dist/cjs/backup.js +0 -58
  99. package/dist/cjs/backup.js.map +0 -1
  100. package/dist/cjs/client/Client.d.ts +0 -120
  101. package/dist/cjs/client/Client.js +0 -300
  102. package/dist/cjs/client/Client.js.map +0 -1
  103. package/dist/cjs/client/ClientDescriptor.d.ts +0 -76
  104. package/dist/cjs/client/ClientDescriptor.js +0 -213
  105. package/dist/cjs/client/ClientDescriptor.js.map +0 -1
  106. package/dist/cjs/client/constants.d.ts +0 -1
  107. package/dist/cjs/client/constants.js +0 -5
  108. package/dist/cjs/client/constants.js.map +0 -1
  109. package/dist/cjs/constants.d.ts +0 -1
  110. package/dist/cjs/constants.js +0 -5
  111. package/dist/cjs/constants.js.map +0 -1
  112. package/dist/cjs/context.d.ts +0 -38
  113. package/dist/cjs/context.js +0 -3
  114. package/dist/cjs/context.js.map +0 -1
  115. package/dist/cjs/entities/Entity.d.ts +0 -148
  116. package/dist/cjs/entities/Entity.js +0 -711
  117. package/dist/cjs/entities/Entity.js.map +0 -1
  118. package/dist/cjs/entities/Entity.test.d.ts +0 -1
  119. package/dist/cjs/entities/Entity.test.js +0 -194
  120. package/dist/cjs/entities/Entity.test.js.map +0 -1
  121. package/dist/cjs/entities/EntityCache.d.ts +0 -15
  122. package/dist/cjs/entities/EntityCache.js +0 -39
  123. package/dist/cjs/entities/EntityCache.js.map +0 -1
  124. package/dist/cjs/entities/EntityMetadata.d.ts +0 -68
  125. package/dist/cjs/entities/EntityMetadata.js +0 -261
  126. package/dist/cjs/entities/EntityMetadata.js.map +0 -1
  127. package/dist/cjs/entities/EntityStore.d.ts +0 -80
  128. package/dist/cjs/entities/EntityStore.js +0 -352
  129. package/dist/cjs/entities/EntityStore.js.map +0 -1
  130. package/dist/cjs/entities/OperationBatcher.d.ts +0 -52
  131. package/dist/cjs/entities/OperationBatcher.js +0 -165
  132. package/dist/cjs/entities/OperationBatcher.js.map +0 -1
  133. package/dist/cjs/entities/types.d.ts +0 -103
  134. package/dist/cjs/entities/types.js +0 -3
  135. package/dist/cjs/entities/types.js.map +0 -1
  136. package/dist/cjs/files/EntityFile.d.ts +0 -35
  137. package/dist/cjs/files/EntityFile.js +0 -81
  138. package/dist/cjs/files/EntityFile.js.map +0 -1
  139. package/dist/cjs/files/FileManager.d.ts +0 -46
  140. package/dist/cjs/files/FileManager.js +0 -174
  141. package/dist/cjs/files/FileManager.js.map +0 -1
  142. package/dist/cjs/files/FileStorage.d.ts +0 -39
  143. package/dist/cjs/files/FileStorage.js +0 -110
  144. package/dist/cjs/files/FileStorage.js.map +0 -1
  145. package/dist/cjs/files/utils.d.ts +0 -10
  146. package/dist/cjs/files/utils.js +0 -62
  147. package/dist/cjs/files/utils.js.map +0 -1
  148. package/dist/cjs/files/utils.test.d.ts +0 -1
  149. package/dist/cjs/files/utils.test.js +0 -81
  150. package/dist/cjs/files/utils.test.js.map +0 -1
  151. package/dist/cjs/idb.d.ts +0 -13
  152. package/dist/cjs/idb.js +0 -158
  153. package/dist/cjs/idb.js.map +0 -1
  154. package/dist/cjs/index.d.ts +0 -23
  155. package/dist/cjs/index.js +0 -25
  156. package/dist/cjs/index.js.map +0 -1
  157. package/dist/cjs/metadata/AckInfoStore.d.ts +0 -10
  158. package/dist/cjs/metadata/AckInfoStore.js +0 -26
  159. package/dist/cjs/metadata/AckInfoStore.js.map +0 -1
  160. package/dist/cjs/metadata/BaselinesStore.d.ts +0 -40
  161. package/dist/cjs/metadata/BaselinesStore.js +0 -106
  162. package/dist/cjs/metadata/BaselinesStore.js.map +0 -1
  163. package/dist/cjs/metadata/LocalReplicaStore.d.ts +0 -18
  164. package/dist/cjs/metadata/LocalReplicaStore.js +0 -62
  165. package/dist/cjs/metadata/LocalReplicaStore.js.map +0 -1
  166. package/dist/cjs/metadata/MessageCreator.d.ts +0 -19
  167. package/dist/cjs/metadata/MessageCreator.js +0 -128
  168. package/dist/cjs/metadata/MessageCreator.js.map +0 -1
  169. package/dist/cjs/metadata/Metadata.d.ts +0 -135
  170. package/dist/cjs/metadata/Metadata.js +0 -408
  171. package/dist/cjs/metadata/Metadata.js.map +0 -1
  172. package/dist/cjs/metadata/OperationsStore.d.ts +0 -62
  173. package/dist/cjs/metadata/OperationsStore.js +0 -179
  174. package/dist/cjs/metadata/OperationsStore.js.map +0 -1
  175. package/dist/cjs/metadata/SchemaStore.d.ts +0 -9
  176. package/dist/cjs/metadata/SchemaStore.js +0 -39
  177. package/dist/cjs/metadata/SchemaStore.js.map +0 -1
  178. package/dist/cjs/metadata/openMetadataDatabase.d.ts +0 -19
  179. package/dist/cjs/metadata/openMetadataDatabase.js +0 -220
  180. package/dist/cjs/metadata/openMetadataDatabase.js.map +0 -1
  181. package/dist/cjs/migration/db.d.ts +0 -8
  182. package/dist/cjs/migration/db.js +0 -112
  183. package/dist/cjs/migration/db.js.map +0 -1
  184. package/dist/cjs/migration/errors.d.ts +0 -5
  185. package/dist/cjs/migration/errors.js +0 -12
  186. package/dist/cjs/migration/errors.js.map +0 -1
  187. package/dist/cjs/migration/openDatabase.d.ts +0 -20
  188. package/dist/cjs/migration/openDatabase.js +0 -468
  189. package/dist/cjs/migration/openDatabase.js.map +0 -1
  190. package/dist/cjs/migration/paths.d.ts +0 -6
  191. package/dist/cjs/migration/paths.js +0 -53
  192. package/dist/cjs/migration/paths.js.map +0 -1
  193. package/dist/cjs/migration/paths.test.d.ts +0 -1
  194. package/dist/cjs/migration/paths.test.js +0 -91
  195. package/dist/cjs/migration/paths.test.js.map +0 -1
  196. package/dist/cjs/queries/BaseQuery.d.ts +0 -53
  197. package/dist/cjs/queries/BaseQuery.js +0 -148
  198. package/dist/cjs/queries/BaseQuery.js.map +0 -1
  199. package/dist/cjs/queries/CollectionQueries.d.ts +0 -55
  200. package/dist/cjs/queries/CollectionQueries.js +0 -92
  201. package/dist/cjs/queries/CollectionQueries.js.map +0 -1
  202. package/dist/cjs/queries/FindAllQuery.d.ts +0 -12
  203. package/dist/cjs/queries/FindAllQuery.js +0 -44
  204. package/dist/cjs/queries/FindAllQuery.js.map +0 -1
  205. package/dist/cjs/queries/FindInfiniteQuery.d.ts +0 -19
  206. package/dist/cjs/queries/FindInfiniteQuery.js +0 -70
  207. package/dist/cjs/queries/FindInfiniteQuery.js.map +0 -1
  208. package/dist/cjs/queries/FindOneQuery.d.ts +0 -12
  209. package/dist/cjs/queries/FindOneQuery.js +0 -43
  210. package/dist/cjs/queries/FindOneQuery.js.map +0 -1
  211. package/dist/cjs/queries/FindPageQuery.d.ts +0 -24
  212. package/dist/cjs/queries/FindPageQuery.js +0 -77
  213. package/dist/cjs/queries/FindPageQuery.js.map +0 -1
  214. package/dist/cjs/queries/GetQuery.d.ts +0 -10
  215. package/dist/cjs/queries/GetQuery.js +0 -30
  216. package/dist/cjs/queries/GetQuery.js.map +0 -1
  217. package/dist/cjs/queries/QueryCache.d.ts +0 -17
  218. package/dist/cjs/queries/QueryCache.js +0 -46
  219. package/dist/cjs/queries/QueryCache.js.map +0 -1
  220. package/dist/cjs/queries/QueryableStorage.d.ts +0 -20
  221. package/dist/cjs/queries/QueryableStorage.js +0 -94
  222. package/dist/cjs/queries/QueryableStorage.js.map +0 -1
  223. package/dist/cjs/queries/dbQueries.d.ts +0 -22
  224. package/dist/cjs/queries/dbQueries.js +0 -136
  225. package/dist/cjs/queries/dbQueries.js.map +0 -1
  226. package/dist/cjs/queries/keys.d.ts +0 -10
  227. package/dist/cjs/queries/keys.js +0 -34
  228. package/dist/cjs/queries/keys.js.map +0 -1
  229. package/dist/cjs/queries/ranges.d.ts +0 -2
  230. package/dist/cjs/queries/ranges.js +0 -70
  231. package/dist/cjs/queries/ranges.js.map +0 -1
  232. package/dist/cjs/queries/types.d.ts +0 -6
  233. package/dist/cjs/queries/types.js +0 -3
  234. package/dist/cjs/queries/types.js.map +0 -1
  235. package/dist/cjs/queries/utils.d.ts +0 -3
  236. package/dist/cjs/queries/utils.js +0 -25
  237. package/dist/cjs/queries/utils.js.map +0 -1
  238. package/dist/cjs/sync/FileSync.d.ts +0 -24
  239. package/dist/cjs/sync/FileSync.js +0 -87
  240. package/dist/cjs/sync/FileSync.js.map +0 -1
  241. package/dist/cjs/sync/Heartbeat.d.ts +0 -25
  242. package/dist/cjs/sync/Heartbeat.js +0 -64
  243. package/dist/cjs/sync/Heartbeat.js.map +0 -1
  244. package/dist/cjs/sync/PresenceManager.d.ts +0 -55
  245. package/dist/cjs/sync/PresenceManager.js +0 -126
  246. package/dist/cjs/sync/PresenceManager.js.map +0 -1
  247. package/dist/cjs/sync/PushPullSync.d.ts +0 -39
  248. package/dist/cjs/sync/PushPullSync.js +0 -159
  249. package/dist/cjs/sync/PushPullSync.js.map +0 -1
  250. package/dist/cjs/sync/ServerSyncEndpointProvider.d.ts +0 -34
  251. package/dist/cjs/sync/ServerSyncEndpointProvider.js +0 -69
  252. package/dist/cjs/sync/ServerSyncEndpointProvider.js.map +0 -1
  253. package/dist/cjs/sync/Sync.d.ts +0 -160
  254. package/dist/cjs/sync/Sync.js +0 -293
  255. package/dist/cjs/sync/Sync.js.map +0 -1
  256. package/dist/cjs/sync/WebSocketSync.d.ts +0 -44
  257. package/dist/cjs/sync/WebSocketSync.js +0 -221
  258. package/dist/cjs/sync/WebSocketSync.js.map +0 -1
  259. package/dist/cjs/types.d.ts +0 -12
  260. package/dist/cjs/types.js +0 -3
  261. package/dist/cjs/types.js.map +0 -1
  262. package/dist/cjs/utils/Disposable.d.ts +0 -6
  263. package/dist/cjs/utils/Disposable.js +0 -19
  264. package/dist/cjs/utils/Disposable.js.map +0 -1
  265. package/dist/cjs/utils/Resolvable.d.ts +0 -8
  266. package/dist/cjs/utils/Resolvable.js +0 -23
  267. package/dist/cjs/utils/Resolvable.js.map +0 -1
  268. package/dist/cjs/vanilla.d.ts +0 -1
  269. package/dist/cjs/vanilla.js +0 -28
  270. package/dist/cjs/vanilla.js.map +0 -1
  271. package/dist/tsconfig-cjs.tsbuildinfo +0 -1
  272. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,40 +0,0 @@
1
- import { DocumentBaseline, ObjectIdentifier } from '@verdant-web/common';
2
- import { IDBService } from '../IDBService.js';
3
- import { Context } from '../context.js';
4
- export declare class BaselinesStore extends IDBService {
5
- constructor(db: IDBDatabase, opts: {
6
- log?: Context['log'];
7
- });
8
- getAllForDocument: (oid: ObjectIdentifier, { mode, transaction, }?: {
9
- mode?: "readonly" | "readwrite" | undefined;
10
- transaction?: IDBTransaction | undefined;
11
- }) => Promise<DocumentBaseline<any>[]>;
12
- iterateOverAllForDocument: (oid: ObjectIdentifier, iterator: (baseline: DocumentBaseline, store: IDBObjectStore) => void, { mode, transaction, }?: {
13
- mode?: "readonly" | "readwrite" | undefined;
14
- transaction?: IDBTransaction | undefined;
15
- }) => Promise<void>;
16
- iterateOverAllForCollection: (collection: string, iterator: (baseline: DocumentBaseline, store: IDBObjectStore) => void, { mode, transaction, }?: {
17
- mode?: "readonly" | "readwrite" | undefined;
18
- transaction?: IDBTransaction | undefined;
19
- }) => Promise<void>;
20
- getAllForMultipleDocuments: (docOids: string[], { mode }?: {
21
- mode?: "readonly" | "readwrite" | undefined;
22
- }) => Promise<DocumentBaseline<any>[]>;
23
- getAllSince: (timestamp: string | null, { mode }?: {
24
- mode?: "readonly" | "readwrite" | undefined;
25
- }) => Promise<DocumentBaseline<any>[]>;
26
- get: (oid: ObjectIdentifier, { transaction, mode, }?: {
27
- transaction?: IDBTransaction | undefined;
28
- mode?: "readonly" | "readwrite" | undefined;
29
- }) => Promise<DocumentBaseline<any>>;
30
- set: <T>(baseline: DocumentBaseline<T>, { transaction }?: {
31
- transaction?: IDBTransaction | undefined;
32
- }) => Promise<void>;
33
- setAll: <T>(baselines: DocumentBaseline<T>[], { transaction }?: {
34
- transaction?: IDBTransaction | undefined;
35
- }) => Promise<void>;
36
- reset: () => Promise<undefined>;
37
- delete: (oid: ObjectIdentifier, { transaction }: {
38
- transaction?: IDBTransaction | undefined;
39
- }) => Promise<void>;
40
- }
@@ -1,106 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaselinesStore = void 0;
4
- const common_1 = require("@verdant-web/common");
5
- const IDBService_js_1 = require("../IDBService.js");
6
- class BaselinesStore extends IDBService_js_1.IDBService {
7
- constructor(db, opts) {
8
- super(db, opts);
9
- this.getAllForDocument = async (oid, { mode = 'readonly', transaction, } = {}) => {
10
- const baselines = [];
11
- await this.iterateOverAllForDocument(oid, (baseline) => {
12
- baselines.push(baseline);
13
- }, { mode, transaction });
14
- return baselines;
15
- };
16
- this.iterateOverAllForDocument = async (oid, iterator, { mode = 'readonly', transaction, } = {}) => {
17
- return this.iterate('baselines', (store) => {
18
- const root = (0, common_1.getOidRoot)(oid);
19
- const [start, end] = (0, common_1.getOidSubIdRange)(oid);
20
- // FIXME: get rid of legacy dot OIDs...
21
- // if (isLegacyDotOid(oid)) {
22
- const [dotStart, dotEnd] = (0, common_1.getLegacyDotOidSubIdRange)(oid);
23
- return [
24
- store.openCursor(IDBKeyRange.only(root)),
25
- store.openCursor(IDBKeyRange.bound(start, end, false, false)),
26
- store.openCursor(IDBKeyRange.bound(dotStart, dotEnd, false, false)),
27
- ];
28
- // } else {
29
- // return [
30
- // // first the root itself
31
- // store.openCursor(IDBKeyRange.only(root)),
32
- // // then the range of its possible subdocuments
33
- // store.openCursor(IDBKeyRange.bound(start, end, false, false)),
34
- // ];
35
- // }
36
- }, iterator, { mode, transaction });
37
- };
38
- this.iterateOverAllForCollection = async (collection, iterator, { mode = 'readonly', transaction, } = {}) => {
39
- return this.iterate('baselines', (store) => {
40
- return [
41
- store.openCursor(IDBKeyRange.bound(collection, collection + '\uffff', false, false)),
42
- ];
43
- }, iterator, { mode, transaction });
44
- };
45
- this.getAllForMultipleDocuments = async (docOids, { mode = 'readonly' } = {}) => {
46
- const result = await this.runAll('baselines', (store) => {
47
- return docOids.flatMap((oid) => {
48
- const root = (0, common_1.getOidRoot)(oid);
49
- const [start, end] = (0, common_1.getOidSubIdRange)(oid);
50
- // FIXME: get rid of legacy dot OIDs...
51
- // if (isLegacyDotOid(oid)) {
52
- const [dotStart, dotEnd] = (0, common_1.getLegacyDotOidSubIdRange)(oid);
53
- return [
54
- store.get(root),
55
- store.getAll(IDBKeyRange.bound(start, end, false, false)),
56
- store.getAll(IDBKeyRange.bound(dotStart, dotEnd, false, false)),
57
- ];
58
- // } else {
59
- // return [
60
- // store.get(root),
61
- // store.getAll(IDBKeyRange.bound(start, end, false, false)),
62
- // ];
63
- // }
64
- });
65
- }, { mode });
66
- return result.flat();
67
- };
68
- this.getAllSince = async (timestamp, { mode = 'readonly' } = {}) => {
69
- return this.run('baselines', (store) => {
70
- const range = timestamp
71
- ? IDBKeyRange.lowerBound(timestamp, true)
72
- : undefined;
73
- const index = store.index('timestamp');
74
- return index.getAll(range);
75
- }, { mode });
76
- };
77
- this.get = async (oid, { transaction, mode = 'readonly', } = {}) => {
78
- return this.run('baselines', (store) => store.get(oid), {
79
- mode,
80
- transaction,
81
- });
82
- };
83
- this.set = async (baseline, { transaction } = {}) => {
84
- await this.run('baselines', (store) => store.put(baseline), {
85
- mode: 'readwrite',
86
- transaction,
87
- });
88
- };
89
- this.setAll = async (baselines, { transaction } = {}) => {
90
- await this.runAll('baselines', (store) => {
91
- return baselines.map((baseline) => store.put(baseline));
92
- }, { mode: 'readwrite', transaction });
93
- };
94
- this.reset = () => {
95
- return this.clear('baselines');
96
- };
97
- this.delete = async (oid, { transaction }) => {
98
- await this.run('baselines', (store) => store.delete(oid), {
99
- mode: 'readwrite',
100
- transaction,
101
- });
102
- };
103
- }
104
- }
105
- exports.BaselinesStore = BaselinesStore;
106
- //# sourceMappingURL=BaselinesStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaselinesStore.js","sourceRoot":"","sources":["../../../src/metadata/BaselinesStore.ts"],"names":[],"mappings":";;;AAAA,gDAO6B;AAC7B,oDAA8C;AAG9C,MAAa,cAAe,SAAQ,0BAAU;IAC7C,YAAY,EAAe,EAAE,IAA8B;QAC1D,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAGjB,sBAAiB,GAAG,KAAK,EACxB,GAAqB,EACrB,EACC,IAAI,GAAG,UAAU,EACjB,WAAW,MAC2D,EAAE,EACxE,EAAE;YACH,MAAM,SAAS,GAAuB,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,yBAAyB,CACnC,GAAG,EACH,CAAC,QAAQ,EAAE,EAAE;gBACZ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC,EACD,EAAE,IAAI,EAAE,WAAW,EAAE,CACrB,CAAC;YACF,OAAO,SAAS,CAAC;QAClB,CAAC,CAAC;QACF,8BAAyB,GAAG,KAAK,EAChC,GAAqB,EACrB,QAAqE,EACrE,EACC,IAAI,GAAG,UAAU,EACjB,WAAW,MAC2D,EAAE,EACxE,EAAE;YACH,OAAO,IAAI,CAAC,OAAO,CAClB,WAAW,EACX,CAAC,KAAK,EAAE,EAAE;gBACT,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAA,yBAAgB,EAAC,GAAG,CAAC,CAAC;gBAC3C,uCAAuC;gBACvC,6BAA6B;gBAC7B,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAA,kCAAyB,EAAC,GAAG,CAAC,CAAC;gBAC1D,OAAO;oBACN,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC7D,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;iBACnE,CAAC;gBACF,WAAW;gBACX,YAAY;gBACZ,6BAA6B;gBAC7B,8CAA8C;gBAC9C,mDAAmD;gBACnD,mEAAmE;gBACnE,MAAM;gBACN,IAAI;YACL,CAAC,EACD,QAAQ,EACR,EAAE,IAAI,EAAE,WAAW,EAAE,CACrB,CAAC;QACH,CAAC,CAAC;QAEF,gCAA2B,GAAG,KAAK,EAClC,UAAkB,EAClB,QAAqE,EACrE,EACC,IAAI,GAAG,UAAU,EACjB,WAAW,MAC2D,EAAE,EACxE,EAAE;YACH,OAAO,IAAI,CAAC,OAAO,CAClB,WAAW,EACX,CAAC,KAAK,EAAE,EAAE;gBACT,OAAO;oBACN,KAAK,CAAC,UAAU,CACf,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAClE;iBACD,CAAC;YACH,CAAC,EACD,QAAQ,EACR,EAAE,IAAI,EAAE,WAAW,EAAE,CACrB,CAAC;QACH,CAAC,CAAC;QAEF,+BAA0B,GAAG,KAAK,EACjC,OAAiB,EACjB,EAAE,IAAI,GAAG,UAAU,KAA0C,EAAE,EAC9D,EAAE;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAC/B,WAAW,EACX,CAAC,KAAK,EAAE,EAAE;gBACT,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC9B,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAA,yBAAgB,EAAC,GAAG,CAAC,CAAC;oBAC3C,uCAAuC;oBACvC,6BAA6B;oBAC7B,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAA,kCAAyB,EAAC,GAAG,CAAC,CAAC;oBAC1D,OAAO;wBACN,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;wBACf,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;wBACzD,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;qBAC/D,CAAC;oBACF,WAAW;oBACX,YAAY;oBACZ,qBAAqB;oBACrB,+DAA+D;oBAC/D,MAAM;oBACN,IAAI;gBACL,CAAC,CAAC,CAAC;YACJ,CAAC,EACD,EAAE,IAAI,EAAE,CACR,CAAC;YACF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC,CAAC;QAEF,gBAAW,GAAG,KAAK,EAClB,SAAwB,EACxB,EAAE,IAAI,GAAG,UAAU,KAA0C,EAAE,EAC9D,EAAE;YACH,OAAO,IAAI,CAAC,GAAG,CACd,WAAW,EACX,CAAC,KAAK,EAAE,EAAE;gBACT,MAAM,KAAK,GAAG,SAAS;oBACtB,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC;oBACzC,CAAC,CAAC,SAAS,CAAC;gBACb,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACvC,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC,EACD,EAAE,IAAI,EAAE,CACR,CAAC;QACH,CAAC,CAAC;QAEF,QAAG,GAAG,KAAK,EACV,GAAqB,EACrB,EACC,WAAW,EACX,IAAI,GAAG,UAAU,MACqD,EAAE,EACxE,EAAE;YACH,OAAO,IAAI,CAAC,GAAG,CAAmB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACzE,IAAI;gBACJ,WAAW;aACX,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,QAAG,GAAG,KAAK,EACV,QAA6B,EAC7B,EAAE,WAAW,KAAuC,EAAE,EACrD,EAAE;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBAC3D,IAAI,EAAE,WAAW;gBACjB,WAAW;aACX,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,WAAM,GAAG,KAAK,EACb,SAAgC,EAChC,EAAE,WAAW,KAAuC,EAAE,EACrD,EAAE;YACH,MAAM,IAAI,CAAC,MAAM,CAChB,WAAW,EACX,CAAC,KAAK,EAAE,EAAE;gBACT,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzD,CAAC,EACD,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAClC,CAAC;QACH,CAAC,CAAC;QAEF,UAAK,GAAG,GAAG,EAAE;YACZ,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,WAAM,GAAG,KAAK,EACb,GAAqB,EACrB,EAAE,WAAW,EAAoC,EAChD,EAAE;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;gBACzD,IAAI,EAAE,WAAW;gBACjB,WAAW;aACX,CAAC,CAAC;QACJ,CAAC,CAAC;IA5KF,CAAC;CA6KD;AAhLD,wCAgLC"}
@@ -1,18 +0,0 @@
1
- import { IDBService } from '../IDBService.js';
2
- export type LocalReplicaInfo = {
3
- type: 'localReplicaInfo';
4
- id: string;
5
- ackedLogicalTime: string | null;
6
- lastSyncedLogicalTime: string | null;
7
- };
8
- export declare class LocalReplicaStore extends IDBService {
9
- private _creating;
10
- private cached;
11
- get: ({ transaction, }?: {
12
- transaction?: IDBTransaction | undefined;
13
- }) => Promise<LocalReplicaInfo>;
14
- update: (data: Partial<LocalReplicaInfo>, { transaction }?: {
15
- transaction?: IDBTransaction | undefined;
16
- }) => Promise<void>;
17
- reset: () => Promise<void>;
18
- }
@@ -1,62 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LocalReplicaStore = void 0;
7
- const cuid_1 = __importDefault(require("cuid"));
8
- const IDBService_js_1 = require("../IDBService.js");
9
- class LocalReplicaStore extends IDBService_js_1.IDBService {
10
- constructor() {
11
- super(...arguments);
12
- this.get = async ({ transaction, } = {}) => {
13
- if (this.cached) {
14
- return this.cached;
15
- }
16
- const lookup = await this.run('info', (store) => store.get('localReplicaInfo'), { transaction });
17
- // not cached, not in db, create it
18
- if (!lookup) {
19
- // prevent a race condition if get() is called again while we are
20
- // creating the replica info
21
- if (!this._creating) {
22
- this._creating = (async () => {
23
- // create our own replica info now
24
- const replicaId = (0, cuid_1.default)();
25
- const replicaInfo = {
26
- type: 'localReplicaInfo',
27
- id: replicaId,
28
- ackedLogicalTime: null,
29
- lastSyncedLogicalTime: null,
30
- };
31
- await this.run('info', (store) => store.put(replicaInfo), {
32
- mode: 'readwrite',
33
- });
34
- this.cached = replicaInfo;
35
- })();
36
- }
37
- await this._creating;
38
- return this.get({ transaction });
39
- }
40
- this.cached = lookup;
41
- return lookup;
42
- };
43
- this.update = async (data, { transaction } = {}) => {
44
- const localReplicaInfo = await this.get({ transaction });
45
- Object.assign(localReplicaInfo, data);
46
- await this.run('info', (store) => store.put(localReplicaInfo), {
47
- mode: 'readwrite',
48
- });
49
- this.cached = localReplicaInfo;
50
- };
51
- this.reset = async () => {
52
- const localInfo = await this.get();
53
- localInfo.ackedLogicalTime = null;
54
- localInfo.lastSyncedLogicalTime = null;
55
- await this.run('info', (store) => store.put(localInfo), {
56
- mode: 'readwrite',
57
- });
58
- };
59
- }
60
- }
61
- exports.LocalReplicaStore = LocalReplicaStore;
62
- //# sourceMappingURL=LocalReplicaStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LocalReplicaStore.js","sourceRoot":"","sources":["../../../src/metadata/LocalReplicaStore.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,oDAA8C;AAS9C,MAAa,iBAAkB,SAAQ,0BAAU;IAAjD;;QAIC,QAAG,GAAG,KAAK,EAAE,EACZ,WAAW,MAC0B,EAAE,EAA6B,EAAE;YACtE,IAAI,IAAI,CAAC,MAAM,EAAE;gBAChB,OAAO,IAAI,CAAC,MAAM,CAAC;aACnB;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAC5B,MAAM,EACN,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EACxC,EAAE,WAAW,EAAE,CACf,CAAC;YAEF,mCAAmC;YACnC,IAAI,CAAC,MAAM,EAAE;gBACZ,iEAAiE;gBACjE,4BAA4B;gBAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBACpB,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,EAAE;wBAC5B,kCAAkC;wBAClC,MAAM,SAAS,GAAG,IAAA,cAAI,GAAE,CAAC;wBACzB,MAAM,WAAW,GAAqB;4BACrC,IAAI,EAAE,kBAAkB;4BACxB,EAAE,EAAE,SAAS;4BACb,gBAAgB,EAAE,IAAI;4BACtB,qBAAqB,EAAE,IAAI;yBAC3B,CAAC;wBACF,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;4BACzD,IAAI,EAAE,WAAW;yBACjB,CAAC,CAAC;wBACH,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;oBAC3B,CAAC,CAAC,EAAE,CAAC;iBACL;gBACD,MAAM,IAAI,CAAC,SAAS,CAAC;gBAErB,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;aACjC;YAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,OAAO,MAAM,CAAC;QACf,CAAC,CAAC;QAEF,WAAM,GAAG,KAAK,EACb,IAA+B,EAC/B,EAAE,WAAW,KAAuC,EAAE,EACrD,EAAE;YACH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;gBAC9D,IAAI,EAAE,WAAW;aACjB,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC;QAChC,CAAC,CAAC;QAEF,UAAK,GAAG,KAAK,IAAI,EAAE;YAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YACnC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAClC,SAAS,CAAC,qBAAqB,GAAG,IAAI,CAAC;YACvC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBACvD,IAAI,EAAE,WAAW;aACjB,CAAC,CAAC;QACJ,CAAC,CAAC;IACH,CAAC;CAAA;AAlED,8CAkEC"}
@@ -1,19 +0,0 @@
1
- import { AckMessage, HeartbeatMessage, OperationMessage, PresenceUpdateMessage, SyncMessage } from '@verdant-web/common';
2
- import { Metadata } from './Metadata.js';
3
- export declare class MessageCreator {
4
- private meta;
5
- constructor(meta: Metadata);
6
- createOperation: (init: Pick<OperationMessage, 'operations'> & {
7
- timestamp?: string;
8
- }) => Promise<OperationMessage>;
9
- createMigrationOperation: ({ targetVersion, ...init }: Pick<OperationMessage, "operations"> & {
10
- targetVersion: number;
11
- }) => Promise<OperationMessage>;
12
- /**
13
- * @param since - override local understanding of last sync time
14
- */
15
- createSyncStep1: (since?: string | null) => Promise<SyncMessage>;
16
- createPresenceUpdate: (presence: any) => Promise<PresenceUpdateMessage>;
17
- createHeartbeat: () => Promise<HeartbeatMessage>;
18
- createAck: (nonce: string) => Promise<AckMessage>;
19
- }
@@ -1,128 +0,0 @@
1
- "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.MessageCreator = void 0;
15
- const common_1 = require("@verdant-web/common");
16
- class MessageCreator {
17
- constructor(meta) {
18
- this.meta = meta;
19
- this.createOperation = async (init) => {
20
- const localInfo = await this.meta.localReplica.get();
21
- return {
22
- type: 'op',
23
- timestamp: this.meta.now,
24
- replicaId: localInfo.id,
25
- operations: init.operations.map((op) => ({
26
- data: op.data,
27
- oid: op.oid,
28
- timestamp: op.timestamp,
29
- })),
30
- };
31
- };
32
- this.createMigrationOperation = async (_a) => {
33
- var { targetVersion } = _a, init = __rest(_a, ["targetVersion"]);
34
- const localInfo = await this.meta.localReplica.get();
35
- return {
36
- type: 'op',
37
- operations: init.operations.map((op) => (Object.assign(Object.assign({}, op), { timestamp: this.meta.time.zero(targetVersion) }))),
38
- timestamp: this.meta.time.zero(targetVersion),
39
- replicaId: localInfo.id,
40
- };
41
- };
42
- /**
43
- * @param since - override local understanding of last sync time
44
- */
45
- this.createSyncStep1 = async (since) => {
46
- const localReplicaInfo = await this.meta.localReplica.get();
47
- const provideChangesSince = since === null ? null : localReplicaInfo.lastSyncedLogicalTime;
48
- // collect all of our operations that are newer than the server's last operation
49
- // if server replica isn't stored, we're syncing for the first time.
50
- const operations = [];
51
- const affectedDocs = new Set();
52
- // FIXME: this branch gives bad vibes. should we always
53
- // send all operations from other replicas too? is there
54
- // ever a case where we have a "since" timestamp and there
55
- // are foreign ops that match it?
56
- if (provideChangesSince) {
57
- await this.meta.operations.iterateOverAllLocalOperations((patch) => {
58
- operations.push({
59
- data: patch.data,
60
- oid: patch.oid,
61
- timestamp: patch.timestamp,
62
- });
63
- affectedDocs.add((0, common_1.getOidRoot)(patch.oid));
64
- }, {
65
- after: provideChangesSince,
66
- // block on writes to prevent race conditions
67
- mode: 'readwrite',
68
- });
69
- }
70
- else {
71
- // if providing the whole history, don't limit to only local
72
- // operations
73
- await this.meta.operations.iterateOverAllOperations((patch) => {
74
- operations.push({
75
- data: patch.data,
76
- oid: patch.oid,
77
- timestamp: patch.timestamp,
78
- });
79
- affectedDocs.add((0, common_1.getOidRoot)(patch.oid));
80
- }, {
81
- mode: 'readwrite',
82
- });
83
- }
84
- // we only need to send baselines if we've never synced before
85
- let baselines = [];
86
- if (!provideChangesSince) {
87
- baselines = await this.meta.baselines.getAllSince('');
88
- }
89
- return {
90
- type: 'sync',
91
- schemaVersion: this.meta.schema.currentVersion,
92
- timestamp: this.meta.now,
93
- replicaId: localReplicaInfo.id,
94
- resyncAll: !localReplicaInfo.lastSyncedLogicalTime,
95
- operations,
96
- baselines,
97
- since: provideChangesSince,
98
- };
99
- };
100
- this.createPresenceUpdate = async (presence) => {
101
- const localReplicaInfo = await this.meta.localReplica.get();
102
- return {
103
- type: 'presence-update',
104
- presence,
105
- replicaId: localReplicaInfo.id,
106
- };
107
- };
108
- this.createHeartbeat = async () => {
109
- const localReplicaInfo = await this.meta.localReplica.get();
110
- return {
111
- type: 'heartbeat',
112
- timestamp: this.meta.now,
113
- replicaId: localReplicaInfo.id,
114
- };
115
- };
116
- this.createAck = async (nonce) => {
117
- const localReplicaInfo = await this.meta.localReplica.get();
118
- return {
119
- type: 'ack',
120
- timestamp: this.meta.now,
121
- replicaId: localReplicaInfo.id,
122
- nonce,
123
- };
124
- };
125
- }
126
- }
127
- exports.MessageCreator = MessageCreator;
128
- //# sourceMappingURL=MessageCreator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MessageCreator.js","sourceRoot":"","sources":["../../../src/metadata/MessageCreator.ts"],"names":[],"mappings":"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"}
@@ -1,135 +0,0 @@
1
- import { ClientMessage, DocumentBaseline, EventSubscriber, FileRef, HybridLogicalClockTimestampProvider, ObjectIdentifier, Operation, PatchCreator, StorageSchema } from '@verdant-web/common';
2
- import { AckInfoStore } from './AckInfoStore.js';
3
- import { BaselinesStore } from './BaselinesStore.js';
4
- import { LocalReplicaInfo, LocalReplicaStore } from './LocalReplicaStore.js';
5
- import { MessageCreator } from './MessageCreator.js';
6
- import { OperationsStore } from './OperationsStore.js';
7
- import { SchemaStore } from './SchemaStore.js';
8
- import { Context } from '../context.js';
9
- export interface ExportData {
10
- operations: Operation[];
11
- baselines: DocumentBaseline[];
12
- localReplica: LocalReplicaInfo;
13
- schema: StorageSchema;
14
- }
15
- export declare class Metadata extends EventSubscriber<{
16
- message: (message: ClientMessage) => void;
17
- rebase: (baselines: DocumentBaseline[]) => void;
18
- filesDeleted: (files: FileRef[]) => void;
19
- }> {
20
- readonly operations: OperationsStore;
21
- readonly baselines: BaselinesStore;
22
- readonly localReplica: LocalReplicaStore;
23
- readonly ackInfo: AckInfoStore;
24
- readonly messageCreator: MessageCreator;
25
- readonly patchCreator: PatchCreator;
26
- readonly schema: SchemaStore;
27
- readonly time: HybridLogicalClockTimestampProvider;
28
- private readonly disableRebasing;
29
- /**
30
- * indicates the client is shutting down and we should stop
31
- * accessing the database.
32
- */
33
- private _closing;
34
- private context;
35
- constructor({ disableRebasing, context, }: {
36
- disableRebasing?: boolean;
37
- context: Omit<Context, 'documentDb' | 'getNow'>;
38
- });
39
- private get db();
40
- private get log();
41
- setContext: (context: Context) => void;
42
- get now(): string;
43
- close: () => void;
44
- /**
45
- * Methods for accessing data
46
- */
47
- createTransaction: (stores: ('operations' | 'baselines')[], opts?: {
48
- abort?: AbortSignal;
49
- write?: boolean;
50
- }) => IDBTransaction;
51
- /**
52
- * Gets the OID and every sub-object OID for a given document.
53
- * Includes any sub-objects that are not referenced by the root object
54
- * but still happen to be in storage.
55
- */
56
- getAllDocumentRelatedOids: (oid: ObjectIdentifier) => Promise<string[]>;
57
- getAllCollectionRelatedOids: (oid: ObjectIdentifier) => Promise<string[]>;
58
- getDocumentSnapshot: (oid: ObjectIdentifier, options?: {
59
- to?: string;
60
- }) => Promise<any>;
61
- getDocumentData: (oid: ObjectIdentifier, opts?: {
62
- abort?: AbortSignal;
63
- }) => Promise<{
64
- baselines: DocumentBaseline<any>[];
65
- operations: Record<string, Operation[]>;
66
- }>;
67
- /**
68
- * Methods for writing data
69
- */
70
- /**
71
- * Acks that we have seen a timestamp to the server
72
- * and stores it as our local ackedLogicalTime if it's
73
- * greater than our current ackedLogicalTime.
74
- */
75
- ack: (timestamp: string) => Promise<void>;
76
- /**
77
- * Applies a patch to the document and stores it in the database.
78
- * @returns the oldest local history timestamp
79
- */
80
- insertLocalOperations: (operations: Operation[], opts?: {
81
- transaction?: IDBTransaction;
82
- }) => Promise<void>;
83
- /**
84
- * Inserts remote operations. This does not affect local history.
85
- * @returns a list of affected document OIDs
86
- */
87
- insertRemoteOperations: (operations: Operation[], opts?: {
88
- transaction?: IDBTransaction;
89
- }) => Promise<string[]>;
90
- insertRemoteBaselines: (baselines: DocumentBaseline[], opts?: {
91
- transaction?: IDBTransaction;
92
- }) => Promise<string[]>;
93
- insertData: (data: {
94
- baselines?: DocumentBaseline[];
95
- operations?: Operation[];
96
- isLocal?: boolean;
97
- }, opts?: {
98
- abort: AbortSignal;
99
- }) => Promise<void>;
100
- updateLastSynced: (timestamp: string) => Promise<void>;
101
- lastSyncedTimestamp: () => Promise<string | null>;
102
- private tryAutonomousRebase;
103
- /**
104
- * Attempt to autonomously rebase local documents without server intervention.
105
- * This can currently only happen for a client who has never synced before.
106
- * The goal is to allow local-only clients to compress their history to exactly
107
- * their undo stack.
108
- */
109
- private runRebase;
110
- rebase: (oid: ObjectIdentifier, upTo: string, providedTx?: IDBTransaction) => Promise<{
111
- oid: string;
112
- snapshot: any;
113
- timestamp: string;
114
- }>;
115
- reset: () => Promise<void>;
116
- updateSchema: (schema: StorageSchema, overrideConflict?: number) => Promise<void>;
117
- setGlobalAck: (timestamp: string) => Promise<void>;
118
- export: () => Promise<ExportData>;
119
- /**
120
- * Resets local metadata and clears operation/baseline stores.
121
- * DOES NOT add operations/baselines - this should be done
122
- * through the normal higher level systems.
123
- */
124
- resetFrom: (data: ExportData) => Promise<void>;
125
- stats: () => Promise<{
126
- operationsSize: {
127
- count: number;
128
- size: number;
129
- };
130
- baselinesSize: {
131
- count: number;
132
- size: number;
133
- };
134
- }>;
135
- }