mindoodb 0.0.11 → 0.0.12
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.
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts +34 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts.map +1 -1
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js +194 -9
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js.map +1 -1
- package/dist/browser/cache/IndexedDBLocalCacheStore.d.ts +22 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.d.ts.map +1 -1
- package/dist/browser/cache/IndexedDBLocalCacheStore.js +185 -24
- package/dist/browser/cache/IndexedDBLocalCacheStore.js.map +1 -1
- package/dist/browser/index.d.ts +2 -2
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +3 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/index.mjs +2 -0
- package/package.json +2 -1
|
@@ -19,6 +19,11 @@ import { StoreKind } from "../../core/appendonlystores/types";
|
|
|
19
19
|
import type { AttachmentReadPlan, AttachmentReadPlanOptions, ContentAddressedStore, DocumentMaterializationBatchPlan, DocumentMaterializationPlan, MaterializationPlanOptions, StoreIndexBuildStatus, AwaitIndexReadyOptions, StoreScanCursor, StoreScanFilters, StoreScanResult, StoreIdBloomSummary, OpenStoreOptions } from "../../core/appendonlystores/types";
|
|
20
20
|
import type { StoreEntry, StoreEntryMetadata, StoreEntryType } from "../../core/types";
|
|
21
21
|
import { Logger } from "../../core/logging";
|
|
22
|
+
interface StoreByteTotals {
|
|
23
|
+
contentBytes: number;
|
|
24
|
+
metadataBytes: number;
|
|
25
|
+
totalBytes: number;
|
|
26
|
+
}
|
|
22
27
|
/**
|
|
23
28
|
* An IndexedDB-backed ContentAddressedStore.
|
|
24
29
|
*
|
|
@@ -47,6 +52,17 @@ export declare class IndexedDBContentAddressedStore implements ContentAddressedS
|
|
|
47
52
|
getId(): string;
|
|
48
53
|
getStoreKind(): StoreKind;
|
|
49
54
|
getCacheIdentity(): string;
|
|
55
|
+
/**
|
|
56
|
+
* Returns approximate payload bytes currently stored in this browser-backed
|
|
57
|
+
* content-addressed store.
|
|
58
|
+
*
|
|
59
|
+
* `contentBytes` counts the encrypted payload blobs currently retained in the
|
|
60
|
+
* deduplicated content store. `metadataBytes` counts the serialized metadata
|
|
61
|
+
* entries. When multiple entries share the same `contentHash`, only the
|
|
62
|
+
* first retained payload contributes to `contentBytes`; later references only
|
|
63
|
+
* increase `refCount`.
|
|
64
|
+
*/
|
|
65
|
+
getStoredBytes(): Promise<StoreByteTotals>;
|
|
50
66
|
putEntries(entries: StoreEntry[]): Promise<void>;
|
|
51
67
|
getEntries(ids: string[]): Promise<StoreEntry[]>;
|
|
52
68
|
getEntryMetadata(id: string): Promise<StoreEntryMetadata | null>;
|
|
@@ -67,5 +83,23 @@ export declare class IndexedDBContentAddressedStore implements ContentAddressedS
|
|
|
67
83
|
getIndexBuildStatus(): StoreIndexBuildStatus;
|
|
68
84
|
private matchesScanFilters;
|
|
69
85
|
private readEntriesForDoc;
|
|
86
|
+
/**
|
|
87
|
+
* Backfills the byte counters the first time an existing database is opened
|
|
88
|
+
* after payload accounting is introduced. The backfill persists both totals
|
|
89
|
+
* within one transaction so later writes start from a consistent baseline.
|
|
90
|
+
*/
|
|
91
|
+
private backfillStoredBytesIfNeeded;
|
|
70
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Reads content-addressed payload counters from an existing IndexedDB database
|
|
95
|
+
* without opening the higher-level store abstraction or triggering a backfill.
|
|
96
|
+
*
|
|
97
|
+
* The returned byte counts reflect encrypted content payload bytes plus
|
|
98
|
+
* serialized metadata payload bytes already persisted by the store. For older
|
|
99
|
+
* browser databases that predate the byte counters, the helper falls back to a
|
|
100
|
+
* read-only scan of the legacy stores instead of writing the missing totals.
|
|
101
|
+
* When the database does not exist, the function returns `null`.
|
|
102
|
+
*/
|
|
103
|
+
export declare function readContentAddressedStoreBytes(idbName: string): Promise<Omit<StoreByteTotals, "totalBytes"> | null>;
|
|
104
|
+
export {};
|
|
71
105
|
//# sourceMappingURL=IndexedDBContentAddressedStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedDBContentAddressedStore.d.ts","sourceRoot":"","sources":["../../../src/browser/appendonlystores/IndexedDBContentAddressedStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,SAAS,EACV,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EACV,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,EACrB,gCAAgC,EAChC,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAoC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"IndexedDBContentAddressedStore.d.ts","sourceRoot":"","sources":["../../../src/browser/appendonlystores/IndexedDBContentAddressedStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
20
|
exports.IndexedDBContentAddressedStore = void 0;
|
|
21
|
+
exports.readContentAddressedStoreBytes = readContentAddressedStoreBytes;
|
|
21
22
|
const types_1 = require("../../core/appendonlystores/types");
|
|
22
23
|
const AttachmentReadPlanner_1 = require("../../core/appendonlystores/AttachmentReadPlanner");
|
|
23
24
|
const MaterializationPlanner_1 = require("../../core/appendonlystores/MaterializationPlanner");
|
|
@@ -39,6 +40,8 @@ const IDX_CONTENT_HASH = "by_contentHash";
|
|
|
39
40
|
// Bloom cache key
|
|
40
41
|
const BLOOM_CACHE_KEY = "current";
|
|
41
42
|
const RECEIPT_ORDER_COUNTER_KEY = "receiptOrderCounter";
|
|
43
|
+
const TOTAL_CONTENT_BYTES_KEY = "total_content_bytes";
|
|
44
|
+
const TOTAL_METADATA_BYTES_KEY = "total_metadata_bytes";
|
|
42
45
|
function qualifyIndexedDbNamespace(namespace, storeKind) {
|
|
43
46
|
const separatorIndex = namespace.indexOf("-");
|
|
44
47
|
if (separatorIndex === -1) {
|
|
@@ -187,6 +190,57 @@ function txToPromise(tx) {
|
|
|
187
190
|
tx.onabort = () => reject(tx.error ?? new Error("IndexedDB transaction aborted"));
|
|
188
191
|
});
|
|
189
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Returns the serialized metadata size used for approximate payload-byte
|
|
195
|
+
* accounting. This excludes IndexedDB structural overhead such as keys,
|
|
196
|
+
* indexes, and B-tree pages.
|
|
197
|
+
*/
|
|
198
|
+
function getMetadataPayloadBytes(metadata) {
|
|
199
|
+
return JSON.stringify(metadata).length;
|
|
200
|
+
}
|
|
201
|
+
async function readNumericMetaValue(store, key) {
|
|
202
|
+
const record = (await reqToPromise(store.get(key)));
|
|
203
|
+
return typeof record?.value === "number" ? record.value : null;
|
|
204
|
+
}
|
|
205
|
+
async function writeNumericMetaValue(store, key, value) {
|
|
206
|
+
await reqToPromise(store.put({ key, value }));
|
|
207
|
+
}
|
|
208
|
+
async function computeStoredBytes(entriesStore, contentStore) {
|
|
209
|
+
let contentBytes = 0;
|
|
210
|
+
let metadataBytes = 0;
|
|
211
|
+
await new Promise((resolve, reject) => {
|
|
212
|
+
const request = contentStore.openCursor();
|
|
213
|
+
request.onsuccess = () => {
|
|
214
|
+
const cursor = request.result;
|
|
215
|
+
if (!cursor) {
|
|
216
|
+
resolve();
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
const record = cursor.value;
|
|
220
|
+
contentBytes += record.data.byteLength;
|
|
221
|
+
cursor.continue();
|
|
222
|
+
};
|
|
223
|
+
request.onerror = () => reject(request.error);
|
|
224
|
+
});
|
|
225
|
+
await new Promise((resolve, reject) => {
|
|
226
|
+
const request = entriesStore.openCursor();
|
|
227
|
+
request.onsuccess = () => {
|
|
228
|
+
const cursor = request.result;
|
|
229
|
+
if (!cursor) {
|
|
230
|
+
resolve();
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
metadataBytes += getMetadataPayloadBytes(cursor.value);
|
|
234
|
+
cursor.continue();
|
|
235
|
+
};
|
|
236
|
+
request.onerror = () => reject(request.error);
|
|
237
|
+
});
|
|
238
|
+
return {
|
|
239
|
+
contentBytes,
|
|
240
|
+
metadataBytes,
|
|
241
|
+
totalBytes: contentBytes + metadataBytes,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
190
244
|
// ---------------------------------------------------------------------------
|
|
191
245
|
// Main class
|
|
192
246
|
// ---------------------------------------------------------------------------
|
|
@@ -304,7 +358,14 @@ class IndexedDBContentAddressedStore {
|
|
|
304
358
|
this.db = null;
|
|
305
359
|
this.openPromise = null;
|
|
306
360
|
};
|
|
307
|
-
|
|
361
|
+
void this.backfillStoredBytesIfNeeded(this.db)
|
|
362
|
+
.then(() => resolve(this.db))
|
|
363
|
+
.catch((error) => {
|
|
364
|
+
this.db?.close();
|
|
365
|
+
this.db = null;
|
|
366
|
+
this.openPromise = null;
|
|
367
|
+
reject(error);
|
|
368
|
+
});
|
|
308
369
|
};
|
|
309
370
|
request.onerror = () => {
|
|
310
371
|
this.openPromise = null;
|
|
@@ -328,6 +389,28 @@ class IndexedDBContentAddressedStore {
|
|
|
328
389
|
getCacheIdentity() {
|
|
329
390
|
return `idb:${this.idbName}`;
|
|
330
391
|
}
|
|
392
|
+
/**
|
|
393
|
+
* Returns approximate payload bytes currently stored in this browser-backed
|
|
394
|
+
* content-addressed store.
|
|
395
|
+
*
|
|
396
|
+
* `contentBytes` counts the encrypted payload blobs currently retained in the
|
|
397
|
+
* deduplicated content store. `metadataBytes` counts the serialized metadata
|
|
398
|
+
* entries. When multiple entries share the same `contentHash`, only the
|
|
399
|
+
* first retained payload contributes to `contentBytes`; later references only
|
|
400
|
+
* increase `refCount`.
|
|
401
|
+
*/
|
|
402
|
+
async getStoredBytes() {
|
|
403
|
+
const db = await this.ensureOpen();
|
|
404
|
+
const tx = db.transaction(META_STORE, "readonly");
|
|
405
|
+
const metaOS = tx.objectStore(META_STORE);
|
|
406
|
+
const contentBytes = (await readNumericMetaValue(metaOS, TOTAL_CONTENT_BYTES_KEY)) ?? 0;
|
|
407
|
+
const metadataBytes = (await readNumericMetaValue(metaOS, TOTAL_METADATA_BYTES_KEY)) ?? 0;
|
|
408
|
+
return {
|
|
409
|
+
contentBytes,
|
|
410
|
+
metadataBytes,
|
|
411
|
+
totalBytes: contentBytes + metadataBytes,
|
|
412
|
+
};
|
|
413
|
+
}
|
|
331
414
|
async putEntries(entries) {
|
|
332
415
|
if (entries.length === 0)
|
|
333
416
|
return;
|
|
@@ -338,8 +421,10 @@ class IndexedDBContentAddressedStore {
|
|
|
338
421
|
const bloomOS = tx.objectStore(BLOOM_CACHE_STORE);
|
|
339
422
|
const metaOS = tx.objectStore(META_STORE);
|
|
340
423
|
const insertedIds = [];
|
|
341
|
-
const counterRecord = await reqToPromise(metaOS.get(RECEIPT_ORDER_COUNTER_KEY));
|
|
424
|
+
const counterRecord = (await reqToPromise(metaOS.get(RECEIPT_ORDER_COUNTER_KEY)));
|
|
342
425
|
let nextReceiptOrder = typeof counterRecord?.value === "number" ? counterRecord.value + 1 : 1;
|
|
426
|
+
let totalContentBytes = (await readNumericMetaValue(metaOS, TOTAL_CONTENT_BYTES_KEY)) ?? 0;
|
|
427
|
+
let totalMetadataBytes = (await readNumericMetaValue(metaOS, TOTAL_METADATA_BYTES_KEY)) ?? 0;
|
|
343
428
|
for (const entry of entries) {
|
|
344
429
|
// Check if entry already exists (skip duplicate)
|
|
345
430
|
const existing = await reqToPromise(entriesOS.get(entry.id));
|
|
@@ -353,10 +438,11 @@ class IndexedDBContentAddressedStore {
|
|
|
353
438
|
...rest,
|
|
354
439
|
receiptOrder: nextReceiptOrder++,
|
|
355
440
|
};
|
|
441
|
+
totalMetadataBytes += getMetadataPayloadBytes(metadata);
|
|
356
442
|
// Store metadata
|
|
357
443
|
await reqToPromise(entriesOS.put(metadata));
|
|
358
444
|
// Deduplicate content
|
|
359
|
-
const existingContent = await reqToPromise(contentOS.get(entry.contentHash));
|
|
445
|
+
const existingContent = (await reqToPromise(contentOS.get(entry.contentHash)));
|
|
360
446
|
if (existingContent) {
|
|
361
447
|
existingContent.refCount += 1;
|
|
362
448
|
await reqToPromise(contentOS.put(existingContent));
|
|
@@ -368,16 +454,16 @@ class IndexedDBContentAddressedStore {
|
|
|
368
454
|
data: encryptedData,
|
|
369
455
|
refCount: 1,
|
|
370
456
|
}));
|
|
457
|
+
totalContentBytes += encryptedData.byteLength;
|
|
371
458
|
this.logger.debug(`Stored content for hash ${entry.contentHash.substring(0, 8)}...`);
|
|
372
459
|
}
|
|
373
460
|
insertedIds.push(entry.id);
|
|
374
461
|
this.logger.debug(`Stored entry ${entry.id} for doc ${entry.docId}`);
|
|
375
462
|
}
|
|
376
463
|
if (insertedIds.length > 0) {
|
|
377
|
-
await
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
}));
|
|
464
|
+
await writeNumericMetaValue(metaOS, RECEIPT_ORDER_COUNTER_KEY, nextReceiptOrder - 1);
|
|
465
|
+
await writeNumericMetaValue(metaOS, TOTAL_CONTENT_BYTES_KEY, totalContentBytes);
|
|
466
|
+
await writeNumericMetaValue(metaOS, TOTAL_METADATA_BYTES_KEY, totalMetadataBytes);
|
|
381
467
|
}
|
|
382
468
|
// Incrementally update bloom cache with newly inserted IDs
|
|
383
469
|
if (insertedIds.length > 0) {
|
|
@@ -693,11 +779,14 @@ class IndexedDBContentAddressedStore {
|
|
|
693
779
|
async purgeDocHistory(docId) {
|
|
694
780
|
this.logger.info(`Purging entry history for document: ${docId}`);
|
|
695
781
|
const db = await this.ensureOpen();
|
|
696
|
-
const tx = db.transaction([ENTRIES_STORE, CONTENT_STORE, BLOOM_CACHE_STORE], "readwrite");
|
|
782
|
+
const tx = db.transaction([ENTRIES_STORE, CONTENT_STORE, BLOOM_CACHE_STORE, META_STORE], "readwrite");
|
|
697
783
|
const entriesOS = tx.objectStore(ENTRIES_STORE);
|
|
698
784
|
const contentOS = tx.objectStore(CONTENT_STORE);
|
|
699
785
|
const bloomOS = tx.objectStore(BLOOM_CACHE_STORE);
|
|
786
|
+
const metaOS = tx.objectStore(META_STORE);
|
|
700
787
|
const docIndex = entriesOS.index(IDX_DOC_ID);
|
|
788
|
+
let totalContentBytes = (await readNumericMetaValue(metaOS, TOTAL_CONTENT_BYTES_KEY)) ?? 0;
|
|
789
|
+
let totalMetadataBytes = (await readNumericMetaValue(metaOS, TOTAL_METADATA_BYTES_KEY)) ?? 0;
|
|
701
790
|
// Collect all entries for this docId
|
|
702
791
|
const entriesToPurge = [];
|
|
703
792
|
await new Promise((resolve, reject) => {
|
|
@@ -720,11 +809,13 @@ class IndexedDBContentAddressedStore {
|
|
|
720
809
|
// Delete entries and decrement content ref counts
|
|
721
810
|
for (const entry of entriesToPurge) {
|
|
722
811
|
await reqToPromise(entriesOS.delete(entry.id));
|
|
723
|
-
|
|
812
|
+
totalMetadataBytes -= getMetadataPayloadBytes(entry);
|
|
813
|
+
const contentRecord = (await reqToPromise(contentOS.get(entry.contentHash)));
|
|
724
814
|
if (contentRecord) {
|
|
725
815
|
const newCount = contentRecord.refCount - 1;
|
|
726
816
|
if (newCount <= 0) {
|
|
727
817
|
await reqToPromise(contentOS.delete(entry.contentHash));
|
|
818
|
+
totalContentBytes -= contentRecord.data.byteLength;
|
|
728
819
|
this.logger.debug(`Cleaned up orphaned content ${entry.contentHash.substring(0, 8)}...`);
|
|
729
820
|
}
|
|
730
821
|
else {
|
|
@@ -735,6 +826,8 @@ class IndexedDBContentAddressedStore {
|
|
|
735
826
|
}
|
|
736
827
|
// Invalidate bloom cache
|
|
737
828
|
await reqToPromise(bloomOS.put({ key: BLOOM_CACHE_KEY, summary: null, dirty: true }));
|
|
829
|
+
await writeNumericMetaValue(metaOS, TOTAL_CONTENT_BYTES_KEY, Math.max(0, totalContentBytes));
|
|
830
|
+
await writeNumericMetaValue(metaOS, TOTAL_METADATA_BYTES_KEY, Math.max(0, totalMetadataBytes));
|
|
738
831
|
await txToPromise(tx);
|
|
739
832
|
this.logger.info(`Purged ${entriesToPurge.length} entries for document ${docId}`);
|
|
740
833
|
}
|
|
@@ -817,6 +910,98 @@ class IndexedDBContentAddressedStore {
|
|
|
817
910
|
cursorReq.onerror = () => reject(cursorReq.error);
|
|
818
911
|
});
|
|
819
912
|
}
|
|
913
|
+
/**
|
|
914
|
+
* Backfills the byte counters the first time an existing database is opened
|
|
915
|
+
* after payload accounting is introduced. The backfill persists both totals
|
|
916
|
+
* within one transaction so later writes start from a consistent baseline.
|
|
917
|
+
*/
|
|
918
|
+
async backfillStoredBytesIfNeeded(db) {
|
|
919
|
+
const readTx = db.transaction(META_STORE, "readonly");
|
|
920
|
+
const readMetaOS = readTx.objectStore(META_STORE);
|
|
921
|
+
const contentBytes = await readNumericMetaValue(readMetaOS, TOTAL_CONTENT_BYTES_KEY);
|
|
922
|
+
const metadataBytes = await readNumericMetaValue(readMetaOS, TOTAL_METADATA_BYTES_KEY);
|
|
923
|
+
if (contentBytes !== null && metadataBytes !== null) {
|
|
924
|
+
return;
|
|
925
|
+
}
|
|
926
|
+
const writeTx = db.transaction([ENTRIES_STORE, CONTENT_STORE, META_STORE], "readwrite");
|
|
927
|
+
const totals = await computeStoredBytes(writeTx.objectStore(ENTRIES_STORE), writeTx.objectStore(CONTENT_STORE));
|
|
928
|
+
const writeMetaOS = writeTx.objectStore(META_STORE);
|
|
929
|
+
await writeNumericMetaValue(writeMetaOS, TOTAL_CONTENT_BYTES_KEY, totals.contentBytes);
|
|
930
|
+
await writeNumericMetaValue(writeMetaOS, TOTAL_METADATA_BYTES_KEY, totals.metadataBytes);
|
|
931
|
+
await txToPromise(writeTx);
|
|
932
|
+
}
|
|
820
933
|
}
|
|
821
934
|
exports.IndexedDBContentAddressedStore = IndexedDBContentAddressedStore;
|
|
935
|
+
/**
|
|
936
|
+
* Reads content-addressed payload counters from an existing IndexedDB database
|
|
937
|
+
* without opening the higher-level store abstraction or triggering a backfill.
|
|
938
|
+
*
|
|
939
|
+
* The returned byte counts reflect encrypted content payload bytes plus
|
|
940
|
+
* serialized metadata payload bytes already persisted by the store. For older
|
|
941
|
+
* browser databases that predate the byte counters, the helper falls back to a
|
|
942
|
+
* read-only scan of the legacy stores instead of writing the missing totals.
|
|
943
|
+
* When the database does not exist, the function returns `null`.
|
|
944
|
+
*/
|
|
945
|
+
async function readContentAddressedStoreBytes(idbName) {
|
|
946
|
+
return new Promise((resolve, reject) => {
|
|
947
|
+
let createdDuringProbe = false;
|
|
948
|
+
const request = indexedDB.open(idbName);
|
|
949
|
+
request.onupgradeneeded = (event) => {
|
|
950
|
+
if (event.oldVersion === 0) {
|
|
951
|
+
createdDuringProbe = true;
|
|
952
|
+
request.transaction?.abort();
|
|
953
|
+
}
|
|
954
|
+
};
|
|
955
|
+
request.onsuccess = async () => {
|
|
956
|
+
const db = request.result;
|
|
957
|
+
try {
|
|
958
|
+
let contentBytes = null;
|
|
959
|
+
let metadataBytes = null;
|
|
960
|
+
if (db.objectStoreNames.contains(META_STORE)) {
|
|
961
|
+
const tx = db.transaction(META_STORE, "readonly");
|
|
962
|
+
const metaOS = tx.objectStore(META_STORE);
|
|
963
|
+
contentBytes = await readNumericMetaValue(metaOS, TOTAL_CONTENT_BYTES_KEY);
|
|
964
|
+
metadataBytes = await readNumericMetaValue(metaOS, TOTAL_METADATA_BYTES_KEY);
|
|
965
|
+
}
|
|
966
|
+
if (contentBytes === null || metadataBytes === null) {
|
|
967
|
+
if (!db.objectStoreNames.contains(ENTRIES_STORE) ||
|
|
968
|
+
!db.objectStoreNames.contains(CONTENT_STORE)) {
|
|
969
|
+
db.close();
|
|
970
|
+
resolve(null);
|
|
971
|
+
return;
|
|
972
|
+
}
|
|
973
|
+
const scanTx = db.transaction([ENTRIES_STORE, CONTENT_STORE], "readonly");
|
|
974
|
+
const totals = await computeStoredBytes(scanTx.objectStore(ENTRIES_STORE), scanTx.objectStore(CONTENT_STORE));
|
|
975
|
+
await txToPromise(scanTx);
|
|
976
|
+
contentBytes = totals.contentBytes;
|
|
977
|
+
metadataBytes = totals.metadataBytes;
|
|
978
|
+
}
|
|
979
|
+
db.close();
|
|
980
|
+
resolve({ contentBytes, metadataBytes });
|
|
981
|
+
}
|
|
982
|
+
catch (error) {
|
|
983
|
+
db.close();
|
|
984
|
+
reject(error);
|
|
985
|
+
}
|
|
986
|
+
};
|
|
987
|
+
request.onerror = async () => {
|
|
988
|
+
if (createdDuringProbe || request.error?.name === "AbortError") {
|
|
989
|
+
try {
|
|
990
|
+
await new Promise((cleanupResolve) => {
|
|
991
|
+
const cleanupRequest = indexedDB.deleteDatabase(idbName);
|
|
992
|
+
cleanupRequest.onsuccess = () => cleanupResolve();
|
|
993
|
+
cleanupRequest.onerror = () => cleanupResolve();
|
|
994
|
+
cleanupRequest.onblocked = () => cleanupResolve();
|
|
995
|
+
});
|
|
996
|
+
}
|
|
997
|
+
finally {
|
|
998
|
+
resolve(null);
|
|
999
|
+
}
|
|
1000
|
+
return;
|
|
1001
|
+
}
|
|
1002
|
+
reject(request.error ??
|
|
1003
|
+
new Error(`Could not open IndexedDB database "${idbName}".`));
|
|
1004
|
+
};
|
|
1005
|
+
});
|
|
1006
|
+
}
|
|
822
1007
|
//# sourceMappingURL=IndexedDBContentAddressedStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedDBContentAddressedStore.js","sourceRoot":"","sources":["../../../src/browser/appendonlystores/IndexedDBContentAddressedStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IndexedDBContentAddressedStore.js","sourceRoot":"","sources":["../../../src/browser/appendonlystores/IndexedDBContentAddressedStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,10 +12,32 @@ export declare class IndexedDBLocalCacheStore implements LocalCacheStore {
|
|
|
12
12
|
constructor(dbName?: string);
|
|
13
13
|
private getDb;
|
|
14
14
|
private toKey;
|
|
15
|
+
/**
|
|
16
|
+
* Returns the approximate payload bytes stored in this IndexedDB cache.
|
|
17
|
+
*
|
|
18
|
+
* The total reflects the raw `ArrayBuffer.byteLength` of cached values and
|
|
19
|
+
* excludes IndexedDB structural overhead.
|
|
20
|
+
*/
|
|
21
|
+
getStoredBytes(): Promise<number>;
|
|
15
22
|
get(type: string, id: string): Promise<Uint8Array | null>;
|
|
16
23
|
put(type: string, id: string, value: Uint8Array): Promise<void>;
|
|
17
24
|
delete(type: string, id: string): Promise<void>;
|
|
18
25
|
list(type: string): Promise<string[]>;
|
|
19
26
|
clear(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Backfills the cache byte counter after upgrading an existing database.
|
|
29
|
+
* Values are summed from the raw `ArrayBuffer.byteLength` of the `kv` store
|
|
30
|
+
* and then persisted before callers observe the opened database.
|
|
31
|
+
*/
|
|
32
|
+
private backfillStoredBytesIfNeeded;
|
|
20
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Reads the cache byte counter from an existing IndexedDB database without
|
|
36
|
+
* constructing the higher-level cache abstraction or triggering a backfill.
|
|
37
|
+
*
|
|
38
|
+
* For older browser databases that predate the size counter, the helper falls
|
|
39
|
+
* back to a read-only scan of the `kv` store instead of writing migration
|
|
40
|
+
* metadata. The function returns `null` only when the database does not exist.
|
|
41
|
+
*/
|
|
42
|
+
export declare function readLocalCacheStoreBytes(idbName: string): Promise<number | null>;
|
|
21
43
|
//# sourceMappingURL=IndexedDBLocalCacheStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedDBLocalCacheStore.d.ts","sourceRoot":"","sources":["../../../src/browser/cache/IndexedDBLocalCacheStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"IndexedDBLocalCacheStore.d.ts","sourceRoot":"","sources":["../../../src/browser/cache/IndexedDBLocalCacheStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAqExE;;;;;GAKG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,WAAW,CAAqC;gBAE5C,MAAM,GAAE,MAAyB;YAI/B,KAAK;IAwCnB,OAAO,CAAC,KAAK;IAIb;;;;;OAKG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAOjC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAkBzD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;;;OAIG;YACW,2BAA2B;CAiB1C;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA8DxB"}
|
|
@@ -1,7 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.IndexedDBLocalCacheStore = void 0;
|
|
4
|
+
exports.readLocalCacheStoreBytes = readLocalCacheStoreBytes;
|
|
4
5
|
const STORE_NAME = "kv";
|
|
6
|
+
const SIZE_META_STORE = "size_meta";
|
|
7
|
+
const TOTAL_BYTES_KEY = "totalBytes";
|
|
8
|
+
const IDB_VERSION = 2;
|
|
9
|
+
function getPayloadBytes(value) {
|
|
10
|
+
return value.byteLength;
|
|
11
|
+
}
|
|
12
|
+
function requestToPromise(request) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
request.onsuccess = () => resolve(request.result);
|
|
15
|
+
request.onerror = () => reject(request.error);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function transactionToPromise(tx) {
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
tx.oncomplete = () => resolve();
|
|
21
|
+
tx.onerror = () => reject(tx.error);
|
|
22
|
+
tx.onabort = () => reject(tx.error ?? new Error("IndexedDB transaction aborted."));
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async function readStoredBytesValue(store) {
|
|
26
|
+
const record = (await requestToPromise(store.get(TOTAL_BYTES_KEY)));
|
|
27
|
+
return typeof record?.value === "number" ? record.value : null;
|
|
28
|
+
}
|
|
29
|
+
async function writeStoredBytesValue(store, value) {
|
|
30
|
+
await requestToPromise(store.put({ key: TOTAL_BYTES_KEY, value }));
|
|
31
|
+
}
|
|
32
|
+
async function computeCacheStoredBytes(store) {
|
|
33
|
+
let totalBytes = 0;
|
|
34
|
+
await new Promise((resolve, reject) => {
|
|
35
|
+
const request = store.openCursor();
|
|
36
|
+
request.onsuccess = () => {
|
|
37
|
+
const cursor = request.result;
|
|
38
|
+
if (!cursor) {
|
|
39
|
+
resolve();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
totalBytes += getPayloadBytes(cursor.value);
|
|
43
|
+
cursor.continue();
|
|
44
|
+
};
|
|
45
|
+
request.onerror = () => reject(request.error);
|
|
46
|
+
});
|
|
47
|
+
return totalBytes;
|
|
48
|
+
}
|
|
5
49
|
/**
|
|
6
50
|
* Browser IndexedDB-backed {@link LocalCacheStore}.
|
|
7
51
|
*
|
|
@@ -20,24 +64,54 @@ class IndexedDBLocalCacheStore {
|
|
|
20
64
|
if (this.openPromise)
|
|
21
65
|
return this.openPromise;
|
|
22
66
|
this.openPromise = new Promise((resolve, reject) => {
|
|
23
|
-
const request = indexedDB.open(this.dbName,
|
|
67
|
+
const request = indexedDB.open(this.dbName, IDB_VERSION);
|
|
24
68
|
request.onupgradeneeded = () => {
|
|
25
69
|
const db = request.result;
|
|
26
70
|
if (!db.objectStoreNames.contains(STORE_NAME)) {
|
|
27
71
|
db.createObjectStore(STORE_NAME);
|
|
28
72
|
}
|
|
73
|
+
if (!db.objectStoreNames.contains(SIZE_META_STORE)) {
|
|
74
|
+
db.createObjectStore(SIZE_META_STORE, { keyPath: "key" });
|
|
75
|
+
}
|
|
29
76
|
};
|
|
30
77
|
request.onsuccess = () => {
|
|
31
78
|
this.db = request.result;
|
|
32
|
-
|
|
79
|
+
this.db.onversionchange = () => {
|
|
80
|
+
this.db?.close();
|
|
81
|
+
this.db = null;
|
|
82
|
+
this.openPromise = null;
|
|
83
|
+
};
|
|
84
|
+
void this.backfillStoredBytesIfNeeded(this.db)
|
|
85
|
+
.then(() => resolve(this.db))
|
|
86
|
+
.catch((error) => {
|
|
87
|
+
this.db?.close();
|
|
88
|
+
this.db = null;
|
|
89
|
+
this.openPromise = null;
|
|
90
|
+
reject(error);
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
request.onerror = () => {
|
|
94
|
+
this.openPromise = null;
|
|
95
|
+
reject(request.error);
|
|
33
96
|
};
|
|
34
|
-
request.onerror = () => reject(request.error);
|
|
35
97
|
});
|
|
36
98
|
return this.openPromise;
|
|
37
99
|
}
|
|
38
100
|
toKey(type, id) {
|
|
39
101
|
return `${type}\0${id}`;
|
|
40
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Returns the approximate payload bytes stored in this IndexedDB cache.
|
|
105
|
+
*
|
|
106
|
+
* The total reflects the raw `ArrayBuffer.byteLength` of cached values and
|
|
107
|
+
* excludes IndexedDB structural overhead.
|
|
108
|
+
*/
|
|
109
|
+
async getStoredBytes() {
|
|
110
|
+
const db = await this.getDb();
|
|
111
|
+
const tx = db.transaction(SIZE_META_STORE, "readonly");
|
|
112
|
+
const sizeMetaStore = tx.objectStore(SIZE_META_STORE);
|
|
113
|
+
return (await readStoredBytesValue(sizeMetaStore)) ?? 0;
|
|
114
|
+
}
|
|
41
115
|
async get(type, id) {
|
|
42
116
|
const db = await this.getDb();
|
|
43
117
|
return new Promise((resolve, reject) => {
|
|
@@ -58,23 +132,29 @@ class IndexedDBLocalCacheStore {
|
|
|
58
132
|
}
|
|
59
133
|
async put(type, id, value) {
|
|
60
134
|
const db = await this.getDb();
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
135
|
+
const tx = db.transaction([STORE_NAME, SIZE_META_STORE], "readwrite");
|
|
136
|
+
const store = tx.objectStore(STORE_NAME);
|
|
137
|
+
const sizeMetaStore = tx.objectStore(SIZE_META_STORE);
|
|
138
|
+
const key = this.toKey(type, id);
|
|
139
|
+
const existingValue = (await requestToPromise(store.get(key)));
|
|
140
|
+
const totalBytes = (await readStoredBytesValue(sizeMetaStore)) ?? 0;
|
|
141
|
+
const nextValue = value.slice().buffer;
|
|
142
|
+
const nextTotalBytes = totalBytes - getPayloadBytes(existingValue ?? new ArrayBuffer(0)) + nextValue.byteLength;
|
|
143
|
+
store.put(nextValue, key);
|
|
144
|
+
await writeStoredBytesValue(sizeMetaStore, Math.max(0, nextTotalBytes));
|
|
145
|
+
await transactionToPromise(tx);
|
|
68
146
|
}
|
|
69
147
|
async delete(type, id) {
|
|
70
148
|
const db = await this.getDb();
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
149
|
+
const tx = db.transaction([STORE_NAME, SIZE_META_STORE], "readwrite");
|
|
150
|
+
const store = tx.objectStore(STORE_NAME);
|
|
151
|
+
const sizeMetaStore = tx.objectStore(SIZE_META_STORE);
|
|
152
|
+
const key = this.toKey(type, id);
|
|
153
|
+
const existingValue = (await requestToPromise(store.get(key)));
|
|
154
|
+
const totalBytes = (await readStoredBytesValue(sizeMetaStore)) ?? 0;
|
|
155
|
+
store.delete(key);
|
|
156
|
+
await writeStoredBytesValue(sizeMetaStore, Math.max(0, totalBytes - getPayloadBytes(existingValue ?? new ArrayBuffer(0))));
|
|
157
|
+
await transactionToPromise(tx);
|
|
78
158
|
}
|
|
79
159
|
async list(type) {
|
|
80
160
|
const db = await this.getDb();
|
|
@@ -93,14 +173,95 @@ class IndexedDBLocalCacheStore {
|
|
|
93
173
|
}
|
|
94
174
|
async clear() {
|
|
95
175
|
const db = await this.getDb();
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
176
|
+
const tx = db.transaction([STORE_NAME, SIZE_META_STORE], "readwrite");
|
|
177
|
+
const store = tx.objectStore(STORE_NAME);
|
|
178
|
+
const sizeMetaStore = tx.objectStore(SIZE_META_STORE);
|
|
179
|
+
store.clear();
|
|
180
|
+
await writeStoredBytesValue(sizeMetaStore, 0);
|
|
181
|
+
await transactionToPromise(tx);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Backfills the cache byte counter after upgrading an existing database.
|
|
185
|
+
* Values are summed from the raw `ArrayBuffer.byteLength` of the `kv` store
|
|
186
|
+
* and then persisted before callers observe the opened database.
|
|
187
|
+
*/
|
|
188
|
+
async backfillStoredBytesIfNeeded(db) {
|
|
189
|
+
const readTx = db.transaction(SIZE_META_STORE, "readonly");
|
|
190
|
+
const existingValue = await readStoredBytesValue(readTx.objectStore(SIZE_META_STORE));
|
|
191
|
+
if (existingValue !== null) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const writeTx = db.transaction([STORE_NAME, SIZE_META_STORE], "readwrite");
|
|
195
|
+
const store = writeTx.objectStore(STORE_NAME);
|
|
196
|
+
const sizeMetaStore = writeTx.objectStore(SIZE_META_STORE);
|
|
197
|
+
const totalBytes = await computeCacheStoredBytes(store);
|
|
198
|
+
await writeStoredBytesValue(sizeMetaStore, totalBytes);
|
|
199
|
+
await transactionToPromise(writeTx);
|
|
103
200
|
}
|
|
104
201
|
}
|
|
105
202
|
exports.IndexedDBLocalCacheStore = IndexedDBLocalCacheStore;
|
|
203
|
+
/**
|
|
204
|
+
* Reads the cache byte counter from an existing IndexedDB database without
|
|
205
|
+
* constructing the higher-level cache abstraction or triggering a backfill.
|
|
206
|
+
*
|
|
207
|
+
* For older browser databases that predate the size counter, the helper falls
|
|
208
|
+
* back to a read-only scan of the `kv` store instead of writing migration
|
|
209
|
+
* metadata. The function returns `null` only when the database does not exist.
|
|
210
|
+
*/
|
|
211
|
+
async function readLocalCacheStoreBytes(idbName) {
|
|
212
|
+
return new Promise((resolve, reject) => {
|
|
213
|
+
let createdDuringProbe = false;
|
|
214
|
+
const request = indexedDB.open(idbName);
|
|
215
|
+
request.onupgradeneeded = (event) => {
|
|
216
|
+
if (event.oldVersion === 0) {
|
|
217
|
+
createdDuringProbe = true;
|
|
218
|
+
request.transaction?.abort();
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
request.onsuccess = async () => {
|
|
222
|
+
const db = request.result;
|
|
223
|
+
try {
|
|
224
|
+
let totalBytes = null;
|
|
225
|
+
if (db.objectStoreNames.contains(SIZE_META_STORE)) {
|
|
226
|
+
const tx = db.transaction(SIZE_META_STORE, "readonly");
|
|
227
|
+
totalBytes = await readStoredBytesValue(tx.objectStore(SIZE_META_STORE));
|
|
228
|
+
}
|
|
229
|
+
if (totalBytes === null) {
|
|
230
|
+
if (!db.objectStoreNames.contains(STORE_NAME)) {
|
|
231
|
+
db.close();
|
|
232
|
+
resolve(null);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
const scanTx = db.transaction(STORE_NAME, "readonly");
|
|
236
|
+
totalBytes = await computeCacheStoredBytes(scanTx.objectStore(STORE_NAME));
|
|
237
|
+
await transactionToPromise(scanTx);
|
|
238
|
+
}
|
|
239
|
+
db.close();
|
|
240
|
+
resolve(totalBytes);
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
db.close();
|
|
244
|
+
reject(error);
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
request.onerror = async () => {
|
|
248
|
+
if (createdDuringProbe || request.error?.name === "AbortError") {
|
|
249
|
+
try {
|
|
250
|
+
await new Promise((cleanupResolve) => {
|
|
251
|
+
const cleanupRequest = indexedDB.deleteDatabase(idbName);
|
|
252
|
+
cleanupRequest.onsuccess = () => cleanupResolve();
|
|
253
|
+
cleanupRequest.onerror = () => cleanupResolve();
|
|
254
|
+
cleanupRequest.onblocked = () => cleanupResolve();
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
finally {
|
|
258
|
+
resolve(null);
|
|
259
|
+
}
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
reject(request.error ??
|
|
263
|
+
new Error(`Could not open IndexedDB database "${idbName}".`));
|
|
264
|
+
};
|
|
265
|
+
});
|
|
266
|
+
}
|
|
106
267
|
//# sourceMappingURL=IndexedDBLocalCacheStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedDBLocalCacheStore.js","sourceRoot":"","sources":["../../../src/browser/cache/IndexedDBLocalCacheStore.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"IndexedDBLocalCacheStore.js","sourceRoot":"","sources":["../../../src/browser/cache/IndexedDBLocalCacheStore.ts"],"names":[],"mappings":"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"}
|
package/dist/browser/index.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ export { BaseMindooDB } from "../core/BaseMindooDB";
|
|
|
3
3
|
export { BaseMindooTenant } from "../core/BaseMindooTenant";
|
|
4
4
|
export { BaseMindooTenantFactory } from "../core/BaseMindooTenantFactory";
|
|
5
5
|
export { BrowserCryptoAdapter, createCryptoAdapter } from "./crypto/BrowserCryptoAdapter";
|
|
6
|
-
export { IndexedDBContentAddressedStore } from "./appendonlystores/IndexedDBContentAddressedStore";
|
|
6
|
+
export { IndexedDBContentAddressedStore, readContentAddressedStoreBytes, } from "./appendonlystores/IndexedDBContentAddressedStore";
|
|
7
7
|
export { IndexedDBContentAddressedStoreFactory } from "./appendonlystores/IndexedDBContentAddressedStoreFactory";
|
|
8
|
-
export { IndexedDBLocalCacheStore } from "./cache/IndexedDBLocalCacheStore";
|
|
8
|
+
export { IndexedDBLocalCacheStore, readLocalCacheStoreBytes, } from "./cache/IndexedDBLocalCacheStore";
|
|
9
9
|
export { ClientNetworkContentAddressedStore } from "../appendonlystores/network/ClientNetworkContentAddressedStore";
|
|
10
10
|
export { HttpTransport } from "../appendonlystores/network/HttpTransport";
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAG1E,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAG1F,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAG1E,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAG1F,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,qCAAqC,EAAE,MAAM,0DAA0D,CAAC;AAGjH,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,kCAAkC,EAAE,MAAM,gEAAgE,CAAC;AACpH,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC"}
|
package/dist/browser/index.js
CHANGED
|
@@ -16,7 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
17
17
|
};
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.HttpTransport = exports.ClientNetworkContentAddressedStore = exports.IndexedDBLocalCacheStore = exports.IndexedDBContentAddressedStoreFactory = exports.IndexedDBContentAddressedStore = exports.createCryptoAdapter = exports.BrowserCryptoAdapter = exports.BaseMindooTenantFactory = exports.BaseMindooTenant = exports.BaseMindooDB = void 0;
|
|
19
|
+
exports.HttpTransport = exports.ClientNetworkContentAddressedStore = exports.readLocalCacheStoreBytes = exports.IndexedDBLocalCacheStore = exports.IndexedDBContentAddressedStoreFactory = exports.readContentAddressedStoreBytes = exports.IndexedDBContentAddressedStore = exports.createCryptoAdapter = exports.BrowserCryptoAdapter = exports.BaseMindooTenantFactory = exports.BaseMindooTenant = exports.BaseMindooDB = void 0;
|
|
20
20
|
// Re-export all core exports
|
|
21
21
|
__exportStar(require("../core"), exports);
|
|
22
22
|
// Re-export Base* classes that aren't in core/index
|
|
@@ -33,11 +33,13 @@ Object.defineProperty(exports, "createCryptoAdapter", { enumerable: true, get: f
|
|
|
33
33
|
// Browser-specific IndexedDB content-addressed store
|
|
34
34
|
var IndexedDBContentAddressedStore_1 = require("./appendonlystores/IndexedDBContentAddressedStore");
|
|
35
35
|
Object.defineProperty(exports, "IndexedDBContentAddressedStore", { enumerable: true, get: function () { return IndexedDBContentAddressedStore_1.IndexedDBContentAddressedStore; } });
|
|
36
|
+
Object.defineProperty(exports, "readContentAddressedStoreBytes", { enumerable: true, get: function () { return IndexedDBContentAddressedStore_1.readContentAddressedStoreBytes; } });
|
|
36
37
|
var IndexedDBContentAddressedStoreFactory_1 = require("./appendonlystores/IndexedDBContentAddressedStoreFactory");
|
|
37
38
|
Object.defineProperty(exports, "IndexedDBContentAddressedStoreFactory", { enumerable: true, get: function () { return IndexedDBContentAddressedStoreFactory_1.IndexedDBContentAddressedStoreFactory; } });
|
|
38
39
|
// Browser-specific cache store
|
|
39
40
|
var IndexedDBLocalCacheStore_1 = require("./cache/IndexedDBLocalCacheStore");
|
|
40
41
|
Object.defineProperty(exports, "IndexedDBLocalCacheStore", { enumerable: true, get: function () { return IndexedDBLocalCacheStore_1.IndexedDBLocalCacheStore; } });
|
|
42
|
+
Object.defineProperty(exports, "readLocalCacheStoreBytes", { enumerable: true, get: function () { return IndexedDBLocalCacheStore_1.readLocalCacheStoreBytes; } });
|
|
41
43
|
// Network helpers used by browser sync clients
|
|
42
44
|
var ClientNetworkContentAddressedStore_1 = require("../appendonlystores/network/ClientNetworkContentAddressedStore");
|
|
43
45
|
Object.defineProperty(exports, "ClientNetworkContentAddressedStore", { enumerable: true, get: function () { return ClientNetworkContentAddressedStore_1.ClientNetworkContentAddressedStore; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";AAAA,2BAA2B;AAC3B,wEAAwE;;;;;;;;;;;;;;;;;AAExE,6BAA6B;AAC7B,0CAAwB;AAExB,oDAAoD;AACpD,qDAAoD;AAA3C,4GAAA,YAAY,OAAA;AACrB,6DAA4D;AAAnD,oHAAA,gBAAgB,OAAA;AACzB,2EAA0E;AAAjE,kIAAA,uBAAuB,OAAA;AAEhC,kCAAkC;AAClC,sEAA0F;AAAjF,4HAAA,oBAAoB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAElD,qDAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";AAAA,2BAA2B;AAC3B,wEAAwE;;;;;;;;;;;;;;;;;AAExE,6BAA6B;AAC7B,0CAAwB;AAExB,oDAAoD;AACpD,qDAAoD;AAA3C,4GAAA,YAAY,OAAA;AACrB,6DAA4D;AAAnD,oHAAA,gBAAgB,OAAA;AACzB,2EAA0E;AAAjE,kIAAA,uBAAuB,OAAA;AAEhC,kCAAkC;AAClC,sEAA0F;AAAjF,4HAAA,oBAAoB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAElD,qDAAqD;AACrD,oGAG2D;AAFzD,gJAAA,8BAA8B,OAAA;AAC9B,gJAAA,8BAA8B,OAAA;AAEhC,kHAAiH;AAAxG,8JAAA,qCAAqC,OAAA;AAE9C,+BAA+B;AAC/B,6EAG0C;AAFxC,oIAAA,wBAAwB,OAAA;AACxB,oIAAA,wBAAwB,OAAA;AAG1B,+CAA+C;AAC/C,qHAAoH;AAA3G,wJAAA,kCAAkC,OAAA;AAC3C,2EAA0E;AAAjE,8GAAA,aAAa,OAAA"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -60,5 +60,7 @@ export const isDocEntryId = browser["isDocEntryId"];
|
|
|
60
60
|
export const isMindooURI = browser["isMindooURI"];
|
|
61
61
|
export const parseAttachmentChunkId = browser["parseAttachmentChunkId"];
|
|
62
62
|
export const parseDocEntryId = browser["parseDocEntryId"];
|
|
63
|
+
export const readContentAddressedStoreBytes = browser["readContentAddressedStoreBytes"];
|
|
64
|
+
export const readLocalCacheStoreBytes = browser["readLocalCacheStoreBytes"];
|
|
63
65
|
|
|
64
66
|
export default browser;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mindoodb",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"description": "End-to-End Encrypted, Offline-first Sync Database",
|
|
5
5
|
"main": "./dist/node/index.js",
|
|
6
6
|
"browser": "./dist/browser/index.mjs",
|
|
@@ -86,6 +86,7 @@
|
|
|
86
86
|
"esbuild": "^0.27.3",
|
|
87
87
|
"express": "^4.18.2",
|
|
88
88
|
"express-rate-limit": "^8.2.1",
|
|
89
|
+
"fake-indexeddb": "^6.2.5",
|
|
89
90
|
"helmet": "^8.1.0",
|
|
90
91
|
"jest": "^29.7.0",
|
|
91
92
|
"node-forge": "^1.3.1",
|