@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/ethereumProvider.d.ts +3 -0
- package/dist/{evmProvider.js → ethereumProvider.js} +18 -8
- package/dist/index.min.js +6 -6
- package/dist/index.min.js.map +4 -4
- package/dist/sdk.js +4 -3
- package/dist/solanaProvider.js +6 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +3 -2
- package/package.json +2 -2
- package/src/{evmProvider.ts → ethereumProvider.ts} +22 -8
- package/src/sdk.ts +4 -3
- package/src/solanaProvider.ts +6 -2
- package/src/types.ts +4 -2
- package/dist/evmProvider.d.ts +0 -3
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
|
-
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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:
|
|
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:
|
|
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 {
|
|
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:
|
|
138
|
-
|
|
138
|
+
ethProvider: ethereumProvider,
|
|
139
|
+
getEthereumProvider,
|
|
139
140
|
},
|
|
140
141
|
}
|
|
141
142
|
|
package/src/solanaProvider.ts
CHANGED
|
@@ -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
|
-
|
|
23
|
-
|
|
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
|
|
82
|
+
// Deprecated in favor of getEthereumProvider
|
|
81
83
|
ethProvider: Provider.Provider
|
|
82
|
-
|
|
84
|
+
getEthereumProvider: () => Promise<Provider.Provider | undefined>
|
|
83
85
|
}
|
|
84
86
|
} & Emitter
|
package/dist/evmProvider.d.ts
DELETED