@web3auth/no-modal 5.2.0 → 6.0.1-alpha.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,7 +1,8 @@
1
- import type { OPENLOGIN_NETWORK_TYPE } from "@toruslabs/openlogin";
2
1
  import { SafeEventEmitter } from "@toruslabs/openlogin-jrpc";
2
+ import type { OPENLOGIN_NETWORK_TYPE } from "@toruslabs/openlogin-utils";
3
3
  import { ADAPTER_STATUS_TYPE, CustomChainConfig, IAdapter, IWeb3Auth, SafeEventEmitterProvider, UserAuthInfo, UserInfo, WALLET_ADAPTER_TYPE } from "@web3auth/base";
4
4
  import { IPlugin } from "@web3auth/base-plugin";
5
+ import { CommonJRPCProvider } from "@web3auth/base-provider";
5
6
  export interface Web3AuthNoModalOptions {
6
7
  /**
7
8
  * Client id for web3auth.
@@ -51,9 +52,11 @@ export declare class Web3AuthNoModal extends SafeEventEmitter implements IWeb3Au
51
52
  status: ADAPTER_STATUS_TYPE;
52
53
  cachedAdapter: string | null;
53
54
  protected walletAdapters: Record<string, IAdapter<unknown>>;
55
+ protected commonJRPCProvider: CommonJRPCProvider | null;
54
56
  private plugins;
55
57
  private storage;
56
58
  constructor(options: Web3AuthNoModalOptions);
59
+ get connected(): boolean;
57
60
  get provider(): SafeEventEmitterProvider | null;
58
61
  set provider(_: SafeEventEmitterProvider | null);
59
62
  init(): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@web3auth/no-modal",
3
- "version": "5.2.0",
3
+ "version": "6.0.1-alpha.0",
4
4
  "description": "Multi chain wallet aggregator for web3Auth",
5
5
  "keywords": [
6
6
  "web3Auth/no-modal",
@@ -35,10 +35,12 @@
35
35
  "@babel/runtime": "^7.x"
36
36
  },
37
37
  "dependencies": {
38
- "@toruslabs/openlogin": "^3.2.1",
39
- "@toruslabs/openlogin-jrpc": "^3.2.0",
40
- "@web3auth/base": "^5.2.0",
41
- "@web3auth/base-plugin": "^5.2.0"
38
+ "@toruslabs/openlogin": "^4.5.3",
39
+ "@toruslabs/openlogin-jrpc": "^4.5.1",
40
+ "@toruslabs/openlogin-utils": "^4.5.1",
41
+ "@web3auth/base": "^6.0.1-alpha.0",
42
+ "@web3auth/base-plugin": "^6.0.1-alpha.0",
43
+ "@web3auth/base-provider": "^6.0.1-alpha.0"
42
44
  },
43
45
  "lint-staged": {
44
46
  "!(*d).ts": [
@@ -56,5 +58,9 @@
56
58
  "bugs": {
57
59
  "url": "https://github.com/Web3Auth/Web3Auth/issues"
58
60
  },
59
- "gitHead": "6ccd82ba66c340dff977bf03f3d26cf7b267e01c"
61
+ "engines": {
62
+ "node": ">=16.18.1",
63
+ "npm": ">=8.x"
64
+ },
65
+ "gitHead": "82b8c037c89a38d88bccef48b8597d0967f1539a"
60
66
  }
package/src/noModal.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { OPENLOGIN_NETWORK_TYPE } from "@toruslabs/openlogin";
2
1
  import { SafeEventEmitter } from "@toruslabs/openlogin-jrpc";
2
+ import type { OPENLOGIN_NETWORK_TYPE } from "@toruslabs/openlogin-utils";
3
3
  import {
4
4
  ADAPTER_EVENTS,
5
5
  ADAPTER_NAMESPACES,
@@ -23,6 +23,7 @@ import {
23
23
  Web3AuthError,
24
24
  } from "@web3auth/base";
25
25
  import { IPlugin, PLUGIN_NAMESPACES } from "@web3auth/base-plugin";
26
+ import { CommonJRPCProvider } from "@web3auth/base-provider";
26
27
 
27
28
  export interface Web3AuthNoModalOptions {
28
29
  /**
@@ -83,6 +84,8 @@ export class Web3AuthNoModal extends SafeEventEmitter implements IWeb3Auth {
83
84
 
84
85
  protected walletAdapters: Record<string, IAdapter<unknown>> = {};
85
86
 
87
+ protected commonJRPCProvider: CommonJRPCProvider | null = null;
88
+
86
89
  private plugins: Record<string, IPlugin> = {};
87
90
 
88
91
  private storage: "sessionStorage" | "localStorage" = "localStorage";
@@ -107,10 +110,13 @@ export class Web3AuthNoModal extends SafeEventEmitter implements IWeb3Auth {
107
110
  this.subscribeToAdapterEvents = this.subscribeToAdapterEvents.bind(this);
108
111
  }
109
112
 
113
+ get connected(): boolean {
114
+ return Boolean(this.connectedAdapterName);
115
+ }
116
+
110
117
  get provider(): SafeEventEmitterProvider | null {
111
- if (this.status === ADAPTER_STATUS.CONNECTED && this.connectedAdapterName) {
112
- const adapter = this.walletAdapters[this.connectedAdapterName];
113
- return adapter.provider;
118
+ if (this.status !== ADAPTER_STATUS.NOT_READY && this.commonJRPCProvider) {
119
+ return this.commonJRPCProvider.provider;
114
120
  }
115
121
  return null;
116
122
  }
@@ -145,6 +151,7 @@ export class Web3AuthNoModal extends SafeEventEmitter implements IWeb3Auth {
145
151
 
146
152
  return this.walletAdapters[adapterName].init({ autoConnect: this.cachedAdapter === adapterName }).catch((e) => log.error(e));
147
153
  });
154
+ this.commonJRPCProvider = await CommonJRPCProvider.getProviderInstance({ chainConfig: this.coreOptions.chainConfig as CustomChainConfig });
148
155
  this.status = ADAPTER_STATUS.READY;
149
156
  await Promise.all(initPromises);
150
157
  }
@@ -193,13 +200,23 @@ export class Web3AuthNoModal extends SafeEventEmitter implements IWeb3Auth {
193
200
  }
194
201
 
195
202
  public async addChain(chainConfig: CustomChainConfig): Promise<void> {
196
- if (this.status !== ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw WalletLoginError.notConnectedError(`No wallet is connected`);
197
- return this.walletAdapters[this.connectedAdapterName].addChain(chainConfig);
203
+ if (this.status === ADAPTER_STATUS.CONNECTED && this.connectedAdapterName)
204
+ return this.walletAdapters[this.connectedAdapterName].addChain(chainConfig);
205
+
206
+ if (this.commonJRPCProvider) {
207
+ return this.commonJRPCProvider.addChain(chainConfig);
208
+ }
209
+ throw WalletInitializationError.notReady(`No wallet is ready`);
198
210
  }
199
211
 
200
212
  public async switchChain(params: { chainId: string }): Promise<void> {
201
- if (this.status !== ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw WalletLoginError.notConnectedError(`No wallet is connected`);
202
- return this.walletAdapters[this.connectedAdapterName].switchChain(params);
213
+ if (this.status === ADAPTER_STATUS.CONNECTED && this.connectedAdapterName)
214
+ return this.walletAdapters[this.connectedAdapterName].switchChain(params);
215
+
216
+ if (this.commonJRPCProvider) {
217
+ return this.commonJRPCProvider.switchChain(params);
218
+ }
219
+ throw WalletInitializationError.notReady(`No wallet is connected`);
203
220
  }
204
221
 
205
222
  /**
@@ -207,10 +224,11 @@ export class Web3AuthNoModal extends SafeEventEmitter implements IWeb3Auth {
207
224
  * @param walletName - Key of the walletAdapter to use.
208
225
  */
209
226
  async connectTo<T>(walletName: WALLET_ADAPTER_TYPE, loginParams?: T): Promise<SafeEventEmitterProvider | null> {
210
- if (!this.walletAdapters[walletName])
227
+ if (!this.walletAdapters[walletName] || !this.commonJRPCProvider)
211
228
  throw WalletInitializationError.notFound(`Please add wallet adapter for ${walletName} wallet, before connecting`);
212
229
  const provider = await this.walletAdapters[walletName].connect(loginParams);
213
- return provider;
230
+ this.commonJRPCProvider.updateProviderEngineProxy(provider as SafeEventEmitterProvider);
231
+ return this.provider;
214
232
  }
215
233
 
216
234
  async logout(options: { cleanup: boolean } = { cleanup: false }): Promise<void> {
@@ -242,6 +260,9 @@ export class Web3AuthNoModal extends SafeEventEmitter implements IWeb3Auth {
242
260
 
243
261
  protected subscribeToAdapterEvents(walletAdapter: IAdapter<unknown>): void {
244
262
  walletAdapter.on(ADAPTER_EVENTS.CONNECTED, async (data: CONNECTED_EVENT_DATA) => {
263
+ if (!this.commonJRPCProvider) throw WalletInitializationError.notFound(`CommonJrpcProvider not found`);
264
+ const { provider } = this.walletAdapters[data.adapter];
265
+ this.commonJRPCProvider.updateProviderEngineProxy(provider as SafeEventEmitterProvider);
245
266
  this.status = ADAPTER_STATUS.CONNECTED;
246
267
  this.connectedAdapterName = data.adapter;
247
268
  this.cacheWallet(data.adapter);