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.
Files changed (97) hide show
  1. package/dist/cjs/exports/react.js +8 -1
  2. package/dist/cjs/exports/react.js.map +1 -1
  3. package/dist/cjs/exports/wallets/in-app.js.map +1 -1
  4. package/dist/cjs/exports/wallets/in-app.native.js.map +1 -1
  5. package/dist/cjs/exports/wallets.js.map +1 -1
  6. package/dist/cjs/exports/wallets.native.js.map +1 -1
  7. package/dist/cjs/extensions/prebuilts/deploy-published.js +22 -16
  8. package/dist/cjs/extensions/prebuilts/deploy-published.js.map +1 -1
  9. package/dist/cjs/react/web/ui/MediaRenderer/useResolvedMediaType.js +1 -1
  10. package/dist/cjs/react/web/ui/MediaRenderer/useResolvedMediaType.js.map +1 -1
  11. package/dist/cjs/react/web/ui/prebuilt/Chain/icon.js +1 -1
  12. package/dist/cjs/react/web/ui/prebuilt/Chain/icon.js.map +1 -1
  13. package/dist/cjs/react/web/ui/prebuilt/Chain/name.js +15 -11
  14. package/dist/cjs/react/web/ui/prebuilt/Chain/name.js.map +1 -1
  15. package/dist/cjs/react/web/ui/prebuilt/Chain/provider.js +1 -0
  16. package/dist/cjs/react/web/ui/prebuilt/Chain/provider.js.map +1 -1
  17. package/dist/cjs/react/web/ui/prebuilt/Wallet/icon.js +79 -0
  18. package/dist/cjs/react/web/ui/prebuilt/Wallet/icon.js.map +1 -0
  19. package/dist/cjs/react/web/ui/prebuilt/Wallet/name.js +105 -0
  20. package/dist/cjs/react/web/ui/prebuilt/Wallet/name.js.map +1 -0
  21. package/dist/cjs/react/web/ui/prebuilt/Wallet/provider.js +47 -0
  22. package/dist/cjs/react/web/ui/prebuilt/Wallet/provider.js.map +1 -0
  23. package/dist/cjs/version.js +1 -1
  24. package/dist/cjs/version.js.map +1 -1
  25. package/dist/esm/exports/react.js +4 -0
  26. package/dist/esm/exports/react.js.map +1 -1
  27. package/dist/esm/exports/wallets/in-app.js.map +1 -1
  28. package/dist/esm/exports/wallets/in-app.native.js.map +1 -1
  29. package/dist/esm/exports/wallets.js.map +1 -1
  30. package/dist/esm/exports/wallets.native.js.map +1 -1
  31. package/dist/esm/extensions/prebuilts/deploy-published.js +22 -16
  32. package/dist/esm/extensions/prebuilts/deploy-published.js.map +1 -1
  33. package/dist/esm/react/web/ui/MediaRenderer/useResolvedMediaType.js +1 -1
  34. package/dist/esm/react/web/ui/MediaRenderer/useResolvedMediaType.js.map +1 -1
  35. package/dist/esm/react/web/ui/prebuilt/Chain/icon.js +1 -1
  36. package/dist/esm/react/web/ui/prebuilt/Chain/icon.js.map +1 -1
  37. package/dist/esm/react/web/ui/prebuilt/Chain/name.js +14 -11
  38. package/dist/esm/react/web/ui/prebuilt/Chain/name.js.map +1 -1
  39. package/dist/esm/react/web/ui/prebuilt/Chain/provider.js +1 -0
  40. package/dist/esm/react/web/ui/prebuilt/Chain/provider.js.map +1 -1
  41. package/dist/esm/react/web/ui/prebuilt/Wallet/icon.js +75 -0
  42. package/dist/esm/react/web/ui/prebuilt/Wallet/icon.js.map +1 -0
  43. package/dist/esm/react/web/ui/prebuilt/Wallet/name.js +100 -0
  44. package/dist/esm/react/web/ui/prebuilt/Wallet/name.js.map +1 -0
  45. package/dist/esm/react/web/ui/prebuilt/Wallet/provider.js +42 -0
  46. package/dist/esm/react/web/ui/prebuilt/Wallet/provider.js.map +1 -0
  47. package/dist/esm/version.js +1 -1
  48. package/dist/esm/version.js.map +1 -1
  49. package/dist/types/exports/react.d.ts +3 -0
  50. package/dist/types/exports/react.d.ts.map +1 -1
  51. package/dist/types/exports/wallets/in-app.d.ts +2 -1
  52. package/dist/types/exports/wallets/in-app.d.ts.map +1 -1
  53. package/dist/types/exports/wallets/in-app.native.d.ts +2 -1
  54. package/dist/types/exports/wallets/in-app.native.d.ts.map +1 -1
  55. package/dist/types/exports/wallets.d.ts +2 -1
  56. package/dist/types/exports/wallets.d.ts.map +1 -1
  57. package/dist/types/exports/wallets.native.d.ts +2 -1
  58. package/dist/types/exports/wallets.native.d.ts.map +1 -1
  59. package/dist/types/extensions/prebuilts/deploy-published.d.ts.map +1 -1
  60. package/dist/types/react/web/ui/prebuilt/Chain/name.d.ts +10 -1
  61. package/dist/types/react/web/ui/prebuilt/Chain/name.d.ts.map +1 -1
  62. package/dist/types/react/web/ui/prebuilt/Chain/provider.d.ts +1 -0
  63. package/dist/types/react/web/ui/prebuilt/Chain/provider.d.ts.map +1 -1
  64. package/dist/types/react/web/ui/prebuilt/Wallet/icon.d.ts +81 -0
  65. package/dist/types/react/web/ui/prebuilt/Wallet/icon.d.ts.map +1 -0
  66. package/dist/types/react/web/ui/prebuilt/Wallet/name.d.ts +111 -0
  67. package/dist/types/react/web/ui/prebuilt/Wallet/name.d.ts.map +1 -0
  68. package/dist/types/react/web/ui/prebuilt/Wallet/provider.d.ts +41 -0
  69. package/dist/types/react/web/ui/prebuilt/Wallet/provider.d.ts.map +1 -0
  70. package/dist/types/version.d.ts +1 -1
  71. package/dist/types/version.d.ts.map +1 -1
  72. package/dist/types/wallets/in-app/core/wallet/types.d.ts +3 -3
  73. package/dist/types/wallets/in-app/core/wallet/types.d.ts.map +1 -1
  74. package/package.json +3 -2
  75. package/src/exports/react.ts +14 -0
  76. package/src/exports/wallets/in-app.native.ts +6 -0
  77. package/src/exports/wallets/in-app.ts +6 -0
  78. package/src/exports/wallets.native.ts +6 -0
  79. package/src/exports/wallets.ts +6 -0
  80. package/src/extensions/prebuilts/deploy-published.ts +27 -20
  81. package/src/react/core/hooks/wallets/useAddConnectedWallet.test.tsx +52 -0
  82. package/src/react/core/hooks/wallets/useConnect.test.tsx +105 -0
  83. package/src/react/core/hooks/wallets/useSetActiveWallet.test.tsx +53 -0
  84. package/src/react/web/ui/MediaRenderer/useResolvedMediaType.ts +1 -1
  85. package/src/react/web/ui/prebuilt/Chain/icon.tsx +1 -1
  86. package/src/react/web/ui/prebuilt/Chain/name.test.tsx +19 -1
  87. package/src/react/web/ui/prebuilt/Chain/name.tsx +19 -13
  88. package/src/react/web/ui/prebuilt/Chain/provider.tsx +1 -0
  89. package/src/react/web/ui/prebuilt/Wallet/icon.test.tsx +30 -0
  90. package/src/react/web/ui/prebuilt/Wallet/icon.tsx +120 -0
  91. package/src/react/web/ui/prebuilt/Wallet/name.test.tsx +55 -0
  92. package/src/react/web/ui/prebuilt/Wallet/name.tsx +164 -0
  93. package/src/react/web/ui/prebuilt/Wallet/provider.test.tsx +61 -0
  94. package/src/react/web/ui/prebuilt/Wallet/provider.tsx +65 -0
  95. package/src/version.ts +1 -1
  96. package/src/wallets/in-app/core/wallet/types.ts +7 -8
  97. 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
