UNPKG

@atomist/sdm-pack-aspect

Version:

an Atomist SDM Extension Pack for visualizing drift across an organization

73 lines 2.86 kB
"use strict"; /* * 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. */ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const Score_1 = require("./Score"); function scoreRepos(scorers, repos, weightings) { return __awaiter(this, void 0, void 0, function* () { return Promise.all(repos.map(repo => scoreRepo(scorers, repo, repos, weightings))); }); } exports.scoreRepos = scoreRepos; /** * Score the repo */ function scoreRepo(scorers, repo, allRepos, weightings) { return __awaiter(this, void 0, void 0, function* () { const scores = yield scoresFor(scorers, repo, allRepos); return Object.assign({}, repo, { weightedScore: Score_1.weightedCompositeScore({ scores }, weightings) }); }); } exports.scoreRepo = scoreRepo; /** * Score the given object in the given context * @param scoreFunctions scoring functions. Undefined returns will be ignored * @param {T} toScore what to score * @param {CONTEXT} context * @return {Promise<Scores>} */ function scoresFor(scoreFunctions, toScore, context) { return __awaiter(this, void 0, void 0, function* () { const scores = {}; const runFunctions = scoreFunctions.map(scorer => scorer(toScore, context).then(score => { if (score) { scores[score.name] = score; } })); yield Promise.all(runFunctions); return scores; }); } /** * If merits is negative, reduce * @param {number} merits * @param {FiveStar} startAt * @return {FiveStar} */ function adjustBy(merits, startAt = 5) { const score = startAt + merits; return Math.min(Math.max(score, 1), 5); } exports.adjustBy = adjustBy; //# sourceMappingURL=scoring.js.map