@explorins/pers-sdk-react-native 2.1.19 → 2.1.20

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/index.js CHANGED
@@ -9948,11 +9948,24 @@ class DefaultAuthProvider {
9948
9948
  this.config = config;
9949
9949
  this.authTypeCache = null;
9950
9950
  this.authType = config.authType || exports.AccountOwnerType.USER;
9951
- // Determine if DPoP can be enabled (requires IndexedDB for key persistence)
9952
- const canUseDPoP = this.canEnableDPoP();
9951
+ // Determine if DPoP can be enabled:
9952
+ // 1. Custom crypto provider is supplied (e.g., React Native), OR
9953
+ // 2. IndexedDB is available for browser CryptoKey persistence
9954
+ const hasCustomCryptoProvider = !!config.dpop?.cryptoProvider;
9955
+ const hasIndexedDB = this.canEnableDPoP();
9956
+ const canUseDPoP = hasCustomCryptoProvider || hasIndexedDB;
9953
9957
  this.dpopEnabled = !!(config.dpop?.enabled && canUseDPoP);
9958
+ // Debug logging for DPoP configuration
9959
+ console.log('[DefaultAuthProvider] DPoP config:', {
9960
+ requestedEnabled: config.dpop?.enabled ?? false,
9961
+ hasCustomCryptoProvider,
9962
+ hasIndexedDB,
9963
+ canUseDPoP,
9964
+ finalEnabled: this.dpopEnabled,
9965
+ cryptoProviderType: config.dpop?.cryptoProvider?.constructor?.name || 'none'
9966
+ });
9954
9967
  if (config.dpop?.enabled && !canUseDPoP) {
9955
- console.warn('[DefaultAuthProvider] DPoP disabled: IndexedDB not available. CryptoKey persistence requires IndexedDB.');
9968
+ console.warn('[DefaultAuthProvider] DPoP disabled: IndexedDB not available and no custom crypto provider supplied. CryptoKey persistence requires IndexedDB or a custom provider.');
9956
9969
  }
9957
9970
  const storage = config.storage || this.createStorage();
9958
9971
  this.tokenManager = new AuthTokenManager(storage);
@@ -19416,10 +19429,15 @@ function createReactNativeAuthProvider(projectKey, config = {}) {
19416
19429
  enabled: dpop.enabled ?? true,
19417
19430
  cryptoProvider: dpop.cryptoProvider
19418
19431
  } : undefined;
19419
- // DEBUG LOGGING
19420
- if (debug) {
19421
- console.log('[ReactNativeAuthProvider] Creating provider with DPoP config:', JSON.stringify(dpopConfig));
19422
- }
19432
+ // Always log DPoP config for debugging (critical for mobile auth)
19433
+ console.log('[ReactNativeAuthProvider] Config:', {
19434
+ platform: reactNative.Platform.OS,
19435
+ isWebPlatform,
19436
+ dpopEnabled: dpopConfig?.enabled ?? false,
19437
+ hasCryptoProvider: !!dpopConfig?.cryptoProvider,
19438
+ cryptoProviderType: dpopConfig?.cryptoProvider?.constructor?.name || 'none',
19439
+ storageType: tokenStorage.constructor.name
19440
+ });
19423
19441
  // Return DefaultAuthProvider configured with platform-appropriate storage
19424
19442
  return new DefaultAuthProvider({
19425
19443
  authType,
@@ -19746,6 +19764,13 @@ const PersSDKProvider = ({ children, config }) => {
19746
19764
  if (reactNative.Platform.OS !== 'web' && isDpopEnabled && !dpopSettings.cryptoProvider) {
19747
19765
  dpopSettings.cryptoProvider = new ReactNativeDPoPProvider();
19748
19766
  }
19767
+ // Log DPoP settings before creating auth provider
19768
+ console.log('[PersSDKProvider] DPoP settings:', {
19769
+ platform: reactNative.Platform.OS,
19770
+ isDpopEnabled,
19771
+ hasCryptoProvider: !!dpopSettings.cryptoProvider,
19772
+ cryptoProviderType: dpopSettings.cryptoProvider?.constructor?.name || 'none'
19773
+ });
19749
19774
  // Create platform-aware auth provider if not provided
19750
19775
  let authProvider;
19751
19776
  if (config.authProvider) {