@unicitylabs/sphere-sdk 0.4.2 → 0.4.3

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.
@@ -375,20 +375,29 @@ var IndexedDBStorageProvider = class {
375
375
  // ===========================================================================
376
376
  async connect() {
377
377
  if (this.status === "connected" && this.db) return;
378
- this.status = "connecting";
379
- console.log(`[IndexedDBStorage] connect: opening db=${this.dbName}`);
380
- try {
381
- this.db = await Promise.race([
382
- this.openDatabase(),
383
- new Promise(
384
- (_, reject) => setTimeout(() => reject(new Error("IndexedDB open timed out after 5s")), 5e3)
385
- )
386
- ]);
387
- this.status = "connected";
388
- console.log(`[IndexedDBStorage] connect: connected to db=${this.dbName}`);
389
- } catch (error) {
390
- this.status = "error";
391
- throw new Error(`IndexedDB not available: ${error}`);
378
+ for (let attempt = 0; attempt < 2; attempt++) {
379
+ this.status = "connecting";
380
+ console.log(`[IndexedDBStorage] connect: opening db=${this.dbName}${attempt > 0 ? " (retry)" : ""}`);
381
+ try {
382
+ this.db = await Promise.race([
383
+ this.openDatabase(),
384
+ new Promise(
385
+ (_, reject) => setTimeout(() => reject(new Error("IndexedDB open timed out after 5s")), 5e3)
386
+ )
387
+ ]);
388
+ this.status = "connected";
389
+ console.log(`[IndexedDBStorage] connect: connected to db=${this.dbName}`);
390
+ return;
391
+ } catch (error) {
392
+ if (attempt === 0) {
393
+ console.warn(`[IndexedDBStorage] connect: open failed, retrying in 1s...`);
394
+ this.status = "disconnected";
395
+ await new Promise((r) => setTimeout(r, 1e3));
396
+ continue;
397
+ }
398
+ this.status = "error";
399
+ throw new Error(`IndexedDB not available: ${error}`);
400
+ }
392
401
  }
393
402
  }
394
403
  async disconnect() {
@@ -458,17 +467,22 @@ var IndexedDBStorageProvider = class {
458
467
  await new Promise((resolve) => {
459
468
  try {
460
469
  const req = indexedDB.deleteDatabase(this.dbName);
470
+ const timer = setTimeout(() => {
471
+ console.warn(`[IndexedDBStorage] clear: deleteDatabase timed out for db=${this.dbName}`);
472
+ resolve();
473
+ }, 5e3);
461
474
  req.onsuccess = () => {
475
+ clearTimeout(timer);
462
476
  console.log(`[IndexedDBStorage] clear: deleted db=${this.dbName}`);
463
477
  resolve();
464
478
  };
465
479
  req.onerror = () => {
480
+ clearTimeout(timer);
466
481
  console.warn(`[IndexedDBStorage] clear: error deleting db=${this.dbName}`, req.error);
467
482
  resolve();
468
483
  };
469
484
  req.onblocked = () => {
470
- console.warn(`[IndexedDBStorage] clear: deleteDatabase blocked for db=${this.dbName}`);
471
- resolve();
485
+ console.warn(`[IndexedDBStorage] clear: deleteDatabase blocked for db=${this.dbName}, waiting...`);
472
486
  };
473
487
  } catch {
474
488
  resolve();