@coinbase/cdp-core 0.0.32 → 0.0.34
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/README.md +74 -8
- package/dist/esm/index.native.js +41 -36
- package/dist/esm/index.native10.js +115 -21
- package/dist/esm/index.native100.js +6 -9
- package/dist/esm/index.native101.js +11 -13
- package/dist/esm/index.native102.js +11 -8
- package/dist/esm/index.native103.js +7 -14
- package/dist/esm/index.native104.js +16 -80
- package/dist/esm/index.native105.js +79 -11
- package/dist/esm/index.native106.js +12 -35
- package/dist/esm/index.native107.js +35 -41
- package/dist/esm/index.native108.js +38 -75
- package/dist/esm/index.native109.js +81 -0
- package/dist/esm/index.native11.js +20 -30
- package/dist/esm/index.native12.js +30 -7
- package/dist/esm/index.native13.js +9 -15
- package/dist/esm/index.native14.js +15 -15
- package/dist/esm/index.native15.js +15 -116
- package/dist/esm/index.native16.js +116 -11
- package/dist/esm/index.native17.js +15 -42
- package/dist/esm/index.native18.js +42 -20
- package/dist/esm/index.native19.js +20 -172
- package/dist/esm/index.native2.js +3 -3
- package/dist/esm/index.native20.js +170 -39
- package/dist/esm/index.native21.js +41 -49
- package/dist/esm/index.native22.js +47 -70
- package/dist/esm/index.native23.js +69 -23
- package/dist/esm/index.native24.js +22 -156
- package/dist/esm/index.native25.js +157 -45
- package/dist/esm/index.native26.js +43 -245
- package/dist/esm/index.native27.js +247 -53
- package/dist/esm/index.native28.js +56 -17
- package/dist/esm/index.native29.js +15 -21
- package/dist/esm/index.native3.js +40 -30
- package/dist/esm/index.native30.js +21 -49
- package/dist/esm/index.native31.js +50 -8
- package/dist/esm/index.native32.js +8 -17
- package/dist/esm/index.native33.js +16 -44
- package/dist/esm/index.native34.js +45 -13
- package/dist/esm/index.native35.js +13 -55
- package/dist/esm/index.native36.js +55 -6
- package/dist/esm/index.native37.js +6 -21
- package/dist/esm/index.native38.js +21 -11
- package/dist/esm/index.native39.js +11 -3
- package/dist/esm/index.native4.js +67 -21
- package/dist/esm/index.native40.js +3 -3
- package/dist/esm/index.native41.js +3 -34
- package/dist/esm/index.native42.js +32 -10
- package/dist/esm/index.native43.js +12 -4
- package/dist/esm/index.native44.js +4 -28
- package/dist/esm/index.native45.js +28 -6
- package/dist/esm/index.native46.js +6 -24
- package/dist/esm/index.native47.js +24 -16
- package/dist/esm/index.native48.js +16 -54
- package/dist/esm/index.native49.js +53 -22
- package/dist/esm/index.native5.js +21 -254
- package/dist/esm/index.native50.js +23 -11
- package/dist/esm/index.native51.js +10 -26
- package/dist/esm/index.native52.js +26 -41
- package/dist/esm/index.native53.js +41 -54
- package/dist/esm/index.native54.js +54 -126
- package/dist/esm/index.native55.js +126 -11
- package/dist/esm/index.native56.js +9 -101
- package/dist/esm/index.native57.js +104 -6
- package/dist/esm/index.native58.js +7 -3
- package/dist/esm/index.native59.js +3 -15
- package/dist/esm/index.native6.js +314 -174
- package/dist/esm/index.native60.js +14 -42
- package/dist/esm/index.native61.js +38 -74
- package/dist/esm/index.native62.js +79 -2
- package/dist/esm/index.native63.js +2 -2
- package/dist/esm/index.native64.js +2 -13
- package/dist/esm/index.native65.js +8 -33
- package/dist/esm/index.native66.js +36 -5
- package/dist/esm/index.native67.js +5 -33
- package/dist/esm/index.native68.js +34 -8
- package/dist/esm/index.native69.js +8 -10
- package/dist/esm/index.native7.js +213 -115
- package/dist/esm/index.native70.js +10 -11
- package/dist/esm/index.native71.js +11 -13
- package/dist/esm/index.native72.js +13 -18
- package/dist/esm/index.native73.js +18 -5
- package/dist/esm/index.native74.js +6 -5
- package/dist/esm/index.native75.js +5 -11
- package/dist/esm/index.native76.js +10 -54
- package/dist/esm/index.native77.js +54 -10
- package/dist/esm/index.native78.js +11 -2
- package/dist/esm/index.native79.js +2 -45
- package/dist/esm/index.native8.js +115 -137
- package/dist/esm/index.native80.js +44 -13
- package/dist/esm/index.native81.js +14 -2
- package/dist/esm/index.native82.js +2 -21
- package/dist/esm/index.native83.js +18 -17
- package/dist/esm/index.native84.js +20 -80
- package/dist/esm/index.native85.js +79 -103
- package/dist/esm/index.native86.js +101 -30
- package/dist/esm/index.native87.js +32 -6
- package/dist/esm/index.native88.js +6 -78
- package/dist/esm/index.native89.js +2 -2
- package/dist/esm/index.native9.js +138 -113
- package/dist/esm/index.native90.js +3 -3
- package/dist/esm/index.native92.js +3 -3
- package/dist/esm/index.native93.js +1 -1
- package/dist/esm/index.native94.js +3 -3
- package/dist/esm/index.native95.js +79 -10
- package/dist/esm/index.native96.js +10 -5
- package/dist/esm/index.native97.js +5 -18
- package/dist/esm/index.native98.js +18 -28
- package/dist/esm/index.native99.js +26 -6
- package/dist/esm/index.web.js +41 -38
- package/dist/esm/index.web100.js +13 -28
- package/dist/esm/index.web101.js +10 -8
- package/dist/esm/index.web102.js +17 -11
- package/dist/esm/index.web103.js +80 -12
- package/dist/esm/index.web104.js +13 -10
- package/dist/esm/index.web105.js +36 -17
- package/dist/esm/index.web106.js +40 -79
- package/dist/esm/index.web12.js +6 -5
- package/dist/esm/index.web13.js +12 -10
- package/dist/esm/index.web15.js +1 -0
- package/dist/esm/index.web26.js +1 -1
- package/dist/esm/index.web5.js +217 -141
- package/dist/esm/index.web6.js +65 -38
- package/dist/esm/index.web75.js +6 -6
- package/dist/esm/index.web84.js +1 -1
- package/dist/esm/index.web87.js +21 -10
- package/dist/esm/index.web88.js +10 -79
- package/dist/esm/index.web89.js +19 -20
- package/dist/esm/index.web90.js +93 -9
- package/dist/esm/index.web91.js +19 -18
- package/dist/esm/index.web92.js +105 -81
- package/dist/esm/index.web93.js +9 -20
- package/dist/esm/index.web94.js +73 -112
- package/dist/esm/index.web96.js +18 -13
- package/dist/esm/index.web97.js +27 -35
- package/dist/esm/index.web98.js +7 -41
- package/dist/esm/index.web99.js +11 -18
- package/dist/native/index.native.js +41 -36
- package/dist/native/index.native10.js +115 -21
- package/dist/native/index.native100.js +6 -9
- package/dist/native/index.native101.js +11 -13
- package/dist/native/index.native102.js +11 -8
- package/dist/native/index.native103.js +7 -14
- package/dist/native/index.native104.js +16 -80
- package/dist/native/index.native105.js +79 -11
- package/dist/native/index.native106.js +12 -35
- package/dist/native/index.native107.js +35 -41
- package/dist/native/index.native108.js +38 -75
- package/dist/native/index.native109.js +81 -0
- package/dist/native/index.native11.js +20 -30
- package/dist/native/index.native12.js +30 -7
- package/dist/native/index.native13.js +9 -15
- package/dist/native/index.native14.js +15 -15
- package/dist/native/index.native15.js +15 -116
- package/dist/native/index.native16.js +116 -11
- package/dist/native/index.native17.js +15 -42
- package/dist/native/index.native18.js +42 -20
- package/dist/native/index.native19.js +20 -172
- package/dist/native/index.native2.js +3 -3
- package/dist/native/index.native20.js +170 -39
- package/dist/native/index.native21.js +41 -49
- package/dist/native/index.native22.js +47 -70
- package/dist/native/index.native23.js +69 -23
- package/dist/native/index.native24.js +22 -156
- package/dist/native/index.native25.js +157 -45
- package/dist/native/index.native26.js +43 -245
- package/dist/native/index.native27.js +247 -53
- package/dist/native/index.native28.js +56 -17
- package/dist/native/index.native29.js +15 -21
- package/dist/native/index.native3.js +40 -30
- package/dist/native/index.native30.js +21 -49
- package/dist/native/index.native31.js +50 -8
- package/dist/native/index.native32.js +8 -17
- package/dist/native/index.native33.js +16 -44
- package/dist/native/index.native34.js +45 -13
- package/dist/native/index.native35.js +13 -55
- package/dist/native/index.native36.js +55 -6
- package/dist/native/index.native37.js +6 -21
- package/dist/native/index.native38.js +21 -11
- package/dist/native/index.native39.js +11 -3
- package/dist/native/index.native4.js +67 -21
- package/dist/native/index.native40.js +3 -3
- package/dist/native/index.native41.js +3 -34
- package/dist/native/index.native42.js +32 -10
- package/dist/native/index.native43.js +12 -4
- package/dist/native/index.native44.js +4 -28
- package/dist/native/index.native45.js +28 -6
- package/dist/native/index.native46.js +6 -24
- package/dist/native/index.native47.js +24 -16
- package/dist/native/index.native48.js +16 -54
- package/dist/native/index.native49.js +53 -22
- package/dist/native/index.native5.js +21 -254
- package/dist/native/index.native50.js +23 -11
- package/dist/native/index.native51.js +10 -26
- package/dist/native/index.native52.js +26 -41
- package/dist/native/index.native53.js +41 -54
- package/dist/native/index.native54.js +54 -126
- package/dist/native/index.native55.js +126 -11
- package/dist/native/index.native56.js +9 -101
- package/dist/native/index.native57.js +104 -6
- package/dist/native/index.native58.js +7 -3
- package/dist/native/index.native59.js +3 -15
- package/dist/native/index.native6.js +314 -174
- package/dist/native/index.native60.js +14 -42
- package/dist/native/index.native61.js +38 -74
- package/dist/native/index.native62.js +79 -2
- package/dist/native/index.native63.js +2 -2
- package/dist/native/index.native64.js +2 -13
- package/dist/native/index.native65.js +8 -33
- package/dist/native/index.native66.js +36 -5
- package/dist/native/index.native67.js +5 -33
- package/dist/native/index.native68.js +34 -8
- package/dist/native/index.native69.js +8 -10
- package/dist/native/index.native7.js +213 -115
- package/dist/native/index.native70.js +10 -11
- package/dist/native/index.native71.js +11 -13
- package/dist/native/index.native72.js +13 -18
- package/dist/native/index.native73.js +18 -5
- package/dist/native/index.native74.js +6 -5
- package/dist/native/index.native75.js +5 -11
- package/dist/native/index.native76.js +10 -54
- package/dist/native/index.native77.js +54 -10
- package/dist/native/index.native78.js +11 -2
- package/dist/native/index.native79.js +2 -45
- package/dist/native/index.native8.js +115 -137
- package/dist/native/index.native80.js +44 -13
- package/dist/native/index.native81.js +14 -2
- package/dist/native/index.native82.js +2 -21
- package/dist/native/index.native83.js +18 -17
- package/dist/native/index.native84.js +20 -80
- package/dist/native/index.native85.js +79 -103
- package/dist/native/index.native86.js +101 -30
- package/dist/native/index.native87.js +32 -6
- package/dist/native/index.native88.js +6 -78
- package/dist/native/index.native89.js +2 -2
- package/dist/native/index.native9.js +138 -113
- package/dist/native/index.native90.js +3 -3
- package/dist/native/index.native92.js +3 -3
- package/dist/native/index.native93.js +1 -1
- package/dist/native/index.native94.js +3 -3
- package/dist/native/index.native95.js +79 -10
- package/dist/native/index.native96.js +10 -5
- package/dist/native/index.native97.js +5 -18
- package/dist/native/index.native98.js +18 -28
- package/dist/native/index.native99.js +26 -6
- package/dist/native-types/auth/authManager.d.ts +3 -0
- package/dist/native-types/auth/withAuth.d.ts +3 -1
- package/dist/native-types/core.d.ts +3 -1
- package/dist/native-types/platform/native/secureStorage.d.ts +2 -0
- package/dist/native-types/platform/types.d.ts +7 -0
- package/dist/native-types/types.d.ts +20 -3
- package/dist/types/auth/authManager.d.ts +3 -0
- package/dist/types/auth/withAuth.d.ts +3 -1
- package/dist/types/core.d.ts +3 -1
- package/dist/types/platform/native/secureStorage.d.ts +2 -0
- package/dist/types/platform/types.d.ts +7 -0
- package/dist/types/types.d.ts +20 -3
- package/dist/web/index.web.js +41 -38
- package/dist/web/index.web100.js +13 -28
- package/dist/web/index.web101.js +10 -8
- package/dist/web/index.web102.js +17 -11
- package/dist/web/index.web103.js +80 -12
- package/dist/web/index.web104.js +13 -10
- package/dist/web/index.web105.js +36 -17
- package/dist/web/index.web106.js +40 -79
- package/dist/web/index.web12.js +6 -5
- package/dist/web/index.web13.js +12 -10
- package/dist/web/index.web15.js +1 -0
- package/dist/web/index.web26.js +1 -1
- package/dist/web/index.web5.js +217 -141
- package/dist/web/index.web6.js +65 -38
- package/dist/web/index.web75.js +6 -6
- package/dist/web/index.web84.js +1 -1
- package/dist/web/index.web87.js +21 -10
- package/dist/web/index.web88.js +10 -79
- package/dist/web/index.web89.js +19 -20
- package/dist/web/index.web90.js +93 -9
- package/dist/web/index.web91.js +19 -18
- package/dist/web/index.web92.js +105 -81
- package/dist/web/index.web93.js +9 -20
- package/dist/web/index.web94.js +73 -112
- package/dist/web/index.web96.js +18 -13
- package/dist/web/index.web97.js +27 -35
- package/dist/web/index.web98.js +7 -41
- package/dist/web/index.web99.js +11 -18
- package/dist/web-types/auth/authManager.d.ts +3 -0
- package/dist/web-types/auth/withAuth.d.ts +3 -1
- package/dist/web-types/core.d.ts +3 -1
- package/dist/web-types/platform/native/secureStorage.d.ts +2 -0
- package/dist/web-types/platform/types.d.ts +7 -0
- package/dist/web-types/types.d.ts +20 -3
- package/package.json +8 -4
package/dist/esm/index.web5.js
CHANGED
|
@@ -1,128 +1,171 @@
|
|
|
1
|
-
import { configureCdpApiClient as
|
|
2
|
-
import { AuthManager as
|
|
3
|
-
import { toAuthState as
|
|
1
|
+
import { configureCdpApiClient as h, setAuthManager as I, initiateAuthentication as A, createEndUserSolanaAccount as v, createEndUserEvmAccount as k, createEndUserEvmSmartAccount as d, verifyEmailAuthentication as S, verifySmsAuthentication as E, signEvmHashWithEndUserAccount as U, signEvmTransactionWithEndUserAccount as T, signSolanaTransactionWithEndUserAccount as M, sendEvmTransactionWithEndUserAccount as j, sendSolanaTransactionWithEndUserAccount as P, signEvmMessageWithEndUserAccount as O, signEvmTypedDataWithEndUserAccount as C, sendUserOperationWithEndUserAccount as x, getUserOperationWithEndUserAccount as W, exportEndUserEvmAccount as H } from "@coinbase/cdp-api-client";
|
|
2
|
+
import { AuthManager as b } from "./index.web6.js";
|
|
3
|
+
import { toAuthState as u } from "./index.web12.js";
|
|
4
4
|
import { withAuth as o } from "./index.web13.js";
|
|
5
|
-
import { MockAuthManager as
|
|
6
|
-
import { mockUser as
|
|
7
|
-
import { getPlatformCrypto as
|
|
8
|
-
import { isChainSupportedForCDPSends as
|
|
9
|
-
import { getConfig as
|
|
5
|
+
import { MockAuthManager as K } from "./index.web14.js";
|
|
6
|
+
import { mockUser as g } from "./index.web15.js";
|
|
7
|
+
import { getPlatformServices as l, getPlatformCrypto as D } from "./index.web2.js";
|
|
8
|
+
import { isChainSupportedForCDPSends as _ } from "./index.web16.js";
|
|
9
|
+
import { getConfig as n, setCoreAuthManager as m, getCoreAuthManager as a, setConfig as N } from "./index.web17.js";
|
|
10
10
|
import "viem";
|
|
11
|
-
import { serializeTransaction as
|
|
12
|
-
const
|
|
11
|
+
import { serializeTransaction as w } from "./index.web18.js";
|
|
12
|
+
const R = async (e) => {
|
|
13
13
|
if (!e.projectId)
|
|
14
14
|
throw new Error("Project ID is required");
|
|
15
|
-
let
|
|
15
|
+
let r;
|
|
16
16
|
try {
|
|
17
|
-
|
|
17
|
+
r = n().projectId !== e.projectId;
|
|
18
18
|
} catch {
|
|
19
|
-
|
|
19
|
+
r = !0;
|
|
20
20
|
}
|
|
21
|
-
if (
|
|
22
|
-
|
|
21
|
+
if (N(e), n().useMock) {
|
|
22
|
+
m(new K(n().projectId));
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
let t;
|
|
26
|
+
try {
|
|
27
|
+
const s = l();
|
|
28
|
+
t = s.secureStorage ? {
|
|
29
|
+
getRefreshToken: () => s.secureStorage.getItem("cdp_refresh_token"),
|
|
30
|
+
setRefreshToken: (c) => s.secureStorage.setItem("cdp_refresh_token", c),
|
|
31
|
+
removeRefreshToken: () => s.secureStorage.removeItem("cdp_refresh_token")
|
|
32
|
+
} : void 0;
|
|
33
|
+
} catch {
|
|
34
|
+
t = void 0;
|
|
35
|
+
}
|
|
36
|
+
if (h({
|
|
37
|
+
debugging: n().debugging,
|
|
38
|
+
basePath: n().basePath,
|
|
39
|
+
refreshTokenStorage: t
|
|
40
|
+
}), r) {
|
|
41
|
+
const s = new b(n().projectId);
|
|
42
|
+
m(s), I(s);
|
|
31
43
|
}
|
|
32
|
-
await
|
|
33
|
-
},
|
|
44
|
+
await a().ensureInitialized();
|
|
45
|
+
}, ee = async (e) => p({
|
|
34
46
|
email: e.email,
|
|
35
47
|
type: "email"
|
|
36
|
-
}),
|
|
48
|
+
}), re = async (e) => p({
|
|
37
49
|
phoneNumber: e.phoneNumber,
|
|
38
50
|
type: "sms"
|
|
39
|
-
}),
|
|
51
|
+
}), te = async (e) => y(
|
|
40
52
|
e,
|
|
41
53
|
"Mock email OTP verified",
|
|
42
|
-
(
|
|
43
|
-
),
|
|
54
|
+
(r, t) => S(r, t)
|
|
55
|
+
), ne = async (e) => y(
|
|
44
56
|
e,
|
|
45
57
|
"Mock SMS OTP verified",
|
|
46
|
-
(
|
|
47
|
-
),
|
|
48
|
-
if (
|
|
49
|
-
await
|
|
58
|
+
(r, t) => E(r, t)
|
|
59
|
+
), se = async () => a().getUser(), ae = async () => a().isSignedIn(), ce = async () => {
|
|
60
|
+
if (n().useMock) {
|
|
61
|
+
await a().signOut();
|
|
50
62
|
return;
|
|
51
63
|
}
|
|
52
|
-
if (!await
|
|
64
|
+
if (!await a().isSignedIn())
|
|
53
65
|
throw new Error("User not signed in");
|
|
54
|
-
await
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
66
|
+
await a().signOut();
|
|
67
|
+
try {
|
|
68
|
+
const r = l();
|
|
69
|
+
if (r.secureStorage)
|
|
70
|
+
try {
|
|
71
|
+
await r.secureStorage.removeItem("cdp_refresh_token");
|
|
72
|
+
} catch (t) {
|
|
73
|
+
console.warn("Failed to clear stored refresh token:", t);
|
|
74
|
+
}
|
|
75
|
+
} catch {
|
|
76
|
+
}
|
|
77
|
+
}, oe = async () => a().getToken(), ie = (e) => {
|
|
78
|
+
a().addAuthStateChangeCallback(e);
|
|
79
|
+
}, ue = async (e) => n().useMock ? { signature: "0x0" } : o(e, a(), async ({ user: r, walletSecretId: t }) => ({
|
|
80
|
+
signature: (await U(n().projectId, r.userId, {
|
|
59
81
|
hash: e.hash,
|
|
60
82
|
address: e.evmAccount,
|
|
61
|
-
walletSecretId:
|
|
83
|
+
walletSecretId: t
|
|
62
84
|
})).signature
|
|
63
|
-
})),
|
|
64
|
-
const
|
|
85
|
+
})), de = async (e) => n().useMock ? { signedTransaction: "0x0" } : o(e, a(), async ({ user: r, walletSecretId: t }) => {
|
|
86
|
+
const s = w(e.transaction);
|
|
65
87
|
return {
|
|
66
88
|
signedTransaction: (await T(
|
|
67
|
-
|
|
68
|
-
|
|
89
|
+
n().projectId,
|
|
90
|
+
r.userId,
|
|
69
91
|
{
|
|
70
|
-
transaction:
|
|
92
|
+
transaction: s,
|
|
71
93
|
address: e.evmAccount,
|
|
72
|
-
walletSecretId:
|
|
94
|
+
walletSecretId: t
|
|
73
95
|
}
|
|
74
96
|
)).signedTransaction
|
|
75
97
|
};
|
|
76
|
-
}),
|
|
77
|
-
|
|
98
|
+
}), ge = async (e) => n().useMock ? { signedTransaction: "mock-signed-transaction" } : o(e, a(), async ({ user: r, walletSecretId: t }) => ({
|
|
99
|
+
signedTransaction: (await M(
|
|
100
|
+
n().projectId,
|
|
101
|
+
r.userId,
|
|
102
|
+
{
|
|
103
|
+
transaction: e.transaction,
|
|
104
|
+
address: e.solanaAccount,
|
|
105
|
+
walletSecretId: t
|
|
106
|
+
}
|
|
107
|
+
)).signedTransaction
|
|
108
|
+
})), me = async (e) => {
|
|
109
|
+
if (!_(e.network))
|
|
78
110
|
throw new Error(`Chain ${e.network} is not supported by the CDP Apis`);
|
|
79
|
-
if (
|
|
111
|
+
if (n().useMock)
|
|
80
112
|
return { transactionHash: "0x0" };
|
|
81
|
-
const
|
|
82
|
-
return o(e,
|
|
83
|
-
transactionHash: (await
|
|
84
|
-
|
|
85
|
-
|
|
113
|
+
const r = w(e.transaction);
|
|
114
|
+
return o(e, a(), async ({ user: t, walletSecretId: s }) => ({
|
|
115
|
+
transactionHash: (await j(
|
|
116
|
+
n().projectId,
|
|
117
|
+
t.userId,
|
|
86
118
|
{
|
|
87
|
-
transaction:
|
|
119
|
+
transaction: r,
|
|
88
120
|
address: e.evmAccount,
|
|
89
|
-
walletSecretId:
|
|
121
|
+
walletSecretId: s,
|
|
90
122
|
network: e.network
|
|
91
123
|
}
|
|
92
124
|
)).transactionHash
|
|
93
125
|
}));
|
|
94
|
-
},
|
|
95
|
-
|
|
126
|
+
}, le = async (e) => n().useMock ? { transactionSignature: "mock-signature" } : o(e, a(), async ({ user: r, walletSecretId: t }) => ({
|
|
127
|
+
transactionSignature: (await P(
|
|
128
|
+
n().projectId,
|
|
129
|
+
r.userId,
|
|
130
|
+
{
|
|
131
|
+
transaction: e.transaction,
|
|
132
|
+
address: e.solanaAccount,
|
|
133
|
+
walletSecretId: t,
|
|
134
|
+
network: e.network
|
|
135
|
+
}
|
|
136
|
+
)).transactionSignature
|
|
137
|
+
})), we = async (e) => n().useMock ? { signature: "0x0" } : o(e, a(), async ({ user: r, walletSecretId: t }) => ({
|
|
138
|
+
signature: (await O(n().projectId, r.userId, {
|
|
96
139
|
message: e.message,
|
|
97
140
|
address: e.evmAccount,
|
|
98
|
-
walletSecretId:
|
|
141
|
+
walletSecretId: t
|
|
99
142
|
})).signature
|
|
100
|
-
})),
|
|
101
|
-
signature: (await C(
|
|
143
|
+
})), pe = async (e) => n().useMock ? { signature: "0x0" } : o(e, a(), async ({ user: r, walletSecretId: t }) => ({
|
|
144
|
+
signature: (await C(n().projectId, r.userId, {
|
|
102
145
|
typedData: e.typedData,
|
|
103
146
|
address: e.evmAccount,
|
|
104
|
-
walletSecretId:
|
|
147
|
+
walletSecretId: t
|
|
105
148
|
})).signature
|
|
106
|
-
})),
|
|
149
|
+
})), ye = async (e) => n().useMock ? {
|
|
107
150
|
userOperationHash: "0x1234567890123456789012345678901234567890123456789012345678901234"
|
|
108
|
-
} : o(e,
|
|
109
|
-
userOperationHash: (await
|
|
110
|
-
|
|
111
|
-
|
|
151
|
+
} : o(e, a(), async ({ user: r, walletSecretId: t }) => ({
|
|
152
|
+
userOperationHash: (await x(
|
|
153
|
+
n().projectId,
|
|
154
|
+
r.userId,
|
|
112
155
|
e.evmSmartAccount,
|
|
113
156
|
{
|
|
114
157
|
network: e.network,
|
|
115
|
-
calls: e.calls.map((
|
|
116
|
-
to:
|
|
117
|
-
value: String(
|
|
118
|
-
data:
|
|
158
|
+
calls: e.calls.map((c) => ({
|
|
159
|
+
to: c.to,
|
|
160
|
+
value: String(c.value ?? 0n),
|
|
161
|
+
data: c.data ?? "0x"
|
|
119
162
|
})),
|
|
120
|
-
walletSecretId:
|
|
163
|
+
walletSecretId: t,
|
|
121
164
|
useCdpPaymaster: e.useCdpPaymaster ?? !1,
|
|
122
165
|
paymasterUrl: e.paymasterUrl
|
|
123
166
|
}
|
|
124
167
|
)).userOpHash
|
|
125
|
-
})),
|
|
168
|
+
})), fe = async (e) => n().useMock ? {
|
|
126
169
|
userOpHash: e.userOperationHash,
|
|
127
170
|
network: e.network,
|
|
128
171
|
calls: [
|
|
@@ -135,122 +178,155 @@ const Y = async (e) => {
|
|
|
135
178
|
status: "complete",
|
|
136
179
|
transactionHash: "0x9876543210987654321098765432109876543210987654321098765432109876",
|
|
137
180
|
receipts: []
|
|
138
|
-
} : o(e,
|
|
139
|
-
|
|
140
|
-
|
|
181
|
+
} : o(e, a(), async ({ user: r }) => await W(
|
|
182
|
+
n().projectId,
|
|
183
|
+
r.userId,
|
|
141
184
|
e.evmSmartAccount,
|
|
142
185
|
e.userOperationHash
|
|
143
186
|
)), he = async (e) => {
|
|
144
|
-
if (
|
|
187
|
+
if (n().useMock)
|
|
145
188
|
return {
|
|
146
189
|
privateKey: "mock-private-key"
|
|
147
190
|
};
|
|
148
|
-
const
|
|
149
|
-
return o(e,
|
|
150
|
-
const
|
|
191
|
+
const r = D(), t = await r.createExportKeyPair();
|
|
192
|
+
return o(e, a(), async ({ user: s, walletSecretId: c }) => {
|
|
193
|
+
const i = await H(n().projectId, s.userId, {
|
|
151
194
|
address: e.evmAccount,
|
|
152
|
-
walletSecretId:
|
|
153
|
-
exportEncryptionKey:
|
|
195
|
+
walletSecretId: c,
|
|
196
|
+
exportEncryptionKey: t.publicKeyBase64
|
|
154
197
|
});
|
|
155
198
|
return {
|
|
156
|
-
privateKey: await
|
|
157
|
-
|
|
158
|
-
|
|
199
|
+
privateKey: await r.decryptWithPrivateKey(
|
|
200
|
+
t.privateKey,
|
|
201
|
+
i.encryptedPrivateKey
|
|
159
202
|
)
|
|
160
203
|
};
|
|
161
204
|
});
|
|
162
|
-
},
|
|
163
|
-
if (
|
|
205
|
+
}, p = async (e) => {
|
|
206
|
+
if (n().useMock)
|
|
164
207
|
return {
|
|
165
208
|
message: "Mock sign in initiated",
|
|
166
209
|
flowId: "mock-flow-id"
|
|
167
210
|
};
|
|
168
|
-
if (await
|
|
211
|
+
if (await a().isSignedIn())
|
|
169
212
|
throw new Error("User is already authenticated. Please sign out first.");
|
|
170
|
-
const
|
|
213
|
+
const t = await A(n().projectId, e);
|
|
171
214
|
return {
|
|
172
|
-
flowId:
|
|
173
|
-
message:
|
|
215
|
+
flowId: t.flowId,
|
|
216
|
+
message: t.message
|
|
174
217
|
};
|
|
175
|
-
},
|
|
176
|
-
if (
|
|
177
|
-
return await
|
|
218
|
+
}, y = async (e, r, t) => {
|
|
219
|
+
if (n().useMock)
|
|
220
|
+
return await a().setAuthState({
|
|
178
221
|
accessToken: "mock-access-token",
|
|
179
222
|
expiresAt: Date.now() + 1e3 * 60 * 60 * 24,
|
|
180
|
-
user:
|
|
223
|
+
user: g
|
|
181
224
|
}), {
|
|
182
|
-
message:
|
|
183
|
-
user:
|
|
225
|
+
message: r,
|
|
226
|
+
user: g,
|
|
184
227
|
isNewUser: !1
|
|
185
228
|
};
|
|
186
|
-
if (await
|
|
229
|
+
if (await a().isSignedIn())
|
|
187
230
|
throw new Error("User is already authenticated. Please sign out first.");
|
|
188
|
-
const
|
|
231
|
+
const c = await t(n().projectId, {
|
|
189
232
|
flowId: e.flowId,
|
|
190
233
|
otp: e.otp
|
|
191
|
-
})
|
|
192
|
-
|
|
193
|
-
|
|
234
|
+
}), i = u(
|
|
235
|
+
c.accessToken,
|
|
236
|
+
c.validUntil,
|
|
237
|
+
c.endUser
|
|
238
|
+
);
|
|
239
|
+
return await a().setAuthState(i), n().createAccountOnLogin === "solana" ? F({ authResponse: c, authState: i }) : z({ authResponse: c, authState: i });
|
|
240
|
+
}, z = async ({
|
|
241
|
+
authResponse: e,
|
|
242
|
+
authState: r
|
|
243
|
+
}) => {
|
|
244
|
+
if (!r.user.evmAccounts || r.user.evmAccounts.length === 0)
|
|
194
245
|
try {
|
|
195
|
-
const
|
|
196
|
-
let
|
|
197
|
-
walletSecretId:
|
|
246
|
+
const s = await a().getWalletSecretId();
|
|
247
|
+
let c = await k(n().projectId, r.user.userId, {
|
|
248
|
+
walletSecretId: s
|
|
198
249
|
});
|
|
199
|
-
if (
|
|
200
|
-
const [
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
250
|
+
if (n().createAccountOnLogin === "evm-smart") {
|
|
251
|
+
const [i] = c.evmAccounts;
|
|
252
|
+
c = await d(
|
|
253
|
+
n().projectId,
|
|
254
|
+
r.user.userId,
|
|
204
255
|
{
|
|
205
|
-
owner:
|
|
256
|
+
owner: i,
|
|
206
257
|
enableSpendPermissions: !1
|
|
207
258
|
// Defaulting to false until the feature is ready.
|
|
208
259
|
}
|
|
209
260
|
);
|
|
210
261
|
}
|
|
211
|
-
|
|
212
|
-
} catch (
|
|
213
|
-
throw new Error(`Failed to create EVM account: ${
|
|
262
|
+
r = u(e.accessToken, e.validUntil, c), await a().setAuthState(r);
|
|
263
|
+
} catch (s) {
|
|
264
|
+
throw new Error(`Failed to create EVM account: ${s}`);
|
|
214
265
|
}
|
|
215
|
-
if (
|
|
266
|
+
if (n().createAccountOnLogin === "evm-smart" && (!r.user.evmSmartAccounts || r.user.evmSmartAccounts.length === 0))
|
|
216
267
|
try {
|
|
217
|
-
const [
|
|
218
|
-
|
|
219
|
-
|
|
268
|
+
const [s] = r.user.evmAccounts, c = await d(
|
|
269
|
+
n().projectId,
|
|
270
|
+
r.user.userId,
|
|
220
271
|
{
|
|
221
|
-
owner:
|
|
272
|
+
owner: s,
|
|
222
273
|
enableSpendPermissions: !1
|
|
223
274
|
// Defaulting to false until the feature is ready.
|
|
224
275
|
}
|
|
225
276
|
);
|
|
226
|
-
|
|
227
|
-
} catch (
|
|
228
|
-
throw new Error(`Failed to create EVM Smart Account: ${
|
|
277
|
+
r = u(e.accessToken, e.validUntil, c), await a().setAuthState(r);
|
|
278
|
+
} catch (s) {
|
|
279
|
+
throw new Error(`Failed to create EVM Smart Account: ${s}`);
|
|
229
280
|
}
|
|
230
|
-
const
|
|
281
|
+
const t = await a().getUser();
|
|
231
282
|
return {
|
|
232
|
-
message:
|
|
233
|
-
user:
|
|
234
|
-
isNewUser:
|
|
283
|
+
message: e.message,
|
|
284
|
+
user: t,
|
|
285
|
+
isNewUser: e.isNewEndUser
|
|
286
|
+
};
|
|
287
|
+
}, F = async ({
|
|
288
|
+
authResponse: e,
|
|
289
|
+
authState: r
|
|
290
|
+
}) => {
|
|
291
|
+
if (!r.user.solanaAccounts || r.user.solanaAccounts.length === 0)
|
|
292
|
+
try {
|
|
293
|
+
const s = await a().getWalletSecretId(), c = await v(
|
|
294
|
+
n().projectId,
|
|
295
|
+
r.user.userId,
|
|
296
|
+
{
|
|
297
|
+
walletSecretId: s
|
|
298
|
+
}
|
|
299
|
+
);
|
|
300
|
+
r = u(e.accessToken, e.validUntil, c), await a().setAuthState(r);
|
|
301
|
+
} catch (s) {
|
|
302
|
+
throw new Error(`Failed to create Solana account: ${s}`);
|
|
303
|
+
}
|
|
304
|
+
const t = await a().getUser();
|
|
305
|
+
return {
|
|
306
|
+
message: e.message,
|
|
307
|
+
user: t,
|
|
308
|
+
isNewUser: e.isNewEndUser
|
|
235
309
|
};
|
|
236
310
|
};
|
|
237
311
|
export {
|
|
238
312
|
he as exportEvmAccount,
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
313
|
+
oe as getAccessToken,
|
|
314
|
+
se as getCurrentUser,
|
|
315
|
+
fe as getUserOperation,
|
|
316
|
+
R as initialize,
|
|
317
|
+
ae as isSignedIn,
|
|
318
|
+
ie as onAuthStateChange,
|
|
319
|
+
me as sendEvmTransaction,
|
|
320
|
+
le as sendSolanaTransaction,
|
|
321
|
+
ye as sendUserOperation,
|
|
322
|
+
ue as signEvmHash,
|
|
323
|
+
we as signEvmMessage,
|
|
324
|
+
de as signEvmTransaction,
|
|
325
|
+
pe as signEvmTypedData,
|
|
326
|
+
ee as signInWithEmail,
|
|
327
|
+
re as signInWithSms,
|
|
328
|
+
ce as signOut,
|
|
329
|
+
ge as signSolanaTransaction,
|
|
330
|
+
te as verifyEmailOTP,
|
|
331
|
+
ne as verifySmsOTP
|
|
256
332
|
};
|
package/dist/esm/index.web6.js
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { logOutEndUser as l, refreshAccessToken as c, registerTemporaryWalletSecret as o } from "@coinbase/cdp-api-client";
|
|
2
2
|
import { SignJWT as u } from "./index.web19.js";
|
|
3
3
|
import "viem";
|
|
4
|
-
import { toAuthState as
|
|
4
|
+
import { toAuthState as f } from "./index.web12.js";
|
|
5
5
|
import { getPlatformCrypto as n } from "./index.web2.js";
|
|
6
|
-
import { sortKeys as
|
|
7
|
-
const
|
|
8
|
-
class
|
|
6
|
+
import { sortKeys as S } from "./index.web16.js";
|
|
7
|
+
const i = 60 * 1e3;
|
|
8
|
+
class p {
|
|
9
9
|
projectId;
|
|
10
10
|
authState = null;
|
|
11
11
|
walletSecret = null;
|
|
12
12
|
authStateChangeCallbacks = [];
|
|
13
13
|
initPromise = null;
|
|
14
|
+
refreshTimeout = null;
|
|
14
15
|
/**
|
|
15
16
|
* Initializes the token manager.
|
|
16
17
|
*
|
|
17
18
|
* @param projectId - The project ID.
|
|
18
19
|
*/
|
|
19
|
-
constructor(
|
|
20
|
-
this.projectId =
|
|
20
|
+
constructor(e) {
|
|
21
|
+
this.projectId = e, this.initPromise = this._doInitialize();
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
24
|
* Gets the current user, or null if there is no user signed in.
|
|
@@ -29,12 +30,20 @@ class A {
|
|
|
29
30
|
}
|
|
30
31
|
/**
|
|
31
32
|
* Returns whether the user is signed in - i.e., whether there is an unexpired
|
|
32
|
-
* access token and user.
|
|
33
|
+
* access token and user. Attempts to refresh the token if it's expired.
|
|
33
34
|
*
|
|
34
35
|
* @returns True if the user is signed in, false otherwise.
|
|
35
36
|
*/
|
|
36
37
|
async isSignedIn() {
|
|
37
|
-
|
|
38
|
+
if (!this.authState)
|
|
39
|
+
return !1;
|
|
40
|
+
if (this.authState.expiresAt > Date.now() + i)
|
|
41
|
+
return !0;
|
|
42
|
+
try {
|
|
43
|
+
return await this.getToken() !== null;
|
|
44
|
+
} catch {
|
|
45
|
+
return !1;
|
|
46
|
+
}
|
|
38
47
|
}
|
|
39
48
|
/**
|
|
40
49
|
* Signs out the user, clearing all authentication state.
|
|
@@ -52,8 +61,8 @@ class A {
|
|
|
52
61
|
*
|
|
53
62
|
* @param callback - The function to call when the auth state changes.
|
|
54
63
|
*/
|
|
55
|
-
addAuthStateChangeCallback(
|
|
56
|
-
this.authStateChangeCallbacks.push(
|
|
64
|
+
addAuthStateChangeCallback(e) {
|
|
65
|
+
this.authStateChangeCallbacks.push(e), e(this.authState?.user ?? null);
|
|
57
66
|
}
|
|
58
67
|
/**
|
|
59
68
|
* Gets the access token, refreshing it if it is expired. Returns null if the user is not
|
|
@@ -84,32 +93,32 @@ class A {
|
|
|
84
93
|
* @param options.requestData - The data of the request.
|
|
85
94
|
* @returns The X-Wallet-Auth header.
|
|
86
95
|
*/
|
|
87
|
-
async getXWalletAuth(
|
|
96
|
+
async getXWalletAuth(e) {
|
|
88
97
|
if (!await this.isSignedIn())
|
|
89
98
|
throw new Error("Cannot get X-Wallet-Auth header if the user is not signed in");
|
|
90
99
|
this.shouldRefreshWalletSecret() && await this.refreshWalletSecret();
|
|
91
|
-
const
|
|
92
|
-
uris: [
|
|
100
|
+
const t = `${e.requestMethod} ${e.requestHost}${e.requestPath}`, r = Math.floor(Date.now() / 1e3), s = n(), a = {
|
|
101
|
+
uris: [t]
|
|
93
102
|
};
|
|
94
|
-
if (
|
|
95
|
-
const
|
|
96
|
-
|
|
103
|
+
if (e.requestData && Object.keys(e.requestData).length > 0) {
|
|
104
|
+
const h = S(e.requestData);
|
|
105
|
+
a.reqHash = await s.hash(new TextEncoder().encode(JSON.stringify(h)));
|
|
97
106
|
}
|
|
98
|
-
return await new u(
|
|
107
|
+
return await new u(a).setProtectedHeader({ alg: "ES256", typ: "JWT" }).setIssuedAt(r).setNotBefore(r).setJti(s.generateRandomId()).sign(this.walletSecret.keyPair.privateKey);
|
|
99
108
|
}
|
|
100
109
|
/**
|
|
101
110
|
* Sets the authentication state.
|
|
102
111
|
*
|
|
103
112
|
* @param authState - The authentication state.
|
|
104
113
|
*/
|
|
105
|
-
async setAuthState(
|
|
106
|
-
this.authState =
|
|
114
|
+
async setAuthState(e) {
|
|
115
|
+
this.authState = e, this.authStateChangeCallbacks.forEach((t) => t(this.authState?.user ?? null)), this.scheduleTokenRefresh();
|
|
107
116
|
}
|
|
108
117
|
/**
|
|
109
118
|
* Clears the authentication state.
|
|
110
119
|
*/
|
|
111
120
|
async clearAuthState() {
|
|
112
|
-
this.authState = null, this.walletSecret = null, this.authStateChangeCallbacks.forEach((
|
|
121
|
+
this.authState = null, this.walletSecret = null, this.cancelTokenRefresh(), this.authStateChangeCallbacks.forEach((e) => e(null));
|
|
113
122
|
}
|
|
114
123
|
/**
|
|
115
124
|
* Ensures the AuthManager is initialized before proceeding.
|
|
@@ -128,8 +137,8 @@ class A {
|
|
|
128
137
|
async _doInitialize() {
|
|
129
138
|
try {
|
|
130
139
|
await this.refreshAccessToken();
|
|
131
|
-
} catch (
|
|
132
|
-
console.warn("Failed to refresh access token during initialization:",
|
|
140
|
+
} catch (e) {
|
|
141
|
+
console.warn("Failed to refresh access token during initialization:", e);
|
|
133
142
|
}
|
|
134
143
|
}
|
|
135
144
|
/**
|
|
@@ -138,7 +147,7 @@ class A {
|
|
|
138
147
|
* @returns True if the token should be refreshed, false otherwise.
|
|
139
148
|
*/
|
|
140
149
|
shouldRefreshToken() {
|
|
141
|
-
return !(this.authState && this.authState.expiresAt > Date.now() +
|
|
150
|
+
return !(this.authState && this.authState.expiresAt > Date.now() + i);
|
|
142
151
|
}
|
|
143
152
|
/**
|
|
144
153
|
* Refreshes the access token and transitions the auth state accordingly.
|
|
@@ -148,14 +157,14 @@ class A {
|
|
|
148
157
|
*/
|
|
149
158
|
async refreshAccessToken() {
|
|
150
159
|
try {
|
|
151
|
-
const
|
|
160
|
+
const e = await c(this.projectId, {
|
|
152
161
|
grantType: "refresh_token"
|
|
153
|
-
}),
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
162
|
+
}), t = f(
|
|
163
|
+
e.accessToken,
|
|
164
|
+
e.validUntil,
|
|
165
|
+
e.endUser
|
|
157
166
|
);
|
|
158
|
-
await this.setAuthState(
|
|
167
|
+
await this.setAuthState(t);
|
|
159
168
|
} catch {
|
|
160
169
|
await this.signOut();
|
|
161
170
|
}
|
|
@@ -166,7 +175,7 @@ class A {
|
|
|
166
175
|
* @returns True if the wallet secret should be refreshed, false otherwise.
|
|
167
176
|
*/
|
|
168
177
|
shouldRefreshWalletSecret() {
|
|
169
|
-
return !(this.walletSecret && this.walletSecret.expiresAt > Date.now() +
|
|
178
|
+
return !(this.walletSecret && this.walletSecret.expiresAt > Date.now() + i);
|
|
170
179
|
}
|
|
171
180
|
/**
|
|
172
181
|
* Refreshes the wallet secret. Assumes the user is signed in.
|
|
@@ -174,19 +183,37 @@ class A {
|
|
|
174
183
|
* @returns The wallet secret.
|
|
175
184
|
*/
|
|
176
185
|
async refreshWalletSecret() {
|
|
177
|
-
const
|
|
178
|
-
this.walletSecret = { walletSecretId:
|
|
186
|
+
const e = n(), t = this.walletSecret?.walletSecretId ?? e.generateRandomId(), r = this.walletSecret?.keyPair ?? await e.createKeyPair(), s = this.authState.expiresAt, a = new Date(s).toISOString();
|
|
187
|
+
this.walletSecret = { walletSecretId: t, keyPair: r, expiresAt: s };
|
|
179
188
|
try {
|
|
180
189
|
await o(this.projectId, this.authState.user.userId, {
|
|
181
|
-
walletSecretId:
|
|
182
|
-
publicKey:
|
|
183
|
-
validUntil:
|
|
190
|
+
walletSecretId: t,
|
|
191
|
+
publicKey: r.publicKeyBase64,
|
|
192
|
+
validUntil: a
|
|
184
193
|
});
|
|
185
|
-
} catch (
|
|
186
|
-
throw this.walletSecret = null,
|
|
194
|
+
} catch (h) {
|
|
195
|
+
throw this.walletSecret = null, h;
|
|
187
196
|
}
|
|
188
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Schedules a token refresh to occur exactly when shouldRefreshToken() would return true.
|
|
200
|
+
* Uses the same REFRESH_CREDENTIALS_BUFFER_MS timing as the rest of the auth system.
|
|
201
|
+
*/
|
|
202
|
+
scheduleTokenRefresh() {
|
|
203
|
+
if (this.cancelTokenRefresh(), !this.authState)
|
|
204
|
+
return;
|
|
205
|
+
const t = this.authState.expiresAt - i - Date.now();
|
|
206
|
+
t <= 0 || (this.refreshTimeout = setTimeout(async () => {
|
|
207
|
+
await this.refreshAccessToken(), this.scheduleTokenRefresh();
|
|
208
|
+
}, t));
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Cancels any scheduled token refresh.
|
|
212
|
+
*/
|
|
213
|
+
cancelTokenRefresh() {
|
|
214
|
+
this.refreshTimeout && (clearTimeout(this.refreshTimeout), this.refreshTimeout = null);
|
|
215
|
+
}
|
|
189
216
|
}
|
|
190
217
|
export {
|
|
191
|
-
|
|
218
|
+
p as AuthManager
|
|
192
219
|
};
|