@farcaster/frame-wagmi-connector 0.0.53 → 1.0.1

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/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@farcaster/frame-wagmi-connector",
3
- "version": "0.0.53",
3
+ "version": "1.0.1",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
7
- "url": "https://github.com/farcasterxyz/frames.git",
7
+ "url": "https://github.com/farcasterxyz/miniapps.git",
8
8
  "directory": "packages/frame-wagmi-connector"
9
9
  },
10
10
  "type": "module",
@@ -17,17 +17,21 @@
17
17
  "@wagmi/core": "^2.16.3",
18
18
  "typescript": "^5.8.3",
19
19
  "viem": "^2.21.57",
20
- "@farcaster/frame-sdk": "0.0.64",
21
- "@farcaster/tsconfig": "0.0.5"
20
+ "@farcaster/frame-sdk": "0.1.14",
21
+ "@farcaster/miniapp-wagmi-connector": "1.1.1",
22
+ "@farcaster/tsconfig": "0.1.1"
22
23
  },
23
24
  "publishConfig": {
24
25
  "access": "public"
25
26
  },
26
27
  "peerDependencies": {
27
- "@farcaster/frame-sdk": "^0.0.64",
28
+ "@farcaster/frame-sdk": "^0.1.14",
28
29
  "@wagmi/core": "^2.14.1",
29
30
  "viem": "^2.21.55"
30
31
  },
