@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 +24 -13
- package/dist/index.js.map +1 -1
- package/dist/providers/PersSDKProvider.d.ts.map +1 -1
- package/dist/providers/PersSDKProvider.js +16 -11
- package/dist/providers/react-native-auth-provider.d.ts +5 -0
- package/dist/providers/react-native-auth-provider.d.ts.map +1 -1
- package/dist/providers/react-native-auth-provider.js +8 -2
- package/package.json +1 -1
- package/src/providers/PersSDKProvider.tsx +19 -12
- package/src/providers/react-native-auth-provider.ts +15 -2
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);
|