UNPKG

@aws-amplify/cli-internal

Version:
60 lines 2.59 kB
"use strict"; 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