32
+ "engines": {
33
+ "node": ">=22.11.0"
34
+ },
31
35
  "scripts": {
32
36
  "clean": "rm -rf dist",
33
37
  "prebuild": "npm run clean",
package/src/index.ts CHANGED
@@ -1,5 +1,30 @@
1
- import { farcasterFrame } from './connector.js'
1
+ // Deprecation warning
2
+ if (typeof console !== 'undefined' && console.warn) {
3
+ console.warn(
4
+ '@farcaster/frame-wagmi-connector is deprecated. Please use @farcaster/miniapp-wagmi-connector instead.',
5
+ )
6
+ }
2
7
 
3
- export * from './connector.js'
8
+ // Re-export everything from miniapp-wagmi-connector
9
+ export * from '@farcaster/miniapp-wagmi-connector'
10
+
11
+ // Import and re-export for backward compatibility
12
+ import { farcasterFrame as _farcasterFrame } from '@farcaster/miniapp-wagmi-connector'
13
+
14
+ // Add deprecation warning when farcasterFrame is used
15
+ let farcasterFrameWarningShown = false
16
+ export const farcasterFrame = () => {
17
+ if (
18
+ !farcasterFrameWarningShown &&
19
+ typeof console !== 'undefined' &&
20
+ console.warn
21
+ ) {
22
+ farcasterFrameWarningShown = true
23
+ console.warn(
24
+ 'farcasterFrame() is deprecated. Please use the new import syntax from @farcaster/miniapp-wagmi-connector.',
25
+ )
26
+ }
27
+ return _farcasterFrame()
28
+ }
4
29
 
5
30
  export default farcasterFrame
@@ -1,444 +0,0 @@
1
- export declare function farcasterFrame(): import("@wagmi/core").CreateConnectorFn<{
2
- request: import("ox/Provider").RequestFn<{
3
- Request: {
4
- method: "eth_accounts";
5
- params?: undefined;
6
- };
7
- ReturnType: readonly import("ox/Address").Address[];
8
- } | {
9
- Request: {
10
- method: "eth_blobBaseFee";
11
- params?: undefined;
12
- };
13
- ReturnType: import("ox/Hex").Hex;
14
- } | {
15
- Request: {
16
- method: "eth_blockNumber";
17
- params?: undefined;
18
- };
19
- ReturnType: import("ox/Hex").Hex;
20
- } | {
21
- Request: {
22
- method: "eth_call";
23
- params: [transaction: import("ox/TransactionRequest").Rpc] | [transaction: import("ox/TransactionRequest").Rpc, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier] | [transaction: import("ox/TransactionRequest").Rpc, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier, stateOverride: unknown];
24
- };
25
- ReturnType: import("ox/Hex").Hex;
26
- } | {
27
- Request: {
28
- method: "eth_chainId";
29
- params?: undefined;
30
- };
31
- ReturnType: import("ox/Hex").Hex;
32
- } | {
33
- Request: {
34
- method: "eth_coinbase";
35
- params?: undefined;
36
- };
37
- ReturnType: import("ox/Address").Address;
38
- } | {
39
- Request: {
40
- method: "eth_estimateGas";
41
- params: [transaction: import("ox/TransactionRequest").Rpc] | [transaction: import("ox/TransactionRequest").Rpc, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier] | [transaction: import("ox/TransactionRequest").Rpc, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier, stateOverride: unknown];
42
- };
43
- ReturnType: import("ox/Hex").Hex;
44
- } | {
45
- Request: {
46
- method: "eth_feeHistory";
47
- params: [blockCount: import("ox/Hex").Hex, newestBlock: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag, rewardPercentiles: number[] | undefined];
48
- };
49
- ReturnType: import("ox/Fee").FeeHistoryRpc;
50
- } | {
51
- Request: {
52
- method: "eth_gasPrice";
53
- params?: undefined;
54
- };
55
- ReturnType: import("ox/Hex").Hex;
56
- } | {
57
- Request: {
58
- method: "eth_getBalance";
59
- params: [address: import("ox/Address").Address, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier];
60
- };
61
- ReturnType: import("ox/Hex").Hex;
62
- } | {
63
- Request: {
64
- method: "eth_getBlockByHash";
65
- params: [hash: import("ox/Hex").Hex, includeTransactionObjects: boolean];
66
- };
67
- ReturnType: import("ox/Block").Rpc | null;
68
- } | {
69
- Request: {
70
- method: "eth_getBlockByNumber";
71
- params: [block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag, includeTransactionObjects: boolean];
72
- };
73
- ReturnType: import("ox/Block").Rpc | null;
74
- } | {
75
- Request: {
76
- method: "eth_getBlockTransactionCountByHash";
77
- params: [hash: import("ox/Hex").Hex];
78
- };
79
- ReturnType: import("ox/Hex").Hex;
80
- } | {
81
- Request: {
82
- method: "eth_getBlockTransactionCountByNumber";
83
- params: [block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag];
84
- };
85
- ReturnType: import("ox/Hex").Hex;
86
- } | {
87
- Request: {
88
- method: "eth_getCode";
89
- params: [address: import("ox/Address").Address, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier];
90
- };
91
- ReturnType: import("ox/Hex").Hex;
92
- } | {
93
- Request: {
94
- method: "eth_getFilterChanges";
95
- params: [filterId: import("ox/Hex").Hex];
96
- };
97
- ReturnType: readonly import("ox/Log").Rpc[] | readonly import("ox/Hex").Hex[];
98
- } | {
99
- Request: {
100
- method: "eth_getFilterLogs";
101
- params: [filterId: import("ox/Hex").Hex];
102
- };
103
- ReturnType: readonly import("ox/Log").Rpc[];
104
- } | {
105
- Request: {
106
- method: "eth_getLogs";
107
- params: [filter: import("ox/Filter").Rpc];
108
- };
109
- ReturnType: readonly import("ox/Log").Rpc[];
110
- } | {
111
- Request: {
112
- method: "eth_getProof";
113
- params: [address: import("ox/Address").Address, storageKeys: import("ox/Hex").Hex[], block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier];
114
- };
115
- ReturnType: import("ox/AccountProof").Rpc;
116
- } | {
117
- Request: {
118
- method: "eth_getStorageAt";
119
- params: [address: import("ox/Address").Address, index: import("ox/Hex").Hex, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier];
120
- };
121
- ReturnType: import("ox/Hex").Hex;
122
- } | {
123
- Request: {
124
- method: "eth_getTransactionByBlockHashAndIndex";
125
- params: [hash: import("ox/Hex").Hex, index: import("ox/Hex").Hex];
126
- };
127
- ReturnType: import("ox/Transaction").Rpc | null;
128
- } | {
129
- Request: {
130
- method: "eth_getTransactionByBlockNumberAndIndex";
131
- params: [block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag, index: import("ox/Hex").Hex];
132
- };
133
- ReturnType: import("ox/Transaction").Rpc | null;
134
- } | {
135
- Request: {
136
- method: "eth_getTransactionByHash";
137
- params: [hash: import("ox/Hex").Hex];
138
- };
139
- ReturnType: import("ox/Transaction").Rpc | null;
140
- } | {
141
- Request: {
142
- method: "eth_getTransactionCount";
143
- params: [address: import("ox/Address").Address, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier];
144
- };
145
- ReturnType: import("ox/Hex").Hex;
146
- } | {
147
- Request: {
148
- method: "eth_getTransactionReceipt";
149
- params: [hash: import("ox/Hex").Hex];
150
- };
151
- ReturnType: import("ox/TransactionReceipt").Rpc | null;
152
- } | {
153
- Request: {
154
- method: "eth_getUncleCountByBlockHash";
155
- params: [hash: import("ox/Hex").Hex];
156
- };
157
- ReturnType: import("ox/Hex").Hex;
158
- } | {
159
- Request: {
160
- method: "eth_getUncleCountByBlockNumber";
161
- params: [block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag];
162
- };
163
- ReturnType: import("ox/Hex").Hex;
164
- } | {
165
- Request: {
166
- method: "eth_maxPriorityFeePerGas";
167
- params?: undefined;
168
- };
169
- ReturnType: import("ox/Hex").Hex;
170
- } | {
171
- Request: {
172
- method: "eth_newBlockFilter";
173
- params?: undefined;
174
- };
175
- ReturnType: import("ox/Hex").Hex;
176
- } | {
177
- Request: {
178
- method: "eth_newFilter";
179
- params: [filter: import("ox/Filter").Rpc];
180
- };
181
- ReturnType: import("ox/Hex").Hex;
182
- } | {
183
- Request: {
184
- method: "eth_newPendingTransactionFilter";
185
- params?: undefined;
186
- };
187
- ReturnType: import("ox/Hex").Hex;
188
- } | {
189
- Request: {
190
- method: "eth_protocolVersion";
191
- params?: undefined;
192
- };
193
- ReturnType: string;
194
- } | {
195
- Request: {
196
- method: "eth_requestAccounts";
197
- params?: undefined;
198
- };
199
- ReturnType: readonly import("ox/Address").Address[];
200
- } | {
201
- Request: {
202
- method: "eth_sendRawTransaction";
203
- params: [serializedTransaction: import("ox/Hex").Hex];
204
- };
205
- ReturnType: import("ox/Hex").Hex;
206
- } | {
207
- Request: {
208
- method: "eth_sendTransaction";
209
- params: [transaction: import("ox/TransactionRequest").Rpc];
210
- };
211
- ReturnType: import("ox/Hex").Hex;
212
- } | {
213
- Request: {
214
- method: "eth_signTransaction";
215
- params: [request: import("ox/TransactionRequest").Rpc];
216
- };
217
- ReturnType: import("ox/Hex").Hex;
218
- } | {
219
- Request: {
220
- method: "eth_signTypedData_v4";
221
- params: [address: import("ox/Address").Address, message: string];
222
- };
223
- ReturnType: import("ox/Hex").Hex;
224
- } | {
225
- Request: {
226
- method: "eth_uninstallFilter";
227
- params: [filterId: import("ox/Hex").Hex];
228
- };
229
- ReturnType: boolean;
230
- } | {
231
- Request: {
232
- method: "eth_requestAccounts";
233
- params?: undefined;
234
- };
235
- ReturnType: readonly import("ox/Address").Address[];
236
- } | {
237
- Request: {
238
- method: "eth_sendRawTransaction";
239
- params: [serializedTransaction: import("ox/Hex").Hex];
240
- };
241
- ReturnType: import("ox/Hex").Hex;
242
- } | {
243
- Request: {
244
- method: "eth_sendTransaction";
245
- params: [transaction: import("ox/TransactionRequest").Rpc];
246
- };
247
- ReturnType: import("ox/Hex").Hex;
248
- } | {
249
- Request: {
250
- method: "eth_signTransaction";
251
- params: [request: import("ox/TransactionRequest").Rpc];
252
- };
253
- ReturnType: import("ox/Hex").Hex;
254
- } | {
255
- Request: {
256
- method: "eth_signTypedData_v4";
257
- params: [address: import("ox/Address").Address, message: string];
258
- };
259
- ReturnType: import("ox/Hex").Hex;
260
- } | {
261
- Request: {
262
- method: "personal_sign";
263
- params: [data: import("ox/Hex").Hex, address: import("ox/Address").Address];
264
- };
265
- ReturnType: import("ox/Hex").Hex;
266
- } | {
267
- Request: {
268
- method: "wallet_addEthereumChain";
269
- params: [chain: {
270
- chainId: string;
271
- chainName: string;
272
- nativeCurrency?: {
273
- name: string;
274
- symbol: string;
275
- decimals: number;
276
- } | undefined | undefined;
277
- rpcUrls: readonly string[];
278
- blockExplorerUrls?: readonly string[] | undefined;
279
- iconUrls?: readonly string[] | undefined;
280
- }];
281
- };
282
- ReturnType: null;
283
- } | {
284
- Request: {
285
- method: "wallet_getCallsStatus";
286
- params?: [string];
287
- };
288
- ReturnType: {
289
- status: "PENDING" | "CONFIRMED";
290
- receipts?: readonly {
291
- logs: {
292
- address: import("ox/Hex").Hex;
293
- data: import("ox/Hex").Hex;
294
- topics: readonly import("ox/Hex").Hex[];
295
- }[];
296
- status: import("ox/Hex").Hex;
297
- blockHash: import("ox/Hex").Hex;
298
- blockNumber: import("ox/Hex").Hex;
299
- gasUsed: import("ox/Hex").Hex;
300
- transactionHash: import("ox/Hex").Hex;
301
- }[] | undefined;
302
- };
303
- } | {
304
- Request: {
305
- method: "wallet_getCapabilities";
306
- params?: [import("ox/Address").Address];
307
- };
308
- ReturnType: {
309
- [x: `0x${string}`]: {
310
- [capability: string]: any;
311
- };
312
- };
313
- } | {
314
- Request: {
315
- method: "wallet_getPermissions";
316
- params?: undefined;
317
- };
318
- ReturnType: readonly {
319
- caveats: readonly {
320
- type: string;
321
- value: any;
322
- }[];
323
- date: number;
324
- id: string;
325
- invoker: `http://${string}` | `https://${string}`;
326
- parentCapability: "eth_accounts" | string;
327
- }[];
328
- } | {
329
- Request: {
330
- method: "wallet_grantPermissions";
331
- params?: [{
332
- signer?: {
333
- type: string;
334
- data?: unknown | undefined;
335
- } | undefined;
336
- permissions: readonly {
337
- data: unknown;
338
- policies: readonly {
339
- data: unknown;
340
- type: string;
341
- }[];
342
- required?: boolean | undefined;
343
- type: string;
344
- }[];
345
- expiry: number;
346
- }];
347
- };
348
- ReturnType: {
349
- expiry: number;
350
- factory?: `0x${string}` | undefined | undefined;
351
- factoryData?: string | undefined | undefined;
352
- grantedPermissions: readonly {
353
- data: unknown;
354
- policies: readonly {
355
- data: unknown;
356
- type: string;
357
- }[];
358
- required?: boolean | undefined;
359
- type: string;
360
- }[];
361
- permissionsContext: string;
362
- signerData?: {
363
- userOpBuilder?: `0x${string}` | undefined;
364
- submitToAddress?: `0x${string}` | undefined;
365
- } | undefined | undefined;
366
- };
367
- } | {
368
- Request: {
369
- method: "wallet_requestPermissions";
370
- params: [permissions: {
371
- eth_accounts: Record<string, any>;
372
- }];
373
- };
374
- ReturnType: readonly {
375
- caveats: readonly {
376
- type: string;
377
- value: any;
378
- }[];
379
- date: number;
380
- id: string;
381
- invoker: `http://${string}` | `https://${string}`;
382
- parentCapability: "eth_accounts" | string;
383
- }[];
384
- } | {
385
- Request: {
386
- method: "wallet_revokePermissions";
387
- params: [permissions: {
388
- eth_accounts: Record<string, any>;
389
- }];
390
- };
391
- ReturnType: null;
392
- } | {
393
- Request: {
394
- method: "wallet_sendCalls";
395
- params: [{
396
- calls: readonly {
397
- to?: import("ox/Address").Address | undefined;
398
- data?: import("ox/Hex").Hex | undefined;
399
- value?: import("ox/Hex").Hex | undefined;
400
- }[];
401
- capabilities?: {
402
- [capability: string]: any;
403
- } | undefined;
404
- chainId?: import("ox/Hex").Hex | undefined;
405
- from: import("ox/Address").Address;
406
- version: string;
407
- }];
408
- };
409
- ReturnType: string;
410
- } | {
411
- Request: {
412
- method: "wallet_showCallsStatus";
413
- params: [string];
414
- };
415
- ReturnType: undefined;
416
- } | {
417
- Request: {
418
- method: "wallet_switchEthereumChain";
419
- params: [chain: {
420
- chainId: string;
421
- }];
422
- };
423
- ReturnType: null;
424
- } | {
425
- Request: {
426
- method: "wallet_watchAsset";
427
- params: [{
428
- type: "ERC20";
429
- options: {
430
- address: string;
431
- symbol: string;
432
- decimals: number;
433
- image?: string | undefined;
434
- };
435
- }];
436
- };
437
- ReturnType: boolean;
438
- }>;
439
- on: import("ox/Provider").EventListenerFn;
440
- removeListener: import("ox/Provider").EventListenerFn;
441
- }, Record<string, unknown>, Record<string, unknown>>;
442
- export declare namespace farcasterFrame {
443
- var type: "farcasterFrame";
444
- }
package/dist/connector.js DELETED
@@ -1,129 +0,0 @@
1
- import FrameSDK from '@farcaster/frame-sdk';
2
- import { ChainNotConfiguredError, createConnector, } from '@wagmi/core';
3
- import { SwitchChainError, fromHex, getAddress, numberToHex } from 'viem';
4
- farcasterFrame.type = 'farcasterFrame';
5
- let accountsChanged;
6
- let chainChanged;
7
- let disconnect;
8
- export function farcasterFrame() {
9
- return createConnector((config) => ({
10
- id: 'farcaster',
11
- name: 'Farcaster',
12
- rdns: 'xyz.farcaster.MiniAppWallet',
13
- icon: 'https://imagedelivery.net/BXluQx4ige9GuW0Ia56BHw/055c25d6-7fe7-4a49-abf9-49772021cf00/original',
14
- type: farcasterFrame.type,
15
- async connect({ chainId } = {}) {
16
- const provider = await this.getProvider();
17
- const accounts = await provider.request({
18
- method: 'eth_requestAccounts',
19
- });
20
- let targetChainId = chainId;
21
- if (!targetChainId) {
22
- const state = (await config.storage?.getItem('state')) ?? {};
23
- const isChainSupported = config.chains.some((x) => x.id === state.chainId);
24
- if (isChainSupported)
25
- targetChainId = state.chainId;
26
- else
27
- targetChainId = config.chains[0]?.id;
28
- }
29
- if (!targetChainId)
30
- throw new Error('No chains found on connector.');
31
- if (!accountsChanged) {
32
- accountsChanged = this.onAccountsChanged.bind(this);
33
- // @ts-expect-error - provider type is stricter
34
- provider.on('accountsChanged', accountsChanged);
35
- }
36
- if (!chainChanged) {
37
- chainChanged = this.onChainChanged.bind(this);
38
- provider.on('chainChanged', chainChanged);
39
- }
40
- if (!disconnect) {
41
- disconnect = this.onDisconnect.bind(this);
42
- provider.on('disconnect', disconnect);
43
- }
44
- let currentChainId = await this.getChainId();
45
- if (targetChainId && currentChainId !== targetChainId) {
46
- const chain = await this.switchChain({ chainId: targetChainId });
47
- currentChainId = chain.id;
48
- }
49
- return {
50
- accounts: accounts.map((x) => getAddress(x)),
51
- chainId: currentChainId,
52
- };
53
- },
54
- async disconnect() {
55
- const provider = await this.getProvider();
56
- if (accountsChanged) {
57
- // @ts-expect-error - provider type is stricter
58
- provider.removeListener('accountsChanged', accountsChanged);
59
- accountsChanged = undefined;
60
- }
61
- if (chainChanged) {
62
- provider.removeListener('chainChanged', chainChanged);
63
- chainChanged = undefined;
64
- }
65
- if (disconnect) {
66
- provider.removeListener('disconnect', disconnect);
67
- disconnect = undefined;
68
- }
69
- },
70
- async getAccounts() {
71
- const provider = await this.getProvider();
72
- const accounts = await provider.request({
73
- method: 'eth_accounts',
74
- });
75
- return accounts.map((x) => getAddress(x));
76
- },
77
- async getChainId() {
78
- const provider = await this.getProvider();
79
- const hexChainId = await provider.request({ method: 'eth_chainId' });
80
- return fromHex(hexChainId, 'number');
81
- },
82
- async isAuthorized() {
83
- try {
84
- const accounts = await this.getAccounts();
85
- return !!accounts.length;
86
- }
87
- catch {
88
- return false;
89
- }
90
- },
91
- async switchChain({ chainId }) {
92
- const provider = await this.getProvider();
93
- const chain = config.chains.find((x) => x.id === chainId);
94
- if (!chain) {
95
- throw new SwitchChainError(new ChainNotConfiguredError());
96
- }
97
- await provider.request({
98
- method: 'wallet_switchEthereumChain',
99
- params: [{ chainId: numberToHex(chainId) }],
100
- });
101
- // providers should start emitting these events - remove when hosts have upgraded
102
- //
103
- // explicitly emit this event as a workaround for ethereum provider not
104
- // emitting events, can remove once events are flowing
105
- config.emitter.emit('change', { chainId });
106
- return chain;
107
- },
108
- onAccountsChanged(accounts) {
109
- if (accounts.length === 0) {
110
- this.onDisconnect();
111
- }
112
- else {
113
- config.emitter.emit('change', {
114
- accounts: accounts.map((x) => getAddress(x)),
115
- });
116
- }
117
- },
118
- onChainChanged(chain) {
119
- const chainId = Number(chain);
120
- config.emitter.emit('change', { chainId });
121
- },
122
- async onDisconnect() {
123
- config.emitter.emit('disconnect');
124
- },
125
- async getProvider() {
126
- return FrameSDK.wallet.ethProvider;
127
- },
128
- }));
129
- }