thirdweb 5.78.0 → 5.79.0-nightly-f91f6310e9396918d0ffc5217eeb4a44cef0b8c8-20241215000412
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/exports/react.js +8 -1
- package/dist/cjs/exports/react.js.map +1 -1
- package/dist/cjs/exports/wallets/in-app.js.map +1 -1
- package/dist/cjs/exports/wallets/in-app.native.js.map +1 -1
- package/dist/cjs/exports/wallets.js.map +1 -1
- package/dist/cjs/exports/wallets.native.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-published.js +22 -16
- package/dist/cjs/extensions/prebuilts/deploy-published.js.map +1 -1
- package/dist/cjs/react/web/ui/MediaRenderer/useResolvedMediaType.js +1 -1
- package/dist/cjs/react/web/ui/MediaRenderer/useResolvedMediaType.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Chain/icon.js +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Chain/icon.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Chain/name.js +15 -11
- package/dist/cjs/react/web/ui/prebuilt/Chain/name.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Chain/provider.js +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Chain/provider.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Wallet/icon.js +79 -0
- package/dist/cjs/react/web/ui/prebuilt/Wallet/icon.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Wallet/name.js +105 -0
- package/dist/cjs/react/web/ui/prebuilt/Wallet/name.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Wallet/provider.js +47 -0
- package/dist/cjs/react/web/ui/prebuilt/Wallet/provider.js.map +1 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/exports/react.js +4 -0
- package/dist/esm/exports/react.js.map +1 -1
- package/dist/esm/exports/wallets/in-app.js.map +1 -1
- package/dist/esm/exports/wallets/in-app.native.js.map +1 -1
- package/dist/esm/exports/wallets.js.map +1 -1
- package/dist/esm/exports/wallets.native.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-published.js +22 -16
- package/dist/esm/extensions/prebuilts/deploy-published.js.map +1 -1
- package/dist/esm/react/web/ui/MediaRenderer/useResolvedMediaType.js +1 -1
- package/dist/esm/react/web/ui/MediaRenderer/useResolvedMediaType.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Chain/icon.js +1 -1
- package/dist/esm/react/web/ui/prebuilt/Chain/icon.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Chain/name.js +14 -11
- package/dist/esm/react/web/ui/prebuilt/Chain/name.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Chain/provider.js +1 -0
- package/dist/esm/react/web/ui/prebuilt/Chain/provider.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Wallet/icon.js +75 -0
- package/dist/esm/react/web/ui/prebuilt/Wallet/icon.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Wallet/name.js +100 -0
- package/dist/esm/react/web/ui/prebuilt/Wallet/name.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Wallet/provider.js +42 -0
- package/dist/esm/react/web/ui/prebuilt/Wallet/provider.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/exports/react.d.ts +3 -0
- package/dist/types/exports/react.d.ts.map +1 -1
- package/dist/types/exports/wallets/in-app.d.ts +2 -1
- package/dist/types/exports/wallets/in-app.d.ts.map +1 -1
- package/dist/types/exports/wallets/in-app.native.d.ts +2 -1
- package/dist/types/exports/wallets/in-app.native.d.ts.map +1 -1
- package/dist/types/exports/wallets.d.ts +2 -1
- package/dist/types/exports/wallets.d.ts.map +1 -1
- package/dist/types/exports/wallets.native.d.ts +2 -1
- package/dist/types/exports/wallets.native.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-published.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Chain/name.d.ts +10 -1
- package/dist/types/react/web/ui/prebuilt/Chain/name.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Chain/provider.d.ts +1 -0
- package/dist/types/react/web/ui/prebuilt/Chain/provider.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Wallet/icon.d.ts +81 -0
- package/dist/types/react/web/ui/prebuilt/Wallet/icon.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Wallet/name.d.ts +111 -0
- package/dist/types/react/web/ui/prebuilt/Wallet/name.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Wallet/provider.d.ts +41 -0
- package/dist/types/react/web/ui/prebuilt/Wallet/provider.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/wallet/types.d.ts +3 -3
- package/dist/types/wallets/in-app/core/wallet/types.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/exports/react.ts +14 -0
- package/src/exports/wallets/in-app.native.ts +6 -0
- package/src/exports/wallets/in-app.ts +6 -0
- package/src/exports/wallets.native.ts +6 -0
- package/src/exports/wallets.ts +6 -0
- package/src/extensions/prebuilts/deploy-published.ts +27 -20
- package/src/react/core/hooks/wallets/useAddConnectedWallet.test.tsx +52 -0
- package/src/react/core/hooks/wallets/useConnect.test.tsx +105 -0
- package/src/react/core/hooks/wallets/useSetActiveWallet.test.tsx +53 -0
- package/src/react/web/ui/MediaRenderer/useResolvedMediaType.ts +1 -1
- package/src/react/web/ui/prebuilt/Chain/icon.tsx +1 -1
- package/src/react/web/ui/prebuilt/Chain/name.test.tsx +19 -1
- package/src/react/web/ui/prebuilt/Chain/name.tsx +19 -13
- package/src/react/web/ui/prebuilt/Chain/provider.tsx +1 -0
- package/src/react/web/ui/prebuilt/Wallet/icon.test.tsx +30 -0
- package/src/react/web/ui/prebuilt/Wallet/icon.tsx +120 -0
- package/src/react/web/ui/prebuilt/Wallet/name.test.tsx +55 -0
- package/src/react/web/ui/prebuilt/Wallet/name.tsx +164 -0
- package/src/react/web/ui/prebuilt/Wallet/provider.test.tsx +61 -0
- package/src/react/web/ui/prebuilt/Wallet/provider.tsx +65 -0
- package/src/version.ts +1 -1
- package/src/wallets/in-app/core/wallet/types.ts +7 -8
- package/src/wallets/manager/connection-manager.test.ts +133 -133
@@ -199,157 +199,157 @@ describe.runIf(process.env.TW_SECRET_KEY)("Connection Manager", () => {
|
|
199
199
|
const definedChain = manager.activeWalletChainStore.getValue();
|
200
200
|
expect(definedChain).toEqual(newChain);
|
201
201
|
});
|
202
|
-
});
|
203
|
-
|
204
|
-
describe("handleSmartWalletConnection", () => {
|
205
|
-
let client: ThirdwebClient;
|
206
|
-
let eoaWallet: Wallet;
|
207
|
-
let smartWalletOptions: SmartWalletOptions;
|
208
202
|
|
209
|
-
|
210
|
-
client
|
211
|
-
eoaWallet
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
client,
|
230
|
-
smartWalletOptions,
|
231
|
-
onWalletDisconnect,
|
232
|
-
);
|
233
|
-
|
234
|
-
expect(smartWallet.getAccount()).toBeTruthy();
|
235
|
-
|
236
|
-
expect(eoaWallet.subscribe).toHaveBeenCalledWith(
|
237
|
-
"disconnect",
|
238
|
-
expect.any(Function),
|
239
|
-
);
|
240
|
-
});
|
241
|
-
|
242
|
-
it("should call onWalletDisconnect when EOA wallet disconnects", async () => {
|
243
|
-
const onWalletDisconnect = vi.fn();
|
244
|
-
const smartWallet = await handleSmartWalletConnection(
|
245
|
-
eoaWallet,
|
246
|
-
client,
|
247
|
-
smartWalletOptions,
|
248
|
-
onWalletDisconnect,
|
249
|
-
);
|
203
|
+
describe("handleSmartWalletConnection", () => {
|
204
|
+
let client: ThirdwebClient;
|
205
|
+
let eoaWallet: Wallet;
|
206
|
+
let smartWalletOptions: SmartWalletOptions;
|
207
|
+
|
208
|
+
beforeEach(() => {
|
209
|
+
client = TEST_CLIENT;
|
210
|
+
eoaWallet = {
|
211
|
+
id: "eoa-wallet-id",
|
212
|
+
getAccount: vi.fn().mockReturnValue(TEST_ACCOUNT_A),
|
213
|
+
subscribe: vi.fn().mockReturnValue(vi.fn()),
|
214
|
+
disconnect: vi.fn(),
|
215
|
+
switchChain: vi.fn(),
|
216
|
+
getChain: vi.fn().mockReturnValue(sepolia),
|
217
|
+
getConfig: vi.fn(),
|
218
|
+
} as unknown as Wallet;
|
219
|
+
smartWalletOptions = {
|
220
|
+
chain: sepolia,
|
221
|
+
} as SmartWalletOptions;
|
222
|
+
});
|
250
223
|
|
251
|
-
|
252
|
-
|
253
|
-
|
224
|
+
it("should connect a smart wallet and subscribe to disconnect event", async () => {
|
225
|
+
const onWalletDisconnect = vi.fn();
|
226
|
+
const smartWallet = await handleSmartWalletConnection(
|
227
|
+
eoaWallet,
|
228
|
+
client,
|
229
|
+
smartWalletOptions,
|
230
|
+
onWalletDisconnect,
|
231
|
+
);
|
254
232
|
|
255
|
-
|
256
|
-
});
|
233
|
+
expect(smartWallet.getAccount()).toBeTruthy();
|
257
234
|
|
258
|
-
|
259
|
-
|
235
|
+
expect(eoaWallet.subscribe).toHaveBeenCalledWith(
|
236
|
+
"disconnect",
|
237
|
+
expect.any(Function),
|
238
|
+
);
|
239
|
+
});
|
260
240
|
|
261
|
-
|
262
|
-
|
241
|
+
it("should call onWalletDisconnect when EOA wallet disconnects", async () => {
|
242
|
+
const onWalletDisconnect = vi.fn();
|
243
|
+
const smartWallet = await handleSmartWalletConnection(
|
263
244
|
eoaWallet,
|
264
245
|
client,
|
265
246
|
smartWalletOptions,
|
266
|
-
|
267
|
-
)
|
268
|
-
).rejects.toThrow("Cannot set a wallet without an account as active");
|
269
|
-
});
|
270
|
-
});
|
247
|
+
onWalletDisconnect,
|
248
|
+
);
|
271
249
|
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
let wallet: Wallet;
|
250
|
+
// biome-ignore lint/suspicious/noExplicitAny: Mocked function
|
251
|
+
const disconnectCallback = (eoaWallet.subscribe as any).mock.calls[0][1];
|
252
|
+
disconnectCallback();
|
276
253
|
|
277
|
-
|
278
|
-
|
279
|
-
getItem: vi.fn(),
|
280
|
-
setItem: vi.fn(),
|
281
|
-
removeItem: vi.fn(),
|
282
|
-
};
|
283
|
-
client = TEST_CLIENT;
|
284
|
-
wallet = {
|
285
|
-
id: "wallet-id",
|
286
|
-
getAccount: vi.fn().mockReturnValue(null), // Simulate wallet without an account
|
287
|
-
subscribe: vi.fn(),
|
288
|
-
disconnect: vi.fn(),
|
289
|
-
switchChain: vi.fn(),
|
290
|
-
getChain: vi.fn().mockReturnValue(sepolia),
|
291
|
-
getConfig: vi.fn(),
|
292
|
-
} as unknown as Wallet;
|
293
|
-
});
|
294
|
-
|
295
|
-
it("should throw an error if trying to set a wallet without an account as active", async () => {
|
296
|
-
const manager = createConnectionManager(storage);
|
254
|
+
expect(onWalletDisconnect).toHaveBeenCalledWith(smartWallet);
|
255
|
+
});
|
297
256
|
|
298
|
-
|
299
|
-
|
300
|
-
|
257
|
+
it("should throw an error if EOA wallet has no account", async () => {
|
258
|
+
eoaWallet.getAccount = vi.fn().mockReturnValue(null);
|
259
|
+
|
260
|
+
await expect(
|
261
|
+
handleSmartWalletConnection(
|
262
|
+
eoaWallet,
|
263
|
+
client,
|
264
|
+
smartWalletOptions,
|
265
|
+
vi.fn(),
|
266
|
+
),
|
267
|
+
).rejects.toThrow("Cannot set a wallet without an account as active");
|
268
|
+
});
|
301
269
|
});
|
302
270
|
|
303
|
-
|
304
|
-
|
271
|
+
describe("Connection Manager Error Handling", () => {
|
272
|
+
let storage: AsyncStorage;
|
273
|
+
let client: ThirdwebClient;
|
274
|
+
let wallet: Wallet;
|
275
|
+
|
276
|
+
beforeEach(() => {
|
277
|
+
storage = {
|
278
|
+
getItem: vi.fn(),
|
279
|
+
setItem: vi.fn(),
|
280
|
+
removeItem: vi.fn(),
|
281
|
+
};
|
282
|
+
client = TEST_CLIENT;
|
283
|
+
wallet = {
|
284
|
+
id: "wallet-id",
|
285
|
+
getAccount: vi.fn().mockReturnValue(null), // Simulate wallet without an account
|
286
|
+
subscribe: vi.fn(),
|
287
|
+
disconnect: vi.fn(),
|
288
|
+
switchChain: vi.fn(),
|
289
|
+
getChain: vi.fn().mockReturnValue(sepolia),
|
290
|
+
getConfig: vi.fn(),
|
291
|
+
} as unknown as Wallet;
|
292
|
+
});
|
305
293
|
|
306
|
-
|
307
|
-
|
308
|
-
);
|
309
|
-
});
|
310
|
-
});
|
294
|
+
it("should throw an error if trying to set a wallet without an account as active", async () => {
|
295
|
+
const manager = createConnectionManager(storage);
|
311
296
|
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
let account: Account;
|
297
|
+
await expect(manager.setActiveWallet(wallet)).rejects.toThrow(
|
298
|
+
"Cannot set a wallet without an account as active",
|
299
|
+
);
|
300
|
+
});
|
317
301
|
|
318
|
-
|
319
|
-
|
320
|
-
getItem: vi.fn(),
|
321
|
-
setItem: vi.fn(),
|
322
|
-
removeItem: vi.fn(),
|
323
|
-
};
|
324
|
-
client = TEST_CLIENT;
|
325
|
-
account = TEST_ACCOUNT_A;
|
326
|
-
wallet = {
|
327
|
-
id: "wallet-id",
|
328
|
-
getAccount: vi.fn().mockReturnValue(account),
|
329
|
-
subscribe: vi.fn().mockReturnValue(vi.fn()),
|
330
|
-
disconnect: vi.fn(),
|
331
|
-
switchChain: vi.fn(),
|
332
|
-
getChain: vi.fn().mockReturnValue(sepolia),
|
333
|
-
getConfig: vi.fn(),
|
334
|
-
} as unknown as Wallet;
|
335
|
-
});
|
302
|
+
it("should throw an error if handleConnection is called with a wallet without an account", async () => {
|
303
|
+
const manager = createConnectionManager(storage);
|
336
304
|
|
337
|
-
|
338
|
-
|
305
|
+
await expect(
|
306
|
+
manager.handleConnection(wallet, { client }),
|
307
|
+
).rejects.toThrow("Cannot set a wallet without an account as active");
|
308
|
+
});
|
309
|
+
});
|
339
310
|
|
340
|
-
|
311
|
+
describe("Connection Manager Event Subscriptions", () => {
|
312
|
+
let storage: AsyncStorage;
|
313
|
+
let client: ThirdwebClient;
|
314
|
+
let wallet: Wallet;
|
315
|
+
let account: Account;
|
316
|
+
|
317
|
+
beforeEach(() => {
|
318
|
+
storage = {
|
319
|
+
getItem: vi.fn(),
|
320
|
+
setItem: vi.fn(),
|
321
|
+
removeItem: vi.fn(),
|
322
|
+
};
|
323
|
+
client = TEST_CLIENT;
|
324
|
+
account = TEST_ACCOUNT_A;
|
325
|
+
wallet = {
|
326
|
+
id: "wallet-id",
|
327
|
+
getAccount: vi.fn().mockReturnValue(account),
|
328
|
+
subscribe: vi.fn().mockReturnValue(vi.fn()),
|
329
|
+
disconnect: vi.fn(),
|
330
|
+
switchChain: vi.fn(),
|
331
|
+
getChain: vi.fn().mockReturnValue(sepolia),
|
332
|
+
getConfig: vi.fn(),
|
333
|
+
} as unknown as Wallet;
|
334
|
+
});
|
341
335
|
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
336
|
+
it("should subscribe to accountChanged, chainChanged, and disconnect events", async () => {
|
337
|
+
const manager = createConnectionManager(storage);
|
338
|
+
|
339
|
+
await manager.handleConnection(wallet, { client });
|
340
|
+
|
341
|
+
expect(wallet.subscribe).toHaveBeenCalledWith(
|
342
|
+
"accountChanged",
|
343
|
+
expect.any(Function),
|
344
|
+
);
|
345
|
+
expect(wallet.subscribe).toHaveBeenCalledWith(
|
346
|
+
"chainChanged",
|
347
|
+
expect.any(Function),
|
348
|
+
);
|
349
|
+
expect(wallet.subscribe).toHaveBeenCalledWith(
|
350
|
+
"disconnect",
|
351
|
+
expect.any(Function),
|
352
|
+
);
|
353
|
+
});
|
354
354
|
});
|
355
355
|
});
|