@web3auth/modal 6.1.8 → 7.0.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.
@@ -1,6 +1,6 @@
1
1
  import type { OPENLOGIN_NETWORK_TYPE } from "@toruslabs/openlogin-utils";
2
- import { CustomChainConfig, IAdapter, WALLET_ADAPTER_TYPE } from "@web3auth/base";
3
- import { IBaseProvider } from "@web3auth/base-provider";
2
+ import { CustomChainConfig, IAdapter, IBaseProvider, WALLET_ADAPTER_TYPE } from "@web3auth/base";
3
+ import { UIConfig } from "@web3auth/ui";
4
4
  export declare function getPrivateKeyProvider(chainConfig: CustomChainConfig): Promise<IBaseProvider<string>>;
5
5
  export declare const getDefaultAdapterModule: (params: {
6
6
  name: WALLET_ADAPTER_TYPE;
@@ -8,4 +8,5 @@ export declare const getDefaultAdapterModule: (params: {
8
8
  customChainConfig: Partial<CustomChainConfig> & Pick<CustomChainConfig, "chainNamespace">;
9
9
  sessionTime?: number;
10
10
  web3AuthNetwork?: OPENLOGIN_NETWORK_TYPE;
11
+ uiConfig?: Omit<UIConfig, "adapterListener">;
11
12
  }) => Promise<IAdapter<unknown>>;
@@ -1,4 +1,4 @@
1
- import type { BaseAdapterConfig, ChainNamespaceType, IWeb3Auth, LoginMethodConfig, SafeEventEmitterProvider, WALLET_ADAPTER_TYPE } from "@web3auth/base";
1
+ import type { BaseAdapterConfig, ChainNamespaceType, IProvider, IWeb3Auth, LoginMethodConfig, WALLET_ADAPTER_TYPE } from "@web3auth/base";
2
2
  export interface ModalConfig extends BaseAdapterConfig {
3
3
  loginMethods?: LoginMethodConfig;
4
4
  }
@@ -10,5 +10,5 @@ export interface IWeb3AuthModal extends IWeb3Auth {
10
10
  initModal(params?: {
11
11
  modalConfig?: Record<WALLET_ADAPTER_TYPE, ModalConfig>;
12
12
  }): Promise<void>;
13
- connect(): Promise<SafeEventEmitterProvider | null>;
13
+ connect(): Promise<IProvider | null>;
14
14
  }
@@ -1,4 +1,4 @@
1
- import { SafeEventEmitterProvider, WALLET_ADAPTER_TYPE } from "@web3auth/base";
1
+ import { IProvider, WALLET_ADAPTER_TYPE } from "@web3auth/base";
2
2
  import { Web3AuthNoModal, Web3AuthNoModalOptions } from "@web3auth/no-modal";
3
3
  import { LoginModal, UIConfig } from "@web3auth/ui";
4
4
  import { IWeb3AuthModal, ModalConfig } from "./interface";
@@ -25,7 +25,7 @@ export declare class Web3Auth extends Web3AuthNoModal implements IWeb3AuthModal
25
25
  initModal(params?: {
26
26
  modalConfig?: Record<WALLET_ADAPTER_TYPE, ModalConfig>;
27
27
  }): Promise<void>;
28
- connect(): Promise<SafeEventEmitterProvider | null>;
28
+ connect(): Promise<IProvider | null>;
29
29
  private initExternalWalletAdapters;
30
30
  private initializeInAppWallet;
31
31
  private subscribeToLoginModalEvents;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@web3auth/modal",
3
- "version": "6.1.8",
3
+ "version": "7.0.0",
4
4
  "homepage": "https://github.com/Web3Auth/Web3Auth#readme",
5
5
  "license": "ISC",
6
6
  "main": "dist/modal.cjs.js",
@@ -19,23 +19,23 @@
19
19
  "pre-commit": "lint-staged --cwd ."
20
20
  },
21
21
  "dependencies": {
22
- "@web3auth/base": "^6.1.7",
23
- "@web3auth/base-provider": "^6.1.7",
24
- "@web3auth/ethereum-provider": "^6.1.8",
25
- "@web3auth/metamask-adapter": "^6.1.7",
26
- "@web3auth/no-modal": "^6.1.7",
27
- "@web3auth/openlogin-adapter": "^6.1.7",
28
- "@web3auth/phantom-adapter": "^6.1.8",
29
- "@web3auth/solana-provider": "^6.1.8",
30
- "@web3auth/torus-evm-adapter": "^6.1.7",
31
- "@web3auth/torus-solana-adapter": "^6.1.8",
32
- "@web3auth/ui": "^6.1.8",
33
- "@web3auth/wallet-connect-v2-adapter": "^6.1.8"
22
+ "@web3auth/base": "^7.0.0",
23
+ "@web3auth/base-provider": "^7.0.0",
24
+ "@web3auth/ethereum-provider": "^7.0.0",
25
+ "@web3auth/metamask-adapter": "^7.0.0",
26
+ "@web3auth/no-modal": "^7.0.0",
27
+ "@web3auth/openlogin-adapter": "^7.0.0",
28
+ "@web3auth/phantom-adapter": "^7.0.0",
29
+ "@web3auth/solana-provider": "^7.0.0",
30
+ "@web3auth/torus-evm-adapter": "^7.0.0",
31
+ "@web3auth/torus-solana-adapter": "^7.0.0",
32
+ "@web3auth/ui": "^7.0.0",
33
+ "@web3auth/wallet-connect-v2-adapter": "^7.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@svgr/webpack": "^8.0.1",
36
+ "@svgr/webpack": "^8.1.0",
37
37
  "@toruslabs/isomorphic-style-loader": "^5.3.3",
38
- "@toruslabs/openlogin-utils": "^4.7.0",
38
+ "@toruslabs/openlogin-utils": "^5.0.2",
39
39
  "css-loader": "^6.8.1",
40
40
  "postcss-prefix-selector": "^1.16.0",
41
41
  "style-loader": "^3.3.3",
@@ -68,8 +68,8 @@
68
68
  "access": "public"
69
69
  },
70
70
  "engines": {
71
- "node": ">=16.18.1",
72
- "npm": ">=8.x"
71
+ "node": ">=18.x",
72
+ "npm": ">=9.x"
73
73
  },
74
- "gitHead": "68f852e07cc44d21e40076b42aae1f801b911771"
74
+ "gitHead": "b13ea4976979dcd6c63a1ecb3d96b5dc448fd535"
75
75
  }
