@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.
@@ -435,20 +435,29 @@ var IndexedDBStorageProvider = class {
435
435
  // ===========================================================================
436
436
  async connect() {
437
437
  if (this.status === "connected" && this.db) return;
438
- this.status = "connecting";
439
- console.log(`[IndexedDBStorage] connect: opening db=${this.dbName}`);
440
- try {
441
- this.db = await Promise.race([
442
- this.openDatabase(),
443
- new Promise(
444
- (_, reject) => setTimeout(() => reject(new Error("IndexedDB open timed out after 5s")), 5e3)
445
- )
446
- ]);
447
- this.status = "connected";
448
- console.log(`[IndexedDBStorage] connect: connected to db=${this.dbName}`);
449
- } catch (error) {
450
- this.status = "error";
451
- throw new Error(`IndexedDB not available: ${error}`);
438
+ for (let attempt = 0; attempt < 2; attempt++) {
439
+ this.status = "connecting";
440
+ console.log(`[IndexedDBStorage] connect: opening db=${this.dbName}${attempt > 0 ? " (retry)" : ""}`);
441
+ try {
442
+ this.db = await Promise.race([
443
+ this.openDatabase(),
444
+ new Promise(
445
+ (_, reject) => setTimeout(() => reject(new Error("IndexedDB open timed out after 5s")), 5e3)
446
+ )
447
+ ]);
448
+ this.status = "connected";
449
+ console.log(`[IndexedDBStorage] connect: connected to db=${this.dbName}`);
450
+ return;
451
+ } catch (error) {
452
+ if (attempt === 0) {
453
+ console.warn(`[IndexedDBStorage] connect: open failed, retrying in 1s...`);
454
+ this.status = "disconnected";
455
+ await new Promise((r) => setTimeout(r, 1e3));
456
+ continue;
457
+ }
458
+ this.status = "error";
459
+ throw new Error(`IndexedDB not available: ${error}`);
460
+ }
452
461
  }
453
462
  }
454
463
  async disconnect() {
@@ -518,17 +527,22 @@ var IndexedDBStorageProvider = class {
518
527
  await new Promise((resolve) => {
519
528
  try {
520
529
  const req = indexedDB.deleteDatabase(this.dbName);
530
+ const timer = setTimeout(() => {
531
+ console.warn(`[IndexedDBStorage] clear: deleteDatabase timed out for db=${this.dbName}`);
532
+ resolve();
533
+ }, 5e3);
521
534
  req.onsuccess = () => {
535
+ clearTimeout(timer);
522
536
  console.log(`[IndexedDBStorage] clear: deleted db=${this.dbName}`);
523
537
  resolve();
524
538
  };
525
539
  req.onerror = () => {
540
+ clearTimeout(timer);
526
541
  console.warn(`[IndexedDBStorage] clear: error deleting db=${this.dbName}`, req.error);
527
542
  resolve();
528
543
  };
529
544
  req.onblocked = () => {
530
- console.warn(`[IndexedDBStorage] clear: deleteDatabase blocked for db=${this.dbName}`);
531
- resolve();
545
+ console.warn(`[IndexedDBStorage] clear: deleteDatabase blocked for db=${this.dbName}, waiting...`);
532
546
  };
533
547
  } catch {
534
548
  resolve();