@unicitylabs/sphere-sdk 0.4.0 → 0.4.2

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.
@@ -376,6 +376,7 @@ var IndexedDBStorageProvider = class {
376
376
  async connect() {
377
377
  if (this.status === "connected" && this.db) return;
378
378
  this.status = "connecting";
379
+ console.log(`[IndexedDBStorage] connect: opening db=${this.dbName}`);
379
380
  try {
380
381
  this.db = await Promise.race([
381
382
  this.openDatabase(),
@@ -384,19 +385,19 @@ var IndexedDBStorageProvider = class {
384
385
  )
385
386
  ]);
386
387
  this.status = "connected";
387
- this.log("Connected to IndexedDB");
388
+ console.log(`[IndexedDBStorage] connect: connected to db=${this.dbName}`);
388
389
  } catch (error) {
389
390
  this.status = "error";
390
391
  throw new Error(`IndexedDB not available: ${error}`);
391
392
  }
392
393
  }
393
394
  async disconnect() {
395
+ console.log(`[IndexedDBStorage] disconnect: closing db=${this.dbName}, wasConnected=${!!this.db}`);
394
396
  if (this.db) {
395
397
  this.db.close();
396
398
  this.db = null;
397
399
  }
398
400
  this.status = "disconnected";
399
- this.log("Disconnected from IndexedDB");
400
401
  }
401
402
  isConnected() {
402
403
  return this.status === "connected" && this.db !== null;
@@ -448,6 +449,7 @@ var IndexedDBStorageProvider = class {
448
449
  }
449
450
  async clear(prefix) {
450
451
  if (!prefix) {
452
+ console.log(`[IndexedDBStorage] clear: starting, db=${this.dbName}, wasConnected=${!!this.db}`);
451
453
  if (this.db) {
452
454
  this.db.close();
453
455
  this.db = null;
@@ -456,9 +458,18 @@ var IndexedDBStorageProvider = class {
456
458
  await new Promise((resolve) => {
457
459
  try {
458
460
  const req = indexedDB.deleteDatabase(this.dbName);
459
- req.onsuccess = () => resolve();
460
- req.onerror = () => resolve();
461
- req.onblocked = () => resolve();
461
+ req.onsuccess = () => {
462
+ console.log(`[IndexedDBStorage] clear: deleted db=${this.dbName}`);
463
+ resolve();
464
+ };
465
+ req.onerror = () => {
466
+ console.warn(`[IndexedDBStorage] clear: error deleting db=${this.dbName}`, req.error);
467
+ resolve();
468
+ };
469
+ req.onblocked = () => {
470
+ console.warn(`[IndexedDBStorage] clear: deleteDatabase blocked for db=${this.dbName}`);
471
+ resolve();
472
+ };
462
473
  } catch {
463
474
  resolve();
464
475
  }
@@ -629,12 +640,19 @@ var IndexedDBTokenStorageProvider = class {
629
640
  const addressId = getAddressId(identity.directAddress);
630
641
  this.dbName = `${this.dbNamePrefix}-${addressId}`;
631
642
  }
643
+ console.log(`[IndexedDBTokenStorage] setIdentity \u2192 db=${this.dbName}`);
632
644
  }
633
645
  async initialize() {
634
646
  try {
647
+ if (this.db) {
648
+ console.log(`[IndexedDBTokenStorage] initialize: closing existing connection before re-open (db=${this.dbName})`);
649
+ this.db.close();
650
+ this.db = null;
651
+ }
652
+ console.log(`[IndexedDBTokenStorage] initialize: opening db=${this.dbName}`);
635
653
  this.db = await this.openDatabase();
636
654
  this.status = "connected";
637
- this.cleanupStaleDatabases();
655
+ console.log(`[IndexedDBTokenStorage] initialize: connected to db=${this.dbName}`);
638
656
  return true;
639
657
  } catch (error) {
640
658
  console.error("[IndexedDBTokenStorage] Failed to initialize:", error);
@@ -643,6 +661,7 @@ var IndexedDBTokenStorageProvider = class {
643
661
  }
644
662
  }
645
663
  async shutdown() {
664
+ console.log(`[IndexedDBTokenStorage] shutdown: closing db=${this.dbName}, wasConnected=${!!this.db}`);
646
665
  if (this.db) {
647
666
  this.db.close();
648
667
  this.db = null;
@@ -663,6 +682,7 @@ var IndexedDBTokenStorageProvider = class {
663
682
  }
664
683
  async load() {
665
684
  if (!this.db) {
685
+ console.warn(`[IndexedDBTokenStorage] load: db not initialized (db=${this.dbName})`);
666
686
  return {
667
687
  success: false,
668
688
  error: "Database not initialized",
@@ -711,6 +731,8 @@ var IndexedDBTokenStorageProvider = class {
711
731
  if (invalid) {
712
732
  data._invalid = invalid;
713
733
  }
734
+ const tokenKeys = Object.keys(data).filter((k) => k.startsWith("_") && !["_meta", "_tombstones", "_outbox", "_sent", "_invalid"].includes(k));
735
+ console.log(`[IndexedDBTokenStorage] load: db=${this.dbName}, tokens=${tokenKeys.length}`);
714
736
  return {
715
737
  success: true,
716
738
  data,
@@ -718,6 +740,7 @@ var IndexedDBTokenStorageProvider = class {
718
740
  timestamp: Date.now()
719
741
  };
720
742
  } catch (error) {
743
+ console.error(`[IndexedDBTokenStorage] load failed: db=${this.dbName}`, error);
721
744
  return {
722
745
  success: false,
723
746
  error: error instanceof Error ? error.message : "Unknown error",
@@ -728,6 +751,7 @@ var IndexedDBTokenStorageProvider = class {
728
751
  }
729
752
  async save(data) {
730
753
  if (!this.db) {
754
+ console.warn(`[IndexedDBTokenStorage] save: db not initialized (db=${this.dbName})`);
731
755
  return {
732
756
  success: false,
733
757
  error: "Database not initialized",
@@ -735,6 +759,9 @@ var IndexedDBTokenStorageProvider = class {
735
759
  };
736
760
  }
737
761
  try {
762
+ const tokenKeys = Object.keys(data).filter((k) => k.startsWith("_") && !["_meta", "_tombstones", "_outbox", "_sent", "_invalid"].includes(k));
763
+ const archivedKeys = Object.keys(data).filter((k) => k.startsWith("archived-"));
764
+ console.log(`[IndexedDBTokenStorage] save: db=${this.dbName}, tokens=${tokenKeys.length}, archived=${archivedKeys.length}, tombstones=${data._tombstones?.length ?? 0}`);
738
765
  await this.putToStore(STORE_META, "meta", data._meta);
739
766
  if (data._tombstones) {
740
767
  await this.putToStore(STORE_META, "tombstones", data._tombstones);
@@ -793,6 +820,7 @@ var IndexedDBTokenStorageProvider = class {
793
820
  }
794
821
  async clear() {
795
822
  try {
823
+ console.log(`[IndexedDBTokenStorage] clear: starting, db=${this.dbName}, wasConnected=${!!this.db}`);
796
824
  if (this.db) {
797
825
  this.db.close();
798
826
  this.db = null;
@@ -815,13 +843,21 @@ var IndexedDBTokenStorageProvider = class {
815
843
  } catch {
816
844
  }
817
845
  }
846
+ console.log(`[IndexedDBTokenStorage] clear: deleting ${dbNames.length} database(s):`, dbNames);
818
847
  await Promise.all(dbNames.map(
819
848
  (name) => new Promise((resolve) => {
820
849
  try {
821
850
  const req = indexedDB.deleteDatabase(name);
822
- req.onsuccess = () => resolve();
823
- req.onerror = () => resolve();
851
+ req.onsuccess = () => {
852
+ console.log(`[IndexedDBTokenStorage] clear: deleted db=${name}`);
853
+ resolve();
854
+ };
855
+ req.onerror = () => {
856
+ console.warn(`[IndexedDBTokenStorage] clear: error deleting db=${name}`, req.error);
857
+ resolve();
858
+ };
824
859
  req.onblocked = () => {
860
+ console.warn(`[IndexedDBTokenStorage] clear: deleteDatabase blocked for db=${name}`);
825
861
  resolve();
826
862
  };
827
863
  } catch {
@@ -829,6 +865,7 @@ var IndexedDBTokenStorageProvider = class {
829
865
  }
830
866
  })
831
867
  ));
868
+ console.log(`[IndexedDBTokenStorage] clear: done`);
832
869
  return true;
833
870
  } catch (err) {
834
871
  console.warn("[IndexedDBTokenStorage] clear() failed:", err);
@@ -838,26 +875,6 @@ var IndexedDBTokenStorageProvider = class {
838
875
  // =========================================================================
839
876
  // Private IndexedDB helpers
840
877
  // =========================================================================
841
- /**
842
- * Delete stale databases from other addresses (fire-and-forget, background).
843
- * Called after the current database is already open, so deleteDatabase
844
- * on other databases won't block anything.
845
- */
846
- cleanupStaleDatabases() {
847
- if (typeof indexedDB.databases !== "function") return;
848
- indexedDB.databases().then((dbs) => {
849
- for (const dbInfo of dbs) {
850
- if (dbInfo.name && dbInfo.name.startsWith(this.dbNamePrefix) && dbInfo.name !== this.dbName) {
851
- const req = indexedDB.deleteDatabase(dbInfo.name);
852
- req.onerror = () => {
853
- };
854
- req.onblocked = () => {
855
- };
856
- }
857
- }
858
- }).catch(() => {
859
- });
860
- }
861
878
  openDatabase() {
862
879
  return new Promise((resolve, reject) => {
863
880
  const request = indexedDB.open(this.dbName, DB_VERSION2);