@atomist/sdm
Version:
Atomist Software Delivery Machine SDK
60 lines • 2.59 kB
JavaScript
;
/*
* Copyright © 2019 Atomist, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.UnanimousGoalApprovalRequestVoteDecisionManager = exports.GoalApprovalRequestVote = void 0;
const logger_1 = require("@atomist/automation-client/lib/util/logger");
/**
* Represents a vote on a approval request
*/
var GoalApprovalRequestVote;
(function (GoalApprovalRequestVote) {
/**
* Voter decided to abstain from voting
*/
GoalApprovalRequestVote["Abstain"] = "abstain";
/**
* Voter decided to grant the approval request
*/
GoalApprovalRequestVote["Granted"] = "granted";
/**
* Voter decided to deny the approval request
*/
GoalApprovalRequestVote["Denied"] = "denied";
})(GoalApprovalRequestVote = exports.GoalApprovalRequestVote || (exports.GoalApprovalRequestVote = {}));
/**
* Default GoalApprovalRequestVoteDecisionManager that decides unanimously on votes.
* One denied vote will deny the approval request; all granted votes with grant the request.
* All other votes with result in an abstained approval request.
* @param votes
*/
const UnanimousGoalApprovalRequestVoteDecisionManager = (...votes) => {
logger_1.logger.debug(`Deciding on provided votes '${votes.map(v => v.vote).join(", ")}'`);
if (votes.some(v => v.vote === GoalApprovalRequestVote.Denied)) {
logger_1.logger.debug("At least one denied vote. Denying approval request");
return GoalApprovalRequestVote.Denied;
}
else if (!votes.some(v => v.vote !== GoalApprovalRequestVote.Granted)) {
logger_1.logger.debug("All votes granted. Granting approval request");
return GoalApprovalRequestVote.Granted;
}
else {
logger_1.logger.debug("Some abstain and granted votes. Abstaining approval request");
return GoalApprovalRequestVote.Abstain;
}
};
exports.UnanimousGoalApprovalRequestVoteDecisionManager = UnanimousGoalApprovalRequestVoteDecisionManager;
//# sourceMappingURL=goalApprovalRequestVote.js.map