- beforeEach(() => {
210
- client = TEST_CLIENT;
211
- eoaWallet = {
212
- id: "eoa-wallet-id",
213
- getAccount: vi.fn().mockReturnValue(TEST_ACCOUNT_A),
214
- subscribe: vi.fn().mockReturnValue(vi.fn()),
215
- disconnect: vi.fn(),
216
- switchChain: vi.fn(),
217
- getChain: vi.fn().mockReturnValue(sepolia),
218
- getConfig: vi.fn(),
219
- } as unknown as Wallet;
220
- smartWalletOptions = {
221
- chain: sepolia,
222
- } as SmartWalletOptions;
223
- });
224
-
225
- it("should connect a smart wallet and subscribe to disconnect event", async () => {
226
- const onWalletDisconnect = vi.fn();
227
- const smartWallet = await handleSmartWalletConnection(
228
- eoaWallet,
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
- // biome-ignore lint/suspicious/noExplicitAny: Mocked function
252
- const disconnectCallback = (eoaWallet.subscribe as any).mock.calls[0][1];
253
- disconnectCallback();
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
- expect(onWalletDisconnect).toHaveBeenCalledWith(smartWallet);
256
- });
233
+ expect(smartWallet.getAccount()).toBeTruthy();
257
234
 
258
- it("should throw an error if EOA wallet has no account", async () => {
259
- eoaWallet.getAccount = vi.fn().mockReturnValue(null);
235
+ expect(eoaWallet.subscribe).toHaveBeenCalledWith(
236
+ "disconnect",
237
+ expect.any(Function),
238
+ );
239
+ });
260
240
 
261
- await expect(
262
- handleSmartWalletConnection(
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
- vi.fn(),
267
- ),
268
- ).rejects.toThrow("Cannot set a wallet without an account as active");
269
- });
270
- });
247
+ onWalletDisconnect,
248
+ );
271
249
 
