ut-tools
Version:
Build and Release management automation package.
77 lines • 3.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const json_1 = require("@stoplight/json");
const arazzoRuntimeExpressionValidation_1 = (0, tslib_1.__importDefault)(require("../arazzoRuntimeExpressionValidation"));
const resolveReusableParameter = (reusableObject, arazzoSpec) => {
var _a, _b;
const refPath = reusableObject.reference.replace('$components.parameters.', '');
return (_b = (_a = arazzoSpec.components) === null || _a === void 0 ? void 0 : _a.parameters) === null || _b === void 0 ? void 0 : _b[refPath];
};
function isParameter(param) {
if (typeof param === 'object' && param !== null) {
const obj = param;
return typeof obj.name === 'string' && (typeof obj.in === 'string' || obj.in === undefined);
}
return false;
}
function getAllParameters(step, workflow, arazzoSpec) {
const resolvedParameters = [];
const resolvedStepParameters = [];
const processReusableParameter = (param) => {
const paramName = param.reference;
if (!(0, arazzoRuntimeExpressionValidation_1.default)(param.reference, arazzoSpec)) {
return { name: `masked-invalid-reusable-parameter-reference-${paramName}` };
}
const resolvedParam = resolveReusableParameter(param, arazzoSpec);
if (!resolvedParam) {
return { name: `masked-unresolved-parameter-reference-${paramName}` };
}
return resolvedParam;
};
const resolveParameters = (params, targetArray) => {
params.forEach(param => {
let paramToPush;
if ((0, json_1.isPlainObject)(param) && 'reference' in param) {
paramToPush = processReusableParameter(param);
}
else {
paramToPush = param;
}
if (isParameter(paramToPush)) {
const isDuplicate = targetArray.some(existingParam => {
var _a, _b;
return isParameter(existingParam) &&
isParameter(paramToPush) &&
existingParam.name === paramToPush.name &&
((_a = existingParam.in) !== null && _a !== void 0 ? _a : '') === ((_b = paramToPush.in) !== null && _b !== void 0 ? _b : '');
});
if (isDuplicate) {
paramToPush = {
...paramToPush,
name: `masked-duplicate-${String(paramToPush.name)}`,
};
}
targetArray.push(paramToPush);
}
});
};
if (workflow.parameters != null) {
resolveParameters(workflow.parameters, resolvedParameters);
}
if (step.parameters != null) {
resolveParameters(step.parameters, resolvedStepParameters);
}
resolvedStepParameters.forEach(param => {
const existingParamIndex = resolvedParameters.findIndex(p => { var _a, _b; return isParameter(p) && p.name === param.name && ((_a = p.in) !== null && _a !== void 0 ? _a : '') === ((_b = param.in) !== null && _b !== void 0 ? _b : ''); });
if (existingParamIndex !== -1) {
resolvedParameters[existingParamIndex] = param;
}
else {
resolvedParameters.push(param);
}
});
return resolvedParameters;
}
exports.default = getAllParameters;
//# sourceMappingURL=getAllParameters.js.map