"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Context = void 0; function _config() { const data = require("@expo/config"); _config = function () { return data; }; return data; } function _xdl() { const data = require("xdl"); _xdl = function () { return data; }; return data; } function _appleApi() { const data = require("../appleApi"); _appleApi = function () { return data; }; return data; } function _log() { const data = _interopRequireDefault(require("../log")); _log = function () { return data; }; return data; } function _AndroidApi() { const data = _interopRequireDefault(require("./api/AndroidApi")); _AndroidApi = function () { return data; }; return data; } function _IosApi() { const data = _interopRequireDefault(require("./api/IosApi")); _IosApi = function () { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } class Context { constructor() { _defineProperty(this, "_hasProjectContext", false); _defineProperty(this, "_projectDir", void 0); _defineProperty(this, "_user", void 0); _defineProperty(this, "_manifest", void 0); _defineProperty(this, "_apiClient", void 0); _defineProperty(this, "_iosApiClient", void 0); _defineProperty(this, "_androidApiClient", void 0); _defineProperty(this, "_appleCtxOptions", void 0); _defineProperty(this, "_appleCtx", void 0); _defineProperty(this, "_nonInteractive", void 0); } get nonInteractive() { return this._nonInteractive === true; } get user() { return this._user; } get hasProjectContext() { return this._hasProjectContext; } get projectDir() { return this._projectDir; } get projectOwner() { return _xdl().UserManager.getProjectOwner(this.user, this.manifest); } get manifest() { if (!this._manifest) { throw new Error('Manifest (app.json) not initialized.'); } return this._manifest; } get api() { return this._apiClient; } get android() { return this._androidApiClient; } get ios() { return this._iosApiClient; } get appleCtx() { if (!this._appleCtx) { throw new Error('Apple context not initialized.'); } return this._appleCtx; } set manifest(value) { this._manifest = value; } hasAppleCtx() { return !!this._appleCtx; } async ensureAppleCtx() { if (!this._appleCtx) { this._appleCtx = await (0, _appleApi().authenticateAsync)(this._appleCtxOptions); } } logOwnerAndProject() { // Figure out if User A is configuring credentials as admin for User B's project const isProxyUser = this.manifest.owner && this.manifest.owner !== this.user.username; _log().default.log(`Accessing credentials ${isProxyUser ? 'on behalf of' : 'for'} ${this.projectOwner} in project ${this.manifest.slug}`); } async init(projectDir, options = {}) { const { allowAnonymous, appleId, appleIdPassword, teamId, nonInteractive } = options; this._user = (await _xdl().UserManager.getCurrentUserAsync()) || undefined; // User isn't signed it, but needs to be signed in if (!this._user && !allowAnonymous) { this._user = await _xdl().UserManager.ensureLoggedInAsync(); } this._projectDir = projectDir; this._apiClient = _xdl().ApiV2.clientForUser(this.user); this._iosApiClient = new (_IosApi().default)(this.api); this._androidApiClient = new (_AndroidApi().default)(this.api); this._appleCtxOptions = { appleId, appleIdPassword, teamId }; this._nonInteractive = nonInteractive; // try to access project context try { const { exp } = (0, _config().getConfig)(projectDir, { skipSDKVersionRequirement: true }); this._manifest = exp; this._hasProjectContext = true; this.logOwnerAndProject(); } catch { // ignore error // startcredentials manager without project context } } } exports.Context = Context; //# sourceMappingURL=context.js.map