function buildMyWork(data) { const login = data.user?.login || ''; const issues = (data.issues || []).map((item) => ({ ...item, kind: 'issue' })); const pulls = (data.pull_requests || []).map((item) => ({ ...item, kind: 'pull' })); const priorityLabels = ['p0', 'priority-high', 'critical']; return issues.concat(pulls).map((item) => { const labels = item.labels || []; const priorityLabel = labels.find((label) => priorityLabels.includes(String(label).toLowerCase()) ); const assigned = (item.assignees || []).includes(login); const isReview = (item.work_reasons || []).includes('review_requested'); return { ...item, key: (item.repository || 'unknown') + '#' + item.number, is_review: isReview, is_assigned: assigned, reason: priorityLabel ? priorityLabel + ' priority' : (isReview ? 'Needs your review' : (assigned ? 'Assigned to you' : 'Open work')), _priority: priorityLabel ? 0 : (isReview ? 1 : (assigned ? 2 : 3)), }; }).sort((left, right) => left._priority - right._priority || String(right.updated_at || '').localeCompare(String(left.updated_at || '')) || left.key.localeCompare(right.key) ).map(({ _priority, ...item }) => item); } function filterMyWork(items, selectedFilter) { if (selectedFilter === 'all') return items; if (selectedFilter === 'review') return items.filter((item) => item.is_review); return items.filter((item) => item.kind === selectedFilter); } function summarizeMyWork(items) { const reviews = items.filter((item) => item.is_review).length; const assigned = items.filter((item) => item.is_assigned).length; const reviewLabel = reviews + ' review' + (reviews === 1 ? '' : 's'); const assignedLabel = assigned + ' assigned'; return reviewLabel + ' ยท ' + assignedLabel; } function countMyWork(items) { return { all: items.length, issue: items.filter((item) => item.kind === 'issue').length, pull: items.filter((item) => item.kind === 'pull' && !item.is_review).length, review: items.filter((item) => item.is_review).length, }; } if (typeof module !== 'undefined' && module.exports) { buildMyWork.filterMyWork = filterMyWork; buildMyWork.summarizeMyWork = summarizeMyWork; buildMyWork.countMyWork = countMyWork; module.exports = buildMyWork; }