1*082815dcSEvan Baconimport type { ExpoConfig } from '@expo/config-types';
2*082815dcSEvan Baconimport semver from 'semver';
3*082815dcSEvan Bacon
4*082815dcSEvan Baconexport function gteSdkVersion(exp: Pick<ExpoConfig, 'sdkVersion'>, sdkVersion: string): boolean {
5*082815dcSEvan Bacon  if (!exp.sdkVersion) {
6*082815dcSEvan Bacon    return false;
7*082815dcSEvan Bacon  }
8*082815dcSEvan Bacon
9*082815dcSEvan Bacon  if (exp.sdkVersion === 'UNVERSIONED') {
10*082815dcSEvan Bacon    return true;
11*082815dcSEvan Bacon  }
12*082815dcSEvan Bacon
13*082815dcSEvan Bacon  try {
14*082815dcSEvan Bacon    return semver.gte(exp.sdkVersion, sdkVersion);
15*082815dcSEvan Bacon  } catch {
16*082815dcSEvan Bacon    throw new Error(`${exp.sdkVersion} is not a valid version. Must be in the form of x.y.z`);
17*082815dcSEvan Bacon  }
18*082815dcSEvan Bacon}
19*082815dcSEvan Bacon
20*082815dcSEvan Baconexport function lteSdkVersion(exp: Pick<ExpoConfig, 'sdkVersion'>, sdkVersion: string): boolean {
21*082815dcSEvan Bacon  if (!exp.sdkVersion) {
22*082815dcSEvan Bacon    return false;
23*082815dcSEvan Bacon  }
24*082815dcSEvan Bacon
25*082815dcSEvan Bacon  if (exp.sdkVersion === 'UNVERSIONED') {
26*082815dcSEvan Bacon    return false;
27*082815dcSEvan Bacon  }
28*082815dcSEvan Bacon
29*082815dcSEvan Bacon  try {
30*082815dcSEvan Bacon    return semver.lte(exp.sdkVersion, sdkVersion);
31*082815dcSEvan Bacon  } catch {
32*082815dcSEvan Bacon    throw new Error(`${exp.sdkVersion} is not a valid version. Must be in the form of x.y.z`);
33*082815dcSEvan Bacon  }
34*082815dcSEvan Bacon}
35