UNPKG

1.52 kBJavaScriptView Raw
1import { UnavailabilityError } from '@unimodules/core';
2import { toByteArray } from 'base64-js';
3import ExpoRandom from './ExpoRandom';
4function assertByteCount(value, methodName) {
5 if (typeof value !== 'number' ||
6 isNaN(value) ||
7 Math.floor(value) < 0 ||
8 Math.floor(value) > 1024) {
9 throw new TypeError(`expo-random: ${methodName}(${value}) expected a valid number from range 0...1024`);
10 }
11}
12export function getRandomBytes(byteCount) {
13 assertByteCount(byteCount, 'getRandomBytes');
14 const validByteCount = Math.floor(byteCount);
15 if (ExpoRandom.getRandomBytes) {
16 return ExpoRandom.getRandomBytes(validByteCount);
17 }
18 else if (ExpoRandom.getRandomBase64String) {
19 const base64 = ExpoRandom.getRandomBase64String(validByteCount);
20 return toByteArray(base64);
21 }
22 else {
23 throw new UnavailabilityError('expo-random', 'getRandomBytes');
24 }
25}
26export async function getRandomBytesAsync(byteCount) {
27 assertByteCount(byteCount, 'getRandomBytesAsync');
28 const validByteCount = Math.floor(byteCount);
29 if (ExpoRandom.getRandomBytesAsync) {
30 return await ExpoRandom.getRandomBytesAsync(validByteCount);
31 }
32 else if (ExpoRandom.getRandomBase64StringAsync) {
33 const base64 = await ExpoRandom.getRandomBase64StringAsync(validByteCount);
34 return toByteArray(base64);
35 }
36 else {
37 throw new UnavailabilityError('expo-random', 'getRandomBytesAsync');
38 }
39}
40//# sourceMappingURL=Random.js.map
\No newline at end of file