xref: /expo/home/utils/Environment.ts (revision 5a02d672)
1import Constants from 'expo-constants';
2import { Platform } from 'react-native';
3import semver from 'semver';
4
5import * as Kernel from '../kernel/Kernel';
6
7const IOSClientReleaseType = Kernel.iosClientReleaseType;
8
9const IsIOSRestrictedBuild =
10  Platform.OS === 'ios' &&
11  Kernel.iosClientReleaseType === Kernel.ExpoClientReleaseType.APPLE_APP_STORE;
12
13const SupportedExpoSdks = Constants.supportedExpoSdks || [];
14
15// Constants.supportedExpoSdks is not guaranteed to be sorted!
16const sortedSupportedExpoSdks = SupportedExpoSdks.sort();
17
18let lowestSupportedSdkVersion: number = -1;
19
20if (SupportedExpoSdks.length > 0) {
21  lowestSupportedSdkVersion = semver.major(sortedSupportedExpoSdks[0]);
22}
23
24const supportedSdksString = `SDK${
25  SupportedExpoSdks.length === 1 ? ':' : 's:'
26} ${sortedSupportedExpoSdks.map((sdk) => semver.major(sdk)).join(', ')}`;
27
28export default {
29  IOSClientReleaseType,
30  IsIOSRestrictedBuild,
31  lowestSupportedSdkVersion,
32  supportedSdksString,
33};
34