@explorins/pers-sdk-react-native 1.5.29 → 1.5.30

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
@@ -32215,16 +32215,22 @@ function createReactNativeAuthProvider(projectKey, config = {}) {
32215
32215
  if (!projectKey || typeof projectKey !== 'string') {
32216
32216
  throw new Error('createReactNativeAuthProvider: projectKey is required and must be a string');
32217
32217
  }
32218
- const { keyPrefix = `pers_${projectKey.slice(0, 8)}_`, debug = false, customStorage, authType = 'user' } = config;
32218
+ const { keyPrefix = `pers_${projectKey.slice(0, 8)}_`, debug = false, customStorage, authType = 'user', dpop } = config;
32219
32219
  // Platform-specific storage selection
32220
32220
  const tokenStorage = customStorage || (isWebPlatform
32221
32221
  ? new LocalStorageTokenStorage()
32222
32222
  : new ReactNativeSecureStorage(keyPrefix));
32223
+ // Prepare DPoP config ensuring enabled is boolean (default true)
32224
+ const dpopConfig = dpop ? {
32225
+ enabled: dpop.enabled ?? true,
32226
+ cryptoProvider: dpop.cryptoProvider
32227
+ } : undefined;
32223
32228
  // Return DefaultAuthProvider configured with platform-appropriate storage
32224
32229
  return new DefaultAuthProvider({
32225
32230
  authType,
32226
32231
  projectKey,
32227
- storage: tokenStorage
32232
+ storage: tokenStorage,
32233
+ dpop: dpopConfig
32228
32234
  });
32229
32235
  }
32230
32236
 
@@ -32548,6 +32554,18 @@ const PersSDKProvider = ({ children, config }) => {
32548
32554
  try {
32549
32555
  // Create HTTP client
32550
32556
  const httpClient = new ReactNativeHttpClient();
32557
+ // Ensure DPoP is enabled by default for all platforms
32558
+ const dpopConfig = config.dpop || {};
32559
+ const isDpopEnabled = dpopConfig.enabled ?? true;
32560
+ // Prepare DPoP settings for Auth Provider
32561
+ const dpopSettings = {
32562
+ enabled: isDpopEnabled,
32563
+ cryptoProvider: dpopConfig.cryptoProvider
32564
+ };
32565
+ // Inject Native DPoP Provider (crypto-based) for mobile platforms if not already provided
32566
+ if (reactNative.Platform.OS !== 'web' && isDpopEnabled && !dpopSettings.cryptoProvider) {
32567
+ dpopSettings.cryptoProvider = new ReactNativeDPoPProvider();
32568
+ }
32551
32569
  // Create platform-aware auth provider if not provided
32552
32570
  let authProvider;
32553
32571
  if (config.authProvider) {
@@ -32556,23 +32574,16 @@ const PersSDKProvider = ({ children, config }) => {
32556
32574
  else {
32557
32575
  // Use our platform-aware auth provider that automatically selects LocalStorage (web) or AsyncStorage (mobile)
32558
32576
  authProvider = createReactNativeAuthProvider(config.apiProjectKey || 'default-project', {
32559
- debug: false
32577
+ debug: false,
32578
+ dpop: dpopSettings
32560
32579
  });
32561
32580
  }
32562
32581
  // Enhanced config with platform-appropriate auth provider
32563
32582
  const sdkConfig = {
32564
32583
  ...config,
32565
- authProvider
32584
+ authProvider,
32585
+ dpop: dpopSettings
32566
32586
  };
32567
- // Inject Native DPoP Provider (crypto-based) for mobile platforms
32568
- // Web platforms use built-in WebCrypto provider by default
32569
- if (reactNative.Platform.OS !== 'web' && (!config.dpop?.cryptoProvider)) {
32570
- sdkConfig.dpop = {
32571
- ...(config.dpop || {}),
32572
- enabled: config.dpop?.enabled ?? true,
32573
- cryptoProvider: new ReactNativeDPoPProvider()
32574
- };
32575
- }
32576
32587
  // Initialize PersSDK with platform-aware auth provider
32577
32588
  const sdkInstance = new PersSDK(httpClient, sdkConfig);
32578
32589
  setAuthProvider(authProvider);