@owney/sdk 0.6.6-beta.4 → 0.6.6-beta.6

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/index.cjs CHANGED
@@ -550,36 +550,52 @@ var isJwtExpired = (token) => {
550
550
  return false;
551
551
  }
552
552
  };
553
+ var memorySessions = /* @__PURE__ */ new Map();
554
+ var isFreshSession = (session) => !!session && !!session.token && !isJwtExpired(session.token);
553
555
  var readSession = (address, chainId) => {
556
+ if (typeof window === "undefined") return null;
557
+ const key = buildKey(address, chainId);
554
558
  const store = storage();
555
- if (!store) return null;
556
- const raw = store.getItem(buildKey(address, chainId));
557
- if (!raw) return null;
559
+ let raw = null;
558
560
  try {
559
- const parsed = JSON.parse(raw);
560
- if (!parsed.token || isJwtExpired(parsed.token)) {
561
- store.removeItem(buildKey(address, chainId));
562
- return null;
563
- }
564
- return parsed;
561
+ raw = store?.getItem(key) ?? null;
565
562
  } catch {
566
- store.removeItem(buildKey(address, chainId));
563
+ raw = null;
564
+ }
565
+ if (raw) {
566
+ try {
567
+ const parsed = JSON.parse(raw);
568
+ if (isFreshSession(parsed)) return parsed;
569
+ } catch {
570
+ }
571
+ memorySessions.delete(key);
572
+ try {
573
+ store?.removeItem(key);
574
+ } catch {
575
+ }
567
576
  return null;
568
577
  }
578
+ const cached = memorySessions.get(key);
579
+ if (isFreshSession(cached)) return cached;
580
+ if (cached) memorySessions.delete(key);
581
+ return null;
569
582
  };
570
583
  var writeSession = (address, chainId, session) => {
584
+ if (typeof window === "undefined") return;
585
+ const key = buildKey(address, chainId);
586
+ memorySessions.set(key, session);
571
587
  const store = storage();
572
- if (!store) return;
573
588
  try {
574
- store.setItem(buildKey(address, chainId), JSON.stringify(session));
589
+ store?.setItem(key, JSON.stringify(session));
575
590
  } catch {
576
591
  }
577
592
  };
578
593
  var clearSession = (address, chainId) => {
594
+ const key = buildKey(address, chainId);
595
+ memorySessions.delete(key);
579
596
  const store = storage();
580
- if (!store) return;
581
597
  try {
582
- store.removeItem(buildKey(address, chainId));
598
+ store?.removeItem(key);
583
599
  } catch {
584
600
  }
585
601
  };
@@ -625,6 +641,10 @@ var WETH_ADDRESS_BY_CHAIN = {
625
641
  1: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
626
642
  };
627
643
  var VIEM_CHAIN = { 8453: import_chains.base, 42161: import_chains.arbitrum, 1: import_chains.mainnet };
644
+ function isAlreadyActiveSessionKeyError(error) {
645
+ const message = error instanceof Error ? error.message : String(error);
646
+ return /already has an active session key/i.test(message);
647
+ }
628
648
  var ZyfaiAgent = class {
629
649
  id = "zyfai";
630
650
  supportedChainIds = [8453, 42161, 1];
@@ -898,7 +918,12 @@ var ZyfaiAgent = class {
898
918
  if (wasSessionKeyActivated(address, chainId)) return;
899
919
  const internals = this.sdk;
900
920
  internals.hasActiveSessionKey = false;
901
- await this.sdk.createSessionKey(address, chainId);
921
+ try {
922
+ await this.sdk.createSessionKey(address, chainId);
923
+ } catch (error) {
924
+ if (!isAlreadyActiveSessionKeyError(error)) throw error;
925
+ internals.hasActiveSessionKey = true;
926
+ }
902
927
  markSessionKeyActivated(address, chainId);
903
928
  }
904
929
  /** Connect + resolve smart wallet address for read operations. */
@@ -2702,31 +2727,47 @@ var storage2 = () => {
2702
2727
  }
2703
2728
  };
2704
2729
  var buildKey2 = (address, chainId) => `${KEY_PREFIX2}:${address.toLowerCase()}:${chainId}`;
