@gitkraken/provider-apis 0.41.0 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.42.0
4
+
5
+ - Fixed PR bucketing so that mergeable PRs with outstanding review requests appear in both "Ready to Merge" and "Waiting for Review" buckets
6
+
3
7
  ## 0.41.0
4
8
 
5
9
  - Added `getMergeBase` to Github
package/dist/index.js CHANGED
@@ -1556,4 +1556,4 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1556
1556
  ${Ke}
1557
1557
  }
1558
1558
  }
1559
- `,p=(await this.rawRequest(e,l,{first:Zr,after:i})).data?.issues;return p?{data:await bt(p.nodes.map(Xt)),pageInfo:{hasNextPage:p.pageInfo.hasNextPage,endCursor:p.pageInfo.endCursor??null}}:{data:[],pageInfo:{hasNextPage:!1,endCursor:null}}}};var Q="https://api.trello.com",zn=1e3,j=(s,t)=>({...I(t),Authorization:`OAuth oauth_consumer_key="${s}", oauth_token="${t}"`}),Wn=s=>({id:s.id,username:s.username,url:s.url,name:s.fullName,email:s.email,avatarUrl:s.avatarUrl}),Hn=(s,t)=>{let e=new Date(1e3*parseInt(s.id.substring(0,8),16));return{id:s.id,commentCount:s.badges.comments,number:s.idShort.toString(),title:s.name,url:s.url,closedDate:null,createdDate:new Date(e.toISOString()),author:null,updatedDate:new Date(s.dateLastActivity),assignees:s.members.map(r=>({id:r.id,username:r.username,name:r.fullName,email:null,avatarUrl:r.avatarUrl,url:null})),description:null,state:t[s.idList??""]?{id:s.idList,name:t[s.idList].name,color:null}:null,type:null,repository:null,upvoteCount:s.badges.votes,labels:s.labels.map(r=>({color:r.color,description:null,id:r.id,name:r.name}))}},de=class extends O{async getCurrentUser(t,e={}){let r=await this.config.request({url:`${e.baseUrl||Q}/1/members/me`,headers:j(t.appKey,e.token||this.config.token)});return{data:{name:r.body.fullName,email:r.body.email,avatarUrl:r.body.avatarHash?`https://trello-members.s3.amazonaws.com/${r.body.id}/${r.body.avatarHash}/50.png`:null,id:r.body.id,username:r.body.username,url:r.body.url}}}async getBoardsForCurrentUser(t,e={}){return{data:(await this.config.request({url:`${e.baseUrl||Q}/1/members/me/boards?fields=name&filter=open`,headers:j(t.appKey,e.token||this.config.token)})).body.map(n=>({id:n.id,name:n.name}))}}async getListsForTrelloBoard(t,e={}){let{appKey:r,boardId:n}=t;return{data:(await this.config.request({url:`${e.baseUrl||Q}/1/boards/${n}/lists`,headers:j(r,e.token||this.config.token)})).body}}async getAccountForId(t,e={}){let{appKey:r,memberId:n}=t,o=await this.config.request({url:`${e.baseUrl||Q}/1/members/${n}`,headers:j(r,e.token||this.config.token)});return{data:Wn(o.body)}}async getAccountsForTrelloBoard(t,e={}){let{appKey:r,boardId:n}=t;return{data:(await this.config.request({url:`${e.baseUrl||Q}/1/boards/${n}/members`,headers:j(r,e.token||this.config.token)})).body.map(i=>({id:i.id,name:i.fullName,username:i.username,email:null,avatarUrl:null,url:null}))}}async getIssuesForBoard(t,e={}){let r=["-is:archived","sort:edited"],{appKey:n,boardId:o,filterText:i,assigneeLogins:a,labelNamesOrColors:u,trelloBoardListsById:l}=t||{};a&&r.push("@me"),u&&u.forEach(d=>r.push(`label:"${d}"`));let c=`${i?`${i}`:""}${r.join(" ")} board:${o}`;return{data:(await this.config.request({url:`${e.baseUrl||Q}/1/search?query=${c}&cards_limit=${zn}&card_members=true`,headers:j(n,e.token||this.config.token)})).body.cards.map(d=>Hn(d,l||{}))}}async updateIssue(t,e,r,n){return await this.config.request({method:"PUT",url:`${n.baseUrl||Q}/1/cards/${e.id}?${r}`,headers:j(t,n.token||this.config.token)})}async setIssueStatus(t,e={}){let{appKey:r,issue:n,status:o}=t;if(!o.id)throw new Error('Trello requires a status "id" for this function.');let i=`idList=${o.id}`;if(!(await this.updateIssue(r,n,i,e)).body.id)throw new Error("Could not set issue status")}async setIssueAssignees(t,e={}){let{appKey:r,issue:n,assignees:o}=t,i=o.map(l=>l.id),a=`idMembers=${encodeURIComponent(i.join(","))}`;if(!(await this.updateIssue(r,n,a,e)).body.id)throw new Error("Could not set issue status")}async setIssueLabels(t,e={}){let{appKey:r,issue:n,labels:o}=t,i=o.map(u=>u.id).join(",");if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||Q}/1/cards/${n.id}?idLabels=${encodeURIComponent(i)}`,headers:j(r,e.token||this.config.token)})).body.id)throw new Error("Could not set issue status")}async setIssueArchived(t,e={}){let{appKey:r,issue:n,archived:o}=t;if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||Q}/1/cards/${n.id}?closed=${o}`,headers:j(r,e.token||this.config.token)})).body.id)throw new Error("Could not update issue archived status")}async archiveIssue(t,e={}){await this.setIssueArchived({...t,archived:!0},e)}async unArchiveIssue(t,e={}){await this.setIssueArchived({...t,archived:!1},e)}async getLabelsForBoard(t,e={}){let{appKey:r,boardId:n}=t;return{data:(await this.config.request({url:`${e.baseUrl||Q}/1/boards/${n}/labels`,headers:j(r,e.token||this.config.token)})).body.map(i=>({color:i.color,description:null,id:i.id,name:i.name}))}}};var Ye={};k(Ye,{default:()=>Vn});var Vn={};var Ze={};k(Ze,{default:()=>Jn});var Jn={};var dt={};k(dt,{decode:()=>Zt,decodeV0:()=>Zn,encode:()=>Yn,validate:()=>Xn});var A=(e=>(e.Zero="0",e.One="1",e))(A||{}),U=(e=>(e.PullRequest="pr",e.Issue="issue",e))(U||{}),D=(d=>(d.Azure="azure",d.AzureDevOpsServer="azureDevOpsServer",d.Github="github",d.GithubEnterprise="githubEnterprise",d.Gitlab="gitlab",d.GitlabSelfHosted="gitlabSelfHosted",d.Bitbucket="bitbucket",d.BitbucketServer="bitbucketServer",d.Jira="jira",d.JiraServer="jiraServer",d.Linear="linear",d.Trello="trello",d))(D||{});var et=class{constructor(){}validate(t){if(!t.organizationName)throw new Error("organizationName is required");if(!t.projectId)throw new Error("projectId is required");if(!t.entityId)throw new Error("issueId is required")}encode(t){if(this.validate(t),!t.organizationName||!t.projectId||!t.entityId)throw new Error("Missing required fields for Azure DevOps issue uniqueId");let e=[];return e.push(t.provider),e.push("issue"),e.push("1"),t.provider==="azureDevOpsServer"?e.push(t.domain):e.push(""),e.push(t.organizationName),e.push(t.projectId),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<7)throw new Error("Invalid Azure DevOps issue uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:t[4],projectId:t[5],repoId:null,entityId:t[6]}}};var tt=class{constructor(){}validate(t){if(!t.organizationName)throw new Error("organizationName is required");if(!t.projectId)throw new Error("projectId is required");if(!t.repoId)throw new Error("repoId is required");if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.organizationName||!t.projectId||!t.repoId||!t.entityId)throw new Error("Missing required fields for Azure DevOps pull request uniqueId");let e=[];return e.push(t.provider),e.push("pr"),e.push("1"),t.provider==="azureDevOpsServer"?e.push(t.domain):e.push(""),e.push(t.organizationName),e.push(t.projectId),e.push(t.repoId),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<8)throw new Error("Invalid Azure DevOps pull request uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:t[4],projectId:t[5],repoId:t[6],entityId:t[7]}}};var rt=class{constructor(){}validate(t){if(!t.repoId)throw new Error("repoId is required");if(!t.entityId)throw new Error("issueId is required")}encode(t){if(this.validate(t),!t.repoId||!t.entityId)throw new Error("Missing required fields for Bitbucket DevOps issue uniqueId");let e=[];return e.push(t.provider),e.push("issue"),e.push("1"),t.provider==="bitbucketServer"?e.push(t.domain):e.push(""),e.push(t.repoId),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<6)throw new Error("Invalid Bitbucket DevOps issue uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:t[4],entityId:t[5]}}};var st=class{constructor(){}validate(t){if(!t.repoId)throw new Error("repoId is required");if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.repoId||!t.entityId)throw new Error("Missing required fields for Bitbucket DevOps pull request uniqueId");let e=[];return e.push(t.provider),e.push("pr"),e.push("1"),t.provider==="bitbucketServer"?e.push(t.domain):e.push(""),e.push(t.repoId),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<6)throw new Error("Invalid Bitbucket DevOps pull request uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:t[4],entityId:t[5]}}};var nt=class{constructor(){}validate(t){if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.entityId)throw new Error("Missing required fields for Github issue uniqueId");let e=[];return e.push(t.provider),e.push("issue"),e.push("1"),t.provider==="githubEnterprise"?e.push(t.domain):e.push(""),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<5)throw new Error("Invalid Github issue uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:t[4]}}};var ot=class{constructor(){}validate(t){if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.entityId)throw new Error("Missing required fields for Github pull request uniqueId");let e=[];return e.push(t.provider),e.push("pr"),e.push("1"),t.provider==="githubEnterprise"?e.push(t.domain):e.push(""),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<5)throw new Error("Invalid Github pull request uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:t[4]}}};var it=class{constructor(){}validate(t){if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.entityId)throw new Error("Missing required fields for Gitlab issue uniqueId");let e=[];return e.push(t.provider),e.push("issue"),e.push("1"),t.provider==="gitlabSelfHosted"?e.push(t.domain):e.push(""),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<5)throw new Error("Invalid Gitlab issue uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:t[4]}}};var at=class{constructor(){}validate(t){if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.entityId)throw new Error("Missing required fields for Gitlab pull request uniqueId");let e=[];return e.push(t.provider),e.push("pr"),e.push("1"),t.provider==="gitlabSelfHosted"?e.push(t.domain):e.push(""),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<5)throw new Error("Invalid Gitlab pull request uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:t[4]}}};var ut=class{constructor(){}validate(t){if(!t.projectId)throw new Error("projectId is required");if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.projectId||!t.entityId)throw new Error("Missing required fields for Jira issue uniqueId");let e=[];return e.push(t.provider),e.push("issue"),e.push("1"),t.provider=="jira"?(e.push(""),e.push(t.resourceId)):(e.push(t.domain),e.push("")),e.push(t.projectId),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<7)throw new Error("Invalid Jira issue uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:t[4]==""?null:t[4],accountOrOrgId:null,organizationName:null,projectId:t[5],repoId:null,entityId:t[6]}}};var lt=class{constructor(){}validate(t){if(!t.accountOrOrgId)throw new Error("accountOrOrgId is required");if(!t.projectId)throw new Error("projectId is required");if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.accountOrOrgId||!t.projectId||!t.entityId)throw new Error("Missing required fields for Trello issue uniqueId");let e=[];return e.push("trello"),e.push("issue"),e.push("1"),e.push(""),e.push(t.accountOrOrgId),e.push(t.projectId),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<7)throw new Error("Invalid Trello issue uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:t[4],organizationName:null,projectId:t[5],repoId:null,entityId:t[6]}}};var pt=(s,t)=>{if(t!=="issue"&&t!=="pr")throw new Error("unknown entityType");switch(s){case"azure":case"azureDevOpsServer":return t==="pr"?new tt:new et;case"bitbucket":case"bitbucketServer":return t==="pr"?new st:new rt;case"github":case"githubEnterprise":return t==="pr"?new ot:new nt;case"gitlab":case"gitlabSelfHosted":return t==="pr"?new at:new it;case"jira":case"jiraServer":if(t==="pr")throw new Error("EntityType PullRequest is not valid for Jira");return new ut;case"trello":if(t==="pr")throw new Error("EntityType PullRequest is not valid for Jira");return new lt;default:throw new Error("unknown provider")}},Kn=s=>{if(!s.entityType)throw new Error("entityType is required");if(!s.provider)throw new Error("provider is required");if(!s.entityId)throw new Error("entityID is required")},Xn=s=>{if(s.version==="0"){Kn(s);return}pt(s.provider,s.entityType).validate(s)},Yn=s=>pt(s.provider,s.entityType).encode(s),Zt=s=>{let t=JSON.parse(s);if(!t||!t.length)throw new Error("invalid issue unique id");return pt(t[0],t[1]).decode(t)},Zn=(s,t,e)=>{if(!e)throw new Error("entityID is required");try{let r=JSON.parse(e);if(!r||!r.length)throw new Error("Invalid pull request uniqueId");let n=[s,t,"0",...r];return pt(s,t).decode(n)}catch{return{provider:s,entityType:t,version:"0",domain:"",resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:e}}};var ct={};k(ct,{CHANGES_REQUESTED_ACTION_CATEGORY:()=>us,CHANGES_REQUESTED_BUCKET_ID:()=>ir,CONFLICTS_ACTION_CATEGORY:()=>is,CONFLICTS_BUCKET_ID:()=>nr,DRAFT_ACTION_CATEGORY:()=>ds,DRAFT_BUCKET_ID:()=>lr,FAILING_CI_ACTION_CATEGORY:()=>os,FAILING_CI_BUCKET_ID:()=>sr,NEEDS_MY_REVIEW_ACTION_CATEGORY:()=>as,NEEDS_MY_REVIEW_BUCKET_ID:()=>or,OTHER_ACTION_CATEGORY:()=>cs,OTHER_BUCKET_ID:()=>pr,PINNED_BUCKET_ID:()=>er,READY_TO_MERGE_ACTION_CATEGORY:()=>ss,READY_TO_MERGE_BUCKET_ID:()=>tr,REVIEWER_COMMENTED_ACTION_CATEGORY:()=>ls,REVIEWER_COMMENTED_BUCKET_ID:()=>ar,SNOOZED_BUCKET_ID:()=>dr,UNASSIGNED_REVIEWERS_ACTION_CATEGORY:()=>ns,UNASSIGNED_REVIEWERS_BUCKET_ID:()=>rr,WAITING_FOR_REVIEW_ACTION_CATEGORY:()=>ps,WAITING_FOR_REVIEW_BUCKET_ID:()=>ur,getActionablePullRequests:()=>gs,groupPullRequestsByAssignee:()=>ro,groupPullRequestsByAuthor:()=>so,groupPullRequestsByGitKrakenTeam:()=>ao,groupPullRequestsByRepo:()=>to,groupPullRequestsByReviewer:()=>no,groupPullRequestsByWorkspace:()=>io,groupPullRequestsIntoBuckets:()=>eo});var G=(s,t,e,r)=>({id:s,faIconName:e,name:t,priority:r,pullRequests:[]}),er="pinned",tr="readyToMerge",rr="unassignedReviewers",sr="failingCI",nr="conflicts",or="needsMyReview",ir="changesRequested",ar="reviewerCommented",ur="waitingForReview",lr="draft",pr="other",dr="snoozed",ss="readyToMerge",ns="unassignedReviewers",os="failingCI",is="conflicts",as="needsMyReview",us="changesRequested",ls="reviewerCommented",ps="waitingForReview",ds="draft",cs="other",gs=(s,t,e)=>s.map(r=>{let o={...r,...{suggestedActionCategory:cs,priority:1e3,viewer:{canMerge:!1,isAuthor:!1,isAssignee:!1,isReviewer:!1,shouldMerge:!1,shouldAssignReviewer:!1,waitingOnReviews:!1,shouldReview:!1},failingCI:!1,hasConflicts:!1,changeRequestReviewCount:0,codeSuggestionsCount:0,commentReviewCount:0,approvalReviewCount:0}};t&&(o.viewer.isAuthor=r.author?.id===t.id,o.viewer.isAssignee=r.assignees?.some(u=>u.id===t.id)??!1,o.viewer.isReviewer=r.reviews?.some(u=>u.reviewer.id===t.id)??!1),o.viewer.canMerge=r.permissions?.canMerge??!0,o.hasConflicts=r.mergeableState==="CONFLICTS",o.failingCI=r.headCommit?.buildStatuses?.some(u=>u.state==="ERROR"||u.state==="FAILED")||r.mergeableState==="FAILING_CHECKS",o.commentReviewCount=r.reviews?.filter(u=>u.state==="COMMENTED").length??0,o.approvalReviewCount=r.reviews?.filter(u=>u.state==="APPROVED").length??0,o.changeRequestReviewCount=r.reviews?.filter(u=>u.state==="CHANGES_REQUESTED").length??0;let i=e?.enrichedItemsByUniqueId?.[r.uuid];i!=null&&(o.viewer.enrichedItems=i,i.some(u=>u.type==="pin")&&(o.viewer.pinned=!0,o.priority-=800),i.some(u=>u.type==="snooze")&&(o.viewer.snoozed=!0));let a=e?.codeSuggestionsCountByPrUuid?.[r.uuid]?.count||0;return a&&(o.codeSuggestionsCount=a),(!t||o.viewer.isAuthor||o.viewer.isAssignee&&!o.viewer.isReviewer)&&o.viewer.canMerge&&!o.isDraft&&!o.failingCI&&r.mergeableState==="MERGEABLE"&&(!r.reviewDecision||r.reviewDecision==="APPROVED")&&(o.viewer.shouldMerge=!0,o.suggestedActionCategory=ss),(!t||o.viewer.isAuthor)&&r.isDraft&&(o.suggestedActionCategory=ds),(!t||o.viewer.isAuthor)&&r.reviewDecision==="REVIEW_REQUESTED"&&(o.suggestedActionCategory=ps,o.viewer.waitingOnReviews=!0),(!t||o.viewer.isAuthor)&&r.reviewDecision==="COMMENTED"&&(o.suggestedActionCategory=ls),(!t||o.viewer.isAuthor)&&o.failingCI&&(o.suggestedActionCategory=os),(!t||o.viewer.isAuthor)&&o.hasConflicts&&(o.suggestedActionCategory=is),(!t||o.viewer.isAuthor)&&(r.reviewDecision==="CHANGES_REQUESTED"||o.codeSuggestionsCount>0)&&(o.suggestedActionCategory=us),(!t||o.viewer.isAuthor)&&!r.reviews?.length&&(o.suggestedActionCategory=ns,o.viewer.shouldAssignReviewer=!0),t&&r.reviews?.some(u=>u.reviewer.id===t.id&&u.state==="REVIEW_REQUESTED")&&(o.suggestedActionCategory=as,o.viewer.shouldReview=!0),o}),eo=(s,t,e)=>{let r={pinned:G(er,"Pinned","thumbtack",e?.bucketPriorityOverride?.pinned??-1),readyToMerge:G(tr,"Ready to Merge","code-merge",e?.bucketPriorityOverride?.readyToMerge??0),unassignedReviewers:G(rr,"Unassigned Reviewers","user-plus",e?.bucketPriorityOverride?.unassignedReviewers??1),failingCI:G(sr,"Failing CI","circle-x",e?.bucketPriorityOverride?.failingCI??2),conflicts:G(nr,"Resolve Conflicts","triangle-exclamation",e?.bucketPriorityOverride?.conflicts??3),needsMyReview:G(or,"Needs My Review","eye",e?.bucketPriorityOverride?.needsMyReview??4),changesRequested:G(ir,"Suggested Changes","file-plus",e?.bucketPriorityOverride?.changesRequested??5),reviewerCommented:G(ar,"Reviewer Commented","comment",e?.bucketPriorityOverride?.reviewerCommented??6),waitingForReview:G(ur,"Waiting for Review","circle-pause",e?.bucketPriorityOverride?.waitingForReview??7),draft:G(lr,"Draft","compass-drafting",e?.bucketPriorityOverride?.draft??8),other:G(pr,"Other","ellipsis",e?.bucketPriorityOverride?.other??9),snoozed:G(dr,"Snoozed","snooze",e?.bucketPriorityOverride?.snoozed??10)},o=gs(s,t,e).reduce((i,a)=>(i[a.uuid]=a,i),{});return s.forEach(i=>{let a=o[i.uuid],u=!0;if(a.viewer.snoozed){r[dr].pullRequests.push(i);return}a.viewer.pinned&&r[er].pullRequests.push(i),(!t||a.viewer.isAuthor||a.viewer.isAssignee&&!a.viewer.isReviewer)&&!a.isDraft&&a.viewer.canMerge&&a.mergeableState==="MERGEABLE"&&(!i.reviewDecision||i.reviewDecision==="APPROVED")&&(r[tr].pullRequests.push(i),u=!1),a.viewer.shouldAssignReviewer&&(r[rr].pullRequests.push(i),u=!1),(!t||a.viewer.isAuthor)&&a.failingCI&&(r[sr].pullRequests.push(i),u=!1),(!t||a.viewer.isAuthor)&&a.hasConflicts&&(r[nr].pullRequests.push(i),u=!1),a.viewer.shouldReview&&(r[or].pullRequests.push(i),u=!1),(!t||a.viewer.isAuthor)&&(a.reviewDecision==="CHANGES_REQUESTED"||a.codeSuggestionsCount>0)&&(r[ir].pullRequests.push(i),u=!1),(!t||a.viewer.isAuthor)&&a.reviewDecision==="COMMENTED"&&(r[ar].pullRequests.push(i),u=!1),(!t||a.viewer.isAuthor)&&a.reviewDecision==="REVIEW_REQUESTED"&&(r[ur].pullRequests.push(i),u=!1),a.isDraft&&(r[lr].pullRequests.push(i),u=!1),u&&r[pr].pullRequests.push(i)}),Object.values(r).forEach(i=>{i.pullRequests.sort((a,u)=>o[a.uuid].priority-o[u.uuid].priority)}),r},to=s=>{let t={};return s.forEach(e=>{let r=e.repository.id;t[r]?t[r].pullRequests.push(e):t[r]={name:e.repository.name,priority:0,pullRequests:[e],id:r}}),Z(t)},ro=s=>{let t="internal-no-assignees",e={[t]:{name:"No assignees",priority:-1,pullRequests:[],id:t,faIconName:"user-slash"}};return s.forEach(r=>{r.assignees&&r.assignees.length?r.assignees.forEach(n=>{let o=n.id;e[o]?e[o].pullRequests.push(r):e[o]={accountData:n,name:Pe(n,`Unknown Assignee ${Object.keys(e).length}`),priority:0,pullRequests:[r],id:o}}):e[t].pullRequests.push(r)}),Z(e)},so=s=>{let t="internal-no-author",e={[t]:{name:"No author",priority:-1,pullRequests:[],id:t,faIconName:"user-slash"}};return s.forEach(r=>{if(r.author){let n=r.author.id;e[n]?e[n].pullRequests.push(r):e[n]={accountData:r.author,name:Pe(r.author,`Unknown Author ${Object.keys(e).length}`),priority:0,pullRequests:[r],id:n}}else e[t].pullRequests.push(r)}),Z(e)},no=s=>{let t="internal-no-reviewer",e={[t]:{name:"No reviewers",priority:-1,pullRequests:[],id:t,faIconName:"user-slash"}};return s.forEach(r=>{r.reviews&&r.reviews.length?r.reviews.forEach(n=>{let o=n.reviewer.id;e[o]?e[o].pullRequests.push(r):e[o]={accountData:n.reviewer,name:Pe(n.reviewer,`Unknown Reviewer ${Object.keys(e).length}`),priority:0,pullRequests:[r],id:o}}):e[t].pullRequests.push(r)}),Z(e)},oo=s=>s.azureProject?[`${s.azureProject}-${s.azureOrganizationId}`]:s.providerData?.repositories.nodes.map(t=>`${s.provider}-${t.repositoryId}`)??[],io=(s,t)=>{let e="internal-no-workspace",r={[e]:{name:"No workspace",priority:-1,pullRequests:[],id:e,faIconName:"folder-xmark"}};if(t.length){let n=t.reduce((o,i)=>(oo(i).forEach(u=>{o[u]?o[u].push(i):o[u]=[i]}),o),{});s.forEach(o=>{let{provider:i}=Zt(o.uuid),a=i==="github"?o.repository.graphQLId:o.repository.id,u=i==="azure"?[`${i}-${a}`,`${o.repository.project}-${o.repository.owner.login}`]:[`${i}-${a}`],l=!1,c=u.reduce((p,d)=>n[d]?p.concat(n[d]):p,[]);c?.length&&c.forEach(p=>{l=!0;let d=p.id;r[d]?r[d].pullRequests.push(o):r[d]={name:p.name,priority:0,pullRequests:[o],id:d,faIconName:"folder"}}),l||r[e].pullRequests.push(o)})}else r[e].pullRequests=s;return Z(r)},ao=(s,t,e,r)=>{let n="internal-no-team",o={[n]:{name:"No team",priority:-1,pullRequests:[],id:n}};return r.length?s.forEach(i=>{let a=!1,u=new Set;u.add(i.author?.id),i.assignees?.forEach(l=>u.add(l.id)),i.reviews?.forEach(l=>u.add(l.reviewer.id)),r.forEach(l=>{if(l.members?.some(p=>{let d=t[p.id]?.[e]?.providerID;return d&&u.has(d)})){a=!0;let p=l.id;o[p]?o[p].pullRequests.push(i):o[p]={name:l.name,priority:0,pullRequests:[i],id:p,teamData:l}}}),a||o[n].pullRequests.push(i)}):o[n].pullRequests=s,Z(o)};var gt={};k(gt,{getPullRequestRank:()=>uo});var uo=(s,t,e)=>{let r=0,n,o;return s.reviews?.forEach(i=>{i.reviewer.id===t&&(n=i.state),i.state==="CHANGES_REQUESTED"?o="CHANGES_REQUESTED":i.state==="APPROVED"&&o!=="CHANGES_REQUESTED"&&(o="APPROVED")}),o||(o="REVIEW_REQUESTED"),s.author?.id===t?r+=1e3:s.assignees?.find(i=>i.id===t)?r+=900:n==="REVIEW_REQUESTED"?r+=800:e&&(r+=700),o==="APPROVED"?s.mergeableState==="MERGEABLE"?r+=100:s.mergeableState==="CONFLICTS"?r+=90:r+=80:o=="CHANGES_REQUESTED"&&(r+=70),r};var mt={};k(mt,{default:()=>lo});var lo={};var ht={};k(ht,{default:()=>po});var po={};var ft={};k(ft,{default:()=>co});var co={};var ms=s=>{let t={request:s?.request};return{azureDevOps:new re({...t,...s?.azureDevOps}),bitbucket:new se({...t,...s?.bitbucket}),bitbucketServer:new ne({...t,...s?.bitbucketServer}),github:new oe({...t,...s?.github}),gitlab:new ae({...t,...s?.gitlab}),jira:new ue({...t,...s?.jira}),jiraServer:new le({...t,...s?.jiraServer}),linear:new pe({...t,...s?.linear}),trello:new de({...t,...s?.trello})}};var hs=(i=>(i.Conflicts="conflicts",i.Failure="failure",i.NotSet="notSet",i.Queued="queued",i.RejectedByPolicy="rejectedByPolicy",i.Succeeded="succeeded",i))(hs||{});var fs=(e=>(e.Completed="COMPLETED",e.NotPlanned="NOT_PLANNED",e))(fs||{});var go=ms;var mo={azureDevOps:Ye,bitbucket:Ze,bitbucketServer:Ce,github:gt,gitlab:mt,gitProvider:ct,jira:ht,trello:ft,entityIdentifier:dt};
1559
+ `,p=(await this.rawRequest(e,l,{first:Zr,after:i})).data?.issues;return p?{data:await bt(p.nodes.map(Xt)),pageInfo:{hasNextPage:p.pageInfo.hasNextPage,endCursor:p.pageInfo.endCursor??null}}:{data:[],pageInfo:{hasNextPage:!1,endCursor:null}}}};var Q="https://api.trello.com",zn=1e3,j=(s,t)=>({...I(t),Authorization:`OAuth oauth_consumer_key="${s}", oauth_token="${t}"`}),Wn=s=>({id:s.id,username:s.username,url:s.url,name:s.fullName,email:s.email,avatarUrl:s.avatarUrl}),Hn=(s,t)=>{let e=new Date(1e3*parseInt(s.id.substring(0,8),16));return{id:s.id,commentCount:s.badges.comments,number:s.idShort.toString(),title:s.name,url:s.url,closedDate:null,createdDate:new Date(e.toISOString()),author:null,updatedDate:new Date(s.dateLastActivity),assignees:s.members.map(r=>({id:r.id,username:r.username,name:r.fullName,email:null,avatarUrl:r.avatarUrl,url:null})),description:null,state:t[s.idList??""]?{id:s.idList,name:t[s.idList].name,color:null}:null,type:null,repository:null,upvoteCount:s.badges.votes,labels:s.labels.map(r=>({color:r.color,description:null,id:r.id,name:r.name}))}},de=class extends O{async getCurrentUser(t,e={}){let r=await this.config.request({url:`${e.baseUrl||Q}/1/members/me`,headers:j(t.appKey,e.token||this.config.token)});return{data:{name:r.body.fullName,email:r.body.email,avatarUrl:r.body.avatarHash?`https://trello-members.s3.amazonaws.com/${r.body.id}/${r.body.avatarHash}/50.png`:null,id:r.body.id,username:r.body.username,url:r.body.url}}}async getBoardsForCurrentUser(t,e={}){return{data:(await this.config.request({url:`${e.baseUrl||Q}/1/members/me/boards?fields=name&filter=open`,headers:j(t.appKey,e.token||this.config.token)})).body.map(n=>({id:n.id,name:n.name}))}}async getListsForTrelloBoard(t,e={}){let{appKey:r,boardId:n}=t;return{data:(await this.config.request({url:`${e.baseUrl||Q}/1/boards/${n}/lists`,headers:j(r,e.token||this.config.token)})).body}}async getAccountForId(t,e={}){let{appKey:r,memberId:n}=t,o=await this.config.request({url:`${e.baseUrl||Q}/1/members/${n}`,headers:j(r,e.token||this.config.token)});return{data:Wn(o.body)}}async getAccountsForTrelloBoard(t,e={}){let{appKey:r,boardId:n}=t;return{data:(await this.config.request({url:`${e.baseUrl||Q}/1/boards/${n}/members`,headers:j(r,e.token||this.config.token)})).body.map(i=>({id:i.id,name:i.fullName,username:i.username,email:null,avatarUrl:null,url:null}))}}async getIssuesForBoard(t,e={}){let r=["-is:archived","sort:edited"],{appKey:n,boardId:o,filterText:i,assigneeLogins:a,labelNamesOrColors:u,trelloBoardListsById:l}=t||{};a&&r.push("@me"),u&&u.forEach(d=>r.push(`label:"${d}"`));let c=`${i?`${i}`:""}${r.join(" ")} board:${o}`;return{data:(await this.config.request({url:`${e.baseUrl||Q}/1/search?query=${c}&cards_limit=${zn}&card_members=true`,headers:j(n,e.token||this.config.token)})).body.cards.map(d=>Hn(d,l||{}))}}async updateIssue(t,e,r,n){return await this.config.request({method:"PUT",url:`${n.baseUrl||Q}/1/cards/${e.id}?${r}`,headers:j(t,n.token||this.config.token)})}async setIssueStatus(t,e={}){let{appKey:r,issue:n,status:o}=t;if(!o.id)throw new Error('Trello requires a status "id" for this function.');let i=`idList=${o.id}`;if(!(await this.updateIssue(r,n,i,e)).body.id)throw new Error("Could not set issue status")}async setIssueAssignees(t,e={}){let{appKey:r,issue:n,assignees:o}=t,i=o.map(l=>l.id),a=`idMembers=${encodeURIComponent(i.join(","))}`;if(!(await this.updateIssue(r,n,a,e)).body.id)throw new Error("Could not set issue status")}async setIssueLabels(t,e={}){let{appKey:r,issue:n,labels:o}=t,i=o.map(u=>u.id).join(",");if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||Q}/1/cards/${n.id}?idLabels=${encodeURIComponent(i)}`,headers:j(r,e.token||this.config.token)})).body.id)throw new Error("Could not set issue status")}async setIssueArchived(t,e={}){let{appKey:r,issue:n,archived:o}=t;if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||Q}/1/cards/${n.id}?closed=${o}`,headers:j(r,e.token||this.config.token)})).body.id)throw new Error("Could not update issue archived status")}async archiveIssue(t,e={}){await this.setIssueArchived({...t,archived:!0},e)}async unArchiveIssue(t,e={}){await this.setIssueArchived({...t,archived:!1},e)}async getLabelsForBoard(t,e={}){let{appKey:r,boardId:n}=t;return{data:(await this.config.request({url:`${e.baseUrl||Q}/1/boards/${n}/labels`,headers:j(r,e.token||this.config.token)})).body.map(i=>({color:i.color,description:null,id:i.id,name:i.name}))}}};var Ye={};k(Ye,{default:()=>Vn});var Vn={};var Ze={};k(Ze,{default:()=>Jn});var Jn={};var dt={};k(dt,{decode:()=>Zt,decodeV0:()=>Zn,encode:()=>Yn,validate:()=>Xn});var A=(e=>(e.Zero="0",e.One="1",e))(A||{}),U=(e=>(e.PullRequest="pr",e.Issue="issue",e))(U||{}),D=(d=>(d.Azure="azure",d.AzureDevOpsServer="azureDevOpsServer",d.Github="github",d.GithubEnterprise="githubEnterprise",d.Gitlab="gitlab",d.GitlabSelfHosted="gitlabSelfHosted",d.Bitbucket="bitbucket",d.BitbucketServer="bitbucketServer",d.Jira="jira",d.JiraServer="jiraServer",d.Linear="linear",d.Trello="trello",d))(D||{});var et=class{constructor(){}validate(t){if(!t.organizationName)throw new Error("organizationName is required");if(!t.projectId)throw new Error("projectId is required");if(!t.entityId)throw new Error("issueId is required")}encode(t){if(this.validate(t),!t.organizationName||!t.projectId||!t.entityId)throw new Error("Missing required fields for Azure DevOps issue uniqueId");let e=[];return e.push(t.provider),e.push("issue"),e.push("1"),t.provider==="azureDevOpsServer"?e.push(t.domain):e.push(""),e.push(t.organizationName),e.push(t.projectId),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<7)throw new Error("Invalid Azure DevOps issue uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:t[4],projectId:t[5],repoId:null,entityId:t[6]}}};var tt=class{constructor(){}validate(t){if(!t.organizationName)throw new Error("organizationName is required");if(!t.projectId)throw new Error("projectId is required");if(!t.repoId)throw new Error("repoId is required");if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.organizationName||!t.projectId||!t.repoId||!t.entityId)throw new Error("Missing required fields for Azure DevOps pull request uniqueId");let e=[];return e.push(t.provider),e.push("pr"),e.push("1"),t.provider==="azureDevOpsServer"?e.push(t.domain):e.push(""),e.push(t.organizationName),e.push(t.projectId),e.push(t.repoId),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<8)throw new Error("Invalid Azure DevOps pull request uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:t[4],projectId:t[5],repoId:t[6],entityId:t[7]}}};var rt=class{constructor(){}validate(t){if(!t.repoId)throw new Error("repoId is required");if(!t.entityId)throw new Error("issueId is required")}encode(t){if(this.validate(t),!t.repoId||!t.entityId)throw new Error("Missing required fields for Bitbucket DevOps issue uniqueId");let e=[];return e.push(t.provider),e.push("issue"),e.push("1"),t.provider==="bitbucketServer"?e.push(t.domain):e.push(""),e.push(t.repoId),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<6)throw new Error("Invalid Bitbucket DevOps issue uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:t[4],entityId:t[5]}}};var st=class{constructor(){}validate(t){if(!t.repoId)throw new Error("repoId is required");if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.repoId||!t.entityId)throw new Error("Missing required fields for Bitbucket DevOps pull request uniqueId");let e=[];return e.push(t.provider),e.push("pr"),e.push("1"),t.provider==="bitbucketServer"?e.push(t.domain):e.push(""),e.push(t.repoId),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<6)throw new Error("Invalid Bitbucket DevOps pull request uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:t[4],entityId:t[5]}}};var nt=class{constructor(){}validate(t){if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.entityId)throw new Error("Missing required fields for Github issue uniqueId");let e=[];return e.push(t.provider),e.push("issue"),e.push("1"),t.provider==="githubEnterprise"?e.push(t.domain):e.push(""),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<5)throw new Error("Invalid Github issue uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:t[4]}}};var ot=class{constructor(){}validate(t){if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.entityId)throw new Error("Missing required fields for Github pull request uniqueId");let e=[];return e.push(t.provider),e.push("pr"),e.push("1"),t.provider==="githubEnterprise"?e.push(t.domain):e.push(""),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<5)throw new Error("Invalid Github pull request uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:t[4]}}};var it=class{constructor(){}validate(t){if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.entityId)throw new Error("Missing required fields for Gitlab issue uniqueId");let e=[];return e.push(t.provider),e.push("issue"),e.push("1"),t.provider==="gitlabSelfHosted"?e.push(t.domain):e.push(""),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<5)throw new Error("Invalid Gitlab issue uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:t[4]}}};var at=class{constructor(){}validate(t){if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.entityId)throw new Error("Missing required fields for Gitlab pull request uniqueId");let e=[];return e.push(t.provider),e.push("pr"),e.push("1"),t.provider==="gitlabSelfHosted"?e.push(t.domain):e.push(""),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<5)throw new Error("Invalid Gitlab pull request uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:t[4]}}};var ut=class{constructor(){}validate(t){if(!t.projectId)throw new Error("projectId is required");if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.projectId||!t.entityId)throw new Error("Missing required fields for Jira issue uniqueId");let e=[];return e.push(t.provider),e.push("issue"),e.push("1"),t.provider=="jira"?(e.push(""),e.push(t.resourceId)):(e.push(t.domain),e.push("")),e.push(t.projectId),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<7)throw new Error("Invalid Jira issue uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:t[4]==""?null:t[4],accountOrOrgId:null,organizationName:null,projectId:t[5],repoId:null,entityId:t[6]}}};var lt=class{constructor(){}validate(t){if(!t.accountOrOrgId)throw new Error("accountOrOrgId is required");if(!t.projectId)throw new Error("projectId is required");if(!t.entityId)throw new Error("entityId is required")}encode(t){if(this.validate(t),!t.accountOrOrgId||!t.projectId||!t.entityId)throw new Error("Missing required fields for Trello issue uniqueId");let e=[];return e.push("trello"),e.push("issue"),e.push("1"),e.push(""),e.push(t.accountOrOrgId),e.push(t.projectId),e.push(t.entityId),JSON.stringify(e)}decode(t){if(t.length<7)throw new Error("Invalid Trello issue uniqueId, check version");return{provider:t[0],entityType:t[1],version:t[2],domain:t[3]==""?null:t[3],resourceId:null,accountOrOrgId:t[4],organizationName:null,projectId:t[5],repoId:null,entityId:t[6]}}};var pt=(s,t)=>{if(t!=="issue"&&t!=="pr")throw new Error("unknown entityType");switch(s){case"azure":case"azureDevOpsServer":return t==="pr"?new tt:new et;case"bitbucket":case"bitbucketServer":return t==="pr"?new st:new rt;case"github":case"githubEnterprise":return t==="pr"?new ot:new nt;case"gitlab":case"gitlabSelfHosted":return t==="pr"?new at:new it;case"jira":case"jiraServer":if(t==="pr")throw new Error("EntityType PullRequest is not valid for Jira");return new ut;case"trello":if(t==="pr")throw new Error("EntityType PullRequest is not valid for Jira");return new lt;default:throw new Error("unknown provider")}},Kn=s=>{if(!s.entityType)throw new Error("entityType is required");if(!s.provider)throw new Error("provider is required");if(!s.entityId)throw new Error("entityID is required")},Xn=s=>{if(s.version==="0"){Kn(s);return}pt(s.provider,s.entityType).validate(s)},Yn=s=>pt(s.provider,s.entityType).encode(s),Zt=s=>{let t=JSON.parse(s);if(!t||!t.length)throw new Error("invalid issue unique id");return pt(t[0],t[1]).decode(t)},Zn=(s,t,e)=>{if(!e)throw new Error("entityID is required");try{let r=JSON.parse(e);if(!r||!r.length)throw new Error("Invalid pull request uniqueId");let n=[s,t,"0",...r];return pt(s,t).decode(n)}catch{return{provider:s,entityType:t,version:"0",domain:"",resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:e}}};var ct={};k(ct,{CHANGES_REQUESTED_ACTION_CATEGORY:()=>us,CHANGES_REQUESTED_BUCKET_ID:()=>ir,CONFLICTS_ACTION_CATEGORY:()=>is,CONFLICTS_BUCKET_ID:()=>nr,DRAFT_ACTION_CATEGORY:()=>ds,DRAFT_BUCKET_ID:()=>lr,FAILING_CI_ACTION_CATEGORY:()=>os,FAILING_CI_BUCKET_ID:()=>sr,NEEDS_MY_REVIEW_ACTION_CATEGORY:()=>as,NEEDS_MY_REVIEW_BUCKET_ID:()=>or,OTHER_ACTION_CATEGORY:()=>cs,OTHER_BUCKET_ID:()=>pr,PINNED_BUCKET_ID:()=>er,READY_TO_MERGE_ACTION_CATEGORY:()=>ss,READY_TO_MERGE_BUCKET_ID:()=>tr,REVIEWER_COMMENTED_ACTION_CATEGORY:()=>ls,REVIEWER_COMMENTED_BUCKET_ID:()=>ar,SNOOZED_BUCKET_ID:()=>dr,UNASSIGNED_REVIEWERS_ACTION_CATEGORY:()=>ns,UNASSIGNED_REVIEWERS_BUCKET_ID:()=>rr,WAITING_FOR_REVIEW_ACTION_CATEGORY:()=>ps,WAITING_FOR_REVIEW_BUCKET_ID:()=>ur,getActionablePullRequests:()=>gs,groupPullRequestsByAssignee:()=>ro,groupPullRequestsByAuthor:()=>so,groupPullRequestsByGitKrakenTeam:()=>ao,groupPullRequestsByRepo:()=>to,groupPullRequestsByReviewer:()=>no,groupPullRequestsByWorkspace:()=>io,groupPullRequestsIntoBuckets:()=>eo});var G=(s,t,e,r)=>({id:s,faIconName:e,name:t,priority:r,pullRequests:[]}),er="pinned",tr="readyToMerge",rr="unassignedReviewers",sr="failingCI",nr="conflicts",or="needsMyReview",ir="changesRequested",ar="reviewerCommented",ur="waitingForReview",lr="draft",pr="other",dr="snoozed",ss="readyToMerge",ns="unassignedReviewers",os="failingCI",is="conflicts",as="needsMyReview",us="changesRequested",ls="reviewerCommented",ps="waitingForReview",ds="draft",cs="other",gs=(s,t,e)=>s.map(r=>{let o={...r,...{suggestedActionCategory:cs,priority:1e3,viewer:{canMerge:!1,isAuthor:!1,isAssignee:!1,isReviewer:!1,shouldMerge:!1,shouldAssignReviewer:!1,waitingOnReviews:!1,shouldReview:!1},failingCI:!1,hasConflicts:!1,changeRequestReviewCount:0,codeSuggestionsCount:0,commentReviewCount:0,approvalReviewCount:0}};t&&(o.viewer.isAuthor=r.author?.id===t.id,o.viewer.isAssignee=r.assignees?.some(u=>u.id===t.id)??!1,o.viewer.isReviewer=r.reviews?.some(u=>u.reviewer.id===t.id)??!1),o.viewer.canMerge=r.permissions?.canMerge??!0,o.hasConflicts=r.mergeableState==="CONFLICTS",o.failingCI=r.headCommit?.buildStatuses?.some(u=>u.state==="ERROR"||u.state==="FAILED")||r.mergeableState==="FAILING_CHECKS",o.commentReviewCount=r.reviews?.filter(u=>u.state==="COMMENTED").length??0,o.approvalReviewCount=r.reviews?.filter(u=>u.state==="APPROVED").length??0,o.changeRequestReviewCount=r.reviews?.filter(u=>u.state==="CHANGES_REQUESTED").length??0;let i=e?.enrichedItemsByUniqueId?.[r.uuid];i!=null&&(o.viewer.enrichedItems=i,i.some(u=>u.type==="pin")&&(o.viewer.pinned=!0,o.priority-=800),i.some(u=>u.type==="snooze")&&(o.viewer.snoozed=!0));let a=e?.codeSuggestionsCountByPrUuid?.[r.uuid]?.count||0;return a&&(o.codeSuggestionsCount=a),(!t||o.viewer.isAuthor||o.viewer.isAssignee&&!o.viewer.isReviewer)&&o.viewer.canMerge&&!o.isDraft&&!o.failingCI&&r.mergeableState==="MERGEABLE"&&(o.viewer.shouldMerge=!0,o.suggestedActionCategory=ss),(!t||o.viewer.isAuthor)&&r.isDraft&&(o.suggestedActionCategory=ds),(!t||o.viewer.isAuthor)&&r.reviewDecision==="REVIEW_REQUESTED"&&(o.suggestedActionCategory=ps,o.viewer.waitingOnReviews=!0),(!t||o.viewer.isAuthor)&&r.reviewDecision==="COMMENTED"&&(o.suggestedActionCategory=ls),(!t||o.viewer.isAuthor)&&o.failingCI&&(o.suggestedActionCategory=os),(!t||o.viewer.isAuthor)&&o.hasConflicts&&(o.suggestedActionCategory=is),(!t||o.viewer.isAuthor)&&(r.reviewDecision==="CHANGES_REQUESTED"||o.codeSuggestionsCount>0)&&(o.suggestedActionCategory=us),(!t||o.viewer.isAuthor)&&!r.reviews?.length&&(o.suggestedActionCategory=ns,o.viewer.shouldAssignReviewer=!0),t&&r.reviews?.some(u=>u.reviewer.id===t.id&&u.state==="REVIEW_REQUESTED")&&(o.suggestedActionCategory=as,o.viewer.shouldReview=!0),o}),eo=(s,t,e)=>{let r={pinned:G(er,"Pinned","thumbtack",e?.bucketPriorityOverride?.pinned??-1),readyToMerge:G(tr,"Ready to Merge","code-merge",e?.bucketPriorityOverride?.readyToMerge??0),unassignedReviewers:G(rr,"Unassigned Reviewers","user-plus",e?.bucketPriorityOverride?.unassignedReviewers??1),failingCI:G(sr,"Failing CI","circle-x",e?.bucketPriorityOverride?.failingCI??2),conflicts:G(nr,"Resolve Conflicts","triangle-exclamation",e?.bucketPriorityOverride?.conflicts??3),needsMyReview:G(or,"Needs My Review","eye",e?.bucketPriorityOverride?.needsMyReview??4),changesRequested:G(ir,"Suggested Changes","file-plus",e?.bucketPriorityOverride?.changesRequested??5),reviewerCommented:G(ar,"Reviewer Commented","comment",e?.bucketPriorityOverride?.reviewerCommented??6),waitingForReview:G(ur,"Waiting for Review","circle-pause",e?.bucketPriorityOverride?.waitingForReview??7),draft:G(lr,"Draft","compass-drafting",e?.bucketPriorityOverride?.draft??8),other:G(pr,"Other","ellipsis",e?.bucketPriorityOverride?.other??9),snoozed:G(dr,"Snoozed","snooze",e?.bucketPriorityOverride?.snoozed??10)},o=gs(s,t,e).reduce((i,a)=>(i[a.uuid]=a,i),{});return s.forEach(i=>{let a=o[i.uuid],u=!0;if(a.viewer.snoozed){r[dr].pullRequests.push(i);return}a.viewer.pinned&&r[er].pullRequests.push(i),(!t||a.viewer.isAuthor||a.viewer.isAssignee&&!a.viewer.isReviewer)&&!a.isDraft&&a.viewer.canMerge&&a.mergeableState==="MERGEABLE"&&(r[tr].pullRequests.push(i),u=!1),a.viewer.shouldAssignReviewer&&(r[rr].pullRequests.push(i),u=!1),(!t||a.viewer.isAuthor)&&a.failingCI&&(r[sr].pullRequests.push(i),u=!1),(!t||a.viewer.isAuthor)&&a.hasConflicts&&(r[nr].pullRequests.push(i),u=!1),a.viewer.shouldReview&&(r[or].pullRequests.push(i),u=!1),(!t||a.viewer.isAuthor)&&(a.reviewDecision==="CHANGES_REQUESTED"||a.codeSuggestionsCount>0)&&(r[ir].pullRequests.push(i),u=!1),(!t||a.viewer.isAuthor)&&a.reviewDecision==="COMMENTED"&&(r[ar].pullRequests.push(i),u=!1),(!t||a.viewer.isAuthor)&&a.reviewDecision==="REVIEW_REQUESTED"&&(r[ur].pullRequests.push(i),u=!1),a.isDraft&&(r[lr].pullRequests.push(i),u=!1),u&&r[pr].pullRequests.push(i)}),Object.values(r).forEach(i=>{i.pullRequests.sort((a,u)=>o[a.uuid].priority-o[u.uuid].priority)}),r},to=s=>{let t={};return s.forEach(e=>{let r=e.repository.id;t[r]?t[r].pullRequests.push(e):t[r]={name:e.repository.name,priority:0,pullRequests:[e],id:r}}),Z(t)},ro=s=>{let t="internal-no-assignees",e={[t]:{name:"No assignees",priority:-1,pullRequests:[],id:t,faIconName:"user-slash"}};return s.forEach(r=>{r.assignees&&r.assignees.length?r.assignees.forEach(n=>{let o=n.id;e[o]?e[o].pullRequests.push(r):e[o]={accountData:n,name:Pe(n,`Unknown Assignee ${Object.keys(e).length}`),priority:0,pullRequests:[r],id:o}}):e[t].pullRequests.push(r)}),Z(e)},so=s=>{let t="internal-no-author",e={[t]:{name:"No author",priority:-1,pullRequests:[],id:t,faIconName:"user-slash"}};return s.forEach(r=>{if(r.author){let n=r.author.id;e[n]?e[n].pullRequests.push(r):e[n]={accountData:r.author,name:Pe(r.author,`Unknown Author ${Object.keys(e).length}`),priority:0,pullRequests:[r],id:n}}else e[t].pullRequests.push(r)}),Z(e)},no=s=>{let t="internal-no-reviewer",e={[t]:{name:"No reviewers",priority:-1,pullRequests:[],id:t,faIconName:"user-slash"}};return s.forEach(r=>{r.reviews&&r.reviews.length?r.reviews.forEach(n=>{let o=n.reviewer.id;e[o]?e[o].pullRequests.push(r):e[o]={accountData:n.reviewer,name:Pe(n.reviewer,`Unknown Reviewer ${Object.keys(e).length}`),priority:0,pullRequests:[r],id:o}}):e[t].pullRequests.push(r)}),Z(e)},oo=s=>s.azureProject?[`${s.azureProject}-${s.azureOrganizationId}`]:s.providerData?.repositories.nodes.map(t=>`${s.provider}-${t.repositoryId}`)??[],io=(s,t)=>{let e="internal-no-workspace",r={[e]:{name:"No workspace",priority:-1,pullRequests:[],id:e,faIconName:"folder-xmark"}};if(t.length){let n=t.reduce((o,i)=>(oo(i).forEach(u=>{o[u]?o[u].push(i):o[u]=[i]}),o),{});s.forEach(o=>{let{provider:i}=Zt(o.uuid),a=i==="github"?o.repository.graphQLId:o.repository.id,u=i==="azure"?[`${i}-${a}`,`${o.repository.project}-${o.repository.owner.login}`]:[`${i}-${a}`],l=!1,c=u.reduce((p,d)=>n[d]?p.concat(n[d]):p,[]);c?.length&&c.forEach(p=>{l=!0;let d=p.id;r[d]?r[d].pullRequests.push(o):r[d]={name:p.name,priority:0,pullRequests:[o],id:d,faIconName:"folder"}}),l||r[e].pullRequests.push(o)})}else r[e].pullRequests=s;return Z(r)},ao=(s,t,e,r)=>{let n="internal-no-team",o={[n]:{name:"No team",priority:-1,pullRequests:[],id:n}};return r.length?s.forEach(i=>{let a=!1,u=new Set;u.add(i.author?.id),i.assignees?.forEach(l=>u.add(l.id)),i.reviews?.forEach(l=>u.add(l.reviewer.id)),r.forEach(l=>{if(l.members?.some(p=>{let d=t[p.id]?.[e]?.providerID;return d&&u.has(d)})){a=!0;let p=l.id;o[p]?o[p].pullRequests.push(i):o[p]={name:l.name,priority:0,pullRequests:[i],id:p,teamData:l}}}),a||o[n].pullRequests.push(i)}):o[n].pullRequests=s,Z(o)};var gt={};k(gt,{getPullRequestRank:()=>uo});var uo=(s,t,e)=>{let r=0,n,o;return s.reviews?.forEach(i=>{i.reviewer.id===t&&(n=i.state),i.state==="CHANGES_REQUESTED"?o="CHANGES_REQUESTED":i.state==="APPROVED"&&o!=="CHANGES_REQUESTED"&&(o="APPROVED")}),o||(o="REVIEW_REQUESTED"),s.author?.id===t?r+=1e3:s.assignees?.find(i=>i.id===t)?r+=900:n==="REVIEW_REQUESTED"?r+=800:e&&(r+=700),o==="APPROVED"?s.mergeableState==="MERGEABLE"?r+=100:s.mergeableState==="CONFLICTS"?r+=90:r+=80:o=="CHANGES_REQUESTED"&&(r+=70),r};var mt={};k(mt,{default:()=>lo});var lo={};var ht={};k(ht,{default:()=>po});var po={};var ft={};k(ft,{default:()=>co});var co={};var ms=s=>{let t={request:s?.request};return{azureDevOps:new re({...t,...s?.azureDevOps}),bitbucket:new se({...t,...s?.bitbucket}),bitbucketServer:new ne({...t,...s?.bitbucketServer}),github:new oe({...t,...s?.github}),gitlab:new ae({...t,...s?.gitlab}),jira:new ue({...t,...s?.jira}),jiraServer:new le({...t,...s?.jiraServer}),linear:new pe({...t,...s?.linear}),trello:new de({...t,...s?.trello})}};var hs=(i=>(i.Conflicts="conflicts",i.Failure="failure",i.NotSet="notSet",i.Queued="queued",i.RejectedByPolicy="rejectedByPolicy",i.Succeeded="succeeded",i))(hs||{});var fs=(e=>(e.Completed="COMPLETED",e.NotPlanned="NOT_PLANNED",e))(fs||{});var go=ms;var mo={azureDevOps:Ye,bitbucket:Ze,bitbucketServer:Ce,github:gt,gitlab:mt,gitProvider:ct,jira:ht,trello:ft,entityIdentifier:dt};
@@ -1 +1 @@
1
- "use strict";var z=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var he=Object.getOwnPropertyNames;var ye=Object.prototype.hasOwnProperty;var I=(r,e)=>{for(var t in e)z(r,t,{get:e[t],enumerable:!0})},Re=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of he(e))!ye.call(r,a)&&a!==t&&z(r,a,{get:()=>e[a],enumerable:!(i=Ie(e,a))||i.enumerable});return r};var ve=r=>Re(z({},"__esModule",{value:!0}),r);var Me={};I(Me,{AzureDevopsUtils:()=>y,BitbucketServerUtils:()=>E,BitbucketUtils:()=>R,GitHubUtils:()=>B,GitLabUtils:()=>S,GitProviderUtils:()=>D,JiraUtils:()=>G,TrelloUtils:()=>N,Utils:()=>ze});module.exports=ve(Me);var y={};I(y,{default:()=>Ee});var Ee={};var R={};I(R,{default:()=>Pe});var Pe={};var E={};I(E,{normalizePermissions:()=>ie,restApiPullRequestToCommonPullRequest:()=>be});var Z={APPROVED:0,COMMENTED:1,REVIEW_REQUESTED:2,CHANGES_REQUESTED:3},X=r=>!r||r.length===0?null:r.reduce((e,t)=>Z[t.state]>Z[e]?t.state:e,"APPROVED"),v=(r,e)=>r.name||r.username||r.email||e,h=r=>{let e=Object.values(r).map(t=>t.name).sort((t,i)=>t.localeCompare(i));return Object.values(r).forEach(t=>{t.priority!==-1&&(t.priority=e.indexOf(t.name))}),r};var qe=globalThis.fetch;var ee=r=>{let e=r.links.self[0].href;return{name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrl??(e&&`${e}/avatar.png`),id:r.id.toString(),username:r.name,url:e}},re=r=>{let e={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},t={UNAPPROVED:"REVIEW_REQUESTED",NEEDS_WORK:"CHANGES_REQUESTED",APPROVED:"APPROVED"},i=r.reviewers.map(s=>({reviewer:ee(s.user),state:t[s.status]})),a=r.toRef.repository.links.clone.find(s=>s.name==="ssh")?.href??null,n=r.toRef.repository.links.clone.find(s=>s.name==="https")?.href??null;n||(n=r.toRef.repository.links.clone.find(s=>s.name==="http")?.href??null);let o=r.fromRef.repository.links.clone.find(s=>s.name==="ssh")?.href??null,u=r.fromRef.repository.links.clone.find(s=>s.name==="https")?.href??null;return u||(u=r.fromRef.repository.links.clone.find(s=>s.name==="http")?.href??null),{id:r.id.toString(),number:r.id,title:r.title,description:r.description,url:r.links.self[0].href,state:e[r.state],isDraft:!1,createdDate:new Date(r.createdDate),updatedDate:new Date(r.updatedDate),closedDate:r.closedDate?new Date(r.closedDate):null,mergedDate:r.state=="MERGED"&&r.closedDate?new Date(r.closedDate):null,baseRef:{name:r.toRef.displayId,oid:r.toRef.latestCommit},headRef:{name:r.fromRef.displayId,oid:r.fromRef.latestCommit},commentCount:r.properties.commentCount,upvoteCount:null,commitCount:null,fileCount:null,additions:null,deletions:null,author:ee(r.author.user),assignees:null,reviews:i,reviewDecision:X(i),repository:{id:r.toRef.repository.id.toString(),name:r.toRef.repository.name,owner:{login:r.toRef.repository.project.key},remoteInfo:n&&a?{cloneUrlHTTPS:n,cloneUrlSSH:a}:null},headRepository:{id:r.fromRef.repository.id.toString(),name:r.fromRef.repository.name,owner:{login:r.fromRef.repository.project.key},remoteInfo:u&&o?{cloneUrlHTTPS:u,cloneUrlSSH:o}:null},headCommit:null,mergeableState:"MERGEABLE",permissions:null,version:r.version}};var be=r=>re(r),ie=r=>r?r.find(e=>e.permission==="USER_ADMIN"||e.permission==="PROJECT_ADMIN"||e.permission==="ADMIN"||e.permission==="SYS_ADMIN"||e.permission==="REPO_ADMIN")?{canCreateWebhook:!0,canPush:!0,isAdmin:!0}:r.find(e=>e.permission==="REPO_WRITE"||e.permission==="REPO_CREATE"||e.permission==="PROJECT_CREATE"||e.permission==="PROJECT_WRITE")?{canCreateWebhook:!1,canPush:!0,isAdmin:!1}:{canCreateWebhook:!1,canPush:!1,isAdmin:!1}:{canCreateWebhook:!1,canPush:!1,isAdmin:!1};var D={};I(D,{CHANGES_REQUESTED_ACTION_CATEGORY:()=>de,CHANGES_REQUESTED_BUCKET_ID:()=>V,CONFLICTS_ACTION_CATEGORY:()=>ae,CONFLICTS_BUCKET_ID:()=>$,DRAFT_ACTION_CATEGORY:()=>ge,DRAFT_BUCKET_ID:()=>Q,FAILING_CI_ACTION_CATEGORY:()=>ue,FAILING_CI_BUCKET_ID:()=>L,NEEDS_MY_REVIEW_ACTION_CATEGORY:()=>le,NEEDS_MY_REVIEW_BUCKET_ID:()=>H,OTHER_ACTION_CATEGORY:()=>fe,OTHER_BUCKET_ID:()=>Y,PINNED_BUCKET_ID:()=>_,READY_TO_MERGE_ACTION_CATEGORY:()=>se,READY_TO_MERGE_BUCKET_ID:()=>j,REVIEWER_COMMENTED_ACTION_CATEGORY:()=>pe,REVIEWER_COMMENTED_BUCKET_ID:()=>J,SNOOZED_BUCKET_ID:()=>F,UNASSIGNED_REVIEWERS_ACTION_CATEGORY:()=>oe,UNASSIGNED_REVIEWERS_BUCKET_ID:()=>W,WAITING_FOR_REVIEW_ACTION_CATEGORY:()=>ce,WAITING_FOR_REVIEW_BUCKET_ID:()=>K,getActionablePullRequests:()=>me,groupPullRequestsByAssignee:()=>Ae,groupPullRequestsByAuthor:()=>xe,groupPullRequestsByGitKrakenTeam:()=>Be,groupPullRequestsByRepo:()=>Te,groupPullRequestsByReviewer:()=>Oe,groupPullRequestsByWorkspace:()=>De,groupPullRequestsIntoBuckets:()=>Ce});var P=class{constructor(){}validate(e){if(!e.organizationName)throw new Error("organizationName is required");if(!e.projectId)throw new Error("projectId is required");if(!e.entityId)throw new Error("issueId is required")}encode(e){if(this.validate(e),!e.organizationName||!e.projectId||!e.entityId)throw new Error("Missing required fields for Azure DevOps issue uniqueId");let t=[];return t.push(e.provider),t.push("issue"),t.push("1"),e.provider==="azureDevOpsServer"?t.push(e.domain):t.push(""),t.push(e.organizationName),t.push(e.projectId),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<7)throw new Error("Invalid Azure DevOps issue uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:e[4],projectId:e[5],repoId:null,entityId:e[6]}}};var q=class{constructor(){}validate(e){if(!e.organizationName)throw new Error("organizationName is required");if(!e.projectId)throw new Error("projectId is required");if(!e.repoId)throw new Error("repoId is required");if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.organizationName||!e.projectId||!e.repoId||!e.entityId)throw new Error("Missing required fields for Azure DevOps pull request uniqueId");let t=[];return t.push(e.provider),t.push("pr"),t.push("1"),e.provider==="azureDevOpsServer"?t.push(e.domain):t.push(""),t.push(e.organizationName),t.push(e.projectId),t.push(e.repoId),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<8)throw new Error("Invalid Azure DevOps pull request uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:e[4],projectId:e[5],repoId:e[6],entityId:e[7]}}};var b=class{constructor(){}validate(e){if(!e.repoId)throw new Error("repoId is required");if(!e.entityId)throw new Error("issueId is required")}encode(e){if(this.validate(e),!e.repoId||!e.entityId)throw new Error("Missing required fields for Bitbucket DevOps issue uniqueId");let t=[];return t.push(e.provider),t.push("issue"),t.push("1"),e.provider==="bitbucketServer"?t.push(e.domain):t.push(""),t.push(e.repoId),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<6)throw new Error("Invalid Bitbucket DevOps issue uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:e[4],entityId:e[5]}}};var w=class{constructor(){}validate(e){if(!e.repoId)throw new Error("repoId is required");if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.repoId||!e.entityId)throw new Error("Missing required fields for Bitbucket DevOps pull request uniqueId");let t=[];return t.push(e.provider),t.push("pr"),t.push("1"),e.provider==="bitbucketServer"?t.push(e.domain):t.push(""),t.push(e.repoId),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<6)throw new Error("Invalid Bitbucket DevOps pull request uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:e[4],entityId:e[5]}}};var C=class{constructor(){}validate(e){if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.entityId)throw new Error("Missing required fields for Github issue uniqueId");let t=[];return t.push(e.provider),t.push("issue"),t.push("1"),e.provider==="githubEnterprise"?t.push(e.domain):t.push(""),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<5)throw new Error("Invalid Github issue uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:e[4]}}};var T=class{constructor(){}validate(e){if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.entityId)throw new Error("Missing required fields for Github pull request uniqueId");let t=[];return t.push(e.provider),t.push("pr"),t.push("1"),e.provider==="githubEnterprise"?t.push(e.domain):t.push(""),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<5)throw new Error("Invalid Github pull request uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:e[4]}}};var A=class{constructor(){}validate(e){if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.entityId)throw new Error("Missing required fields for Gitlab issue uniqueId");let t=[];return t.push(e.provider),t.push("issue"),t.push("1"),e.provider==="gitlabSelfHosted"?t.push(e.domain):t.push(""),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<5)throw new Error("Invalid Gitlab issue uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:e[4]}}};var x=class{constructor(){}validate(e){if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.entityId)throw new Error("Missing required fields for Gitlab pull request uniqueId");let t=[];return t.push(e.provider),t.push("pr"),t.push("1"),e.provider==="gitlabSelfHosted"?t.push(e.domain):t.push(""),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<5)throw new Error("Invalid Gitlab pull request uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:e[4]}}};var O=class{constructor(){}validate(e){if(!e.projectId)throw new Error("projectId is required");if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.projectId||!e.entityId)throw new Error("Missing required fields for Jira issue uniqueId");let t=[];return t.push(e.provider),t.push("issue"),t.push("1"),e.provider=="jira"?(t.push(""),t.push(e.resourceId)):(t.push(e.domain),t.push("")),t.push(e.projectId),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<7)throw new Error("Invalid Jira issue uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:e[4]==""?null:e[4],accountOrOrgId:null,organizationName:null,projectId:e[5],repoId:null,entityId:e[6]}}};var k=class{constructor(){}validate(e){if(!e.accountOrOrgId)throw new Error("accountOrOrgId is required");if(!e.projectId)throw new Error("projectId is required");if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.accountOrOrgId||!e.projectId||!e.entityId)throw new Error("Missing required fields for Trello issue uniqueId");let t=[];return t.push("trello"),t.push("issue"),t.push("1"),t.push(""),t.push(e.accountOrOrgId),t.push(e.projectId),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<7)throw new Error("Invalid Trello issue uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:e[4],organizationName:null,projectId:e[5],repoId:null,entityId:e[6]}}};var we=(r,e)=>{if(e!=="issue"&&e!=="pr")throw new Error("unknown entityType");switch(r){case"azure":case"azureDevOpsServer":return e==="pr"?new q:new P;case"bitbucket":case"bitbucketServer":return e==="pr"?new w:new b;case"github":case"githubEnterprise":return e==="pr"?new T:new C;case"gitlab":case"gitlabSelfHosted":return e==="pr"?new x:new A;case"jira":case"jiraServer":if(e==="pr")throw new Error("EntityType PullRequest is not valid for Jira");return new O;case"trello":if(e==="pr")throw new Error("EntityType PullRequest is not valid for Jira");return new k;default:throw new Error("unknown provider")}};var ne=r=>{let e=JSON.parse(r);if(!e||!e.length)throw new Error("invalid issue unique id");return we(e[0],e[1]).decode(e)};var d=(r,e,t,i)=>({id:r,faIconName:t,name:e,priority:i,pullRequests:[]}),_="pinned",j="readyToMerge",W="unassignedReviewers",L="failingCI",$="conflicts",H="needsMyReview",V="changesRequested",J="reviewerCommented",K="waitingForReview",Q="draft",Y="other",F="snoozed",se="readyToMerge",oe="unassignedReviewers",ue="failingCI",ae="conflicts",le="needsMyReview",de="changesRequested",pe="reviewerCommented",ce="waitingForReview",ge="draft",fe="other",me=(r,e,t)=>r.map(i=>{let n={...i,...{suggestedActionCategory:fe,priority:1e3,viewer:{canMerge:!1,isAuthor:!1,isAssignee:!1,isReviewer:!1,shouldMerge:!1,shouldAssignReviewer:!1,waitingOnReviews:!1,shouldReview:!1},failingCI:!1,hasConflicts:!1,changeRequestReviewCount:0,codeSuggestionsCount:0,commentReviewCount:0,approvalReviewCount:0}};e&&(n.viewer.isAuthor=i.author?.id===e.id,n.viewer.isAssignee=i.assignees?.some(s=>s.id===e.id)??!1,n.viewer.isReviewer=i.reviews?.some(s=>s.reviewer.id===e.id)??!1),n.viewer.canMerge=i.permissions?.canMerge??!0,n.hasConflicts=i.mergeableState==="CONFLICTS",n.failingCI=i.headCommit?.buildStatuses?.some(s=>s.state==="ERROR"||s.state==="FAILED")||i.mergeableState==="FAILING_CHECKS",n.commentReviewCount=i.reviews?.filter(s=>s.state==="COMMENTED").length??0,n.approvalReviewCount=i.reviews?.filter(s=>s.state==="APPROVED").length??0,n.changeRequestReviewCount=i.reviews?.filter(s=>s.state==="CHANGES_REQUESTED").length??0;let o=t?.enrichedItemsByUniqueId?.[i.uuid];o!=null&&(n.viewer.enrichedItems=o,o.some(s=>s.type==="pin")&&(n.viewer.pinned=!0,n.priority-=800),o.some(s=>s.type==="snooze")&&(n.viewer.snoozed=!0));let u=t?.codeSuggestionsCountByPrUuid?.[i.uuid]?.count||0;return u&&(n.codeSuggestionsCount=u),(!e||n.viewer.isAuthor||n.viewer.isAssignee&&!n.viewer.isReviewer)&&n.viewer.canMerge&&!n.isDraft&&!n.failingCI&&i.mergeableState==="MERGEABLE"&&(!i.reviewDecision||i.reviewDecision==="APPROVED")&&(n.viewer.shouldMerge=!0,n.suggestedActionCategory=se),(!e||n.viewer.isAuthor)&&i.isDraft&&(n.suggestedActionCategory=ge),(!e||n.viewer.isAuthor)&&i.reviewDecision==="REVIEW_REQUESTED"&&(n.suggestedActionCategory=ce,n.viewer.waitingOnReviews=!0),(!e||n.viewer.isAuthor)&&i.reviewDecision==="COMMENTED"&&(n.suggestedActionCategory=pe),(!e||n.viewer.isAuthor)&&n.failingCI&&(n.suggestedActionCategory=ue),(!e||n.viewer.isAuthor)&&n.hasConflicts&&(n.suggestedActionCategory=ae),(!e||n.viewer.isAuthor)&&(i.reviewDecision==="CHANGES_REQUESTED"||n.codeSuggestionsCount>0)&&(n.suggestedActionCategory=de),(!e||n.viewer.isAuthor)&&!i.reviews?.length&&(n.suggestedActionCategory=oe,n.viewer.shouldAssignReviewer=!0),e&&i.reviews?.some(s=>s.reviewer.id===e.id&&s.state==="REVIEW_REQUESTED")&&(n.suggestedActionCategory=le,n.viewer.shouldReview=!0),n}),Ce=(r,e,t)=>{let i={pinned:d(_,"Pinned","thumbtack",t?.bucketPriorityOverride?.pinned??-1),readyToMerge:d(j,"Ready to Merge","code-merge",t?.bucketPriorityOverride?.readyToMerge??0),unassignedReviewers:d(W,"Unassigned Reviewers","user-plus",t?.bucketPriorityOverride?.unassignedReviewers??1),failingCI:d(L,"Failing CI","circle-x",t?.bucketPriorityOverride?.failingCI??2),conflicts:d($,"Resolve Conflicts","triangle-exclamation",t?.bucketPriorityOverride?.conflicts??3),needsMyReview:d(H,"Needs My Review","eye",t?.bucketPriorityOverride?.needsMyReview??4),changesRequested:d(V,"Suggested Changes","file-plus",t?.bucketPriorityOverride?.changesRequested??5),reviewerCommented:d(J,"Reviewer Commented","comment",t?.bucketPriorityOverride?.reviewerCommented??6),waitingForReview:d(K,"Waiting for Review","circle-pause",t?.bucketPriorityOverride?.waitingForReview??7),draft:d(Q,"Draft","compass-drafting",t?.bucketPriorityOverride?.draft??8),other:d(Y,"Other","ellipsis",t?.bucketPriorityOverride?.other??9),snoozed:d(F,"Snoozed","snooze",t?.bucketPriorityOverride?.snoozed??10)},n=me(r,e,t).reduce((o,u)=>(o[u.uuid]=u,o),{});return r.forEach(o=>{let u=n[o.uuid],s=!0;if(u.viewer.snoozed){i[F].pullRequests.push(o);return}u.viewer.pinned&&i[_].pullRequests.push(o),(!e||u.viewer.isAuthor||u.viewer.isAssignee&&!u.viewer.isReviewer)&&!u.isDraft&&u.viewer.canMerge&&u.mergeableState==="MERGEABLE"&&(!o.reviewDecision||o.reviewDecision==="APPROVED")&&(i[j].pullRequests.push(o),s=!1),u.viewer.shouldAssignReviewer&&(i[W].pullRequests.push(o),s=!1),(!e||u.viewer.isAuthor)&&u.failingCI&&(i[L].pullRequests.push(o),s=!1),(!e||u.viewer.isAuthor)&&u.hasConflicts&&(i[$].pullRequests.push(o),s=!1),u.viewer.shouldReview&&(i[H].pullRequests.push(o),s=!1),(!e||u.viewer.isAuthor)&&(u.reviewDecision==="CHANGES_REQUESTED"||u.codeSuggestionsCount>0)&&(i[V].pullRequests.push(o),s=!1),(!e||u.viewer.isAuthor)&&u.reviewDecision==="COMMENTED"&&(i[J].pullRequests.push(o),s=!1),(!e||u.viewer.isAuthor)&&u.reviewDecision==="REVIEW_REQUESTED"&&(i[K].pullRequests.push(o),s=!1),u.isDraft&&(i[Q].pullRequests.push(o),s=!1),s&&i[Y].pullRequests.push(o)}),Object.values(i).forEach(o=>{o.pullRequests.sort((u,s)=>n[u.uuid].priority-n[s.uuid].priority)}),i},Te=r=>{let e={};return r.forEach(t=>{let i=t.repository.id;e[i]?e[i].pullRequests.push(t):e[i]={name:t.repository.name,priority:0,pullRequests:[t],id:i}}),h(e)},Ae=r=>{let e="internal-no-assignees",t={[e]:{name:"No assignees",priority:-1,pullRequests:[],id:e,faIconName:"user-slash"}};return r.forEach(i=>{i.assignees&&i.assignees.length?i.assignees.forEach(a=>{let n=a.id;t[n]?t[n].pullRequests.push(i):t[n]={accountData:a,name:v(a,`Unknown Assignee ${Object.keys(t).length}`),priority:0,pullRequests:[i],id:n}}):t[e].pullRequests.push(i)}),h(t)},xe=r=>{let e="internal-no-author",t={[e]:{name:"No author",priority:-1,pullRequests:[],id:e,faIconName:"user-slash"}};return r.forEach(i=>{if(i.author){let a=i.author.id;t[a]?t[a].pullRequests.push(i):t[a]={accountData:i.author,name:v(i.author,`Unknown Author ${Object.keys(t).length}`),priority:0,pullRequests:[i],id:a}}else t[e].pullRequests.push(i)}),h(t)},Oe=r=>{let e="internal-no-reviewer",t={[e]:{name:"No reviewers",priority:-1,pullRequests:[],id:e,faIconName:"user-slash"}};return r.forEach(i=>{i.reviews&&i.reviews.length?i.reviews.forEach(a=>{let n=a.reviewer.id;t[n]?t[n].pullRequests.push(i):t[n]={accountData:a.reviewer,name:v(a.reviewer,`Unknown Reviewer ${Object.keys(t).length}`),priority:0,pullRequests:[i],id:n}}):t[e].pullRequests.push(i)}),h(t)},ke=r=>r.azureProject?[`${r.azureProject}-${r.azureOrganizationId}`]:r.providerData?.repositories.nodes.map(e=>`${r.provider}-${e.repositoryId}`)??[],De=(r,e)=>{let t="internal-no-workspace",i={[t]:{name:"No workspace",priority:-1,pullRequests:[],id:t,faIconName:"folder-xmark"}};if(e.length){let a=e.reduce((n,o)=>(ke(o).forEach(s=>{n[s]?n[s].push(o):n[s]=[o]}),n),{});r.forEach(n=>{let{provider:o}=ne(n.uuid),u=o==="github"?n.repository.graphQLId:n.repository.id,s=o==="azure"?[`${o}-${u}`,`${n.repository.project}-${n.repository.owner.login}`]:[`${o}-${u}`],p=!1,U=s.reduce((l,g)=>a[g]?l.concat(a[g]):l,[]);U?.length&&U.forEach(l=>{p=!0;let g=l.id;i[g]?i[g].pullRequests.push(n):i[g]={name:l.name,priority:0,pullRequests:[n],id:g,faIconName:"folder"}}),p||i[t].pullRequests.push(n)})}else i[t].pullRequests=r;return h(i)},Be=(r,e,t,i)=>{let a="internal-no-team",n={[a]:{name:"No team",priority:-1,pullRequests:[],id:a}};return i.length?r.forEach(o=>{let u=!1,s=new Set;s.add(o.author?.id),o.assignees?.forEach(p=>s.add(p.id)),o.reviews?.forEach(p=>s.add(p.reviewer.id)),i.forEach(p=>{if(p.members?.some(l=>{let g=e[l.id]?.[t]?.providerID;return g&&s.has(g)})){u=!0;let l=p.id;n[l]?n[l].pullRequests.push(o):n[l]={name:p.name,priority:0,pullRequests:[o],id:l,teamData:p}}}),u||n[a].pullRequests.push(o)}):n[a].pullRequests=r,h(n)};var B={};I(B,{getPullRequestRank:()=>Se});var Se=(r,e,t)=>{let i=0,a,n;return r.reviews?.forEach(o=>{o.reviewer.id===e&&(a=o.state),o.state==="CHANGES_REQUESTED"?n="CHANGES_REQUESTED":o.state==="APPROVED"&&n!=="CHANGES_REQUESTED"&&(n="APPROVED")}),n||(n="REVIEW_REQUESTED"),r.author?.id===e?i+=1e3:r.assignees?.find(o=>o.id===e)?i+=900:a==="REVIEW_REQUESTED"?i+=800:t&&(i+=700),n==="APPROVED"?r.mergeableState==="MERGEABLE"?i+=100:r.mergeableState==="CONFLICTS"?i+=90:i+=80:n=="CHANGES_REQUESTED"&&(i+=70),i};var S={};I(S,{default:()=>Ge});var Ge={};var G={};I(G,{default:()=>Ne});var Ne={};var N={};I(N,{default:()=>Ue});var Ue={};var ze={azureDevOps:y,bitbucket:R,bitbucketServer:E,github:B,gitlab:S,gitProvider:D,jira:G,trello:N};
1
+ "use strict";var z=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var he=Object.getOwnPropertyNames;var ye=Object.prototype.hasOwnProperty;var I=(r,e)=>{for(var t in e)z(r,t,{get:e[t],enumerable:!0})},Re=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of he(e))!ye.call(r,a)&&a!==t&&z(r,a,{get:()=>e[a],enumerable:!(i=Ie(e,a))||i.enumerable});return r};var ve=r=>Re(z({},"__esModule",{value:!0}),r);var Me={};I(Me,{AzureDevopsUtils:()=>y,BitbucketServerUtils:()=>E,BitbucketUtils:()=>R,GitHubUtils:()=>D,GitLabUtils:()=>S,GitProviderUtils:()=>B,JiraUtils:()=>G,TrelloUtils:()=>N,Utils:()=>ze});module.exports=ve(Me);var y={};I(y,{default:()=>Ee});var Ee={};var R={};I(R,{default:()=>Pe});var Pe={};var E={};I(E,{normalizePermissions:()=>ie,restApiPullRequestToCommonPullRequest:()=>be});var Z={APPROVED:0,COMMENTED:1,REVIEW_REQUESTED:2,CHANGES_REQUESTED:3},X=r=>!r||r.length===0?null:r.reduce((e,t)=>Z[t.state]>Z[e]?t.state:e,"APPROVED"),v=(r,e)=>r.name||r.username||r.email||e,h=r=>{let e=Object.values(r).map(t=>t.name).sort((t,i)=>t.localeCompare(i));return Object.values(r).forEach(t=>{t.priority!==-1&&(t.priority=e.indexOf(t.name))}),r};var qe=globalThis.fetch;var ee=r=>{let e=r.links.self[0].href;return{name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrl??(e&&`${e}/avatar.png`),id:r.id.toString(),username:r.name,url:e}},re=r=>{let e={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},t={UNAPPROVED:"REVIEW_REQUESTED",NEEDS_WORK:"CHANGES_REQUESTED",APPROVED:"APPROVED"},i=r.reviewers.map(s=>({reviewer:ee(s.user),state:t[s.status]})),a=r.toRef.repository.links.clone.find(s=>s.name==="ssh")?.href??null,n=r.toRef.repository.links.clone.find(s=>s.name==="https")?.href??null;n||(n=r.toRef.repository.links.clone.find(s=>s.name==="http")?.href??null);let o=r.fromRef.repository.links.clone.find(s=>s.name==="ssh")?.href??null,u=r.fromRef.repository.links.clone.find(s=>s.name==="https")?.href??null;return u||(u=r.fromRef.repository.links.clone.find(s=>s.name==="http")?.href??null),{id:r.id.toString(),number:r.id,title:r.title,description:r.description,url:r.links.self[0].href,state:e[r.state],isDraft:!1,createdDate:new Date(r.createdDate),updatedDate:new Date(r.updatedDate),closedDate:r.closedDate?new Date(r.closedDate):null,mergedDate:r.state=="MERGED"&&r.closedDate?new Date(r.closedDate):null,baseRef:{name:r.toRef.displayId,oid:r.toRef.latestCommit},headRef:{name:r.fromRef.displayId,oid:r.fromRef.latestCommit},commentCount:r.properties.commentCount,upvoteCount:null,commitCount:null,fileCount:null,additions:null,deletions:null,author:ee(r.author.user),assignees:null,reviews:i,reviewDecision:X(i),repository:{id:r.toRef.repository.id.toString(),name:r.toRef.repository.name,owner:{login:r.toRef.repository.project.key},remoteInfo:n&&a?{cloneUrlHTTPS:n,cloneUrlSSH:a}:null},headRepository:{id:r.fromRef.repository.id.toString(),name:r.fromRef.repository.name,owner:{login:r.fromRef.repository.project.key},remoteInfo:u&&o?{cloneUrlHTTPS:u,cloneUrlSSH:o}:null},headCommit:null,mergeableState:"MERGEABLE",permissions:null,version:r.version}};var be=r=>re(r),ie=r=>r?r.find(e=>e.permission==="USER_ADMIN"||e.permission==="PROJECT_ADMIN"||e.permission==="ADMIN"||e.permission==="SYS_ADMIN"||e.permission==="REPO_ADMIN")?{canCreateWebhook:!0,canPush:!0,isAdmin:!0}:r.find(e=>e.permission==="REPO_WRITE"||e.permission==="REPO_CREATE"||e.permission==="PROJECT_CREATE"||e.permission==="PROJECT_WRITE")?{canCreateWebhook:!1,canPush:!0,isAdmin:!1}:{canCreateWebhook:!1,canPush:!1,isAdmin:!1}:{canCreateWebhook:!1,canPush:!1,isAdmin:!1};var B={};I(B,{CHANGES_REQUESTED_ACTION_CATEGORY:()=>de,CHANGES_REQUESTED_BUCKET_ID:()=>V,CONFLICTS_ACTION_CATEGORY:()=>ae,CONFLICTS_BUCKET_ID:()=>$,DRAFT_ACTION_CATEGORY:()=>ge,DRAFT_BUCKET_ID:()=>Q,FAILING_CI_ACTION_CATEGORY:()=>ue,FAILING_CI_BUCKET_ID:()=>L,NEEDS_MY_REVIEW_ACTION_CATEGORY:()=>le,NEEDS_MY_REVIEW_BUCKET_ID:()=>H,OTHER_ACTION_CATEGORY:()=>fe,OTHER_BUCKET_ID:()=>Y,PINNED_BUCKET_ID:()=>_,READY_TO_MERGE_ACTION_CATEGORY:()=>se,READY_TO_MERGE_BUCKET_ID:()=>j,REVIEWER_COMMENTED_ACTION_CATEGORY:()=>pe,REVIEWER_COMMENTED_BUCKET_ID:()=>J,SNOOZED_BUCKET_ID:()=>F,UNASSIGNED_REVIEWERS_ACTION_CATEGORY:()=>oe,UNASSIGNED_REVIEWERS_BUCKET_ID:()=>W,WAITING_FOR_REVIEW_ACTION_CATEGORY:()=>ce,WAITING_FOR_REVIEW_BUCKET_ID:()=>K,getActionablePullRequests:()=>me,groupPullRequestsByAssignee:()=>Ae,groupPullRequestsByAuthor:()=>xe,groupPullRequestsByGitKrakenTeam:()=>De,groupPullRequestsByRepo:()=>Te,groupPullRequestsByReviewer:()=>Oe,groupPullRequestsByWorkspace:()=>Be,groupPullRequestsIntoBuckets:()=>Ce});var P=class{constructor(){}validate(e){if(!e.organizationName)throw new Error("organizationName is required");if(!e.projectId)throw new Error("projectId is required");if(!e.entityId)throw new Error("issueId is required")}encode(e){if(this.validate(e),!e.organizationName||!e.projectId||!e.entityId)throw new Error("Missing required fields for Azure DevOps issue uniqueId");let t=[];return t.push(e.provider),t.push("issue"),t.push("1"),e.provider==="azureDevOpsServer"?t.push(e.domain):t.push(""),t.push(e.organizationName),t.push(e.projectId),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<7)throw new Error("Invalid Azure DevOps issue uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:e[4],projectId:e[5],repoId:null,entityId:e[6]}}};var q=class{constructor(){}validate(e){if(!e.organizationName)throw new Error("organizationName is required");if(!e.projectId)throw new Error("projectId is required");if(!e.repoId)throw new Error("repoId is required");if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.organizationName||!e.projectId||!e.repoId||!e.entityId)throw new Error("Missing required fields for Azure DevOps pull request uniqueId");let t=[];return t.push(e.provider),t.push("pr"),t.push("1"),e.provider==="azureDevOpsServer"?t.push(e.domain):t.push(""),t.push(e.organizationName),t.push(e.projectId),t.push(e.repoId),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<8)throw new Error("Invalid Azure DevOps pull request uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:e[4],projectId:e[5],repoId:e[6],entityId:e[7]}}};var b=class{constructor(){}validate(e){if(!e.repoId)throw new Error("repoId is required");if(!e.entityId)throw new Error("issueId is required")}encode(e){if(this.validate(e),!e.repoId||!e.entityId)throw new Error("Missing required fields for Bitbucket DevOps issue uniqueId");let t=[];return t.push(e.provider),t.push("issue"),t.push("1"),e.provider==="bitbucketServer"?t.push(e.domain):t.push(""),t.push(e.repoId),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<6)throw new Error("Invalid Bitbucket DevOps issue uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:e[4],entityId:e[5]}}};var w=class{constructor(){}validate(e){if(!e.repoId)throw new Error("repoId is required");if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.repoId||!e.entityId)throw new Error("Missing required fields for Bitbucket DevOps pull request uniqueId");let t=[];return t.push(e.provider),t.push("pr"),t.push("1"),e.provider==="bitbucketServer"?t.push(e.domain):t.push(""),t.push(e.repoId),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<6)throw new Error("Invalid Bitbucket DevOps pull request uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:e[4],entityId:e[5]}}};var C=class{constructor(){}validate(e){if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.entityId)throw new Error("Missing required fields for Github issue uniqueId");let t=[];return t.push(e.provider),t.push("issue"),t.push("1"),e.provider==="githubEnterprise"?t.push(e.domain):t.push(""),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<5)throw new Error("Invalid Github issue uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:e[4]}}};var T=class{constructor(){}validate(e){if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.entityId)throw new Error("Missing required fields for Github pull request uniqueId");let t=[];return t.push(e.provider),t.push("pr"),t.push("1"),e.provider==="githubEnterprise"?t.push(e.domain):t.push(""),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<5)throw new Error("Invalid Github pull request uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:e[4]}}};var A=class{constructor(){}validate(e){if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.entityId)throw new Error("Missing required fields for Gitlab issue uniqueId");let t=[];return t.push(e.provider),t.push("issue"),t.push("1"),e.provider==="gitlabSelfHosted"?t.push(e.domain):t.push(""),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<5)throw new Error("Invalid Gitlab issue uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:e[4]}}};var x=class{constructor(){}validate(e){if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.entityId)throw new Error("Missing required fields for Gitlab pull request uniqueId");let t=[];return t.push(e.provider),t.push("pr"),t.push("1"),e.provider==="gitlabSelfHosted"?t.push(e.domain):t.push(""),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<5)throw new Error("Invalid Gitlab pull request uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:null,organizationName:null,projectId:null,repoId:null,entityId:e[4]}}};var O=class{constructor(){}validate(e){if(!e.projectId)throw new Error("projectId is required");if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.projectId||!e.entityId)throw new Error("Missing required fields for Jira issue uniqueId");let t=[];return t.push(e.provider),t.push("issue"),t.push("1"),e.provider=="jira"?(t.push(""),t.push(e.resourceId)):(t.push(e.domain),t.push("")),t.push(e.projectId),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<7)throw new Error("Invalid Jira issue uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:e[4]==""?null:e[4],accountOrOrgId:null,organizationName:null,projectId:e[5],repoId:null,entityId:e[6]}}};var k=class{constructor(){}validate(e){if(!e.accountOrOrgId)throw new Error("accountOrOrgId is required");if(!e.projectId)throw new Error("projectId is required");if(!e.entityId)throw new Error("entityId is required")}encode(e){if(this.validate(e),!e.accountOrOrgId||!e.projectId||!e.entityId)throw new Error("Missing required fields for Trello issue uniqueId");let t=[];return t.push("trello"),t.push("issue"),t.push("1"),t.push(""),t.push(e.accountOrOrgId),t.push(e.projectId),t.push(e.entityId),JSON.stringify(t)}decode(e){if(e.length<7)throw new Error("Invalid Trello issue uniqueId, check version");return{provider:e[0],entityType:e[1],version:e[2],domain:e[3]==""?null:e[3],resourceId:null,accountOrOrgId:e[4],organizationName:null,projectId:e[5],repoId:null,entityId:e[6]}}};var we=(r,e)=>{if(e!=="issue"&&e!=="pr")throw new Error("unknown entityType");switch(r){case"azure":case"azureDevOpsServer":return e==="pr"?new q:new P;case"bitbucket":case"bitbucketServer":return e==="pr"?new w:new b;case"github":case"githubEnterprise":return e==="pr"?new T:new C;case"gitlab":case"gitlabSelfHosted":return e==="pr"?new x:new A;case"jira":case"jiraServer":if(e==="pr")throw new Error("EntityType PullRequest is not valid for Jira");return new O;case"trello":if(e==="pr")throw new Error("EntityType PullRequest is not valid for Jira");return new k;default:throw new Error("unknown provider")}};var ne=r=>{let e=JSON.parse(r);if(!e||!e.length)throw new Error("invalid issue unique id");return we(e[0],e[1]).decode(e)};var d=(r,e,t,i)=>({id:r,faIconName:t,name:e,priority:i,pullRequests:[]}),_="pinned",j="readyToMerge",W="unassignedReviewers",L="failingCI",$="conflicts",H="needsMyReview",V="changesRequested",J="reviewerCommented",K="waitingForReview",Q="draft",Y="other",F="snoozed",se="readyToMerge",oe="unassignedReviewers",ue="failingCI",ae="conflicts",le="needsMyReview",de="changesRequested",pe="reviewerCommented",ce="waitingForReview",ge="draft",fe="other",me=(r,e,t)=>r.map(i=>{let n={...i,...{suggestedActionCategory:fe,priority:1e3,viewer:{canMerge:!1,isAuthor:!1,isAssignee:!1,isReviewer:!1,shouldMerge:!1,shouldAssignReviewer:!1,waitingOnReviews:!1,shouldReview:!1},failingCI:!1,hasConflicts:!1,changeRequestReviewCount:0,codeSuggestionsCount:0,commentReviewCount:0,approvalReviewCount:0}};e&&(n.viewer.isAuthor=i.author?.id===e.id,n.viewer.isAssignee=i.assignees?.some(s=>s.id===e.id)??!1,n.viewer.isReviewer=i.reviews?.some(s=>s.reviewer.id===e.id)??!1),n.viewer.canMerge=i.permissions?.canMerge??!0,n.hasConflicts=i.mergeableState==="CONFLICTS",n.failingCI=i.headCommit?.buildStatuses?.some(s=>s.state==="ERROR"||s.state==="FAILED")||i.mergeableState==="FAILING_CHECKS",n.commentReviewCount=i.reviews?.filter(s=>s.state==="COMMENTED").length??0,n.approvalReviewCount=i.reviews?.filter(s=>s.state==="APPROVED").length??0,n.changeRequestReviewCount=i.reviews?.filter(s=>s.state==="CHANGES_REQUESTED").length??0;let o=t?.enrichedItemsByUniqueId?.[i.uuid];o!=null&&(n.viewer.enrichedItems=o,o.some(s=>s.type==="pin")&&(n.viewer.pinned=!0,n.priority-=800),o.some(s=>s.type==="snooze")&&(n.viewer.snoozed=!0));let u=t?.codeSuggestionsCountByPrUuid?.[i.uuid]?.count||0;return u&&(n.codeSuggestionsCount=u),(!e||n.viewer.isAuthor||n.viewer.isAssignee&&!n.viewer.isReviewer)&&n.viewer.canMerge&&!n.isDraft&&!n.failingCI&&i.mergeableState==="MERGEABLE"&&(n.viewer.shouldMerge=!0,n.suggestedActionCategory=se),(!e||n.viewer.isAuthor)&&i.isDraft&&(n.suggestedActionCategory=ge),(!e||n.viewer.isAuthor)&&i.reviewDecision==="REVIEW_REQUESTED"&&(n.suggestedActionCategory=ce,n.viewer.waitingOnReviews=!0),(!e||n.viewer.isAuthor)&&i.reviewDecision==="COMMENTED"&&(n.suggestedActionCategory=pe),(!e||n.viewer.isAuthor)&&n.failingCI&&(n.suggestedActionCategory=ue),(!e||n.viewer.isAuthor)&&n.hasConflicts&&(n.suggestedActionCategory=ae),(!e||n.viewer.isAuthor)&&(i.reviewDecision==="CHANGES_REQUESTED"||n.codeSuggestionsCount>0)&&(n.suggestedActionCategory=de),(!e||n.viewer.isAuthor)&&!i.reviews?.length&&(n.suggestedActionCategory=oe,n.viewer.shouldAssignReviewer=!0),e&&i.reviews?.some(s=>s.reviewer.id===e.id&&s.state==="REVIEW_REQUESTED")&&(n.suggestedActionCategory=le,n.viewer.shouldReview=!0),n}),Ce=(r,e,t)=>{let i={pinned:d(_,"Pinned","thumbtack",t?.bucketPriorityOverride?.pinned??-1),readyToMerge:d(j,"Ready to Merge","code-merge",t?.bucketPriorityOverride?.readyToMerge??0),unassignedReviewers:d(W,"Unassigned Reviewers","user-plus",t?.bucketPriorityOverride?.unassignedReviewers??1),failingCI:d(L,"Failing CI","circle-x",t?.bucketPriorityOverride?.failingCI??2),conflicts:d($,"Resolve Conflicts","triangle-exclamation",t?.bucketPriorityOverride?.conflicts??3),needsMyReview:d(H,"Needs My Review","eye",t?.bucketPriorityOverride?.needsMyReview??4),changesRequested:d(V,"Suggested Changes","file-plus",t?.bucketPriorityOverride?.changesRequested??5),reviewerCommented:d(J,"Reviewer Commented","comment",t?.bucketPriorityOverride?.reviewerCommented??6),waitingForReview:d(K,"Waiting for Review","circle-pause",t?.bucketPriorityOverride?.waitingForReview??7),draft:d(Q,"Draft","compass-drafting",t?.bucketPriorityOverride?.draft??8),other:d(Y,"Other","ellipsis",t?.bucketPriorityOverride?.other??9),snoozed:d(F,"Snoozed","snooze",t?.bucketPriorityOverride?.snoozed??10)},n=me(r,e,t).reduce((o,u)=>(o[u.uuid]=u,o),{});return r.forEach(o=>{let u=n[o.uuid],s=!0;if(u.viewer.snoozed){i[F].pullRequests.push(o);return}u.viewer.pinned&&i[_].pullRequests.push(o),(!e||u.viewer.isAuthor||u.viewer.isAssignee&&!u.viewer.isReviewer)&&!u.isDraft&&u.viewer.canMerge&&u.mergeableState==="MERGEABLE"&&(i[j].pullRequests.push(o),s=!1),u.viewer.shouldAssignReviewer&&(i[W].pullRequests.push(o),s=!1),(!e||u.viewer.isAuthor)&&u.failingCI&&(i[L].pullRequests.push(o),s=!1),(!e||u.viewer.isAuthor)&&u.hasConflicts&&(i[$].pullRequests.push(o),s=!1),u.viewer.shouldReview&&(i[H].pullRequests.push(o),s=!1),(!e||u.viewer.isAuthor)&&(u.reviewDecision==="CHANGES_REQUESTED"||u.codeSuggestionsCount>0)&&(i[V].pullRequests.push(o),s=!1),(!e||u.viewer.isAuthor)&&u.reviewDecision==="COMMENTED"&&(i[J].pullRequests.push(o),s=!1),(!e||u.viewer.isAuthor)&&u.reviewDecision==="REVIEW_REQUESTED"&&(i[K].pullRequests.push(o),s=!1),u.isDraft&&(i[Q].pullRequests.push(o),s=!1),s&&i[Y].pullRequests.push(o)}),Object.values(i).forEach(o=>{o.pullRequests.sort((u,s)=>n[u.uuid].priority-n[s.uuid].priority)}),i},Te=r=>{let e={};return r.forEach(t=>{let i=t.repository.id;e[i]?e[i].pullRequests.push(t):e[i]={name:t.repository.name,priority:0,pullRequests:[t],id:i}}),h(e)},Ae=r=>{let e="internal-no-assignees",t={[e]:{name:"No assignees",priority:-1,pullRequests:[],id:e,faIconName:"user-slash"}};return r.forEach(i=>{i.assignees&&i.assignees.length?i.assignees.forEach(a=>{let n=a.id;t[n]?t[n].pullRequests.push(i):t[n]={accountData:a,name:v(a,`Unknown Assignee ${Object.keys(t).length}`),priority:0,pullRequests:[i],id:n}}):t[e].pullRequests.push(i)}),h(t)},xe=r=>{let e="internal-no-author",t={[e]:{name:"No author",priority:-1,pullRequests:[],id:e,faIconName:"user-slash"}};return r.forEach(i=>{if(i.author){let a=i.author.id;t[a]?t[a].pullRequests.push(i):t[a]={accountData:i.author,name:v(i.author,`Unknown Author ${Object.keys(t).length}`),priority:0,pullRequests:[i],id:a}}else t[e].pullRequests.push(i)}),h(t)},Oe=r=>{let e="internal-no-reviewer",t={[e]:{name:"No reviewers",priority:-1,pullRequests:[],id:e,faIconName:"user-slash"}};return r.forEach(i=>{i.reviews&&i.reviews.length?i.reviews.forEach(a=>{let n=a.reviewer.id;t[n]?t[n].pullRequests.push(i):t[n]={accountData:a.reviewer,name:v(a.reviewer,`Unknown Reviewer ${Object.keys(t).length}`),priority:0,pullRequests:[i],id:n}}):t[e].pullRequests.push(i)}),h(t)},ke=r=>r.azureProject?[`${r.azureProject}-${r.azureOrganizationId}`]:r.providerData?.repositories.nodes.map(e=>`${r.provider}-${e.repositoryId}`)??[],Be=(r,e)=>{let t="internal-no-workspace",i={[t]:{name:"No workspace",priority:-1,pullRequests:[],id:t,faIconName:"folder-xmark"}};if(e.length){let a=e.reduce((n,o)=>(ke(o).forEach(s=>{n[s]?n[s].push(o):n[s]=[o]}),n),{});r.forEach(n=>{let{provider:o}=ne(n.uuid),u=o==="github"?n.repository.graphQLId:n.repository.id,s=o==="azure"?[`${o}-${u}`,`${n.repository.project}-${n.repository.owner.login}`]:[`${o}-${u}`],p=!1,U=s.reduce((l,g)=>a[g]?l.concat(a[g]):l,[]);U?.length&&U.forEach(l=>{p=!0;let g=l.id;i[g]?i[g].pullRequests.push(n):i[g]={name:l.name,priority:0,pullRequests:[n],id:g,faIconName:"folder"}}),p||i[t].pullRequests.push(n)})}else i[t].pullRequests=r;return h(i)},De=(r,e,t,i)=>{let a="internal-no-team",n={[a]:{name:"No team",priority:-1,pullRequests:[],id:a}};return i.length?r.forEach(o=>{let u=!1,s=new Set;s.add(o.author?.id),o.assignees?.forEach(p=>s.add(p.id)),o.reviews?.forEach(p=>s.add(p.reviewer.id)),i.forEach(p=>{if(p.members?.some(l=>{let g=e[l.id]?.[t]?.providerID;return g&&s.has(g)})){u=!0;let l=p.id;n[l]?n[l].pullRequests.push(o):n[l]={name:p.name,priority:0,pullRequests:[o],id:l,teamData:p}}}),u||n[a].pullRequests.push(o)}):n[a].pullRequests=r,h(n)};var D={};I(D,{getPullRequestRank:()=>Se});var Se=(r,e,t)=>{let i=0,a,n;return r.reviews?.forEach(o=>{o.reviewer.id===e&&(a=o.state),o.state==="CHANGES_REQUESTED"?n="CHANGES_REQUESTED":o.state==="APPROVED"&&n!=="CHANGES_REQUESTED"&&(n="APPROVED")}),n||(n="REVIEW_REQUESTED"),r.author?.id===e?i+=1e3:r.assignees?.find(o=>o.id===e)?i+=900:a==="REVIEW_REQUESTED"?i+=800:t&&(i+=700),n==="APPROVED"?r.mergeableState==="MERGEABLE"?i+=100:r.mergeableState==="CONFLICTS"?i+=90:i+=80:n=="CHANGES_REQUESTED"&&(i+=70),i};var S={};I(S,{default:()=>Ge});var Ge={};var G={};I(G,{default:()=>Ne});var Ne={};var N={};I(N,{default:()=>Ue});var Ue={};var ze={azureDevOps:y,bitbucket:R,bitbucketServer:E,github:D,gitlab:S,gitProvider:B,jira:G,trello:N};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitkraken/provider-apis",
3
- "version": "0.41.0",
3
+ "version": "0.42.0",
4
4
  "description": "An SDK around different third-party APIs that accepts and returns data in a common format.",
5
5
  "author": "Axosoft, LLC dba GitKraken",
6
6
  "license": "SEE LICENSE IN LICENSE",