mindoodb 0.0.73 → 0.0.75

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 (74) hide show
  1. package/dist/browser/index.mjs +9 -0
  2. package/dist/core/BackgroundTaskTracker.d.ts +18 -0
  3. package/dist/core/BackgroundTaskTracker.d.ts.map +1 -0
  4. package/dist/core/BackgroundTaskTracker.js +37 -0
  5. package/dist/core/BackgroundTaskTracker.js.map +1 -0
  6. package/dist/core/BaseMindooDB.d.ts +43 -7
  7. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  8. package/dist/core/BaseMindooDB.js +271 -79
  9. package/dist/core/BaseMindooDB.js.map +1 -1
  10. package/dist/core/BaseMindooTenant.d.ts +30 -12
  11. package/dist/core/BaseMindooTenant.d.ts.map +1 -1
  12. package/dist/core/BaseMindooTenant.js +90 -65
  13. package/dist/core/BaseMindooTenant.js.map +1 -1
  14. package/dist/core/BaseMindooTenantDirectory.d.ts +57 -14
  15. package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
  16. package/dist/core/BaseMindooTenantDirectory.js +319 -164
  17. package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
  18. package/dist/core/appendonlystores/migration/StoreMigration.d.ts +34 -0
  19. package/dist/core/appendonlystores/migration/StoreMigration.d.ts.map +1 -0
  20. package/dist/core/appendonlystores/migration/StoreMigration.js +70 -0
  21. package/dist/core/appendonlystores/migration/StoreMigration.js.map +1 -0
  22. package/dist/core/appendonlystores/rpc/RpcContentAddressedStore.d.ts +97 -0
  23. package/dist/core/appendonlystores/rpc/RpcContentAddressedStore.d.ts.map +1 -0
  24. package/dist/core/appendonlystores/rpc/RpcContentAddressedStore.js +128 -0
  25. package/dist/core/appendonlystores/rpc/RpcContentAddressedStore.js.map +1 -0
  26. package/dist/core/appendonlystores/rpc/StoreRpcServer.d.ts +24 -0
  27. package/dist/core/appendonlystores/rpc/StoreRpcServer.d.ts.map +1 -0
  28. package/dist/core/appendonlystores/rpc/StoreRpcServer.js +102 -0
  29. package/dist/core/appendonlystores/rpc/StoreRpcServer.js.map +1 -0
  30. package/dist/core/appendonlystores/rpc/storeRpcCodec.d.ts +15 -0
  31. package/dist/core/appendonlystores/rpc/storeRpcCodec.d.ts.map +1 -0
  32. package/dist/core/appendonlystores/rpc/storeRpcCodec.js +100 -0
  33. package/dist/core/appendonlystores/rpc/storeRpcCodec.js.map +1 -0
  34. package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.d.ts +3 -0
  35. package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.d.ts.map +1 -1
  36. package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.js +18 -11
  37. package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.js.map +1 -1
  38. package/dist/core/appendonlystores/sqlite/SqliteDriver.d.ts +13 -0
  39. package/dist/core/appendonlystores/sqlite/SqliteDriver.d.ts.map +1 -1
  40. package/dist/core/appendonlystores/sqlite/SqliteDriver.js +74 -0
  41. package/dist/core/appendonlystores/sqlite/SqliteDriver.js.map +1 -1
  42. package/dist/core/cache/CacheManager.d.ts +4 -1
  43. package/dist/core/cache/CacheManager.d.ts.map +1 -1
  44. package/dist/core/cache/CacheManager.js +47 -19
  45. package/dist/core/cache/CacheManager.js.map +1 -1
  46. package/dist/core/index.d.ts +3 -0
  47. package/dist/core/index.d.ts.map +1 -1
  48. package/dist/core/index.js +13 -2
  49. package/dist/core/index.js.map +1 -1
  50. package/dist/core/indexing/fulltext/DocumentFullTextIndex.d.ts +16 -1
  51. package/dist/core/indexing/fulltext/DocumentFullTextIndex.d.ts.map +1 -1
  52. package/dist/core/indexing/fulltext/DocumentFullTextIndex.js +86 -14
  53. package/dist/core/indexing/fulltext/DocumentFullTextIndex.js.map +1 -1
  54. package/dist/core/indexing/summary/DocumentSummaryStore.d.ts +2 -0
  55. package/dist/core/indexing/summary/DocumentSummaryStore.d.ts.map +1 -1
  56. package/dist/core/indexing/summary/DocumentSummaryStore.js +19 -5
  57. package/dist/core/indexing/summary/DocumentSummaryStore.js.map +1 -1
  58. package/dist/core/types.d.ts +29 -0
  59. package/dist/core/types.d.ts.map +1 -1
  60. package/dist/core/types.js +22 -0
  61. package/dist/core/types.js.map +1 -1
  62. package/dist/core/utils/singleFlight.d.ts +21 -0
  63. package/dist/core/utils/singleFlight.d.ts.map +1 -0
  64. package/dist/core/utils/singleFlight.js +47 -0
  65. package/dist/core/utils/singleFlight.js.map +1 -0
  66. package/dist/core/utils/timeSource.d.ts +3 -1
  67. package/dist/core/utils/timeSource.d.ts.map +1 -1
  68. package/dist/core/utils/timeSource.js +4 -0
  69. package/dist/core/utils/timeSource.js.map +1 -1
  70. package/dist/sqlite/index.d.ts +2 -0
  71. package/dist/sqlite/index.d.ts.map +1 -1
  72. package/dist/sqlite/index.js +8 -1
  73. package/dist/sqlite/index.js.map +1 -1
  74. package/package.json +1 -1
