UNPKG

react-native-pkce-challenge

Version:

Proof Key for Code Exchange (PKCE) challenge generator for React Native

30 lines (22 loc) 920 B
import { NativeModules } from 'react-native'; import { getRandomBase64StringFallback, BYTE_LENGTH } from './utils'; import PkceChallenge from './NativePkceChallenge'; export default function generateRandomBytes(): string { const globalObject: any = global; if (globalObject?.ExpoModules?.ExpoRandom) { return globalObject.ExpoModules.ExpoRandom.getRandomBase64String(BYTE_LENGTH); } if (globalObject?.ExpoModules?.ExpoCrypto) { return globalObject.ExpoModules.ExpoCrypto.getRandomBase64String(BYTE_LENGTH); } if (NativeModules.ExpoRandom) { return NativeModules.ExpoRandom.getRandomBase64String(BYTE_LENGTH); } if (NativeModules.ExpoCrypto) { return NativeModules.ExpoCrypto.getRandomBase64String(BYTE_LENGTH); } if (PkceChallenge?.getRandomBase64String) { return PkceChallenge.getRandomBase64String(BYTE_LENGTH); } return getRandomBase64StringFallback(BYTE_LENGTH); }