272
- describe("Connection Manager Error Handling", () => {
273
- let storage: AsyncStorage;
274
- let client: ThirdwebClient;
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
- beforeEach(() => {
278
- storage = {
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
- await expect(manager.setActiveWallet(wallet)).rejects.toThrow(
299
- "Cannot set a wallet without an account as active",
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
- it("should throw an error if handleConnection is called with a wallet without an account", async () => {
304
- const manager = createConnectionManager(storage);
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
- await expect(manager.handleConnection(wallet, { client })).rejects.toThrow(
307
- "Cannot set a wallet without an account as active",
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
- describe("Connection Manager Event Subscriptions", () => {
313
- let storage: AsyncStorage;
314
- let client: ThirdwebClient;
315
- let wallet: Wallet;
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
- beforeEach(() => {
319
- storage = {
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
- it("should subscribe to accountChanged, chainChanged, and disconnect events", async () => {
338
- const manager = createConnectionManager(storage);
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
- await manager.handleConnection(wallet, { client });
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
- expect(wallet.subscribe).toHaveBeenCalledWith(
343
- "accountChanged",
344
- expect.any(Function),
345
- );
346
- expect(wallet.subscribe).toHaveBeenCalledWith(
347
- "chainChanged",
348
- expect.any(Function),
349
- );
350
- expect(wallet.subscribe).toHaveBeenCalledWith(
351
- "disconnect",
352
- expect.any(Function),
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
  });