2730
+ var memorySiwxSessions = /* @__PURE__ */ new Map();
2705
2731
  var readSiwxSession = (address, chainId) => {
2732
+ if (typeof window === "undefined") return null;
2733
+ const key = buildKey2(address, chainId);
2706
2734
  const store = storage2();
2707
- if (!store) return null;
2708
- const raw = store.getItem(buildKey2(address, chainId));
2709
- if (!raw) return null;
2735
+ let raw = null;
2710
2736
  try {
2711
- return JSON.parse(raw);
2737
+ raw = store?.getItem(key) ?? null;
2712
2738
  } catch {
2713
- store.removeItem(buildKey2(address, chainId));
2714
- return null;
2739
+ raw = null;
2715
2740
  }
2741
+ if (raw) {
2742
+ try {
2743
+ return JSON.parse(raw);
2744
+ } catch {
2745
+ memorySiwxSessions.delete(key);
2746
+ try {
2747
+ store?.removeItem(key);
2748
+ } catch {
2749
+ }
2750
+ return null;
2751
+ }
2752
+ }
2753
+ return memorySiwxSessions.get(key) ?? null;
2716
2754
  };
2717
2755
  var writeSiwxSession = (address, chainId, session) => {
2756
+ if (typeof window === "undefined") return;
2757
+ const key = buildKey2(address, chainId);
2758
+ memorySiwxSessions.set(key, session);
2718
2759
  const store = storage2();
2719
- if (!store) return;
2720
2760
  try {
2721
- store.setItem(buildKey2(address, chainId), JSON.stringify(session));
2761
+ store?.setItem(key, JSON.stringify(session));
2722
2762
  } catch {
2723
2763
  }
2724
2764
  };
2725
2765
  var clearSiwxSession = (address, chainId) => {
2766
+ const key = buildKey2(address, chainId);
2767
+ memorySiwxSessions.delete(key);
2726
2768
  const store = storage2();
2727
- if (!store) return;
2728
2769
  try {
2729
- store.removeItem(buildKey2(address, chainId));
2770
+ store?.removeItem(key);
2730
2771
  } catch {
2731
2772
  }
2732
2773
  };
package/dist/index.js CHANGED
@@ -518,36 +518,52 @@ var isJwtExpired = (token) => {
518
518
  return false;
519
519
  }
520
520
  };
521
+ var memorySessions = /* @__PURE__ */ new Map();
522
+ var isFreshSession = (session) => !!session && !!session.token && !isJwtExpired(session.token);
521
523
  var readSession = (address, chainId) => {
524
+ if (typeof window === "undefined") return null;
525
+ const key = buildKey(address, chainId);
522
526
  const store = storage();
523
- if (!store) return null;
524
- const raw = store.getItem(buildKey(address, chainId));
525
- if (!raw) return null;
527
+ let raw = null;
526
528
  try {
527
- const parsed = JSON.parse(raw);
528
- if (!parsed.token || isJwtExpired(parsed.token)) {
529
- store.removeItem(buildKey(address, chainId));
530
- return null;
531
- }
532
- return parsed;
529
+ raw = store?.getItem(key) ?? null;
533
530
  } catch {
534
- store.removeItem(buildKey(address, chainId));
531
+ raw = null;
532
+ }
533
+ if (raw) {
534
+ try {
535
+ const parsed = JSON.parse(raw);
536
+ if (isFreshSession(parsed)) return parsed;
537
+ } catch {
538
+ }
539
+ memorySessions.delete(key);
540
+ try {
541
+ store?.removeItem(key);
542
+ } catch {
543
+ }
535
544
  return null;
536
545
  }
546
+ const cached = memorySessions.get(key);
547
+ if (isFreshSession(cached)) return cached;
548
+ if (cached) memorySessions.delete(key);
549
+ return null;
537
550
  };
538
551
  var writeSession = (address, chainId, session) => {
552
+ if (typeof window === "undefined") return;
553
+ const key = buildKey(address, chainId);
554
+ memorySessions.set(key, session);
539
555
  const store = storage();
540
- if (!store) return;
541
556
  try {
542
- store.setItem(buildKey(address, chainId), JSON.stringify(session));
557
+ store?.setItem(key, JSON.stringify(session));
543
558
  } catch {
544
559
  }
545
560
  };
