@expo/cli
Version:
137 lines (136 loc) • 4.82 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
getExpoGoVersionEntryAsync: ()=>getExpoGoVersionEntryAsync,
downloadExpoGoAsync: ()=>downloadExpoGoAsync
});
function _getUserState() {
const data = require("@expo/config/build/getUserState");
_getUserState = function() {
return data;
};
return data;
}
function _path() {
const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
_path = function() {
return data;
};
return data;
}
function _semver() {
const data = require("semver");
_semver = function() {
return data;
};
return data;
}
const _downloadAppAsync = require("./downloadAppAsync");
const _errors = require("./errors");
const _ora = require("./ora");
const _profile = require("./profile");
const _progress = require("./progress");
const _getVersions = require("../api/getVersions");
const _log = require("../log");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const debug = require("debug")("expo:utils:downloadExpoGo");
const platformSettings = {
ios: {
versionsKey: "iosClientUrl",
getFilePath: (filename)=>_path().default.join((0, _getUserState().getExpoHomeDirectory)(), "ios-simulator-app-cache", `${filename}.app`),
shouldExtractResults: true
},
android: {
versionsKey: "androidClientUrl",
getFilePath: (filename)=>_path().default.join((0, _getUserState().getExpoHomeDirectory)(), "android-apk-cache", `${filename}.apk`),
shouldExtractResults: false
}
};
async function getExpoGoVersionEntryAsync(sdkVersion) {
const { sdkVersions: versions } = await (0, _getVersions.getVersionsAsync)();
let version;
if (sdkVersion.toUpperCase() === "UNVERSIONED") {
// find the latest version
const latestVersionKey = Object.keys(versions).reduce((a, b)=>{
if ((0, _semver().gt)(b, a)) {
return b;
}
return a;
}, "0.0.0");
_log.Log.warn(`Downloading the latest Expo Go client (${latestVersionKey}). This will not fully conform to UNVERSIONED.`);
version = versions[latestVersionKey];
} else {
version = versions[sdkVersion];
}
if (!version) {
throw new _errors.CommandError(`Unable to find a version of Expo Go for SDK ${sdkVersion}`);
}
return version;
}
async function downloadExpoGoAsync(platform, { url , sdkVersion }) {
const { getFilePath , versionsKey , shouldExtractResults } = platformSettings[platform];
const spinner = (0, _ora.ora)({
text: "Fetching Expo Go",
color: "white"
}).start();
let bar = null;
try {
if (!url) {
const version = await getExpoGoVersionEntryAsync(sdkVersion);
debug(`Installing Expo Go version for SDK ${sdkVersion} at URL: ${version[versionsKey]}`);
url = version[versionsKey];
}
} catch (error) {
spinner.fail();
throw error;
}
const filename = _path().default.parse(url).name;
try {
const outputPath = getFilePath(filename);
debug(`Downloading Expo Go from "${url}" to "${outputPath}".`);
debug(`The requested copy of Expo Go might already be cached in: "${(0, _getUserState().getExpoHomeDirectory)()}". You can disable the cache with EXPO_NO_CACHE=1`);
await (0, _profile.profile)(_downloadAppAsync.downloadAppAsync)({
url,
// Save all encrypted cache data to `~/.expo/expo-go`
cacheDirectory: "expo-go",
outputPath,
extract: shouldExtractResults,
onProgress ({ progress , total }) {
if (progress && total) {
if (!bar) {
if (spinner.isSpinning) {
spinner.stop();
}
bar = (0, _progress.createProgressBar)("Downloading the Expo Go app [:bar] :percent :etas", {
width: 64,
total: 100,
// clear: true,
complete: "=",
incomplete: " "
});
} else {
bar.update(progress, total);
}
}
}
});
return outputPath;
} finally{
spinner.stop();
// @ts-expect-error
bar == null ? void 0 : bar.terminate();
}
}
//# sourceMappingURL=downloadExpoGoAsync.js.map
;