@farcaster/frame-sdk 0.0.39 → 0.0.41

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,33 +98,21 @@ 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
  },
102
- },
103
- experimental: {
104
106
  viewToken: frameHost.viewToken.bind(frameHost),
105
107
  sendToken: frameHost.sendToken.bind(frameHost),
106
108
  swapToken: frameHost.swapToken.bind(frameHost),
107
- solanaProvider: frameHost.solanaProviderRequest
108
- ? createSolanaWalletProvider(frameHost.solanaProviderRequest)
109
- : undefined,
109
+ },
110
+ experimental: {
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,19 @@
1
+ import { createSolanaWalletProvider, unwrapSolanaProviderRequest, } from '@farcaster/frame-core';
2
+ import { frameHost } from './frameHost';
3
+ const { solanaProviderRequest } = frameHost;
4
+ let solanaProvider;
5
+ if (solanaProviderRequest) {
6
+ solanaProvider = createSolanaWalletProvider(unwrapSolanaProviderRequest(solanaProviderRequest));
7
+ }
8
+ async function getSolanaProvider() {
9
+ let capabilities;
10
+ try {
11
+ capabilities = await frameHost.getCapabilities();
12
+ }
13
+ catch { }
14
+ if (!capabilities?.includes('wallet.getSolanaProvider')) {
15
+ return undefined;
16
+ }
17
+ return solanaProvider;
18
+ }
19
+ export { getSolanaProvider };