"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
function _chalk() {
const data = _interopRequireDefault(require("chalk"));
_chalk = function () {
return data;
};
return data;
}
function _fp() {
const data = _interopRequireDefault(require("lodash/fp"));
_fp = function () {
return data;
};
return data;
}
function _xdl() {
const data = require("@expo/xdl");
_xdl = function () {
return data;
};
return data;
}
function _CommandError() {
const data = _interopRequireDefault(require("../CommandError"));
_CommandError = function () {
return data;
};
return data;
}
function _log() {
const data = _interopRequireDefault(require("../log"));
_log = function () {
return data;
};
return data;
}
function _urlOpts() {
const data = _interopRequireDefault(require("../urlOpts"));
_urlOpts = function () {
return data;
};
return data;
}
function _printRunInstructionsAsync() {
const data = _interopRequireDefault(require("../printRunInstructionsAsync"));
_printRunInstructionsAsync = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const logArtifactUrl = platform => async (projectDir, options) => {
if (options.publicUrl && !_xdl().UrlUtils.isHttps(options.publicUrl)) {
throw new (_CommandError().default)('INVALID_PUBLIC_URL', '--public-url must be a valid HTTPS URL.');
}
const res = await _xdl().Project.buildAsync(projectDir, {
current: false,
mode: 'status',
...(options.publicUrl ? {
publicUrl: options.publicUrl
} : {})
});
const url = _fp().default.compose(_fp().default.get(['artifacts', 'url']), _fp().default.head, _fp().default.filter(job => platform && job.platform === platform), _fp().default.getOr([], 'jobs'))(res);
if (url) {
_log().default.nested(url);
} else {
throw new Error(`No ${platform} binary file found. Use "expo build:${platform}" to create one.`);
}
};
async function getWebAppUrlAsync(projectDir) {
const webAppUrl = await _xdl().UrlUtils.constructWebAppUrlAsync(projectDir);
if (!webAppUrl) {
throw new (_CommandError().default)('NOT_RUNNING', `Expo web server is not running. Please start it with \`expo start:web\`.`);
}
return webAppUrl;
}
async function action(projectDir, options) {
await _urlOpts().default.optsAsync(projectDir, options);
if ((await _xdl().Project.currentStatus(projectDir)) !== 'running') {
throw new (_CommandError().default)('NOT_RUNNING', `Project is not running. Please start it with \`expo start\`.`);
}
const url = options.web ? await getWebAppUrlAsync(projectDir) : await _xdl().UrlUtils.constructManifestUrlAsync(projectDir);
_log().default.newLine();
_urlOpts().default.printQRCode(url);
(0, _log().default)('Your URL is\n\n' + _chalk().default.underline(url) + '\n');
_log().default.raw(url);
if (!options.web) {
await (0, _printRunInstructionsAsync().default)();
await _urlOpts().default.handleMobileOptsAsync(projectDir, options);
}
}
function _default(program) {
program.command('url [project-dir]').alias('u').option('-w, --web', 'Return the URL of the web app').description('Displays the URL you can use to view your project in Expo').urlOpts().allowOffline().asyncActionProjectDir(action,
/* skipProjectValidation: */
true,
/* skipAuthCheck: */
true);
program.command('url:ipa [project-dir]').option('--public-url <url>', 'The URL of an externally hosted manifest (for self-hosted apps)').description('Displays the standalone iOS binary URL you can use to download your app binary').asyncActionProjectDir(logArtifactUrl('ios'), true);
program.command('url:apk [project-dir]').option('--public-url <url>', 'The URL of an externally hosted manifest (for self-hosted apps)').description('Displays the standalone Android binary URL you can use to download your app binary').asyncActionProjectDir(logArtifactUrl('android'), true);
}
//# sourceMappingURL=../__sourcemaps__/commands/url.js.map