@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.
- package/dist/connect/index.cjs +78 -2
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.cts +16 -0
- package/dist/connect/index.d.ts +16 -0
- package/dist/connect/index.js +78 -2
- package/dist/connect/index.js.map +1 -1
- package/dist/core/index.cjs +63 -41
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +7 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.js +63 -41
- package/dist/core/index.js.map +1 -1
- package/dist/impl/browser/connect/index.cjs +11 -2
- package/dist/impl/browser/connect/index.cjs.map +1 -1
- package/dist/impl/browser/connect/index.js +11 -2
- package/dist/impl/browser/connect/index.js.map +1 -1
- package/dist/impl/browser/index.cjs +45 -28
- package/dist/impl/browser/index.cjs.map +1 -1
- package/dist/impl/browser/index.js +45 -28
- package/dist/impl/browser/index.js.map +1 -1
- package/dist/impl/nodejs/connect/index.cjs +11 -2
- package/dist/impl/nodejs/connect/index.cjs.map +1 -1
- package/dist/impl/nodejs/connect/index.js +11 -2
- package/dist/impl/nodejs/connect/index.js.map +1 -1
- package/dist/index.cjs +63 -41
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +63 -41
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
-
|
|
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 = () =>
|
|
460
|
-
|
|
461
|
-
|
|
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.
|
|
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 = () =>
|
|
823
|
-
|
|
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);
|