Skip to content

Commit 80f458d

Browse files
Eliran Eretz-KedoshaEliran Eretz-Kedosha
authored andcommitted
Merge remote-tracking branch 'origin/master' into user/eleretzk/rethrow-errors
2 parents 3cd19cc + d113496 commit 80f458d

5 files changed

Lines changed: 308 additions & 27 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@microsoft/objectstoreprovider",
3-
"version": "0.9.0",
3+
"version": "0.9.1",
44
"description": "A cross-browser object store library",
55
"author": "DataStack Team eleretzk@microsoft.com",
66
"scripts": {

src/IndexedDbProvider.ts

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ export class IndexedDbProvider extends DbProvider {
159159
resolve(req.result);
160160
};
161161
req.onerror = (ev) => {
162-
reject(ev);
162+
reject((ev.target as IDBRequest)?.error ?? ev);
163163
};
164164
});
165165
}
@@ -596,27 +596,19 @@ export class IndexedDbProvider extends DbProvider {
596596
isCopyRequired: false,
597597
upgradeSteps,
598598
...upgradeMetadata,
599-
errorName: err?.target?.error?.name || "Unknown",
599+
errorName: err?.target?.error?.name || err?.name || "Unknown",
600600
errorMessage: err
601601
? `${
602602
err?.target?.error?.message || err?.message || "Unknown error"
603-
} (name: ${err?.target?.error?.name || "Unknown"})`
603+
} (name: ${err?.target?.error?.name || err?.name || "Unknown"})`
604604
: "Unknown error occurred during upgrade",
605605
});
606606
}
607607

608-
if (
609-
err &&
610-
err.type === "error" &&
611-
err.target &&
612-
err.target.error &&
613-
err.target.error.name === "VersionError"
614-
) {
608+
if (err instanceof DOMException && err.name === "VersionError") {
615609
if (!wipeIfExists) {
616610
this.logWriter.log(
617-
`Database version too new, Wiping: ${
618-
err.target.error.message || err.target.error.name
619-
}`
611+
`Database version too new, Wiping: ${err.message || err.name}`
620612
);
621613

622614
return this.open(dbName, schema, true, verbose);
@@ -625,7 +617,7 @@ export class IndexedDbProvider extends DbProvider {
625617
this.logWriter.error(
626618
`Error opening db, message: ${
627619
err?.target?.error?.message || err?.message || "Unknown error"
628-
}, name: ${err?.target?.error?.name || "Unknown"}`,
620+
}, name: ${err?.target?.error?.name || err?.name || "Unknown"}`,
629621
{
630622
dbName,
631623
}
@@ -751,7 +743,7 @@ export class IndexedDbProvider extends DbProvider {
751743
}
752744

753745
// DbTransaction implementation for the IndexedDB DbProvider.
754-
class IndexedDbTransaction implements DbTransaction {
746+
export class IndexedDbTransaction implements DbTransaction {
755747
private _stores: IDBObjectStore[];
756748

757749
constructor(
@@ -801,10 +793,12 @@ class IndexedDbTransaction implements DbTransaction {
801793

802794
lockHelper.transactionFailed(
803795
this._transToken,
804-
"IndexedDbTransaction OnError: " +
805-
errorDetail +
806-
", History: " +
807-
history.join(",")
796+
new Error(
797+
"IndexedDbTransaction OnError: " +
798+
errorDetail +
799+
", History: " +
800+
history.join(",")
801+
)
808802
);
809803
};
810804

@@ -826,10 +820,12 @@ class IndexedDbTransaction implements DbTransaction {
826820

827821
lockHelper.transactionFailed(
828822
this._transToken,
829-
"IndexedDbTransaction Aborted, Error: " +
830-
errorDetail +
831-
", History: " +
832-
history.join(",")
823+
new Error(
824+
"IndexedDbTransaction Aborted, Error: " +
825+
errorDetail +
826+
", History: " +
827+
history.join(",")
828+
)
833829
);
834830
};
835831
}

src/ObjectStoreProvider.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,10 @@ export abstract class DbProvider {
244244

245245
clearAllData(): Promise<void> {
246246
var storeNames = this._schema!!!.stores.map((store) => store.name);
247+
return this.clearStores(storeNames);
248+
}
247249

250+
clearStores(storeNames: string[]): Promise<void> {
248251
return this.openTransaction(storeNames, true).then((trans) => {
249252
const clearers = storeNames.map((storeName) => {
250253
const store = attempt(() => {

src/TransactionLockHelper.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ export class TransactionLockHelper {
170170
this._cleanTransaction(token);
171171
}
172172

173-
transactionFailed(token: TransactionToken, message: string) {
173+
transactionFailed(token: TransactionToken, message: string | Error) {
174174
const pendingTransIndex = findIndex(
175175
this._pendingTransactions,
176176
(trans) => trans.token === token
@@ -183,7 +183,9 @@ export class TransactionLockHelper {
183183
const toResolve = pendingTrans.completionDefer;
184184
this._pendingTransactions.splice(pendingTransIndex, 1);
185185
pendingTrans.completionDefer = undefined;
186-
toResolve.reject(new Error(message));
186+
toResolve.reject(
187+
message instanceof Error ? message : new Error(message)
188+
);
187189
} else {
188190
throw new Error(
189191
"Failing a transaction that has already been completed. Stores: " +

0 commit comments

Comments
 (0)