@bounded-sh/client 0.0.20 → 0.0.21

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 (26) hide show
  1. package/README.md +2 -2
  2. package/dist/index.js +148 -33
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +148 -33
  5. package/dist/index.mjs.map +1 -1
  6. package/dist/{index.native-BtM38BVP.js → index.native-DdKzAUjN.js} +152 -37
  7. package/dist/index.native-DdKzAUjN.js.map +1 -0
  8. package/dist/{index.native-w12aoVNW.mjs → index.native-N3xLU862.mjs} +152 -37
  9. package/dist/index.native-N3xLU862.mjs.map +1 -0
  10. package/dist/index.native.js +1 -1
  11. package/dist/index.native.mjs +1 -1
  12. package/dist/{phantom-wallet-provider-BT2V4EU5.mjs → phantom-wallet-provider-DcE4A2_e.mjs} +2 -2
  13. package/dist/{phantom-wallet-provider-BT2V4EU5.mjs.map → phantom-wallet-provider-DcE4A2_e.mjs.map} +1 -1
  14. package/dist/{phantom-wallet-provider-BJWelaiH.js → phantom-wallet-provider-Dz9lQvNv.js} +2 -2
  15. package/dist/{phantom-wallet-provider-BJWelaiH.js.map → phantom-wallet-provider-Dz9lQvNv.js.map} +1 -1
  16. package/dist/{privy-wallet-provider-BSh0aZVL.js → privy-wallet-provider-DUvjxNXK.js} +3 -3
  17. package/dist/{privy-wallet-provider-BSh0aZVL.js.map → privy-wallet-provider-DUvjxNXK.js.map} +1 -1
  18. package/dist/{privy-wallet-provider-LV1X7hZe.mjs → privy-wallet-provider-oG3o5vko.mjs} +3 -3
  19. package/dist/{privy-wallet-provider-LV1X7hZe.mjs.map → privy-wallet-provider-oG3o5vko.mjs.map} +1 -1
  20. package/dist/{solana-mobile-wallet-provider-CKsfiyDd.js → solana-mobile-wallet-provider-DdBoG6c2.js} +2 -2
  21. package/dist/{solana-mobile-wallet-provider-CKsfiyDd.js.map → solana-mobile-wallet-provider-DdBoG6c2.js.map} +1 -1
  22. package/dist/{solana-mobile-wallet-provider-NLe9_mEn.mjs → solana-mobile-wallet-provider-aS60_GZR.mjs} +2 -2
  23. package/dist/{solana-mobile-wallet-provider-NLe9_mEn.mjs.map → solana-mobile-wallet-provider-aS60_GZR.mjs.map} +1 -1
  24. package/package.json +2 -2
  25. package/dist/index.native-BtM38BVP.js.map +0 -1
  26. package/dist/index.native-w12aoVNW.mjs.map +0 -1
package/README.md CHANGED
@@ -66,13 +66,13 @@ yarn add @tarobase/js-sdk
66
66
 
67
67
 
68
68
 
