@meshconnect/uwc-bridge-parent 0.0.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/BridgeParent.d.ts +58 -0
- package/dist/BridgeParent.d.ts.map +1 -0
- package/dist/BridgeParent.js +127 -0
- package/dist/BridgeParent.js.map +1 -0
- package/dist/bridge-parent.d.ts +27 -0
- package/dist/bridge-parent.d.ts.map +1 -0
- package/dist/bridge-parent.js +148 -0
- package/dist/bridge-parent.js.map +1 -0
- package/dist/comlink-bridge.d.ts +26 -0
- package/dist/comlink-bridge.d.ts.map +1 -0
- package/dist/comlink-bridge.js +126 -0
- package/dist/comlink-bridge.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/postmate-bridge.d.ts +37 -0
- package/dist/postmate-bridge.d.ts.map +1 -0
- package/dist/postmate-bridge.js +631 -0
- package/dist/postmate-bridge.js.map +1 -0
- package/dist/standard-wallet-adapter.d.ts +17 -0
- package/dist/standard-wallet-adapter.d.ts.map +1 -0
- package/dist/standard-wallet-adapter.js +53 -0
- package/dist/standard-wallet-adapter.js.map +1 -0
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/wallet-bridge-parent.d.ts +41 -0
- package/dist/wallet-bridge-parent.d.ts.map +1 -0
- package/dist/wallet-bridge-parent.js +224 -0
- package/dist/wallet-bridge-parent.js.map +1 -0
- package/dist/wallet-bridge.d.ts +38 -0
- package/dist/wallet-bridge.d.ts.map +1 -0
- package/dist/wallet-bridge.js +71 -0
- package/dist/wallet-bridge.js.map +1 -0
- package/package.json +36 -0
- package/src/BridgeParent.ts +216 -0
- package/src/index.ts +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard-wallet-adapter.d.ts","sourceRoot":"","sources":["../src/standard-wallet-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAGtB;IAED;;OAEG;IACH,gBAAgB,IAAI,GAAG;CAwCxB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter for Wallet Standard wallets to provide Solana adapter interface
|
|
3
|
+
*/
|
|
4
|
+
export class StandardWalletAdapter {
|
|
5
|
+
wallet;
|
|
6
|
+
constructor(wallet) {
|
|
7
|
+
this.wallet = wallet;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Check if this is a Solana wallet
|
|
11
|
+
*/
|
|
12
|
+
get isSolana() {
|
|
13
|
+
const chains = this.wallet.chains || [];
|
|
14
|
+
return chains.some(chain => chain.startsWith('solana:'));
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get Solana adapter if available
|
|
18
|
+
*/
|
|
19
|
+
getSolanaAdapter() {
|
|
20
|
+
if (!this.isSolana)
|
|
21
|
+
return null;
|
|
22
|
+
// Check for standard Solana features
|
|
23
|
+
const features = this.wallet.features || {};
|
|
24
|
+
// Create adapter-like interface from wallet features
|
|
25
|
+
return {
|
|
26
|
+
name: this.wallet.name,
|
|
27
|
+
publicKey: null,
|
|
28
|
+
connected: false,
|
|
29
|
+
connecting: false,
|
|
30
|
+
readyState: 'Installed',
|
|
31
|
+
// Methods from wallet features
|
|
32
|
+
connect: features['standard:connect'] ?
|
|
33
|
+
features['standard:connect'].connect :
|
|
34
|
+
async () => { console.warn('Connect not supported'); },
|
|
35
|
+
disconnect: features['standard:disconnect'] ?
|
|
36
|
+
features['standard:disconnect'].disconnect :
|
|
37
|
+
async () => { console.warn('Disconnect not supported'); },
|
|
38
|
+
signMessage: features['solana:signMessage'] ?
|
|
39
|
+
features['solana:signMessage'].signMessage :
|
|
40
|
+
undefined,
|
|
41
|
+
signTransaction: features['solana:signTransaction'] ?
|
|
42
|
+
features['solana:signTransaction'].signTransaction :
|
|
43
|
+
undefined,
|
|
44
|
+
signAllTransactions: features['solana:signAllTransactions'] ?
|
|
45
|
+
features['solana:signAllTransactions'].signAllTransactions :
|
|
46
|
+
undefined,
|
|
47
|
+
sendTransaction: features['solana:sendTransaction'] ?
|
|
48
|
+
features['solana:sendTransaction'].sendTransaction :
|
|
49
|
+
undefined
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=standard-wallet-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard-wallet-adapter.js","sourceRoot":"","sources":["../src/standard-wallet-adapter.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACxB,MAAM,CAAQ;IAEtB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;QACvC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAA;QAE/B,qCAAqC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAA;QAE3C,qDAAqD;QACrD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,WAAW;YAEvB,+BAA+B;YAC/B,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACpC,QAAQ,CAAC,kBAAkB,CAAS,CAAC,OAAO,CAAC,CAAC;gBAC/C,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA,CAAC,CAAC;YAEvD,UAAU,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAC1C,QAAQ,CAAC,qBAAqB,CAAS,CAAC,UAAU,CAAC,CAAC;gBACrD,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA,CAAC,CAAC;YAE1D,WAAW,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC1C,QAAQ,CAAC,oBAAoB,CAAS,CAAC,WAAW,CAAC,CAAC;gBACrD,SAAS;YAEX,eAAe,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAClD,QAAQ,CAAC,wBAAwB,CAAS,CAAC,eAAe,CAAC,CAAC;gBAC7D,SAAS;YAEX,mBAAmB,EAAE,QAAQ,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBAC1D,QAAQ,CAAC,4BAA4B,CAAS,CAAC,mBAAmB,CAAC,CAAC;gBACrE,SAAS;YAEX,eAAe,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAClD,QAAQ,CAAC,wBAAwB,CAAS,CAAC,eAAe,CAAC,CAAC;gBAC7D,SAAS;SACZ,CAAA;IACH,CAAC;CACF"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface EIP6963ProviderInfo {
|
|
2
|
+
uuid: string;
|
|
3
|
+
name: string;
|
|
4
|
+
icon: string;
|
|
5
|
+
rdns: string;
|
|
6
|
+
}
|
|
7
|
+
export interface EIP6963ProviderDetail {
|
|
8
|
+
info: EIP6963ProviderInfo;
|
|
9
|
+
provider: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface EIP6963AnnounceProviderEvent extends CustomEvent {
|
|
12
|
+
type: 'eip6963:announceProvider';
|
|
13
|
+
detail: EIP6963ProviderDetail;
|
|
14
|
+
}
|
|
15
|
+
import type { Wallet } from '@wallet-standard/base';
|
|
16
|
+
export type WalletStandardWallet = Wallet;
|
|
17
|
+
export interface WalletStandardEventProperties {
|
|
18
|
+
register: (wallet: WalletStandardWallet) => void;
|
|
19
|
+
unregister: (wallet: WalletStandardWallet) => void;
|
|
20
|
+
get(): WalletStandardWallet[];
|
|
21
|
+
}
|
|
22
|
+
export interface DetectedEip6963Wallet {
|
|
23
|
+
info: EIP6963ProviderInfo;
|
|
24
|
+
provider: unknown;
|
|
25
|
+
}
|
|
26
|
+
export interface DetectedWalletStandardWallet {
|
|
27
|
+
wallet: WalletStandardWallet;
|
|
28
|
+
adapter: any;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,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,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,4BAA6B,SAAQ,WAAW;IAC/D,IAAI,EAAE,0BAA0B,CAAA;IAChC,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AAED,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAA;AAEzC,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAChD,UAAU,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAClD,GAAG,IAAI,oBAAoB,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,oBAAoB,CAAA;IAC5B,OAAO,EAAE,GAAG,CAAA;CACb"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
interface EIP6963ProviderInfo {
|
|
2
|
+
uuid: string;
|
|
3
|
+
name: string;
|
|
4
|
+
icon: string;
|
|
5
|
+
rdns: string;
|
|
6
|
+
}
|
|
7
|
+
export interface EIP6963WalletProxy {
|
|
8
|
+
uuid: string;
|
|
9
|
+
info: EIP6963ProviderInfo;
|
|
10
|
+
provider: Record<string, any>;
|
|
11
|
+
}
|
|
12
|
+
export interface WalletStandardProxy {
|
|
13
|
+
name: string;
|
|
14
|
+
icon: string;
|
|
15
|
+
chains: string[];
|
|
16
|
+
features: string[];
|
|
17
|
+
wallet: Record<string, any>;
|
|
18
|
+
adapter: Record<string, any>;
|
|
19
|
+
}
|
|
20
|
+
export interface BridgeAPI {
|
|
21
|
+
getEIP6963Wallets(): Promise<EIP6963WalletProxy[]>;
|
|
22
|
+
getWalletStandardWallets(): Promise<WalletStandardProxy[]>;
|
|
23
|
+
refreshWallets(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* WalletBridgeParent - Manages wallet detection in parent window and exposes to iframe
|
|
27
|
+
*/
|
|
28
|
+
export declare class WalletBridgeParent {
|
|
29
|
+
private bridge;
|
|
30
|
+
/**
|
|
31
|
+
* Initialize bridge connection to iframe
|
|
32
|
+
*/
|
|
33
|
+
initialize(iframe: HTMLIFrameElement): Promise<void>;
|
|
34
|
+
private waitForIframe;
|
|
35
|
+
/**
|
|
36
|
+
* Refresh wallet detection
|
|
37
|
+
*/
|
|
38
|
+
refreshWallets(): Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=wallet-bridge-parent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-bridge-parent.d.ts","sourceRoot":"","sources":["../src/wallet-bridge-parent.ts"],"names":[],"mappings":"AAMA,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAaD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,mBAAmB,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC7B;AAGD,MAAM,WAAW,SAAS;IACxB,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;IAClD,wBAAwB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAA;IAC1D,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAChC;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAoC;IAElD;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAc5C,aAAa;IAU3B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAKtC"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import * as Comlink from 'comlink';
|
|
2
|
+
import { getWallets } from '@wallet-standard/app';
|
|
3
|
+
import { StandardWalletAdapter } from './standard-wallet-adapter';
|
|
4
|
+
/**
|
|
5
|
+
* WalletBridgeParent - Manages wallet detection in parent window and exposes to iframe
|
|
6
|
+
*/
|
|
7
|
+
export class WalletBridgeParent {
|
|
8
|
+
bridge = null;
|
|
9
|
+
/**
|
|
10
|
+
* Initialize bridge connection to iframe
|
|
11
|
+
*/
|
|
12
|
+
async initialize(iframe) {
|
|
13
|
+
// Wait for iframe to be ready
|
|
14
|
+
await this.waitForIframe(iframe);
|
|
15
|
+
// Create bridge implementation
|
|
16
|
+
this.bridge = new BridgeImplementation();
|
|
17
|
+
await this.bridge.detectWallets();
|
|
18
|
+
// Expose bridge to iframe via Comlink
|
|
19
|
+
Comlink.expose(this.bridge, Comlink.windowEndpoint(iframe.contentWindow));
|
|
20
|
+
console.log('[WalletBridgeParent] Bridge initialized and exposed to iframe');
|
|
21
|
+
}
|
|
22
|
+
async waitForIframe(iframe) {
|
|
23
|
+
return new Promise(resolve => {
|
|
24
|
+
if (iframe.contentWindow) {
|
|
25
|
+
resolve();
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
iframe.addEventListener('load', () => resolve(), { once: true });
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Refresh wallet detection
|
|
34
|
+
*/
|
|
35
|
+
async refreshWallets() {
|
|
36
|
+
if (this.bridge) {
|
|
37
|
+
await this.bridge.refreshWallets();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Bridge implementation that gets exposed via Comlink
|
|
43
|
+
*/
|
|
44
|
+
class BridgeImplementation {
|
|
45
|
+
eip6963Wallets = [];
|
|
46
|
+
walletStandardWallets = [];
|
|
47
|
+
/**
|
|
48
|
+
* Detect all wallets
|
|
49
|
+
*/
|
|
50
|
+
async detectWallets() {
|
|
51
|
+
console.log('[BridgeImplementation] Starting wallet detection...');
|
|
52
|
+
await this.detectEIP6963Wallets();
|
|
53
|
+
await this.detectWalletStandardWallets();
|
|
54
|
+
console.log('[BridgeImplementation] Wallet detection complete:', {
|
|
55
|
+
eip6963: this.eip6963Wallets.length,
|
|
56
|
+
walletStandard: this.walletStandardWallets.length
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Detect EIP-6963 wallets and create proxied versions
|
|
61
|
+
*/
|
|
62
|
+
async detectEIP6963Wallets() {
|
|
63
|
+
if (typeof window === 'undefined')
|
|
64
|
+
return;
|
|
65
|
+
return new Promise(resolve => {
|
|
66
|
+
const detectedWallets = new Map();
|
|
67
|
+
const handleAnnouncement = (event) => {
|
|
68
|
+
const { info, provider } = event.detail;
|
|
69
|
+
detectedWallets.set(info.uuid, { info, provider });
|
|
70
|
+
console.log(`[BridgeImplementation] EIP-6963 wallet detected: ${info.name}`);
|
|
71
|
+
};
|
|
72
|
+
window.addEventListener('eip6963:announceProvider', handleAnnouncement);
|
|
73
|
+
window.dispatchEvent(new Event('eip6963:requestProvider'));
|
|
74
|
+
// Stop listening after 2 seconds and process wallets
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
window.removeEventListener('eip6963:announceProvider', handleAnnouncement);
|
|
77
|
+
console.log(`[BridgeImplementation] Processing ${detectedWallets.size} detected EIP-6963 wallets`);
|
|
78
|
+
// Create proxied wallets
|
|
79
|
+
this.eip6963Wallets = [];
|
|
80
|
+
detectedWallets.forEach((wallet, uuid) => {
|
|
81
|
+
const provider = wallet.provider;
|
|
82
|
+
// Create a provider object with wrapped methods
|
|
83
|
+
const proxiedProvider = {
|
|
84
|
+
// Wrap the request method
|
|
85
|
+
request: provider.request ?
|
|
86
|
+
Comlink.proxy(async (args) => provider.request(args)) :
|
|
87
|
+
undefined,
|
|
88
|
+
// Wrap event methods
|
|
89
|
+
on: provider.on ?
|
|
90
|
+
Comlink.proxy((event, handler) => provider.on(event, handler)) :
|
|
91
|
+
undefined,
|
|
92
|
+
removeListener: provider.removeListener ?
|
|
93
|
+
Comlink.proxy((event, handler) => provider.removeListener(event, handler)) :
|
|
94
|
+
undefined,
|
|
95
|
+
// Include properties
|
|
96
|
+
isMetaMask: provider.isMetaMask,
|
|
97
|
+
isPhantom: provider.isPhantom,
|
|
98
|
+
isCoinbaseWallet: provider.isCoinbaseWallet,
|
|
99
|
+
isTrust: provider.isTrust
|
|
100
|
+
};
|
|
101
|
+
this.eip6963Wallets.push({
|
|
102
|
+
uuid,
|
|
103
|
+
info: wallet.info,
|
|
104
|
+
provider: proxiedProvider
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
console.log(`[BridgeImplementation] Processed ${this.eip6963Wallets.length} EIP-6963 wallets`);
|
|
108
|
+
resolve();
|
|
109
|
+
}, 2000);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Detect Wallet Standard wallets and create proxied versions
|
|
114
|
+
*/
|
|
115
|
+
async detectWalletStandardWallets() {
|
|
116
|
+
if (typeof window === 'undefined')
|
|
117
|
+
return;
|
|
118
|
+
try {
|
|
119
|
+
const { get } = getWallets();
|
|
120
|
+
const wallets = get();
|
|
121
|
+
this.walletStandardWallets = [];
|
|
122
|
+
for (const wallet of wallets) {
|
|
123
|
+
// Check if it's a Solana wallet
|
|
124
|
+
if (!this.isSolanaWallet(wallet))
|
|
125
|
+
continue;
|
|
126
|
+
// Create adapter
|
|
127
|
+
const adapter = new StandardWalletAdapter(wallet);
|
|
128
|
+
if (!adapter.isSolana)
|
|
129
|
+
continue;
|
|
130
|
+
const solanaAdapter = adapter.getSolanaAdapter();
|
|
131
|
+
if (!solanaAdapter)
|
|
132
|
+
continue;
|
|
133
|
+
// Create Comlink proxies for wallet methods
|
|
134
|
+
const proxiedWallet = {
|
|
135
|
+
name: wallet.name,
|
|
136
|
+
icon: wallet.icon,
|
|
137
|
+
chains: wallet.chains,
|
|
138
|
+
features: Object.keys(wallet.features)
|
|
139
|
+
};
|
|
140
|
+
// Proxy wallet features if they have methods
|
|
141
|
+
for (const [featureName, feature] of Object.entries(wallet.features)) {
|
|
142
|
+
if (typeof feature === 'object' && feature !== null) {
|
|
143
|
+
const proxiedFeature = {};
|
|
144
|
+
for (const [key, value] of Object.entries(feature)) {
|
|
145
|
+
if (typeof value === 'function') {
|
|
146
|
+
proxiedFeature[key] = Comlink.proxy(value.bind(feature));
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
proxiedFeature[key] = value;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
proxiedWallet[featureName] = proxiedFeature;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Create Comlink proxies for adapter methods
|
|
156
|
+
const proxiedAdapter = {
|
|
157
|
+
name: solanaAdapter.name,
|
|
158
|
+
publicKey: solanaAdapter.publicKey,
|
|
159
|
+
connected: solanaAdapter.connected,
|
|
160
|
+
connecting: solanaAdapter.connecting,
|
|
161
|
+
readyState: solanaAdapter.readyState
|
|
162
|
+
};
|
|
163
|
+
// Proxy adapter methods
|
|
164
|
+
if (solanaAdapter['connect']) {
|
|
165
|
+
proxiedAdapter['connect'] = Comlink.proxy(solanaAdapter['connect'].bind(solanaAdapter));
|
|
166
|
+
}
|
|
167
|
+
if (solanaAdapter['disconnect']) {
|
|
168
|
+
proxiedAdapter['disconnect'] = Comlink.proxy(solanaAdapter['disconnect'].bind(solanaAdapter));
|
|
169
|
+
}
|
|
170
|
+
if (solanaAdapter['signMessage']) {
|
|
171
|
+
proxiedAdapter['signMessage'] = Comlink.proxy(solanaAdapter['signMessage'].bind(solanaAdapter));
|
|
172
|
+
}
|
|
173
|
+
if (solanaAdapter['signTransaction']) {
|
|
174
|
+
proxiedAdapter['signTransaction'] = Comlink.proxy(solanaAdapter['signTransaction'].bind(solanaAdapter));
|
|
175
|
+
}
|
|
176
|
+
if (solanaAdapter['signAllTransactions']) {
|
|
177
|
+
proxiedAdapter['signAllTransactions'] = Comlink.proxy(solanaAdapter['signAllTransactions'].bind(solanaAdapter));
|
|
178
|
+
}
|
|
179
|
+
if (solanaAdapter['sendTransaction']) {
|
|
180
|
+
proxiedAdapter['sendTransaction'] = Comlink.proxy(solanaAdapter['sendTransaction'].bind(solanaAdapter));
|
|
181
|
+
}
|
|
182
|
+
this.walletStandardWallets.push({
|
|
183
|
+
name: wallet.name,
|
|
184
|
+
icon: wallet.icon || '',
|
|
185
|
+
chains: wallet.chains,
|
|
186
|
+
features: Object.keys(wallet.features),
|
|
187
|
+
wallet: proxiedWallet,
|
|
188
|
+
adapter: proxiedAdapter
|
|
189
|
+
});
|
|
190
|
+
console.log(`[BridgeImplementation] Wallet Standard wallet processed: ${wallet.name}`);
|
|
191
|
+
}
|
|
192
|
+
console.log(`[BridgeImplementation] Processed ${this.walletStandardWallets.length} Wallet Standard wallets`);
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
console.error('[BridgeImplementation] Error detecting Wallet Standard wallets:', error);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
isSolanaWallet(wallet) {
|
|
199
|
+
const chains = wallet.chains || [];
|
|
200
|
+
return chains.some(chain => chain.startsWith('solana:'));
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get all EIP-6963 wallets with Comlink proxied methods
|
|
204
|
+
*/
|
|
205
|
+
async getEIP6963Wallets() {
|
|
206
|
+
console.log(`[BridgeImplementation] Returning ${this.eip6963Wallets.length} EIP-6963 wallets`);
|
|
207
|
+
return this.eip6963Wallets;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get all Wallet Standard wallets with Comlink proxied methods
|
|
211
|
+
*/
|
|
212
|
+
async getWalletStandardWallets() {
|
|
213
|
+
console.log(`[BridgeImplementation] Returning ${this.walletStandardWallets.length} Wallet Standard wallets`);
|
|
214
|
+
return this.walletStandardWallets;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Refresh wallet detection
|
|
218
|
+
*/
|
|
219
|
+
async refreshWallets() {
|
|
220
|
+
console.log('[BridgeImplementation] Refreshing wallet detection...');
|
|
221
|
+
await this.detectWallets();
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=wallet-bridge-parent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-bridge-parent.js","sourceRoot":"","sources":["../src/wallet-bridge-parent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { BridgeParent } from './bridge-parent';
|
|
2
|
+
import { PostmateBridge } from './postmate-bridge';
|
|
3
|
+
/**
|
|
4
|
+
* Unified class that automatically handles wallet detection and iframe communication
|
|
5
|
+
* Simply initialize with an iframe element and everything is set up automatically
|
|
6
|
+
*/
|
|
7
|
+
export declare class WalletBridge {
|
|
8
|
+
private bridgeParent;
|
|
9
|
+
private postmateBridge;
|
|
10
|
+
private iframe;
|
|
11
|
+
constructor();
|
|
12
|
+
/**
|
|
13
|
+
* Initialize the bridge with an iframe element
|
|
14
|
+
* This will automatically set up communication with the child frame
|
|
15
|
+
*/
|
|
16
|
+
connectToIframe(iframe: HTMLIFrameElement): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Refresh wallet detection
|
|
19
|
+
*/
|
|
20
|
+
refreshWallets(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Get the bridge parent instance (for advanced usage)
|
|
23
|
+
*/
|
|
24
|
+
getBridgeParent(): BridgeParent;
|
|
25
|
+
/**
|
|
26
|
+
* Get the postmate bridge instance (for advanced usage)
|
|
27
|
+
*/
|
|
28
|
+
getPostmateBridge(): PostmateBridge;
|
|
29
|
+
/**
|
|
30
|
+
* Disconnect from the iframe and clean up
|
|
31
|
+
*/
|
|
32
|
+
disconnect(): void;
|
|
33
|
+
/**
|
|
34
|
+
* Destroy the bridge and clean up all resources
|
|
35
|
+
*/
|
|
36
|
+
destroy(): void;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=wallet-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-bridge.d.ts","sourceRoot":"","sources":["../src/wallet-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,MAAM,CAAiC;;IAY/C;;;OAGG;IACU,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAatE;;OAEG;IACI,cAAc,IAAI,IAAI;IAK7B;;OAEG;IACI,eAAe,IAAI,YAAY;IAItC;;OAEG;IACI,iBAAiB,IAAI,cAAc;IAI1C;;OAEG;IACI,UAAU,IAAI,IAAI;IAQzB;;OAEG;IACI,OAAO,IAAI,IAAI;CAKvB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { BridgeParent } from './bridge-parent';
|
|
2
|
+
import { PostmateBridge } from './postmate-bridge';
|
|
3
|
+
/**
|
|
4
|
+
* Unified class that automatically handles wallet detection and iframe communication
|
|
5
|
+
* Simply initialize with an iframe element and everything is set up automatically
|
|
6
|
+
*/
|
|
7
|
+
export class WalletBridge {
|
|
8
|
+
bridgeParent;
|
|
9
|
+
postmateBridge;
|
|
10
|
+
iframe = null;
|
|
11
|
+
constructor() {
|
|
12
|
+
// Initialize wallet detection
|
|
13
|
+
this.bridgeParent = new BridgeParent();
|
|
14
|
+
console.log('WalletBridge: Wallet detection initialized');
|
|
15
|
+
// Initialize postmate bridge
|
|
16
|
+
this.postmateBridge = new PostmateBridge(this.bridgeParent);
|
|
17
|
+
console.log('WalletBridge: Bridge initialized');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Initialize the bridge with an iframe element
|
|
21
|
+
* This will automatically set up communication with the child frame
|
|
22
|
+
*/
|
|
23
|
+
async connectToIframe(iframe) {
|
|
24
|
+
if (this.iframe) {
|
|
25
|
+
console.warn('WalletBridge: Already connected to an iframe, disconnecting first');
|
|
26
|
+
this.disconnect();
|
|
27
|
+
}
|
|
28
|
+
this.iframe = iframe;
|
|
29
|
+
// Initialize the postmate bridge with the iframe
|
|
30
|
+
await this.postmateBridge.initializeWithIframe(iframe);
|
|
31
|
+
console.log('WalletBridge: Connected to iframe and ready for communication');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Refresh wallet detection
|
|
35
|
+
*/
|
|
36
|
+
refreshWallets() {
|
|
37
|
+
this.bridgeParent.refreshDetection();
|
|
38
|
+
console.log('WalletBridge: Wallet detection refreshed');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get the bridge parent instance (for advanced usage)
|
|
42
|
+
*/
|
|
43
|
+
getBridgeParent() {
|
|
44
|
+
return this.bridgeParent;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get the postmate bridge instance (for advanced usage)
|
|
48
|
+
*/
|
|
49
|
+
getPostmateBridge() {
|
|
50
|
+
return this.postmateBridge;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Disconnect from the iframe and clean up
|
|
54
|
+
*/
|
|
55
|
+
disconnect() {
|
|
56
|
+
if (this.postmateBridge) {
|
|
57
|
+
this.postmateBridge.destroy();
|
|
58
|
+
}
|
|
59
|
+
this.iframe = null;
|
|
60
|
+
console.log('WalletBridge: Disconnected from iframe');
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Destroy the bridge and clean up all resources
|
|
64
|
+
*/
|
|
65
|
+
destroy() {
|
|
66
|
+
this.disconnect();
|
|
67
|
+
// Additional cleanup if needed
|
|
68
|
+
console.log('WalletBridge: Destroyed');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=wallet-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-bridge.js","sourceRoot":"","sources":["../src/wallet-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD;;;GAGG;AACH,MAAM,OAAO,YAAY;IACf,YAAY,CAAc;IAC1B,cAAc,CAAgB;IAC9B,MAAM,GAA6B,IAAI,CAAA;IAE/C;QACE,8BAA8B;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;QACtC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAA;QAEzD,6BAA6B;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC3D,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;IACjD,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,eAAe,CAAC,MAAyB;QACpD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAA;YACjF,IAAI,CAAC,UAAU,EAAE,CAAA;QACnB,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,iDAAiD;QACjD,MAAM,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QACtD,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAA;IAC9E,CAAC;IAED;;OAEG;IACI,cAAc;QACnB,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAA;QACpC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;IACzD,CAAC;IAED;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED;;OAEG;IACI,iBAAiB;QACtB,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED;;OAEG;IACI,UAAU;QACf,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAA;QAC/B,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAA;IACvD,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,+BAA+B;QAC/B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;IACxC,CAAC;CACF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@meshconnect/uwc-bridge-parent",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "Parent window bridge for Universal Wallet Connector",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@solana/wallet-adapter-base": "^0.9.23",
|
|
15
|
+
"@solana/wallet-adapter-wallets": "^0.19.37",
|
|
16
|
+
"@solana/wallet-standard-wallet-adapter-base": "^1.1.4",
|
|
17
|
+
"@wallet-standard/app": "^1.1.0",
|
|
18
|
+
"@wallet-standard/base": "^1.1.0",
|
|
19
|
+
"comlink": "^4.4.1"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"eslint": "^8.56.0",
|
|
23
|
+
"typescript": "^5.3.3"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"src"
|
|
28
|
+
],
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "tsc",
|
|
32
|
+
"dev": "tsc --watch",
|
|
33
|
+
"lint": "eslint src",
|
|
34
|
+
"type-check": "tsc --noEmit"
|
|
35
|
+
}
|
|
36
|
+
}
|