UNPKG

wuffle

Version:

A multi-repository task board for GitHub issues

248 lines (207 loc) 3.64 kB
export function filterIssueOrPull(issueOrPull) { if (issueOrPull.pull_request) { return filterPull(issueOrPull); } else { return filterIssue(issueOrPull); } } function filterCheckRun(checkRun) { const { status, conclusion, name, html_url } = checkRun; return { status, conclusion, name, html_url }; } function filterStatus(status) { const { context, description, target_url, state } = status; return { context, description, target_url, state }; } export function filterRepository(repository) { const { name, owner, html_url } = repository; return { name, owner: filterUser(owner), html_url }; } export function filterUser(user) { const { login, avatar_url, html_url } = user; return { login, avatar_url, html_url }; } export function filterComment(comment) { const { user, html_url } = comment; return { user: filterUser(user), html_url }; } export function filterLabel(githubLabel) { const { name, color, column_label } = githubLabel; return { name, color, ...(column_label ? { column_label } : {}) }; } function filterLink(link) { const { type, target, ref } = link; return { type, target: filterIssueOrPull(target), ...(ref ? { ref } : { }) }; } export function filterMilestone(githubMilestone) { const { number, title, html_url } = githubMilestone; return { number, title, html_url }; } export function filterReview(review) { const { state, user, html_url } = review; return { state, html_url, user: filterUser(user) }; } export function filterPull(pullRequest) { const { id, key, number, state, title, user, assignees = [], requested_reviewers = [], labels = [], milestone, repository, draft, reviews = [], comments = [], merged, html_url, pull_request, links = [], order, column, check_runs = [], statuses = [] } = pullRequest; return { id, key, number, state, title, user: user ? filterUser(user) : null, assignees: assignees.map(filterUser), requested_reviewers: (requested_reviewers || []).map(filterUser), labels: labels.map(filterLabel), comments: Array.isArray(comments) ? comments.map(filterComment) : [], milestone: milestone ? filterMilestone(milestone) : null, reviews: reviews.map(filterReview), draft, merged, repository: filterRepository(repository), html_url, pull_request, links: links.map(filterLink), order, column, statuses: statuses.map(filterStatus), check_runs: check_runs.map(filterCheckRun) }; } export function filterIssue(issue) { const { id, key, number, state, state_reason = null, title, user, assignees = [], labels = [], milestone, html_url, repository, pull_request, comments = [], links = [], order, column } = issue; return { id, key, number, state, state_reason, title, user: user ? filterUser(user) : null, assignees: assignees.map(filterUser), labels: labels.map(filterLabel), milestone: milestone ? filterMilestone(milestone) : null, repository: filterRepository(repository), comments: Array.isArray(comments) ? comments.map(filterComment) : [], pull_request, html_url, links: links.map(filterLink), order, column }; }