"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.readAsync = readAsync; exports.setAsync = setAsync; exports.readPackagerInfoAsync = readPackagerInfoAsync; exports.setPackagerInfoAsync = setPackagerInfoAsync; exports.dotExpoProjectDirectory = dotExpoProjectDirectory; exports.dotExpoProjectDirectoryExists = dotExpoProjectDirectoryExists; exports.getPackagerOptsAsync = getPackagerOptsAsync; function _defaults() { const data = _interopRequireDefault(require("lodash/defaults")); _defaults = function () { return data; }; return data; } function _jsonFile() { const data = _interopRequireDefault(require("@expo/json-file")); _jsonFile = function () { return data; }; return data; } function _fsExtra() { const data = _interopRequireDefault(require("fs-extra")); _fsExtra = function () { return data; }; return data; } function _path() { const data = _interopRequireDefault(require("path")); _path = function () { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const projectSettingsFile = 'settings.json'; const projectSettingsDefaults = { hostType: 'lan', lanType: 'ip', dev: true, minify: false, urlRandomness: null, https: false }; const packagerInfoFile = 'packager-info.json'; function projectSettingsJsonFile(projectRoot) { return new (_jsonFile().default)(_path().default.join(dotExpoProjectDirectory(projectRoot), projectSettingsFile)); } function packagerInfoJsonFile(projectRoot) { return new (_jsonFile().default)(_path().default.join(dotExpoProjectDirectory(projectRoot), packagerInfoFile)); } async function readAsync(projectRoot) { let projectSettings; try { projectSettings = await projectSettingsJsonFile(projectRoot).readAsync(); } catch (e) { projectSettings = await projectSettingsJsonFile(projectRoot).writeAsync(projectSettingsDefaults); } migrateDeprecatedSettings(projectSettings); // Set defaults for any missing fields (0, _defaults().default)(projectSettings, projectSettingsDefaults); return projectSettings; } function migrateDeprecatedSettings(projectSettings) { if (projectSettings.hostType === 'ngrok') { // 'ngrok' is deprecated projectSettings.hostType = 'tunnel'; } if (projectSettings.urlType) { // urlType is deprecated as a project setting delete projectSettings.urlType; } if ('strict' in projectSettings) { // strict mode is not supported at the moment delete projectSettings.strict; } } async function setAsync(projectRoot, json) { try { return await projectSettingsJsonFile(projectRoot).mergeAsync(json, { cantReadFileDefault: projectSettingsDefaults }); } catch (e) { return await projectSettingsJsonFile(projectRoot).writeAsync((0, _defaults().default)(json, projectSettingsDefaults)); } } async function readPackagerInfoAsync(projectRoot) { try { return await packagerInfoJsonFile(projectRoot).readAsync({ cantReadFileDefault: {} }); } catch (e) { return await packagerInfoJsonFile(projectRoot).writeAsync({}); } } async function setPackagerInfoAsync(projectRoot, json) { try { return await packagerInfoJsonFile(projectRoot).mergeAsync(json, { cantReadFileDefault: {} }); } catch (e) { return await packagerInfoJsonFile(projectRoot).writeAsync(json); } } function dotExpoProjectDirectory(projectRoot) { let dirPath = _path().default.join(projectRoot, '.expo'); try { // move .exponent to .expo let oldDirPath = _path().default.join(projectRoot, '.exponent'); if (_fsExtra().default.statSync(oldDirPath).isDirectory()) { _fsExtra().default.renameSync(oldDirPath, dirPath); } } catch (e) {// no old directory, continue } _fsExtra().default.mkdirpSync(dirPath); return dirPath; } function dotExpoProjectDirectoryExists(projectRoot) { let dirPath = _path().default.join(projectRoot, '.expo'); try { if (_fsExtra().default.statSync(dirPath).isDirectory()) { return true; } } catch (e) {// file doesn't exist } return false; } async function getPackagerOptsAsync(projectRoot) { let projectSettings = await readAsync(projectRoot); return projectSettings; } //# sourceMappingURL=__sourcemaps__/ProjectSettings.js.map