@coinbase/cdp-hooks 0.0.45 → 0.0.47

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/esm/index.js CHANGED
@@ -1,40 +1,43 @@
1
- import { APIError as n } from "@coinbase/cdp-core";
2
- import { CDPContext as r, CDPHooksProvider as i } from "./index2.js";
3
- import { useConfig as t, useCurrentUser as a, useEnforceAuthenticated as S, useEnforceUnauthenticated as m, useEvmAddress as d, useExportEvmAccount as c, useExportSolanaAccount as p, useGetAccessToken as E, useIsInitialized as g, useIsSignedIn as f, useSendEvmTransaction as v, useSendSolanaTransaction as x, useSendUserOperation as P, useSignEvmHash as l, useSignEvmMessage as T, useSignEvmTransaction as A, useSignEvmTypedData as I, useSignInWithEmail as C, useSignInWithSms as h, useSignOut as O, useSignSolanaMessage as U, useSignSolanaTransaction as k, useSolanaAddress as y, useVerifyEmailOTP as D, useVerifySmsOTP as W, useWaitForUserOperation as H } from "./index3.js";
4
- import { useCreateSpendPermission as V } from "./index4.js";
5
- import { useListSpendPermissions as F } from "./index5.js";
6
- import { useRevokeSpendPermission as L } from "./index6.js";
1
+ import { APIError as n, OAuth2ProviderType as r } from "@coinbase/cdp-core";
2
+ import { CDPContext as i, CDPHooksProvider as t } from "./index2.js";
3
+ import { useConfig as a, useCurrentUser as S, useEnforceAuthenticated as m, useEnforceUnauthenticated as d, useEvmAddress as p, useExportEvmAccount as c, useExportSolanaAccount as g, useGetAccessToken as E, useIsInitialized as f, useIsSignedIn as v, useOAuthState as A, useSendEvmTransaction as P, useSendSolanaTransaction as h, useSendUserOperation as x, useSignEvmHash as T, useSignEvmMessage as l, useSignEvmTransaction as I, useSignEvmTypedData as O, useSignInWithEmail as C, useSignInWithOAuth as y, useSignInWithSms as U, useSignOut as W, useSignSolanaMessage as k, useSignSolanaTransaction as D, useSolanaAddress as H, useVerifyEmailOTP as M, useVerifySmsOTP as V, useWaitForUserOperation as z } from "./index3.js";
4
+ import { useCreateSpendPermission as G } from "./index4.js";
5
+ import { useListSpendPermissions as R } from "./index5.js";
6
+ import { useRevokeSpendPermission as j } from "./index6.js";
7
7
  export {
8
8
  n as APIError,
9
- r as CDPContext,
10
- i as CDPHooksProvider,
11
- t as useConfig,
12
- V as useCreateSpendPermission,
13
- a as useCurrentUser,
14
- S as useEnforceAuthenticated,
15
- m as useEnforceUnauthenticated,
16
- d as useEvmAddress,
9
+ i as CDPContext,
10
+ t as CDPHooksProvider,
11
+ r as OAuth2ProviderType,
12
+ a as useConfig,
13
+ G as useCreateSpendPermission,
14
+ S as useCurrentUser,
15
+ m as useEnforceAuthenticated,
16
+ d as useEnforceUnauthenticated,
17
+ p as useEvmAddress,
17
18
  c as useExportEvmAccount,
18
- p as useExportSolanaAccount,
19
+ g as useExportSolanaAccount,
19
20
  E as useGetAccessToken,
20
- g as useIsInitialized,
21
- f as useIsSignedIn,
22
- F as useListSpendPermissions,
23
- L as useRevokeSpendPermission,
24
- v as useSendEvmTransaction,
25
- x as useSendSolanaTransaction,
26
- P as useSendUserOperation,
27
- l as useSignEvmHash,
28
- T as useSignEvmMessage,
29
- A as useSignEvmTransaction,
30
- I as useSignEvmTypedData,
21
+ f as useIsInitialized,
22
+ v as useIsSignedIn,
23
+ R as useListSpendPermissions,
24
+ A as useOAuthState,
25
+ j as useRevokeSpendPermission,
26
+ P as useSendEvmTransaction,
27
+ h as useSendSolanaTransaction,
28
+ x as useSendUserOperation,
29
+ T as useSignEvmHash,
30
+ l as useSignEvmMessage,
31
+ I as useSignEvmTransaction,
32
+ O as useSignEvmTypedData,
31
33
  C as useSignInWithEmail,
32
- h as useSignInWithSms,
33
- O as useSignOut,
34
- U as useSignSolanaMessage,
35
- k as useSignSolanaTransaction,
36
- y as useSolanaAddress,
37
- D as useVerifyEmailOTP,
38
- W as useVerifySmsOTP,
39
- H as useWaitForUserOperation
34
+ y as useSignInWithOAuth,
35
+ U as useSignInWithSms,
36
+ W as useSignOut,
37
+ k as useSignSolanaMessage,
38
+ D as useSignSolanaTransaction,
39
+ H as useSolanaAddress,
40
+ M as useVerifyEmailOTP,
41
+ V as useVerifySmsOTP,
42
+ z as useWaitForUserOperation
40
43
  };
