GT2/GT2-Android/node_modules/xdl/build/project/ProjectUtils.js

335 lines
10 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.readConfigJsonAsync = exports.setCustomConfigPath = exports.readExpRcAsync = exports.configFilenameAsync = exports.fileExistsAsync = undefined;
let fileExistsAsync = exports.fileExistsAsync = (() => {
var _ref = _asyncToGenerator(function* (file) {
try {
return (yield (_fs2 || _load_fs()).default.stat(file)).isFile();
} catch (e) {
return false;
}
});
return function fileExistsAsync(_x) {
return _ref.apply(this, arguments);
};
})();
let configFilenameAsync = exports.configFilenameAsync = (() => {
var _ref2 = _asyncToGenerator(function* (projectRoot) {
// we should always default to exp.json, and only use app.json if it exists
const appJsonExists = yield fileExistsAsync(_path.default.join(projectRoot, 'app.json'));
const expJsonExists = yield fileExistsAsync(_path.default.join(projectRoot, 'exp.json'));
if (appJsonExists) {
return 'app.json';
} else if (expJsonExists || (_Config || _load_Config()).default.developerTool !== 'crna') {
return 'exp.json';
} else {
return 'app.json';
}
});
return function configFilenameAsync(_x2) {
return _ref2.apply(this, arguments);
};
})();
let readExpRcAsync = exports.readExpRcAsync = (() => {
var _ref3 = _asyncToGenerator(function* (projectRoot) {
const expRcPath = _path.default.join(projectRoot, '.exprc');
if (!_fs.default.existsSync(expRcPath)) {
return {};
}
try {
return yield new (_jsonFile || _load_jsonFile()).default(expRcPath, { json5: true }).readAsync();
} catch (e) {
logError(projectRoot, 'expo', `Error parsing JSON file: ${e.toString()}`);
return {};
}
});
return function readExpRcAsync(_x3) {
return _ref3.apply(this, arguments);
};
})();
let setCustomConfigPath = exports.setCustomConfigPath = (() => {
var _ref4 = _asyncToGenerator(function* (projectRoot, configPath) {
customConfigPaths[projectRoot] = configPath;
});
return function setCustomConfigPath(_x4, _x5) {
return _ref4.apply(this, arguments);
};
})();
let readConfigJsonAsync = exports.readConfigJsonAsync = (() => {
var _ref5 = _asyncToGenerator(function* (projectRoot) {
let exp;
let pkg;
let configPath, configName;
if (customConfigPaths[projectRoot]) {
configPath = customConfigPaths[projectRoot];
configName = _path.default.basename(configPath);
} else {
configName = yield configFilenameAsync(projectRoot);
configPath = _path.default.join(projectRoot, configName);
}
try {
exp = yield new (_jsonFile || _load_jsonFile()).default(configPath, { json5: true }).readAsync();
if (configName === 'app.json') {
// if we're not using exp.json, then we've stashed everything under an expo key
// this is only for app.json at time of writing
exp = exp.expo;
}
} catch (e) {
if (e.isJsonFileError) {
// TODO: add error codes to json-file
if (e.message.startsWith('Error parsing JSON file')) {
logError(projectRoot, 'expo', `Error parsing JSON file: ${e.cause.toString()}`);
return { exp: null, pkg: null };
}
}
// exp missing. might be in package.json
}
try {
const packageJsonPath = exp && exp.nodeModulesPath ? _path.default.join(_path.default.resolve(projectRoot, exp.nodeModulesPath), 'package.json') : _path.default.join(projectRoot, 'package.json');
pkg = yield new (_jsonFile || _load_jsonFile()).default(packageJsonPath).readAsync();
} catch (e) {
if (e.isJsonFileError) {
// TODO: add error codes to json-file
if (e.message.startsWith('Error parsing JSON file')) {
logError(projectRoot, 'expo', `Error parsing JSON file: ${e.cause.toString()}`);
return { exp: null, pkg: null };
}
}
// pkg missing
}
// Easiest bail-out: package.json is missing
if (!pkg) {
logError(projectRoot, 'expo', `Error: Can't find package.json`);
return { exp: null, pkg: null };
}
// Grab our exp config from package.json (legacy) or exp.json
if (!exp && pkg.exp) {
exp = pkg.exp;
logError(projectRoot, 'expo', `Error: Move your "exp" config from package.json to exp.json.`);
} else if (!exp && !pkg.exp) {
logError(projectRoot, 'expo', `Error: Missing ${configName}. See https://docs.expo.io/`);
return { exp: null, pkg: null };
}
// fill any required fields we might care about
// TODO(adam) decide if there are other fields we want to provide defaults for
if (exp && !exp.name) {
exp.name = pkg.name;
}
if (exp && !exp.slug) {
exp.slug = (0, (_slugify || _load_slugify()).default)(exp.name.toLowerCase());
}
if (exp && !exp.version) {
exp.version = pkg.version;
}
return { exp, pkg };
});
return function readConfigJsonAsync(_x6) {
return _ref5.apply(this, arguments);
};
})();
exports.logWithLevel = logWithLevel;
exports.logDebug = logDebug;
exports.logInfo = logInfo;
exports.logError = logError;
exports.logWarning = logWarning;
exports.clearNotification = clearNotification;
exports.attachLoggerStream = attachLoggerStream;
var _fs = _interopRequireDefault(require('fs'));
var _fs2;
function _load_fs() {
return _fs2 = _interopRequireDefault(require('mz/fs'));
}
var _path = _interopRequireDefault(require('path'));
var _jsonFile;
function _load_jsonFile() {
return _jsonFile = _interopRequireDefault(require('@expo/json-file'));
}
var _slugify;
function _load_slugify() {
return _slugify = _interopRequireDefault(require('slugify'));
}
var _Analytics;
function _load_Analytics() {
return _Analytics = _interopRequireWildcard(require('../Analytics'));
}
var _Config;
function _load_Config() {
return _Config = _interopRequireDefault(require('../Config'));
}
var _Logger;
function _load_Logger() {
return _Logger = _interopRequireDefault(require('../Logger'));
}
var _state;
function _load_state() {
return _state = _interopRequireWildcard(require('../state'));
}
var _Sentry;
function _load_Sentry() {
return _Sentry = _interopRequireWildcard(require('../Sentry'));
}
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
const MAX_MESSAGE_LENGTH = 200;
let _projectRootToLogger = {};
function _getLogger(projectRoot) {
let logger = _projectRootToLogger[projectRoot];
if (!logger) {
logger = (_Logger || _load_Logger()).default.child({
type: 'project',
project: _path.default.resolve(projectRoot)
});
_projectRootToLogger[projectRoot] = logger;
}
return logger;
}
function logWithLevel(projectRoot, level, object, msg, id) {
let useRedux = id && (_Config || _load_Config()).default.useReduxNotifications;
let logger = _getLogger(projectRoot);
switch (level) {
case 'debug':
logger.debug(object, msg);
break;
case 'info':
logger.info(object, msg);
break;
case 'warn':
if (!useRedux) {
logger.warn(object, msg);
}
break;
case 'error':
if (!useRedux) {
logger.error(object, msg);
}
break;
default:
logger.debug(object, msg);
break;
}
if (useRedux && (level === 'warn' || level === 'error')) {
(_state || _load_state()).store.dispatch((_state || _load_state()).actions.notifications.add(projectRoot, id, msg, projectRoot, level));
}
}
function logDebug(projectRoot, tag, message, id) {
_getLogger(projectRoot).debug({ tag }, message.toString());
}
function logInfo(projectRoot, tag, message, id) {
if (id && (_Config || _load_Config()).default.useReduxNotifications) {
(_state || _load_state()).store.dispatch((_state || _load_state()).actions.notifications.add(projectRoot, id, message, tag, 'info'));
} else {
_getLogger(projectRoot).info({ tag }, message.toString());
}
}
function logError(projectRoot, tag, message, id) {
if (id && (_Config || _load_Config()).default.useReduxNotifications) {
(_state || _load_state()).store.dispatch((_state || _load_state()).actions.notifications.add(projectRoot, id, message, tag, 'error'));
} else {
_getLogger(projectRoot).error({ tag }, message.toString());
}
let truncatedMessage = message.toString();
if (truncatedMessage.length > MAX_MESSAGE_LENGTH) {
truncatedMessage = truncatedMessage.substring(0, MAX_MESSAGE_LENGTH);
}
// temporarily remove sentry until we can trim events
// send error to Sentry
// Sentry.logError(message.toString(), {
// tags: { tag },
// });
}
function logWarning(projectRoot, tag, message, id) {
if (id && (_Config || _load_Config()).default.useReduxNotifications) {
(_state || _load_state()).store.dispatch((_state || _load_state()).actions.notifications.add(projectRoot, id, message, tag, 'warn'));
} else {
_getLogger(projectRoot).warn({ tag }, message.toString());
}
let truncatedMessage = message.toString();
if (truncatedMessage.length > MAX_MESSAGE_LENGTH) {
truncatedMessage = truncatedMessage.substring(0, MAX_MESSAGE_LENGTH);
}
(_Analytics || _load_Analytics()).logEvent('Project Warning', {
projectRoot,
tag,
message: truncatedMessage
});
}
function clearNotification(projectRoot, id) {
if ((_Config || _load_Config()).default.useReduxNotifications) {
(_state || _load_state()).store.dispatch((_state || _load_state()).actions.notifications.clear(projectRoot, id));
}
}
function attachLoggerStream(projectRoot, stream) {
_getLogger(projectRoot).addStream(stream);
}
let customConfigPaths = {};
//# sourceMappingURL=../__sourcemaps__/project/ProjectUtils.js.map