@farcaster/frame-sdk 0.0.16 → 0.0.17

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/src/provider.ts CHANGED
@@ -8,9 +8,12 @@ const store = RpcRequest.createStore();
8
8
  type GenericProviderRpcError = {
9
9
  code: number;
10
10
  details?: string;
11
- }
11
+ };
12
12
 
13
- export function toProviderRpcError({ code, details }: GenericProviderRpcError): Provider.ProviderRpcError {
13
+ export function toProviderRpcError({
14
+ code,
15
+ details,
16
+ }: GenericProviderRpcError): Provider.ProviderRpcError {
14
17
  switch (code) {
15
18
  case 4001:
16
19
  return new Provider.UserRejectedRequestError();
@@ -23,7 +26,10 @@ export function toProviderRpcError({ code, details }: GenericProviderRpcError):
23
26
  case 4901:
24
27
  return new Provider.ChainDisconnectedError();
25
28
  default:
26
- return new Provider.ProviderRpcError(code, details ?? 'Unknown provider RPC error');
29
+ return new Provider.ProviderRpcError(
30
+ code,
31
+ details ?? "Unknown provider RPC error",
32
+ );
27
33
  }
28
34
  }
29
35
 
@@ -34,19 +40,21 @@ export const provider: Provider.Provider = Provider.from({
34
40
  const request = store.prepare(args);
35
41
 
36
42
  try {
37
- const response = await frameHost.ethProviderRequestV2(
38
- request
39
- ).then((res) => RpcResponse.parse(res, { request, raw: true }));
40
-
43
+ const response = await frameHost
44
+ .ethProviderRequestV2(request)
45
+ .then((res) => RpcResponse.parse(res, { request, raw: true }));
41
46
 
42
47
  if (response.error) {
43
- throw toProviderRpcError(response.error)
48
+ throw toProviderRpcError(response.error);
44
49
  }
45
50
 
46
51
  return response.result;
47
52
  } catch (e) {
48
53
  // ethProviderRequestV2 not supported, fall back to v1
49
- if (e instanceof Error && e.message.match(/cannot read property 'apply'/i)) {
54
+ if (
55
+ e instanceof Error &&
56
+ e.message.match(/cannot read property 'apply'/i)
57
+ ) {
50
58
  return await frameHost.ethProviderRequest(request);
51
59
  }
52
60
 
@@ -57,32 +65,33 @@ export const provider: Provider.Provider = Provider.from({
57
65
  throw e;
58
66
  }
59
67
 
60
-
61
- throw new RpcResponse.InternalError({ message: e instanceof Error ? e.message : undefined })
68
+ throw new RpcResponse.InternalError({
69
+ message: e instanceof Error ? e.message : undefined,
70
+ });
62
71
  }
63
- }
72
+ },
64
73
  });
65
74
 
66
75
  // Required to pass SSR
67
- if (typeof document !== 'undefined') {
76
+ if (typeof document !== "undefined") {
68
77
  // react native webview events
69
78
  document.addEventListener("FarcasterFrameEthProviderEvent", (event) => {
70
79
  if (event instanceof MessageEvent) {
71
80
  const ethProviderEvent = event.data as EthProviderWireEvent;
72
- // @ts-expect-error
81
+ // @ts-expect-error
73
82
  emitter.emit(ethProviderEvent.event, ...ethProviderEvent.params);
74
83
  }
75
84
  });
76
85
  }
77
86
 
78
87
  // Required to pass SSR
79
- if (typeof window !== 'undefined') {
88
+ if (typeof window !== "undefined") {
80
89
  // web events
81
90
  window.addEventListener("message", (event) => {
82
91
  if (event instanceof MessageEvent) {
83
- if (event.data.type === 'frameEthProviderEvent') {
92
+ if (event.data.type === "frameEthProviderEvent") {
84
93
  const ethProviderEvent = event.data as EthProviderWireEvent;
85
- // @ts-expect-error
94
+ // @ts-expect-error
86
95
  emitter.emit(ethProviderEvent.event, ...ethProviderEvent.params);
87
96
  }
88
97
  }
package/src/sdk.ts CHANGED
@@ -36,17 +36,17 @@ export const sdk: FrameSDK = {
36
36
  ready: frameHost.ready.bind(frameHost),
37
37
  close: frameHost.close.bind(frameHost),
38
38
  openUrl: (url: string) => {
39
- return frameHost.openUrl(url.trim())
39
+ return frameHost.openUrl(url.trim());
40
40
  },
41
41
  addFrame: frameHost.addFrame.bind(frameHost),
42
42
  },
43
43
  wallet: {
44
44
  ethProvider: provider,
45
- }
45
+ },
46
46
  };
47
47
 
48
48
  // Required to pass SSR
49
- if (typeof document !== 'undefined') {
49
+ if (typeof document !== "undefined") {
50
50
  // react native webview events
51
51
  document.addEventListener("FarcasterFrameEvent", (event) => {
52
52
  if (event instanceof MessageEvent) {
@@ -58,11 +58,11 @@ if (typeof document !== 'undefined') {
58
58
  }
59
59
 
60
60
  // Required to pass SSR
61
- if (typeof window !== 'undefined') {
61
+ if (typeof window !== "undefined") {
62
62
  // web events
63
63
  window.addEventListener("message", (event) => {
64
64
  if (event instanceof MessageEvent) {
65
- if (event.data.type === 'frameEvent') {
65
+ if (event.data.type === "frameEvent") {
66
66
  if (event.data.event === "primaryButtonClicked") {
67
67
  emitter.emit("primaryButtonClicked");
68
68
  }
package/src/types.ts CHANGED
@@ -1,6 +1,10 @@
1
1
  import type { EventEmitter } from "eventemitter3";
2
2
  import type { Provider } from "ox";
3
- import type { FrameContext, AddFrame, ReadyOptions } from "@farcaster/frame-core";
3
+ import type {
4
+ FrameContext,
5
+ AddFrame,
6
+ ReadyOptions,
7
+ } from "@farcaster/frame-core";
4
8
 
5
9
  declare global {
6
10
  interface Window {
@@ -22,10 +26,10 @@ export type EventMap = {
22
26
  export type Emitter = Compute<EventEmitter<EventMap>>;
23
27
 
24
28
  export type SetPrimaryButton = (options: {
25
- text: string;
26
- loading?: boolean;
27
- disabled?: boolean;
28
- hidden?: boolean;
29
+ text: string;
30
+ loading?: boolean;
31
+ disabled?: boolean;
32
+ hidden?: boolean;
29
33
  }) => Promise<void>;
30
34
 
31
35
  export type FrameSDK = {
@@ -35,9 +39,9 @@ export type FrameSDK = {
35
39
  openUrl: (url: string) => Promise<void>;
36
40
  close: () => Promise<void>;
37
41
  setPrimaryButton: SetPrimaryButton;
38
- addFrame: AddFrame
42
+ addFrame: AddFrame;
39
43
  };
40
44
  wallet: {
41
- ethProvider: Provider.Provider
45
+ ethProvider: Provider.Provider;
42
46
  };
43
47
  } & Emitter;