@meshconnect/uwc-bridge-parent 1.0.0 → 1.0.1

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.
@@ -0,0 +1,631 @@
1
+ import { BridgeParent } from './bridge-parent';
2
+ export class PostmateBridge {
3
+ bridgeParent;
4
+ iframe = null;
5
+ messageHandlers = new Map();
6
+ pendingRequests = new Map();
7
+ handshakeComplete = false;
8
+ constructor(bridgeParent) {
9
+ this.bridgeParent = bridgeParent;
10
+ this.setupMessageHandlers();
11
+ }
12
+ setupMessageHandlers() {
13
+ // Set up the handlers for methods that can be called from child
14
+ this.messageHandlers.set('getWallets', () => this.getWalletsMetadata());
15
+ this.messageHandlers.set('rpc', (request) => this.handleRPC(request));
16
+ this.messageHandlers.set('getProperty', (request) => this.handleGetProperty(request));
17
+ this.messageHandlers.set('refreshDetection', () => {
18
+ this.bridgeParent.refreshDetection();
19
+ return this.getWalletsMetadata();
20
+ });
21
+ }
22
+ async initializeWithIframe(iframe) {
23
+ this.iframe = iframe;
24
+ // Listen for messages from the iframe
25
+ window.addEventListener('message', this.handleMessage.bind(this));
26
+ // Send handshake multiple times to ensure iframe receives it
27
+ let attempts = 0;
28
+ const sendHandshakeWithRetry = () => {
29
+ if (attempts < 10 && !this.handshakeComplete) {
30
+ this.sendHandshake();
31
+ attempts++;
32
+ setTimeout(sendHandshakeWithRetry, 500);
33
+ }
34
+ };
35
+ // Start sending handshakes after a short delay
36
+ setTimeout(sendHandshakeWithRetry, 100);
37
+ console.log('PostmateBridge initialized with existing iframe');
38
+ }
39
+ sendHandshake() {
40
+ if (!this.iframe?.contentWindow) {
41
+ console.error('PostmateBridge: No iframe contentWindow available');
42
+ return;
43
+ }
44
+ console.log('PostmateBridge: Sending handshake to child iframe');
45
+ // Send handshake message to establish connection
46
+ this.iframe.contentWindow.postMessage({
47
+ type: 'postmate-handshake',
48
+ methods: Array.from(this.messageHandlers.keys())
49
+ }, '*');
50
+ }
51
+ async handleMessage(event) {
52
+ // Only handle messages from iframes (not from same window)
53
+ if (event.source === window) {
54
+ return;
55
+ }
56
+ const message = event.data;
57
+ console.log('[PostmateBridge] Received message:', message.type, message.method);
58
+ if (message.type === 'call') {
59
+ // Mark handshake complete when we receive first call from child
60
+ if (!this.handshakeComplete) {
61
+ this.handshakeComplete = true;
62
+ }
63
+ // Handle method call from child
64
+ const handler = this.messageHandlers.get(message.method);
65
+ console.log('[PostmateBridge] Handler found:', !!handler, 'for method:', message.method);
66
+ if (handler) {
67
+ try {
68
+ const result = await handler(message.args?.[0]);
69
+ console.log('[PostmateBridge] Handler result:', result);
70
+ // For RPC calls, the handler returns {id, result} or {id, error}
71
+ // We need to handle this specially
72
+ if (message.method === 'rpc') {
73
+ // Ensure result is an object (should always be for RPC)
74
+ if (!result || typeof result !== 'object') {
75
+ // If somehow the RPC didn't return a proper response, send empty result
76
+ ;
77
+ event.source?.postMessage({
78
+ id: message.id,
79
+ type: 'response',
80
+ result: { id: message.id, result: undefined }
81
+ }, event.origin);
82
+ return;
83
+ }
84
+ if (result.error) {
85
+ // Send error response back to the source
86
+ ;
87
+ event.source?.postMessage({
88
+ id: message.id,
89
+ type: 'response',
90
+ error: result.error.message || 'RPC error'
91
+ }, event.origin);
92
+ return;
93
+ }
94
+ else {
95
+ // Send the RPC result back to the source
96
+ // The result object has {id, result} - we send the full object
97
+ ;
98
+ event.source?.postMessage({
99
+ id: message.id,
100
+ type: 'response',
101
+ result: result // This is the full RPCResponse
102
+ }, event.origin);
103
+ return;
104
+ }
105
+ }
106
+ // For non-RPC calls, send result as-is back to the source
107
+ try {
108
+ // Deep clean the result before sending
109
+ const cleanedResult = JSON.parse(JSON.stringify(result, (_key, value) => {
110
+ if (typeof value === 'function')
111
+ return undefined;
112
+ if (typeof value === 'symbol')
113
+ return undefined;
114
+ // Check for function-like objects
115
+ if (value && typeof value === 'object') {
116
+ try {
117
+ const str = String(value);
118
+ if (str.includes('=>') || str.startsWith('function')) {
119
+ return undefined;
120
+ }
121
+ }
122
+ catch {
123
+ // Ignore
124
+ }
125
+ }
126
+ return value;
127
+ }));
128
+ event.source?.postMessage({
129
+ id: message.id,
130
+ type: 'response',
131
+ result: cleanedResult
132
+ }, event.origin);
133
+ }
134
+ catch (cloneError) {
135
+ // If we can't clone the result, log the error
136
+ console.error('Failed to send result:', cloneError);
137
+ console.log('Problematic result:', result);
138
+ event.source?.postMessage({
139
+ id: message.id,
140
+ type: 'response',
141
+ error: `Failed to serialize response: ${cloneError.message}`
142
+ }, event.origin);
143
+ }
144
+ }
145
+ catch (error) {
146
+ // Send error response back to the source
147
+ ;
148
+ event.source?.postMessage({
149
+ id: message.id,
150
+ type: 'response',
151
+ error: error.message || 'Unknown error'
152
+ }, event.origin);
153
+ }
154
+ }
155
+ }
156
+ else if (message.type === 'response') {
157
+ // Handle response from child (if we ever call child methods)
158
+ const resolver = this.pendingRequests.get(message.id);
159
+ if (resolver) {
160
+ resolver(message);
161
+ this.pendingRequests.delete(message.id);
162
+ }
163
+ }
164
+ }
165
+ // Commenting out as it's no longer needed with simplified approach
166
+ /*
167
+ private getAvailableMembers(obj: any): {
168
+ functions: string[]
169
+ properties: string[]
170
+ } {
171
+ const functions = new Set<string>()
172
+ const properties = new Set<string>()
173
+
174
+ // Get own properties safely using property descriptors
175
+ Object.getOwnPropertyNames(obj).forEach(prop => {
176
+ try {
177
+ if (prop === 'constructor') return
178
+
179
+ const descriptor = Object.getOwnPropertyDescriptor(obj, prop)
180
+ if (descriptor) {
181
+ // Check if it's a direct function property
182
+ if (typeof descriptor.value === 'function') {
183
+ functions.add(prop)
184
+ }
185
+ // If it's not a function, it's a property
186
+ else if (descriptor.value !== undefined) {
187
+ properties.add(prop)
188
+ }
189
+ // Handle getters - check if the getter returns a function
190
+ else if (descriptor.get) {
191
+ try {
192
+ const value = obj[prop]
193
+ // Only add as property if it doesn't return a function
194
+ if (typeof value !== 'function') {
195
+ properties.add(prop)
196
+ } else {
197
+ // If getter returns a function, add it to functions
198
+ functions.add(prop)
199
+ }
200
+ } catch {
201
+ // If we can't access it, skip it
202
+ }
203
+ }
204
+ }
205
+ } catch {
206
+ // Ignore any errors
207
+ }
208
+ })
209
+
210
+ // Get prototype methods and properties safely
211
+ let proto = Object.getPrototypeOf(obj)
212
+ while (proto && proto !== Object.prototype) {
213
+ Object.getOwnPropertyNames(proto).forEach(prop => {
214
+ try {
215
+ if (prop === 'constructor') return
216
+
217
+ const descriptor = Object.getOwnPropertyDescriptor(proto, prop)
218
+ if (descriptor) {
219
+ if (typeof descriptor.value === 'function') {
220
+ functions.add(prop)
221
+ } else if (descriptor.get || descriptor.set) {
222
+ // This is a getter/setter property - check what it returns
223
+ try {
224
+ const value = obj[prop]
225
+ if (typeof value !== 'function') {
226
+ properties.add(prop)
227
+ } else {
228
+ functions.add(prop)
229
+ }
230
+ } catch {
231
+ // If we can't access it, skip it
232
+ }
233
+ }
234
+ }
235
+ } catch {
236
+ // Ignore any errors
237
+ }
238
+ })
239
+ proto = Object.getPrototypeOf(proto)
240
+ }
241
+
242
+ return {
243
+ functions: Array.from(functions).sort(),
244
+ properties: Array.from(properties).sort()
245
+ }
246
+ }
247
+ */
248
+ getWalletsMetadata() {
249
+ const metadata = {
250
+ eip6963: [],
251
+ walletStandard: [],
252
+ adapters: []
253
+ };
254
+ // Helper function to deep clean property values
255
+ const cleanPropertyValues = (values) => {
256
+ if (!values)
257
+ return {};
258
+ // Remove known problematic properties
259
+ const cleaned = { ...values };
260
+ delete cleaned.rpcEngine;
261
+ delete cleaned._rpcEngine;
262
+ delete cleaned.features;
263
+ try {
264
+ // Try to stringify and parse to ensure it's serializable
265
+ return JSON.parse(JSON.stringify(cleaned, (_key, value) => {
266
+ // Skip functions completely
267
+ if (typeof value === 'function') {
268
+ return undefined;
269
+ }
270
+ // Check if value has a toString that looks like a function
271
+ if (value && typeof value === 'object') {
272
+ const stringified = String(value);
273
+ if (stringified.includes('=>') ||
274
+ stringified.startsWith('function')) {
275
+ return undefined;
276
+ }
277
+ }
278
+ return value;
279
+ }));
280
+ }
281
+ catch {
282
+ // If that fails, do manual cleaning
283
+ const cleaned = {};
284
+ for (const key in values) {
285
+ const value = values[key];
286
+ // Skip functions and undefined values
287
+ if (typeof value !== 'function' && value !== undefined) {
288
+ // Additional check for function-like strings
289
+ const stringified = String(value);
290
+ if (!stringified.includes('=>') &&
291
+ !stringified.startsWith('function')) {
292
+ cleaned[key] = value;
293
+ }
294
+ }
295
+ }
296
+ return cleaned;
297
+ }
298
+ };
299
+ // Get EIP-6963 wallets with new structure - SIMPLIFIED
300
+ this.bridgeParent.getDetectedEip6963Wallets().forEach((wallet, uuid) => {
301
+ // Only expose essential EIP6963 provider methods
302
+ const essentialFunctions = ['request', 'on', 'removeListener'];
303
+ const availableFunctions = essentialFunctions.filter(fn => typeof wallet.provider[fn] === 'function');
304
+ // No properties needed for EIP6963 providers
305
+ const availableProperties = [];
306
+ const propertyValues = {};
307
+ // Create the wallet entry
308
+ const walletEntry = {
309
+ uuid,
310
+ info: wallet.info,
311
+ availableFunctions,
312
+ availableProperties,
313
+ propertyValues
314
+ };
315
+ // Verify it's serializable before adding
316
+ try {
317
+ JSON.parse(JSON.stringify(walletEntry));
318
+ metadata.eip6963.push(walletEntry);
319
+ }
320
+ catch (e) {
321
+ console.warn(`Skipping wallet ${wallet.info.name} - not serializable`);
322
+ }
323
+ });
324
+ // Get Wallet Standard wallets with new structure - SIMPLIFIED
325
+ this.bridgeParent.getDetectedWalletStandardWallets().forEach(detected => {
326
+ const { wallet, adapter } = detected;
327
+ // Get adapter members and property values - SIMPLIFIED
328
+ const adapterData = (() => {
329
+ try {
330
+ const solanaAdapter = adapter.getSolanaAdapter();
331
+ const targetAdapter = adapter.isSolana && solanaAdapter ? solanaAdapter : adapter;
332
+ // Only expose essential adapter methods and properties
333
+ const essentialFunctions = [
334
+ 'connect',
335
+ 'signMessage',
336
+ 'sendTransaction'
337
+ ];
338
+ const essentialProperties = ['name', 'publicKey'];
339
+ const availableFunctions = essentialFunctions.filter(fn => typeof targetAdapter[fn] === 'function');
340
+ const availableProperties = essentialProperties.filter(prop => {
341
+ try {
342
+ return targetAdapter[prop] !== undefined;
343
+ }
344
+ catch {
345
+ return false;
346
+ }
347
+ });
348
+ // Get property values for essential properties only
349
+ const propertyValues = {};
350
+ essentialProperties.forEach(prop => {
351
+ try {
352
+ const value = targetAdapter[prop];
353
+ if (value !== undefined && typeof value !== 'function') {
354
+ const serialized = this.serializeResult(value);
355
+ if (serialized !== undefined) {
356
+ propertyValues[prop] = serialized;
357
+ }
358
+ }
359
+ }
360
+ catch {
361
+ // Skip properties that can't be accessed or serialized
362
+ }
363
+ });
364
+ return {
365
+ functions: availableFunctions,
366
+ properties: availableProperties,
367
+ propertyValues
368
+ };
369
+ }
370
+ catch {
371
+ // If getting members fails, return empty arrays
372
+ return { functions: [], properties: [], propertyValues: {} };
373
+ }
374
+ })();
375
+ const walletStandardEntry = {
376
+ name: wallet.name,
377
+ icon: typeof wallet.icon === 'string'
378
+ ? wallet.icon
379
+ : wallet.icon?.light || '',
380
+ version: wallet.version,
381
+ chains: wallet.chains,
382
+ features: Object.keys(wallet.features),
383
+ availableFunctions: [], // Simplified - no wallet functions needed
384
+ availableProperties: [], // Simplified - no wallet properties needed
385
+ propertyValues: {},
386
+ adapter: {
387
+ name: adapter.name,
388
+ icon: adapter.icon,
389
+ version: adapter.version,
390
+ chains: adapter.chains,
391
+ isSolana: adapter.isSolana,
392
+ connected: adapter.connected,
393
+ features: adapter.getFeatures(),
394
+ availableFunctions: adapterData.functions,
395
+ availableProperties: adapterData.properties,
396
+ propertyValues: cleanPropertyValues(adapterData.propertyValues)
397
+ }
398
+ };
399
+ // Verify it's serializable before adding
400
+ try {
401
+ JSON.parse(JSON.stringify(walletStandardEntry));
402
+ metadata.walletStandard.push(walletStandardEntry);
403
+ }
404
+ catch (e) {
405
+ console.warn(`Skipping wallet standard ${wallet.name} - not serializable`, e);
406
+ }
407
+ });
408
+ // Final check - try to serialize the entire object
409
+ try {
410
+ JSON.parse(JSON.stringify(metadata));
411
+ }
412
+ catch (e) {
413
+ console.error('Metadata not fully serializable, applying deep clean:', e);
414
+ // If still not serializable, do a deep clean
415
+ const cleanMetadata = JSON.parse(JSON.stringify(metadata, (_key, value) => {
416
+ if (typeof value === 'function')
417
+ return undefined;
418
+ if (typeof value === 'symbol')
419
+ return undefined;
420
+ return value;
421
+ }));
422
+ return cleanMetadata;
423
+ }
424
+ return metadata;
425
+ }
426
+ async handleGetProperty(request) {
427
+ try {
428
+ const { target, property } = request;
429
+ let targetObject;
430
+ // Get the target object based on type
431
+ switch (target.type) {
432
+ case 'eip6963': {
433
+ const eip6963Wallet = this.bridgeParent
434
+ .getDetectedEip6963Wallets()
435
+ .get(target.identifier);
436
+ if (!eip6963Wallet) {
437
+ throw new Error(`EIP-6963 provider not found: ${target.identifier}`);
438
+ }
439
+ targetObject = eip6963Wallet.provider;
440
+ break;
441
+ }
442
+ case 'wallet-standard': {
443
+ const walletStandardWallet = this.bridgeParent
444
+ .getDetectedWalletStandardWallets()
445
+ .get(target.identifier);
446
+ if (!walletStandardWallet) {
447
+ throw new Error(`Wallet Standard wallet not found: ${target.identifier}`);
448
+ }
449
+ targetObject = walletStandardWallet.wallet;
450
+ break;
451
+ }
452
+ case 'adapter': {
453
+ const walletWithAdapter = this.bridgeParent
454
+ .getDetectedWalletStandardWallets()
455
+ .get(target.identifier);
456
+ if (!walletWithAdapter) {
457
+ throw new Error(`Adapter not found: ${target.identifier}`);
458
+ }
459
+ const standardAdapter = walletWithAdapter.adapter;
460
+ const solanaAdapter = standardAdapter.getSolanaAdapter();
461
+ targetObject = solanaAdapter || standardAdapter;
462
+ break;
463
+ }
464
+ default:
465
+ throw new Error(`Unknown target type: ${target.type}`);
466
+ }
467
+ // Get the property value
468
+ const value = targetObject[property];
469
+ // Serialize the value (handle non-serializable objects)
470
+ return this.serializeResult(value);
471
+ }
472
+ catch (error) {
473
+ return {
474
+ error: {
475
+ code: -32603,
476
+ message: error.message || 'Internal error',
477
+ data: error.stack
478
+ }
479
+ };
480
+ }
481
+ }
482
+ async handleRPC(request) {
483
+ try {
484
+ const { id, method, params = [], target } = request;
485
+ if (!target) {
486
+ throw new Error('Target not specified in RPC request');
487
+ }
488
+ let targetObject;
489
+ // Get the target object based on type
490
+ switch (target.type) {
491
+ case 'eip6963': {
492
+ const eip6963Wallet = this.bridgeParent
493
+ .getDetectedEip6963Wallets()
494
+ .get(target.identifier);
495
+ if (!eip6963Wallet) {
496
+ throw new Error(`EIP-6963 provider not found: ${target.identifier}`);
497
+ }
498
+ targetObject = eip6963Wallet.provider;
499
+ break;
500
+ }
501
+ case 'wallet-standard': {
502
+ const walletStandardWallet = this.bridgeParent
503
+ .getDetectedWalletStandardWallets()
504
+ .get(target.identifier);
505
+ if (!walletStandardWallet) {
506
+ throw new Error(`Wallet Standard wallet not found: ${target.identifier}`);
507
+ }
508
+ targetObject = walletStandardWallet.wallet;
509
+ break;
510
+ }
511
+ case 'adapter': {
512
+ const walletWithAdapter = this.bridgeParent
513
+ .getDetectedWalletStandardWallets()
514
+ .get(target.identifier);
515
+ if (!walletWithAdapter) {
516
+ throw new Error(`Adapter not found: ${target.identifier}`);
517
+ }
518
+ // Get the underlying Solana adapter if available
519
+ const standardAdapter = walletWithAdapter.adapter;
520
+ const solanaAdapter = standardAdapter.getSolanaAdapter();
521
+ // If trying to call a Solana-specific method without a Solana adapter
522
+ if (!solanaAdapter &&
523
+ ['connect', 'disconnect', 'sendTransaction'].includes(method)) {
524
+ throw new Error(`Method '${method}' requires a Solana wallet adapter`);
525
+ }
526
+ targetObject = solanaAdapter || standardAdapter;
527
+ break;
528
+ }
529
+ default:
530
+ throw new Error(`Unknown target type: ${target.type}`);
531
+ }
532
+ // Check if the method exists
533
+ if (!targetObject[method] || typeof targetObject[method] !== 'function') {
534
+ throw new Error(`Method not found: ${method}`);
535
+ }
536
+ // Call the method
537
+ const result = await targetObject[method](...params);
538
+ // Serialize the result (handle non-serializable objects)
539
+ const serializedResult = this.serializeResult(result);
540
+ return {
541
+ id,
542
+ result: serializedResult
543
+ };
544
+ }
545
+ catch (error) {
546
+ return {
547
+ id: request.id,
548
+ error: {
549
+ code: -32603,
550
+ message: error.message || 'Internal error',
551
+ data: error.stack
552
+ }
553
+ };
554
+ }
555
+ }
556
+ serializeResult(result) {
557
+ // Handle common non-serializable objects
558
+ if (result === null || result === undefined) {
559
+ return result;
560
+ }
561
+ // Skip functions entirely
562
+ if (typeof result === 'function') {
563
+ return undefined;
564
+ }
565
+ // Handle PublicKey objects (Solana)
566
+ if (result &&
567
+ typeof result === 'object' &&
568
+ result.constructor &&
569
+ result.constructor.name === 'PublicKey') {
570
+ return {
571
+ _type: 'PublicKey',
572
+ value: result.toString()
573
+ };
574
+ }
575
+ // Handle BN (BigNumber) objects
576
+ if (result &&
577
+ typeof result === 'object' &&
578
+ result._bn &&
579
+ typeof result.toString === 'function') {
580
+ return {
581
+ _type: 'PublicKey',
582
+ value: result.toString()
583
+ };
584
+ }
585
+ // Handle objects with toBase58 method (another Solana PublicKey pattern)
586
+ if (result &&
587
+ typeof result === 'object' &&
588
+ typeof result.toBase58 === 'function') {
589
+ return {
590
+ _type: 'PublicKey',
591
+ value: result.toBase58()
592
+ };
593
+ }
594
+ // Handle Uint8Array
595
+ if (result instanceof Uint8Array) {
596
+ return {
597
+ _type: 'Uint8Array',
598
+ value: Array.from(result)
599
+ };
600
+ }
601
+ // Handle arrays
602
+ if (Array.isArray(result)) {
603
+ return result.map(item => this.serializeResult(item));
604
+ }
605
+ // Handle objects - but be more careful to avoid circular references
606
+ if (typeof result === 'object') {
607
+ try {
608
+ // Try to convert to JSON first to check if it's serializable
609
+ JSON.stringify(result);
610
+ return result;
611
+ }
612
+ catch {
613
+ // If not directly serializable, try to extract essential properties
614
+ if (typeof result.toString === 'function') {
615
+ return result.toString();
616
+ }
617
+ // Return a placeholder for non-serializable objects
618
+ return '[Non-serializable Object]';
619
+ }
620
+ }
621
+ return result;
622
+ }
623
+ destroy() {
624
+ if (this.iframe) {
625
+ window.removeEventListener('message', this.handleMessage.bind(this));
626
+ this.iframe = null;
627
+ }
628
+ this.pendingRequests.clear();
629
+ }
630
+ }
631
+ //# sourceMappingURL=postmate-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postmate-bridge.js","sourceRoot":"","sources":["../src/postmate-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Wallet } from '@wallet-standard/base';
2
+ /**
3
+ * Adapter for Wallet Standard wallets to provide Solana adapter interface
4
+ */
5
+ export declare class StandardWalletAdapter {
6
+ private wallet;
7
+ constructor(wallet: Wallet);
8
+ /**
9
+ * Check if this is a Solana wallet
10
+ */
11
+ get isSolana(): boolean;
12
+ /**
13
+ * Get Solana adapter if available
14
+ */
15
+ getSolanaAdapter(): any;
16
+ }
17
+ //# sourceMappingURL=standard-wallet-adapter.d.ts.map