@coinbase/cdp-core 0.0.17 → 0.0.19

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.
@@ -1,176 +1,190 @@
1
- import { configureCdpApiClient as w, setAuthManager as h, initiateAuthentication as y, verifyEmailAuthentication as f, createEndUserEvmAccount as I, signEvmHashWithEndUserAccount as l, signEvmTransactionWithEndUserAccount as A, sendEvmTransactionWithEndUserAccount as v, signEvmMessageWithEndUserAccount as E, signEvmTypedDataWithEndUserAccount as k, exportEndUserEvmAccount as M } from "@coinbase/cdp-api-client";
2
- import { AuthManager as S } from "./index6.js";
3
- import { toAuthState as u } from "./index7.js";
4
- import { withAuth as i } from "./index8.js";
5
- import { createExportKeyPair as U } from "./index9.js";
6
- import { decryptWithPrivateKey as C } from "./index10.js";
7
- import { MockAuthManager as T } from "./index11.js";
8
- import { mockUser as d } from "./index12.js";
9
- import { isChainSupportedForCDPSends as j } from "./index13.js";
10
- import { getConfig as r, setCoreAuthManager as g, getCoreAuthManager as n, setConfig as P } from "./index14.js";
1
+ import { configureCdpApiClient as I, setAuthManager as l, initiateAuthentication as v, createEndUserEvmAccount as A, verifyEmailAuthentication as E, verifySmsAuthentication as k, signEvmHashWithEndUserAccount as S, signEvmTransactionWithEndUserAccount as M, sendEvmTransactionWithEndUserAccount as T, signEvmMessageWithEndUserAccount as U, signEvmTypedDataWithEndUserAccount as C, exportEndUserEvmAccount as j } from "@coinbase/cdp-api-client";
2
+ import { AuthManager as P } from "./index6.js";
3
+ import { toAuthState as d } from "./index7.js";
4
+ import { withAuth as o } from "./index8.js";
5
+ import { createExportKeyPair as x } from "./index9.js";
6
+ import { decryptWithPrivateKey as b } from "./index10.js";
7
+ import { MockAuthManager as K } from "./index11.js";
8
+ import { mockUser as g } from "./index12.js";
9
+ import { isChainSupportedForCDPSends as W } from "./index13.js";
10
+ import { getConfig as n, setCoreAuthManager as m, getCoreAuthManager as s, setConfig as D } from "./index14.js";
11
11
  import "viem";
