@owney/sdk 0.6.6 → 0.6.7-beta.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/index.cjs CHANGED
@@ -535,7 +535,8 @@ var storage = () => {
535
535
  return null;
536
536
  }
537
537
  };
538
- var buildKey = (address, chainId) => `${KEY_PREFIX}:${address.toLowerCase()}:${chainId}`;
538
+ var buildKey = (address) => `${KEY_PREFIX}:${address.toLowerCase()}`;
539
+ var legacyKeyPrefix = (address) => `${KEY_PREFIX}:${address.toLowerCase()}:`;
539
540
  var isJwtExpired = (token) => {
540
541
  const parts = token.split(".");
541
542
  if (parts.length !== 3) return false;
@@ -552,9 +553,37 @@ var isJwtExpired = (token) => {
552
553
  };
553
554
  var memorySessions = /* @__PURE__ */ new Map();
554
555
  var isFreshSession = (session) => !!session && !!session.token && !isJwtExpired(session.token);
555
- var readSession = (address, chainId) => {
556
+ var readLegacySession = (store, address) => {
557
+ if (!store) return null;
558
+ const prefix = legacyKeyPrefix(address);
559
+ const legacyKeys = [];
560
+ try {
561
+ for (let i = 0; i < store.length; i++) {
562
+ const key = store.key(i);
563
+ if (key?.startsWith(prefix)) legacyKeys.push(key);
564
+ }
565
+ } catch {
566
+ return null;
567
+ }
568
+ let adopted = null;
569
+ for (const key of legacyKeys) {
570
+ if (!adopted) {
571
+ try {
572
+ const parsed = JSON.parse(store.getItem(key) ?? "");
573
+ if (isFreshSession(parsed)) adopted = parsed;
574
+ } catch {
575
+ }
576
+ }
577
+ try {
578
+ store.removeItem(key);
579
+ } catch {
580
+ }
581
+ }
582
+ return adopted;
583
+ };
584
+ var readSession = (address, _chainId) => {
556
585
  if (typeof window === "undefined") return null;
557
- const key = buildKey(address, chainId);
586
+ const key = buildKey(address);
558
587
  const store = storage();
559
588
  let raw = null;
560
589
  try {
@@ -575,14 +604,19 @@ var readSession = (address, chainId) => {
575
604
  }
576
605
  return null;
577
606
  }
607
+ const legacy = readLegacySession(store, address);
608
+ if (legacy) {
609
+ writeSession(address, _chainId, legacy);
610
+ return legacy;
611
+ }
578
612
  const cached = memorySessions.get(key);
579
613
  if (isFreshSession(cached)) return cached;
580
614
  if (cached) memorySessions.delete(key);
581
615
  return null;
582
616
  };
583
- var writeSession = (address, chainId, session) => {
617
+ var writeSession = (address, _chainId, session) => {
584
618
  if (typeof window === "undefined") return;
585
- const key = buildKey(address, chainId);
619
+ const key = buildKey(address);
586
620
  memorySessions.set(key, session);
587
621
  const store = storage();
588
622
  try {
@@ -590,14 +624,15 @@ var writeSession = (address, chainId, session) => {
590
624
  } catch {
591
625
  }
592
626
  };
593
- var clearSession = (address, chainId) => {
594
- const key = buildKey(address, chainId);
627
+ var clearSession = (address, _chainId) => {
628
+ const key = buildKey(address);
595
629
  memorySessions.delete(key);
596
630
  const store = storage();
597
631
  try {
598
632
  store?.removeItem(key);
599
633
  } catch {
600
634
  }
635
+ readLegacySession(store, address);
601
636
  };
602
637
 
603
638
  // src/agents/zyfai/autoSelect.ts
@@ -2718,11 +2753,39 @@ var storage2 = () => {
2718
2753
  return null;
2719
2754
  }
2720
2755
  };
2721
- var buildKey2 = (address, chainId) => `${KEY_PREFIX2}:${address.toLowerCase()}:${chainId}`;
2756
+ var buildKey2 = (address) => `${KEY_PREFIX2}:${address.toLowerCase()}`;
2757
+ var legacyKeyPrefix2 = (address) => `${KEY_PREFIX2}:${address.toLowerCase()}:`;
2722
2758
  var memorySiwxSessions = /* @__PURE__ */ new Map();
2759
+ var readLegacySiwxSession = (store, address) => {
2760
+ if (!store) return null;
2761
+ const prefix = legacyKeyPrefix2(address);
2762
+ const legacyKeys = [];
2763
+ try {
2764
+ for (let i = 0; i < store.length; i++) {
2765
+ const key = store.key(i);
2766
+ if (key?.startsWith(prefix)) legacyKeys.push(key);
2767
+ }
2768
+ } catch {
2769
+ return null;
2770
+ }
2771
+ let adopted = null;
2772
+ for (const key of legacyKeys) {
2773
+ if (!adopted) {
2774
+ try {
2775
+ adopted = JSON.parse(store.getItem(key) ?? "");
2776
+ } catch {
2777
+ }
2778
+ }
2779
+ try {
2780
+ store.removeItem(key);
2781
+ } catch {
2782
+ }
2783
+ }
2784
+ return adopted;
2785
+ };
2723
2786
  var readSiwxSession = (address, chainId) => {
2724
2787
  if (typeof window === "undefined") return null;
2725
- const key = buildKey2(address, chainId);
2788
+ const key = buildKey2(address);
2726
2789
  const store = storage2();
2727
2790
  let raw = null;
2728
2791
  try {
@@ -2742,11 +2805,16 @@ var readSiwxSession = (address, chainId) => {
2742
2805
  return null;
2743
2806
  }
2744
2807
  }
2808
+ const legacy = readLegacySiwxSession(store, address);
2809
+ if (legacy) {
2810
+ writeSiwxSession(address, chainId, legacy);
2811
+ return legacy;
2812
+ }
2745
2813
  return memorySiwxSessions.get(key) ?? null;
2746
2814
  };
2747
- var writeSiwxSession = (address, chainId, session) => {
2815
+ var writeSiwxSession = (address, _chainId, session) => {
2748
2816
  if (typeof window === "undefined") return;
2749
- const key = buildKey2(address, chainId);
2817
+ const key = buildKey2(address);
2750
2818
  memorySiwxSessions.set(key, session);
2751
2819
  const store = storage2();
2752
2820
  try {
@@ -2754,14 +2822,15 @@ var writeSiwxSession = (address, chainId, session) => {
2754
2822
  } catch {
2755
2823
  }
2756
2824
  };
2757
- var clearSiwxSession = (address, chainId) => {
2758
- const key = buildKey2(address, chainId);
2825
+ var clearSiwxSession = (address, _chainId) => {
2826
+ const key = buildKey2(address);
2759
2827
  memorySiwxSessions.delete(key);
2760
2828
  const store = storage2();
2761
2829
  try {
2762
2830
  store?.removeItem(key);
2763
2831
  } catch {
2764
2832
  }
2833
+ readLegacySiwxSession(store, address);
2765
2834
  };
2766
2835
 
2767
2836
  // src/agents/zyfai/zyfai.siwx.ts
@@ -2825,9 +2894,12 @@ function buildSIWXConfig(deps) {
2825
2894
  }
2826
2895
  if (!stored) return [];
2827
2896
  const session = {
2828
- // `stored.data.chainId` is a plain string in the cache (kept AppKit-free);
2829
- // it always holds a valid CaipNetworkId here, so narrow at the boundary.
2830
- data: stored.data,
2897
+ // `stored.data` is kept AppKit-free in the cache, so narrow at the
2898
+ // boundary. Echo the REQUESTED chain rather than the one originally
2899
+ // signed: the Zyfai JWT is account-scoped (no chain claim), so one
2900
+ // signature is valid for every chain, and AppKit would otherwise treat
2901
+ // the session as not covering the active network and re-prompt.
2902
+ data: { ...stored.data, chainId },
2831
2903
  message: stored.message,
2832
2904
  signature: stored.signature
2833
2905
  };
package/dist/index.js CHANGED
@@ -503,7 +503,8 @@ var storage = () => {
503
503
  return null;
504
504
  }
505
505
  };
506
- var buildKey = (address, chainId) => `${KEY_PREFIX}:${address.toLowerCase()}:${chainId}`;
506
+ var buildKey = (address) => `${KEY_PREFIX}:${address.toLowerCase()}`;
507
+ var legacyKeyPrefix = (address) => `${KEY_PREFIX}:${address.toLowerCase()}:`;
507
508
  var isJwtExpired = (token) => {
508
509
  const parts = token.split(".");
509
510
  if (parts.length !== 3) return false;
@@ -520,9 +521,37 @@ var isJwtExpired = (token) => {
520
521
  };
521
522
  var memorySessions = /* @__PURE__ */ new Map();
522
523
  var isFreshSession = (session) => !!session && !!session.token && !isJwtExpired(session.token);
523
- var readSession = (address, chainId) => {
524
+ var readLegacySession = (store, address) => {
525
+ if (!store) return null;
526
+ const prefix = legacyKeyPrefix(address);
527
+ const legacyKeys = [];
528
+ try {
529
+ for (let i = 0; i < store.length; i++) {
530
+ const key = store.key(i);
531
+ if (key?.startsWith(prefix)) legacyKeys.push(key);
532
+ }
533
+ } catch {
534
+ return null;
535
+ }
536
+ let adopted = null;
537
+ for (const key of legacyKeys) {
538
+ if (!adopted) {
539
+ try {
540
+ const parsed = JSON.parse(store.getItem(key) ?? "");
541
+ if (isFreshSession(parsed)) adopted = parsed;
542
+ } catch {
543
+ }
544
+ }
545
+ try {
546
+ store.removeItem(key);
547
+ } catch {
548
+ }
549
+ }
550
+ return adopted;
551
+ };
552
+ var readSession = (address, _chainId) => {
524
553
  if (typeof window === "undefined") return null;
525
- const key = buildKey(address, chainId);
554
+ const key = buildKey(address);
526
555
  const store = storage();
527
556
  let raw = null;
528
557
  try {
@@ -543,14 +572,19 @@ var readSession = (address, chainId) => {
543
572
  }
544
573
  return null;
545
574
  }
575
+ const legacy = readLegacySession(store, address);
576
+ if (legacy) {
577
+ writeSession(address, _chainId, legacy);
578
+ return legacy;
579
+ }
546
580
  const cached = memorySessions.get(key);
547
581
  if (isFreshSession(cached)) return cached;
548
582
  if (cached) memorySessions.delete(key);
549
583
  return null;
550
584
  };
551
- var writeSession = (address, chainId, session) => {
585
+ var writeSession = (address, _chainId, session) => {
552
586
  if (typeof window === "undefined") return;
553
- const key = buildKey(address, chainId);
587
+ const key = buildKey(address);
554
588
  memorySessions.set(key, session);
555
589
  const store = storage();
556
590
  try {
@@ -558,14 +592,15 @@ var writeSession = (address, chainId, session) => {
558
592
  } catch {
559
593
  }
560
594
  };
561
- var clearSession = (address, chainId) => {
562
- const key = buildKey(address, chainId);
595
+ var clearSession = (address, _chainId) => {
596
+ const key = buildKey(address);
563
597
  memorySessions.delete(key);
564
598
  const store = storage();
565
599
  try {
566
600
  store?.removeItem(key);
567
601
  } catch {
568
602
  }
603
+ readLegacySession(store, address);
569
604
  };
570
605
 
571
606
  // src/agents/zyfai/autoSelect.ts
@@ -2690,11 +2725,39 @@ var storage2 = () => {
2690
2725
  return null;
2691
2726
  }
2692
2727
  };
2693
- var buildKey2 = (address, chainId) => `${KEY_PREFIX2}:${address.toLowerCase()}:${chainId}`;
2728
+ var buildKey2 = (address) => `${KEY_PREFIX2}:${address.toLowerCase()}`;
2729
+ var legacyKeyPrefix2 = (address) => `${KEY_PREFIX2}:${address.toLowerCase()}:`;
2694
2730
  var memorySiwxSessions = /* @__PURE__ */ new Map();
2731
+ var readLegacySiwxSession = (store, address) => {
2732
+ if (!store) return null;
2733
+ const prefix = legacyKeyPrefix2(address);
2734
+ const legacyKeys = [];
2735
+ try {
2736
+ for (let i = 0; i < store.length; i++) {
2737
+ const key = store.key(i);
2738
+ if (key?.startsWith(prefix)) legacyKeys.push(key);
2739
+ }
2740
+ } catch {
2741
+ return null;
2742
+ }
2743
+ let adopted = null;
2744
+ for (const key of legacyKeys) {
2745
+ if (!adopted) {
2746
+ try {
2747
+ adopted = JSON.parse(store.getItem(key) ?? "");
2748
+ } catch {
2749
+ }
2750
+ }
2751
+ try {
2752
+ store.removeItem(key);
2753
+ } catch {
2754
+ }
2755
+ }
2756
+ return adopted;
2757
+ };
2695
2758
  var readSiwxSession = (address, chainId) => {
2696
2759
  if (typeof window === "undefined") return null;
2697
- const key = buildKey2(address, chainId);
2760
+ const key = buildKey2(address);
2698
2761
  const store = storage2();
2699
2762
  let raw = null;
2700
2763
  try {
@@ -2714,11 +2777,16 @@ var readSiwxSession = (address, chainId) => {
2714
2777
  return null;
2715
2778
  }
2716
2779
  }
2780
+ const legacy = readLegacySiwxSession(store, address);
2781
+ if (legacy) {
2782
+ writeSiwxSession(address, chainId, legacy);
2783
+ return legacy;
2784
+ }
2717
2785
  return memorySiwxSessions.get(key) ?? null;
2718
2786
  };
2719
- var writeSiwxSession = (address, chainId, session) => {
2787
+ var writeSiwxSession = (address, _chainId, session) => {
2720
2788
  if (typeof window === "undefined") return;
2721
- const key = buildKey2(address, chainId);
2789
+ const key = buildKey2(address);
2722
2790
  memorySiwxSessions.set(key, session);
2723
2791
  const store = storage2();
2724
2792
  try {
@@ -2726,14 +2794,15 @@ var writeSiwxSession = (address, chainId, session) => {
2726
2794
  } catch {
2727
2795
  }
2728
2796
  };
2729
- var clearSiwxSession = (address, chainId) => {
2730
- const key = buildKey2(address, chainId);
2797
+ var clearSiwxSession = (address, _chainId) => {
2798
+ const key = buildKey2(address);
2731
2799
  memorySiwxSessions.delete(key);
2732
2800
  const store = storage2();
2733
2801
  try {
2734
2802
  store?.removeItem(key);
2735
2803
  } catch {
2736
2804
  }
2805
+ readLegacySiwxSession(store, address);
2737
2806
  };
2738
2807
 
2739
2808
  // src/agents/zyfai/zyfai.siwx.ts
@@ -2797,9 +2866,12 @@ function buildSIWXConfig(deps) {
2797
2866
  }
2798
2867
  if (!stored) return [];
2799
2868
  const session = {
2800
- // `stored.data.chainId` is a plain string in the cache (kept AppKit-free);
2801
- // it always holds a valid CaipNetworkId here, so narrow at the boundary.
2802
- data: stored.data,
2869
+ // `stored.data` is kept AppKit-free in the cache, so narrow at the
2870
+ // boundary. Echo the REQUESTED chain rather than the one originally
2871
+ // signed: the Zyfai JWT is account-scoped (no chain claim), so one
2872
+ // signature is valid for every chain, and AppKit would otherwise treat
2873
+ // the session as not covering the active network and re-prompt.
2874
+ data: { ...stored.data, chainId },
2803
2875
  message: stored.message,
2804
2876
  signature: stored.signature
2805
2877
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owney/sdk",
3
- "version": "0.6.6",
3
+ "version": "0.6.7-beta.2",
4
4
  "type": "module",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",