@@ -1,35 +1,38 @@
1
- import { jsx as l } from "react/jsx-runtime";
2
- import { initialize as C, onAuthStateChange as m } from "@coinbase/cdp-core";
3
- import { createContext as P, useState as o, useEffect as d, useMemo as f, useContext as x } from "react";
4
- const i = P(null);
5
- function w({ children: t, config: e }) {
6
- const [n, u] = o(null), [r, s] = o(!1);
7
- d(() => {
8
- s(!1), (async () => {
9
- await C(e), m((c) => {
10
- u(c);
11
- }), s(!0);
12
- })();
1
+ import { jsx as h } from "react/jsx-runtime";
2
+ import { onOAuthStateChange as m, initialize as P, onAuthStateChange as d } from "@coinbase/cdp-core";
3
+ import { createContext as f, useState as s, useEffect as x, useMemo as S, useContext as A } from "react";
4
+ const a = f(null);
5
+ function I({ children: t, config: e }) {
6
+ const [n, c] = s(null), [r, i] = s(!1), [u, l] = s(null);
7
+ x(() => {
8
+ i(!1), (async () => {
9
+ await P(e), d((o) => {
10
+ c(o);
11
+ }), i(!0);
12
+ })(), m((o) => {
13
+ l(o);
14
+ });
13
15
  }, [e]);
14
- const a = f(
16
+ const C = S(
15
17
  () => ({
16
18
  isInitialized: r,
17
19
  currentUser: n,
18
20
  isSignedIn: !!n,
19
- config: e
21
+ config: e,
22
+ oauthState: u
20
23
  }),
21
- [n, r, e]
24
+ [n, r, e, u]
22
25
  );
23
- return /* @__PURE__ */ l(i.Provider, { value: a, children: t });
26
+ return /* @__PURE__ */ h(a.Provider, { value: C, children: t });
24
27
  }
25
- function I() {
26
- const t = x(i);
28
+ function y() {
29
+ const t = A(a);
27
30
  if (!t)
28
31
  throw new Error("useCDP must be used within a CDPHooksProvider");
29
32
  return t;
30
33
  }
31
34
  export {
32
- i as CDPContext,
33
- w as CDPHooksProvider,
34
- I as useCDP
35
+ a as CDPContext,
36
+ I as CDPHooksProvider,
37
+ y as useCDP
35
38
  };
@@ -1,156 +1,164 @@
1
- import { getAccessToken as A, sendUserOperation as y, signInWithEmail as O, signInWithSms as U, verifyEmailOTP as I, verifySmsOTP as P, signOut as x, signEvmHash as M, signEvmTransaction as k, sendEvmTransaction as C, signEvmMessage as W, signSolanaMessage as H, signEvmTypedData as b, exportEvmAccount as D, exportSolanaAccount as V, signSolanaTransaction as F, sendSolanaTransaction as z, getUserOperation as G } from "@coinbase/cdp-core";
2
- import { useState as u, useEffect as f, useMemo as j, useCallback as h } from "react";
3
- import { useCDP as p } from "./index2.js";
4
- import { useAutoPolling as q } from "./index7.js";
5
- import { getPublicClient as B } from "./index8.js";
6
- const Y = () => {
7
- const { config: n } = p();
1
+ import { getAccessToken as A, sendUserOperation as O, signInWithEmail as y, signInWithSms as I, verifyEmailOTP as U, verifySmsOTP as W, signInWithOAuth as P, signOut as x, signEvmHash as M, signEvmTransaction as k, sendEvmTransaction as C, signEvmMessage as H, signSolanaMessage as b, signEvmTypedData as D, exportEvmAccount as V, exportSolanaAccount as F, signSolanaTransaction as z, sendSolanaTransaction as G, getUserOperation as j } from "@coinbase/cdp-core";
2
+ import { useState as p, useEffect as v, useMemo as q, useCallback as f } from "react";
3
+ import { useCDP as u } from "./index2.js";
4
+ import { useAutoPolling as B } from "./index7.js";
5
+ import { getPublicClient as J } from "./index8.js";
6
+ const _ = () => {
7
+ const { config: n } = u();
8
8
  return { config: n };
9
- }, Z = () => {
10
- const { isInitialized: n } = p();
9
+ }, $ = () => {
10
+ const { isInitialized: n } = u();
11
11
  return { isInitialized: n };
12
- }, _ = () => ({ signInWithEmail: g(O) }), $ = () => ({ signInWithSms: g(U) }), R = () => ({ verifyEmailOTP: g(I) }), nn = () => ({ verifySmsOTP: g(P) }), en = () => {
13
- const { isSignedIn: n } = p();
12
+ }, R = () => ({ signInWithEmail: m(y) }), nn = () => ({ signInWithSms: m(I) }), tn = () => ({ verifyEmailOTP: m(U) }), en = () => ({ verifySmsOTP: m(W) }), sn = () => {
13
+ const n = m(P), { oauthState: t } = K();
14
+ return { signInWithOAuth: n, oauthState: t };
15
+ }, K = () => {
16
+ const { oauthState: n } = u();
17
+ return { oauthState: n };
18
+ }, rn = () => {
19
+ const { isSignedIn: n } = u();
14
20
  return { isSignedIn: n };
15
21
  }, w = () => {
16
- const { currentUser: n } = p();
22
+ const { currentUser: n } = u();
17
23
  return { currentUser: n };
18
- }, tn = () => ({ signOut: i(x) }), rn = () => ({ getAccessToken: A }), sn = () => {
24
+ }, an = () => ({ signOut: i(x) }), on = () => ({ getAccessToken: A }), cn = () => {
19
25
  const { currentUser: n } = w();
20
26
  return {
21
27
  evmAddress: n?.evmSmartAccounts?.[0] ?? n?.evmAccounts?.[0] ?? null
22
28
  };
23
- }, an = () => {
29
+ }, un = () => {
24
30
  const { currentUser: n } = w();
25
31
  return {
26
32
  solanaAddress: n?.solanaAccounts?.[0] ?? null
27
33
  };
28
- }, on = () => ({ signEvmHash: i(M) }), cn = () => ({ signEvmTransaction: i(k) }), un = () => {
29
- const [n, e] = u(null), [s, r] = u(null), [c, S] = u(null), { config: a } = p(), d = i(
30
- async (m) => {
31
- const o = await C(m);
32
- return e({ hash: o.transactionHash, network: m.network }), S(null), r(null), o;
34
+ }, pn = () => ({ signEvmHash: i(M) }), dn = () => ({ signEvmTransaction: i(k) }), ln = () => {
35
+ const [n, t] = p(null), [r, s] = p(null), [c, S] = p(null), { config: a } = u(), d = i(
36
+ async (g) => {
37
+ const o = await C(g);
38
+ return t({ hash: o.transactionHash, network: g.network }), S(null), s(null), o;
33
39
  }
34
40
  );
35
- f(() => {
41
+ v(() => {
36
42
  if (!n) return;
37
43
  (async () => {
38
44
  try {
39
- const E = await B(n.network, a).waitForTransactionReceipt({
45
+ const E = await J(n.network, a).waitForTransactionReceipt({
40
46
  hash: n.hash
41
47
  });
42
- r(E);
48
+ s(E);
43
49
  } catch (o) {
44
50
  S(o instanceof Error ? o : new Error(String(o)));
45
51
  }
46
52
  })();
47
53
  }, [n]);
48
- const l = j(() => n ? s ? { status: "success", receipt: s } : c ? { status: "error", error: c } : { status: "pending", hash: n.hash } : { status: "idle" }, [n, s, c]);
54
+ const l = q(() => n ? r ? { status: "success", receipt: r } : c ? { status: "error", error: c } : { status: "pending", hash: n.hash } : { status: "idle" }, [n, r, c]);
49
55
  return {
50
56
  sendEvmTransaction: d,
51
57
  data: l
52
58
  };
53
- }, pn = () => ({ signEvmMessage: i(W) }), dn = () => ({ signSolanaMessage: i(H) }), ln = () => ({ signEvmTypedData: i(b) }), Sn = () => ({ exportEvmAccount: i(D) }), mn = () => ({ exportSolanaAccount: i(V) }), gn = () => ({ signSolanaTransaction: i(F) }), En = () => ({
54
- sendSolanaTransaction: i(z)
59
+ }, Sn = () => ({ signEvmMessage: i(H) }), gn = () => ({ signSolanaMessage: i(b) }), mn = () => ({ signEvmTypedData: i(D) }), En = () => ({ exportEvmAccount: i(V) }), wn = () => ({ exportSolanaAccount: i(F) }), hn = () => ({ signSolanaTransaction: i(z) }), vn = () => ({
60
+ sendSolanaTransaction: i(G)
55
61
  }), i = (n) => {
56
- const { isSignedIn: e } = p();
57
- return h(
58
- async (...r) => {
59
- if (!e)
62
+ const { isSignedIn: t } = u();
63
+ return f(
64
+ async (...s) => {
65
+ if (!t)
60
66
  throw new Error("User is not authenticated");
61
- return n(...r);
67
+ return n(...s);
62
68
  },
63
- [e, n]
69
+ [t, n]
64
70
  );
65
- }, g = (n) => {
66
- const { isSignedIn: e } = p();
67
- return h(
68
- async (...r) => {
69
- if (e)
71
+ }, m = (n) => {
72
+ const { isSignedIn: t } = u();
73
+ return f(
74
+ async (...s) => {
75
+ if (t)
70
76
  throw new Error("User is already authenticated. Please sign out first.");
71
- return n(...r);
77
+ return n(...s);
72
78
  },
73
- [e, n]
79
+ [t, n]
74
80
  );
75
- }, wn = () => {
76
- const [n, e] = u(void 0), { status: s, data: r, error: c } = J(n);
81
+ }, fn = () => {
82
+ const [n, t] = p(void 0), { status: r, data: s, error: c } = L(n);
77
83
  return {
78
84
  sendUserOperation: i(
79
85
  async (a) => {
80
- const d = await y(a);
81
- return e({
86
+ const d = await O(a);
87
+ return t({
82
88
  userOperationHash: d.userOperationHash,
83
89
  evmSmartAccount: a.evmSmartAccount,
84
90
  network: a.network
85
91
  }), d;
86
92
  }
87
93
  ),
88
- data: r,
94
+ data: s,
89
95
  error: c,
90
- status: s
96
+ status: r
91
97
  };
92
- }, J = (n = {}) => {
93
- const { userOperationHash: e, evmSmartAccount: s, network: r, enabled: c } = n, [S, a] = u("idle"), [d, l] = u(void 0), [m, o] = u(void 0), { currentUser: E } = w();
94
- f(() => {
95
- e && s && r && (a(c !== !1 ? "pending" : "idle"), l(void 0), o(void 0));
96
- }, [e, s, r, c]);
97
- const v = c !== !1 && !!(e && s && r && E);
98
- return q(
98
+ }, L = (n = {}) => {
99
+ const { userOperationHash: t, evmSmartAccount: r, network: s, enabled: c } = n, [S, a] = p("idle"), [d, l] = p(void 0), [g, o] = p(void 0), { currentUser: E } = w();
100
+ v(() => {
101
+ t && r && s && (a(c !== !1 ? "pending" : "idle"), l(void 0), o(void 0));
102
+ }, [t, r, s, c]);
103
+ const h = c !== !1 && !!(t && r && s && E);
104
+ return B(
99
105
  {
100
106
  pollFn: async () => {
101
- const t = await G({
102
- userOperationHash: e,
103
- evmSmartAccount: s,
104
- network: r
107
+ const e = await j({
108
+ userOperationHash: t,
109
+ evmSmartAccount: r,
110
+ network: s
105
111
  });
106
- return l(t), t;
112
+ return l(e), e;
107
113
  },
108
- shouldStop: (t) => t.status === "complete" || t.status === "dropped" || t.status === "failed",
109
- enabled: v,
110
- onSuccess: (t) => {
111
- if (t.status === "complete")
112
- l(t), a("success");
113
- else if (t.status === "failed") {
114
- const T = t.receipts?.[0]?.revert?.message || "User operation failed";
114
+ shouldStop: (e) => e.status === "complete" || e.status === "dropped" || e.status === "failed",
115
+ enabled: h,
116
+ onSuccess: (e) => {
117
+ if (e.status === "complete")
118
+ l(e), a("success");
119
+ else if (e.status === "failed") {
120
+ const T = e.receipts?.[0]?.revert?.message || "User operation failed";
115
121
  o(new Error(T)), a("error");
116
- } else t.status === "dropped" ? (o(new Error('User operation failed with status: "dropped"')), a("error")) : (l(t), a("error"));
122
+ } else e.status === "dropped" ? (o(new Error('User operation failed with status: "dropped"')), a("error")) : (l(e), a("error"));
117
123
  },
118
- onError: (t) => {
119
- o(t), a("error");
124
+ onError: (e) => {
125
+ o(e), a("error");
120
126
  }
121
127
  },
122
- [e, s, r, v]
128
+ [t, r, s, h]
123
129
  ), {
124
130
  status: S,
125
131
  data: d,
126
- error: m
132
+ error: g
127
133
  };
128
134
  };
129
135
  export {
130
- Y as useConfig,
136
+ _ as useConfig,
131
137
  w as useCurrentUser,
132
138
  i as useEnforceAuthenticated,
133
- g as useEnforceUnauthenticated,
134
- sn as useEvmAddress,
135
- Sn as useExportEvmAccount,
136
- mn as useExportSolanaAccount,
137
- rn as useGetAccessToken,
138
- Z as useIsInitialized,
139
- en as useIsSignedIn,
140
- un as useSendEvmTransaction,
141
- En as useSendSolanaTransaction,
142
- wn as useSendUserOperation,
143
- on as useSignEvmHash,
144
- pn as useSignEvmMessage,
145
- cn as useSignEvmTransaction,
146
- ln as useSignEvmTypedData,
147
- _ as useSignInWithEmail,
148
- $ as useSignInWithSms,
149
- tn as useSignOut,
150
- dn as useSignSolanaMessage,
151
- gn as useSignSolanaTransaction,
152
- an as useSolanaAddress,
153
- R as useVerifyEmailOTP,
154
- nn as useVerifySmsOTP,
155
- J as useWaitForUserOperation
139
+ m as useEnforceUnauthenticated,
140
+ cn as useEvmAddress,
141
+ En as useExportEvmAccount,
142
+ wn as useExportSolanaAccount,
143
+ on as useGetAccessToken,
144
+ $ as useIsInitialized,
145
+ rn as useIsSignedIn,
146
+ K as useOAuthState,
147
+ ln as useSendEvmTransaction,
148
+ vn as useSendSolanaTransaction,
149
+ fn as useSendUserOperation,
150
+ pn as useSignEvmHash,
151
+ Sn as useSignEvmMessage,
152
+ dn as useSignEvmTransaction,
153
+ mn as useSignEvmTypedData,
154
+ R as useSignInWithEmail,
155
+ sn as useSignInWithOAuth,
156
+ nn as useSignInWithSms,
157
+ an as useSignOut,
158
+ gn as useSignSolanaMessage,
159
+ hn as useSignSolanaTransaction,
160
+ un as useSolanaAddress,
161
+ tn as useVerifyEmailOTP,
162
+ en as useVerifySmsOTP,
163
+ L as useWaitForUserOperation
156
164
  };
@@ -18,6 +18,8 @@ import { Hex } from '@coinbase/cdp-core';
18
18
  import { JSX } from 'react/jsx-runtime';
19
19
  import { ListSpendPermissionsOptions } from '@coinbase/cdp-core';
20
20
  import { ListSpendPermissionsResult } from '@coinbase/cdp-core';
21
+ import { OAuth2ProviderType } from '@coinbase/cdp-core';
22
+ import { OAuthFlowState } from '@coinbase/cdp-core';
21
23
  import { ReactNode } from 'react';
22
24
  import { RevokeSpendPermissionOptions as RevokeSpendPermissionOptions_2 } from '@coinbase/cdp-core';
23
25
  import { RevokeSpendPermissionResult } from '@coinbase/cdp-core';
@@ -67,6 +69,7 @@ export declare interface CDPContextValue {
67
69
  currentUser: User | null;
68
70
  isSignedIn: boolean;
69
71
  config: Config;
72
+ oauthState: OAuthFlowState | null;
70
73
  }
71
74
 
72
75
  export declare function CDPHooksProvider({ children, config }: CDPHooksProviderProps): JSX.Element;
@@ -100,6 +103,10 @@ export { GetUserOperationResult }
100
103
 
101
104
  export { Hex }
102
105
 
106
+ export { OAuth2ProviderType }
107
+
108
+ export { OAuthFlowState }
109
+
103
110
  export declare type RevokeSpendPermissionOptions = Omit<RevokeSpendPermissionOptions_2, "evmSmartAccount"> & {
104
111
  evmSmartAccount?: EvmAddress;
105
112
  };
@@ -213,6 +220,10 @@ export declare type UseListSpendPermissionsReturnType = {
213
220
  refetch: () => void;
214
221
  };
215
222
 
223
+ export declare const useOAuthState: () => {
224
+ oauthState: OAuthFlowState | null;
225
+ };
226
+
216
227
  export { User }
217
228
 
218
229
  export declare const useRevokeSpendPermission: () => UseRevokeSpendPermissionReturnType;
@@ -262,6 +273,11 @@ export declare const useSignInWithEmail: () => {
262
273
  signInWithEmail: (options: SignInWithEmailOptions) => Promise<SignInWithEmailResult>;
263
274
  };
264
275
 
276
+ export declare const useSignInWithOAuth: () => {
277
+ signInWithOAuth: (providerType: OAuth2ProviderType) => Promise<void>;
278
+ oauthState: OAuthFlowState | null;
279
+ };
280
+
265
281
  export declare const useSignInWithSms: () => {
266
282
  signInWithSms: (options: SignInWithSmsOptions) => Promise<SignInWithSmsResult>;
267
283
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cdp-hooks",
3
- "version": "0.0.45",
3
+ "version": "0.0.47",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**",
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "peerDependencies": {
17
17
  "react": ">=18.2.0",
18
- "@coinbase/cdp-core": "^0.0.45"
18
+ "@coinbase/cdp-core": "^0.0.47"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@testing-library/jest-dom": "^6.6.3",
@@ -30,7 +30,7 @@
30
30
  "@size-limit/webpack": "^11.2.0",
31
31
  "@size-limit/webpack-why": "^11.2.0",
32
32
  "size-limit": "^11.2.0",
33
- "@coinbase/cdp-core": "^0.0.45"
33
+ "@coinbase/cdp-core": "^0.0.47"
34
34
  },
35
35
  "size-limit": [
36
36
  {