@meshconnect/uwc-bridge-parent 0.0.2 → 1.0.0

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.
@@ -47,6 +47,8 @@ export interface ParentAPI {
47
47
  export declare class BridgeParent {
48
48
  private iframe;
49
49
  private handshakeComplete;
50
+ private parentAPI;
51
+ private endpoint;
50
52
  constructor(iframe: HTMLIFrameElement);
51
53
  private initializeConnection;
52
54
  isConnected(): boolean;
@@ -54,5 +56,6 @@ export declare class BridgeParent {
54
56
  private getSolanaWallets;
55
57
  private isSolanaWallet;
56
58
  private generateWalletId;
59
+ destroy(): void;
57
60
  }
58
61
  //# sourceMappingURL=BridgeParent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BridgeParent.d.ts","sourceRoot":"","sources":["../src/BridgeParent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAOhE,MAAM,WAAW,gBAAgB;IAE/B,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAEvE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;IAE/D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;CAC5E;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,EAAE,aAAa,GAAG,SAAS,CAAA;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAA;IACzB,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,4BAA6B,SAAQ,WAAW;IAC/D,IAAI,EAAE,0BAA0B,CAAA;IAChC,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AAED,MAAM,WAAW,2BAA4B,SAAQ,KAAK;IACxD,IAAI,EAAE,yBAAyB,CAAA;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,cAAc,EAAE,CAAA;IAChC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,qBAAqB,EAAE,kBAAkB,EAAE,CAAA;IAC3C,0BAA0B,EAAE,OAAO,CAAA;CACpC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,iBAAiB,CAAQ;gBAErB,MAAM,EAAE,iBAAiB;YASvB,oBAAoB;IA0BlC,WAAW,IAAI,OAAO;YAIR,eAAe;IA2C7B,OAAO,CAAC,gBAAgB;IAyDxB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,gBAAgB;CAIzB"}
1
+ {"version":3,"file":"BridgeParent.d.ts","sourceRoot":"","sources":["../src/BridgeParent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAMhE,MAAM,WAAW,gBAAgB;IAE/B,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAEvE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;IAE/D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;CAC5E;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,EAAE,aAAa,GAAG,SAAS,CAAA;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAA;IACzB,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,4BAA6B,SAAQ,WAAW;IAC/D,IAAI,EAAE,0BAA0B,CAAA;IAChC,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AAED,MAAM,WAAW,2BAA4B,SAAQ,KAAK;IACxD,IAAI,EAAE,yBAAyB,CAAA;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,cAAc,EAAE,CAAA;IAChC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,qBAAqB,EAAE,kBAAkB,EAAE,CAAA;IAC3C,0BAA0B,EAAE,OAAO,CAAA;CACpC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAgC;gBAEpC,MAAM,EAAE,iBAAiB;YASvB,oBAAoB;IA2BlC,WAAW,IAAI,OAAO;YAIR,eAAe;IA2C7B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,gBAAgB;IAKjB,OAAO,IAAI,IAAI;CAYvB"}
@@ -2,10 +2,11 @@ import * as Comlink from 'comlink';
2
2
  import { getWallets } from '@wallet-standard/app';
3
3
  import { isWalletAdapterCompatibleStandardWallet } from '@solana/wallet-adapter-base';
4
4
  import { StandardWalletAdapter } from '@solana/wallet-standard-wallet-adapter-base';
5
- import { CoinbaseWalletAdapter } from '@solana/wallet-adapter-wallets';
6
5
  export class BridgeParent {
7
6
  iframe;
8
7
  handshakeComplete = false;
8
+ parentAPI = null;
9
+ endpoint = null;
9
10
  constructor(iframe) {
10
11
  if (!iframe) {
11
12
  throw new Error('BridgeParent requires an iframe element');
@@ -15,13 +16,12 @@ export class BridgeParent {
15
16
  }
16
17
  async initializeConnection() {
17
18
  // Wait for iframe to be ready
18
- if (!this.iframe.contentWindow) {
19
+ if (!this.iframe || !this.iframe.contentWindow) {
19
20
  return;
20
21
  }
21
22
  const eip6963Wallets = await this.discoverWallets();
22
23
  const walletStandardWallets = this.getSolanaWallets();
23
- // Expose the parent API directly
24
- const parentAPI = {
24
+ this.parentAPI = {
25
25
  eip6963Wallets: eip6963Wallets,
26
26
  eip6963WalletsReady: true,
27
27
  walletStandardWallets: walletStandardWallets,
@@ -29,7 +29,8 @@ export class BridgeParent {
29
29
  };
30
30
  // Use Comlink's windowEndpoint with proper cross-origin support
31
31
  // For cross-origin, we need to listen on the parent window, not access the iframe's window
32
- Comlink.expose(parentAPI, Comlink.windowEndpoint(this.iframe.contentWindow, window, '*'));
32
+ this.endpoint = Comlink.windowEndpoint(this.iframe.contentWindow, window, '*');
33
+ Comlink.expose(this.parentAPI, this.endpoint);
33
34
  this.handshakeComplete = true;
34
35
  }
35
36
  isConnected() {
@@ -89,29 +90,7 @@ export class BridgeParent {
89
90
  walletNames.add(wallet.name);
90
91
  }
91
92
  }
92
- // Initialize traditional wallet adapters - Only import CBW for now, as it's not using Wallet Standard
93
- const walletAdapters = [new CoinbaseWalletAdapter()];
94
- // Add traditional wallet adapters (but skip duplicates)
95
- for (const adapter of walletAdapters) {
96
- if (walletNames.has(adapter.name)) {
97
- // Skipping duplicate wallet already detected via Wallet Standard
98
- continue;
99
- }
100
- const readyState = adapter.readyState;
101
- const isDetected = readyState === 'Installed' || readyState === 'Loadable';
102
- // Only add if installed
103
- if (isDetected) {
104
- solanaWallets.push({
105
- uuid: `${adapter.name}-traditional`
106
- .toLowerCase()
107
- .replace(/\s+/g, '-'),
108
- name: adapter.name,
109
- chains: ['solana:mainnet'],
110
- features: [],
111
- adapter: adapter
112
- });
113
- }
114
- }
93
+ // Removed CBW integration see https://github.com/FrontFin/universal-wallet-connector/pull/19
115
94
  return solanaWallets;
116
95
  }
117
96
  isSolanaWallet(wallet) {
@@ -123,5 +102,15 @@ export class BridgeParent {
123
102
  const chain = wallet.chains?.[0] || 'unknown';
124
103
  return `${wallet.name}-${chain}`.toLowerCase().replace(/\s+/g, '-');
125
104
  }
105
+ destroy() {
106
+ this.handshakeComplete = false;
107
+ if (this.parentAPI) {
108
+ this.parentAPI.eip6963Wallets = [];
109
+ this.parentAPI.walletStandardWallets = [];
110
+ this.parentAPI = null;
111
+ }
112
+ this.endpoint = null;
113
+ this.iframe = null;
114
+ }
126
115
  }
127
116
  //# sourceMappingURL=BridgeParent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BridgeParent.js","sourceRoot":"","sources":["../src/BridgeParent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BridgeParent.js","sourceRoot":"","sources":["../src/BridgeParent.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshconnect/uwc-bridge-parent",
3
- "version": "0.0.2",
3
+ "version": "1.0.0",
4
4
  "description": "Parent window bridge for Universal Wallet Connector",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -12,15 +12,13 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@solana/wallet-adapter-base": "^0.9.23",
15
- "@solana/wallet-adapter-wallets": "^0.19.37",
16
15
  "@solana/wallet-standard-wallet-adapter-base": "^1.1.4",
17
16
  "@wallet-standard/app": "^1.1.0",
18
17
  "@wallet-standard/base": "^1.1.0",
19
18
  "comlink": "^4.4.1"
20
19
  },
21
20
  "devDependencies": {
22
- "eslint": "^8.56.0",
23
- "typescript": "^5.3.3"
21
+ "typescript": "^5.9.2"
24
22
  },
25
23
  "files": [
26
24
  "dist",
@@ -30,7 +28,7 @@
30
28
  "scripts": {
31
29
  "build": "tsc",
32
30
  "dev": "tsc --watch",
33
- "lint": "eslint src",
31
+ "lint": "eslint src --ext .ts,.tsx",
34
32
  "type-check": "tsc --noEmit"
35
33
  }
36
34
  }
@@ -4,7 +4,6 @@ import type { Wallet } from '@wallet-standard/base'
4
4
  import { getWallets } from '@wallet-standard/app'
5
5
  import { isWalletAdapterCompatibleStandardWallet } from '@solana/wallet-adapter-base'
6
6
  import { StandardWalletAdapter } from '@solana/wallet-standard-wallet-adapter-base'
7
- import { CoinbaseWalletAdapter } from '@solana/wallet-adapter-wallets'
8
7
 
9
8
  export interface EthereumProvider {
10
9
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -60,8 +59,10 @@ export interface ParentAPI {
60
59
  }
61
60
 
62
61
  export class BridgeParent {
63
- private iframe: HTMLIFrameElement
62
+ private iframe: HTMLIFrameElement | null
64
63
  private handshakeComplete = false
64
+ private parentAPI: ParentAPI | null = null
65
+ private endpoint: Comlink.Endpoint | null = null
65
66
 
66
67
  constructor(iframe: HTMLIFrameElement) {
67
68
  if (!iframe) {
@@ -74,14 +75,13 @@ export class BridgeParent {
74
75
 
75
76
  private async initializeConnection(): Promise<void> {
76
77
  // Wait for iframe to be ready
77
- if (!this.iframe.contentWindow) {
78
+ if (!this.iframe || !this.iframe.contentWindow) {
78
79
  return
79
80
  }
80
81
 
81
82
  const eip6963Wallets = await this.discoverWallets()
82
83
  const walletStandardWallets = this.getSolanaWallets()
83
- // Expose the parent API directly
84
- const parentAPI: ParentAPI = {
84
+ this.parentAPI = {
85
85
  eip6963Wallets: eip6963Wallets,
86
86
  eip6963WalletsReady: true,
87
87
  walletStandardWallets: walletStandardWallets,
@@ -90,10 +90,12 @@ export class BridgeParent {
90
90
 
91
91
  // Use Comlink's windowEndpoint with proper cross-origin support
92
92
  // For cross-origin, we need to listen on the parent window, not access the iframe's window
93
- Comlink.expose(
94
- parentAPI,
95
- Comlink.windowEndpoint(this.iframe.contentWindow, window, '*')
93
+ this.endpoint = Comlink.windowEndpoint(
94
+ this.iframe.contentWindow,
95
+ window,
96
+ '*'
96
97
  )
98
+ Comlink.expose(this.parentAPI, this.endpoint)
97
99
 
98
100
  this.handshakeComplete = true
99
101
  }
@@ -172,33 +174,7 @@ export class BridgeParent {
172
174
  walletNames.add(wallet.name)
173
175
  }
174
176
  }
175
-
176
- // Initialize traditional wallet adapters - Only import CBW for now, as it's not using Wallet Standard
177
- const walletAdapters = [new CoinbaseWalletAdapter()]
178
-
179
- // Add traditional wallet adapters (but skip duplicates)
180
- for (const adapter of walletAdapters) {
181
- if (walletNames.has(adapter.name)) {
182
- // Skipping duplicate wallet already detected via Wallet Standard
183
- continue
184
- }
185
-
186
- const readyState = adapter.readyState
187
- const isDetected = readyState === 'Installed' || readyState === 'Loadable'
188
-
189
- // Only add if installed
190
- if (isDetected) {
191
- solanaWallets.push({
192
- uuid: `${adapter.name}-traditional`
193
- .toLowerCase()
194
- .replace(/\s+/g, '-'),
195
- name: adapter.name,
196
- chains: ['solana:mainnet'],
197
- features: [],
198
- adapter: adapter
199
- })
200
- }
201
- }
177
+ // Removed CBW integration see https://github.com/FrontFin/universal-wallet-connector/pull/19
202
178
  return solanaWallets
203
179
  }
204
180
 
@@ -213,4 +189,17 @@ export class BridgeParent {
213
189
  const chain = wallet.chains?.[0] || 'unknown'
214
190
  return `${wallet.name}-${chain}`.toLowerCase().replace(/\s+/g, '-')
215
191
  }
192
+
193
+ public destroy(): void {
194
+ this.handshakeComplete = false
195
+
196
+ if (this.parentAPI) {
197
+ this.parentAPI.eip6963Wallets = []
198
+ this.parentAPI.walletStandardWallets = []
199
+ this.parentAPI = null
200
+ }
201
+ this.endpoint = null
202
+
203
+ this.iframe = null
204
+ }
216
205
  }
@@ -1,27 +0,0 @@
1
- import type { Wallet } from '@wallet-standard/base';
2
- import type { DetectedEip6963Wallet, DetectedWalletStandardWallet, EIP6963AnnounceProviderEvent, EIP6963ProviderDetail } from './types';
3
- import { StandardWalletAdapter } from './standard-wallet-adapter';
4
- declare global {
5
- interface WindowEventMap {
6
- 'eip6963:announceProvider': EIP6963AnnounceProviderEvent;
7
- 'eip6963:requestProvider': Event;
8
- }
9
- }
10
- export declare class BridgeParent {
11
- private detectedEip6963Wallets;
12
- private detectedWalletStandardWallets;
13
- private walletStandardUnsubscribe?;
14
- constructor();
15
- private initialize;
16
- private detectEIP6963Wallets;
17
- private detectWalletStandardWallets;
18
- private logAllWallets;
19
- getDetectedEip6963Wallets(): Map<string, DetectedEip6963Wallet>;
20
- getDetectedWalletStandardWallets(): Map<string, DetectedWalletStandardWallet>;
21
- getEIP6963Providers(): Map<string, EIP6963ProviderDetail>;
22
- getWalletStandardWallets(): Map<string, Wallet>;
23
- getWalletStandardAdapters(): Map<string, StandardWalletAdapter>;
24
- getWalletStandardAdapter(walletName: string): StandardWalletAdapter | undefined;
25
- refreshDetection(): void;
26
- }
27
- //# sourceMappingURL=bridge-parent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bridge-parent.d.ts","sourceRoot":"","sources":["../src/bridge-parent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,4BAA4B,EAC5B,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAEjE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,cAAc;QACtB,0BAA0B,EAAE,4BAA4B,CAAA;QACxD,yBAAyB,EAAE,KAAK,CAAA;KACjC;CACF;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,sBAAsB,CAAgD;IAC9E,OAAO,CAAC,6BAA6B,CAGxB;IACb,OAAO,CAAC,yBAAyB,CAAC,CAAY;;IAM9C,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,2BAA2B;IA8DnC,OAAO,CAAC,aAAa;IAkCd,yBAAyB,IAAI,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAI/D,gCAAgC,IAAI,GAAG,CAC5C,MAAM,EACN,4BAA4B,CAC7B;IAKM,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAQzD,wBAAwB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ/C,yBAAyB,IAAI,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAQ/D,wBAAwB,CAC7B,UAAU,EAAE,MAAM,GACjB,qBAAqB,GAAG,SAAS;IAK7B,gBAAgB,IAAI,IAAI;CAUhC"}
@@ -1,148 +0,0 @@
1
- import { getWallets } from '@wallet-standard/app';
2
- import { StandardWalletAdapter } from './standard-wallet-adapter';
3
- export class BridgeParent {
4
- detectedEip6963Wallets = new Map();
5
- detectedWalletStandardWallets = new Map();
6
- walletStandardUnsubscribe;
7
- constructor() {
8
- this.initialize();
9
- }
10
- initialize() {
11
- this.detectEIP6963Wallets();
12
- this.detectWalletStandardWallets();
13
- this.logAllWallets();
14
- }
15
- detectEIP6963Wallets() {
16
- if (typeof window === 'undefined') {
17
- console.warn('BridgeParent: Window is not available, skipping EIP-6963 detection');
18
- return;
19
- }
20
- const handleAnnouncement = (event) => {
21
- const { info, provider } = event.detail;
22
- const detectedWallet = {
23
- info,
24
- provider
25
- };
26
- this.detectedEip6963Wallets.set(info.uuid, detectedWallet);
27
- console.log(`EIP-6963 wallet detected:`, info, provider);
28
- };
29
- window.addEventListener('eip6963:announceProvider', handleAnnouncement);
30
- window.dispatchEvent(new Event('eip6963:requestProvider'));
31
- setTimeout(() => {
32
- window.removeEventListener('eip6963:announceProvider', handleAnnouncement);
33
- }, 3000);
34
- }
35
- detectWalletStandardWallets() {
36
- if (typeof window === 'undefined') {
37
- console.warn('BridgeParent: Window is not available, skipping Wallet Standard detection');
38
- return;
39
- }
40
- try {
41
- const { get, on } = getWallets();
42
- const handleWallet = (wallet) => {
43
- // Create adapter for the wallet
44
- const adapter = new StandardWalletAdapter(wallet);
45
- // Only add Solana wallets
46
- if (!adapter.isSolana) {
47
- console.log(`Skipping non-Solana wallet: ${wallet.name}`);
48
- return;
49
- }
50
- const detectedWallet = {
51
- wallet,
52
- adapter
53
- };
54
- this.detectedWalletStandardWallets.set(wallet.name, detectedWallet);
55
- console.log(`Solana Wallet Standard wallet detected:`, wallet);
56
- console.log(` - Features:`, adapter.getFeatures());
57
- };
58
- // Get existing wallets
59
- const existingWallets = get();
60
- existingWallets.forEach(handleWallet);
61
- // Listen for new wallets
62
- const unsubscribe = on('register', (...wallets) => {
63
- wallets.forEach(handleWallet);
64
- });
65
- // Listen for wallet unregistration
66
- const unsubscribeUnregister = on('unregister', (...wallets) => {
67
- wallets.forEach(wallet => {
68
- this.detectedWalletStandardWallets.delete(wallet.name);
69
- console.log(`Wallet Standard wallet unregistered: ${wallet.name}`);
70
- });
71
- });
72
- // Store unsubscribe functions for cleanup if needed
73
- this.walletStandardUnsubscribe = () => {
74
- unsubscribe();
75
- unsubscribeUnregister();
76
- };
77
- }
78
- catch (error) {
79
- console.log('BridgeParent: Wallet Standard not available or error during detection', error);
80
- }
81
- }
82
- logAllWallets() {
83
- setTimeout(() => {
84
- console.log('=== All Detected Wallet Providers (Filtered) ===');
85
- const totalWallets = this.detectedEip6963Wallets.size +
86
- this.detectedWalletStandardWallets.size;
87
- console.log(`Total wallets detected: ${totalWallets}`);
88
- if (this.detectedEip6963Wallets.size > 0) {
89
- console.log('\nEIP-6963 Wallets:');
90
- this.detectedEip6963Wallets.forEach((wallet, uuid) => {
91
- console.log(` - ${wallet.info.name} (UUID: ${uuid}, RDNS: ${wallet.info.rdns})`);
92
- });
93
- }
94
- if (this.detectedWalletStandardWallets.size > 0) {
95
- console.log('\nSolana Wallet Standard Wallets:');
96
- this.detectedWalletStandardWallets.forEach((detected, name) => {
97
- console.log(` - ${name} (Version: ${detected.wallet.version}, Chains: ${detected.wallet.chains.join(', ')})`);
98
- });
99
- }
100
- if (totalWallets === 0) {
101
- console.log('No wallets detected');
102
- }
103
- console.log('=====================================');
104
- }, 1000);
105
- }
106
- getDetectedEip6963Wallets() {
107
- return new Map(this.detectedEip6963Wallets);
108
- }
109
- getDetectedWalletStandardWallets() {
110
- return new Map(this.detectedWalletStandardWallets);
111
- }
112
- // Convenience methods for backward compatibility
113
- getEIP6963Providers() {
114
- const providers = new Map();
115
- this.detectedEip6963Wallets.forEach((wallet, uuid) => {
116
- providers.set(uuid, { info: wallet.info, provider: wallet.provider });
117
- });
118
- return providers;
119
- }
120
- getWalletStandardWallets() {
121
- const wallets = new Map();
122
- this.detectedWalletStandardWallets.forEach((detected, name) => {
123
- wallets.set(name, detected.wallet);
124
- });
125
- return wallets;
126
- }
127
- getWalletStandardAdapters() {
128
- const adapters = new Map();
129
- this.detectedWalletStandardWallets.forEach((detected, name) => {
130
- adapters.set(name, detected.adapter);
131
- });
132
- return adapters;
133
- }
134
- getWalletStandardAdapter(walletName) {
135
- const detected = this.detectedWalletStandardWallets.get(walletName);
136
- return detected?.adapter;
137
- }
138
- refreshDetection() {
139
- // Clean up existing wallet standard subscription if exists
140
- if (this.walletStandardUnsubscribe) {
141
- this.walletStandardUnsubscribe();
142
- }
143
- this.detectedEip6963Wallets.clear();
144
- this.detectedWalletStandardWallets.clear();
145
- this.initialize();
146
- }
147
- }
148
- //# sourceMappingURL=bridge-parent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bridge-parent.js","sourceRoot":"","sources":["../src/bridge-parent.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- export interface WalletProxy {
2
- uuid: string;
3
- name: string;
4
- info?: Record<string, unknown>;
5
- methods: Record<string, unknown>;
6
- }
7
- export interface BridgeAPI {
8
- getEIP6963Wallets(): Promise<WalletProxy[]>;
9
- getWalletStandardWallets(): Promise<WalletProxy[]>;
10
- refreshWallets(): Promise<void>;
11
- }
12
- /**
13
- * Simple class to initialize Comlink bridge for an iframe
14
- */
15
- export declare class ComlinkBridgeParent {
16
- private bridge;
17
- /**
18
- * Connect to an iframe and set up the Comlink bridge
19
- */
20
- connectToIframe(iframe: HTMLIFrameElement): Promise<void>;
21
- /**
22
- * Refresh wallet detection
23
- */
24
- refreshWallets(): Promise<void>;
25
- }
26
- //# sourceMappingURL=comlink-bridge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"comlink-bridge.d.ts","sourceRoot":"","sources":["../src/comlink-bridge.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,iBAAiB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IAC3C,wBAAwB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IAClD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAChC;AAwGD;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAA4B;IAE1C;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB/D;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAMtC"}
@@ -1,126 +0,0 @@
1
- import * as Comlink from 'comlink';
2
- import { BridgeParent } from './bridge-parent';
3
- class WalletBridge {
4
- bridgeParent;
5
- eip6963Wallets = [];
6
- walletStandardWallets = [];
7
- constructor() {
8
- this.bridgeParent = new BridgeParent();
9
- }
10
- async initialize() {
11
- // BridgeParent initializes itself in constructor
12
- // Just refresh detection to ensure we have latest wallets
13
- this.bridgeParent.refreshDetection();
14
- await this.detectWallets();
15
- }
16
- async detectWallets() {
17
- // Get EIP-6963 wallets from BridgeParent
18
- const eip6963Wallets = this.bridgeParent.getDetectedEip6963Wallets();
19
- this.eip6963Wallets = Array.from(eip6963Wallets.entries()).map(([uuid, wallet]) => {
20
- const provider = wallet.provider;
21
- return {
22
- uuid,
23
- name: wallet.info.name,
24
- info: {
25
- uuid,
26
- name: wallet.info.name,
27
- icon: wallet.info.icon,
28
- rdns: wallet.info.rdns
29
- },
30
- methods: {
31
- request: Comlink.proxy(provider.request.bind(provider)),
32
- on: provider.on
33
- ? Comlink.proxy(provider.on.bind(provider))
34
- : undefined,
35
- removeListener: provider.removeListener
36
- ? Comlink.proxy(provider.removeListener.bind(provider))
37
- : undefined
38
- }
39
- };
40
- });
41
- // Get Wallet Standard wallets from BridgeParent
42
- const walletStandardAdapters = this.bridgeParent.getWalletStandardAdapters();
43
- this.walletStandardWallets = Array.from(walletStandardAdapters.entries())
44
- .filter(([_, adapter]) => adapter.getSolanaAdapter())
45
- .map(([name, adapter]) => {
46
- const solanaAdapter = adapter.getSolanaAdapter();
47
- return {
48
- uuid: name.toLowerCase().replace(/\s+/g, '-'),
49
- name,
50
- info: {
51
- name,
52
- chains: ['solana:mainnet'],
53
- features: []
54
- },
55
- methods: {
56
- connect: solanaAdapter?.connect
57
- ? Comlink.proxy(solanaAdapter.connect.bind(solanaAdapter))
58
- : undefined,
59
- signMessage: solanaAdapter?.signMessage
60
- ? Comlink.proxy(solanaAdapter.signMessage.bind(solanaAdapter))
61
- : undefined,
62
- sendTransaction: solanaAdapter?.sendTransaction
63
- ? Comlink.proxy(solanaAdapter.sendTransaction.bind(solanaAdapter))
64
- : undefined,
65
- get name() {
66
- return solanaAdapter?.name;
67
- },
68
- get publicKey() {
69
- return solanaAdapter?.publicKey;
70
- }
71
- }
72
- };
73
- });
74
- console.log(`[Comlink Bridge] Found ${this.eip6963Wallets.length} EIP-6963 and ${this.walletStandardWallets.length} Wallet Standard wallets`);
75
- }
76
- async getEIP6963Wallets() {
77
- console.log('[Comlink Bridge] Sending EIP-6963 wallets to child');
78
- return this.eip6963Wallets;
79
- }
80
- async getWalletStandardWallets() {
81
- console.log('[Comlink Bridge] Sending Wallet Standard wallets to child');
82
- return this.walletStandardWallets;
83
- }
84
- async refreshWallets() {
85
- console.log('[Comlink Bridge] Refreshing wallets...');
86
- await this.bridgeParent.refreshDetection();
87
- await this.detectWallets();
88
- }
89
- }
90
- /**
91
- * Simple class to initialize Comlink bridge for an iframe
92
- */
93
- export class ComlinkBridgeParent {
94
- bridge = null;
95
- /**
96
- * Connect to an iframe and set up the Comlink bridge
97
- */
98
- async connectToIframe(iframe) {
99
- // Wait for iframe to load
100
- await new Promise(resolve => {
101
- if (iframe.contentWindow) {
102
- resolve();
103
- }
104
- else {
105
- iframe.addEventListener('load', () => resolve(), { once: true });
106
- }
107
- });
108
- console.log('[ComlinkBridgeParent] Setting up bridge...');
109
- // Create and initialize bridge
110
- this.bridge = new WalletBridge();
111
- await this.bridge.initialize();
112
- // Expose bridge to iframe using Comlink
113
- Comlink.expose(this.bridge, Comlink.windowEndpoint(iframe.contentWindow));
114
- console.log('[ComlinkBridgeParent] Bridge exposed to iframe');
115
- }
116
- /**
117
- * Refresh wallet detection
118
- */
119
- async refreshWallets() {
120
- if (!this.bridge) {
121
- throw new Error('Bridge not initialized. Call connectToIframe first.');
122
- }
123
- await this.bridge.refreshWallets();
124
- }
125
- }
126
- //# sourceMappingURL=comlink-bridge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"comlink-bridge.js","sourceRoot":"","sources":["../src/comlink-bridge.ts"],"names":[],"mappings":"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"}