69
- Before using the SDK, initialize it with your **Application ID**. You can obtain your `appId` by creating an application on the [Tarobase Console](https://console.tarobase.com). The console also allows you to configure your application's policies, including data storage preferences (on-chain or off-chain) and data schemas.
69
+ Before using the SDK, initialize it with your **Application ID** and the one auth method this app intends to use. You can obtain your `appId` by creating an application on the [Tarobase Console](https://console.tarobase.com). The console also allows you to configure your application's policies, including data storage preferences (on-chain or off-chain) and data schemas.
70
70
 
71
71
 
72
72
  ```typescript
73
73
  import { init } from '@tarobase/js-sdk';
74
74
 
75
- init({appId: 'YOUR_APP_ID' });
75
+ init({ appId: 'YOUR_APP_ID', authMethod: 'email' });
76
76
  ```
77
77
 
78
78
  ### Authentication
package/dist/index.js CHANGED
@@ -3989,13 +3989,33 @@ function createEmailModalTree() {
3989
3989
  close.type = 'button';
3990
3990
  close.textContent = '×';
3991
3991
  card.appendChild(close);
3992
+ // Brand row — the real Bounded mark (same geometry as bounded.sh) + wordmark.
3992
3993
  const brand = document.createElement('div');
3993
3994
  brand.className = 'ba-brand';
3994
- const dot = document.createElement('span');
3995
- dot.className = 'ba-dot';
3996
- brand.appendChild(dot);
3997
- brand.appendChild(document.createTextNode(' Sign in'));
3995
+ const mark = document.createElement('span');
3996
+ mark.className = 'ba-mark';
3997
+ mark.setAttribute('aria-hidden', 'true');
3998
+ mark.innerHTML =
3999
+ '<svg width="24" height="24" viewBox="0 0 32 32" fill="none">' +
4000
+ '<path class="ba-c ba-c1" d="M16 5 H5 V16"/>' +
4001
+ '<path class="ba-c ba-c2" d="M16 5 H27 V16"/>' +
4002
+ '<path class="ba-c ba-c3" d="M5 16 V27 H16"/>' +
4003
+ '<path class="ba-c ba-c4" d="M27 16 V27 H16"/>' +
4004
+ '</svg>';
4005
+ brand.appendChild(mark);
4006
+ const word = document.createElement('span');
4007
+ word.className = 'ba-word';
4008
+ word.textContent = 'bounded';
4009
+ brand.appendChild(word);
3998
4010
  card.appendChild(brand);
4011
+ const title = document.createElement('h1');
4012
+ title.className = 'ba-title';
4013
+ title.textContent = 'Sign in';
4014
+ card.appendChild(title);
4015
+ const sub = document.createElement('p');
4016
+ sub.className = 'ba-subtitle';
4017
+ sub.textContent = 'Continue with your email — no wallet needed.';
4018
+ card.appendChild(sub);
3999
4019
  const emailStep = document.createElement('div');
4000
4020
  emailStep.id = 'ba-email-step';
4001
4021
  card.appendChild(emailStep);
@@ -4016,7 +4036,7 @@ function createEmailModalTree() {
4016
4036
  emailButton.id = 'ba-email-btn';
4017
4037
  emailButton.className = 'ba-btn';
4018
4038
  emailButton.type = 'button';
4019
- emailButton.textContent = 'Continue';
4039
+ emailButton.textContent = 'Continue with email';
4020
4040
  emailStep.appendChild(emailButton);
4021
4041
  const otpStep = document.createElement('div');
4022
4042
  otpStep.id = 'ba-otp-step';
@@ -4061,37 +4081,67 @@ function createEmailModalTree() {
4061
4081
  card.appendChild(foot);
4062
4082
  return root;
4063
4083
  }
4084
+ // Design language matches the hosted Bounded login (auth.bounded.sh) and bounded.sh:
4085
+ // dark editorial panel, green accent, Schibsted Grotesk / Newsreader / JetBrains Mono,
4086
+ // the Bounded mark drawing itself in. Fonts load best-effort (scoped @import); every
4087
+ // rule has a system fallback so the modal looks right even if Google Fonts is blocked.
4088
+ // All selectors are scoped under #bounded-auth-modal so we never leak into the host page.
4064
4089
  const MODAL_CSS = `
4065
- #bounded-auth-modal .ba-overlay{position:fixed;inset:0;background:rgba(8,10,18,.62);backdrop-filter:blur(4px);
4090
+ @import url('https://fonts.googleapis.com/css2?family=Newsreader:opsz,wght@6..72,400;6..72,500&family=Schibsted+Grotesk:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap');
4091
+ #bounded-auth-modal{--ba-bg:#0a0a0b;--ba-panel:#0e0f11;--ba-inset:#060607;--ba-raise:#131416;
4092
+ --ba-line:rgba(232,230,222,.08);--ba-line-strong:rgba(232,230,222,.16);
4093
+ --ba-text:#e8e6de;--ba-dim:#9b9991;--ba-faint:#85837c;--ba-green:#58c98f;
4094
+ --ba-green-bg:rgba(88,201,143,.09);--ba-green-line:rgba(88,201,143,.28);--ba-red:#ec8488;
4095
+ --ba-body:'Schibsted Grotesk',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
4096
+ --ba-display:'Newsreader','Iowan Old Style',Georgia,serif;
4097
+ --ba-mono:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,monospace;}
4098
+ #bounded-auth-modal .ba-overlay{position:fixed;inset:0;background:rgba(6,6,7,.66);backdrop-filter:blur(4px);
4066
4099
  display:flex;align-items:center;justify-content:center;z-index:2147483000;opacity:1;transition:opacity .16s ease;
4067
- font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;padding:16px;}
4100
+ font-family:var(--ba-body);padding:16px;}
4068
4101
  #bounded-auth-modal .ba-overlay.out{opacity:0;}
4069
- #bounded-auth-modal .ba-card{width:100%;max-width:380px;background:#0f1117;color:#f4f5f7;border:1px solid #232838;
4070
- border-radius:18px;padding:24px 22px 18px;box-shadow:0 24px 70px rgba(0,0,0,.5);position:relative;
4071
- animation:ba-in .18s ease;}
4072
- @keyframes ba-in{from{transform:translateY(10px);opacity:.6}to{transform:translateY(0);opacity:1}}
4073
- #bounded-auth-modal .ba-x{position:absolute;top:12px;right:12px;width:30px;height:30px;border:none;background:#1a1e2b;
4074
- color:#9aa3b2;border-radius:9px;font-size:20px;line-height:1;cursor:pointer;}
4075
- #bounded-auth-modal .ba-x:hover{background:#222838;color:#fff;}
4076
- #bounded-auth-modal .ba-brand{display:flex;align-items:center;gap:8px;font-weight:600;font-size:15px;margin:0 0 18px;}
4077
- #bounded-auth-modal .ba-dot{width:10px;height:10px;border-radius:50%;background:linear-gradient(135deg,#8b5cf6,#22d3ee);}
4078
- #bounded-auth-modal .ba-label{display:block;font-size:13px;color:#aab2c0;margin:0 0 8px;}
4079
- #bounded-auth-modal .ba-em{color:#fff;font-weight:600;}
4080
- #bounded-auth-modal .ba-input{width:100%;box-sizing:border-box;background:#171b26;border:1px solid #2a3040;color:#fff;
4081
- border-radius:11px;padding:13px 14px;font-size:16px;outline:none;transition:border-color .12s;}
4082
- #bounded-auth-modal .ba-input:focus{border-color:#7c5cff;}
4083
- #bounded-auth-modal .ba-code{letter-spacing:8px;text-align:center;font-size:22px;font-variant-numeric:tabular-nums;}
4084
- #bounded-auth-modal .ba-btn{width:100%;margin-top:12px;background:linear-gradient(135deg,#7c5cff,#5b8cff);color:#fff;
4085
- border:none;border-radius:11px;padding:13px;font-size:15px;font-weight:600;cursor:pointer;transition:filter .12s;}
4086
- #bounded-auth-modal .ba-btn:hover{filter:brightness(1.08);}
4087
- #bounded-auth-modal .ba-btn:disabled{opacity:.6;cursor:default;}
4088
- #bounded-auth-modal .ba-link{width:100%;margin-top:10px;background:none;border:none;color:#8aa0c6;font-size:13px;cursor:pointer;}
4089
- #bounded-auth-modal .ba-link:hover{color:#bcd0f0;}
4090
- #bounded-auth-modal .ba-msg{min-height:18px;margin-top:10px;font-size:13px;color:#8aa0c6;text-align:center;}
4091
- #bounded-auth-modal .ba-msg.err{color:#ff8a8a;}
4092
- #bounded-auth-modal .ba-foot{margin-top:14px;text-align:center;font-size:11px;color:#5a6273;}
4102
+ #bounded-auth-modal *{box-sizing:border-box;}
4103
+ #bounded-auth-modal .ba-card{width:100%;max-width:372px;background:var(--ba-panel);color:var(--ba-text);
4104
+ border:1px solid var(--ba-line);border-radius:12px;padding:28px 28px 22px;position:relative;
4105
+ box-shadow:0 1px 0 rgba(232,230,222,.03) inset,0 30px 80px -40px rgba(0,0,0,.8);animation:ba-in .18s ease;}
4106
+ @keyframes ba-in{from{transform:translateY(8px);opacity:.5}to{transform:translateY(0);opacity:1}}
4107
+ #bounded-auth-modal .ba-x{position:absolute;top:14px;right:14px;width:28px;height:28px;border:1px solid var(--ba-line);
4108
+ background:var(--ba-raise);color:var(--ba-faint);border-radius:7px;font-size:18px;line-height:1;cursor:pointer;
4109
+ transition:color .15s,border-color .15s;}
4110
+ #bounded-auth-modal .ba-x:hover{color:var(--ba-text);border-color:var(--ba-faint);}
4111
+ #bounded-auth-modal .ba-brand{display:flex;align-items:center;gap:10px;margin:0 0 24px;}
4112
+ #bounded-auth-modal .ba-mark{display:flex;color:var(--ba-text);}
4113
+ #bounded-auth-modal .ba-mark svg{overflow:visible;display:block;}
4114
+ #bounded-auth-modal .ba-c{stroke:currentColor;stroke-width:2.4;fill:none;}
4115
+ @media (prefers-reduced-motion:no-preference){
4116
+ #bounded-auth-modal .ba-c{stroke-dasharray:23;stroke-dashoffset:23;animation:ba-draw .4s cubic-bezier(.45,0,.2,1) forwards;}
4117
+ #bounded-auth-modal .ba-c1{animation-delay:.1s}#bounded-auth-modal .ba-c2{animation-delay:.38s}
4118
+ #bounded-auth-modal .ba-c3{animation-delay:.66s}#bounded-auth-modal .ba-c4{animation-delay:.94s}}
4119
+ @keyframes ba-draw{to{stroke-dashoffset:0}}
4120
+ #bounded-auth-modal .ba-word{font-family:var(--ba-body);font-weight:500;font-size:15px;letter-spacing:.2px;color:var(--ba-text);}
4121
+ #bounded-auth-modal .ba-title{font-family:var(--ba-display);font-weight:400;font-size:25px;letter-spacing:-.01em;margin:0 0 5px;}
4122
+ #bounded-auth-modal .ba-subtitle{color:var(--ba-dim);font-size:14px;margin:0 0 22px;}
4123
+ #bounded-auth-modal .ba-label{display:block;font-size:12px;color:var(--ba-dim);margin:0 0 7px;}
4124
+ #bounded-auth-modal .ba-em{color:var(--ba-text);font-weight:600;}
4125
+ #bounded-auth-modal .ba-input{width:100%;background:var(--ba-inset);border:1px solid var(--ba-line-strong);color:var(--ba-text);
4126
+ border-radius:6px;padding:11px 13px;font-family:var(--ba-body);font-size:15px;outline:none;transition:border-color .15s,box-shadow .15s;}
4127
+ #bounded-auth-modal .ba-input::placeholder{color:var(--ba-faint);}
4128
+ #bounded-auth-modal .ba-input:focus{border-color:var(--ba-green-line);box-shadow:0 0 0 3px var(--ba-green-bg);}
4129
+ #bounded-auth-modal .ba-code{font-family:var(--ba-mono);letter-spacing:8px;text-align:center;font-size:21px;padding-left:8px;}
4130
+ #bounded-auth-modal .ba-btn{width:100%;margin-top:16px;background:var(--ba-text);color:var(--ba-bg);
4131
+ border:0;border-radius:6px;padding:12px;font-family:var(--ba-body);font-size:14px;font-weight:600;cursor:pointer;
4132
+ transition:opacity .15s,transform .04s;}
4133
+ #bounded-auth-modal .ba-btn:hover{opacity:.9;}
4134
+ #bounded-auth-modal .ba-btn:active{transform:translateY(.5px);}
4135
+ #bounded-auth-modal .ba-btn:disabled{opacity:.45;cursor:default;}
4136
+ #bounded-auth-modal .ba-link{width:100%;margin-top:14px;background:none;border:none;color:var(--ba-dim);
4137
+ font-family:var(--ba-body);font-size:12.5px;cursor:pointer;}
4138
+ #bounded-auth-modal .ba-link:hover{color:var(--ba-text);}
4139
+ #bounded-auth-modal .ba-msg{min-height:16px;margin-top:16px;font-size:12.5px;color:var(--ba-dim);text-align:center;}
4140
+ #bounded-auth-modal .ba-msg.err{color:var(--ba-red);}
4141
+ #bounded-auth-modal .ba-foot{margin-top:26px;padding-top:16px;border-top:1px solid var(--ba-line);
4142
+ text-align:center;font-size:11px;color:var(--ba-faint);}
4093
4143
  #bounded-auth-modal .hidden{display:none;}
4094
- @media (max-width:480px){#bounded-auth-modal .ba-card{max-width:none;border-radius:16px;}}`;
4144
+ @media (max-width:480px){#bounded-auth-modal .ba-card{max-width:none;}}`;
4095
4145
 
4096
4146
  const SURFNET_RPC_URL = "https://surfpool.fly.dev";
4097
4147
  const SUPPORTED_SOLANA_NETWORKS = new Set([
@@ -4138,6 +4188,7 @@ function resolveSolanaRpcUrl(explicitRpcUrl, network, context) {
4138
4188
  }
4139
4189
 
4140
4190
  const PKCE_STORE_KEY = 'bounded.oidc.pkce';
4191
+ const STORED_AUTH_METHOD_KEY$2 = 'bounded_last_auth_method';
4141
4192
  // Active session store (Web on web, RN on React Native) — selected by config,
4142
4193
  // not by `typeof window` (truthy on RN). OIDC redirect/popup is web-only, but the
4143
4194
  // session it mints is read back through this same selector everywhere.
@@ -4432,6 +4483,10 @@ async function exchangeCode(code, verifier, redirectUri) {
4432
4483
  const refreshToken = tokenField(data, 'refresh_token', 'refreshToken');
4433
4484
  const user = userFromIdToken(idToken);
4434
4485
  await sessionManager().storeSession(String(user.address || ''), accessToken, idToken, refreshToken, base);
4486
+ try {
4487
+ getPlatform().storage.setItem(STORED_AUTH_METHOD_KEY$2, 'email');
4488
+ }
4489
+ catch ( /* storage unavailable */_b) { /* storage unavailable */ }
4435
4490
  setCurrentUser(user);
4436
4491
  setAuthProviderInstance(oidcProviderSingleton);
4437
4492
  return user;
@@ -4442,7 +4497,10 @@ async function exchangeCode(code, verifier, redirectUri) {
4442
4497
  // (react-dom) when this module is imported on RN.
4443
4498
  let currentAuthProvider = null;
4444
4499
  let currentAuthMethod = null;
4500
+ let currentAuthProviderConfigKey = null;
4445
4501
  let initConfig = null;
4502
+ const objectIdentityKeys = new WeakMap();
4503
+ let nextObjectIdentityKey = 1;
4446
4504
  // --- localStorage helpers: track which auth method created the active session ---
4447
4505
  const STORED_AUTH_METHOD_KEY$1 = 'bounded_last_auth_method';
4448
4506
  function getStoredAuthMethod() {
@@ -4466,6 +4524,51 @@ function setStoredAuthMethod(method) {
4466
4524
  // storage might not be available
4467
4525
  }
4468
4526
  }
4527
+ function objectIdentityKey(value) {
4528
+ if (!value || (typeof value !== 'object' && typeof value !== 'function'))
4529
+ return null;
4530
+ const obj = value;
4531
+ let id = objectIdentityKeys.get(obj);
4532
+ if (!id) {
4533
+ id = nextObjectIdentityKey++;
4534
+ objectIdentityKeys.set(obj, id);
4535
+ }
4536
+ return `object:${id}`;
4537
+ }
4538
+ function stableConfigValue(value, seen = new WeakSet()) {
4539
+ if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean')
4540
+ return value;
4541
+ if (typeof value === 'function')
4542
+ return '[function]';
4543
+ if (Array.isArray(value))
4544
+ return value.map((item) => stableConfigValue(item, seen));
4545
+ if (typeof value === 'object') {
4546
+ if (seen.has(value))
4547
+ return '[circular]';
4548
+ seen.add(value);
4549
+ const out = {};
4550
+ for (const key of Object.keys(value).sort()) {
4551
+ out[key] = stableConfigValue(value[key], seen);
4552
+ }
4553
+ seen.delete(value);
4554
+ return out;
4555
+ }
4556
+ return String(value);
4557
+ }
4558
+ function authProviderConfigKey(config) {
4559
+ var _a, _b, _c, _d, _e, _f, _g, _h;
4560
+ return JSON.stringify({
4561
+ authMethod: (_a = config.authMethod) !== null && _a !== void 0 ? _a : null,
4562
+ chain: (_b = config.chain) !== null && _b !== void 0 ? _b : null,
4563
+ rpcUrl: normalizeSolanaRpcUrl(config.rpcUrl),
4564
+ name: (_c = config.name) !== null && _c !== void 0 ? _c : null,
4565
+ logoUrl: (_d = config.logoUrl) !== null && _d !== void 0 ? _d : null,
4566
+ phantomConfig: stableConfigValue((_e = config.phantomConfig) !== null && _e !== void 0 ? _e : null),
4567
+ privyConfig: stableConfigValue((_f = config.privyConfig) !== null && _f !== void 0 ? _f : null),
4568
+ mobileWalletConfig: stableConfigValue((_g = config.mobileWalletConfig) !== null && _g !== void 0 ? _g : null),
4569
+ privyExpoProvider: objectIdentityKey((_h = config.privyExpoProvider) !== null && _h !== void 0 ? _h : null),
4570
+ });
4571
+ }
4469
4572
  /**
4470
4573
  * Clears the session if it was created by a different auth method.
4471
4574
  * Returns true if the session was cleared, false if the session is compatible.
@@ -4571,6 +4674,7 @@ async function hotSwapToMWAProvider(config) {
4571
4674
  }
4572
4675
  currentAuthProvider = provider;
4573
4676
  currentAuthMethod = 'mobile-wallet-adapter';
4677
+ currentAuthProviderConfigKey = authProviderConfigKey(Object.assign(Object.assign({}, config), { authMethod: 'mobile-wallet-adapter' }));
4574
4678
  const coreConfig = await core.getConfig();
4575
4679
  coreConfig.authProvider = provider;
4576
4680
  // Send 'phantom' as authMethod so the server routes to Solana verification.
@@ -4581,12 +4685,18 @@ async function hotSwapToMWAProvider(config) {
4581
4685
  }
4582
4686
  async function getAuthProvider(config) {
4583
4687
  var _a, _b;
4584
- if (currentAuthProvider) {
4688
+ const nextProviderConfigKey = config ? authProviderConfigKey(config) : null;
4689
+ if (currentAuthProvider && (!config || currentAuthProviderConfigKey === nextProviderConfigKey)) {
4585
4690
  return currentAuthProvider;
4586
4691
  }
4587
4692
  if (!config) {
4588
4693
  throw new Error("Config is required to initialize auth provider");
4589
4694
  }
4695
+ if (currentAuthProvider && currentAuthProviderConfigKey !== nextProviderConfigKey) {
4696
+ currentAuthProvider = null;
4697
+ currentAuthMethod = null;
4698
+ currentAuthProviderConfigKey = null;
4699
+ }
4590
4700
  initConfig = config;
4591
4701
  const authMethod = config.authMethod;
4592
4702
  if (!authMethod) {
@@ -4669,6 +4779,7 @@ async function getAuthProvider(config) {
4669
4779
  console.log("[Offchain] Wrapping auth provider for Poofnet transaction tracking");
4670
4780
  currentAuthProvider = new OffchainAuthProvider(currentAuthProvider);
4671
4781
  }
4782
+ currentAuthProviderConfigKey = nextProviderConfigKey;
4672
4783
  return currentAuthProvider;
4673
4784
  }
4674
4785
  /**
@@ -4698,6 +4809,7 @@ async function signInAnonymously() {
4698
4809
  const provider = new GuestAuthProvider();
4699
4810
  currentAuthProvider = provider;
4700
4811
  currentAuthMethod = 'guest';
4812
+ currentAuthProviderConfigKey = 'direct:guest';
4701
4813
  const coreConfig = await core.getConfig();
4702
4814
  coreConfig.authProvider = provider;
4703
4815
  coreConfig.authMethod = 'guest';
@@ -4742,6 +4854,7 @@ async function loginWithPrivy(options) {
4742
4854
  provider = new OffchainAuthProvider(provider);
4743
4855
  }
4744
4856
  currentAuthProvider = provider;
4857
+ currentAuthProviderConfigKey = authProviderConfigKey(Object.assign(Object.assign({}, coreConfig), { authMethod: currentAuthMethod }));
4745
4858
  coreConfig.authProvider = provider;
4746
4859
  coreConfig.authMethod = currentAuthMethod;
4747
4860
  setAuthProviderInstance(provider);
@@ -4758,6 +4871,7 @@ async function activateEmailProvider() {
4758
4871
  const provider = new EmailAuthProvider();
4759
4872
  currentAuthProvider = provider;
4760
4873
  currentAuthMethod = 'email';
4874
+ currentAuthProviderConfigKey = 'direct:email';
4761
4875
  const coreConfig = await core.getConfig();
4762
4876
  coreConfig.authProvider = provider;
4763
4877
  coreConfig.authMethod = 'email';
@@ -4884,6 +4998,7 @@ async function logout$1() {
4884
4998
  setStoredAuthMethod(null);
4885
4999
  currentAuthProvider = null;
4886
5000
  currentAuthMethod = null;
5001
+ currentAuthProviderConfigKey = null;
4887
5002
  }
4888
5003
 
4889
5004
  /**