@farcaster/frame-sdk 0.0.0-canary-20250511031627 → 0.0.0-canary-20250512194707

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/sdk.js CHANGED
@@ -1,7 +1,8 @@
1
- import { AddFrame, SignIn, createSolanaWalletProvider, } from '@farcaster/frame-core';
1
+ import { AddMiniApp, SignIn, } from '@farcaster/frame-core';
2
2
  import { EventEmitter } from 'eventemitter3';
3
+ import { evmProvider, getEvmProvider } from './evmProvider';
3
4
  import { frameHost } from './frameHost';
4
- import { provider } from './provider';
5
+ import { getSolanaProvider } from './solanaProvider';
5
6
  export function createEmitter() {
6
7
  const emitter = new EventEmitter();
7
8
  return {
@@ -60,8 +61,22 @@ async function isInMiniApp(timeoutMs = 50) {
60
61
  }
61
62
  return isInMiniApp;
62
63
  }
64
+ const addMiniApp = async () => {
65
+ const response = await frameHost.addFrame();
66
+ if (response.result) {
67
+ return response.result;
68
+ }
69
+ if (response.error.type === 'invalid_domain_manifest') {
70
+ throw new AddMiniApp.InvalidDomainManifest();
71
+ }
72
+ if (response.error.type === 'rejected_by_user') {
73
+ throw new AddMiniApp.RejectedByUser();
74
+ }
75
+ throw new Error('Unreachable');
76
+ };
63
77
  export const sdk = {
64
78
  ...emitter,
79
+ getCapabilities: frameHost.getCapabilities,
65
80
  isInMiniApp,
66
81
  context: frameHost.context,
67
82
  actions: {
@@ -83,19 +98,8 @@ export const sdk = {
83
98
  const url = typeof urlArg === 'string' ? urlArg : urlArg.url;
84
99
  return frameHost.openUrl(url.trim());
85
100
  },
86
- addFrame: async () => {
87
- const response = await frameHost.addFrame();
88
- if (response.result) {
89
- return response.result;
90
- }
91
- if (response.error.type === 'invalid_domain_manifest') {
92
- throw new AddFrame.InvalidDomainManifest();
93
- }
94
- if (response.error.type === 'rejected_by_user') {
95
- throw new AddFrame.RejectedByUser();
96
- }
97
- throw new Error('Unreachable');
98
- },
101
+ addFrame: addMiniApp,
102
+ addMiniApp,
99
103
  composeCast(options = {}) {
100
104
  return frameHost.composeCast(options);
101
105
  },
@@ -104,12 +108,11 @@ export const sdk = {
104
108
  viewToken: frameHost.viewToken.bind(frameHost),
105
109
  sendToken: frameHost.sendToken.bind(frameHost),
106
110
  swapToken: frameHost.swapToken.bind(frameHost),
107
- solanaProvider: frameHost.solanaProviderRequest
108
- ? createSolanaWalletProvider(frameHost.solanaProviderRequest)
109
- : undefined,
111
+ getSolanaProvider,
110
112
  },
111
113
  wallet: {
112
- ethProvider: provider,
114
+ ethProvider: evmProvider,
115
+ getEvmProvider: getEvmProvider,
113
116
  },
114
117
  };
115
118
  // Required to pass SSR
@@ -0,0 +1,3 @@
1
+ import { type SolanaWalletProvider } from '@farcaster/frame-core';
2
+ declare function getSolanaProvider(): Promise<SolanaWalletProvider | undefined>;
3
+ export { getSolanaProvider };
@@ -0,0 +1,11 @@
1
+ import { createSolanaWalletProvider, } from '@farcaster/frame-core';
2
+ import { frameHost } from './frameHost';
3
+ const solanaProvider = createSolanaWalletProvider(frameHost.solanaProviderRequest);
4
+ async function getSolanaProvider() {
5
+ const capabilities = await frameHost.getCapabilities();
6
+ if (!capabilities.includes('wallet.getSolanaProvider')) {
7
+ return undefined;
8
+ }
9
+ return solanaProvider;
10
+ }
11
+ export { getSolanaProvider };