in lib/utils/milestones.js [122:160]
export function setReviewerDetails(issue) {
issue.reviewers = [];
const reviewersListSeen = [];
if (issue.state === 'CLOSED') {
issue.timelineItems.edges.forEach((timelineItem) => {
if (!timelineItem.event.source.reviews) {
// This is not a pull request item.
return;
}
const { bodyText } = timelineItem.event.source;
const issueTestRx = new RegExp(`Fix(?:es)? #${issue.number}`, 'i');
// Only add the review if the PR contains a `Fixes #num` or `Fix #num` line that
// matches the original issue.
if (issueTestRx.test(bodyText)) {
timelineItem.event.source.reviews.edges.forEach(
({ review: { author } }) => {
if (!reviewersListSeen.includes(author.login)) {
reviewersListSeen.push(author.login);
issue.reviewers.push({
author,
prLink: timelineItem.event.source.permalink,
});
}
},
);
}
});
}
// Quick and dirty way to provide a sortable key for reviewers.
issue.reviewersNames = '';
if (issue.reviewers.length) {
issue.reviewersNames = issue.reviewers
.map((review) => review.author.login)
.join('-');
}
}