ut-tools
Version:
Build and Release management automation package.
67 lines • 2.96 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"));
function isFailureAction(action) {
return typeof action === 'object' && action !== null && 'name' in action && 'type' in action;
}
function processReusableAction(action, arazzoSpec) {
var _a, _b;
const actionName = action.reference;
if (!action.reference.startsWith('$components.failureActions.')) {
return { name: `masked-invalid-reusable-failure-action-reference-${actionName}`, type: '' };
}
if (!(0, arazzoRuntimeExpressionValidation_1.default)(action.reference, arazzoSpec)) {
return { name: `masked-invalid-reusable-failure-action-reference-${actionName}`, type: '' };
}
const refPath = action.reference.replace('$components.failureActions.', '');
const resolvedAction = (_b = (_a = arazzoSpec.components) === null || _a === void 0 ? void 0 : _a.failureActions) === null || _b === void 0 ? void 0 : _b[refPath];
if (!resolvedAction) {
return { name: `masked-unresolved-failure-action-reference-${actionName}`, type: '' };
}
return resolvedAction;
}
function getAllFailureActions(step, workflow, arazzoSpec) {
const resolvedFailureActions = [];
const resolvedStepFailureActions = [];
const resolveActions = (actions, targetArray) => {
actions.forEach(action => {
let actionToPush;
if ((0, json_1.isPlainObject)(action) && 'reference' in action) {
actionToPush = processReusableAction(action, arazzoSpec);
}
else {
actionToPush = action;
}
if (isFailureAction(actionToPush)) {
const isDuplicate = targetArray.some(existingAction => existingAction.name === actionToPush.name);
if (isDuplicate) {
actionToPush = {
...actionToPush,
name: `masked-duplicate-${actionToPush.name}`,
};
}
targetArray.push(actionToPush);
}
});
};
if (workflow.failureActions) {
resolveActions(workflow.failureActions, resolvedFailureActions);
}
if (step.onFailure) {
resolveActions(step.onFailure, resolvedStepFailureActions);
}
resolvedStepFailureActions.forEach(action => {
const existingActionIndex = resolvedFailureActions.findIndex(a => a.name === action.name);
if (existingActionIndex !== -1) {
resolvedFailureActions[existingActionIndex] = action;
}
else {
resolvedFailureActions.push(action);
}
});
return resolvedFailureActions;
}
exports.default = getAllFailureActions;
//# sourceMappingURL=getAllFailureActions.js.map