"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.versionsAsync = versionsAsync; exports.sdkVersionsAsync = sdkVersionsAsync; exports.setVersionsAsync = setVersionsAsync; exports.gteSdkVersion = gteSdkVersion; exports.lteSdkVersion = lteSdkVersion; exports.parseSdkVersionFromTag = parseSdkVersionFromTag; exports.newestSdkVersionAsync = newestSdkVersionAsync; exports.oldestSupportedMajorVersionAsync = oldestSupportedMajorVersionAsync; exports.facebookReactNativeVersionsAsync = facebookReactNativeVersionsAsync; exports.facebookReactNativeVersionToExpoVersionAsync = facebookReactNativeVersionToExpoVersionAsync; exports.canTurtleBuildSdkVersion = canTurtleBuildSdkVersion; function _path() { const data = _interopRequireDefault(require("path")); _path = function () { return data; }; return data; } function _forEach() { const data = _interopRequireDefault(require("lodash/forEach")); _forEach = function () { return data; }; return data; } function _pickBy() { const data = _interopRequireDefault(require("lodash/pickBy")); _pickBy = function () { return data; }; return data; } function _get() { const data = _interopRequireDefault(require("lodash/get")); _get = function () { return data; }; return data; } function _semver() { const data = _interopRequireDefault(require("semver")); _semver = function () { return data; }; return data; } function _ApiV() { const data = _interopRequireDefault(require("./ApiV2")); _ApiV = function () { return data; }; return data; } function _FsCache() { const data = require("./tools/FsCache"); _FsCache = function () { return data; }; return data; } function _XDLError() { const data = _interopRequireDefault(require("./XDLError")); _XDLError = function () { return data; }; return data; } function _User() { const data = _interopRequireDefault(require("./User")); _User = function () { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } async function versionsAsync() { const api = new (_ApiV().default)(); const versionCache = new (_FsCache().Cacher)(() => api.getAsync('versions/latest'), 'versions.json', 0, _path().default.join(__dirname, '../caches/versions.json')); return await versionCache.getAsync(); } async function sdkVersionsAsync() { const { sdkVersions } = await versionsAsync(); return sdkVersions; } async function setVersionsAsync(value) { const user = await _User().default.getCurrentUserAsync(); const api = _ApiV().default.clientForUser(user); const secret = process.env.EXPO_VERSIONS_SECRET; if (!secret) throw new Error('Versions.setVersionsAsync: EXPO_VERSIONS_SECRET environment variable is required'); await api.postAsync('versions/update', { value: value, secret }); } function gteSdkVersion(expJson, sdkVersion) { if (!expJson.sdkVersion) { return false; } if (expJson.sdkVersion === 'UNVERSIONED') { return true; } try { return _semver().default.gte(expJson.sdkVersion, sdkVersion); } catch (e) { throw new (_XDLError().default)('INVALID_VERSION', `${expJson.sdkVersion} is not a valid version. Must be in the form of x.y.z`); } } function lteSdkVersion(expJson, sdkVersion) { if (!expJson.sdkVersion) { return false; } if (expJson.sdkVersion === 'UNVERSIONED') { return false; } try { return _semver().default.lte(expJson.sdkVersion, sdkVersion); } catch (e) { throw new (_XDLError().default)('INVALID_VERSION', `${expJson.sdkVersion} is not a valid version. Must be in the form of x.y.z`); } } function parseSdkVersionFromTag(tag) { if (tag.startsWith('sdk-')) { return tag.substring(4); } return tag; } async function newestSdkVersionAsync() { let sdkVersions = await sdkVersionsAsync(); let result = null; let highestMajorVersion = '0.0.0'; (0, _forEach().default)(sdkVersions, (value, key) => { if (_semver().default.major(key) > _semver().default.major(highestMajorVersion)) { highestMajorVersion = key; result = value; } }); return { version: highestMajorVersion, data: result }; } async function oldestSupportedMajorVersionAsync() { const sdkVersions = await sdkVersionsAsync(); const supportedVersions = (0, _pickBy().default)(sdkVersions, v => !v.isDeprecated); let versionNumbers = []; (0, _forEach().default)(supportedVersions, (value, key) => { versionNumbers.push(_semver().default.major(key)); }); return Math.min(...versionNumbers); } async function facebookReactNativeVersionsAsync() { let sdkVersions = await sdkVersionsAsync(); let facebookReactNativeVersions = new Set(); (0, _forEach().default)(sdkVersions, value => { if (value.facebookReactNativeVersion) { facebookReactNativeVersions.add(value.facebookReactNativeVersion); } }); return Array.from(facebookReactNativeVersions); } async function facebookReactNativeVersionToExpoVersionAsync(facebookReactNativeVersion) { if (!_semver().default.valid(facebookReactNativeVersion)) { throw new (_XDLError().default)('INVALID_VERSION', `${facebookReactNativeVersion} is not a valid version. Must be in the form of x.y.z`); } let sdkVersions = await sdkVersionsAsync(); let currentSdkVersion = null; (0, _forEach().default)(sdkVersions, (value, key) => { if (_semver().default.major(value.facebookReactNativeVersion) === _semver().default.major(facebookReactNativeVersion) && _semver().default.minor(value.facebookReactNativeVersion) === _semver().default.minor(facebookReactNativeVersion) && (!currentSdkVersion || _semver().default.gt(key, currentSdkVersion))) { currentSdkVersion = key; } }); return currentSdkVersion; } async function canTurtleBuildSdkVersion(sdkVersion, platform) { if (sdkVersion === 'UNVERSIONED') { return true; } if (_semver().default.valid(sdkVersion) == null) { throw new (_XDLError().default)('INVALID_VERSION', `"${sdkVersion}" is not a valid version. Must be in the form of x.y.z`); } const supportedVersions = await getSdkVersionsSupportedByTurtle(); const supportedVersionsForPlatform = (0, _get().default)(supportedVersions, platform, []); return supportedVersionsForPlatform.indexOf(sdkVersion) !== -1; } async function getSdkVersionsSupportedByTurtle() { const api = new (_ApiV().default)(); return await api.getAsync('standalone-build/supportedSDKVersions'); } //# sourceMappingURL=__sourcemaps__/Versions.js.map