12
- import { serializeTransaction as m } from "./index15.js";
13
- const B = async (e) => {
12
+ import { serializeTransaction as p } from "./index15.js";
13
+ const Q = async (e) => {
14
14
  if (!e.projectId)
15
15
  throw new Error("Project ID is required");
16
- let s;
16
+ let r;
17
17
  try {
18
- s = r().projectId !== e.projectId;
18
+ r = n().projectId !== e.projectId;
19
19
  } catch {
20
- s = !0;
20
+ r = !0;
21
21
  }
22
- if (P(e), r().useMock) {
23
- g(new T(r().projectId));
22
+ if (D(e), n().useMock) {
23
+ m(new K(n().projectId));
24
24
  return;
25
25
  }
26
- if (w({
27
- debugging: r().debugging,
28
- basePath: r().basePath
29
- }), s) {
30
- const t = new S(r().projectId);
31
- g(t), h(t);
26
+ if (I({
27
+ debugging: n().debugging,
28
+ basePath: n().basePath
29
+ }), r) {
30
+ const t = new P(n().projectId);
31
+ m(t), l(t);
32
32
  }
33
- await n().ensureInitialized();
34
- }, V = async (e) => {
35
- if (r().useMock)
36
- return {
37
- message: "Mock sign in initiated",
38
- flowId: "mock-flow-id"
39
- };
40
- if (await n().isSignedIn())
41
- throw new Error("User is already authenticated. Please sign out first.");
42
- const t = await y(r().projectId, {
43
- email: e.email,
44
- type: "email"
45
- });
46
- return {
47
- flowId: t.flowId,
48
- message: t.message
49
- };
50
- }, G = async (e) => {
51
- if (r().useMock)
52
- return await n().setAuthState({
53
- accessToken: "mock-access-token",
54
- expiresAt: Date.now() + 1e3 * 60 * 60 * 24,
55
- user: d
56
- }), {
57
- message: "Mock email OTP verified",
58
- user: d,
59
- isNewUser: !1
60
- };
61
- if (await n().isSignedIn())
62
- throw new Error("User is already authenticated. Please sign out first.");
63
- const t = await f(r().projectId, {
64
- flowId: e.flowId,
65
- otp: e.otp
66
- });
67
- let a = u(t.accessToken, t.validUntil, t.endUser);
68
- if (await n().setAuthState(a), !a.user.evmAccounts || a.user.evmAccounts.length === 0)
69
- try {
70
- const o = await n().getWalletSecretId(), p = await I(r().projectId, a.user.userId, {
71
- walletSecretId: o
72
- });
73
- a = u(t.accessToken, t.validUntil, p), await n().setAuthState(a);
74
- } catch (o) {
75
- throw new Error(`Failed to create EVM account: ${o}`);
76
- }
77
- const c = await n().getUser();
78
- return {
79
- message: t.message,
80
- user: c,
81
- isNewUser: t.isNewEndUser
82
- };
83
- }, J = async () => n().getUser(), L = async () => n().isSignedIn(), Q = async () => {
84
- if (r().useMock) {
85
- await n().signOut();
33
+ await s().ensureInitialized();
34
+ }, R = async (e) => h({
35
+ email: e.email,
36
+ type: "email"
37
+ }), X = async (e) => h({
38
+ phoneNumber: e.phoneNumber,
39
+ type: "sms"
40
+ }), Y = async (e) => w(
41
+ e,
42
+ "Mock email OTP verified",
43
+ (r, t) => E(r, t)
44
+ ), Z = async (e) => w(
45
+ e,
46
+ "Mock SMS OTP verified",
47
+ (r, t) => k(r, t)
48
+ ), _ = async () => s().getUser(), ee = async () => s().isSignedIn(), te = async () => {
49
+ if (n().useMock) {
50
+ await s().signOut();
86
51
  return;
87
52
  }
88
- if (!await n().isSignedIn())
53
+ if (!await s().isSignedIn())
89
54
  throw new Error("User not signed in");
90
- await n().signOut();
91
- }, R = (e) => {
92
- n().addAuthStateChangeCallback(e);
93
- }, X = async (e) => r().useMock ? { signature: "0x0" } : i(e, n(), async ({ user: s, walletSecretId: t }) => ({
94
- signature: (await l(r().projectId, s.userId, {
55
+ await s().signOut();
56
+ }, ne = async () => s().getToken(), re = (e) => {
57
+ s().addAuthStateChangeCallback(e);
58
+ }, se = async (e) => n().useMock ? { signature: "0x0" } : o(e, s(), async ({ user: r, walletSecretId: t }) => ({
59
+ signature: (await S(n().projectId, r.userId, {
95
60
  hash: e.hash,
96
61
  address: e.evmAccount,
97
62
  walletSecretId: t
98
63
  })).signature
99
- })), Y = async (e) => r().useMock ? { signedTransaction: "0x0" } : i(e, n(), async ({ user: s, walletSecretId: t }) => {
100
- const a = m(e.transaction);
64
+ })), ae = async (e) => n().useMock ? { signedTransaction: "0x0" } : o(e, s(), async ({ user: r, walletSecretId: t }) => {
65
+ const i = p(e.transaction);
101
66
  return {
102
- signedTransaction: (await A(
103
- r().projectId,
104
- s.userId,
67
+ signedTransaction: (await M(
68
+ n().projectId,
69
+ r.userId,
105
70
  {
106
- transaction: a,
71
+ transaction: i,
107
72
  address: e.evmAccount,
108
73
  walletSecretId: t
109
74
  }
110
75
  )).signedTransaction
111
76
  };
112
- }), Z = async (e) => {
113
- if (!j(e.network))
77
+ }), ie = async (e) => {
78
+ if (!W(e.network))
114
79
  throw new Error(`Chain ${e.network} is not supported by the CDP Apis`);
115
- if (r().useMock)
80
+ if (n().useMock)
116
81
  return { transactionHash: "0x0" };
117
- const s = m(e.transaction);
118
- return i(e, n(), async ({ user: t, walletSecretId: a }) => ({
119
- transactionHash: (await v(
120
- r().projectId,
82
+ const r = p(e.transaction);
83
+ return o(e, s(), async ({ user: t, walletSecretId: i }) => ({
84
+ transactionHash: (await T(
85
+ n().projectId,
121
86
  t.userId,
122
87
  {
123
- transaction: s,
88
+ transaction: r,
124
89
  address: e.evmAccount,
125
- walletSecretId: a,
90
+ walletSecretId: i,
126
91
  network: e.network
127
92
  }
128
93
  )).transactionHash
129
94
  }));
130
- }, _ = async (e) => r().useMock ? { signature: "0x0" } : i(e, n(), async ({ user: s, walletSecretId: t }) => ({
131
- signature: (await E(r().projectId, s.userId, {
95
+ }, ce = async (e) => n().useMock ? { signature: "0x0" } : o(e, s(), async ({ user: r, walletSecretId: t }) => ({
96
+ signature: (await U(n().projectId, r.userId, {
132
97
  message: e.message,
133
98
  address: e.evmAccount,
134
99
  walletSecretId: t
135
100
  })).signature
136
- })), ee = async (e) => r().useMock ? { signature: "0x0" } : i(e, n(), async ({ user: s, walletSecretId: t }) => ({
137
- signature: (await k(r().projectId, s.userId, {
101
+ })), oe = async (e) => n().useMock ? { signature: "0x0" } : o(e, s(), async ({ user: r, walletSecretId: t }) => ({
102
+ signature: (await C(n().projectId, r.userId, {
138
103
  typedData: e.typedData,
139
104
  address: e.evmAccount,
140
105
  walletSecretId: t
141
106
  })).signature
142
- })), te = async (e) => {
143
- if (r().useMock)
107
+ })), ue = async (e) => {
108
+ if (n().useMock)
144
109
  return {
145
110
  privateKey: "mock-private-key"
146
111
  };
147
- const s = await U();
148
- return i(e, n(), async ({ user: t, walletSecretId: a }) => {
149
- const c = await M(r().projectId, t.userId, {
112
+ const r = await x();
113
+ return o(e, s(), async ({ user: t, walletSecretId: i }) => {
114
+ const a = await j(n().projectId, t.userId, {
150
115
  address: e.evmAccount,
151
- walletSecretId: a,
152
- exportEncryptionKey: s.publicKeyBase64
116
+ walletSecretId: i,
117
+ exportEncryptionKey: r.publicKeyBase64
153
118
  });
154
119
  return {
155
- privateKey: await C(
156
- s.privateKey,
157
- c.encryptedPrivateKey
120
+ privateKey: await b(
121
+ r.privateKey,
122
+ a.encryptedPrivateKey
158
123
  )
159
124
  };
160
125
  });
126
+ }, h = async (e) => {
127
+ if (n().useMock)
128
+ return {
129
+ message: "Mock sign in initiated",
130
+ flowId: "mock-flow-id"
131
+ };
132
+ if (await s().isSignedIn())
133
+ throw new Error("User is already authenticated. Please sign out first.");
134
+ const t = await v(n().projectId, e);
135
+ return {
136
+ flowId: t.flowId,
137
+ message: t.message
138
+ };
139
+ }, w = async (e, r, t) => {
140
+ if (n().useMock)
141
+ return await s().setAuthState({
142
+ accessToken: "mock-access-token",
143
+ expiresAt: Date.now() + 1e3 * 60 * 60 * 24,
144
+ user: g
145
+ }), {
146
+ message: r,
147
+ user: g,
148
+ isNewUser: !1
149
+ };
150
+ if (await s().isSignedIn())
151
+ throw new Error("User is already authenticated. Please sign out first.");
152
+ const a = await t(n().projectId, {
153
+ flowId: e.flowId,
154
+ otp: e.otp
155
+ });
156
+ let c = d(a.accessToken, a.validUntil, a.endUser);
157
+ if (await s().setAuthState(c), !c.user.evmAccounts || c.user.evmAccounts.length === 0)
158
+ try {
159
+ const u = await s().getWalletSecretId(), f = await A(n().projectId, c.user.userId, {
160
+ walletSecretId: u
161
+ });
162
+ c = d(a.accessToken, a.validUntil, f), await s().setAuthState(c);
163
+ } catch (u) {
164
+ throw new Error(`Failed to create EVM account: ${u}`);
165
+ }
166
+ const y = await s().getUser();
167
+ return {
168
+ message: a.message,
169
+ user: y,
170
+ isNewUser: a.isNewEndUser
171
+ };
161
172
  };
162
173
  export {
163
- te as exportEvmAccount,
164
- J as getCurrentUser,
165
- B as initialize,
166
- L as isSignedIn,
167
- R as onAuthStateChange,
168
- Z as sendEvmTransaction,
169
- X as signEvmHash,
170
- _ as signEvmMessage,
171
- Y as signEvmTransaction,
172
- ee as signEvmTypedData,
173
- V as signInWithEmail,
174
- Q as signOut,
175
- G as verifyEmailOTP
174
+ ue as exportEvmAccount,
175
+ ne as getAccessToken,
176
+ _ as getCurrentUser,
177
+ Q as initialize,
178
+ ee as isSignedIn,
179
+ re as onAuthStateChange,
180
+ ie as sendEvmTransaction,
181
+ se as signEvmHash,
182
+ ce as signEvmMessage,
183
+ ae as signEvmTransaction,
184
+ oe as signEvmTypedData,
185
+ R as signInWithEmail,
186
+ X as signInWithSms,
187
+ te as signOut,
188
+ Y as verifyEmailOTP,
189
+ Z as verifySmsOTP
176
190
  };
@@ -1,58 +1,7 @@
1
- import { chainConfig as a } from "./index80.js";
2
- import { defineChain as t } from "./index25.js";
3
- const e = 11155111, r = /* @__PURE__ */ t({
4
- ...a,
5
- id: 84532,
6
- network: "base-sepolia",
7
- name: "Base Sepolia",
8
- nativeCurrency: { name: "Sepolia Ether", symbol: "ETH", decimals: 18 },
9
- rpcUrls: {
10
- default: {
11
- http: ["https://sepolia.base.org"]
12
- }
13
- },
14
- blockExplorers: {
15
- default: {
16
- name: "Basescan",
17
- url: "https://sepolia.basescan.org",
18
- apiUrl: "https://api-sepolia.basescan.org/api"
19
- }
20
- },
21
- contracts: {
22
- ...a.contracts,
23
- disputeGameFactory: {
24
- [e]: {
25
- address: "0xd6E6dBf4F7EA0ac412fD8b65ED297e64BB7a06E1"
26
- }
27
- },
28
- l2OutputOracle: {
29
- [e]: {
30
- address: "0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254"
31
- }
32
- },
33
- portal: {
34
- [e]: {
35
- address: "0x49f53e41452c74589e85ca1677426ba426459e85",
36
- blockCreated: 4446677
37
- }
38
- },
39
- l1StandardBridge: {
40
- [e]: {
41
- address: "0xfd0Bf71F60660E2f608ed56e1659C450eB113120",
42
- blockCreated: 4446677
43
- }
44
- },
45
- multicall3: {
46
- address: "0xca11bde05977b3631167028862be2a173976ca11",
47
- blockCreated: 1059647
48
- }
49
- },
50
- testnet: !0,
51
- sourceId: e
52
- });
53
- ({
54
- ...r
55
- });
1
+ const h = async (t) => {
2
+ const a = await window.crypto.subtle.digest("SHA-256", t), r = new Uint8Array(a);
3
+ return Array.from(r).map((s) => s.toString(16).padStart(2, "0")).join("");
4
+ };
56
5
  export {
57
- r as baseSepolia
6
+ h as hash
58
7
  };
@@ -1,43 +1,162 @@
1
- import { CompactSign as i } from "./index70.js";
2
- import { JWTInvalid as r } from "./index71.js";
3
- import { JWTClaimsBuilder as n } from "./index72.js";
4
- class d {
5
- #s;
6
- #t;
7
- constructor(t = {}) {
8
- this.#t = new n(t);
9
- }
10
- setIssuer(t) {
11
- return this.#t.iss = t, this;
12
- }
13
- setSubject(t) {
14
- return this.#t.sub = t, this;
15
- }
16
- setAudience(t) {
17
- return this.#t.aud = t, this;
18
- }
19
- setJti(t) {
20
- return this.#t.jti = t, this;
21
- }
22
- setNotBefore(t) {
23
- return this.#t.nbf = t, this;
24
- }
25
- setExpirationTime(t) {
26
- return this.#t.exp = t, this;
27
- }
28
- setIssuedAt(t) {
29
- return this.#t.iat = t, this;
30
- }
31
- setProtectedHeader(t) {
32
- return this.#s = t, this;
33
- }
34
- async sign(t, e) {
35
- const s = new i(this.#t.data());
36
- if (s.setProtectedHeader(this.#s), Array.isArray(this.#s?.crit) && this.#s.crit.includes("b64") && this.#s.b64 === !1)
37
- throw new r("JWTs MUST NOT use unencoded payload");
38
- return s.sign(t, e);
1
+ const H = (m) => (h, n, r) => {
2
+ const s = r.subscribe;
3
+ return r.subscribe = (c, i, a) => {
4
+ let l = c;
5
+ if (i) {
6
+ const g = a?.equalityFn || Object.is;
7
+ let v = c(r.getState());
8
+ l = (f) => {
9
+ const u = c(f);
10
+ if (!g(v, u)) {
11
+ const y = v;
12
+ i(v = u, y);
13
+ }
14
+ }, a?.fireImmediately && i(v, v);
15
+ }
16
+ return s(l);
17
+ }, m(h, n, r);
18
+ }, R = H;
19
+ function F(m, h) {
20
+ let n;
21
+ try {
22
+ n = m();
23
+ } catch {
24
+ return;
39
25
  }
26
+ return {
27
+ getItem: (s) => {
28
+ var e;
29
+ const c = (a) => a === null ? null : JSON.parse(a, void 0), i = (e = n.getItem(s)) != null ? e : null;
30
+ return i instanceof Promise ? i.then(c) : c(i);
31
+ },
32
+ setItem: (s, e) => n.setItem(s, JSON.stringify(e, void 0)),
33
+ removeItem: (s) => n.removeItem(s)
34
+ };
40
35
  }
36
+ const p = (m) => (h) => {
37
+ try {
38
+ const n = m(h);
39
+ return n instanceof Promise ? n : {
40
+ then(r) {
41
+ return p(r)(n);
42
+ },
43
+ catch(r) {
44
+ return this;
45
+ }
46
+ };
47
+ } catch (n) {
48
+ return {
49
+ then(r) {
50
+ return this;
51
+ },
52
+ catch(r) {
53
+ return p(r)(n);
54
+ }
55
+ };
56
+ }
57
+ }, O = (m, h) => (n, r, s) => {
58
+ let e = {
59
+ storage: F(() => localStorage),
60
+ partialize: (t) => t,
61
+ version: 0,
62
+ merge: (t, S) => ({
63
+ ...S,
64
+ ...t
65
+ }),
66
+ ...h
67
+ }, c = !1;
68
+ const i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set();
69
+ let l = e.storage;
70
+ if (!l)
71
+ return m(
72
+ (...t) => {
73
+ console.warn(
74
+ `[zustand persist middleware] Unable to update item '${e.name}', the given storage is currently unavailable.`
75
+ ), n(...t);
76
+ },
77
+ r,
78
+ s
79
+ );
80
+ const g = () => {
81
+ const t = e.partialize({ ...r() });
82
+ return l.setItem(e.name, {
83
+ state: t,
84
+ version: e.version
85
+ });
86
+ }, v = s.setState;
87
+ s.setState = (t, S) => {
88
+ v(t, S), g();
89
+ };
90
+ const f = m(
91
+ (...t) => {
92
+ n(...t), g();
93
+ },
94
+ r,
95
+ s
96
+ );
97
+ s.getInitialState = () => f;
98
+ let u;
99
+ const y = () => {
100
+ var t, S;
101
+ if (!l) return;
102
+ c = !1, i.forEach((o) => {
103
+ var d;
104
+ return o((d = r()) != null ? d : f);
105
+ });
106
+ const b = ((S = e.onRehydrateStorage) == null ? void 0 : S.call(e, (t = r()) != null ? t : f)) || void 0;
107
+ return p(l.getItem.bind(l))(e.name).then((o) => {
108
+ if (o)
109
+ if (typeof o.version == "number" && o.version !== e.version) {
110
+ if (e.migrate) {
111
+ const d = e.migrate(
112
+ o.state,
113
+ o.version
114
+ );
115
+ return d instanceof Promise ? d.then((I) => [!0, I]) : [!0, d];
116
+ }
117
+ console.error(
118
+ "State loaded from storage couldn't be migrated since no migrate function was provided"
119
+ );
120
+ } else
121
+ return [!1, o.state];
122
+ return [!1, void 0];
123
+ }).then((o) => {
124
+ var d;
125
+ const [I, _] = o;
126
+ if (u = e.merge(
127
+ _,
128
+ (d = r()) != null ? d : f
129
+ ), n(u, !0), I)
130
+ return g();
131
+ }).then(() => {
132
+ b?.(u, void 0), u = r(), c = !0, a.forEach((o) => o(u));
133
+ }).catch((o) => {
134
+ b?.(void 0, o);
135
+ });
136
+ };
137
+ return s.persist = {
138
+ setOptions: (t) => {
139
+ e = {
140
+ ...e,
141
+ ...t
142
+ }, t.storage && (l = t.storage);
143
+ },
144
+ clearStorage: () => {
145
+ l?.removeItem(e.name);
146
+ },
147
+ getOptions: () => e,
148
+ rehydrate: () => y(),
149
+ hasHydrated: () => c,
150
+ onHydrate: (t) => (i.add(t), () => {
151
+ i.delete(t);
152
+ }),
153
+ onFinishHydration: (t) => (a.add(t), () => {
154
+ a.delete(t);
155
+ })
156
+ }, e.skipHydration || y(), u || f;
157
+ }, w = O;
41
158
  export {
42
- d as SignJWT
159
+ F as createJSONStorage,
160
+ w as persist,
161
+ R as subscribeWithSelector
43
162
  };
@@ -1,19 +1,50 @@
1
- async function n() {
2
- const e = await window.crypto.subtle.generateKey(
3
- {
4
- name: "ECDSA",
5
- namedCurve: "P-256"
6
- // secp256r1
7
- },
8
- !1,
9
- // Do not allow key export.
10
- ["sign", "verify"]
11
- // Key usages
12
- ), r = await window.crypto.subtle.exportKey("spki", e.publicKey), t = new Uint8Array(r), a = btoa(
13
- Array.from(t).map((i) => String.fromCharCode(i)).join("")
14
- );
15
- return { privateKey: e.privateKey, publicKeyBase64: a };
1
+ class n {
2
+ events = {};
3
+ /**
4
+ * Add an event listener.
5
+ *
6
+ * @param event - The name of the event to listen for.
7
+ * @param listener - The function to call when the event is emitted.
8
+ */
9
+ on(e, s) {
10
+ this.events[e] || (this.events[e] = []), this.events[e].push(s);
11
+ }
12
+ /**
13
+ * Remove an event listener.
14
+ *
15
+ * @param event - The name of the event to remove the listener from.
16
+ * @param listener - The function to remove from the event listeners.
17
+ */
18
+ removeListener(e, s) {
19
+ if (!this.events[e])
20
+ return;
21
+ const t = this.events[e].indexOf(s);
22
+ t > -1 && this.events[e].splice(t, 1);
23
+ }
24
+ /**
25
+ * Emit an event.
26
+ *
27
+ * @param event - The name of the event to emit.
28
+ * @param args - The arguments to pass to the event listeners.
29
+ */
30
+ emit(e, ...s) {
31
+ this.events[e] && this.events[e].forEach((t) => {
32
+ try {
33
+ t(...s);
34
+ } catch (i) {
35
+ console.error(`Error in event listener for ${e}:`, i);
36
+ }
37
+ });
38
+ }
39
+ /**
40
+ * Remove all listeners for an event.
41
+ *
42
+ * @param event - The name of the event to remove all listeners from. If not provided, removes all listeners for all events.
43
+ */
44
+ removeAllListeners(e) {
45
+ e ? delete this.events[e] : this.events = {};
46
+ }
16
47
  }
17
48
  export {
18
- n as createKeyPair
49
+ n as EventEmitter
19
50
  };