@aws-amplify/cli-internal
Version:
Amplify CLI
60 lines • 2.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveNoEchoParameters = exports.resolveParameters = void 0;
const amplify_cli_core_1 = require("@aws-amplify/amplify-cli-core");
const cfn_template_1 = require("../../_common/cfn-template");
const cfn_tree_walker_1 = require("./cfn-tree-walker");
async function resolveParameters(template, parameters, stackName) {
var _a;
if (!parameters.length && !stackName)
return template;
const paramDefinitions = (_a = template.Parameters) !== null && _a !== void 0 ? _a : {};
const paramMap = new Map();
if (stackName) {
paramMap.set(cfn_template_1.CFN_PSEUDO_PARAMETERS_REF.StackName, stackName);
}
for (const { ParameterKey, ParameterValue } of parameters) {
if (!ParameterKey) {
throw new amplify_cli_core_1.AmplifyError('CFNParameterError', {
message: 'Encountered a stack parameter with no ParameterKey',
});
}
if (!ParameterValue)
continue;
const paramDef = paramDefinitions[ParameterKey];
if (!paramDef)
continue;
if (paramDef.NoEcho)
continue;
const isListType = paramDef.Type === 'CommaDelimitedList' || paramDef.Type === 'List<Number>';
const resolved = isListType ? (ParameterValue.includes(',') ? ParameterValue.split(',') : [ParameterValue]) : ParameterValue;
paramMap.set(ParameterKey, resolved);
}
if (paramMap.size === 0)
return template;
const walked = await (0, cfn_tree_walker_1.walkCfnTree)(template, async (node) => {
if ('Ref' in node && typeof node.Ref === 'string' && Object.keys(node).length === 1) {
const value = paramMap.get(node.Ref);
if (value !== undefined)
return value;
}
return undefined;
});
return walked;
}
exports.resolveParameters = resolveParameters;
function resolveNoEchoParameters(template, parameters) {
var _a;
const paramDefinitions = (_a = template.Parameters) !== null && _a !== void 0 ? _a : {};
return parameters.map((param) => {
if (!param.ParameterKey)
return param;
const paramDef = paramDefinitions[param.ParameterKey];
if (paramDef === null || paramDef === void 0 ? void 0 : paramDef.NoEcho) {
return { ParameterKey: param.ParameterKey, UsePreviousValue: true };
}
return param;
});
}
exports.resolveNoEchoParameters = resolveNoEchoParameters;
//# sourceMappingURL=cfn-parameter-resolver.js.map