package/src/default.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { OPENLOGIN_NETWORK_TYPE, OpenLoginOptions } from "@toruslabs/openlogin-utils";
2
- import { CHAIN_NAMESPACES, CustomChainConfig, getChainConfig, IAdapter, WALLET_ADAPTER_TYPE, WALLET_ADAPTERS } from "@web3auth/base";
3
- import { CommonPrivateKeyProvider, IBaseProvider } from "@web3auth/base-provider";
2
+ import { CHAIN_NAMESPACES, CustomChainConfig, getChainConfig, IAdapter, IBaseProvider, WALLET_ADAPTER_TYPE, WALLET_ADAPTERS } from "@web3auth/base";
3
+ import { CommonPrivateKeyProvider } from "@web3auth/base-provider";
4
+ import { UIConfig } from "@web3auth/ui";
4
5
 
5
6
  export async function getPrivateKeyProvider(chainConfig: CustomChainConfig): Promise<IBaseProvider<string>> {
6
7
  if (chainConfig.chainNamespace === CHAIN_NAMESPACES.SOLANA) {
@@ -24,8 +25,9 @@ export const getDefaultAdapterModule = async (params: {
24
25
  customChainConfig: Partial<CustomChainConfig> & Pick<CustomChainConfig, "chainNamespace">;
25
26
  sessionTime?: number;
26
27
  web3AuthNetwork?: OPENLOGIN_NETWORK_TYPE;
28
+ uiConfig?: Omit<UIConfig, "adapterListener">;
27
29
  }): Promise<IAdapter<unknown>> => {
28
- const { name, customChainConfig, clientId, sessionTime, web3AuthNetwork } = params;
30
+ const { name, customChainConfig, clientId, sessionTime, web3AuthNetwork, uiConfig } = params;
29
31
  if (!Object.values(CHAIN_NAMESPACES).includes(customChainConfig.chainNamespace))
30
32
  throw new Error(`Invalid chainNamespace: ${customChainConfig.chainNamespace}`);
31
33
  const finalChainConfig = {
@@ -73,7 +75,7 @@ export const getDefaultAdapterModule = async (params: {
73
75
  ...defaultOptions,
74
76
  clientId,
75
77
  chainConfig: { ...finalChainConfig },
76
- adapterSettings: { ...(defaultOptions.adapterSettings as OpenLoginOptions), clientId, network: web3AuthNetwork },
78
+ adapterSettings: { ...(defaultOptions.adapterSettings as OpenLoginOptions), clientId, network: web3AuthNetwork, whiteLabel: uiConfig },
77
79
  sessionTime,
78
80
  web3AuthNetwork,
79
81
  privateKeyProvider,
package/src/interface.ts CHANGED
@@ -1,11 +1,4 @@
1
- import type {
2
- BaseAdapterConfig,
3
- ChainNamespaceType,
4
- IWeb3Auth,
5
- LoginMethodConfig,
6
- SafeEventEmitterProvider,
7
- WALLET_ADAPTER_TYPE,
8
- } from "@web3auth/base";
1
+ import type { BaseAdapterConfig, ChainNamespaceType, IProvider, IWeb3Auth, LoginMethodConfig, WALLET_ADAPTER_TYPE } from "@web3auth/base";
9
2
  export interface ModalConfig extends BaseAdapterConfig {
10
3
  loginMethods?: LoginMethodConfig;
11
4
  }
@@ -17,5 +10,5 @@ export interface AdaptersModalConfig {
17
10
 
18
11
  export interface IWeb3AuthModal extends IWeb3Auth {
19
12
  initModal(params?: { modalConfig?: Record<WALLET_ADAPTER_TYPE, ModalConfig> }): Promise<void>;
20
- connect(): Promise<SafeEventEmitterProvider | null>;
13
+ connect(): Promise<IProvider | null>;
21
14
  }
@@ -6,16 +6,16 @@ import {
6
6
  CHAIN_NAMESPACES,
7
7
  CustomChainConfig,
8
8
  getChainConfig,
9
+ IProvider,
9
10
  log,
10
11
  LoginMethodConfig,
11
- SafeEventEmitterProvider,
12
12
  WALLET_ADAPTER_TYPE,
13
13
  WALLET_ADAPTERS,
14
14
  } from "@web3auth/base";
15
15
  import { CommonJRPCProvider } from "@web3auth/base-provider";
16
16
  import { Web3AuthNoModal, Web3AuthNoModalOptions } from "@web3auth/no-modal";
17
17
  import type { OpenloginAdapter } from "@web3auth/openlogin-adapter";
18
- import { getAdapterSocialLogins, LOGIN_MODAL_EVENTS, LoginModal, OPENLOGIN_PROVIDERS, UIConfig } from "@web3auth/ui";
18
+ import { getAdapterSocialLogins, getUserLanguage, LOGIN_MODAL_EVENTS, LoginModal, OPENLOGIN_PROVIDERS, UIConfig } from "@web3auth/ui";
19
19
 
20
20
  import {
21
21
  defaultEvmDappModalConfig,
@@ -26,7 +26,6 @@ import {
26
26
  } from "./config";
27
27
  import { getDefaultAdapterModule, getPrivateKeyProvider } from "./default";
28
28
  import { AdaptersModalConfig, IWeb3AuthModal, ModalConfig } from "./interface";
29
- import { getUserLanguage } from "./utils";
30
29
 
31
30
  export interface Web3AuthOptions extends Web3AuthNoModalOptions {
32
31
  /**
@@ -77,20 +76,12 @@ export class Web3Auth extends Web3AuthNoModal implements IWeb3AuthModal {
77
76
  throw new Error(`Invalid chainNamespace provided: ${providedChainConfig.chainNamespace}`);
78
77
  }
79
78
 
80
- // get userLanguage
81
- const defaultLanguage = getUserLanguage(this.options.uiConfig?.defaultLanguage);
79
+ if (!this.options.uiConfig.defaultLanguage) this.options.uiConfig.defaultLanguage = getUserLanguage(this.options.uiConfig.defaultLanguage);
80
+ if (!this.options.uiConfig.mode) this.options.uiConfig.mode = "auto";
82
81
 
83
82
  this.loginModal = new LoginModal({
84
- theme: this.options.uiConfig?.theme,
85
- appName: this.options.uiConfig?.appName || "blockchain",
86
- appLogo: this.options.uiConfig?.appLogo || "",
83
+ ...this.options.uiConfig,
87
84
  adapterListener: this,
88
- displayErrorsOnModal: this.options.uiConfig?.displayErrorsOnModal,
89
- defaultLanguage,
90
- modalZIndex: this.options.uiConfig?.modalZIndex || "99998",
91
- web3AuthNetwork: this.options.web3AuthNetwork,
92
- loginGridCol: this.options.uiConfig?.loginGridCol || 3,
93
- primaryButton: this.options.uiConfig?.primaryButton || "socialLogin",
94
85
  });
95
86
  this.subscribeToLoginModalEvents();
96
87
  }
@@ -132,6 +123,7 @@ export class Web3Auth extends Web3AuthNoModal implements IWeb3AuthModal {
132
123
  clientId: this.options.clientId,
133
124
  sessionTime: this.options.sessionTime,
134
125
  web3AuthNetwork: this.options.web3AuthNetwork,
126
+ uiConfig: this.options.uiConfig,
135
127
  });
136
128
 
137
129
  this.walletAdapters[adapterName] = ad;
@@ -160,7 +152,7 @@ export class Web3Auth extends Web3AuthNoModal implements IWeb3AuthModal {
160
152
  const openloginAdapter = this.walletAdapters[adapterName] as OpenloginAdapter;
161
153
  if (!openloginAdapter.privateKeyProvider) {
162
154
  const currentPrivateKeyProvider = await getPrivateKeyProvider(openloginAdapter.chainConfigProxy as CustomChainConfig);
163
- openloginAdapter.setAdapterSettings({ privateKeyProvider: currentPrivateKeyProvider });
155
+ openloginAdapter.setAdapterSettings({ privateKeyProvider: currentPrivateKeyProvider, whiteLabel: this.options.uiConfig });
164
156
  }
165
157
  }
166
158
 
@@ -168,14 +160,13 @@ export class Web3Auth extends Web3AuthNoModal implements IWeb3AuthModal {
168
160
  }
169
161
  });
170
162
 
171
- let adapterNames = await Promise.all(adapterConfigurationPromises);
163
+ const adapterNames = await Promise.all(adapterConfigurationPromises);
172
164
  const hasInAppWallets = Object.values(this.walletAdapters).some((adapter) => {
173
165
  if (adapter.type !== ADAPTER_CATEGORY.IN_APP) return false;
174
166
  if (this.modalConfig.adapters?.[adapter.name]?.showOnModal !== true) return false;
175
167
  if (!this.modalConfig.adapters?.[adapter.name]?.loginMethods) return true;
176
168
  const mergedLoginMethods = getAdapterSocialLogins(
177
169
  adapter.name,
178
- this.walletAdapters[adapter.name],
179
170
  (this.modalConfig.adapters as Record<WALLET_ADAPTER_TYPE, ModalConfig>)[adapter.name]?.loginMethods
180
171
  );
181
172
  if (Object.values(mergedLoginMethods).some((method: LoginMethodConfig[keyof LoginMethodConfig]) => method.showOnModal)) return true;
@@ -183,11 +174,6 @@ export class Web3Auth extends Web3AuthNoModal implements IWeb3AuthModal {
183
174
  });
184
175
  log.debug(hasInAppWallets, this.walletAdapters, adapterNames, "hasInAppWallets");
185
176
 
186
- // if both wc1 and wc2 are configured, give precedence to wc2.
187
- if (this.walletAdapters[WALLET_ADAPTERS.WALLET_CONNECT_V1] && this.walletAdapters[WALLET_ADAPTERS.WALLET_CONNECT_V2]) {
188
- delete this.walletAdapters[WALLET_ADAPTERS.WALLET_CONNECT_V1];
189
- adapterNames = adapterNames.filter((ad) => ad !== WALLET_ADAPTERS.WALLET_CONNECT_V1);
190
- }
191
177
  // Now, initialize the adapters.
192
178
  const initPromises = adapterNames.map(async (adapterName) => {
193
179
  if (!adapterName) return;
@@ -232,7 +218,7 @@ export class Web3Auth extends Web3AuthNoModal implements IWeb3AuthModal {
232
218
  }
233
219
  }
234
220
 
235
- public async connect(): Promise<SafeEventEmitterProvider | null> {
221
+ public async connect(): Promise<IProvider | null> {
236
222
  // if (!this.loginModal.initialized) throw new Error("Login modal is not initialized");
237
223
  // if already connected return provider
238
224
  if (this.connectedAdapterName && this.status === ADAPTER_STATUS.CONNECTED && this.provider) return this.provider;
@@ -281,11 +267,7 @@ export class Web3Auth extends Web3AuthNoModal implements IWeb3AuthModal {
281
267
  if (this.walletAdapters[adapterName].type === ADAPTER_CATEGORY.IN_APP) {
282
268
  this.loginModal.addSocialLogins(
283
269
  adapterName,
284
- getAdapterSocialLogins(
285
- adapterName,
286
- this.walletAdapters[adapterName],
287
- (this.modalConfig.adapters as Record<WALLET_ADAPTER_TYPE, ModalConfig>)[adapterName]?.loginMethods
288
- ),
270
+ getAdapterSocialLogins(adapterName, (this.modalConfig.adapters as Record<WALLET_ADAPTER_TYPE, ModalConfig>)[adapterName]?.loginMethods),
289
271
  this.options.uiConfig?.loginMethodsOrder || OPENLOGIN_PROVIDERS,
290
272
  {
291
273
  ...this.options.uiConfig,
@@ -317,7 +299,7 @@ export class Web3Auth extends Web3AuthNoModal implements IWeb3AuthModal {
317
299
  this.loginModal.on(LOGIN_MODAL_EVENTS.MODAL_VISIBILITY, async (visibility: boolean) => {
318
300
  log.debug("is login modal visible", visibility);
319
301
  this.emit(LOGIN_MODAL_EVENTS.MODAL_VISIBILITY, visibility);
320
- const adapter = this.walletAdapters[WALLET_ADAPTERS.WALLET_CONNECT_V2] || this.walletAdapters[WALLET_ADAPTERS.WALLET_CONNECT_V1];
302
+ const adapter = this.walletAdapters[WALLET_ADAPTERS.WALLET_CONNECT_V2];
321
303
  if (adapter) {
322
304
  const walletConnectStatus = adapter?.status;
323
305
  log.debug("trying refreshing wc session", visibility, walletConnectStatus);
@@ -1,12 +0,0 @@
1
- export declare const languageMap: {
2
- en: string;
3
- de: string;
4
- ja: string;
5
- ko: string;
6
- zh: string;
7
- es: string;
8
- fr: string;
9
- pt: string;
10
- nl: string;
11
- };
12
- export declare const getUserLanguage: (defaultLanguage: string | undefined) => string;
package/src/utils.ts DELETED
@@ -1,25 +0,0 @@
1
- interface NavigatorLanguage {
2
- userLanguage?: string;
3
- }
4
-
5
- export const languageMap = {
6
- en: "english",
7
- de: "german",
8
- ja: "japanese",
9
- ko: "korean",
10
- zh: "mandarin",
11
- es: "spanish",
12
- fr: "french",
13
- pt: "portuguese",
14
- nl: "dutch",
15
- };
16
-
17
- export const getUserLanguage = (defaultLanguage: string | undefined) => {
18
- let userLanguage = defaultLanguage;
19
- if (!userLanguage) {
20
- const browserLanguage =
21
- typeof window !== "undefined" ? (window.navigator as NavigatorLanguage).userLanguage || window.navigator.language || "en-US" : "en-US";
22
- userLanguage = browserLanguage.split("-")[0];
23
- }
24
- return Object.prototype.hasOwnProperty.call(languageMap, userLanguage) ? userLanguage : "en";
25
- };