@@ -50,11 +50,12 @@ export declare class BaseMindooTenant implements MindooTenant {
50
50
  */
51
51
  private unsubscribeKeyBagChanges;
52
52
  /**
53
- * Single-flight latch for {@link reconcileKeyBagChanges}. Concurrent calls
54
- * coalesce onto the same in-flight reconcile so live listener firings and
55
- * explicit calls cannot race against each other or duplicate work.
53
+ * Single-flight for {@link reconcileKeyBagChanges}. Concurrent calls
54
+ * coalesce so live listener firings and explicit calls cannot race; a call
55
+ * arriving mid-run gets one follow-up run, so a KeyBag change made while
56
+ * databases were being reconciled is not left unconsumed.
56
57
  */
57
- private keyBagReconcilePromise;
58
+ private readonly keyBagReconcile;
58
59
  private decryptedTenantKeyCache?;
59
60
  private decryptedUserSigningKeyCache?;
60
61
  private decryptedUserEncryptionKeyCache?;
@@ -74,8 +75,10 @@ export declare class BaseMindooTenant implements MindooTenant {
74
75
  private readonly importedVerifyKeyCache;
75
76
  private static readonly MAX_IMPORTED_KEY_CACHE_ENTRIES;
76
77
  private logger;
77
- private reconcileInFlight;
78
+ private readonly keyDistributionReconcile;
78
79
  private userKeyReconcileScheduled;
80
+ /** Fire-and-forget work of this tenant; see {@link whenBackgroundIdle}. */
81
+ private readonly backgroundTasks;
79
82
  private readonly userKeys;
80
83
  private readonly sealedGenerations;
81
84
  private cacheManager;
@@ -134,6 +137,19 @@ export declare class BaseMindooTenant implements MindooTenant {
134
137
  * unbounded-allocates.
135
138
  */
136
139
  scheduleUserKeyReconcile(): void;
140
+ /**
141
+ * Register fire-and-forget work so {@link whenBackgroundIdle} and shutdown
142
+ * wait for it. The task must handle its own errors.
143
+ */
144
+ trackBackgroundTask(task: Promise<unknown>): void;
145
+ /**
146
+ * Resolve once neither this tenant nor any of its open databases has
147
+ * background work left (trust/key reconciles, auto-follow catch-ups,
148
+ * pending change events), including work that finishing tasks start.
149
+ *
150
+ * @internal Shutdown and test hook.
151
+ */
152
+ whenBackgroundIdle(): Promise<void>;
137
153
  noteUserDirectoryFetched(): void;
138
154
  noteUserDirectoryFetchFailed(error: unknown): void;
139
155
  listPendingUserKeyDevices(): Promise<PendingUserKeyDevice[]>;
@@ -325,12 +341,14 @@ export declare class BaseMindooTenant implements MindooTenant {
325
341
  * Designed as the single barrier callers can `await` to be certain that
326
342
  * subsequent reads observe the latest add/remove of doc keys. Behaviour:
327
343
  *
328
- * - Idempotent and concurrency-safe. Concurrent callers share the same
329
- * in-flight reconcile via {@link keyBagReconcilePromise}, and a second
330
- * call after the cursor catches up is a fast no-op.
344
+ * - Idempotent and concurrency-safe. Concurrent callers share one run;
345
+ * a call arriving mid-run gets one follow-up run (see
346
+ * {@link keyBagReconcile}), and a call after the cursor catches up is a
347
+ * fast no-op.
331
348
  * - Cursor-based. Replays from the persisted cursor in
332
349
  * {@link keyBagChangeCursor}, so missed live notifications are
333
- * automatically recovered.
350
+ * automatically recovered. The cursor advances only after every open
351
+ * database was reconciled, so a failed run is retried by the next call.
334
352
  * - Tenant-scoped. Events for other tenants in a shared KeyBag are
335
353
  * consumed (the cursor still advances) but ignored.
336
354
  * - Invalidates the cached tenant default key when its add/remove was
@@ -339,6 +357,7 @@ export declare class BaseMindooTenant implements MindooTenant {
339
357
  * cuts and never participate in visibility reconciliation.
340
358
  */
341
359
  reconcileKeyBagChanges(): Promise<void>;
360
+ private runKeyBagReconcile;
342
361
  /**
343
362
  * Author-trust reconcile across all open live databases: when the tenant
344
363
  * directory learns about new trusted signing keys (grantaccess documents
@@ -518,9 +537,8 @@ export declare class BaseMindooTenant implements MindooTenant {
518
537
  * Single-flight, best-effort wrapper around
519
538
  * {@link reconcileKeyDistributionsForCurrentUser} for the run-always trigger
520
539
  * (docs/accesscontrol.md §13). Fired on directory bring-up and after every
521
- * directory pull. Never throws and never blocks sync: a reconcile error is
522
- * logged and swallowed. The in-flight guard prevents the driver's own
523
- * directory access from re-triggering it.
540
+ * directory pull. Never throws: a reconcile error is logged and swallowed.
541
+ * Resolves after a run that started after this call.
524
542
  */
525
543
  reconcileKeyDistributionsForCurrentUserSafe(): Promise<void>;
526
544
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"BaseMindooTenant.d.ts","sourceRoot":"","sources":["../../src/core/BaseMindooTenant.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseMindooTenant.d.ts","sourceRoot":"","sources":["../../src/core/BaseMindooTenant.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,8 @@ const joinRequestUri_1 = require("./uri/joinRequestUri");
30
30
  const EncryptedLocalCacheStore_1 = require("./cache/EncryptedLocalCacheStore");
31
31
  const CacheManager_1 = require("./cache/CacheManager");
32
32
  const databaseIdValidation_1 = require("./databaseIdValidation");
33
+ const BackgroundTaskTracker_1 = require("./BackgroundTaskTracker");
34
+ const singleFlight_1 = require("./utils/singleFlight");
33
35
  /**
34
36
  * BaseMindooTenant is a platform-agnostic implementation of MindooTenant
35
37
  * that works in both browser and server environments.
@@ -73,11 +75,12 @@ class BaseMindooTenant {
73
75
  */
74
76
  this.unsubscribeKeyBagChanges = null;
75
77
  /**
76
- * Single-flight latch for {@link reconcileKeyBagChanges}. Concurrent calls
77
- * coalesce onto the same in-flight reconcile so live listener firings and
78
- * explicit calls cannot race against each other or duplicate work.
78
+ * Single-flight for {@link reconcileKeyBagChanges}. Concurrent calls
79
+ * coalesce so live listener firings and explicit calls cannot race; a call
80
+ * arriving mid-run gets one follow-up run, so a KeyBag change made while
81
+ * databases were being reconciled is not left unconsumed.
79
82
  */
80
- this.keyBagReconcilePromise = null;
83
+ this.keyBagReconcile = new singleFlight_1.SingleFlight(() => this.runKeyBagReconcile());
81
84
  /**
82
85
  * Cache of imported AES-GCM `CryptoKey`s, keyed by usage + raw key bytes
83
86
  * (hex). `subtle.importKey` costs a WebCrypto round trip per call, which
@@ -92,14 +95,23 @@ class BaseMindooTenant {
92
95
  * documents, so the per-call SPKI import is on the hot read path.
93
96
  */
94
97
  this.importedVerifyKeyCache = new Map();
95
- // Single-flight guard for SDK-driven key-distribution reconcile (§13). The
96
- // reconcile driver itself calls getDirectoryDB / updateUnifiedCache /
97
- // syncStoreChanges, any of which can re-enter a trigger; this flag keeps the
98
- // run-always trigger (directory bring-up + after each directory pull) from
99
- // recursing or overlapping. Reconcile is idempotent, so a skipped overlap is
100
- // harmless — the next trigger re-runs it.
101
- this.reconcileInFlight = false;
98
+ // Single-flight for the SDK-driven key-distribution reconcile (§13), fired on
99
+ // directory bring-up and after each directory pull. A trigger arriving
100
+ // mid-run (e.g. a pull that brought a new distribution) gets one follow-up
101
+ // run instead of being dropped. The driver's own re-trigger (directory
102
+ // bring-up inside getDirectoryDB) is fire-and-forget, never awaited inside
103
+ // the run, so it queues a follow-up rather than waiting for itself.
104
+ this.keyDistributionReconcile = new singleFlight_1.SingleFlight(async () => {
105
+ try {
106
+ await this.reconcileKeyDistributionsForCurrentUser();
107
+ }
108
+ catch (error) {
109
+ this.logger.warn(`reconcileKeyDistributionsForCurrentUserSafe: ${error}`);
110
+ }
111
+ });
102
112
  this.userKeyReconcileScheduled = false;
113
+ /** Fire-and-forget work of this tenant; see {@link whenBackgroundIdle}. */
114
+ this.backgroundTasks = new BackgroundTaskTracker_1.BackgroundTaskTracker();
103
115
  this.userKeys = new UserKeyManager_1.UserKeyManager(this);
104
116
  this.sealedGenerations = new Map();
105
117
  // Local cache support
@@ -136,7 +148,9 @@ class BaseMindooTenant {
136
148
  // Fire-and-forget: errors are surfaced via the reconcile path itself.
137
149
  // We intentionally do not await here to keep the mutation call site
138
150
  // synchronous from the listener's perspective.
139
- void this.reconcileKeyBagChanges();
151
+ this.trackBackgroundTask(this.reconcileKeyBagChanges().catch((error) => {
152
+ this.logger.warn(`reconcileKeyBagChanges: ${error}`);
153
+ }));
140
154
  });
141
155
  // Pre-warm the per-user CryptoKey caches so getDecryptedSigningKey()
142
156
  // and getDecryptedEncryptionKey() never run PBKDF2 + decryptPrivateKey
@@ -191,6 +205,9 @@ class BaseMindooTenant {
191
205
  // times - the disposer is nulled out after the first call.
192
206
  this.unsubscribeKeyBagChanges?.();
193
207
  this.unsubscribeKeyBagChanges = null;
208
+ // Background catch-ups write into the cache; let them finish before the
209
+ // final flush instead of racing the teardown.
210
+ await this.whenBackgroundIdle();
194
211
  if (this.cacheManager) {
195
212
  await this.cacheManager.dispose();
196
213
  this.cacheManager = null;
@@ -235,12 +252,40 @@ class BaseMindooTenant {
235
252
  if (this.userKeys.isReconciling() || this.userKeyReconcileScheduled)
236
253
  return;
237
254
  this.userKeyReconcileScheduled = true;
238
- queueMicrotask(() => {
255
+ this.trackBackgroundTask(Promise.resolve().then(() => {
239
256
  this.userKeyReconcileScheduled = false;
240
257
  if (this.userKeys.isReconciling())
241
258
  return;
242
- void this.reconcileUserKeysSafe();
243
- });
259
+ return this.reconcileUserKeysSafe();
260
+ }));
261
+ }
262
+ /**
263
+ * Register fire-and-forget work so {@link whenBackgroundIdle} and shutdown
264
+ * wait for it. The task must handle its own errors.
265
+ */
266
+ trackBackgroundTask(task) {
267
+ this.backgroundTasks.run(task);
268
+ }
269
+ /**
270
+ * Resolve once neither this tenant nor any of its open databases has
271
+ * background work left (trust/key reconciles, auto-follow catch-ups,
272
+ * pending change events), including work that finishing tasks start.
273
+ *
274
+ * @internal Shutdown and test hook.
275
+ */
276
+ async whenBackgroundIdle() {
277
+ for (;;) {
278
+ let waited = await this.backgroundTasks.settle();
279
+ for (const db of Array.from(this.databaseCache.values())) {
280
+ const idle = db.whenBackgroundIdle;
281
+ if (idle && (await idle.call(db))) {
282
+ waited = true;
283
+ }
284
+ }
285
+ if (!waited) {
286
+ return;
287
+ }
288
+ }
244
289
  }
245
290
  noteUserDirectoryFetched() {
246
291
  this.userKeys.noteUserDirectoryFetched();
@@ -1181,12 +1226,14 @@ class BaseMindooTenant {
1181
1226
  * Designed as the single barrier callers can `await` to be certain that
1182
1227
  * subsequent reads observe the latest add/remove of doc keys. Behaviour:
1183
1228
  *
1184
- * - Idempotent and concurrency-safe. Concurrent callers share the same
1185
- * in-flight reconcile via {@link keyBagReconcilePromise}, and a second
1186
- * call after the cursor catches up is a fast no-op.
1229
+ * - Idempotent and concurrency-safe. Concurrent callers share one run;
1230
+ * a call arriving mid-run gets one follow-up run (see
1231
+ * {@link keyBagReconcile}), and a call after the cursor catches up is a
1232
+ * fast no-op.
1187
1233
  * - Cursor-based. Replays from the persisted cursor in
1188
1234
  * {@link keyBagChangeCursor}, so missed live notifications are
1189
- * automatically recovered.
1235
+ * automatically recovered. The cursor advances only after every open
1236
+ * database was reconciled, so a failed run is retried by the next call.
1190
1237
  * - Tenant-scoped. Events for other tenants in a shared KeyBag are
1191
1238
  * consumed (the cursor still advances) but ignored.
1192
1239
  * - Invalidates the cached tenant default key when its add/remove was
@@ -1195,34 +1242,30 @@ class BaseMindooTenant {
1195
1242
  * cuts and never participate in visibility reconciliation.
1196
1243
  */
1197
1244
  async reconcileKeyBagChanges() {
1198
- if (this.keyBagReconcilePromise) {
1199
- return this.keyBagReconcilePromise;
1200
- }
1201
- this.keyBagReconcilePromise = (async () => {
1202
- let sawTenantDocKeyChange = false;
1203
- let latestCursor = this.keyBagChangeCursor;
1204
- // Consume every pending event so the cursor advances even for
1205
- // unrelated tenants sharing the same bag. We only need to react to
1206
- // doc keys for our own tenant though.
1207
- for await (const event of this.keyBag.iterateChangesSince(this.keyBagChangeCursor)) {
1208
- latestCursor = { changeSeq: event.changeSeq };
1209
- if (event.type !== "doc" || event.tenantId !== this.tenantId) {
1210
- continue;
1211
- }
1212
- sawTenantDocKeyChange = true;
1213
- if (event.keyId === types_1.DEFAULT_TENANT_KEY_ID) {
1214
- // The cached plaintext default key may now refer to a rotated
1215
- // or removed version; drop it so the next access re-resolves.
1216
- this.decryptedTenantKeyCache = undefined;
1217
- }
1245
+ return this.keyBagReconcile.run();
1246
+ }
1247
+ async runKeyBagReconcile() {
1248
+ let sawTenantDocKeyChange = false;
1249
+ let latestCursor = this.keyBagChangeCursor;
1250
+ // Consume every pending event so the cursor advances even for
1251
+ // unrelated tenants sharing the same bag. We only need to react to
1252
+ // doc keys for our own tenant though.
1253
+ for await (const event of this.keyBag.iterateChangesSince(this.keyBagChangeCursor)) {
1254
+ latestCursor = { changeSeq: event.changeSeq };
1255
+ if (event.type !== "doc" || event.tenantId !== this.tenantId) {
1256
+ continue;
1218
1257
  }
1219
- this.keyBagChangeCursor = latestCursor;
1220
- if (!sawTenantDocKeyChange) {
1221
- return;
1258
+ sawTenantDocKeyChange = true;
1259
+ if (event.keyId === types_1.DEFAULT_TENANT_KEY_ID) {
1260
+ // The cached plaintext default key may now refer to a rotated
1261
+ // or removed version; drop it so the next access re-resolves.
1262
+ this.decryptedTenantKeyCache = undefined;
1222
1263
  }
1264
+ }
1265
+ if (sawTenantDocKeyChange) {
1223
1266
  // Notify every open live database; time-travel views are read-only
1224
1267
  // historical snapshots and intentionally skip reconciliation.
1225
- for (const db of this.databaseCache.values()) {
1268
+ for (const db of Array.from(this.databaseCache.values())) {
1226
1269
  if (db.isTimeTravelMode()) {
1227
1270
  continue;
1228
1271
  }
@@ -1231,13 +1274,8 @@ class BaseMindooTenant {
1231
1274
  await reconcile.call(db);
1232
1275
  }
1233
1276
  }
1234
- })();
1235
- try {
1236
- await this.keyBagReconcilePromise;
1237
- }
1238
- finally {
1239
- this.keyBagReconcilePromise = null;
1240
1277
  }
1278
+ this.keyBagChangeCursor = latestCursor;
1241
1279
  }
1242
1280
  /**
1243
1281
  * Author-trust reconcile across all open live databases: when the tenant
@@ -2067,24 +2105,11 @@ class BaseMindooTenant {
2067
2105
  * Single-flight, best-effort wrapper around
2068
2106
  * {@link reconcileKeyDistributionsForCurrentUser} for the run-always trigger
2069
2107
  * (docs/accesscontrol.md §13). Fired on directory bring-up and after every
2070
- * directory pull. Never throws and never blocks sync: a reconcile error is
2071
- * logged and swallowed. The in-flight guard prevents the driver's own
2072
- * directory access from re-triggering it.
2108
+ * directory pull. Never throws: a reconcile error is logged and swallowed.
2109
+ * Resolves after a run that started after this call.
2073
2110
  */
2074
2111
  async reconcileKeyDistributionsForCurrentUserSafe() {
2075
- if (this.reconcileInFlight) {
2076
- return;
2077
- }
2078
- this.reconcileInFlight = true;
2079
- try {
2080
- await this.reconcileKeyDistributionsForCurrentUser();
2081
- }
2082
- catch (error) {
2083
- this.logger.warn(`reconcileKeyDistributionsForCurrentUserSafe: ${error}`);
2084
- }
2085
- finally {
2086
- this.reconcileInFlight = false;
2087
- }
2112
+ await this.keyDistributionReconcile.run();
2088
2113
  }
2089
2114
  /**
2090
2115
  * Export **all** stored versions of a document key for an admin-blind key