@farcaster/frame-sdk 0.0.40 → 0.0.43

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/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { AddMiniApp, ComposeCast, Context, FrameNotificationDetails, GetCapabilities, Ready, SendToken, SetPrimaryButtonOptions, SignIn, SolanaWalletProvider, SwapToken, ViewProfile, ViewToken } from '@farcaster/frame-core';
1
+ import type { AddMiniApp, ComposeCast, Context, FrameNotificationDetails, GetCapabilities, GetChains, Ready, SendToken, SetPrimaryButtonOptions, SignIn, SolanaWalletProvider, SwapToken, ViewProfile, ViewToken } from '@farcaster/frame-core';
2
2
  import type { EventEmitter } from 'eventemitter3';
3
3
  import type * as Provider from 'ox/Provider';
4
4
  declare global {
@@ -30,6 +30,7 @@ export type Emitter = Compute<EventEmitter<EventMap>>;
30
30
  type SetPrimaryButton = (options: SetPrimaryButtonOptions) => Promise<void>;
31
31
  export type FrameSDK = {
32
32
  getCapabilities: GetCapabilities;
33
+ getChains: GetChains;
33
34
  isInMiniApp: () => Promise<boolean>;
34
35
  context: Promise<Context.FrameContext>;
35
36
  actions: {
@@ -51,7 +52,7 @@ export type FrameSDK = {
51
52
  };
52
53
  wallet: {
53
54
  ethProvider: Provider.Provider;
54
- getEvmProvider: () => Promise<Provider.Provider | undefined>;
55
+ getEthereumProvider: () => Promise<Provider.Provider | undefined>;
55
56
  };
56
57
  } & Emitter;
57
58
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farcaster/frame-sdk",
3
- "version": "0.0.40",
3
+ "version": "0.0.43",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,7 +22,7 @@
22
22
  "comlink": "^4.4.2",
23
23
  "eventemitter3": "^5.0.1",
24
24
  "ox": "^0.4.4",
25
- "@farcaster/frame-core": "0.0.36"
25
+ "@farcaster/frame-core": "0.0.38"
26
26
  },
27
27
  "scripts": {
28
28
  "clean": "rm -rf dist",
@@ -1,6 +1,7 @@
1
1
  import type {
2
2
  EthProviderWireEvent,
3
3
  FrameClientEvent,
4
+ MiniAppHostCapability,
4
5
  } from '@farcaster/frame-core'
5
6
  import type {
6
7
  AnnounceProviderParameters,
@@ -44,7 +45,7 @@ function toProviderRpcError({
44
45
  }
45
46
  }
46
47
 
47
- export const evmProvider: Provider.Provider = Provider.from({
48
+ export const ethereumProvider: Provider.Provider = Provider.from({
48
49
  ...emitter,
49
50
  async request(args) {
50
51
  // @ts-expect-error
@@ -83,12 +84,25 @@ export const evmProvider: Provider.Provider = Provider.from({
83
84
  },
84
85
  })
85
86
 
86
- export async function getEvmProvider(): Promise<Provider.Provider | undefined> {
87
- const capabilities = await frameHost.getCapabilities()
88
- if (!capabilities.includes('wallet.getEvmProvider')) {
89
- return undefined
87
+ export async function getEthereumProvider(): Promise<
88
+ Provider.Provider | undefined
89
+ > {
90
+ try {
91
+ const capabilities = await frameHost.getCapabilities()
92
+ if (
93
+ !capabilities.includes('wallet.getEthereumProvider') &&
94
+ !capabilities.includes('wallet.getEvmProvider' as MiniAppHostCapability)
95
+ ) {
96
+ // We used getEvmProvider for a short period before getEthereumProvider.
97
+ // In case we're talking to an old host, we check the old key.
98
+ return undefined
99
+ }
100
+ return ethereumProvider
101
+ } catch {
102
+ // If this is an old frame host that doesn't support getCapabilities,
103
+ // getEthereumProvider will assume that it's supported
104
+ return ethereumProvider
90
105
  }
91
- return evmProvider
92
106
  }
93
107
 
94
108
  function announceEvmProvider(
@@ -128,7 +142,7 @@ if (typeof document !== 'undefined') {
128
142
  if (frameEvent.event === 'eip6963:announceProvider') {
129
143
  announceEvmProvider({
130
144
  info: frameEvent.info,
131
- provider: evmProvider as EIP1193Provider,
145
+ provider: ethereumProvider as EIP1193Provider,
132
146
  })
133
147
  }
134
148
  }
@@ -160,7 +174,7 @@ if (typeof window !== 'undefined') {
160
174
  if (frameEvent.event === 'eip6963:announceProvider') {
161
175
  announceEvmProvider({
162
176
  info: frameEvent.info,
163
- provider: evmProvider as EIP1193Provider,
177
+ provider: ethereumProvider as EIP1193Provider,
164
178
  })
165
179
  }
166
180
  }
package/src/sdk.ts CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  createSolanaWalletProvider,
7
7
  } from '@farcaster/frame-core'
8
8
  import { EventEmitter } from 'eventemitter3'
9
- import { evmProvider, getEvmProvider } from './evmProvider'
9
+ import { ethereumProvider, getEthereumProvider } from './ethereumProvider'
10
10
  import { frameHost } from './frameHost'
11
11
  import { getSolanaProvider } from './solanaProvider'
12
12
  import type { Emitter, EventMap, FrameSDK } from './types'
@@ -98,6 +98,7 @@ const addMiniApp = async () => {
98
98
  export const sdk: FrameSDK = {
99
99
  ...emitter,
100
100
  getCapabilities: frameHost.getCapabilities,
101
+ getChains: frameHost.getChains,
101
102
  isInMiniApp,
102
103
  context: frameHost.context,
103
104
  actions: {
@@ -134,8 +135,8 @@ export const sdk: FrameSDK = {
134
135
  getSolanaProvider,
135
136
  },
136
137
  wallet: {
137
- ethProvider: evmProvider,
138
- getEvmProvider: getEvmProvider,
138
+ ethProvider: ethereumProvider,
139
+ getEthereumProvider,
139
140
  },
140
141
  }
141
142
 
@@ -1,4 +1,5 @@
1
1
  import {
2
+ type MiniAppHostCapability,
2
3
  type SolanaWalletProvider,
3
4
  type SolanaWireRequestFn,
4
5
  createSolanaWalletProvider,
@@ -19,8 +20,11 @@ if (solanaProviderRequest) {
19
20
  }
20
21
 
21
22
  async function getSolanaProvider(): Promise<SolanaWalletProvider | undefined> {
22
- const capabilities = await frameHost.getCapabilities()
23
- if (!capabilities.includes('wallet.getSolanaProvider')) {
23
+ let capabilities: MiniAppHostCapability[] | undefined
24
+ try {
25
+ capabilities = await frameHost.getCapabilities()
26
+ } catch {}
27
+ if (!capabilities?.includes('wallet.getSolanaProvider')) {
24
28
  return undefined
25
29
  }
26
30
  return solanaProvider
package/src/types.ts CHANGED
@@ -4,6 +4,7 @@ import type {
4
4
  Context,
5
5
  FrameNotificationDetails,
6
6
  GetCapabilities,
7
+ GetChains,
7
8
  Ready,
8
9
  SendToken,
9
10
  SetPrimaryButtonOptions,
@@ -54,6 +55,7 @@ type SetPrimaryButton = (options: SetPrimaryButtonOptions) => Promise<void>
54
55
 
55
56
  export type FrameSDK = {
56
57
  getCapabilities: GetCapabilities
58
+ getChains: GetChains
57
59
  isInMiniApp: () => Promise<boolean>
58
60
  context: Promise<Context.FrameContext>
59
61
  actions: {
@@ -77,8 +79,8 @@ export type FrameSDK = {
77
79
  getSolanaProvider: () => Promise<SolanaWalletProvider | undefined>
78
80
  }
79
81
  wallet: {
80
- // Deprecated in favor of getEvmProvider
82
+ // Deprecated in favor of getEthereumProvider
81
83
  ethProvider: Provider.Provider
82
- getEvmProvider: () => Promise<Provider.Provider | undefined>
84
+ getEthereumProvider: () => Promise<Provider.Provider | undefined>
83
85
  }
84
86
  } & Emitter
@@ -1,3 +0,0 @@
1
- import * as Provider from 'ox/Provider';
2
- export declare const evmProvider: Provider.Provider;
3
- export declare function getEvmProvider(): Promise<Provider.Provider | undefined>;