cojson-storage-indexeddb 0.19.18 → 0.19.20
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +7 -0
- package/dist/CoJsonIDBTransaction.d.ts +8 -4
- package/dist/CoJsonIDBTransaction.d.ts.map +1 -1
- package/dist/CoJsonIDBTransaction.js +17 -11
- package/dist/CoJsonIDBTransaction.js.map +1 -1
- package/dist/idbClient.d.ts +38 -3
- package/dist/idbClient.d.ts.map +1 -1
- package/dist/idbClient.js +78 -3
- package/dist/idbClient.js.map +1 -1
- package/dist/idbNode.d.ts.map +1 -1
- package/dist/idbNode.js +11 -1
- package/dist/idbNode.js.map +1 -1
- package/dist/tests/CoJsonIDBTransaction.test.js +49 -0
- package/dist/tests/CoJsonIDBTransaction.test.js.map +1 -1
- package/dist/tests/storage.indexeddb.test.js +101 -27
- package/dist/tests/storage.indexeddb.test.js.map +1 -1
- package/dist/tests/testUtils.d.ts +8 -1
- package/dist/tests/testUtils.d.ts.map +1 -1
- package/dist/tests/testUtils.js +50 -1
- package/dist/tests/testUtils.js.map +1 -1
- package/package.json +2 -2
- package/src/CoJsonIDBTransaction.ts +21 -19
- package/src/idbClient.ts +122 -2
- package/src/idbNode.ts +15 -1
- package/src/tests/CoJsonIDBTransaction.test.ts +87 -0
- package/src/tests/storage.indexeddb.test.ts +146 -95
- package/src/tests/testUtils.ts +83 -2
- package/vitest.config.ts +6 -1
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
export type StoreName = "coValues" | "sessions" | "transactions" | "signatureAfter";
|
|
1
|
+
export type StoreName = "coValues" | "sessions" | "transactions" | "signatureAfter" | "unsyncedCoValues";
|
|
2
|
+
/**
|
|
3
|
+
* An access unit for the IndexedDB Jazz database.
|
|
4
|
+
* It's a wrapper around the IDBTransaction object that helps on batching multiple operations
|
|
5
|
+
* in a single transaction.
|
|
6
|
+
*/
|
|
2
7
|
export declare class CoJsonIDBTransaction {
|
|
3
8
|
db: IDBDatabase;
|
|
9
|
+
private storeNames;
|
|
4
10
|
tx: IDBTransaction;
|
|
5
11
|
pendingRequests: ((txEntry: this) => void)[];
|
|
6
12
|
rejectHandlers: (() => void)[];
|
|
@@ -8,11 +14,9 @@ export declare class CoJsonIDBTransaction {
|
|
|
8
14
|
running: boolean;
|
|
9
15
|
failed: boolean;
|
|
10
16
|
done: boolean;
|
|
11
|
-
constructor(db: IDBDatabase);
|
|
17
|
+
constructor(db: IDBDatabase, storeNames?: StoreName[]);
|
|
12
18
|
refresh(): void;
|
|
13
19
|
rollback(): void;
|
|
14
|
-
startedAt: number;
|
|
15
|
-
isReusable(): boolean;
|
|
16
20
|
getObjectStore(name: StoreName): IDBObjectStore;
|
|
17
21
|
private pushRequest;
|
|
18
22
|
handleRequest<T>(handler: (txEntry: this) => IDBRequest<T>): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoJsonIDBTransaction.d.ts","sourceRoot":"","sources":["../src/CoJsonIDBTransaction.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,UAAU,GACV,cAAc,GACd,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"CoJsonIDBTransaction.d.ts","sourceRoot":"","sources":["../src/CoJsonIDBTransaction.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,UAAU,GACV,cAAc,GACd,gBAAgB,GAChB,kBAAkB,CAAC;AASvB;;;;GAIG;AACH,qBAAa,oBAAoB;IAatB,EAAE,EAAE,WAAW;IAEtB,OAAO,CAAC,UAAU;IAdZ,EAAE,EAAE,cAAc,CAAC;IAE3B,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE,CAAM;IAClD,cAAc,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAM;IAEpC,EAAE,SAAiB;IAEnB,OAAO,UAAS;IAChB,MAAM,UAAS;IACf,IAAI,UAAS;gBAGJ,EAAE,EAAE,WAAW,EAEd,UAAU,GAAE,SAAS,EAAsB;IAKrD,OAAO;IAWP,QAAQ;IAIR,cAAc,CAAC,IAAI,EAAE,SAAS;IAS9B,OAAO,CAAC,WAAW;IAgCnB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC;IAyB1D,MAAM;CAKP;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,cAenD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,EACxD,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,CAAC,cAeT"}
|
|
@@ -1,20 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
const DEFAULT_TX_STORES = [
|
|
2
|
+
"coValues",
|
|
3
|
+
"sessions",
|
|
4
|
+
"transactions",
|
|
5
|
+
"signatureAfter",
|
|
6
|
+
];
|
|
7
|
+
/**
|
|
8
|
+
* An access unit for the IndexedDB Jazz database.
|
|
9
|
+
* It's a wrapper around the IDBTransaction object that helps on batching multiple operations
|
|
10
|
+
* in a single transaction.
|
|
11
|
+
*/
|
|
4
12
|
export class CoJsonIDBTransaction {
|
|
5
|
-
constructor(db
|
|
13
|
+
constructor(db,
|
|
14
|
+
// The object stores this transaction will operate on
|
|
15
|
+
storeNames = DEFAULT_TX_STORES) {
|
|
16
|
+
this.db = db;
|
|
17
|
+
this.storeNames = storeNames;
|
|
6
18
|
this.pendingRequests = [];
|
|
7
19
|
this.rejectHandlers = [];
|
|
8
20
|
this.id = Math.random();
|
|
9
21
|
this.running = false;
|
|
10
22
|
this.failed = false;
|
|
11
23
|
this.done = false;
|
|
12
|
-
this.startedAt = performance.now();
|
|
13
|
-
this.db = db;
|
|
14
24
|
this.refresh();
|
|
15
25
|
}
|
|
16
26
|
refresh() {
|
|
17
|
-
this.tx = this.db.transaction(
|
|
27
|
+
this.tx = this.db.transaction(this.storeNames, "readwrite");
|
|
18
28
|
this.tx.oncomplete = () => {
|
|
19
29
|
this.done = true;
|
|
20
30
|
};
|
|
@@ -25,10 +35,6 @@ export class CoJsonIDBTransaction {
|
|
|
25
35
|
rollback() {
|
|
26
36
|
this.tx.abort();
|
|
27
37
|
}
|
|
28
|
-
isReusable() {
|
|
29
|
-
const delta = performance.now() - this.startedAt;
|
|
30
|
-
return !this.done && !this.failed && delta <= 100;
|
|
31
|
-
}
|
|
32
38
|
getObjectStore(name) {
|
|
33
39
|
try {
|
|
34
40
|
return this.tx.objectStore(name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoJsonIDBTransaction.js","sourceRoot":"","sources":["../src/CoJsonIDBTransaction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CoJsonIDBTransaction.js","sourceRoot":"","sources":["../src/CoJsonIDBTransaction.ts"],"names":[],"mappings":"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"}
|
package/dist/idbClient.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { CojsonInternalTypes, RawCoID, SessionID, DBTransactionInterfaceAsync } from "cojson";
|
|
2
2
|
import type { DBClientInterfaceAsync, SessionRow, SignatureAfterRow, StoredCoValueRow, StoredSessionRow, TransactionRow } from "cojson";
|
|
3
|
-
import { CoJsonIDBTransaction } from "./CoJsonIDBTransaction.js";
|
|
3
|
+
import { CoJsonIDBTransaction, StoreName } from "./CoJsonIDBTransaction.js";
|
|
4
4
|
export declare class IDBTransaction implements DBTransactionInterfaceAsync {
|
|
5
5
|
private tx;
|
|
6
6
|
constructor(tx: CoJsonIDBTransaction);
|
|
7
|
-
run
|
|
7
|
+
private run;
|
|
8
8
|
getSingleCoValueSession(coValueRowId: number, sessionID: SessionID): Promise<StoredSessionRow | undefined>;
|
|
9
9
|
addSessionUpdate({ sessionUpdate, sessionRow, }: {
|
|
10
10
|
sessionUpdate: SessionRow;
|
|
@@ -16,6 +16,34 @@ export declare class IDBTransaction implements DBTransactionInterfaceAsync {
|
|
|
16
16
|
idx: number;
|
|
17
17
|
signature: CojsonInternalTypes.Signature;
|
|
18
18
|
}): Promise<IDBValidKey>;
|
|
19
|
+
/**
|
|
20
|
+
* Get an unsynced CoValue record by coValueId and peerId.
|
|
21
|
+
*/
|
|
22
|
+
getUnsyncedCoValueRecord(coValueId: RawCoID, peerId: string): Promise<{
|
|
23
|
+
rowID: number;
|
|
24
|
+
coValueId: RawCoID;
|
|
25
|
+
peerId: string;
|
|
26
|
+
} | undefined>;
|
|
27
|
+
/**
|
|
28
|
+
* Get all unsynced CoValue records for a given coValueId.
|
|
29
|
+
*/
|
|
30
|
+
getAllUnsyncedCoValueRecords(coValueId: RawCoID): Promise<{
|
|
31
|
+
rowID: number;
|
|
32
|
+
coValueId: RawCoID;
|
|
33
|
+
peerId: string;
|
|
34
|
+
}[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Delete an unsynced CoValue record by rowID.
|
|
37
|
+
*/
|
|
38
|
+
deleteUnsyncedCoValueRecord(rowID: number): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Insert or update an unsynced CoValue record.
|
|
41
|
+
*/
|
|
42
|
+
putUnsyncedCoValueRecord(record: {
|
|
43
|
+
rowID?: number;
|
|
44
|
+
coValueId: RawCoID;
|
|
45
|
+
peerId: string;
|
|
46
|
+
}): Promise<void>;
|
|
19
47
|
}
|
|
20
48
|
export declare class IDBClient implements DBClientInterfaceAsync {
|
|
21
49
|
private db;
|
|
@@ -28,6 +56,13 @@ export declare class IDBClient implements DBClientInterfaceAsync {
|
|
|
28
56
|
getNewTransactionInSession(sessionRowId: number, fromIdx: number, toIdx: number): Promise<TransactionRow[]>;
|
|
29
57
|
getSignatures(sessionRowId: number, firstNewTxIdx: number): Promise<SignatureAfterRow[]>;
|
|
30
58
|
upsertCoValue(id: RawCoID, header?: CojsonInternalTypes.CoValueHeader): Promise<number | undefined>;
|
|
31
|
-
transaction(operationsCallback: (tx: DBTransactionInterfaceAsync) => Promise<unknown
|
|
59
|
+
transaction(operationsCallback: (tx: DBTransactionInterfaceAsync) => Promise<unknown>, storeNames?: StoreName[]): Promise<void>;
|
|
60
|
+
trackCoValuesSyncState(updates: {
|
|
61
|
+
id: RawCoID;
|
|
62
|
+
peerId: string;
|
|
63
|
+
synced: boolean;
|
|
64
|
+
}[]): Promise<void>;
|
|
65
|
+
getUnsyncedCoValueIDs(): Promise<RawCoID[]>;
|
|
66
|
+
stopTrackingSyncState(id: RawCoID): Promise<void>;
|
|
32
67
|
}
|
|
33
68
|
//# sourceMappingURL=idbClient.d.ts.map
|
package/dist/idbClient.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idbClient.d.ts","sourceRoot":"","sources":["../src/idbClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,OAAO,EACP,SAAS,EACT,2BAA2B,EAC5B,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAEV,sBAAsB,EACtB,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACf,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"idbClient.d.ts","sourceRoot":"","sources":["../src/idbClient.ts"],"names":[],"mappings":"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"}
|
package/dist/idbClient.js
CHANGED
|
@@ -3,7 +3,7 @@ export class IDBTransaction {
|
|
|
3
3
|
constructor(tx) {
|
|
4
4
|
this.tx = tx;
|
|
5
5
|
}
|
|
6
|
-
run(handler) {
|
|
6
|
+
async run(handler) {
|
|
7
7
|
return this.tx.handleRequest(handler);
|
|
8
8
|
}
|
|
9
9
|
async getSingleCoValueSession(coValueRowId, sessionID) {
|
|
@@ -34,6 +34,36 @@ export class IDBTransaction {
|
|
|
34
34
|
signature,
|
|
35
35
|
}));
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Get an unsynced CoValue record by coValueId and peerId.
|
|
39
|
+
*/
|
|
40
|
+
async getUnsyncedCoValueRecord(coValueId, peerId) {
|
|
41
|
+
return this.run((tx) => tx
|
|
42
|
+
.getObjectStore("unsyncedCoValues")
|
|
43
|
+
.index("uniqueUnsyncedCoValues")
|
|
44
|
+
.get([coValueId, peerId]));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get all unsynced CoValue records for a given coValueId.
|
|
48
|
+
*/
|
|
49
|
+
async getAllUnsyncedCoValueRecords(coValueId) {
|
|
50
|
+
return this.run((tx) => tx
|
|
51
|
+
.getObjectStore("unsyncedCoValues")
|
|
52
|
+
.index("byCoValueId")
|
|
53
|
+
.getAll(coValueId));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Delete an unsynced CoValue record by rowID.
|
|
57
|
+
*/
|
|
58
|
+
async deleteUnsyncedCoValueRecord(rowID) {
|
|
59
|
+
await this.run((tx) => tx.getObjectStore("unsyncedCoValues").delete(rowID));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Insert or update an unsynced CoValue record.
|
|
63
|
+
*/
|
|
64
|
+
async putUnsyncedCoValueRecord(record) {
|
|
65
|
+
await this.run((tx) => tx.getObjectStore("unsyncedCoValues").put(record));
|
|
66
|
+
}
|
|
37
67
|
}
|
|
38
68
|
export class IDBClient {
|
|
39
69
|
constructor(db) {
|
|
@@ -63,8 +93,8 @@ export class IDBClient {
|
|
|
63
93
|
header,
|
|
64
94
|
}).catch(() => this.getCoValueRowID(id));
|
|
65
95
|
}
|
|
66
|
-
async transaction(operationsCallback) {
|
|
67
|
-
const tx = new CoJsonIDBTransaction(this.db);
|
|
96
|
+
async transaction(operationsCallback, storeNames) {
|
|
97
|
+
const tx = new CoJsonIDBTransaction(this.db, storeNames);
|
|
68
98
|
try {
|
|
69
99
|
await operationsCallback(new IDBTransaction(tx));
|
|
70
100
|
tx.commit(); // Tells the browser to not wait for another possible request and commit the transaction immediately
|
|
@@ -73,5 +103,50 @@ export class IDBClient {
|
|
|
73
103
|
tx.rollback();
|
|
74
104
|
}
|
|
75
105
|
}
|
|
106
|
+
async trackCoValuesSyncState(updates) {
|
|
107
|
+
if (updates.length === 0) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
await this.transaction(async (tx) => {
|
|
111
|
+
const idbTx = tx;
|
|
112
|
+
await Promise.all(updates.map(async (update) => {
|
|
113
|
+
const record = await idbTx.getUnsyncedCoValueRecord(update.id, update.peerId);
|
|
114
|
+
if (update.synced) {
|
|
115
|
+
// Delete
|
|
116
|
+
if (record) {
|
|
117
|
+
await idbTx.deleteUnsyncedCoValueRecord(record.rowID);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// Insert or update
|
|
122
|
+
await idbTx.putUnsyncedCoValueRecord(record
|
|
123
|
+
? {
|
|
124
|
+
rowID: record.rowID,
|
|
125
|
+
coValueId: update.id,
|
|
126
|
+
peerId: update.peerId,
|
|
127
|
+
}
|
|
128
|
+
: {
|
|
129
|
+
coValueId: update.id,
|
|
130
|
+
peerId: update.peerId,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}));
|
|
134
|
+
}, ["unsyncedCoValues"]);
|
|
135
|
+
}
|
|
136
|
+
async getUnsyncedCoValueIDs() {
|
|
137
|
+
const records = await queryIndexedDbStore(this.db, "unsyncedCoValues", (store) => store.getAll());
|
|
138
|
+
const uniqueIds = new Set();
|
|
139
|
+
for (const record of records) {
|
|
140
|
+
uniqueIds.add(record.coValueId);
|
|
141
|
+
}
|
|
142
|
+
return Array.from(uniqueIds);
|
|
143
|
+
}
|
|
144
|
+
async stopTrackingSyncState(id) {
|
|
145
|
+
await this.transaction(async (tx) => {
|
|
146
|
+
const idbTx = tx;
|
|
147
|
+
const records = await idbTx.getAllUnsyncedCoValueRecords(id);
|
|
148
|
+
await Promise.all(records.map((record) => idbTx.deleteUnsyncedCoValueRecord(record.rowID)));
|
|
149
|
+
}, ["unsyncedCoValues"]);
|
|
150
|
+
}
|
|
76
151
|
}
|
|
77
152
|
//# sourceMappingURL=idbClient.js.map
|
package/dist/idbClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idbClient.js","sourceRoot":"","sources":["../src/idbClient.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"idbClient.js","sourceRoot":"","sources":["../src/idbClient.ts"],"names":[],"mappings":"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"}
|
package/dist/idbNode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idbNode.d.ts","sourceRoot":"","sources":["../src/idbNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAKzC,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,QAEpD;AAED,wBAAsB,mBAAmB,CAAC,IAAI,SAAgB,
|
|
1
|
+
{"version":3,"file":"idbNode.d.ts","sourceRoot":"","sources":["../src/idbNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAKzC,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,QAEpD;AAED,wBAAsB,mBAAmB,CAAC,IAAI,SAAgB,4BA4D7D"}
|
package/dist/idbNode.js
CHANGED
|
@@ -6,7 +6,7 @@ export function internal_setDatabaseName(name) {
|
|
|
6
6
|
}
|
|
7
7
|
export async function getIndexedDBStorage(name = DATABASE_NAME) {
|
|
8
8
|
const dbPromise = new Promise((resolve, reject) => {
|
|
9
|
-
const request = indexedDB.open(name,
|
|
9
|
+
const request = indexedDB.open(name, 5);
|
|
10
10
|
request.onerror = () => {
|
|
11
11
|
reject(request.error);
|
|
12
12
|
};
|
|
@@ -40,6 +40,16 @@ export async function getIndexedDBStorage(name = DATABASE_NAME) {
|
|
|
40
40
|
keyPath: ["ses", "idx"],
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
+
if (ev.oldVersion <= 4) {
|
|
44
|
+
const unsyncedCoValues = db.createObjectStore("unsyncedCoValues", {
|
|
45
|
+
autoIncrement: true,
|
|
46
|
+
keyPath: "rowID",
|
|
47
|
+
});
|
|
48
|
+
unsyncedCoValues.createIndex("byCoValueId", "coValueId");
|
|
49
|
+
unsyncedCoValues.createIndex("uniqueUnsyncedCoValues", ["coValueId", "peerId"], {
|
|
50
|
+
unique: true,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
43
53
|
};
|
|
44
54
|
});
|
|
45
55
|
const db = await dbPromise;
|
package/dist/idbNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idbNode.js","sourceRoot":"","sources":["../src/idbNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,IAAI,aAAa,GAAG,cAAc,CAAC;AAEnC,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAI,GAAG,aAAa;IAC5D,MAAM,SAAS,GAAG,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7D,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE;YACrB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE;YACvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC;QACF,OAAO,CAAC,eAAe,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;YACrC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE;oBAChD,aAAa,EAAE,IAAI;oBACnB,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;gBAEH,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE;oBACzC,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;gBAEH,MAAM,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE;oBAChD,aAAa,EAAE,IAAI;oBACnB,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;gBAEH,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;gBACrD,QAAQ,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE;oBAC/D,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;gBAEH,EAAE,CAAC,iBAAiB,CAAC,cAAc,EAAE;oBACnC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;iBACxB,CAAC,CAAC;YACL,CAAC;YACD,IAAI,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;gBACvB,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;oBACrC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC;IAE3B,OAAO,IAAI,eAAe,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
1
|
+
{"version":3,"file":"idbNode.js","sourceRoot":"","sources":["../src/idbNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,IAAI,aAAa,GAAG,cAAc,CAAC;AAEnC,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAI,GAAG,aAAa;IAC5D,MAAM,SAAS,GAAG,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7D,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE;YACrB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE;YACvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC;QACF,OAAO,CAAC,eAAe,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;YACrC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE;oBAChD,aAAa,EAAE,IAAI;oBACnB,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;gBAEH,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE;oBACzC,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;gBAEH,MAAM,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE;oBAChD,aAAa,EAAE,IAAI;oBACnB,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;gBAEH,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;gBACrD,QAAQ,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE;oBAC/D,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;gBAEH,EAAE,CAAC,iBAAiB,CAAC,cAAc,EAAE;oBACnC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;iBACxB,CAAC,CAAC;YACL,CAAC;YACD,IAAI,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;gBACvB,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;oBACrC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;iBACxB,CAAC,CAAC;YACL,CAAC;YACD,IAAI,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,gBAAgB,GAAG,EAAE,CAAC,iBAAiB,CAAC,kBAAkB,EAAE;oBAChE,aAAa,EAAE,IAAI;oBACnB,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;gBACH,gBAAgB,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;gBACzD,gBAAgB,CAAC,WAAW,CAC1B,wBAAwB,EACxB,CAAC,WAAW,EAAE,QAAQ,CAAC,EACvB;oBACE,MAAM,EAAE,IAAI;iBACb,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC;IAE3B,OAAO,IAAI,eAAe,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -18,6 +18,13 @@ describe("CoJsonIDBTransaction", () => {
|
|
|
18
18
|
});
|
|
19
19
|
db.createObjectStore("transactions", { keyPath: "id" });
|
|
20
20
|
db.createObjectStore("signatureAfter", { keyPath: "id" });
|
|
21
|
+
const unsyncedCoValues = db.createObjectStore("unsyncedCoValues", {
|
|
22
|
+
keyPath: "rowID",
|
|
23
|
+
});
|
|
24
|
+
unsyncedCoValues.createIndex("byCoValueId", "coValueId");
|
|
25
|
+
unsyncedCoValues.createIndex("uniqueUnsyncedCoValues", ["coValueId", "peerId"], {
|
|
26
|
+
unique: true,
|
|
27
|
+
});
|
|
21
28
|
};
|
|
22
29
|
request.onsuccess = () => {
|
|
23
30
|
db = request.result;
|
|
@@ -121,5 +128,47 @@ describe("CoJsonIDBTransaction", () => {
|
|
|
121
128
|
}))).rejects.toThrow();
|
|
122
129
|
expect(badTx.failed).toBe(true);
|
|
123
130
|
});
|
|
131
|
+
test("transaction with custom stores only includes specified stores", async () => {
|
|
132
|
+
const tx = new CoJsonIDBTransaction(db, ["coValues", "sessions"]);
|
|
133
|
+
// Should work with included stores
|
|
134
|
+
await tx.handleRequest((tx) => tx.getObjectStore("coValues").put({
|
|
135
|
+
id: "test1",
|
|
136
|
+
value: "hello",
|
|
137
|
+
}));
|
|
138
|
+
await tx.handleRequest((tx) => tx.getObjectStore("sessions").put({
|
|
139
|
+
id: "session1",
|
|
140
|
+
data: "session data",
|
|
141
|
+
}));
|
|
142
|
+
// Should fail when trying to access a store not included in transaction
|
|
143
|
+
await expect(tx.handleRequest((tx) => tx.getObjectStore("transactions").put({
|
|
144
|
+
id: "tx1",
|
|
145
|
+
data: "tx data",
|
|
146
|
+
}))).rejects.toThrow("Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.");
|
|
147
|
+
});
|
|
148
|
+
test("if no custom stores are provided, transaction uses default stores", async () => {
|
|
149
|
+
const tx = new CoJsonIDBTransaction(db);
|
|
150
|
+
await tx.handleRequest((tx) => tx.getObjectStore("coValues").put({
|
|
151
|
+
id: "test1",
|
|
152
|
+
value: "hello",
|
|
153
|
+
}));
|
|
154
|
+
await tx.handleRequest((tx) => tx.getObjectStore("sessions").put({
|
|
155
|
+
id: "session1",
|
|
156
|
+
data: "session data",
|
|
157
|
+
}));
|
|
158
|
+
await tx.handleRequest((tx) => tx.getObjectStore("transactions").put({
|
|
159
|
+
id: "tx1",
|
|
160
|
+
data: "tx data",
|
|
161
|
+
}));
|
|
162
|
+
await tx.handleRequest((tx) => tx.getObjectStore("signatureAfter").put({
|
|
163
|
+
id: "sig1",
|
|
164
|
+
data: "sig data",
|
|
165
|
+
}));
|
|
166
|
+
// Should fail when trying to access unsyncedCoValues (not in default)
|
|
167
|
+
await expect(tx.handleRequest((tx) => tx.getObjectStore("unsyncedCoValues").put({
|
|
168
|
+
rowID: 1,
|
|
169
|
+
coValueId: "coValue1",
|
|
170
|
+
peerId: "peer1",
|
|
171
|
+
}))).rejects.toThrow("Failed to execute 'objectStore' on 'IDBTransaction': The specified object store was not found.");
|
|
172
|
+
});
|
|
124
173
|
});
|
|
125
174
|
//# sourceMappingURL=CoJsonIDBTransaction.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoJsonIDBTransaction.test.js","sourceRoot":"","sources":["../../src/tests/CoJsonIDBTransaction.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,YAAY,GAAG,6BAA6B,CAAC;AAEnD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,EAAe,CAAC;IAEpB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,uBAAuB;QACvB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAEhD,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE9C,OAAO,CAAC,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;gBAClC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC1B,qBAAqB;gBACrB,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,MAAM,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrE,QAAQ,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE;oBAC/D,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;gBACH,EAAE,CAAC,iBAAiB,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxD,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CoJsonIDBTransaction.test.js","sourceRoot":"","sources":["../../src/tests/CoJsonIDBTransaction.test.ts"],"names":[],"mappings":"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"}
|