thirdweb 5.82.1-nightly-5e2eec3b178bcad0988ba7086e31514a3fb7b5d5-20250108000440 → 5.83.0
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/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/authentication/backend.js +31 -0
- package/dist/cjs/wallets/in-app/core/authentication/backend.js.map +1 -0
- package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js +5 -1
- package/dist/cjs/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
- package/dist/cjs/wallets/in-app/native/auth/index.js +11 -0
- package/dist/cjs/wallets/in-app/native/auth/index.js.map +1 -1
- package/dist/cjs/wallets/in-app/native/native-connector.js +13 -0
- package/dist/cjs/wallets/in-app/native/native-connector.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/in-app.js +14 -0
- package/dist/cjs/wallets/in-app/web/in-app.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/lib/auth/index.js +11 -0
- package/dist/cjs/wallets/in-app/web/lib/auth/index.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/lib/web-connector.js +9 -0
- package/dist/cjs/wallets/in-app/web/lib/web-connector.js.map +1 -1
- package/dist/cjs/wallets/types.js +1 -0
- package/dist/cjs/wallets/types.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/in-app/core/authentication/backend.js +28 -0
- package/dist/esm/wallets/in-app/core/authentication/backend.js.map +1 -0
- package/dist/esm/wallets/in-app/core/wallet/in-app-core.js +5 -1
- package/dist/esm/wallets/in-app/core/wallet/in-app-core.js.map +1 -1
- package/dist/esm/wallets/in-app/native/auth/index.js +11 -0
- package/dist/esm/wallets/in-app/native/auth/index.js.map +1 -1
- package/dist/esm/wallets/in-app/native/native-connector.js +13 -0
- package/dist/esm/wallets/in-app/native/native-connector.js.map +1 -1
- package/dist/esm/wallets/in-app/web/in-app.js +14 -0
- package/dist/esm/wallets/in-app/web/in-app.js.map +1 -1
- package/dist/esm/wallets/in-app/web/lib/auth/index.js +11 -0
- package/dist/esm/wallets/in-app/web/lib/auth/index.js.map +1 -1
- package/dist/esm/wallets/in-app/web/lib/web-connector.js +9 -0
- package/dist/esm/wallets/in-app/web/lib/web-connector.js.map +1 -1
- package/dist/esm/wallets/types.js +1 -0
- package/dist/esm/wallets/types.js.map +1 -1
- package/dist/types/react/core/utils/storage.d.ts +1 -1
- package/dist/types/react/core/utils/storage.d.ts.map +1 -1
- package/dist/types/react/web/utils/storage.d.ts +1 -1
- package/dist/types/react/web/utils/storage.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/authentication/backend.d.ts +13 -0
- package/dist/types/wallets/in-app/core/authentication/backend.d.ts.map +1 -0
- package/dist/types/wallets/in-app/core/authentication/types.d.ts +4 -2
- package/dist/types/wallets/in-app/core/authentication/types.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/wallet/in-app-core.d.ts.map +1 -1
- package/dist/types/wallets/in-app/native/auth/index.d.ts +11 -0
- package/dist/types/wallets/in-app/native/auth/index.d.ts.map +1 -1
- package/dist/types/wallets/in-app/native/native-connector.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/in-app.d.ts +14 -0
- package/dist/types/wallets/in-app/web/in-app.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/lib/auth/index.d.ts +11 -0
- package/dist/types/wallets/in-app/web/lib/auth/index.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/lib/web-connector.d.ts.map +1 -1
- package/dist/types/wallets/types.d.ts +1 -1
- package/dist/types/wallets/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/version.ts +1 -1
- package/src/wallets/in-app/core/authentication/backend.test.ts +69 -0
- package/src/wallets/in-app/core/authentication/backend.ts +36 -0
- package/src/wallets/in-app/core/authentication/types.ts +5 -1
- package/src/wallets/in-app/core/wallet/in-app-core.ts +5 -1
- package/src/wallets/in-app/native/auth/index.ts +11 -0
- package/src/wallets/in-app/native/native-connector.ts +13 -0
- package/src/wallets/in-app/web/in-app.ts +14 -0
- package/src/wallets/in-app/web/lib/auth/index.ts +11 -0
- package/src/wallets/in-app/web/lib/web-connector.test.ts +163 -0
- package/src/wallets/in-app/web/lib/web-connector.ts +9 -0
- package/src/wallets/types.ts +1 -0
@@ -0,0 +1,163 @@
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
2
|
+
import { TEST_CLIENT } from "~test/test-clients.js";
|
3
|
+
import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
|
4
|
+
import { createWalletAdapter } from "../../../../adapters/wallet-adapter.js";
|
5
|
+
import { ethereum } from "../../../../chains/chain-definitions/ethereum.js";
|
6
|
+
import { backendAuthenticate } from "../../core/authentication/backend.js";
|
7
|
+
import { guestAuthenticate } from "../../core/authentication/guest.js";
|
8
|
+
import { siweAuthenticate } from "../../core/authentication/siwe.js";
|
9
|
+
import { loginWithOauth } from "./auth/oauth.js";
|
10
|
+
import { verifyOtp } from "./auth/otp.js";
|
11
|
+
import { InAppWebConnector } from "./web-connector.js";
|
12
|
+
|
13
|
+
vi.mock("./auth/oauth");
|
14
|
+
vi.mock("./auth/iframe-auth.ts", () => {
|
15
|
+
const Auth = vi.fn();
|
16
|
+
Auth.prototype.loginWithAuthToken = vi.fn(() => {
|
17
|
+
return Promise.resolve({
|
18
|
+
user: {
|
19
|
+
authDetails: {
|
20
|
+
recoveryShareManagement: "ENCLAVE",
|
21
|
+
userWalletId: "123",
|
22
|
+
},
|
23
|
+
status: "Logged In, Wallet Initialized",
|
24
|
+
walletAddress: "0x123",
|
25
|
+
},
|
26
|
+
});
|
27
|
+
});
|
28
|
+
return { Auth };
|
29
|
+
});
|
30
|
+
vi.mock("../../core/authentication/siwe");
|
31
|
+
vi.mock("../../core/authentication/guest");
|
32
|
+
vi.mock("../../core/authentication/backend");
|
33
|
+
vi.mock("./auth/otp");
|
34
|
+
vi.mock("../../core/authentication/authEndpoint");
|
35
|
+
vi.mock("../../core/authentication/jwt");
|
36
|
+
vi.mock("../../web/utils/iFrameCommunication/InAppWalletIframeCommunicator");
|
37
|
+
|
38
|
+
describe("InAppWebConnector.connect", () => {
|
39
|
+
const mockAuthToken = {
|
40
|
+
storedToken: {
|
41
|
+
authDetails: {
|
42
|
+
userWalletId: "123",
|
43
|
+
recoveryShareManagement: "ENCLAVE" as const,
|
44
|
+
},
|
45
|
+
authProvider: "EmailOtp" as const,
|
46
|
+
cookieString: "mock-cookie",
|
47
|
+
developerClientId: TEST_CLIENT.clientId,
|
48
|
+
isNewUser: false,
|
49
|
+
jwtToken: "mock-jwt-token",
|
50
|
+
shouldStoreCookieString: true,
|
51
|
+
},
|
52
|
+
};
|
53
|
+
|
54
|
+
const connector = new InAppWebConnector({
|
55
|
+
client: TEST_CLIENT,
|
56
|
+
});
|
57
|
+
const mockWallet = createWalletAdapter({
|
58
|
+
adaptedAccount: TEST_ACCOUNT_A,
|
59
|
+
client: TEST_CLIENT,
|
60
|
+
chain: ethereum,
|
61
|
+
onDisconnect: () => {},
|
62
|
+
switchChain: () => {},
|
63
|
+
});
|
64
|
+
const mockAccount = mockWallet.getAccount();
|
65
|
+
if (!mockAccount) {
|
66
|
+
throw new Error("mockAccount is undefined");
|
67
|
+
}
|
68
|
+
|
69
|
+
it("should handle email authentication", async () => {
|
70
|
+
vi.mocked(verifyOtp).mockResolvedValueOnce(mockAuthToken);
|
71
|
+
|
72
|
+
const result = await connector.connect({
|
73
|
+
strategy: "email",
|
74
|
+
email: "test@example.com",
|
75
|
+
verificationCode: "123456",
|
76
|
+
});
|
77
|
+
|
78
|
+
expect(verifyOtp).toHaveBeenCalledWith({
|
79
|
+
strategy: "email",
|
80
|
+
email: "test@example.com",
|
81
|
+
verificationCode: "123456",
|
82
|
+
client: TEST_CLIENT,
|
83
|
+
ecosystem: undefined,
|
84
|
+
});
|
85
|
+
|
86
|
+
expect(result).toBeDefined();
|
87
|
+
});
|
88
|
+
|
89
|
+
it("should handle wallet authentication", async () => {
|
90
|
+
vi.mocked(siweAuthenticate).mockResolvedValueOnce(mockAuthToken);
|
91
|
+
|
92
|
+
const mockWallet = createWalletAdapter({
|
93
|
+
adaptedAccount: TEST_ACCOUNT_A,
|
94
|
+
client: TEST_CLIENT,
|
95
|
+
chain: ethereum,
|
96
|
+
onDisconnect: () => {},
|
97
|
+
switchChain: () => {},
|
98
|
+
});
|
99
|
+
|
100
|
+
await connector.connect({
|
101
|
+
strategy: "wallet",
|
102
|
+
chain: ethereum,
|
103
|
+
wallet: mockWallet,
|
104
|
+
});
|
105
|
+
|
106
|
+
expect(siweAuthenticate).toHaveBeenCalledWith({
|
107
|
+
wallet: mockWallet,
|
108
|
+
chain: ethereum,
|
109
|
+
client: TEST_CLIENT,
|
110
|
+
ecosystem: undefined,
|
111
|
+
});
|
112
|
+
});
|
113
|
+
|
114
|
+
it("should handle guest authentication", async () => {
|
115
|
+
vi.mocked(guestAuthenticate).mockResolvedValueOnce(mockAuthToken);
|
116
|
+
|
117
|
+
await connector.connect({
|
118
|
+
strategy: "guest",
|
119
|
+
});
|
120
|
+
|
121
|
+
expect(guestAuthenticate).toHaveBeenCalled();
|
122
|
+
});
|
123
|
+
|
124
|
+
it("should handle backend authentication", async () => {
|
125
|
+
vi.mocked(backendAuthenticate).mockResolvedValueOnce(mockAuthToken);
|
126
|
+
|
127
|
+
await connector.connect({
|
128
|
+
strategy: "backend",
|
129
|
+
walletSecret: "secret123",
|
130
|
+
});
|
131
|
+
|
132
|
+
expect(backendAuthenticate).toHaveBeenCalledWith({
|
133
|
+
walletSecret: "secret123",
|
134
|
+
client: TEST_CLIENT,
|
135
|
+
ecosystem: undefined,
|
136
|
+
});
|
137
|
+
});
|
138
|
+
|
139
|
+
it("should handle oauth authentication", async () => {
|
140
|
+
vi.mocked(loginWithOauth).mockResolvedValueOnce(mockAuthToken);
|
141
|
+
|
142
|
+
await connector.connect({
|
143
|
+
strategy: "google",
|
144
|
+
});
|
145
|
+
|
146
|
+
expect(loginWithOauth).toHaveBeenCalledWith({
|
147
|
+
authOption: "google",
|
148
|
+
client: TEST_CLIENT,
|
149
|
+
ecosystem: undefined,
|
150
|
+
closeOpenedWindow: undefined,
|
151
|
+
openedWindow: undefined,
|
152
|
+
});
|
153
|
+
});
|
154
|
+
|
155
|
+
it("should throw error for invalid strategy", async () => {
|
156
|
+
await expect(
|
157
|
+
connector.connect({
|
158
|
+
// @ts-expect-error invalid strategy
|
159
|
+
strategy: "invalid",
|
160
|
+
}),
|
161
|
+
).rejects.toThrow("Invalid param: invalid");
|
162
|
+
});
|
163
|
+
});
|
@@ -5,6 +5,7 @@ import type { SocialAuthOption } from "../../../../wallets/types.js";
|
|
5
5
|
import type { Account } from "../../../interfaces/wallet.js";
|
6
6
|
import { getUserStatus } from "../../core/actions/get-enclave-user-status.js";
|
7
7
|
import { authEndpoint } from "../../core/authentication/authEndpoint.js";
|
8
|
+
import { backendAuthenticate } from "../../core/authentication/backend.js";
|
8
9
|
import { ClientScopedStorage } from "../../core/authentication/client-scoped-storage.js";
|
9
10
|
import { guestAuthenticate } from "../../core/authentication/guest.js";
|
10
11
|
import { customJwt } from "../../core/authentication/jwt.js";
|
@@ -351,6 +352,13 @@ export class InAppWebConnector implements InAppConnector {
|
|
351
352
|
storage: webLocalStorage,
|
352
353
|
});
|
353
354
|
}
|
355
|
+
case "backend": {
|
356
|
+
return backendAuthenticate({
|
357
|
+
client: this.client,
|
358
|
+
walletSecret: args.walletSecret,
|
359
|
+
ecosystem: this.ecosystem,
|
360
|
+
});
|
361
|
+
}
|
354
362
|
case "wallet": {
|
355
363
|
return siweAuthenticate({
|
356
364
|
ecosystem: this.ecosystem,
|
@@ -387,6 +395,7 @@ export class InAppWebConnector implements InAppConnector {
|
|
387
395
|
const authToken = await this.passkeyAuth(args);
|
388
396
|
return this.loginWithAuthToken(authToken);
|
389
397
|
}
|
398
|
+
case "backend":
|
390
399
|
case "phone":
|
391
400
|
case "email":
|
392
401
|
case "wallet":
|