@farcaster/frame-sdk 0.0.0-canary-20250510210542 → 0.0.0-canary-20250512185912
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/evmProvider.d.ts +3 -0
- package/dist/{provider.js → evmProvider.js} +13 -6
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +4 -4
- package/dist/sdk.js +7 -6
- package/dist/solanaProvider.d.ts +3 -0
- package/dist/solanaProvider.js +11 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +4 -2
- package/package.json +2 -2
- package/src/{provider.ts → evmProvider.ts} +14 -6
- package/src/sdk.ts +6 -7
- package/src/solanaProvider.ts +21 -0
- package/src/types.ts +5 -1
- package/dist/provider.d.ts +0 -2
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AddFrame, ComposeCast, Context, FrameNotificationDetails, Ready, SendToken, SetPrimaryButtonOptions, SignIn, SolanaWalletProvider, SwapToken, ViewProfile, ViewToken } from '@farcaster/frame-core';
|
|
1
|
+
import type { AddFrame, ComposeCast, Context, FrameNotificationDetails, GetCapabilities, 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 {
|
|
@@ -29,6 +29,7 @@ export type EventMap = {
|
|
|
29
29
|
export type Emitter = Compute<EventEmitter<EventMap>>;
|
|
30
30
|
type SetPrimaryButton = (options: SetPrimaryButtonOptions) => Promise<void>;
|
|
31
31
|
export type FrameSDK = {
|
|
32
|
+
getCapabilities: GetCapabilities;
|
|
32
33
|
isInMiniApp: () => Promise<boolean>;
|
|
33
34
|
context: Promise<Context.FrameContext>;
|
|
34
35
|
actions: {
|
|
@@ -45,10 +46,11 @@ export type FrameSDK = {
|
|
|
45
46
|
viewToken: ViewToken.ViewToken;
|
|
46
47
|
sendToken: SendToken.SendToken;
|
|
47
48
|
swapToken: SwapToken.SwapToken;
|
|
48
|
-
|
|
49
|
+
getSolanaProvider: () => Promise<SolanaWalletProvider | undefined>;
|
|
49
50
|
};
|
|
50
51
|
wallet: {
|
|
51
52
|
ethProvider: Provider.Provider;
|
|
53
|
+
getEvmProvider: () => Promise<Provider.Provider | undefined>;
|
|
52
54
|
};
|
|
53
55
|
} & Emitter;
|
|
54
56
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farcaster/frame-sdk",
|
|
3
|
-
"version": "0.0.0-canary-
|
|
3
|
+
"version": "0.0.0-canary-20250512185912",
|
|
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.0-canary-
|
|
25
|
+
"@farcaster/frame-core": "0.0.0-canary-20250512185912"
|
|
26
26
|
},
|
|
27
27
|
"scripts": {
|
|
28
28
|
"clean": "rm -rf dist",
|
|
@@ -44,7 +44,7 @@ function toProviderRpcError({
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
export const
|
|
47
|
+
export const evmProvider: Provider.Provider = Provider.from({
|
|
48
48
|
...emitter,
|
|
49
49
|
async request(args) {
|
|
50
50
|
// @ts-expect-error
|
|
@@ -83,7 +83,15 @@ export const provider: Provider.Provider = Provider.from({
|
|
|
83
83
|
},
|
|
84
84
|
})
|
|
85
85
|
|
|
86
|
-
function
|
|
86
|
+
export async function getEvmProvider(): Promise<Provider.Provider | undefined> {
|
|
87
|
+
const capabilities = await frameHost.getCapabilities()
|
|
88
|
+
if (!capabilities.includes('wallet.getEvmProvider')) {
|
|
89
|
+
return undefined
|
|
90
|
+
}
|
|
91
|
+
return evmProvider
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function announceEvmProvider(
|
|
87
95
|
detail: AnnounceProviderParameters,
|
|
88
96
|
): AnnounceProviderReturnType {
|
|
89
97
|
const event: CustomEvent<EIP6963ProviderDetail> = new CustomEvent(
|
|
@@ -118,9 +126,9 @@ if (typeof document !== 'undefined') {
|
|
|
118
126
|
if (event instanceof MessageEvent) {
|
|
119
127
|
const frameEvent = event.data as FrameClientEvent
|
|
120
128
|
if (frameEvent.event === 'eip6963:announceProvider') {
|
|
121
|
-
|
|
129
|
+
announceEvmProvider({
|
|
122
130
|
info: frameEvent.info,
|
|
123
|
-
provider:
|
|
131
|
+
provider: evmProvider as EIP1193Provider,
|
|
124
132
|
})
|
|
125
133
|
}
|
|
126
134
|
}
|
|
@@ -150,9 +158,9 @@ if (typeof window !== 'undefined') {
|
|
|
150
158
|
if (event.data.type === 'frameEvent') {
|
|
151
159
|
const frameEvent = event.data.event as FrameClientEvent
|
|
152
160
|
if (frameEvent.event === 'eip6963:announceProvider') {
|
|
153
|
-
|
|
161
|
+
announceEvmProvider({
|
|
154
162
|
info: frameEvent.info,
|
|
155
|
-
provider:
|
|
163
|
+
provider: evmProvider as EIP1193Provider,
|
|
156
164
|
})
|
|
157
165
|
}
|
|
158
166
|
}
|
package/src/sdk.ts
CHANGED
|
@@ -6,8 +6,9 @@ import {
|
|
|
6
6
|
createSolanaWalletProvider,
|
|
7
7
|
} from '@farcaster/frame-core'
|
|
8
8
|
import { EventEmitter } from 'eventemitter3'
|
|
9
|
+
import { evmProvider, getEvmProvider } from './evmProvider'
|
|
9
10
|
import { frameHost } from './frameHost'
|
|
10
|
-
import {
|
|
11
|
+
import { getSolanaProvider } from './solanaProvider'
|
|
11
12
|
import type { Emitter, EventMap, FrameSDK } from './types'
|
|
12
13
|
|
|
13
14
|
export function createEmitter(): Emitter {
|
|
@@ -79,6 +80,7 @@ async function isInMiniApp(timeoutMs = 50): Promise<boolean> {
|
|
|
79
80
|
|
|
80
81
|
export const sdk: FrameSDK = {
|
|
81
82
|
...emitter,
|
|
83
|
+
getCapabilities: frameHost.getCapabilities,
|
|
82
84
|
isInMiniApp,
|
|
83
85
|
context: frameHost.context,
|
|
84
86
|
actions: {
|
|
@@ -126,14 +128,11 @@ export const sdk: FrameSDK = {
|
|
|
126
128
|
viewToken: frameHost.viewToken.bind(frameHost),
|
|
127
129
|
sendToken: frameHost.sendToken.bind(frameHost),
|
|
128
130
|
swapToken: frameHost.swapToken.bind(frameHost),
|
|
129
|
-
|
|
130
|
-
? createSolanaWalletProvider(
|
|
131
|
-
frameHost.solanaProviderRequest as unknown as SolanaRequestFn,
|
|
132
|
-
)
|
|
133
|
-
: undefined,
|
|
131
|
+
getSolanaProvider,
|
|
134
132
|
},
|
|
135
133
|
wallet: {
|
|
136
|
-
ethProvider:
|
|
134
|
+
ethProvider: evmProvider,
|
|
135
|
+
getEvmProvider: getEvmProvider,
|
|
137
136
|
},
|
|
138
137
|
}
|
|
139
138
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type SolanaRequestFn,
|
|
3
|
+
type SolanaWalletProvider,
|
|
4
|
+
createSolanaWalletProvider,
|
|
5
|
+
} from '@farcaster/frame-core'
|
|
6
|
+
|
|
7
|
+
import { frameHost } from './frameHost'
|
|
8
|
+
|
|
9
|
+
const solanaProvider = createSolanaWalletProvider(
|
|
10
|
+
frameHost.solanaProviderRequest as unknown as SolanaRequestFn,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
async function getSolanaProvider(): Promise<SolanaWalletProvider | undefined> {
|
|
14
|
+
const capabilities = await frameHost.getCapabilities()
|
|
15
|
+
if (!capabilities.includes('wallet.getSolanaProvider')) {
|
|
16
|
+
return undefined
|
|
17
|
+
}
|
|
18
|
+
return solanaProvider
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { getSolanaProvider }
|
package/src/types.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type {
|
|
|
3
3
|
ComposeCast,
|
|
4
4
|
Context,
|
|
5
5
|
FrameNotificationDetails,
|
|
6
|
+
GetCapabilities,
|
|
6
7
|
Ready,
|
|
7
8
|
SendToken,
|
|
8
9
|
SetPrimaryButtonOptions,
|
|
@@ -52,6 +53,7 @@ export type Emitter = Compute<EventEmitter<EventMap>>
|
|
|
52
53
|
type SetPrimaryButton = (options: SetPrimaryButtonOptions) => Promise<void>
|
|
53
54
|
|
|
54
55
|
export type FrameSDK = {
|
|
56
|
+
getCapabilities: GetCapabilities
|
|
55
57
|
isInMiniApp: () => Promise<boolean>
|
|
56
58
|
context: Promise<Context.FrameContext>
|
|
57
59
|
actions: {
|
|
@@ -70,9 +72,11 @@ export type FrameSDK = {
|
|
|
70
72
|
viewToken: ViewToken.ViewToken
|
|
71
73
|
sendToken: SendToken.SendToken
|
|
72
74
|
swapToken: SwapToken.SwapToken
|
|
73
|
-
|
|
75
|
+
getSolanaProvider: () => Promise<SolanaWalletProvider | undefined>
|
|
74
76
|
}
|
|
75
77
|
wallet: {
|
|
78
|
+
// Deprecated in favor of getEvmProvider
|
|
76
79
|
ethProvider: Provider.Provider
|
|
80
|
+
getEvmProvider: () => Promise<Provider.Provider | undefined>
|
|
77
81
|
}
|
|
78
82
|
} & Emitter
|
package/dist/provider.d.ts
DELETED