546
561
  var clearSession = (address, chainId) => {
562
+ const key = buildKey(address, chainId);
563
+ memorySessions.delete(key);
547
564
  const store = storage();
548
- if (!store) return;
549
565
  try {
550
- store.removeItem(buildKey(address, chainId));
566
+ store?.removeItem(key);
551
567
  } catch {
552
568
  }
553
569
  };
@@ -593,6 +609,10 @@ var WETH_ADDRESS_BY_CHAIN = {
593
609
  1: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
594
610
  };
595
611
  var VIEM_CHAIN = { 8453: base, 42161: arbitrum, 1: mainnet };
612
+ function isAlreadyActiveSessionKeyError(error) {
613
+ const message = error instanceof Error ? error.message : String(error);
614
+ return /already has an active session key/i.test(message);
615
+ }
596
616
  var ZyfaiAgent = class {
597
617
  id = "zyfai";
598
618
  supportedChainIds = [8453, 42161, 1];
@@ -866,7 +886,12 @@ var ZyfaiAgent = class {
866
886
  if (wasSessionKeyActivated(address, chainId)) return;
867
887
  const internals = this.sdk;
868
888
  internals.hasActiveSessionKey = false;
869
- await this.sdk.createSessionKey(address, chainId);
889
+ try {
890
+ await this.sdk.createSessionKey(address, chainId);
891
+ } catch (error) {
892
+ if (!isAlreadyActiveSessionKeyError(error)) throw error;
893
+ internals.hasActiveSessionKey = true;
894
+ }
870
895
  markSessionKeyActivated(address, chainId);
871
896
  }
872
897
  /** Connect + resolve smart wallet address for read operations. */
@@ -2674,31 +2699,47 @@ var storage2 = () => {
2674
2699
  }
2675
2700
  };
2676
2701
  var buildKey2 = (address, chainId) => `${KEY_PREFIX2}:${address.toLowerCase()}:${chainId}`;
2702
+ var memorySiwxSessions = /* @__PURE__ */ new Map();
2677
2703
  var readSiwxSession = (address, chainId) => {
2704
+ if (typeof window === "undefined") return null;
2705
+ const key = buildKey2(address, chainId);
2678
2706
  const store = storage2();
2679
- if (!store) return null;
2680
- const raw = store.getItem(buildKey2(address, chainId));
2681
- if (!raw) return null;
2707
+ let raw = null;
2682
2708
  try {
2683
- return JSON.parse(raw);
2709
+ raw = store?.getItem(key) ?? null;
2684
2710
  } catch {
2685
- store.removeItem(buildKey2(address, chainId));
2686
- return null;
2711
+ raw = null;
2687
2712
  }
2713
+ if (raw) {
2714
+ try {
2715
+ return JSON.parse(raw);
2716
+ } catch {
2717
+ memorySiwxSessions.delete(key);
2718
+ try {
2719
+ store?.removeItem(key);
2720
+ } catch {
2721
+ }
2722
+ return null;
2723
+ }
2724
+ }
2725
+ return memorySiwxSessions.get(key) ?? null;
2688
2726
  };
2689
2727
  var writeSiwxSession = (address, chainId, session) => {
2728
+ if (typeof window === "undefined") return;
2729
+ const key = buildKey2(address, chainId);
2730
+ memorySiwxSessions.set(key, session);
2690
2731
  const store = storage2();
2691
- if (!store) return;
2692
2732
  try {
2693
- store.setItem(buildKey2(address, chainId), JSON.stringify(session));
2733
+ store?.setItem(key, JSON.stringify(session));
2694
2734
  } catch {
2695
2735
  }
2696
2736
  };
2697
2737
  var clearSiwxSession = (address, chainId) => {
2738
+ const key = buildKey2(address, chainId);
2739
+ memorySiwxSessions.delete(key);
2698
2740
  const store = storage2();
2699
- if (!store) return;
2700
2741
  try {
2701
- store.removeItem(buildKey2(address, chainId));
2742
+ store?.removeItem(key);
2702
2743
  } catch {
2703
2744
  }
2704
2745
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owney/sdk",
3
- "version": "0.6.6-beta.4",
3
+ "version": "0.6.6-beta.6",
4
4
  "type": "module",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",