"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.generate = generate;
exports.determineMissingCredentials = determineMissingCredentials;
function _ora() {
const data = _interopRequireDefault(require("ora"));
_ora = function () {
return data;
};
return data;
}
function _chalk() {
const data = _interopRequireDefault(require("chalk"));
_chalk = function () {
return data;
};
return data;
}
function _intersection() {
const data = _interopRequireDefault(require("lodash/intersection"));
_intersection = function () {
return data;
};
return data;
}
function constants() {
const data = _interopRequireWildcard(require("./constants"));
constants = function () {
return data;
};
return data;
}
function _log() {
const data = _interopRequireDefault(require("../../../../log"));
_log = function () {
return data;
};
return data;
}
function apple() {
const data = _interopRequireWildcard(require("../appleApi"));
apple = function () {
return data;
};
return data;
}
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)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
async function generate(appleCtx, credentialsToGenerate, metadata) {
if (!credentialsToGenerate || credentialsToGenerate.length === 0) {
return {};
}
await apple().ensureAppExists(appleCtx, {
enablePushNotifications: true
});
(0, _log().default)(`We're going to generate:`);
credentialsToGenerate.forEach(type => {
(0, _log().default)(`- ${constants().CREDENTIALS[type].name}`);
});
let newCredentials = {};
for (const id of credentialsToGenerate) {
const {
name
} = constants().CREDENTIALS[id];
const spinner = (0, _ora().default)(`Generating ${name}...`).start();
try {
const generated = await _create(appleCtx, id, metadata);
spinner.succeed(`Generated ${name}`);
newCredentials = { ...newCredentials,
...generated
};
} catch (err) {
spinner.fail(`Failed to generate ${name}`);
throw err;
}
}
return newCredentials;
}
async function _create(appleCtx, type, metadata) {
const manager = apple().createManagers(appleCtx)[type];
return await manager.create(metadata);
}
function determineMissingCredentials(existingCredentials = {}) {
const existingCredentialsKeys = Object.keys(existingCredentials);
const missing = constants().REQUIRED_CREDENTIALS.reduce((acc, ruleOrCondition) => {
const id = _applyRuleOrCondition(existingCredentialsKeys, ruleOrCondition);
if (id) {
acc.push(id);
}
return acc;
}, []);
return missing.length === 0 ? null : missing;
}
function _applyRuleOrCondition(keys, ruleOrCondition) {
if ('or' in ruleOrCondition) {
return _applyOrCondition(keys, ruleOrCondition.or);
} else {
return _applyRule(keys, ruleOrCondition);
}
}
function _applyOrCondition(keys, condition) {
const applyingRules = condition.filter(rule => _doCredentialsExist(keys, rule));
if (applyingRules.length === 0) {
const notDeprecatedRule = condition.find(rule => !rule.deprecated);
return notDeprecatedRule.id;
} else if (applyingRules.length === 1) {
const {
deprecated,
name,
migrationDocs
} = applyingRules[0];
if (deprecated) {
_log().default.warn(`You're using deprecated ${name}. Read our docs to learn how to use more modern solution. ${migrationDocs ? _chalk().default.underline(migrationDocs) : ''}`);
}
return null;
}
}
const _applyRule = (keys, rule) => !_doCredentialsExist(keys, rule) ? rule.id : null;
function _doCredentialsExist(keys, rule) {
const common = (0, _intersection().default)(keys, rule.required);
return rule.required.length === common.length;
}
//# sourceMappingURL=../../../../__sourcemaps__/commands/build/ios/credentials/generate.js.map