@gitkraken/provider-apis 0.14.0 → 0.14.1
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 +11 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +115 -115
- package/dist/providers/azureDevops/azureDevOpsTypes.d.ts +6 -0
- package/dist/providers/issueProvider.d.ts +2 -0
- package/dist/providers/jiraServer/jiraServer.d.ts +44 -0
- package/dist/types.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var et=Object.create;var K=Object.defineProperty;var tt=Object.getOwnPropertyDescriptor;var st=Object.getOwnPropertyNames;var rt=Object.getPrototypeOf,nt=Object.prototype.hasOwnProperty;var A=(t,r)=>{for(var e in r)K(t,e,{get:r[e],enumerable:!0})},Te=(t,r,e,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of st(r))!nt.call(t,n)&&n!==e&&K(t,n,{get:()=>r[n],enumerable:!(s=tt(r,n))||s.enumerable});return t};var at=(t,r,e)=>(e=t!=null?et(rt(t)):{},Te(r||!t||!t.__esModule?K(e,"default",{value:t,enumerable:!0}):e,t)),ot=t=>Te(K({},"__esModule",{value:!0}),t);var us={};A(us,{AzureDevOps:()=>j,AzureDevopsUtils:()=>se,Bitbucket:()=>B,BitbucketServer:()=>F,BitbucketServerUtils:()=>ne,BitbucketUtils:()=>re,GitHub:()=>M,GitHubUtils:()=>ae,GitLab:()=>W,GitLabUtils:()=>oe,Jira:()=>J,JiraUtils:()=>ie,Trello:()=>H,TrelloUtils:()=>ue,Utils:()=>is,default:()=>os});module.exports=ot(us);var Fe=require("js-base64");var $=100;var xe=at(require("node-fetch")),ke=globalThis.fetch||xe.default;var _e=t=>t.name==="fetch";var it=async t=>{let r=t.headers.get("content-type")||"",e=null;if(r.startsWith("application/json")){let n=await t.text();e=n.trim().length>0?JSON.parse(n):null}else if(r.startsWith("text/")||r==="")e=await t.text();else throw new Error(`Unsupported content-type: ${r}`);let s={body:e,headers:Object.fromEntries(t.headers.entries()),status:t.status,statusText:t.statusText};if(!t.ok){let n=new Error(t.statusText);throw Object.assign(n,{response:s}),n}return s},le=t=>_e(t)?async({url:r,...e})=>{let s=await t(r,e);return it(s)}:t;var E=class{constructor(r){this.config={...r,request:le((r==null?void 0:r.request)||ke)}}updateConfig(r){this.config={...this.config,...r,request:r.request?le(r.request):this.config.request}}},T=class extends E{};var h=(t,r)=>{let e={};return t&&(e.Authorization=`${r?"Basic":"Bearer"} ${t}`),e};var y=(t,r={})=>h(r.token||t.token,r.isPAT||t.isPAT),Qe=t=>t.url.replace("/_apis/git/repositories/","/_git/").replace(`/${t.repository.project.id}/`,`/${encodeURIComponent(t.repository.project.name)}/`).replace(`/${t.repository.id}/`,`/${encodeURIComponent(t.repository.name)}/`).replace("/pullRequests/","/pullrequest/");var Ne="https://app.vssps.visualstudio.com/_apis",w="https://dev.azure.com",ut={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},lt={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},pe=t=>({id:t.id,name:t.displayName,username:t.uniqueName||t.displayName,email:null,avatarUrl:t.imageUrl}),X=t=>t.startsWith("refs/heads/")?t.replace("refs/heads/",""):t,je=t=>{var r;return{id:t.pullRequestId.toString(),title:t.title,number:t.codeReviewId,state:ut[t.status],isDraft:t.isDraft,commentCount:null,upvoteCount:null,author:pe(t.createdBy),createdDate:new Date(t.creationDate),updatedDate:new Date(t.closedDate||t.creationDate),closedDate:t.closedDate?new Date(t.closedDate):null,repository:{name:t.repository.name,owner:{login:void 0}},headCommit:{buildStatuses:null},baseRef:{name:X(t.targetRefName),oid:t.lastMergeTargetCommit.commitId},headRef:{name:X(t.sourceRefName),oid:t.lastMergeSourceCommit.commitId},url:Qe(t),assignees:t.reviewers.map(pe),reviews:t.reviewers.filter(e=>e.vote!==0).map(e=>({reviewer:pe(e),state:lt[e.vote]||"REVIEW_REQUESTED"})),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN",labels:((r=t.labels)==null?void 0:r.map(e=>({color:null,description:null,id:e.id,name:e.name})))??[]}},Be=(t,r)=>({id:r.id,name:r.name,namespace:t,project:r.project.name,webUrl:r.webUrl,httpsUrl:r.remoteUrl,sshUrl:r.sshUrl,defaultBranch:r.defaultBranch?{name:X(r.defaultBranch)}:null,permission:null}),pt=(t,r)=>{var i,u;let e=t.fields,s=e["System.AssignedTo"],n=e["System.State"],o=e["System.WorkItemType"],a;return n&&o&&(a=(i=r[o])==null?void 0:i[n]),{id:t.id.toString(),number:t.id.toString(),title:e["System.Title"],commentCount:e["System.CommentCount"],author:{avatarUrl:e["System.CreatedBy"]._links.avatar.href,email:null,id:e["System.CreatedBy"].id,name:e["System.CreatedBy"].uniqueName,username:e["System.CreatedBy"].displayName},createdDate:new Date(e["System.CreatedDate"]),updatedDate:new Date(e["System.ChangedDate"]),url:t._links.html.href,assignees:s?[{avatarUrl:s._links.avatar.href,email:null,id:s.id,name:s.uniqueName,username:s.displayName}]:[],description:null,state:{name:(a==null?void 0:a.title)||n,color:null},type:e["System.WorkItemType"],repository:null,upvoteCount:0,labels:((u=t.fields["System.Tags"])==null?void 0:u.split(";").map(l=>({color:null,description:null,id:null,name:l.trim()})))??[]}},j=class extends E{async getCurrentUser(r={}){if(r.isPAT||this.config.isPAT)throw new Error("Azure DevOps does not support PATs for this function.");let e=await this.config.request({url:`${Ne}/profile/profiles/me`,headers:y(this.config,r)});return{data:{id:e.body.id,name:e.body.displayName,username:e.body.displayName,email:e.body.emailAddress,avatarUrl:null}}}async getCurrentUserForInstance(r,e={}){let n=(await this.config.request({url:`${w}/${encodeURIComponent(r.namespace)}/_apis/ConnectionData`,headers:y(this.config,e)})).body.authorizedUser;if(n.providerDisplayName==="Anonymous")throw new Error("Current user not found.");return{data:{id:n.id,name:n.providerDisplayName,username:n.providerDisplayName,email:n.properties.Account.$value,avatarUrl:null}}}async getUserForCommit(r,e={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=(await this.config.request({url:`${w}/${encodeURIComponent(r.repo.namespace)}/${encodeURIComponent(r.repo.project)}/_apis/git/repositories/${encodeURIComponent(r.repo.name)}/commits/${r.oid}`,headers:y(this.config,e)})).body.author;return{data:{name:n.name,email:n.email,avatarUrl:n.imageUrl}}}async getOrgsForUser(r,e={}){return{data:(await this.config.request({url:`${Ne}/accounts?memberId=${r.userId}&api-version=6.0`,headers:y(this.config,e)})).body.value.map(n=>({id:n.accountId,name:n.accountName}))}}async getAzureProjects(r,e={}){let s=new URL(`${w}/${encodeURIComponent(r.namespace)}/_apis/projects`);s.searchParams.set("$top",$.toString()),r.cursor&&s.searchParams.set("$skip",r.cursor);let n=await this.config.request({url:s.toString(),headers:y(this.config,e)}),o=n.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!o,endCursor:o||null},data:n.body.value.map(a=>({id:a.id,name:a.name,namespace:r.namespace}))}}async getAzureProjectScopeDescriptor(r,e={}){let{namespace:s,projectId:n}=r;return{data:{scope:(await this.config.request({url:`https://vssps.dev.azure.com/${encodeURIComponent(s)}/_apis/graph/descriptors/${n}?api-version=6.0`,headers:y(this.config,e)})).body.value}}}async getAccountsForAzureProject(r,e={}){let{namespace:s,projectScopeDescriptor:n}=r,o=new URL(`https://vssps.dev.azure.com/${encodeURIComponent(s)}/_apis/graph/users`);return n&&o.searchParams.set("scopeDescriptor",n),{data:(await this.config.request({url:o.toString(),headers:y(this.config,e)})).body.value.map(i=>{var u;return{id:Fe.Base64.decode(i.descriptor.replace(/.+?\./,"")),name:i.displayName,username:i.displayName,email:i.mailAddress,avatarUrl:(u=i._links.avatar)==null?void 0:u.href}})}}async getRepo(r,e={}){if(!r.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let s=await this.config.request({url:`${w}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/git/repositories/${encodeURIComponent(r.name)}`,headers:y(this.config,e)});return{data:Be(r.namespace,s.body)}}async getRepos(r,e={}){let s=[],n=[];return await Promise.all(r.map(async o=>{try{let a=await this.getRepo(o,e);s.push(a.data)}catch(a){n.push({input:o,error:a})}})),{data:s,errors:n}}async getReposForAzureProject(r,e={}){if(!r.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');return{data:(await this.config.request({url:`${w}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/git/repositories`,headers:y(this.config,e)})).body.value.map(n=>Be(r.namespace,n))}}async getRefs(r,e,s={}){if(!e.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=new URL(`${w}/${encodeURIComponent(e.repo.namespace)}/${encodeURIComponent(e.repo.project)}/_apis/git/repositories/${encodeURIComponent(e.repo.name)}/refs`);n.searchParams.set("filter",r),n.searchParams.set("$top",$.toString()),e.cursor&&n.searchParams.set("continuationToken",e.cursor);let o=await this.config.request({url:n.toString(),headers:y(this.config,s)}),a=o.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!a,endCursor:a||null},data:o.body.value.map(i=>({name:X(i.name),commit:{oid:i.objectId,authoredDate:null,committedDate:null}}))}}async getBranches(r,e={}){return this.getRefs("heads",r,e)}async getTags(r,e={}){return this.getRefs("tags",r,e)}async getPullRequestsForRepoBase(r,e={},s=100){let{page:n,repo:o,assigneeLogins:a,authorLogin:i}=r||{},u=n||1;if(!o.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let l="searchCriteria.status=1";return a&&a.length&&(l+=`&searchCriteria.reviewerId=${a[0]}`),i&&(l+=`&searchCriteria.creatorId=${i}`),await this.config.request({url:`${e.baseUrl||w}/${encodeURIComponent(o.namespace)}/${encodeURIComponent(o.project||"")}/_apis/git/repositories/${encodeURIComponent(o.name)}/pullRequests?${l}&%24top=${s}&%24skip=${(u-1)*s}`,headers:y(this.config,e)})}async getPullRequestsForRepo(r,e={}){let n=r.page||1,o=await this.getPullRequestsForRepoBase(r,e,100);return{pageInfo:{hasNextPage:o.body.value.length===100,nextPage:n+1},data:o.body.value.map(je)}}async getPullRequestsForRepos(r,e={}){if(!r.repos.every(o=>o.project))throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repos:s}=r||{},n=[];return await Promise.all(s.map(async o=>{try{(await this.getPullRequestsForRepoBase({repo:o,...r},e)).body.value.forEach(i=>{n.push(je(i))})}catch(a){if(a.statusCode!==404&&a.statusCode!==401)throw a}})),{data:n}}async getAzurePullRequestLastMergeStatus(r,e={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:{namespace:s,project:n,name:o},pullRequestId:a}=r,i=await this.config.request({url:`${e.baseUrl||w}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${a}?includeCommits=true?api-version=6.0`,headers:{...y(this.config,e)}});if(!i.body.mergeStatus)throw new Error("Could not fetch pull request");return{data:i.body.mergeStatus}}async updatePullRequest(r,e,s,n){let{namespace:o,project:a,name:i}=r;return await this.config.request({method:"PATCH",url:`${n.baseUrl||w}/${encodeURIComponent(o)}/${encodeURIComponent(a||"")}/_apis/git/repositories/${i}/pullrequests/${e}?api-version=6.0`,body:s,headers:{...y(this.config,n),"Content-Type":"application/json"}})}async closePullRequest(r,e={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:s,pullRequestId:n}=r,o={status:"abandoned"};if(!(await this.updatePullRequest(s,n,JSON.stringify(o),e)).body.status)throw new Error("Could not close pull request")}async mergePullRequest(r,e={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:s,pullRequestId:n,expectedSourceSha:o,mergeStrategy:a}=r,i;switch(a){case"MERGE_COMMIT":{i="noFastForward";break}case"REBASE":{i="rebase";break}case"REBASE_THEN_MERGE_COMMIT":{i="rebaseMerge";break}case"SQUASH":{i="squash";break}}let u={completionOptions:{mergeStrategy:i},lastMergeSourceCommit:{commitId:o},status:"completed"};if(!(await this.updatePullRequest(s,n,JSON.stringify(u),e)).body.status)throw new Error("Could not merge pull request")}async addPullRequestLabel(r,e={}){let{repo:{namespace:s,project:n,name:o},pullRequestId:a,labelName:i}=r;if(!n)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let u={name:i};if(!(await this.config.request({method:"POST",url:`${e.baseUrl||w}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${a}/labels?api-version=6.0`,body:JSON.stringify(u),headers:{...y(this.config,e),"Content-Type":"application/json"}})).body.id)throw new Error("Could not add pull request label")}async removePullRequestLabel(r,e={}){let{repo:{namespace:s,project:n,name:o},pullRequestId:a,labelNameOrId:i}=r;if(!n)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');await this.config.request({method:"DELETE",url:`${e.baseUrl||w}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${a}/labels/${encodeURIComponent(i)}?api-version=6.0`,headers:{...y(this.config,e)}})}async setPullRequestAsDraft(r,e={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:s,pullRequestId:n,isDraft:o}=r,a={isDraft:o};if(!(await this.updatePullRequest(s,n,JSON.stringify(a),e)).body.status)throw new Error("Could not set the pull request as draft")}async addPullRequestReviewer(r,e={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:{namespace:s,project:n,name:o},pullRequestId:a,reviewerId:i,isRequired:u}=r,l={id:i,isRequired:u};if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||w}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${a}/reviewers/${i}?api-version=6.0`,body:JSON.stringify(l),headers:{...y(this.config,e),"Content-Type":"application/json"}})).body.id)throw new Error("Could not add pull request reviewer")}async removePullRequestReviewer(r,e={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:{namespace:s,project:n,name:o},pullRequestId:a,reviewerId:i}=r;await this.config.request({method:"DELETE",url:`${e.baseUrl||w}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${a}/reviewers/${i}?api-version=6.0`,headers:{...y(this.config,e),Accept:"application/json"}})}async getIssuesForAzureProject(r,e={}){let{page:s,assigneeLogins:n,authorLogin:o,mentionLogin:a,statusByWorkItemIdByStatusId:i}=r||{},u=s||1,l=200,p=["[Microsoft.VSTS.Common.ClosedDate] = ''","[System.TeamProject] = @project","[Microsoft.VSTS.Common.ResolvedDate] = ''"];o&&p.push(`[System.CreatedBy] = '${o.replace("'","''")}'`),n&&n[0]&&p.push(`[System.AssignedTo] = '${n[0].replace("'","''")}'`),a&&p.push("[System.Id] IN (@recentMentions)");let d=`Select [Microsoft.VSTS.Common.ClosedDate], [Microsoft.VSTS.Common.ResolvedDate] From WorkItems Where ${p.join(" AND ")} order by [System.CreatedDate] desc`,c=await this.config.request({url:`${e.baseUrl||w}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/wit/wiql?api-version=6.0`,body:JSON.stringify({query:d}),method:"POST",headers:{...y(this.config,e),"Content-Type":"application/json"}}),g=c.body.workItems.slice((u-1)*l,l*u).map(R=>R.id);if(g.length==0)return{pageInfo:{hasNextPage:!1,nextPage:null},data:[]};let m=await this.config.request({url:`${e.baseUrl||w}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/wit/workitemsbatch?api-version=6.0`,body:JSON.stringify({ids:g,$expand:"Links"}),method:"POST",headers:{...y(this.config,e),"Content-Type":"application/json"}});return{pageInfo:{hasNextPage:c.body.workItems.length>l*u,nextPage:u+1},data:m.body.value.map(R=>pt(R,i||{}))}}async updateIssue(r,e,s,n,o={}){return await this.config.request({method:"PATCH",url:`${o.baseUrl||w}/${encodeURIComponent(r)}/${encodeURIComponent(e||"")}/_apis/wit/workitems/${s}?api-version=6.0`,body:JSON.stringify(n),headers:{...y(this.config,o),"Content-Type":"application/json-patch+json"}})}async setIssueStatus(r,e={}){var l;if(!r.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{namespace:s,project:n,issueId:o,status:a}=r,i=[{op:"add",path:"/fields/System.State",value:a}];if(!((l=(await this.updateIssue(s,n,o,i,e)).body.fields)!=null&&l["System.State"]))throw new Error("Could not set issue status")}async setIssueAssignee(r,e={}){var l;if(!r.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{namespace:s,project:n,issueId:o,assigneeNameOrEmail:a}=r,i=[{op:"add",path:"/fields/System.AssignedTo",value:a??""}];if(!((l=(await this.updateIssue(s,n,o,i,e)).body.fields)!=null&&l["System.State"]))throw new Error("Could not set issue assignee")}async setIssueLabels(r,e={}){var l;let{namespace:s,project:n,issueId:o,tagNames:a}=r,i=[{op:"replace",path:"/fields/System.Tags",value:a.join(";")}];if(!((l=(await this.updateIssue(s,n,o,i,e)).body.fields)!=null&&l["System.Tags"]))throw new Error("Could not set issue tags")}async getIssueTypesForAzureProject(r,e={}){if(!r.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{namespace:s,project:n}=r;return{data:(await this.config.request({url:`${e.baseUrl||w}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/workitemtypes?api-version=6.0`,headers:{...y(this.config,e)}})).body.value}}async getLabelsForProject(r,e={}){let{namespace:s,project:n}=r;return{data:(await this.config.request({url:`${e.baseUrl||w}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/tags?api-version=6.0`,headers:{...y(this.config,e)}})).body.value.map(a=>({color:null,description:null,id:a.id,name:a.name}))}}};var C=(t,r={})=>h(r.token||t.token,r.isPAT||t.isPAT);var S="https://api.bitbucket.org/2.0",dt={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},ze=t=>({id:t.uuid,name:t.display_name||t.nickname,username:t.nickname||t.display_name,email:null,avatarUrl:t.links.avatar.href}),Me=t=>{var r,e;return{id:t.uuid,namespace:t.workspace.slug,name:t.slug,webUrl:t.links.html.href,httpsUrl:((r=t.links.clone.find(s=>s.name==="https"))==null?void 0:r.href)??null,sshUrl:((e=t.links.clone.find(s=>s.name==="ssh"))==null?void 0:e.href)??null,defaultBranch:{name:t.mainbranch.name},permission:null}},me=t=>{let r=t.id;return{id:r.toString(),title:t.title,number:r,state:dt[t.state],isDraft:!1,commentCount:t.comment_count,upvoteCount:null,author:ze(t.author),createdDate:new Date(t.created_on),updatedDate:new Date(t.updated_on),closedDate:null,repository:{name:t.source.repository.name,owner:{login:void 0}},headCommit:{buildStatuses:null},baseRef:{name:t.destination.branch.name,oid:t.destination.commit.hash},headRef:{name:t.source.branch.name,oid:t.source.commit.hash},url:t.links.html.href,assignees:null,reviews:null,additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN"}},B=class extends E{async refreshToken(r){return{data:(await this.config.request({url:"https://bitbucket.org/site/oauth2/access_token",method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Authorization:`Basic ${r.base64ClientIDColonClientSecret}`},body:`grant_type=refresh_token&refresh_token=${r.refreshToken}`})).body}}async getCurrentUser(r={}){let e=await this.config.request({url:`${S}/user`,headers:C(this.config,r)});return{data:ze(e.body)}}async getUserForCommit(r,e={}){var a;let n=(await this.config.request({url:`${S}/repositories/${r.repo.namespace}/${r.repo.name}/commit/${r.oid}`,headers:C(this.config,e)})).body.author,o=n.raw.match(/([^<]+)<(.+)>/);return{data:{name:o?o[1].trim():null,email:o?o[2]:null,avatarUrl:((a=n.user)==null?void 0:a.links.avatar.href)||null}}}async getRepo(r,e={}){let s=await this.config.request({url:`${S}/repositories/${r.namespace}/${r.name}`,headers:C(this.config,e)});return{data:Me(s.body)}}async getRepos(r,e={}){let s=[],n=[];return await Promise.all(r.map(async o=>{try{let a=await this.getRepo(o,e);s.push(a.data)}catch(a){n.push({input:o,error:a})}})),{data:s,errors:n}}async getReposForCurrentUser(r={},e={}){let s=new URL(`${S}/repositories`);s.searchParams.set("role","member"),s.searchParams.set("pagelen",$.toString()),r.cursor&&s.searchParams.set("after",r.cursor);let n=await this.config.request({url:s.toString(),headers:C(this.config,e)}),o=!!n.body.next,a=null;return n.body.next&&(a=new URL(n.body.next).searchParams.get("after")),{pageInfo:{hasNextPage:o,endCursor:a},data:n.body.values.map(Me)}}async getBranches(r,e={}){var a;let s=new URL(`${S}/repositories/${r.repo.namespace}/${r.repo.name}/refs/branches`);s.searchParams.set("page",((a=r.page)==null?void 0:a.toString())||"1"),s.searchParams.set("pagelen",$.toString());let n=await this.config.request({url:s.toString(),headers:C(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(i=>{let u=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:u,committedDate:u}}})}}async getTags(r,e={}){let s=new URL(`${S}/repositories/${r.repo.namespace}/${r.repo.name}/refs/tags`);s.searchParams.set("pagelen",$.toString()),r.cursor&&s.searchParams.set("page",r.cursor);let n=await this.config.request({url:s.toString(),headers:C(this.config,e)}),o=!!n.body.next,a=null;return n.body.next&&(a=new URL(n.body.next).searchParams.get("page")),{pageInfo:{hasNextPage:o,endCursor:a},data:n.body.values.map(i=>{let u=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:u,committedDate:u}}})}}async getPullRequestsForUser(r,e={}){var a;let s=new URL(`${S}/pullrequests/${r.userId}`);s.searchParams.set("page",((a=r.page)==null?void 0:a.toString())||"1"),s.searchParams.set("pagelen","50");let n=await this.config.request({url:`${S}/pullrequests/${r.userId}`,headers:C(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(me)}}async getPullRequestsForRepoBase(r,e={}){var n;let s=new URL(`${S}/repositories/${encodeURI(r.repo.namespace)}/${encodeURI(r.repo.name)}/pullrequests?state=OPEN`);return s.searchParams.set("page",((n=r.page)==null?void 0:n.toString())||"1"),s.searchParams.set("pagelen","50"),await this.config.request({url:s.toString(),headers:C(this.config,e)})}async getPullRequestsForRepo(r,e={}){let s=[],n=await this.getPullRequestsForRepoBase(r,e);n.body.values.forEach(a=>{if(r.authorLogin&&a.author.uuid!==r.authorLogin)return null;s.push(me(a))});let o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:s}}async getPullRequestsForRepos(r,e={}){let s=[];return await Promise.all(r.repos.map(async n=>{try{(await this.getPullRequestsForRepoBase({repo:n,...r},e)).body.values.forEach(a=>{if(r.authorLogin&&a.author.uuid!==r.authorLogin)return null;s.push(me(a))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:s}}async closePullRequest(r,e={}){let{repo:{namespace:s,name:n},pullRequestId:o}=r;if(!(await this.config.request({method:"POST",url:`${S}/repositories/${s}/${n}/pullrequests/${o}/decline`,headers:C(this.config,e)})).body.title)throw new Error("Could not close pull request")}async mergePullRequest(r,e={}){let{repo:{namespace:s,name:n},pullRequestId:o,mergeStrategy:a}=r,i;switch(a){case"MERGE_COMMIT":{i="merge_commit";break}case"FAST_FORWARD":{i="fast_forward";break}case"SQUASH":{i="squash";break}}let u={merge_strategy:i,type:"pullrequest"};if(!(await this.config.request({method:"POST",url:`${S}/repositories/${s}/${n}/pullrequests/${o}/merge`,body:JSON.stringify(u),headers:{...C(this.config,e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not merge pull request")}async setPullRequestReviewers(r,e={}){let{repo:{namespace:s,name:n},pullRequestId:o,reviewerUsernames:a}=r,i={reviewers:a.map(l=>({username:l}))};if(!(await this.config.request({method:"PUT",url:`${S}/repositories/${s}/${n}/pullrequests/${o}`,body:JSON.stringify(i),headers:{...C(this.config,e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not set pull request reviewers")}};var F=class extends T{getBaseUrl(r){let e=r.baseUrl||this.config.baseUrl;if(!e)throw new Error('Bitbucket Server requires "baseUrl"');return e}getRequestHeaders(r){return h(r.token||this.config.token)}async getRepo(r,e={}){var n,o,a;let s=await this.config.request({url:`${this.getBaseUrl(e)}/projects/${r.namespace}/repos/${r.name}`,headers:this.getRequestHeaders(e)});return{data:{id:s.body.id.toString(),namespace:s.body.project.key,name:s.body.slug,webUrl:((n=s.body.links.self[0])==null?void 0:n.href)??null,httpsUrl:((o=s.body.links.clone.find(i=>i.name==="https"))==null?void 0:o.href)??null,sshUrl:((a=s.body.links.clone.find(i=>i.name==="ssh"))==null?void 0:a.href)??null,defaultBranch:null,permission:null}}}async getRepos(r,e={}){let s=[],n=[];return await Promise.all(r.map(async o=>{try{let a=await this.getRepo(o,e);s.push(a.data)}catch(a){n.push({input:o,error:a})}})),{data:s,errors:n}}async closePullRequest(r,e){let{repo:{namespace:s,name:n},pullRequestId:o,version:a}=r;if(!(await this.config.request({method:"POST",url:`${this.getBaseUrl(e)}/projects/${s}/repos/${n}/pull-requests/${o}/decline`,body:JSON.stringify({version:a}),headers:{...this.getRequestHeaders(e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not close pull request")}async mergePullRequest(r,e){let{repo:{namespace:s,name:n},pullRequestId:o,mergeStrategyId:a,version:i}=r;if(!(await this.config.request({method:"POST",url:`${this.getBaseUrl(e)}/projects/${s}/repos/${n}/pull-requests/${o}/merge`,body:JSON.stringify({strategyId:a,version:i}),headers:{...this.getRequestHeaders(e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not merge pull request")}async getMergeStrategies(r){let e=await this.config.request({url:`${this.getBaseUrl(r)}/admin/pull-requests/git`,headers:{...this.getRequestHeaders(r),"Content-Type":"application/json"}});return{data:{defaultStrategy:e.body.mergeConfig.defaultStrategy,strategies:e.body.mergeConfig.strategies}}}async setPullRequestReviewers(r,e={}){let{repo:{namespace:s,name:n},pullRequestId:o,reviewerUsernames:a,version:i}=r,u={reviewers:a.map(p=>({user:{name:p}})),version:i};if(!(await this.config.request({method:"PUT",url:`${this.getBaseUrl(e)}/projects/${s}/repos/${n}/pull-requests/${o}`,body:JSON.stringify(u),headers:{...this.getRequestHeaders(e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not set pull request reviewers")}};var he="https://api.github.com",ct=`${he}/graphql`,Y=`
|
|
1
|
+
"use strict";var tt=Object.create;var X=Object.defineProperty;var st=Object.getOwnPropertyDescriptor;var rt=Object.getOwnPropertyNames;var nt=Object.getPrototypeOf,at=Object.prototype.hasOwnProperty;var x=(t,s)=>{for(var e in s)X(t,e,{get:s[e],enumerable:!0})},Te=(t,s,e,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let n of rt(s))!at.call(t,n)&&n!==e&&X(t,n,{get:()=>s[n],enumerable:!(r=st(s,n))||r.enumerable});return t};var ot=(t,s,e)=>(e=t!=null?tt(nt(t)):{},Te(s||!t||!t.__esModule?X(e,"default",{value:t,enumerable:!0}):e,t)),it=t=>Te(X({},"__esModule",{value:!0}),t);var gs={};x(gs,{AzureDevOps:()=>Q,AzureDevopsUtils:()=>re,Bitbucket:()=>B,BitbucketServer:()=>F,BitbucketServerUtils:()=>ae,BitbucketUtils:()=>ne,GitHub:()=>M,GitHubUtils:()=>oe,GitLab:()=>J,GitLabUtils:()=>ie,Jira:()=>W,JiraServer:()=>H,JiraUtils:()=>ue,Trello:()=>V,TrelloUtils:()=>le,Utils:()=>cs,default:()=>ds});module.exports=it(gs);var Me=require("js-base64");var $=100;var ke=ot(require("node-fetch")),_e=globalThis.fetch||ke.default;var Ne=t=>t.name==="fetch";var ut=async t=>{let s=t.headers.get("content-type")||"",e=null;if(s.startsWith("application/json")){let n=await t.text();e=n.trim().length>0?JSON.parse(n):null}else if(s.startsWith("text/")||s==="")e=await t.text();else throw new Error(`Unsupported content-type: ${s}`);let r={body:e,headers:Object.fromEntries(t.headers.entries()),status:t.status,statusText:t.statusText};if(!t.ok){let n=new Error(t.statusText);throw Object.assign(n,{response:r}),n}return r},pe=t=>Ne(t)?async({url:s,...e})=>{let r=await t(s,e);return ut(r)}:t;var U=class{constructor(s){this.config={...s,request:pe((s==null?void 0:s.request)||_e)}}updateConfig(s){this.config={...this.config,...s,request:s.request?pe(s.request):this.config.request}}},D=class extends U{};var h=(t,s)=>{let e={};return t&&(e.Authorization=`${s?"Basic":"Bearer"} ${t}`),e};var y=(t,s={})=>h(s.token||t.token,s.isPAT||t.isPAT),je=t=>t.url.replace("/_apis/git/repositories/","/_git/").replace(`/${t.repository.project.id}/`,`/${encodeURIComponent(t.repository.project.name)}/`).replace(`/${t.repository.id}/`,`/${encodeURIComponent(t.repository.name)}/`).replace("/pullRequests/","/pullrequest/");var Qe="https://app.vssps.visualstudio.com/_apis",w="https://dev.azure.com",lt={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},pt={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},de=t=>({id:t.id,name:t.displayName,username:t.uniqueName||t.displayName,email:null,avatarUrl:t.imageUrl}),Z=t=>t.startsWith("refs/heads/")?t.replace("refs/heads/",""):t,Be=t=>{var s;return{id:t.pullRequestId.toString(),title:t.title,number:t.codeReviewId,state:lt[t.status],isDraft:t.isDraft,commentCount:null,upvoteCount:null,author:de(t.createdBy),createdDate:new Date(t.creationDate),updatedDate:new Date(t.closedDate||t.creationDate),closedDate:t.closedDate?new Date(t.closedDate):null,repository:{name:t.repository.name,owner:{login:void 0}},headCommit:{buildStatuses:null},baseRef:{name:Z(t.targetRefName),oid:t.lastMergeTargetCommit.commitId},headRef:{name:Z(t.sourceRefName),oid:t.lastMergeSourceCommit.commitId},url:je(t),assignees:t.reviewers.map(de),reviews:t.reviewers.filter(e=>e.vote!==0).map(e=>({reviewer:de(e),state:pt[e.vote]||"REVIEW_REQUESTED"})),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN",labels:((s=t.labels)==null?void 0:s.map(e=>({color:null,description:null,id:e.id,name:e.name})))??[]}},Fe=(t,s)=>({id:s.id,name:s.name,namespace:t,project:s.project.name,webUrl:s.webUrl,httpsUrl:s.remoteUrl,sshUrl:s.sshUrl,defaultBranch:s.defaultBranch?{name:Z(s.defaultBranch)}:null,permission:null}),dt=(t,s)=>{var i,u;let e=t.fields,r=e["System.AssignedTo"],n=e["System.State"],o=e["System.WorkItemType"],a;return n&&o&&(a=(i=s[o])==null?void 0:i[n]),{id:t.id.toString(),number:t.id.toString(),title:e["System.Title"],commentCount:e["System.CommentCount"],author:{avatarUrl:e["System.CreatedBy"]._links.avatar.href,email:null,id:e["System.CreatedBy"].id,name:e["System.CreatedBy"].uniqueName,username:e["System.CreatedBy"].displayName},createdDate:new Date(e["System.CreatedDate"]),updatedDate:new Date(e["System.ChangedDate"]),url:t._links.html.href,assignees:r?[{avatarUrl:r._links.avatar.href,email:null,id:r.id,name:r.uniqueName,username:r.displayName}]:[],description:null,state:{name:(a==null?void 0:a.title)||n,color:null},type:e["System.WorkItemType"],repository:null,upvoteCount:0,labels:((u=t.fields["System.Tags"])==null?void 0:u.split(";").map(l=>({color:null,description:null,id:null,name:l.trim()})))??[]}},Q=class extends U{async getCurrentUser(s={}){if(s.isPAT||this.config.isPAT)throw new Error("Azure DevOps does not support PATs for this function.");let e=await this.config.request({url:`${Qe}/profile/profiles/me`,headers:y(this.config,s)});return{data:{id:e.body.id,name:e.body.displayName,username:e.body.displayName,email:e.body.emailAddress,avatarUrl:null}}}async getCurrentUserForInstance(s,e={}){let n=(await this.config.request({url:`${w}/${encodeURIComponent(s.namespace)}/_apis/ConnectionData`,headers:y(this.config,e)})).body.authorizedUser;if(n.providerDisplayName==="Anonymous")throw new Error("Current user not found.");return{data:{id:n.id,name:n.providerDisplayName,username:n.providerDisplayName,email:n.properties.Account.$value,avatarUrl:null}}}async getUserForCommit(s,e={}){if(!s.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=(await this.config.request({url:`${w}/${encodeURIComponent(s.repo.namespace)}/${encodeURIComponent(s.repo.project)}/_apis/git/repositories/${encodeURIComponent(s.repo.name)}/commits/${s.oid}`,headers:y(this.config,e)})).body.author;return{data:{name:n.name,email:n.email,avatarUrl:n.imageUrl}}}async getOrgsForUser(s,e={}){return{data:(await this.config.request({url:`${Qe}/accounts?memberId=${s.userId}&api-version=6.0`,headers:y(this.config,e)})).body.value.map(n=>({id:n.accountId,name:n.accountName}))}}async getAzureProjects(s,e={}){let r=new URL(`${w}/${encodeURIComponent(s.namespace)}/_apis/projects`);r.searchParams.set("$top",$.toString()),s.cursor&&r.searchParams.set("$skip",s.cursor);let n=await this.config.request({url:r.toString(),headers:y(this.config,e)}),o=n.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!o,endCursor:o||null},data:n.body.value.map(a=>({id:a.id,name:a.name,namespace:s.namespace}))}}async getAzureProjectScopeDescriptor(s,e={}){let{namespace:r,projectId:n}=s;return{data:{scope:(await this.config.request({url:`https://vssps.dev.azure.com/${encodeURIComponent(r)}/_apis/graph/descriptors/${n}?api-version=6.0`,headers:y(this.config,e)})).body.value}}}async getAccountsForAzureProject(s,e={}){let{namespace:r,projectScopeDescriptor:n}=s,o=new URL(`https://vssps.dev.azure.com/${encodeURIComponent(r)}/_apis/graph/users`);return n&&o.searchParams.set("scopeDescriptor",n),{data:(await this.config.request({url:o.toString(),headers:y(this.config,e)})).body.value.map(i=>{var u;return{id:Me.Base64.decode(i.descriptor.replace(/.+?\./,"")),name:i.displayName,username:i.displayName,email:i.mailAddress,avatarUrl:(u=i._links.avatar)==null?void 0:u.href}})}}async getRepo(s,e={}){if(!s.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let r=await this.config.request({url:`${w}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/git/repositories/${encodeURIComponent(s.name)}`,headers:y(this.config,e)});return{data:Fe(s.namespace,r.body)}}async getRepos(s,e={}){let r=[],n=[];return await Promise.all(s.map(async o=>{try{let a=await this.getRepo(o,e);r.push(a.data)}catch(a){n.push({input:o,error:a})}})),{data:r,errors:n}}async getReposForAzureProject(s,e={}){if(!s.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');return{data:(await this.config.request({url:`${w}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/git/repositories`,headers:y(this.config,e)})).body.value.map(n=>Fe(s.namespace,n))}}async getRefs(s,e,r={}){if(!e.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=new URL(`${w}/${encodeURIComponent(e.repo.namespace)}/${encodeURIComponent(e.repo.project)}/_apis/git/repositories/${encodeURIComponent(e.repo.name)}/refs`);n.searchParams.set("filter",s),n.searchParams.set("$top",$.toString()),e.cursor&&n.searchParams.set("continuationToken",e.cursor);let o=await this.config.request({url:n.toString(),headers:y(this.config,r)}),a=o.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!a,endCursor:a||null},data:o.body.value.map(i=>({name:Z(i.name),commit:{oid:i.objectId,authoredDate:null,committedDate:null}}))}}async getBranches(s,e={}){return this.getRefs("heads",s,e)}async getTags(s,e={}){return this.getRefs("tags",s,e)}async getPullRequestsForRepoBase(s,e={},r=100){let{page:n,repo:o,assigneeLogins:a,authorLogin:i}=s||{},u=n||1;if(!o.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let l="searchCriteria.status=1";return a&&a.length&&(l+=`&searchCriteria.reviewerId=${a[0]}`),i&&(l+=`&searchCriteria.creatorId=${i}`),await this.config.request({url:`${e.baseUrl||w}/${encodeURIComponent(o.namespace)}/${encodeURIComponent(o.project||"")}/_apis/git/repositories/${encodeURIComponent(o.name)}/pullRequests?${l}&%24top=${r}&%24skip=${(u-1)*r}`,headers:y(this.config,e)})}async getPullRequestsForRepo(s,e={}){let n=s.page||1,o=await this.getPullRequestsForRepoBase(s,e,100);return{pageInfo:{hasNextPage:o.body.value.length===100,nextPage:n+1},data:o.body.value.map(Be)}}async getPullRequestsForRepos(s,e={}){if(!s.repos.every(o=>o.project))throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repos:r}=s||{},n=[];return await Promise.all(r.map(async o=>{try{(await this.getPullRequestsForRepoBase({repo:o,...s},e)).body.value.forEach(i=>{n.push(Be(i))})}catch(a){if(a.statusCode!==404&&a.statusCode!==401)throw a}})),{data:n}}async getAzurePullRequestLastMergeStatus(s,e={}){if(!s.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:{namespace:r,project:n,name:o},pullRequestId:a}=s,i=await this.config.request({url:`${e.baseUrl||w}/${encodeURIComponent(r)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${a}?includeCommits=true?api-version=6.0`,headers:{...y(this.config,e)}});if(!i.body.mergeStatus)throw new Error("Could not fetch pull request");return{data:i.body.mergeStatus}}async updatePullRequest(s,e,r,n){let{namespace:o,project:a,name:i}=s;return await this.config.request({method:"PATCH",url:`${n.baseUrl||w}/${encodeURIComponent(o)}/${encodeURIComponent(a||"")}/_apis/git/repositories/${i}/pullrequests/${e}?api-version=6.0`,body:r,headers:{...y(this.config,n),"Content-Type":"application/json"}})}async closePullRequest(s,e={}){if(!s.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:r,pullRequestId:n}=s,o={status:"abandoned"};if(!(await this.updatePullRequest(r,n,JSON.stringify(o),e)).body.status)throw new Error("Could not close pull request")}async mergePullRequest(s,e={}){if(!s.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:r,pullRequestId:n,expectedSourceSha:o,mergeStrategy:a}=s,i;switch(a){case"MERGE_COMMIT":{i="noFastForward";break}case"REBASE":{i="rebase";break}case"REBASE_THEN_MERGE_COMMIT":{i="rebaseMerge";break}case"SQUASH":{i="squash";break}}let u={completionOptions:{mergeStrategy:i},lastMergeSourceCommit:{commitId:o},status:"completed"};if(!(await this.updatePullRequest(r,n,JSON.stringify(u),e)).body.status)throw new Error("Could not merge pull request")}async addPullRequestLabel(s,e={}){let{repo:{namespace:r,project:n,name:o},pullRequestId:a,labelName:i}=s;if(!n)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let u={name:i};if(!(await this.config.request({method:"POST",url:`${e.baseUrl||w}/${encodeURIComponent(r)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${a}/labels?api-version=6.0`,body:JSON.stringify(u),headers:{...y(this.config,e),"Content-Type":"application/json"}})).body.id)throw new Error("Could not add pull request label")}async removePullRequestLabel(s,e={}){let{repo:{namespace:r,project:n,name:o},pullRequestId:a,labelNameOrId:i}=s;if(!n)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');await this.config.request({method:"DELETE",url:`${e.baseUrl||w}/${encodeURIComponent(r)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${a}/labels/${encodeURIComponent(i)}?api-version=6.0`,headers:{...y(this.config,e)}})}async setPullRequestAsDraft(s,e={}){if(!s.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:r,pullRequestId:n,isDraft:o}=s,a={isDraft:o};if(!(await this.updatePullRequest(r,n,JSON.stringify(a),e)).body.status)throw new Error("Could not set the pull request as draft")}async addPullRequestReviewer(s,e={}){if(!s.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:{namespace:r,project:n,name:o},pullRequestId:a,reviewerId:i,isRequired:u}=s,l={id:i,isRequired:u};if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||w}/${encodeURIComponent(r)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${a}/reviewers/${i}?api-version=6.0`,body:JSON.stringify(l),headers:{...y(this.config,e),"Content-Type":"application/json"}})).body.id)throw new Error("Could not add pull request reviewer")}async removePullRequestReviewer(s,e={}){if(!s.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:{namespace:r,project:n,name:o},pullRequestId:a,reviewerId:i}=s;await this.config.request({method:"DELETE",url:`${e.baseUrl||w}/${encodeURIComponent(r)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${a}/reviewers/${i}?api-version=6.0`,headers:{...y(this.config,e),Accept:"application/json"}})}async getIssuesForAzureProject(s,e={}){let{page:r,assigneeLogins:n,authorLogin:o,mentionLogin:a,statusByWorkItemIdByStatusId:i}=s||{},u=r||1,l=200,p=["[Microsoft.VSTS.Common.ClosedDate] = ''","[System.TeamProject] = @project","[Microsoft.VSTS.Common.ResolvedDate] = ''"];o&&p.push(`[System.CreatedBy] = '${o.replace("'","''")}'`),n&&n[0]&&p.push(`[System.AssignedTo] = '${n[0].replace("'","''")}'`),a&&p.push("[System.Id] IN (@recentMentions)");let d=`Select [Microsoft.VSTS.Common.ClosedDate], [Microsoft.VSTS.Common.ResolvedDate] From WorkItems Where ${p.join(" AND ")} order by [System.CreatedDate] desc`,c=await this.config.request({url:`${e.baseUrl||w}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/wit/wiql?api-version=6.0`,body:JSON.stringify({query:d}),method:"POST",headers:{...y(this.config,e),"Content-Type":"application/json"}}),g=c.body.workItems.slice((u-1)*l,l*u).map(R=>R.id);if(g.length==0)return{pageInfo:{hasNextPage:!1,nextPage:null},data:[]};let m=await this.config.request({url:`${e.baseUrl||w}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/wit/workitemsbatch?api-version=6.0`,body:JSON.stringify({ids:g,$expand:"Links"}),method:"POST",headers:{...y(this.config,e),"Content-Type":"application/json"}});return{pageInfo:{hasNextPage:c.body.workItems.length>l*u,nextPage:u+1},data:m.body.value.map(R=>dt(R,i||{}))}}async updateIssue(s,e,r,n,o={}){return await this.config.request({method:"PATCH",url:`${o.baseUrl||w}/${encodeURIComponent(s)}/${encodeURIComponent(e||"")}/_apis/wit/workitems/${r}?api-version=6.0`,body:JSON.stringify(n),headers:{...y(this.config,o),"Content-Type":"application/json-patch+json"}})}async setIssueStatus(s,e={}){var l;if(!s.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{namespace:r,project:n,issueId:o,status:a}=s,i=[{op:"add",path:"/fields/System.State",value:a}];if(!((l=(await this.updateIssue(r,n,o,i,e)).body.fields)!=null&&l["System.State"]))throw new Error("Could not set issue status")}async setIssueAssignee(s,e={}){var l;if(!s.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{namespace:r,project:n,issueId:o,assigneeNameOrEmail:a}=s,i=[{op:"add",path:"/fields/System.AssignedTo",value:a??""}];if(!((l=(await this.updateIssue(r,n,o,i,e)).body.fields)!=null&&l["System.State"]))throw new Error("Could not set issue assignee")}async setIssueLabels(s,e={}){var l;let{namespace:r,project:n,issueId:o,tagNames:a}=s,i=[{op:"replace",path:"/fields/System.Tags",value:a.join(";")}];if(!((l=(await this.updateIssue(r,n,o,i,e)).body.fields)!=null&&l["System.Tags"]))throw new Error("Could not set issue tags")}async getIssueTypesForAzureProject(s,e={}){if(!s.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{namespace:r,project:n}=s;return{data:(await this.config.request({url:`${e.baseUrl||w}/${encodeURIComponent(r)}/${encodeURIComponent(n||"")}/_apis/wit/workitemtypes?api-version=6.0`,headers:{...y(this.config,e)}})).body.value}}async getLabelsForProject(s,e={}){let{namespace:r,project:n}=s;return{data:(await this.config.request({url:`${e.baseUrl||w}/${encodeURIComponent(r)}/${encodeURIComponent(n||"")}/_apis/wit/tags?api-version=6.0`,headers:{...y(this.config,e)}})).body.value.map(a=>({color:null,description:null,id:a.id,name:a.name}))}}};var S=(t,s={})=>h(s.token||t.token,s.isPAT||t.isPAT);var C="https://api.bitbucket.org/2.0",ct={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},Je=t=>({id:t.uuid,name:t.display_name||t.nickname,username:t.nickname||t.display_name,email:null,avatarUrl:t.links.avatar.href}),ze=t=>{var s,e;return{id:t.uuid,namespace:t.workspace.slug,name:t.slug,webUrl:t.links.html.href,httpsUrl:((s=t.links.clone.find(r=>r.name==="https"))==null?void 0:s.href)??null,sshUrl:((e=t.links.clone.find(r=>r.name==="ssh"))==null?void 0:e.href)??null,defaultBranch:{name:t.mainbranch.name},permission:null}},he=t=>{let s=t.id;return{id:s.toString(),title:t.title,number:s,state:ct[t.state],isDraft:!1,commentCount:t.comment_count,upvoteCount:null,author:Je(t.author),createdDate:new Date(t.created_on),updatedDate:new Date(t.updated_on),closedDate:null,repository:{name:t.source.repository.name,owner:{login:void 0}},headCommit:{buildStatuses:null},baseRef:{name:t.destination.branch.name,oid:t.destination.commit.hash},headRef:{name:t.source.branch.name,oid:t.source.commit.hash},url:t.links.html.href,assignees:null,reviews:null,additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN"}},B=class extends U{async refreshToken(s){return{data:(await this.config.request({url:"https://bitbucket.org/site/oauth2/access_token",method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Authorization:`Basic ${s.base64ClientIDColonClientSecret}`},body:`grant_type=refresh_token&refresh_token=${s.refreshToken}`})).body}}async getCurrentUser(s={}){let e=await this.config.request({url:`${C}/user`,headers:S(this.config,s)});return{data:Je(e.body)}}async getUserForCommit(s,e={}){var a;let n=(await this.config.request({url:`${C}/repositories/${s.repo.namespace}/${s.repo.name}/commit/${s.oid}`,headers:S(this.config,e)})).body.author,o=n.raw.match(/([^<]+)<(.+)>/);return{data:{name:o?o[1].trim():null,email:o?o[2]:null,avatarUrl:((a=n.user)==null?void 0:a.links.avatar.href)||null}}}async getRepo(s,e={}){let r=await this.config.request({url:`${C}/repositories/${s.namespace}/${s.name}`,headers:S(this.config,e)});return{data:ze(r.body)}}async getRepos(s,e={}){let r=[],n=[];return await Promise.all(s.map(async o=>{try{let a=await this.getRepo(o,e);r.push(a.data)}catch(a){n.push({input:o,error:a})}})),{data:r,errors:n}}async getReposForCurrentUser(s={},e={}){let r=new URL(`${C}/repositories`);r.searchParams.set("role","member"),r.searchParams.set("pagelen",$.toString()),s.cursor&&r.searchParams.set("after",s.cursor);let n=await this.config.request({url:r.toString(),headers:S(this.config,e)}),o=!!n.body.next,a=null;return n.body.next&&(a=new URL(n.body.next).searchParams.get("after")),{pageInfo:{hasNextPage:o,endCursor:a},data:n.body.values.map(ze)}}async getBranches(s,e={}){var a;let r=new URL(`${C}/repositories/${s.repo.namespace}/${s.repo.name}/refs/branches`);r.searchParams.set("page",((a=s.page)==null?void 0:a.toString())||"1"),r.searchParams.set("pagelen",$.toString());let n=await this.config.request({url:r.toString(),headers:S(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(i=>{let u=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:u,committedDate:u}}})}}async getTags(s,e={}){let r=new URL(`${C}/repositories/${s.repo.namespace}/${s.repo.name}/refs/tags`);r.searchParams.set("pagelen",$.toString()),s.cursor&&r.searchParams.set("page",s.cursor);let n=await this.config.request({url:r.toString(),headers:S(this.config,e)}),o=!!n.body.next,a=null;return n.body.next&&(a=new URL(n.body.next).searchParams.get("page")),{pageInfo:{hasNextPage:o,endCursor:a},data:n.body.values.map(i=>{let u=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:u,committedDate:u}}})}}async getPullRequestsForUser(s,e={}){var a;let r=new URL(`${C}/pullrequests/${s.userId}`);r.searchParams.set("page",((a=s.page)==null?void 0:a.toString())||"1"),r.searchParams.set("pagelen","50");let n=await this.config.request({url:`${C}/pullrequests/${s.userId}`,headers:S(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(he)}}async getPullRequestsForRepoBase(s,e={}){var n;let r=new URL(`${C}/repositories/${encodeURI(s.repo.namespace)}/${encodeURI(s.repo.name)}/pullrequests?state=OPEN`);return r.searchParams.set("page",((n=s.page)==null?void 0:n.toString())||"1"),r.searchParams.set("pagelen","50"),await this.config.request({url:r.toString(),headers:S(this.config,e)})}async getPullRequestsForRepo(s,e={}){let r=[],n=await this.getPullRequestsForRepoBase(s,e);n.body.values.forEach(a=>{if(s.authorLogin&&a.author.uuid!==s.authorLogin)return null;r.push(he(a))});let o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:r}}async getPullRequestsForRepos(s,e={}){let r=[];return await Promise.all(s.repos.map(async n=>{try{(await this.getPullRequestsForRepoBase({repo:n,...s},e)).body.values.forEach(a=>{if(s.authorLogin&&a.author.uuid!==s.authorLogin)return null;r.push(he(a))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:r}}async closePullRequest(s,e={}){let{repo:{namespace:r,name:n},pullRequestId:o}=s;if(!(await this.config.request({method:"POST",url:`${C}/repositories/${r}/${n}/pullrequests/${o}/decline`,headers:S(this.config,e)})).body.title)throw new Error("Could not close pull request")}async mergePullRequest(s,e={}){let{repo:{namespace:r,name:n},pullRequestId:o,mergeStrategy:a}=s,i;switch(a){case"MERGE_COMMIT":{i="merge_commit";break}case"FAST_FORWARD":{i="fast_forward";break}case"SQUASH":{i="squash";break}}let u={merge_strategy:i,type:"pullrequest"};if(!(await this.config.request({method:"POST",url:`${C}/repositories/${r}/${n}/pullrequests/${o}/merge`,body:JSON.stringify(u),headers:{...S(this.config,e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not merge pull request")}async setPullRequestReviewers(s,e={}){let{repo:{namespace:r,name:n},pullRequestId:o,reviewerUsernames:a}=s,i={reviewers:a.map(l=>({username:l}))};if(!(await this.config.request({method:"PUT",url:`${C}/repositories/${r}/${n}/pullrequests/${o}`,body:JSON.stringify(i),headers:{...S(this.config,e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not set pull request reviewers")}};var F=class extends D{getBaseUrl(s){let e=s.baseUrl||this.config.baseUrl;if(!e)throw new Error('Bitbucket Server requires "baseUrl"');return e}getRequestHeaders(s){return h(s.token||this.config.token)}async getRepo(s,e={}){var n,o,a;let r=await this.config.request({url:`${this.getBaseUrl(e)}/projects/${s.namespace}/repos/${s.name}`,headers:this.getRequestHeaders(e)});return{data:{id:r.body.id.toString(),namespace:r.body.project.key,name:r.body.slug,webUrl:((n=r.body.links.self[0])==null?void 0:n.href)??null,httpsUrl:((o=r.body.links.clone.find(i=>i.name==="https"))==null?void 0:o.href)??null,sshUrl:((a=r.body.links.clone.find(i=>i.name==="ssh"))==null?void 0:a.href)??null,defaultBranch:null,permission:null}}}async getRepos(s,e={}){let r=[],n=[];return await Promise.all(s.map(async o=>{try{let a=await this.getRepo(o,e);r.push(a.data)}catch(a){n.push({input:o,error:a})}})),{data:r,errors:n}}async closePullRequest(s,e){let{repo:{namespace:r,name:n},pullRequestId:o,version:a}=s;if(!(await this.config.request({method:"POST",url:`${this.getBaseUrl(e)}/projects/${r}/repos/${n}/pull-requests/${o}/decline`,body:JSON.stringify({version:a}),headers:{...this.getRequestHeaders(e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not close pull request")}async mergePullRequest(s,e){let{repo:{namespace:r,name:n},pullRequestId:o,mergeStrategyId:a,version:i}=s;if(!(await this.config.request({method:"POST",url:`${this.getBaseUrl(e)}/projects/${r}/repos/${n}/pull-requests/${o}/merge`,body:JSON.stringify({strategyId:a,version:i}),headers:{...this.getRequestHeaders(e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not merge pull request")}async getMergeStrategies(s){let e=await this.config.request({url:`${this.getBaseUrl(s)}/admin/pull-requests/git`,headers:{...this.getRequestHeaders(s),"Content-Type":"application/json"}});return{data:{defaultStrategy:e.body.mergeConfig.defaultStrategy,strategies:e.body.mergeConfig.strategies}}}async setPullRequestReviewers(s,e={}){let{repo:{namespace:r,name:n},pullRequestId:o,reviewerUsernames:a,version:i}=s,u={reviewers:a.map(p=>({user:{name:p}})),version:i};if(!(await this.config.request({method:"PUT",url:`${this.getBaseUrl(e)}/projects/${r}/repos/${n}/pull-requests/${o}`,body:JSON.stringify(u),headers:{...this.getRequestHeaders(e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not set pull request reviewers")}};var fe="https://api.github.com",gt=`${fe}/graphql`,ee=`
|
|
2
2
|
description
|
|
3
3
|
dueOn
|
|
4
4
|
id
|
|
@@ -6,26 +6,26 @@ number
|
|
|
6
6
|
state
|
|
7
7
|
title
|
|
8
8
|
url
|
|
9
|
-
`,We=/\/api\/v\d+$/,
|
|
9
|
+
`,We=/\/api\/v\d+$/,te=`
|
|
10
10
|
color
|
|
11
11
|
description
|
|
12
12
|
id
|
|
13
13
|
name
|
|
14
|
-
`,
|
|
14
|
+
`,mt=t=>{if(t.endsWith("/api/graphql"))throw new Error("The graphql endpoint is being used as the baseUrl. This package uses both GraphQL and REST APIs, and the REST version cannot be assumed. Use the REST endpoint as the baseUrl instead.")},ht=(t,s)=>{let e=s.baseUrl||t.baseUrl;return e?(e=e.replace(/\/$/,""),mt(e),We.test(e)&&(e=e.replace(We,"")),`${e}/api/graphql`):gt},f=(t,s,e)=>{let r=h(e.token||t.token);return r["X-Github-Next-Global-ID"]="1",r["Content-Type"]="application/json",t.request({url:ht(t,e),method:"POST",headers:r,body:JSON.stringify(s)})},ft={user:!0,"user:email":!0,"read:user":!0},T=t=>t.some(s=>ft[s]),E=(t=!1,s=!1)=>`
|
|
15
15
|
__typename
|
|
16
16
|
id
|
|
17
17
|
databaseId
|
|
18
18
|
name
|
|
19
19
|
login
|
|
20
|
-
${
|
|
20
|
+
${s?"email":""}
|
|
21
21
|
avatarUrl${t?"(size: $avatarSize)":""}
|
|
22
|
-
`,
|
|
22
|
+
`,He=(t=!1)=>`
|
|
23
23
|
__typename
|
|
24
24
|
id
|
|
25
25
|
databaseId
|
|
26
26
|
login
|
|
27
27
|
avatarUrl${t?"(size: $avatarSize)":""}
|
|
28
|
-
`,
|
|
28
|
+
`,Rt=(t,s=!1)=>`
|
|
29
29
|
id
|
|
30
30
|
databaseId
|
|
31
31
|
number
|
|
@@ -33,10 +33,10 @@ title
|
|
|
33
33
|
state
|
|
34
34
|
author {
|
|
35
35
|
... on User {
|
|
36
|
-
${
|
|
36
|
+
${E(!1,s)}
|
|
37
37
|
}
|
|
38
38
|
... on Bot {
|
|
39
|
-
${
|
|
39
|
+
${He(!1)}
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
commits(last: 1) {
|
|
@@ -106,7 +106,7 @@ updatedAt
|
|
|
106
106
|
closedAt
|
|
107
107
|
assignees(first: 100) {
|
|
108
108
|
nodes {
|
|
109
|
-
${
|
|
109
|
+
${E(!1,s)}
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
reviewRequests(first: 100) {
|
|
@@ -114,7 +114,7 @@ reviewRequests(first: 100) {
|
|
|
114
114
|
asCodeOwner
|
|
115
115
|
requestedReviewer {
|
|
116
116
|
... on User {
|
|
117
|
-
${
|
|
117
|
+
${E(!1,s)}
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
}
|
|
@@ -123,7 +123,7 @@ latestReviews(first: 100) {
|
|
|
123
123
|
nodes {
|
|
124
124
|
author {
|
|
125
125
|
... on User {
|
|
126
|
-
${
|
|
126
|
+
${E(!1,s)}
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
state
|
|
@@ -134,23 +134,23 @@ deletions
|
|
|
134
134
|
changedFiles
|
|
135
135
|
mergeable
|
|
136
136
|
milestone {
|
|
137
|
-
${
|
|
137
|
+
${ee}
|
|
138
138
|
}
|
|
139
139
|
labels(first: 100) {
|
|
140
140
|
nodes {
|
|
141
|
-
${
|
|
141
|
+
${te}
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
|
-
`,
|
|
144
|
+
`,It=(t=!1)=>`
|
|
145
145
|
id
|
|
146
146
|
databaseId
|
|
147
147
|
title
|
|
148
148
|
author {
|
|
149
149
|
... on User {
|
|
150
|
-
${
|
|
150
|
+
${E(!1,t)}
|
|
151
151
|
}
|
|
152
152
|
... on Bot {
|
|
153
|
-
${
|
|
153
|
+
${He(!1)}
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
createdAt
|
|
@@ -171,19 +171,19 @@ comments {
|
|
|
171
171
|
}
|
|
172
172
|
assignees(first: 100) {
|
|
173
173
|
nodes {
|
|
174
|
-
${
|
|
174
|
+
${E(!1,t)}
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
177
|
state
|
|
178
178
|
milestone {
|
|
179
|
-
${
|
|
179
|
+
${ee}
|
|
180
180
|
}
|
|
181
181
|
labels(first: 100) {
|
|
182
182
|
nodes {
|
|
183
|
-
${
|
|
183
|
+
${te}
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
|
-
`,
|
|
186
|
+
`,yt={"-linked":"-linked",archived:"archived",assignee:"assignee",author:"author",base:"base",closed:"closed",commenter:"commenter",comments:"comments",created:"created",draft:"draft",head:"head",label:"label",language:"language",linked:"linked",in:"in",interactions:"interactions",involves:"involves",is:"is",mentions:"mentions",merged:"merged",milestone:"milestone",no:"no",org:"org",project:"project",reactions:"reactions",repo:"repo",review:"review","reviewed-by":"reviewed-by","review-requested":"review-requested",state:"state",status:"status",team:"team","team-review-requested":"team-review-requested",type:"type",updated:"updated",user:"user","user-review-requested":"user-review-requested"},bt=new RegExp('(([^\\s]+:)?\\"(?:[^\\"\\\\]|\\\\.)*\\"?)|([^\\"\\s]+)',"g"),Re=t=>{let s=[];return(t.match(bt)??[]).forEach(r=>{if(r.includes(":")&&r!="is:closed"){let n=r.split(":")[0];yt[n]&&s.push(r)}}),s},Ie=(t,s,e,r,n=!1)=>{let o=t==="issue";return{query:`
|
|
187
187
|
query SearchIssuesOrPullRequests($query: String! $after: String) {
|
|
188
188
|
search(type:ISSUE query:$query first:100 after:$after) {
|
|
189
189
|
pageInfo {
|
|
@@ -192,11 +192,11 @@ query SearchIssuesOrPullRequests($query: String! $after: String) {
|
|
|
192
192
|
}
|
|
193
193
|
nodes {
|
|
194
194
|
... on ${o?"Issue":"PullRequest"} {
|
|
195
|
-
${o?
|
|
195
|
+
${o?It(r):Rt(n,r)}
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
|
-
}`,variables:{query:`is:${t} is:open ${
|
|
199
|
+
}`,variables:{query:`is:${t} is:open ${s}`,after:e}}},Pt="Field 'isDraft' doesn't exist on type 'PullRequest'",Ve=(t=[])=>t.some(s=>(s==null?void 0:s.message)===Pt);var ye=`
|
|
200
200
|
id
|
|
201
201
|
databaseId
|
|
202
202
|
owner {
|
|
@@ -209,18 +209,18 @@ defaultBranchRef {
|
|
|
209
209
|
name
|
|
210
210
|
}
|
|
211
211
|
viewerPermission
|
|
212
|
-
`,
|
|
212
|
+
`,Pe={__typename:"User",id:"U_kgDNJ5k",databaseId:10137,name:"Deleted user",login:"ghost",email:"",avatarUrl:"https://avatars.githubusercontent.com/u/10137?v=4"},wt={APPROVED:"APPROVED",CHANGES_REQUESTED:"CHANGES_REQUESTED",COMMENTED:"COMMENTED",REVIEW_REQUESTED:"REVIEW_REQUESTED"},qt={MERGEABLE:"MERGEABLE",CONFLICTING:"CONFLICTS",UNKNOWN:"UNKNOWN"},$t={OPEN:"OPEN",CLOSED:"CLOSED"},we=t=>({color:t.color,description:t.description,graphQLId:t.id,id:null,name:t.name}),be=t=>({id:t.databaseId.toString(),graphQLId:t.id,namespace:t.owner.login,name:t.name,webUrl:t.url,httpsUrl:t.url.endsWith(".git")?t.url:`${t.url}.git`,sshUrl:t.sshUrl,defaultBranch:t.defaultBranchRef,permission:t.viewerPermission}),St={OPEN:"OPEN",CLOSED:"CLOSED",MERGED:"MERGED"},L=t=>({id:t.databaseId.toString(),graphQLId:t.id,name:t.name??t.login,username:t.login,email:t.email??null,avatarUrl:t.avatarUrl}),Ct=t=>{var n,o,a,i,u,l,p,d,c,g;let s=null;t.author?s=(t.author.__typename==="Bot",t.author):s=Pe;let e=(((n=t.reviewRequests)==null?void 0:n.nodes)||[]).filter(m=>!m.asCodeOwner),r=(o=t.headRepository)==null?void 0:o.url;return r&&!r.endsWith(".git")&&(r=`${r}.git`),{id:t.databaseId.toString(),graphQLId:t.id,title:t.title,number:t.number,state:St[t.state],commentCount:t.comments.totalCount,upvoteCount:t.reactions.totalCount,author:s?L(s):null,createdDate:new Date(t.createdAt),isDraft:t.isDraft,repository:{name:t.repository.name,owner:{login:t.repository.owner.login}},headRepository:t.headRepository?{name:t.headRepository.name,owner:{login:t.headRepository.owner.login},remoteInfo:{cloneUrlHTTPS:r,cloneUrlSSH:t.headRepository.sshUrl}}:null,headCommit:{buildStatuses:((u=(i=(a=t.commits.nodes)==null?void 0:a[0].commit.statusCheckRollup)==null?void 0:i.contexts.nodes)==null?void 0:u.map(m=>"context"in m?{description:m.description,name:m.context,state:m.state,stage:null,url:m.targetUrl}:{description:null,name:m.name,state:m.status,stage:null,url:m.permalink}))??[]},headRef:t.headRef?{name:t.headRef.name,oid:((l=t.headRef.target)==null?void 0:l.oid)??null}:null,baseRef:t.baseRef?{name:t.baseRef.name,oid:((p=t.baseRef.target)==null?void 0:p.oid)??null}:null,url:t.url,updatedDate:new Date(t.updatedAt),closedDate:t.closedAt?new Date(t.closedAt):null,assignees:t.assignees.nodes?t.assignees.nodes.map(L):null,reviews:e.map(m=>({reviewer:L(m.requestedReviewer),state:"REVIEW_REQUESTED"})).concat((((d=t.latestReviews)==null?void 0:d.nodes)||[]).map(m=>{let R=m.author||Pe;return{reviewer:L(R),state:wt[m.state]}})),additions:t.additions,deletions:t.deletions,fileCount:t.changedFiles,commitCount:t.commits.totalCount,mergeableState:qt[t.mergeable],milestone:t.milestone?qe(t.milestone):null,labels:((g=(c=t.labels)==null?void 0:c.nodes)==null?void 0:g.map(we))??[]}},Ut=t=>{var e,r;let s=null;return t.author?s=(t.author.__typename==="Bot",t.author):s=Pe,{id:t.databaseId.toString(),graphQLId:t.id,number:t.number,title:t.title,author:L(s),commentCount:t.comments.totalCount,createdDate:new Date(t.createdAt),description:null,state:{name:$t[t.state],color:null},type:null,repository:{name:t.repository.name,owner:{login:t.repository.owner.login}},url:t.url,updatedDate:new Date(t.updatedAt),assignees:t.assignees.nodes?t.assignees.nodes.map(L):[],upvoteCount:t.reactions.totalCount,milestone:t.milestone?qe(t.milestone):null,labels:((r=(e=t.labels)==null?void 0:e.nodes)==null?void 0:r.map(we))??[]}},qe=t=>({id:t.number.toString(),graphQLId:t.id.toString(),number:t.number,title:t.title,description:t.description,isOpen:t.state=="OPEN",url:t.url,startDate:null,dueDate:t.dueOn?new Date(t.dueOn):null}),M=class extends D{constructor(){super(...arguments);this._scopesCache={}}async getScopes(e){let r=e.token||this.config.token;if(!r)return[];let n=this._scopesCache[r];if(!n){let a=(await f(this.config,{query:"query { rateLimit(dryRun: true) { __typename } }"},e)).headers["x-oauth-scopes"];n=a?a.split(", "):[],this._scopesCache[r]=n}return n}getEnterpriseAvatarUrlIfNeeded(e,r,n){let o=n.baseUrl||this.config.baseUrl;return!o||o.startsWith(fe)?e:r?`https://avatars.githubusercontent.com/u/e?email=${encodeURIComponent(r)}`:""}async getCurrentUser(e={}){var a;let r=await this.getScopes(e),o=(a=(await f(this.config,{query:`
|
|
213
213
|
query getCurrentUser {
|
|
214
214
|
viewer {
|
|
215
|
-
${
|
|
215
|
+
${E(!1,T(r))}
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
|
-
`},e)).body.data)==null?void 0:a.viewer;if(!o)throw new Error("Current user not found.");return{data:
|
|
218
|
+
`},e)).body.data)==null?void 0:a.viewer;if(!o)throw new Error("Current user not found.");return{data:L(o)}}async getAccountsForRepo(e,r={}){var l,p,d,c,g,m;let n=await this.getScopes(r),{repo:{namespace:o,name:a},cursor:i}=e,u=await f(this.config,{query:`
|
|
219
219
|
query getAccountsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
|
|
220
220
|
repository(owner: $owner, name: $name) {
|
|
221
221
|
assignableUsers(first: $first, after: $cursor) {
|
|
222
222
|
nodes {
|
|
223
|
-
${
|
|
223
|
+
${E(!1,T(n))}
|
|
224
224
|
}
|
|
225
225
|
pageInfo {
|
|
226
226
|
endCursor
|
|
@@ -229,7 +229,7 @@ query getAccountsForRepo($owner: String!, $name: String! $cursor: String, $first
|
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
|
-
`,variables:{owner:o,name:a,cursor:i,first:$}},
|
|
232
|
+
`,variables:{owner:o,name:a,cursor:i,first:$}},r);if(!u.body.data)throw new Error(((l=u.body.errors)==null?void 0:l[0].message)||u.statusText||"Unknown error");return{pageInfo:((d=(p=u.body.data.repository)==null?void 0:p.assignableUsers)==null?void 0:d.pageInfo)??{endCursor:null,hasNextPage:!1},data:((m=(g=(c=u.body.data.repository)==null?void 0:c.assignableUsers)==null?void 0:g.nodes)==null?void 0:m.map(L))??[]}}async getUserForCommit(e,r={}){var i,u;let o=(i=(await f(this.config,{query:`
|
|
233
233
|
query getUserForCommit(
|
|
234
234
|
$owner: String!
|
|
235
235
|
$name: String!
|
|
@@ -248,23 +248,23 @@ query getUserForCommit(
|
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
250
|
}
|
|
251
|
-
`,variables:{owner:e.repo.namespace,name:e.repo.name,oid:e.oid,avatarSize:e.avatarSize}},
|
|
251
|
+
`,variables:{owner:e.repo.namespace,name:e.repo.name,oid:e.oid,avatarSize:e.avatarSize}},r)).body.data)==null?void 0:i.repository;if(!o)throw new Error("Repository not found.");let a=(u=o.object)==null?void 0:u.author;if(!a)throw new Error("Commit not found.");return{data:{name:a.name,email:a.email,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,r)}}}async getAccountForEmail(e,r={}){var i,u,l;let n=await this.getScopes(r),a=(l=(u=(i=(await f(this.config,{query:`
|
|
252
252
|
query getAccountForEmail($query: String! $avatarSize: Int) {
|
|
253
253
|
search(query: $query, type: USER, first: 1) {
|
|
254
254
|
nodes {
|
|
255
255
|
... on User {
|
|
256
|
-
${
|
|
256
|
+
${E(!0,T(n))}
|
|
257
257
|
}
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
260
|
}
|
|
261
|
-
`,variables:{query:`in:email ${e.email}`,avatarSize:e.avatarSize}},
|
|
261
|
+
`,variables:{query:`in:email ${e.email}`,avatarSize:e.avatarSize}},r)).body.data)==null?void 0:i.search)==null?void 0:u.nodes)==null?void 0:l[0];if(!a)throw new Error("User not found.");return{data:L({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,r)})}}async getAccountForUsername(e,r={}){var i;let n=await this.getScopes(r),a=(i=(await f(this.config,{query:`
|
|
262
262
|
query getUserForUsername($login: String! $avatarSize: Int) {
|
|
263
263
|
user(login: $login) {
|
|
264
|
-
${
|
|
264
|
+
${E(!0,T(n))}
|
|
265
265
|
}
|
|
266
266
|
}
|
|
267
|
-
`,variables:{login:e.username,avatarSize:e.avatarSize}},
|
|
267
|
+
`,variables:{login:e.username,avatarSize:e.avatarSize}},r)).body.data)==null?void 0:i.user;if(!a)throw new Error("User not found.");return{data:L({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,r)})}}async getOrgsForCurrentUser(e={},r={}){var a,i;let n=await f(this.config,{query:`
|
|
268
268
|
query getOrgsForCurrentUser($cursor: String, $first: Int!) {
|
|
269
269
|
viewer {
|
|
270
270
|
organizations(first: $first after: $cursor) {
|
|
@@ -283,22 +283,22 @@ query getOrgsForCurrentUser($cursor: String, $first: Int!) {
|
|
|
283
283
|
}
|
|
284
284
|
}
|
|
285
285
|
}
|
|
286
|
-
`,variables:{cursor:e.cursor,first:$}},
|
|
286
|
+
`,variables:{cursor:e.cursor,first:$}},r);if(!((a=n.body.data)!=null&&a.viewer.organizations))throw new Error(((i=n.body.errors)==null?void 0:i[0].message)||n.statusText||"Unknown error");let o=n.body.data.viewer.organizations.nodes||[];return{pageInfo:n.body.data.viewer.organizations.pageInfo,data:o.map(u=>({id:u.databaseId.toString(),graphQLId:u.id,username:u.login,name:u.name||null,email:u.email||null,avatarUrl:u.avatarUrl}))}}async getRepo(e,r={}){var o;let n=await f(this.config,{query:`
|
|
287
287
|
query getRepo($owner: String!, $name: String!) {
|
|
288
288
|
repository(owner: $owner, name: $name) {
|
|
289
|
-
${
|
|
289
|
+
${ye}
|
|
290
290
|
}
|
|
291
291
|
}
|
|
292
|
-
`,variables:{owner:e.namespace,name:e.name}},
|
|
292
|
+
`,variables:{owner:e.namespace,name:e.name}},r);if(!((o=n.body.data)!=null&&o.repository))throw new Error(`Repository ${e.namespace}/${e.name} not found`);return{data:be(n.body.data.repository)}}async getRepos(e,r={}){let n=e.map(({namespace:u,name:l},p)=>`
|
|
293
293
|
getRepo_${p}: repository(owner: "${u}", name: "${l}") {
|
|
294
|
-
${
|
|
294
|
+
${ye}
|
|
295
295
|
}
|
|
296
296
|
`).join(`
|
|
297
297
|
`),o=await f(this.config,{query:`
|
|
298
298
|
query batchGetRepos {
|
|
299
299
|
${n}
|
|
300
300
|
}
|
|
301
|
-
`},
|
|
301
|
+
`},r);if(!o.body.data)throw new Error(o.statusText||"Unknown error");let a=[],i=[];return e.forEach((u,l)=>{let p=o.body.data[`getRepo_${l}`];p?a.push(be(p)):i.push({input:u})}),{data:a,errors:i}}async getReposForUsernames(e,r={}){var a;if(!e.usernames.length)return{pageInfo:{endCursor:null,hasNextPage:!1},data:[]};let n=await f(this.config,{query:`
|
|
302
302
|
query getReposForUsernames($query: String!, $cursor: String, $first: Int!) {
|
|
303
303
|
search(query: $query, type: REPOSITORY, first: $first, after: $cursor) {
|
|
304
304
|
pageInfo {
|
|
@@ -307,12 +307,12 @@ query getReposForUsernames($query: String!, $cursor: String, $first: Int!) {
|
|
|
307
307
|
}
|
|
308
308
|
nodes {
|
|
309
309
|
... on Repository {
|
|
310
|
-
${
|
|
310
|
+
${ye}
|
|
311
311
|
}
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
314
|
}
|
|
315
|
-
`,variables:{query:`fork:true ${e.usernames.map(i=>`user:${i}`).join(" ")}`,cursor:e.cursor,first:$}},
|
|
315
|
+
`,variables:{query:`fork:true ${e.usernames.map(i=>`user:${i}`).join(" ")}`,cursor:e.cursor,first:$}},r);if(!n.body.data)throw new Error(((a=n.body.errors)==null?void 0:a[0].message)||n.statusText||"Unknown error");let o=n.body.data.search.nodes||[];return{pageInfo:n.body.data.search.pageInfo,data:o.map(be)}}async getReposForOwners(e,r={}){return this.getReposForUsernames({usernames:e.owners.filter(n=>n.username).map(n=>n.username),cursor:e.cursor},r)}async getRefs(e,r,n={}){var u;let a=(u=(await f(this.config,{query:`
|
|
316
316
|
query getRefs($owner: String!, $name: String!, $refPrefix: String!, $cursor: String, $first: Int!) {
|
|
317
317
|
repository(owner: $owner, name: $name) {
|
|
318
318
|
refs(refPrefix: $refPrefix first: $first after: $cursor) {
|
|
@@ -333,7 +333,7 @@ query getRefs($owner: String!, $name: String!, $refPrefix: String!, $cursor: Str
|
|
|
333
333
|
}
|
|
334
334
|
}
|
|
335
335
|
}
|
|
336
|
-
`,variables:{owner:
|
|
336
|
+
`,variables:{owner:r.repo.namespace,name:r.repo.name,refPrefix:e,cursor:r.cursor,first:$}},n)).body.data)==null?void 0:u.repository;if(!a)throw new Error("Repository not found.");let i=a.refs;return i?{pageInfo:i.pageInfo,data:(i.nodes||[]).map(l=>{var d;let p=(d=l.target)!=null&&d.oid?l.target:null;return{name:l.name,commit:p?{oid:p.oid,authoredDate:new Date(p.authoredDate),committedDate:new Date(p.committedDate)}:null}})}:{pageInfo:{endCursor:null,hasNextPage:!1},data:[]}}async getBranches(e,r={}){return this.getRefs("refs/heads/",e,r)}async getTags(e,r={}){return this.getRefs("refs/tags/",e,r)}async getBlame(e,r={}){var i;let o=(i=(await f(this.config,{query:`
|
|
337
337
|
query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
|
|
338
338
|
repository(owner: $owner, name: $name) {
|
|
339
339
|
object(expression: $ref) {
|
|
@@ -372,13 +372,13 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
|
|
|
372
372
|
}
|
|
373
373
|
}
|
|
374
374
|
}
|
|
375
|
-
`,variables:{owner:e.repo.namespace,name:e.repo.name,ref:e.ref,path:e.path}},
|
|
375
|
+
`,variables:{owner:e.repo.namespace,name:e.repo.name,ref:e.ref,path:e.path}},r)).body.data)==null?void 0:i.repository;if(!o)throw new Error("Repository not found.");let a=o.object;if(!a||!("blame"in a))throw new Error("Ref not found.");if(a.blame.ranges.length===0)throw new Error("File not found.");return{data:{ranges:a.blame.ranges.map(u=>{var l;return{startingLine:u.startingLine,endingLine:u.endingLine,commit:{oid:u.commit.oid,parentOids:((l=u.commit.parents.nodes)==null?void 0:l.map(p=>p.oid))||[],authoredDate:new Date(u.commit.authoredDate),author:u.commit.author?{name:u.commit.author.name,email:u.commit.author.email,avatarUrl:u.commit.author.avatarUrl}:null,committedDate:new Date(u.commit.committedDate),committer:u.commit.committer?{name:u.commit.committer.name,email:u.commit.committer.email,avatarUrl:u.commit.committer.avatarUrl}:null,message:u.commit.message,fileCount:u.commit.changedFilesIfAvailable,additions:u.commit.additions,deletions:u.commit.deletions}}})}}}async searchPullRequests(e,r={}){var l,p;let n=await this.getScopes(r),o=T(n),a=d=>{let c=d&&typeof e.isDraft=="boolean"?`${e.query} draft:${e.isDraft}`:e.query;return Ie("pr",c,e.cursor,o,d)},i=await f(this.config,a(!0),r);i.body.errors&&Ve(i.body.errors)&&(this.config.baseUrl||r.baseUrl)&&(i=await f(this.config,a(!1),r));let{data:u}=i.body;if(!u)throw new Error(((l=i.body.errors)==null?void 0:l[0].message)||i.statusText||"Unknown error");return{pageInfo:{hasNextPage:u.search.pageInfo.hasNextPage,endCursor:u.search.pageInfo.endCursor},data:((p=u.search.nodes)==null?void 0:p.map(Ct))||[]}}async searchIssues(e,r={}){var u,l;let n=await this.getScopes(r),o=T(n),a=await f(this.config,Ie("issue",e.query,e.cursor,o),r),{data:i}=a.body;if(!i)throw new Error(((u=a.body.errors)==null?void 0:u[0].message)||a.statusText||"Unknown error");return{pageInfo:{hasNextPage:i.search.pageInfo.hasNextPage,endCursor:i.search.pageInfo.endCursor},data:((l=i.search.nodes)==null?void 0:l.map(Ut))||[]}}async getPullRequestsAssociatedWithUser(e,r={}){return this.searchPullRequests({query:`involves:${e.username}`,cursor:e.cursor},r)}async getPullRequestsForRepos(e,r={}){let{assigneeLogins:n,updatedBefore:o,authorLogin:a,repos:i,reviewRequestedLogin:u,startQuery:l,mentionLogin:p}=e,d=Re(l||"");return i.forEach(c=>{d.push(`repo:${c.namespace}/${c.name}`)}),n&&n.forEach(c=>{d.push(`assignee:${c}`)}),o&&d.push(`updated:<${o}`),a&&d.push(`author:${a}`),u&&d.push(`review-requested:${u}`),p&&d.push(`mentions:${p}`),this.searchPullRequests({query:`sort:updated ${d.join(" ")}`,isDraft:e.isDraft,cursor:e.cursor},r)}async closePullRequest(e,r={}){var i,u,l;let{pullRequestGraphQLId:n}=e,o=`mutation ClosePullRequest($pullRequestGraphQLId: ID!) {
|
|
376
376
|
closePullRequest(input: { pullRequestId: $pullRequestGraphQLId }) {
|
|
377
377
|
pullRequest {
|
|
378
378
|
id
|
|
379
379
|
}
|
|
380
380
|
}
|
|
381
|
-
}`;if(!((l=(u=(i=(await f(this.config,{query:`${o}`,variables:{pullRequestGraphQLId:n}},
|
|
381
|
+
}`;if(!((l=(u=(i=(await f(this.config,{query:`${o}`,variables:{pullRequestGraphQLId:n}},r)).body.data)==null?void 0:i.closePullRequest)==null?void 0:u.pullRequest)!=null&&l.id))throw new Error("Could not close pull request")}async mergePullRequest(e,r={}){var p,d,c;let{pullRequestGraphQLId:n,expectedSourceSha:o,mergeStrategy:a}=e,i;switch(a){case"MERGE_COMMIT":{i="MERGE";break}case"REBASE":{i="REBASE";break}case"SQUASH":{i="SQUASH";break}}let u=`mutation MergePullRequest(
|
|
382
382
|
$pullRequestGraphQLId: ID!,
|
|
383
383
|
$expectedSourceSha: GitObjectID!,
|
|
384
384
|
$mergeStrategy: PullRequestMergeMethod,
|
|
@@ -392,84 +392,84 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
|
|
|
392
392
|
id
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
|
-
}`;if(!((c=(d=(p=(await f(this.config,{query:`${u}`,variables:{pullRequestGraphQLId:n,expectedSourceSha:o,mergeStrategy:i}},
|
|
395
|
+
}`;if(!((c=(d=(p=(await f(this.config,{query:`${u}`,variables:{pullRequestGraphQLId:n,expectedSourceSha:o,mergeStrategy:i}},r)).body.data)==null?void 0:p.mergePullRequest)==null?void 0:d.pullRequest)!=null&&c.id))throw new Error("Could not merge pull request")}async setPullRequestMilestone(e,r={}){var u,l,p;let{pullRequestGraphQLId:n,milestoneGraphQLId:o}=e,a=`mutation SetPullRequestMilestone($pullRequestGraphQLId: ID!, $milestoneGraphQLId: ID) {
|
|
396
396
|
updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, milestoneId: $milestoneGraphQLId }) {
|
|
397
397
|
pullRequest {
|
|
398
398
|
id
|
|
399
399
|
}
|
|
400
400
|
}
|
|
401
|
-
}`;if(!((p=(l=(u=(await f(this.config,{query:`${a}`,variables:{pullRequestGraphQLId:n,milestoneGraphQLId:o}},
|
|
401
|
+
}`;if(!((p=(l=(u=(await f(this.config,{query:`${a}`,variables:{pullRequestGraphQLId:n,milestoneGraphQLId:o}},r)).body.data)==null?void 0:u.updatePullRequest)==null?void 0:l.pullRequest)!=null&&p.id))throw new Error("Could not set milestone of pull request")}async markPullRequestReadyForReview(e,r){var a,i,u;let n=`mutation MarkReadyToReview($pullRequestGraphQLId: ID!) {
|
|
402
402
|
markPullRequestReadyForReview(input: { pullRequestId: $pullRequestGraphQLId }) {
|
|
403
403
|
pullRequest {
|
|
404
404
|
id
|
|
405
405
|
}
|
|
406
406
|
}
|
|
407
|
-
}`;if(!((u=(i=(a=(await f(this.config,{query:n,variables:{pullRequestGraphQLId:e}},
|
|
407
|
+
}`;if(!((u=(i=(a=(await f(this.config,{query:n,variables:{pullRequestGraphQLId:e}},r)).body.data)==null?void 0:a.markPullRequestReadyForReview)==null?void 0:i.pullRequest)!=null&&u.id))throw new Error("Could not mark pull request ready to review")}async convertPullRequestToDraft(e,r){var a,i,u;let n=`mutation ConvertToDraft($pullRequestGraphQLId: ID!) {
|
|
408
408
|
convertPullRequestToDraft(input: { pullRequestId: $pullRequestGraphQLId }) {
|
|
409
409
|
pullRequest {
|
|
410
410
|
id
|
|
411
411
|
}
|
|
412
412
|
}
|
|
413
|
-
}`;if(!((u=(i=(a=(await f(this.config,{query:n,variables:{pullRequestGraphQLId:e}},
|
|
413
|
+
}`;if(!((u=(i=(a=(await f(this.config,{query:n,variables:{pullRequestGraphQLId:e}},r)).body.data)==null?void 0:a.convertPullRequestToDraft)==null?void 0:i.pullRequest)!=null&&u.id))throw new Error("Could not convert pull request to draft")}async setPullRequestAsDraft(e,r={}){let{pullRequestGraphQLId:n,isDraft:o}=e;if(o){await this.convertPullRequestToDraft(n,r);return}await this.markPullRequestReadyForReview(n,r)}async setPullRequestReviewers(e,r={}){var u,l,p;let{pullRequestGraphQLId:n,reviewerGraphQLIds:o}=e,a=`mutation SetPullRequestReviewers($pullRequestGraphQLId: ID!, $reviewerGraphQLIds: [ID!]!) {
|
|
414
414
|
requestReviews(input: { pullRequestId: $pullRequestGraphQLId, userIds: $reviewerGraphQLIds }) {
|
|
415
415
|
pullRequest {
|
|
416
416
|
id
|
|
417
417
|
}
|
|
418
418
|
}
|
|
419
|
-
}`;if(!((p=(l=(u=(await f(this.config,{query:a,variables:{pullRequestGraphQLId:n,reviewerGraphQLIds:o}},
|
|
419
|
+
}`;if(!((p=(l=(u=(await f(this.config,{query:a,variables:{pullRequestGraphQLId:n,reviewerGraphQLIds:o}},r)).body.data)==null?void 0:u.requestReviews)==null?void 0:l.pullRequest)!=null&&p.id))throw new Error("Could not set pull request reviewers")}async setPullRequestAssignees(e,r={}){var u,l,p;let{pullRequestGraphQLId:n,assigneeGraphQLIds:o}=e,a=`mutation SetPullRequestAssignees($pullRequestGraphQLId: ID!, $assigneeGraphQLIds: [ID!]!) {
|
|
420
420
|
updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, assigneeIds: $assigneeGraphQLIds }) {
|
|
421
421
|
pullRequest {
|
|
422
422
|
id
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
|
-
}`;if(!((p=(l=(u=(await f(this.config,{query:a,variables:{pullRequestGraphQLId:n,assigneeGraphQLIds:o}},
|
|
425
|
+
}`;if(!((p=(l=(u=(await f(this.config,{query:a,variables:{pullRequestGraphQLId:n,assigneeGraphQLIds:o}},r)).body.data)==null?void 0:u.updatePullRequest)==null?void 0:l.pullRequest)!=null&&p.id))throw new Error("Could not set pull request assignees")}async getIssuesAssociatedWithUser(e,r={}){var d;let[n,o]=((d=e.cursor)==null?void 0:d.split(";"))||[void 0,void 0],[a,i]=await Promise.all([n==="null"?null:this.searchIssues({query:`author:${e.username}`,cursor:n},r),o==="null"?null:this.searchIssues({query:`assignee:${e.username}`,cursor:o},r)]),u={},l=[],p=c=>{u[c.id]||(u[c.id]=!0,l.push(c))};return a==null||a.data.forEach(p),i==null||i.data.forEach(p),{pageInfo:{hasNextPage:(a==null?void 0:a.pageInfo.hasNextPage)||(i==null?void 0:i.pageInfo.hasNextPage)||!1,endCursor:`${(a==null?void 0:a.pageInfo.hasNextPage)&&(a==null?void 0:a.pageInfo.endCursor)||"null"};${(i==null?void 0:i.pageInfo.hasNextPage)&&(i==null?void 0:i.pageInfo.endCursor)||"null"}`},data:l}}async setPullRequestLabels(e,r={}){var u,l,p;let{pullRequestGraphQLId:n,labelGraphQLIds:o}=e,a=`mutation SetPullRequestLabels($pullRequestGraphQLId: ID!, $labelGraphQLIds: [ID!]) {
|
|
426
426
|
updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, labelIds: $labelGraphQLIds }) {
|
|
427
427
|
pullRequest {
|
|
428
428
|
id
|
|
429
429
|
}
|
|
430
430
|
}
|
|
431
|
-
}`;if(!((p=(l=(u=(await f(this.config,{query:a,variables:{pullRequestGraphQLId:n,labelGraphQLIds:o}},
|
|
431
|
+
}`;if(!((p=(l=(u=(await f(this.config,{query:a,variables:{pullRequestGraphQLId:n,labelGraphQLIds:o}},r)).body.data)==null?void 0:u.updatePullRequest)==null?void 0:l.pullRequest)!=null&&p.id))throw new Error("Could not set pull request labels")}async getIssuesForRepos(e,r={}){let n=Re(e.startQuery||""),{cursor:o,assigneeLogins:a,updatedBefore:i,authorLogin:u,mentionLogin:l}=e;return e.repos.forEach(p=>{n.push(`repo:${p.namespace}/${p.name}`)}),a&&a.forEach(p=>{n.push(`assignee:${p}`)}),i&&n.push(`updated:<${i}`),u&&n.push(`author:${u}`),l&&n.push(`mentions:${l}`),this.searchIssues({query:`sort:updated ${n.join(" ")}`,cursor:o},r)}async closeIssueWithReason(e,r,n){var i,u,l;let o=`mutation CloseIssueWithReason($issueGraphQLId: ID!, $closeReason: IssueClosedStateReason!) {
|
|
432
432
|
closeIssue(input: { issueId: $issueGraphQLId, stateReason: $closeReason }) {
|
|
433
433
|
issue {
|
|
434
434
|
id
|
|
435
435
|
}
|
|
436
436
|
}
|
|
437
|
-
}`;if(!((l=(u=(i=(await f(this.config,{query:o,variables:{issueGraphQLId:e,closeReason:
|
|
437
|
+
}`;if(!((l=(u=(i=(await f(this.config,{query:o,variables:{issueGraphQLId:e,closeReason:r}},n)).body.data)==null?void 0:i.closeIssue)==null?void 0:u.issue)!=null&&l.id))throw new Error("Could not close issue with reason")}async closeIssueWithoutReason(e,r){var a,i,u;let n=`mutation SetIssueState($issueGraphQLId: ID!) {
|
|
438
438
|
updateIssue(input: { id: $issueGraphQLId, state: CLOSED }) {
|
|
439
439
|
issue {
|
|
440
440
|
id
|
|
441
441
|
}
|
|
442
442
|
}
|
|
443
|
-
}`;if(!((u=(i=(a=(await f(this.config,{query:n,variables:{issueGraphQLId:e}},
|
|
443
|
+
}`;if(!((u=(i=(a=(await f(this.config,{query:n,variables:{issueGraphQLId:e}},r)).body.data)==null?void 0:a.updateIssue)==null?void 0:i.issue)!=null&&u.id))throw new Error("Could not close issue")}async reopenIssue(e,r){var a,i,u;let n=`mutation ReOpenIssue($issueGraphQLId: ID!) {
|
|
444
444
|
reopenIssue(input: { issueId: $issueGraphQLId }) {
|
|
445
445
|
issue {
|
|
446
446
|
id
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
|
-
}`;if(!((u=(i=(a=(await f(this.config,{query:n,variables:{issueGraphQLId:e}},
|
|
449
|
+
}`;if(!((u=(i=(a=(await f(this.config,{query:n,variables:{issueGraphQLId:e}},r)).body.data)==null?void 0:a.reopenIssue)==null?void 0:i.issue)!=null&&u.id))throw new Error("Could not reopen issue")}async setIssueStatus(e,r={}){let{issueGraphQLId:n,status:o,closeReason:a}=e;if(a&&o=="OPEN")throw new Error("Did not expect closeReason to be set when trying to reopen issue");o=="OPEN"?await this.reopenIssue(n,r):o=="CLOSED"&&!a?await this.closeIssueWithoutReason(n,r):a&&await this.closeIssueWithReason(n,a,r)}async setIssueLabels(e,r={}){var u,l,p;let{issueGraphQLId:n,labelGraphQLIds:o}=e,a=`mutation SetIssueLabels($issueGraphQLId: ID!, $labelGraphQLIds: [ID!]) {
|
|
450
450
|
updateIssue(input: { id: $issueGraphQLId, labelIds: $labelGraphQLIds }) {
|
|
451
451
|
issue {
|
|
452
452
|
id
|
|
453
453
|
}
|
|
454
454
|
}
|
|
455
|
-
}`;if(!((p=(l=(u=(await f(this.config,{query:a,variables:{issueGraphQLId:n,labelGraphQLIds:o}},
|
|
455
|
+
}`;if(!((p=(l=(u=(await f(this.config,{query:a,variables:{issueGraphQLId:n,labelGraphQLIds:o}},r)).body.data)==null?void 0:u.updateIssue)==null?void 0:l.issue)!=null&&p.id))throw new Error("Could not set issue labels")}async setIssueMilestone(e,r={}){var u,l,p;let{issueGraphQLId:n,milestoneGraphQLId:o}=e,a=`mutation SetIssueMilestone($issueGraphQLId: ID!, $milestoneGraphQLId: ID) {
|
|
456
456
|
updateIssue(input: { id: $issueGraphQLId, milestoneId: $milestoneGraphQLId }) {
|
|
457
457
|
issue {
|
|
458
458
|
id
|
|
459
459
|
}
|
|
460
460
|
}
|
|
461
|
-
}`;if(!((p=(l=(u=(await f(this.config,{query:`${a}`,variables:{issueGraphQLId:n,milestoneGraphQLId:o}},
|
|
461
|
+
}`;if(!((p=(l=(u=(await f(this.config,{query:`${a}`,variables:{issueGraphQLId:n,milestoneGraphQLId:o}},r)).body.data)==null?void 0:u.updateIssue)==null?void 0:l.issue)!=null&&p.id))throw new Error("Could not set milestone of issue")}async setIssueAssignees(e,r={}){var u,l,p;let{issueGraphQLId:n,assigneeGraphQLIds:o}=e,a=`mutation SetIssueAssignees($issueGraphQLId: ID!, $assigneeGraphQLIds: [ID!]!) {
|
|
462
462
|
updateIssue(input: { id: $issueGraphQLId, assigneeIds: $assigneeGraphQLIds }) {
|
|
463
463
|
issue {
|
|
464
464
|
id
|
|
465
465
|
}
|
|
466
466
|
}
|
|
467
|
-
}`;if(!((p=(l=(u=(await f(this.config,{query:a,variables:{issueGraphQLId:n,assigneeGraphQLIds:o}},
|
|
467
|
+
}`;if(!((p=(l=(u=(await f(this.config,{query:a,variables:{issueGraphQLId:n,assigneeGraphQLIds:o}},r)).body.data)==null?void 0:u.updateIssue)==null?void 0:l.issue)!=null&&p.id))throw new Error("Could not set issue assignees")}async getMilestonesForRepo(e,r={}){var u,l,p,d;let{repo:{namespace:n,name:o},cursor:a}=e,i=await f(this.config,{query:`
|
|
468
468
|
query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
|
|
469
469
|
repository(owner: $owner, name: $name) {
|
|
470
470
|
milestones(first: $first, after: $cursor) {
|
|
471
471
|
nodes {
|
|
472
|
-
${
|
|
472
|
+
${ee}
|
|
473
473
|
}
|
|
474
474
|
pageInfo {
|
|
475
475
|
endCursor
|
|
@@ -478,12 +478,12 @@ query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first:
|
|
|
478
478
|
}
|
|
479
479
|
}
|
|
480
480
|
}
|
|
481
|
-
`,variables:{owner:n,name:o,cursor:a,first:$}},
|
|
481
|
+
`,variables:{owner:n,name:o,cursor:a,first:$}},r);if(!i.body.data)throw new Error(((u=i.body.errors)==null?void 0:u[0].message)||i.statusText||"Unknown error");return{pageInfo:((l=i.body.data.repository.milestones)==null?void 0:l.pageInfo)??{endCursor:null,hasNextPage:!1},data:((d=(p=i.body.data.repository.milestones)==null?void 0:p.nodes)==null?void 0:d.map(qe))??[]}}async getLabelsForRepo(e,r={}){var u,l,p,d;let{repo:{namespace:n,name:o},cursor:a}=e,i=await f(this.config,{query:`
|
|
482
482
|
query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
|
|
483
483
|
repository(owner: $owner, name: $name) {
|
|
484
484
|
labels(first: $first, after: $cursor) {
|
|
485
485
|
nodes {
|
|
486
|
-
${
|
|
486
|
+
${te}
|
|
487
487
|
}
|
|
488
488
|
pageInfo {
|
|
489
489
|
endCursor
|
|
@@ -492,7 +492,7 @@ query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first:
|
|
|
492
492
|
}
|
|
493
493
|
}
|
|
494
494
|
}
|
|
495
|
-
`,variables:{owner:n,name:o,cursor:a,first:$}},
|
|
495
|
+
`,variables:{owner:n,name:o,cursor:a,first:$}},r);if(!i.body.data)throw new Error(((u=i.body.errors)==null?void 0:u[0].message)||i.statusText||"Unknown error");return{pageInfo:((l=i.body.data.repository.labels)==null?void 0:l.pageInfo)??{endCursor:null,hasNextPage:!1},data:((d=(p=i.body.data.repository.labels)==null?void 0:p.nodes)==null?void 0:d.map(we))??[]}}};var Et="https://gitlab.com/api/v4",vt="https://gitlab.com/api/graphql",Ke=/\/api\/v\d+$/,Xe=t=>{if(t.endsWith("/api/graphql"))throw new Error("The graphql endpoint is being used as the baseUrl. This package uses both GraphQL and REST APIs, and the REST version cannot be assumed. Use the REST endpoint as the baseUrl instead.")},$e=(t,s)=>{let e=s.baseUrl||t.baseUrl;return e?(e=e.replace(/\/$/,""),Xe(e),e):Et},Dt=(t,s)=>{let e=s.baseUrl||t.baseUrl;return e?(e=e.replace(/\/$/,""),Xe(e),Ke.test(e)&&(e=e.replace(Ke,"")),`${e}/api/graphql`):vt},I=(t,s,e)=>{let r=h(e.token||t.token);return t.request({url:Dt(t,e),method:"POST",headers:{...r,"Content-Type":"application/json"},body:JSON.stringify(s)})};var Ze=t=>t.split("/").slice(0,-1).join("/"),j=t=>({namespace:Ze(t.fullPath),name:t.path,webUrl:t.webUrl}),Lt={assigned:"assignedMergeRequests",authored:"authoredMergeRequests",reviewRequested:"reviewRequestedMergeRequests"},Gt={CAN_BE_MERGED:"MERGEABLE",CANNOT_BE_MERGED:"CONFLICTS",CANNOT_BE_MERGED_RECHECK:"UNKNOWN",UNCHECKED:"UNKNOWN",CHECKING:"UNKNOWN"},Le="gid://gitlab/User/",z="gid://gitlab/Project/",Ot="gid://gitlab/MergeRequest/",At="gid://gitlab/Issue/",xt="gid://gitlab/ProjectLabel/",Ye="gid://gitlab/Milestone/",Tt="gid://gitlab/Ci::Build/",Ge=`
|
|
496
496
|
description
|
|
497
497
|
dueDate
|
|
498
498
|
id
|
|
@@ -501,7 +501,7 @@ startDate
|
|
|
501
501
|
state
|
|
502
502
|
title
|
|
503
503
|
webPath
|
|
504
|
-
|
|
504
|
+
`,Se=`
|
|
505
505
|
id
|
|
506
506
|
path
|
|
507
507
|
fullPath
|
|
@@ -511,24 +511,24 @@ sshUrlToRepo
|
|
|
511
511
|
repository {
|
|
512
512
|
rootRef
|
|
513
513
|
}
|
|
514
|
-
`,
|
|
514
|
+
`,O=`
|
|
515
515
|
id
|
|
516
516
|
name
|
|
517
517
|
username
|
|
518
518
|
publicEmail
|
|
519
519
|
avatarUrl
|
|
520
|
-
`,
|
|
520
|
+
`,Oe=`
|
|
521
521
|
color
|
|
522
522
|
description
|
|
523
523
|
id
|
|
524
524
|
title
|
|
525
525
|
`,Ce=`
|
|
526
526
|
author {
|
|
527
|
-
${
|
|
527
|
+
${O}
|
|
528
528
|
}
|
|
529
529
|
assignees {
|
|
530
530
|
nodes {
|
|
531
|
-
${
|
|
531
|
+
${O}
|
|
532
532
|
}
|
|
533
533
|
}
|
|
534
534
|
createdAt
|
|
@@ -538,7 +538,7 @@ id
|
|
|
538
538
|
iid
|
|
539
539
|
labels {
|
|
540
540
|
nodes {
|
|
541
|
-
${
|
|
541
|
+
${Oe}
|
|
542
542
|
}
|
|
543
543
|
}
|
|
544
544
|
state
|
|
@@ -549,9 +549,9 @@ upvotes
|
|
|
549
549
|
userNotesCount
|
|
550
550
|
webUrl
|
|
551
551
|
milestone {
|
|
552
|
-
${
|
|
552
|
+
${Ge}
|
|
553
553
|
}
|
|
554
|
-
`,
|
|
554
|
+
`,kt=`
|
|
555
555
|
stages {
|
|
556
556
|
nodes {
|
|
557
557
|
jobs {
|
|
@@ -564,11 +564,11 @@ stages {
|
|
|
564
564
|
name
|
|
565
565
|
}
|
|
566
566
|
}
|
|
567
|
-
`,
|
|
567
|
+
`,Ue=(t,s,e)=>`
|
|
568
568
|
id
|
|
569
569
|
state
|
|
570
570
|
author {
|
|
571
|
-
${
|
|
571
|
+
${O}
|
|
572
572
|
}
|
|
573
573
|
diffRefs {
|
|
574
574
|
baseSha
|
|
@@ -593,12 +593,12 @@ targetBranch
|
|
|
593
593
|
sourceBranch
|
|
594
594
|
assignees {
|
|
595
595
|
nodes {
|
|
596
|
-
${
|
|
596
|
+
${O}
|
|
597
597
|
}
|
|
598
598
|
}
|
|
599
599
|
reviewers {
|
|
600
600
|
nodes {
|
|
601
|
-
${
|
|
601
|
+
${O}
|
|
602
602
|
mergeRequestInteraction {
|
|
603
603
|
approved
|
|
604
604
|
reviewState
|
|
@@ -608,19 +608,19 @@ reviewers {
|
|
|
608
608
|
mergeStatusEnum
|
|
609
609
|
labels {
|
|
610
610
|
nodes {
|
|
611
|
-
${
|
|
611
|
+
${Oe}
|
|
612
612
|
}
|
|
613
613
|
}
|
|
614
614
|
${t?"project { path fullPath webUrl }":""}
|
|
615
|
-
${
|
|
616
|
-
${e?`headPipeline { ${
|
|
617
|
-
`,k=t=>`${t.namespace}/${t.name}`,
|
|
615
|
+
${s?`milestone { ${Ge} }`:""}
|
|
616
|
+
${e?`headPipeline { ${kt} }`:""}
|
|
617
|
+
`,k=t=>`${t.namespace}/${t.name}`,_t=t=>`${t.namespace}/${t.name}`,Ee=t=>{var s;return{id:t.id.replace(z,""),graphQLId:t.id,namespace:Ze(t.fullPath),name:t.path,webUrl:t.webUrl,httpsUrl:t.httpUrlToRepo,sshUrl:t.sshUrlToRepo,defaultBranch:(s=t.repository)!=null&&s.rootRef?{name:t.repository.rootRef}:null,permission:null}},Nt={opened:"OPEN",merged:"MERGED",closed:"CLOSED"},_=t=>({id:t.id.replace(Le,""),graphQLId:t.id,name:t.name,username:t.username,email:t.publicEmail,avatarUrl:t.avatarUrl}),Ae=t=>({color:t.color,description:t.description,id:t.id.replace(xt,""),graphQLId:t.id,name:t.title}),ve=(t,s)=>{var e,r,n,o,a,i,u,l,p,d,c,g;return{id:t.id.replace(Ot,""),graphQLId:t.id,title:t.title,number:parseInt(t.iid,10),state:Nt[t.state],commentCount:t.userNotesCount||0,upvoteCount:t.upvotes,author:t.author?_(t.author):null,createdDate:new Date(t.createdAt),isDraft:t.draft,repository:{name:s.name,owner:{login:s.namespace}},headRepository:null,headCommit:{buildStatuses:((n=(r=(e=t.headPipeline)==null?void 0:e.stages)==null?void 0:r.nodes)==null?void 0:n.flatMap(m=>{var R,b;return((b=(R=m.jobs)==null?void 0:R.nodes)==null?void 0:b.map(P=>({description:null,name:P.name??null,state:P.status??null,stage:m.name??null,url:`${s.webUrl}/-/jobs/${P.id.replace(Tt,"")}`})))??[]}))??[]},baseRef:{name:t.targetBranch,oid:((o=t.diffRefs)==null?void 0:o.baseSha)??null},headRef:{name:t.sourceBranch,oid:((a=t.diffRefs)==null?void 0:a.headSha)??null},url:t.webUrl,updatedDate:new Date(t.updatedAt),closedDate:t.mergedAt?new Date(t.mergedAt):null,assignees:(i=t.assignees)!=null&&i.nodes?t.assignees.nodes.map(_):null,reviews:(u=t.reviewers)!=null&&u.nodes?t.reviewers.nodes.map(m=>{var R,b;return{reviewer:_(m),state:(R=m.mergeRequestInteraction)!=null&&R.approved?"APPROVED":((b=m.mergeRequestInteraction)==null?void 0:b.reviewState)==="REVIEWED"?"CHANGES_REQUESTED":"CHANGES_REQUESTED"}}):null,additions:((l=t.diffStatsSummary)==null?void 0:l.additions)||0,deletions:((p=t.diffStatsSummary)==null?void 0:p.deletions)||0,fileCount:((d=t.diffStatsSummary)==null?void 0:d.fileCount)||0,commitCount:t.commitCount||0,mergeableState:Gt[t.mergeStatusEnum],milestone:t.milestone?xe(t.milestone,s.webUrl):null,labels:((g=(c=t.labels)==null?void 0:c.nodes)==null?void 0:g.map(Ae))??[]}},De=(t,s)=>{var e,r;return{author:{avatarUrl:t.author.avatarUrl,email:null,graphQLId:t.author.id,id:t.author.id.replace(Le,""),name:t.author.name,username:t.author.username},assignees:t.assignees.nodes.map(n=>({avatarUrl:n.avatarUrl,email:null,graphQLId:n.id,id:n.id.replace(Le,""),name:n.name,username:n.username})),commentCount:t.userNotesCount,createdDate:new Date(t.createdAt),description:t.description,graphQLId:t.id,id:t.id.replace(At,""),labels:((r=(e=t.labels)==null?void 0:e.nodes)==null?void 0:r.map(Ae))??[],number:t.iid,repository:{name:s.name,owner:{login:s.namespace}},updatedDate:new Date(t.updatedAt),upvoteCount:t.upvotes,state:{name:t.state,color:null},type:t.type,title:t.title,url:t.webUrl,milestone:t.milestone?xe(t.milestone,s.webUrl):null}},xe=(t,s)=>({id:t.id.replace(Ye,""),graphQLId:t.id,number:parseInt(t.iid,10),title:t.title,description:t.description,isOpen:t.state==="active",url:`${s}/-/${t.webPath.replace(/.+?\/-\//,"")}`,startDate:t.startDate?new Date(t.startDate):null,dueDate:t.dueDate?new Date(t.dueDate):null}),J=class extends D{async getCurrentUser(s={}){var n;let r=(n=(await I(this.config,{query:`
|
|
618
618
|
query getCurrentUser {
|
|
619
619
|
currentUser {
|
|
620
|
-
${
|
|
620
|
+
${O}
|
|
621
621
|
}
|
|
622
622
|
}
|
|
623
|
-
`},
|
|
623
|
+
`},s)).body.data)==null?void 0:n.currentUser;if(!r)throw new Error("Current user not found.");return{data:_(r)}}async getUserForCommit(s,e={}){var a,i,u,l;let r=k(s.repo),o=(l=(u=(i=(a=(await I(this.config,{query:`
|
|
624
624
|
query getUserForCommit($fullPath: ID!, $oid: String!) {
|
|
625
625
|
project(fullPath: $fullPath) {
|
|
626
626
|
repository {
|
|
@@ -634,21 +634,21 @@ query getUserForCommit($fullPath: ID!, $oid: String!) {
|
|
|
634
634
|
}
|
|
635
635
|
}
|
|
636
636
|
}
|
|
637
|
-
`,variables:{fullPath:
|
|
637
|
+
`,variables:{fullPath:r,oid:s.oid}},e)).body.data)==null?void 0:a.project)==null?void 0:i.repository)==null?void 0:u.tree)==null?void 0:l.lastCommit;if(!o)throw new Error("Commit not found.");return{data:{name:o.authorName,email:o.authorEmail,avatarUrl:o.authorGravatar}}}async getAccountForEmail(s,e={}){var o,a,i;let n=(i=(a=(o=(await I(this.config,{query:`
|
|
638
638
|
query getAccountForEmail($email: String!) {
|
|
639
639
|
users(search: $email) {
|
|
640
640
|
nodes {
|
|
641
|
-
${
|
|
641
|
+
${O}
|
|
642
642
|
}
|
|
643
643
|
}
|
|
644
644
|
}
|
|
645
|
-
`,variables:{email:
|
|
645
|
+
`,variables:{email:s.email}},e)).body.data)==null?void 0:o.users)==null?void 0:a.nodes)==null?void 0:i[0];if(!n)throw new Error("User not found.");return{data:_(n)}}async getAccountForUsername(s,e={}){var o;let n=(o=(await I(this.config,{query:`
|
|
646
646
|
query getAccountForUsername($username: String!) {
|
|
647
647
|
user(username: $username) {
|
|
648
|
-
${
|
|
648
|
+
${O}
|
|
649
649
|
}
|
|
650
650
|
}
|
|
651
|
-
`,variables:{username:
|
|
651
|
+
`,variables:{username:s.username}},e)).body.data)==null?void 0:o.user;if(!n)throw new Error("User not found.");return{data:_(n)}}async getAccountsForRepo(s,e={}){var u,l,p,d,c,g,m;let{repo:{namespace:r,name:n},cursor:o}=s,a=await I(this.config,{query:`
|
|
652
652
|
query getAccountsForRepo(
|
|
653
653
|
$fullPath: ID!
|
|
654
654
|
$after: String
|
|
@@ -659,7 +659,7 @@ query getAccountsForRepo(
|
|
|
659
659
|
projectMembers(after: $after) {
|
|
660
660
|
nodes {
|
|
661
661
|
user {
|
|
662
|
-
${
|
|
662
|
+
${O}
|
|
663
663
|
}
|
|
664
664
|
}
|
|
665
665
|
pageInfo {
|
|
@@ -669,22 +669,22 @@ query getAccountsForRepo(
|
|
|
669
669
|
}
|
|
670
670
|
}
|
|
671
671
|
}
|
|
672
|
-
`,variables:{fullPath:`${
|
|
672
|
+
`,variables:{fullPath:`${r}/${n}`,after:o}},e),i=(d=(p=(l=(u=a.body.data)==null?void 0:u.project)==null?void 0:l.projectMembers)==null?void 0:p.nodes)==null?void 0:d.map(R=>R.user).filter(R=>R!==null);return{pageInfo:((m=(g=(c=a.body.data)==null?void 0:c.project)==null?void 0:g.projectMembers)==null?void 0:m.pageInfo)??{endCursor:null,hasNextPage:!1},data:(i==null?void 0:i.map(_))??[]}}async getRepo(s,e={}){var o;let r=k(s),n=await I(this.config,{query:`
|
|
673
673
|
query getRepo($fullPath: ID!) {
|
|
674
674
|
project(fullPath: $fullPath) {
|
|
675
|
-
${
|
|
675
|
+
${Se}
|
|
676
676
|
}
|
|
677
677
|
}
|
|
678
|
-
`,variables:{fullPath:
|
|
678
|
+
`,variables:{fullPath:r}},e);if(!((o=n.body.data)!=null&&o.project))throw new Error(`Repository ${r} not found`);return{data:Ee(n.body.data.project)}}async getRepos(s,e={}){let n=s.map(k).map((u,l)=>`
|
|
679
679
|
getRepo_${l}: project(fullPath: "${u}") {
|
|
680
|
-
${
|
|
680
|
+
${Se}
|
|
681
681
|
}
|
|
682
682
|
`).join(`
|
|
683
683
|
`),o=await I(this.config,{query:`
|
|
684
684
|
query batchGetRepos {
|
|
685
685
|
${n}
|
|
686
686
|
}
|
|
687
|
-
`},e);if(!o.body.data)throw new Error(o.statusText||"Unknown error");let a=[],i=[];return
|
|
687
|
+
`},e);if(!o.body.data)throw new Error(o.statusText||"Unknown error");let a=[],i=[];return s.forEach((u,l)=>{let p=o.body.data[`getRepo_${l}`];p?a.push(Ee(p)):i.push({input:u})}),{data:a,errors:i}}async getReposForCurrentUser(s={},e={}){var o,a,i,u,l,p;let r=await I(this.config,{query:`
|
|
688
688
|
query getReposForCurrentUser($after: String) {
|
|
689
689
|
projects(membership: true first: 100 after: $after) {
|
|
690
690
|
pageInfo {
|
|
@@ -692,25 +692,25 @@ query getReposForCurrentUser($after: String) {
|
|
|
692
692
|
hasNextPage
|
|
693
693
|
}
|
|
694
694
|
nodes {
|
|
695
|
-
${
|
|
695
|
+
${Se}
|
|
696
696
|
}
|
|
697
697
|
}
|
|
698
698
|
}
|
|
699
|
-
`,variables:{after:
|
|
699
|
+
`,variables:{after:s.cursor}},e);if(!((o=r.body.data)!=null&&o.projects))throw new Error(((a=r.body.errors)==null?void 0:a[0].message)||r.statusText||"Unknown error");let n=((u=(i=r.body.data)==null?void 0:i.projects)==null?void 0:u.nodes)||[];return{pageInfo:(p=(l=r.body.data)==null?void 0:l.projects)==null?void 0:p.pageInfo,data:n.map(Ee)}}async getRefs(s,e,r={}){var u;let n=k(e.repo),o=new URL(`${$e(this.config,r)}/projects/${encodeURIComponent(n)}/repository/${s}`);o.searchParams.set("page",((u=e.page)==null?void 0:u.toString())||"1"),o.searchParams.set("per_page",$.toString());let a=await this.config.request({url:o.toString(),headers:h(r.token||this.config.token)}),i=a.headers["x-next-page"];return{pageInfo:{hasNextPage:!!i,nextPage:i?parseInt(i,10):null},data:a.body.map(l=>({name:l.name,commit:{oid:l.commit.id,authoredDate:new Date(l.commit.authored_date),committedDate:new Date(l.commit.committed_date)}}))}}async getBranches(s,e={}){return this.getRefs("branches",s,e)}async getTags(s,e={}){return this.getRefs("tags",s,e)}async getBlame(s,e={}){let r=k(s.repo),n=new URL(`${$e(this.config,e)}/projects/${encodeURIComponent(r)}/repository/files/${encodeURIComponent(s.path)}/blame`);n.searchParams.set("ref",s.ref);let o=await this.config.request({url:n.toString(),headers:h(e.token||this.config.token)}),a=0;return{data:{ranges:o.body.map(i=>{let u=a+1;return a+=i.lines.length,{startingLine:u,endingLine:a,commit:{oid:i.commit.id,parentOids:i.commit.parent_ids,authoredDate:new Date(i.commit.authored_date),author:{name:i.commit.author_name,email:i.commit.author_email,avatarUrl:null},committedDate:new Date(i.commit.committed_date),committer:{name:i.commit.committer_name,email:i.commit.committer_email,avatarUrl:null},message:i.commit.message,fileCount:null,additions:null,deletions:null}}})}}}async getPullRequestsForUser(s,e={}){var a,i;let r=Lt[s.association],n=await I(this.config,{query:`
|
|
700
700
|
query getPullRequestsForUser($username: String! $cursor: String) {
|
|
701
701
|
user(username: $username) {
|
|
702
|
-
${
|
|
702
|
+
${r}(state:opened first:100 after:$cursor) {
|
|
703
703
|
pageInfo {
|
|
704
704
|
endCursor
|
|
705
705
|
hasNextPage
|
|
706
706
|
}
|
|
707
707
|
nodes {
|
|
708
|
-
${
|
|
708
|
+
${Ue(!0,!0,!0)}
|
|
709
709
|
}
|
|
710
710
|
}
|
|
711
711
|
}
|
|
712
712
|
}
|
|
713
|
-
`,variables:{username:
|
|
713
|
+
`,variables:{username:s.username,cursor:s.cursor}},e);if(!n.body.data)throw new Error(((a=n.body.errors)==null?void 0:a[0].message)||n.statusText||"Unknown error");if(!n.body.data.user)throw new Error("User not found");let o=n.body.data.user[r];if(!o)throw new Error("Unexpected response");return{pageInfo:o.pageInfo,data:((i=o.nodes)==null?void 0:i.map(u=>ve(u,j(u.project))))||[]}}async getPullRequestsAssociatedWithUser(s,e={}){var c;let[r,n,o]=((c=s.cursor)==null?void 0:c.split(";"))||[void 0,void 0,void 0],[a,i,u]=await Promise.all([r==="null"?null:this.getPullRequestsForUser({username:s.username,association:"authored",cursor:r},e),n==="null"?null:this.getPullRequestsForUser({username:s.username,association:"assigned",cursor:n},e),o==="null"?null:this.getPullRequestsForUser({username:s.username,association:"reviewRequested",cursor:o},e)]),l={},p=[],d=g=>{l[g.id]||(l[g.id]=!0,p.push(g))};return a==null||a.data.forEach(d),i==null||i.data.forEach(d),u==null||u.data.forEach(d),{pageInfo:{hasNextPage:(a==null?void 0:a.pageInfo.hasNextPage)||(i==null?void 0:i.pageInfo.hasNextPage)||(u==null?void 0:u.pageInfo.hasNextPage)||!1,endCursor:`${(a==null?void 0:a.pageInfo.hasNextPage)&&(a==null?void 0:a.pageInfo.endCursor)||"null"};${(i==null?void 0:i.pageInfo.hasNextPage)&&(i==null?void 0:i.pageInfo.endCursor)||"null"};${(u==null?void 0:u.pageInfo.hasNextPage)&&(u==null?void 0:u.pageInfo.endCursor)||"null"}`},data:p}}getVariablesForPullRequests(s){let{updatedBefore:e,isDraft:r,authorLogin:n,assigneeLogins:o,reviewRequestedLogin:a}=s||{},i={},u=[],l=[],p=(d,c,g)=>{u.push(`$${d}: ${g}`),l.push(`${d}: $${d}`),i[d]=c};return e&&p("updatedBefore",e,"Time"),n&&p("authorUsername",n,"String"),o&&p("assigneeUsername",o[0],"String"),r!=null&&p("draft",r,"Boolean"),a&&p("reviewerUsername",a,"String"),{variables:i,variableTypes:u,mergeRequestArguments:l}}async getPullRequestsForRepo(s,e={}){var R,b,P;let{cursor:r,repo:n}=s||{},o=k(n),{variables:a,variableTypes:i,mergeRequestArguments:u}=this.getVariablesForPullRequests(s),l={fullPath:o,...a},p=await I(this.config,{query:`
|
|
714
714
|
query getPullRequestsForRepo(
|
|
715
715
|
$fullPath: ID!
|
|
716
716
|
$after: String
|
|
@@ -734,12 +734,12 @@ query getPullRequestsForRepo(
|
|
|
734
734
|
hasNextPage
|
|
735
735
|
}
|
|
736
736
|
nodes {
|
|
737
|
-
${
|
|
737
|
+
${Ue(!1,!0,!0)}
|
|
738
738
|
}
|
|
739
739
|
}
|
|
740
740
|
}
|
|
741
741
|
}
|
|
742
|
-
`,variables:{...l,after:
|
|
742
|
+
`,variables:{...l,after:r}},e),d=[],c=(R=p.body.data)==null?void 0:R.project,g=j(c||{fullPath:"",path:"",webUrl:""});return(((b=c==null?void 0:c.mergeRequests)==null?void 0:b.nodes)||[]).forEach(q=>{d.push(ve(q,g))}),{pageInfo:(P=c==null?void 0:c.mergeRequests)==null?void 0:P.pageInfo,data:d}}async getPullRequestsForRepos(s,e={}){var c,g,m,R,b;let{cursor:r}=s||{},n=s.repoIds.map(P=>P.toString().startsWith(z)?P:`${z}${P}`),{variables:o,variableTypes:a,mergeRequestArguments:i}=this.getVariablesForPullRequests(s),u={projectIds:n,...o},l=await I(this.config,{query:`
|
|
743
743
|
query getPullRequests(
|
|
744
744
|
$projectIds: [ID!]
|
|
745
745
|
$after: String
|
|
@@ -764,20 +764,20 @@ query getPullRequests(
|
|
|
764
764
|
${i.length?i.join(" "):""}
|
|
765
765
|
) {
|
|
766
766
|
nodes {
|
|
767
|
-
${
|
|
767
|
+
${Ue(!1,!1,!1)}
|
|
768
768
|
}
|
|
769
769
|
}
|
|
770
770
|
}
|
|
771
771
|
}
|
|
772
772
|
}
|
|
773
|
-
`,variables:{...u,after:
|
|
773
|
+
`,variables:{...u,after:r}},e),p=[];return(((g=(c=l.body.data)==null?void 0:c.projects)==null?void 0:g.nodes)||[]).forEach(P=>{var N;let q=j(P);(((N=P.mergeRequests)==null?void 0:N.nodes)||[]).forEach(K=>{p.push(ve(K,q))})}),{pageInfo:(b=(R=(m=l.body)==null?void 0:m.data)==null?void 0:R.projects)==null?void 0:b.pageInfo,data:p}}async closePullRequest(s,e={}){var l,p,d;let{repo:{namespace:r,name:n},pullRequestId:o}=s,a=`mutation ClosePullRequest($fullPath: ID!, $pullRequestId: String!) {
|
|
774
774
|
mergeRequestUpdate(input: { projectPath: $fullPath, iid: $pullRequestId, state: CLOSED }) {
|
|
775
775
|
errors,
|
|
776
776
|
mergeRequest {
|
|
777
777
|
id
|
|
778
778
|
}
|
|
779
779
|
}
|
|
780
|
-
}`,u=(l=(await I(this.config,{query:a,variables:{fullPath:`${
|
|
780
|
+
}`,u=(l=(await I(this.config,{query:a,variables:{fullPath:`${r}/${n}`,pullRequestId:o}},e)).body.data)==null?void 0:l.mergeRequestUpdate;if(!((p=u==null?void 0:u.mergeRequest)!=null&&p.id)||((d=u==null?void 0:u.errors)==null?void 0:d.length)!==0)throw new Error("Could not close pull request")}async mergePullRequest(s,e={}){var d,c,g;let{repo:{namespace:r,name:n},pullRequestId:o,expectedSourceSha:a,mergeStrategy:i}=s,u=`mutation MergePullRequest(
|
|
781
781
|
$fullPath: ID!,
|
|
782
782
|
$pullRequestId: String!,
|
|
783
783
|
$expectedSourceSha: String!,
|
|
@@ -794,41 +794,41 @@ query getPullRequests(
|
|
|
794
794
|
id
|
|
795
795
|
}
|
|
796
796
|
}
|
|
797
|
-
}`,p=(d=(await I(this.config,{query:u,variables:{fullPath:`${
|
|
797
|
+
}`,p=(d=(await I(this.config,{query:u,variables:{fullPath:`${r}/${n}`,pullRequestId:o,expectedSourceSha:a,squash:i==="SQUASH"}},e)).body.data)==null?void 0:d.mergeRequestAccept;if(!((c=p==null?void 0:p.mergeRequest)!=null&&c.id)||((g=p==null?void 0:p.errors)==null?void 0:g.length)!==0)throw new Error("Could not merge pull request")}async setPullRequestMilestone(s,e={}){var p,d,c;let{repo:{namespace:r,name:n},pullRequestId:o,milestoneGraphQLId:a}=s,i=`mutation SetPullRequestMilestone($fullPath: ID!, $pullRequestId: String!, $milestoneGraphQLId: MilestoneID) {
|
|
798
798
|
mergeRequestSetMilestone(input: { projectPath: $fullPath, iid: $pullRequestId, milestoneId: $milestoneGraphQLId }) {
|
|
799
799
|
errors,
|
|
800
800
|
mergeRequest {
|
|
801
801
|
id
|
|
802
802
|
}
|
|
803
803
|
}
|
|
804
|
-
}`,u=await I(this.config,{query:i,variables:{fullPath:`${
|
|
804
|
+
}`,u=await I(this.config,{query:i,variables:{fullPath:`${r}/${n}`,pullRequestId:o,milestoneGraphQLId:a}},e),l=(p=u.body.data)==null?void 0:p.mergeRequestSetMilestone;if(!((d=l==null?void 0:l.mergeRequest)!=null&&d.id)||u.body.errors||((c=l==null?void 0:l.errors)==null?void 0:c.length)!==0)throw new Error("Could not set milestone of pull request")}async setPullRequestAsDraft(s,e={}){var p,d,c;let{repo:{namespace:r,name:n},pullRequestId:o,isDraft:a}=s,i=`mutation MergeRequestSetDraft($fullPath: ID!, $pullRequestId: String!, $isDraft: Boolean!) {
|
|
805
805
|
mergeRequestSetDraft(input: { projectPath: $fullPath, iid: $pullRequestId, draft: $isDraft }) {
|
|
806
806
|
errors,
|
|
807
807
|
mergeRequest {
|
|
808
808
|
id
|
|
809
809
|
}
|
|
810
810
|
}
|
|
811
|
-
}`,l=(p=(await I(this.config,{query:i,variables:{fullPath:`${
|
|
811
|
+
}`,l=(p=(await I(this.config,{query:i,variables:{fullPath:`${r}/${n}`,pullRequestId:o,isDraft:a}},e)).body.data)==null?void 0:p.mergeRequestSetDraft;if(!((d=l==null?void 0:l.mergeRequest)!=null&&d.id)||((c=l==null?void 0:l.errors)==null?void 0:c.length)!==0)throw new Error("Could not set pull request as draft")}async setPullRequestReviewers(s,e={}){var p,d,c;let{repo:{namespace:r,name:n},pullRequestId:o,reviewerUsernames:a}=s,i=`mutation MergeRequestSetReviewers($fullPath: ID!, $pullRequestId: String!, $reviewerUsernames: [String!]!) {
|
|
812
812
|
mergeRequestSetReviewers(input: { projectPath: $fullPath, iid: $pullRequestId, reviewerUsernames: $reviewerUsernames }) {
|
|
813
813
|
errors,
|
|
814
814
|
mergeRequest {
|
|
815
815
|
id
|
|
816
816
|
}
|
|
817
817
|
}
|
|
818
|
-
}`,l=(p=(await I(this.config,{query:i,variables:{fullPath:`${
|
|
818
|
+
}`,l=(p=(await I(this.config,{query:i,variables:{fullPath:`${r}/${n}`,pullRequestId:o,reviewerUsernames:a}},e)).body.data)==null?void 0:p.mergeRequestSetReviewers;if(!((d=l==null?void 0:l.mergeRequest)!=null&&d.id)||((c=l==null?void 0:l.errors)==null?void 0:c.length)!==0)throw new Error("Could not set pull request reviewers")}async setPullRequestAssignees(s,e={}){var p,d,c;let{repo:{namespace:r,name:n},pullRequestId:o,assigneeUsernames:a}=s,i=`mutation MergeRequestSetAssignees($fullPath: ID!, $pullRequestId: String!, $assigneeUsernames: [String!]!) {
|
|
819
819
|
mergeRequestSetAssignees(input: { projectPath: $fullPath, iid: $pullRequestId, assigneeUsernames: $assigneeUsernames }) {
|
|
820
820
|
errors,
|
|
821
821
|
mergeRequest {
|
|
822
822
|
id
|
|
823
823
|
}
|
|
824
824
|
}
|
|
825
|
-
}`,l=(p=(await I(this.config,{query:i,variables:{fullPath:`${
|
|
825
|
+
}`,l=(p=(await I(this.config,{query:i,variables:{fullPath:`${r}/${n}`,pullRequestId:o,assigneeUsernames:a}},e)).body.data)==null?void 0:p.mergeRequestSetAssignees;if(!((d=l==null?void 0:l.mergeRequest)!=null&&d.id)||((c=l==null?void 0:l.errors)==null?void 0:c.length)!==0)throw new Error("Could not set pull request assignees")}async setPullRequestLabels(s,e={}){var l,p,d;let{repo:{namespace:r,name:n},pullRequestId:o,labelGraphQLIds:a}=s,i=`mutation SetPullRequestLabels($fullPath: ID!, $pullRequestId: String!, $labelGraphQLIds: [LabelID!]!) {
|
|
826
826
|
mergeRequestSetLabels(input: { projectPath: $fullPath, iid: $pullRequestId, labelIds: $labelGraphQLIds }) {
|
|
827
827
|
mergeRequest {
|
|
828
828
|
id
|
|
829
829
|
}
|
|
830
830
|
}
|
|
831
|
-
}`;if(!((d=(p=(l=(await I(this.config,{query:i,variables:{fullPath:`${
|
|
831
|
+
}`;if(!((d=(p=(l=(await I(this.config,{query:i,variables:{fullPath:`${r}/${n}`,pullRequestId:o,labelGraphQLIds:a}},e)).body.data)==null?void 0:l.mergeRequestSetLabels)==null?void 0:p.mergeRequest)!=null&&d.id))throw new Error("Could not set pull request labels")}async getIssue(s,e={}){var o,a,i;let r=_t(s),n=await I(this.config,{query:`
|
|
832
832
|
query GetSingleIssue($projectId: ID!, $issueId: String!) {
|
|
833
833
|
project(fullPath: $projectId) {
|
|
834
834
|
path
|
|
@@ -839,7 +839,7 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
|
|
|
839
839
|
}
|
|
840
840
|
}
|
|
841
841
|
}
|
|
842
|
-
`,variables:{issueId:
|
|
842
|
+
`,variables:{issueId:s.id,projectId:r}},e);if(!((o=n.body.data)!=null&&o.project))throw new Error(`Repository ${r} not found`);if(!((i=(a=n.body.data)==null?void 0:a.project)!=null&&i.issue))throw new Error(`Issue ${s.id} not found`);return{data:De(n.body.data.project.issue,j(n.body.data.project))}}getVariablesForIssues(s){let{updatedBefore:e,authorLogin:r,assigneeLogins:n}=s||{},o={},a=[],i=[],u=(l,p,d)=>{a.push(`$${l}: ${d}`),i.push(`${l}: $${l}`),o[l]=p};return e&&u("updatedBefore",e,"Time"),r&&u("authorUsername",r,"String"),n&&u("assigneeUsername",n[0],"String"),{variables:o,variableTypes:a,issueArguments:i}}async getIssuesForRepo(s,e={}){var b,P,q;let{cursor:r,repo:n}=s||{},o=k(n),{variables:a,variableTypes:i,issueArguments:u}=this.getVariablesForIssues(s),l={fullPath:o,...a},p=`
|
|
843
843
|
query GetIssuesFromProject(
|
|
844
844
|
$fullPath: ID!
|
|
845
845
|
$after: String
|
|
@@ -867,7 +867,7 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
|
|
|
867
867
|
}
|
|
868
868
|
}
|
|
869
869
|
}
|
|
870
|
-
}`,d=await I(this.config,{query:p,variables:{...l,after:
|
|
870
|
+
}`,d=await I(this.config,{query:p,variables:{...l,after:r}},e),c=[],g=(b=d.body.data)==null?void 0:b.project,m=j(g||{fullPath:"",path:"",webUrl:""});return(((P=g==null?void 0:g.issues)==null?void 0:P.nodes)||[]).forEach(v=>{c.push(De(v,m))}),{pageInfo:(q=g==null?void 0:g.issues)==null?void 0:q.pageInfo,data:c.sort((v,N)=>(v.updatedDate||v.createdDate).getTime()-(N.updatedDate||N.createdDate).getTime())}}async getIssuesForRepos(s,e={}){var g,m,R,b,P;let{cursor:r}=s||{},n=s.repoIds.map(q=>q.toString().startsWith(z)?q:`${z}${q}`),{variables:o,variableTypes:a,mergeRequestArguments:i}=this.getVariablesForPullRequests(s),u={projectIds:n,...o},l=`
|
|
871
871
|
query GetIssuesFromProject(
|
|
872
872
|
$projectIds: [ID!]
|
|
873
873
|
$after: String
|
|
@@ -897,19 +897,19 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
|
|
|
897
897
|
}
|
|
898
898
|
}
|
|
899
899
|
}
|
|
900
|
-
}`,p=await I(this.config,{query:l,variables:{...u,after:
|
|
900
|
+
}`,p=await I(this.config,{query:l,variables:{...u,after:r}},e),d=[];return(((m=(g=p.body.data)==null?void 0:g.projects)==null?void 0:m.nodes)||[]).forEach(q=>{var K;let v=j(q);(((K=q.issues)==null?void 0:K.nodes)||[]).forEach(et=>d.push(De(et,v)))}),{pageInfo:(P=(b=(R=p.body)==null?void 0:R.data)==null?void 0:b.projects)==null?void 0:P.pageInfo,data:d.sort((q,v)=>(q.updatedDate||q.createdDate).getTime()-(v.updatedDate||v.createdDate).getTime())}}async setIssueStatus(s,e={}){var l,p,d;let{repo:{namespace:r,name:n},issueId:o,status:a}=s,i=`mutation SetIssueState($fullPath: ID!, $issueId: String!, $status: IssueStateEvent!) {
|
|
901
901
|
updateIssue(input: { projectPath: $fullPath, iid: $issueId, stateEvent: $status }) {
|
|
902
902
|
issue {
|
|
903
903
|
id
|
|
904
904
|
}
|
|
905
905
|
}
|
|
906
|
-
}`;if(!((d=(p=(l=(await I(this.config,{query:i,variables:{fullPath:`${
|
|
906
|
+
}`;if(!((d=(p=(l=(await I(this.config,{query:i,variables:{fullPath:`${r}/${n}`,issueId:o,status:a}},e)).body.data)==null?void 0:l.updateIssue)==null?void 0:p.issue)!=null&&d.id))throw new Error("Could not set issue status")}async setIssueLabels(s,e={}){var l,p,d;let{repo:{namespace:r,name:n},issueId:o,labelGraphQLIds:a}=s,i=`mutation SetIssueLabels($fullPath: ID!, $issueId: String!, $labelGraphQLIds: [ID!]) {
|
|
907
907
|
updateIssue(input: { projectPath: $fullPath, iid: $issueId, labelIds: $labelGraphQLIds }) {
|
|
908
908
|
issue {
|
|
909
909
|
id
|
|
910
910
|
}
|
|
911
911
|
}
|
|
912
|
-
}`;if(!((d=(p=(l=(await I(this.config,{query:i,variables:{fullPath:`${
|
|
912
|
+
}`;if(!((d=(p=(l=(await I(this.config,{query:i,variables:{fullPath:`${r}/${n}`,issueId:o,labelGraphQLIds:a}},e)).body.data)==null?void 0:l.updateIssue)==null?void 0:p.issue)!=null&&d.id))throw new Error("Could not set issue labels")}async setIssueMilestone(s,e={}){var p,d,c,g;let{repo:{namespace:r,name:n},issueId:o}=s,a=((p=s.milestoneGraphQLId)==null?void 0:p.replace(Ye,""))??"",i=`mutation SetIssueMilestone($fullPath: ID!, $issueId: String!, $milestoneGraphQLId: ID) {
|
|
913
913
|
updateIssue(input: { projectPath: $fullPath, iid: $issueId, milestoneId: $milestoneGraphQLId }) {
|
|
914
914
|
errors
|
|
915
915
|
issue {
|
|
@@ -919,14 +919,14 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
|
|
|
919
919
|
}
|
|
920
920
|
}
|
|
921
921
|
}
|
|
922
|
-
}`,u=await I(this.config,{query:i,variables:{fullPath:`${
|
|
922
|
+
}`,u=await I(this.config,{query:i,variables:{fullPath:`${r}/${n}`,issueId:o,milestoneGraphQLId:a}},e),l=(d=u.body.data)==null?void 0:d.updateIssue;if(!((c=l==null?void 0:l.issue)!=null&&c.id)||u.body.errors||((g=l==null?void 0:l.errors)==null?void 0:g.length)!==0)throw new Error("Could not set milestone of issue")}async setIssueAssignees(s,e={}){var p,d,c;let{repo:{namespace:r,name:n},issueId:o,assigneeUsernames:a}=s,i=`mutation SetIssueAssignees($fullPath: ID!, $issueId: String!, $assigneeUsernames: [String!]!) {
|
|
923
923
|
issueSetAssignees(input: { projectPath: $fullPath, iid: $issueId, assigneeUsernames: $assigneeUsernames }) {
|
|
924
924
|
errors,
|
|
925
925
|
issue {
|
|
926
926
|
id
|
|
927
927
|
}
|
|
928
928
|
}
|
|
929
|
-
}`,l=(p=(await I(this.config,{query:i,variables:{fullPath:`${
|
|
929
|
+
}`,l=(p=(await I(this.config,{query:i,variables:{fullPath:`${r}/${n}`,issueId:o,assigneeUsernames:a}},e)).body.data)==null?void 0:p.issueSetAssignees;if(!((d=l==null?void 0:l.issue)!=null&&d.id)||((c=l==null?void 0:l.errors)==null?void 0:c.length)!==0)throw new Error("Could not set issue assignees")}async getMilestonesForRepo(s,e={}){var i,u,l,p,d,c,g;let{repo:{namespace:r,name:n},cursor:o}=s,a=await I(this.config,{query:`
|
|
930
930
|
query getLabelsForRepo(
|
|
931
931
|
$fullPath: ID!
|
|
932
932
|
$after: String
|
|
@@ -937,7 +937,7 @@ query getLabelsForRepo(
|
|
|
937
937
|
webUrl
|
|
938
938
|
milestones(after: $after) {
|
|
939
939
|
nodes {
|
|
940
|
-
${
|
|
940
|
+
${Ge}
|
|
941
941
|
}
|
|
942
942
|
pageInfo {
|
|
943
943
|
endCursor
|
|
@@ -946,7 +946,7 @@ query getLabelsForRepo(
|
|
|
946
946
|
}
|
|
947
947
|
}
|
|
948
948
|
}
|
|
949
|
-
`,variables:{fullPath:`${
|
|
949
|
+
`,variables:{fullPath:`${r}/${n}`,after:o}},e);return{pageInfo:((l=(u=(i=a.body.data)==null?void 0:i.project)==null?void 0:u.milestones)==null?void 0:l.pageInfo)??{endCursor:null,hasNextPage:!1},data:((g=(c=(d=(p=a.body.data)==null?void 0:p.project)==null?void 0:d.milestones)==null?void 0:c.nodes)==null?void 0:g.map(m=>{var R,b;return xe(m,((b=(R=a.body.data)==null?void 0:R.project)==null?void 0:b.webUrl)||"")}))??[]}}async getLabelsForRepo(s,e={}){var i,u,l,p,d,c,g;let{repo:{namespace:r,name:n},cursor:o}=s,a=await I(this.config,{query:`
|
|
950
950
|
query getLabelsForRepo(
|
|
951
951
|
$fullPath: ID!
|
|
952
952
|
$after: String
|
|
@@ -956,7 +956,7 @@ query getLabelsForRepo(
|
|
|
956
956
|
) {
|
|
957
957
|
labels(after: $after) {
|
|
958
958
|
nodes {
|
|
959
|
-
${
|
|
959
|
+
${Oe}
|
|
960
960
|
}
|
|
961
961
|
pageInfo {
|
|
962
962
|
endCursor
|
|
@@ -965,4 +965,4 @@ query getLabelsForRepo(
|
|
|
965
965
|
}
|
|
966
966
|
}
|
|
967
967
|
}
|
|
968
|
-
`,variables:{fullPath:`${s}/${n}`,after:o}},e);return{pageInfo:((l=(u=(i=a.body.data)==null?void 0:i.project)==null?void 0:u.labels)==null?void 0:l.pageInfo)??{endCursor:null,hasNextPage:!1},data:((g=(c=(d=(p=a.body.data)==null?void 0:p.project)==null?void 0:d.labels)==null?void 0:c.nodes)==null?void 0:g.map(Oe))??[]}}};var L="https://api.atlassian.com/ex/jira",te=100,Qt=(t,r)=>{var s,n,o,a,i,u,l;let e=t.fields.assignee;return{id:t.id,commentCount:t.fields.comment.comments.length,number:t.key,title:t.fields.summary,url:r?`${r}/browse/${t.key}`:null,createdDate:new Date(t.fields.created),author:{id:t.fields.creator.accountId,name:t.fields.creator.displayName,email:t.fields.creator.emailAddress,avatarUrl:t.fields.creator.avatarUrls["32x32"],username:t.fields.creator.displayName},updatedDate:new Date(t.fields.updated),assignees:e?[{id:e.accountId,name:e.displayName,email:e.emailAddress,avatarUrl:e.avatarUrls["32x32"],username:e.displayName}]:[],description:null,repository:null,state:{name:(s=t.fields.status)==null?void 0:s.name,color:(o=(n=t.fields.status)==null?void 0:n.statusCategory)==null?void 0:o.colorName},statusTransitions:((a=t.transitions)==null?void 0:a.map(Nt))??[],components:((i=t.fields.components)==null?void 0:i.map(jt))??[],type:t.fields.issuetype.name,upvoteCount:((u=t.fields.votes)==null?void 0:u.votes)||0,labels:((l=t.fields.labels)==null?void 0:l.map(p=>({color:null,description:null,id:null,name:p})))??[]}},Nt=t=>({name:t.name,id:t.id}),jt=t=>({description:t.description??null,id:t.id,name:t.name}),Bt=t=>({id:t.accountId,name:t.displayName,email:t.emailAddress,avatarUrl:t.avatarUrls["48x48"],username:t.displayName}),J=class extends E{constructor(){super(...arguments);this._resourceUrlCache={}}async getResourceUrl(e,s={}){var a;let n=s.token||this.config.token;if(!n)return null;let o=this._resourceUrlCache[n];return o?o[e.resourceId]??null:(await this.getJiraResourcesForCurrentUser(s),((a=this._resourceUrlCache[n])==null?void 0:a[e.resourceId])??null)}async getCurrentUserForResource(e,s={}){let n=await this.config.request({url:`${s.baseUrl||L}/${e.resourceId}/rest/api/2/myself`,headers:h(s.token||this.config.token)});return{data:{name:n.body.displayName,email:n.body.emailAddress,avatarUrl:n.body.avatarUrls["48x48"],id:n.body.accountId,username:n.body.displayName}}}async getJiraResourcesForCurrentUser(e={}){let s=await this.config.request({url:`${e.baseUrl||"https://api.atlassian.com/"}/oauth/token/accessible-resources`,headers:h(e.token||this.config.token)}),n=e.token||this.config.token,o=n?this._resourceUrlCache[n]||{}:void 0,a=s.body.map(i=>(o&&(o[i.id]=i.url),{avatarUrl:i.avatarUrl,id:i.id,name:i.name,url:i.url}));return n&&(this._resourceUrlCache[n]=o),{data:a}}async getJiraProjectsForResource(e,s={}){let n=new URL(`${s.baseUrl||L}/${e.resourceId}/rest/api/2/project/search`);n.searchParams.set("maxResults",te.toString()),e.cursor&&n.searchParams.set("startAt",e.cursor);let o=await this.config.request({url:n.toString(),headers:h(s.token||this.config.token)});return{pageInfo:{hasNextPage:o.body.values.length!==0,endCursor:(o.body.startAt+o.body.values.length).toString()},data:o.body.values.map(a=>({id:a.id,key:a.key,name:a.name,resourceId:e.resourceId}))}}async getJiraProjectsForResources(e,s={}){let n=[];return await Promise.all(e.resourceIds.map(async o=>{let a=await this.getJiraProjectsForResource({resourceId:o},s);n.push(...a.data)})),{data:n}}async getAccountsForJiraProject(e,s={}){let{resourceId:n,projectKey:o,cursor:a}=e,i=new URL(`${s.baseUrl||L}/${n}/rest/api/2/user/assignable/search`);i.searchParams.set("maxResults",te.toString()),a&&i.searchParams.set("startAt",a),i.searchParams.set("project",o);let u=await this.config.request({url:i.toString(),headers:h(s.token||this.config.token)});return{pageInfo:{hasNextPage:u.body.length!==0,endCursor:((a?parseInt(a):0)+u.body.length).toString()},data:u.body.filter(l=>l.accountType!=="app"&&l.active).map(Bt)}}async getComponentsForJiraProject(e,s={}){let{resourceId:n,projectIdOrKey:o}=e,a=new URL(`${s.baseUrl||L}/${n}/rest/api/2/project/${o}/components`);return{data:(await this.config.request({url:a.toString(),headers:h(s.token||this.config.token)})).body}}async getIssuesForProject(e,s={}){let{assigneeLogins:n,authorLogin:o,mentionLogin:a,project:i}=e||{},u=[`project = "${i}"`,"statusCategory != Done"];o&&u.push(`creator in ("${o}")`),n&&n.length!==0&&u.push(`assignee in ("${n.join('", "')}")`),a&&u.push(`comment ~ "${a}"`);let l=await this.config.request({url:`${s.baseUrl||L}/${e.resourceId}/rest/api/2/search?jql=${u.join(" AND ")}&startAt=0&maxResults=${te}&fields=${["assignee","comment","summary","created","creator","updated","votes","issuetype","status","labels","components"].join(",")}&expand=transitions`,headers:h(s.token||this.config.token)}),p=await this.getResourceUrl({resourceId:e.resourceId},s);return{data:l.body.issues.map(d=>Qt(d,p))}}async setIssueStatus(e,s={}){let{resourceId:n,issueId:o,status:a}=e,i={transition:{id:a}};await this.config.request({method:"POST",url:`${s.baseUrl||L}/${n}/rest/api/2/issue/${o}/transitions`,body:JSON.stringify(i),headers:{...h(s.token||this.config.token),"Content-Type":"application/json"}})}async setIssueAssignee(e,s={}){let{resourceId:n,issueId:o,assigneeId:a}=e,i={accountId:a};await this.config.request({method:"PUT",url:`${s.baseUrl||L}/${n}/rest/api/2/issue/${o}/assignee`,body:JSON.stringify(i),headers:{...h(s.token||this.config.token),"Content-Type":"application/json"}})}async setIssueComponents(e,s={}){let{resourceId:n,issueId:o,componentIds:a}=e,i={fields:{components:a.map(u=>({id:u}))}};await this.config.request({method:"PUT",url:`${s.baseUrl||L}/${n}/rest/api/2/issue/${o}`,body:JSON.stringify(i),headers:{...h(s.token||this.config.token),"Content-Type":"application/json"}})}async setIssueLabels(e,s={}){let{resourceId:n,issueId:o,labelNames:a}=e,i={fields:{labels:a}};if(!(await this.config.request({method:"PUT",url:`${s.baseUrl||L}/${n}/rest/api/2/issue/${o}?returnIssue=true`,body:JSON.stringify(i),headers:{...h(s.token||this.config.token),"Content-Type":"application/json"}})).body.id)throw new Error("Could not set issue labels")}async getLabelsForResource(e,s={}){let{resourceId:n,cursor:o}=e,a=new URL(`${s.baseUrl||L}/${n}/rest/api/2/label`);a.searchParams.set("maxResults",te.toString()),o&&a.searchParams.set("startAt",o);let i=await this.config.request({url:a.toString(),headers:h(s.token||this.config.token)});return{pageInfo:{hasNextPage:!i.body.isLast,endCursor:(i.body.startAt+i.body.values.length).toString()},data:i.body.values.map(u=>({color:null,description:null,id:null,name:u}))}}};var O="https://api.trello.com",Ft=1e3,Mt=(t,r)=>{let e=new Date(1e3*parseInt(t.id.substring(0,8),16));return{id:t.id,commentCount:t.badges.comments,number:t.idShort.toString(),title:t.name,url:t.url,createdDate:new Date(e.toISOString()),author:null,updatedDate:new Date(t.dateLastActivity),assignees:t.idMembers.map(s=>({id:s,username:null,name:null,email:null,avatarUrl:null})),description:null,state:r[t.idList??""]?{name:r[t.idList].name,color:null}:null,type:null,repository:null,upvoteCount:t.badges.votes,labels:t.labels.map(s=>({color:s.color,description:null,id:s.id,name:s.name}))}},H=class extends E{async getCurrentUser(r,e={}){let s=await this.config.request({url:`${e.baseUrl||O}/1/members/me?key=${r.appKey}&token=${e.token||this.config.token}`,headers:h(e.token||this.config.token)});return{data:{name:s.body.fullName,email:s.body.email,avatarUrl:s.body.avatarHash?`https://trello-members.s3.amazonaws.com/${s.body.id}/${s.body.avatarHash}/50.png`:null,id:s.body.id,username:s.body.username}}}async getBoardsForCurrentUser(r,e={}){return{data:(await this.config.request({url:`${e.baseUrl||O}/1/members/me/boards?fields=name&key=${r.appKey}&token=${e.token||this.config.token}&filter=open`,headers:h(e.token||this.config.token)})).body.map(n=>({id:n.id,name:n.name}))}}async getListsForTrelloBoard(r,e={}){let{appKey:s,boardId:n}=r;return{data:(await this.config.request({url:`${e.baseUrl||O}/1/boards/${n}/lists?key=${s}&token=${e.token||this.config.token}`,headers:h(e.token||this.config.token)})).body}}async getAccountsForTrelloBoard(r,e={}){let{appKey:s,boardId:n}=r;return{data:(await this.config.request({url:`${e.baseUrl||O}/1/boards/${n}/members?key=${s}&token=${e.token||this.config.token}`,headers:h(e.token||this.config.token)})).body.map(a=>({id:a.id,name:a.fullName,username:a.username,email:null,avatarUrl:null}))}}async getIssuesForBoard(r,e={}){let s=["-is:archived","sort:edited"],{appKey:n,boardId:o,filterText:a,assigneeLogins:i,trelloBoardListsById:u}=r||{};i&&s.push("@me");let l=`${a?`${a}`:""}${s.join(" ")} board:${o}`;return{data:(await this.config.request({url:`${e.baseUrl||O}/1/search?key=${n}&query=${l}&cards_limit=${Ft}&token=${e.token||this.config.token}`,headers:h(e.token||this.config.token)})).body.cards.map(d=>Mt(d,u||{}))}}async updateIssue(r,e,s,n){return await this.config.request({method:"PUT",url:`${n.baseUrl||O}/1/cards/${e}?key=${r}&token=${n.token||this.config.token}&${s}`,headers:h(n.token||this.config.token)})}async setIssueStatus(r,e={}){let{appKey:s,cardId:n,status:o}=r,a=`idList=${o}`;if(!(await this.updateIssue(s,n,a,e)).body.id)throw new Error("Could not set issue status")}async setIssueAssignees(r,e={}){let{appKey:s,cardId:n,assigneeIds:o}=r,a=`idMembers=${encodeURIComponent(o.join(","))}`;if(!(await this.updateIssue(s,n,a,e)).body.id)throw new Error("Could not set issue status")}async setIssueLabels(r,e={}){let{appKey:s,cardId:n,labelIds:o}=r;if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||O}/1/cards/${n}?key=${s}&token=${e.token||this.config.token}&idLabels=${encodeURIComponent(o.join(","))}`,headers:h(e.token||this.config.token)})).body.id)throw new Error("Could not set issue status")}async setIssueArchived(r,e={}){let{appKey:s,cardId:n,archived:o}=r;if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||O}/1/cards/${n}?key=${s}&token=${e.token||this.config.token}&closed=${o}`,headers:h(e.token||this.config.token)})).body.id)throw new Error("Could not update issue archived status")}async getLabelsForBoard(r,e={}){let{appKey:s,boardId:n}=r;return{data:(await this.config.request({url:`${e.baseUrl||O}/1/boards/${n}/labels?key=${s}&token=${e.token||this.config.token}`,headers:h(e.token||this.config.token)})).body.map(a=>({color:a.color,description:null,id:a.id,name:a.name}))}}};var se={};A(se,{getIssueUniqueId:()=>zt,getPullRequestUniqueId:()=>Wt});var zt=(t,r,e,s="")=>{let n=[];return n.push(s),n.push(t),n.push(r),n.push(e),JSON.stringify(n)},Wt=(t,r,e,s,n="")=>{let o=[];return o.push(n),o.push(t),o.push(r),o.push(e),o.push(s),JSON.stringify(o)};var re={};A(re,{getIssueUniqueId:()=>Jt,getPullRequestUniqueId:()=>Ht});var Jt=(t,r)=>JSON.stringify(["",t,r]),Ht=(t,r)=>JSON.stringify(["",t,r]);var ne={};A(ne,{getIssueUniqueId:()=>Vt,getPullRequestUniqueId:()=>Kt});var Vt=(t,r,e)=>JSON.stringify([e,t,r]),Kt=(t,r,e)=>JSON.stringify([e,t,r]);var ae={};A(ae,{getIssueUniqueId:()=>Xt,getPullRequestRank:()=>Yt,getPullRequestUniqueId:()=>Zt});var Xt=(t,r="")=>{let e=[];return e.push(r),e.push(t),JSON.stringify(e)},Zt=(t,r="")=>{let e=[];return e.push(r),e.push(t),JSON.stringify(e)},Yt=(t,r,e)=>{var a,i,u;let s=0,n,o;return(a=t.reviews)==null||a.forEach(l=>{l.reviewer.id===r&&(n=l.state),l.state==="CHANGES_REQUESTED"?o="CHANGES_REQUESTED":l.state==="APPROVED"&&o!=="CHANGES_REQUESTED"&&(o="APPROVED")}),o||(o="REVIEW_REQUESTED"),((i=t.author)==null?void 0:i.id)===r?s+=1e3:(u=t.assignees)!=null&&u.find(l=>l.id===r)?s+=900:n==="REVIEW_REQUESTED"?s+=800:e&&(s+=700),o==="APPROVED"?t.mergeableState==="MERGEABLE"?s+=100:t.mergeableState==="CONFLICTS"?s+=90:s+=80:o=="CHANGES_REQUESTED"&&(s+=70),s};var oe={};A(oe,{getIssueUniqueId:()=>es,getPullRequestUniqueId:()=>ts});var es=(t,r="")=>{let e=[];return e.push(r),e.push(t),JSON.stringify(e)},ts=(t,r="")=>{let e=[];return e.push(r),e.push(t),JSON.stringify(e)};var ie={};A(ie,{getIssueUniqueId:()=>ss,getJiraServerIssueUniqueId:()=>rs});var ss=(t,r,e)=>{let s=[];return s.push(""),s.push(t),s.push(r),s.push(e),JSON.stringify(s)},rs=(t,r,e)=>{let s=[];return s.push(e),s.push(""),s.push(t),s.push(r),JSON.stringify(s)};var ue={};A(ue,{getIssueUniqueId:()=>ns});var ns=(t,r,e,s="")=>{let n=[];return n.push(s),n.push(t),n.push(r),n.push(e),JSON.stringify(n)};var as=t=>{let r={request:t==null?void 0:t.request};return{azureDevOps:new j({...r,...t==null?void 0:t.azureDevOps}),bitbucket:new B({...r,...t==null?void 0:t.bitbucket}),bitbucketServer:new F({...r,...t==null?void 0:t.bitbucketServer}),github:new M({...r,...t==null?void 0:t.github}),gitlab:new W({...r,...t==null?void 0:t.gitlab}),jira:new J({...r,...t==null?void 0:t.jira}),trello:new H({...r,...t==null?void 0:t.trello})}},os=as;var is={azureDevOps:se,bitbucket:re,bitbucketServer:ne,github:ae,gitlab:oe,jira:ie,trello:ue};
|
|
968
|
+
`,variables:{fullPath:`${r}/${n}`,after:o}},e);return{pageInfo:((l=(u=(i=a.body.data)==null?void 0:i.project)==null?void 0:u.labels)==null?void 0:l.pageInfo)??{endCursor:null,hasNextPage:!1},data:((g=(c=(d=(p=a.body.data)==null?void 0:p.project)==null?void 0:d.labels)==null?void 0:c.nodes)==null?void 0:g.map(Ae))??[]}}};var G="https://api.atlassian.com/ex/jira",se=100,jt=(t,s)=>{var r,n,o,a;let e=t.fields.assignee;return{id:t.id,commentCount:t.fields.comment.comments.length,number:t.key,title:t.fields.summary,url:s?`${s}/browse/${t.key}`:null,createdDate:new Date(t.fields.created),author:{id:t.fields.creator.accountId,name:t.fields.creator.displayName,email:t.fields.creator.emailAddress,avatarUrl:t.fields.creator.avatarUrls["32x32"],username:t.fields.creator.displayName},updatedDate:new Date(t.fields.updated),assignees:e?[{id:e.accountId,name:e.displayName,email:e.emailAddress,avatarUrl:e.avatarUrls["32x32"],username:e.displayName}]:[],description:null,repository:null,state:Mt(t.fields.status),statusTransitions:((r=t.transitions)==null?void 0:r.map(Qt))??[],components:((n=t.fields.components)==null?void 0:n.map(Bt))??[],type:t.fields.issuetype.name,upvoteCount:((o=t.fields.votes)==null?void 0:o.votes)||0,labels:((a=t.fields.labels)==null?void 0:a.map(i=>({color:null,description:null,id:null,name:i})))??[]}},Qt=t=>({name:t.name,id:t.id}),Bt=t=>({description:t.description??null,id:t.id,name:t.name}),Ft=t=>({id:t.accountId,name:t.displayName,email:t.emailAddress,avatarUrl:t.avatarUrls["48x48"],username:t.displayName}),Mt=t=>{let s;switch(t.statusCategory.name){case"To Do":s="TO_DO";break;case"In Progress":s="IN_PROGRESS";break;default:s="DONE";break}return{name:t.name,color:t.statusCategory.colorName,category:s}},W=class extends U{constructor(){super(...arguments);this._resourceUrlCache={}}async getResourceUrl(e,r={}){var a;let n=r.token||this.config.token;if(!n)return null;let o=this._resourceUrlCache[n];return o?o[e.resourceId]??null:(await this.getJiraResourcesForCurrentUser(r),((a=this._resourceUrlCache[n])==null?void 0:a[e.resourceId])??null)}async getCurrentUserForResource(e,r={}){let n=await this.config.request({url:`${r.baseUrl||G}/${e.resourceId}/rest/api/2/myself`,headers:h(r.token||this.config.token)});return{data:{name:n.body.displayName,email:n.body.emailAddress,avatarUrl:n.body.avatarUrls["48x48"],id:n.body.accountId,username:n.body.displayName}}}async getJiraResourcesForCurrentUser(e={}){let r=await this.config.request({url:`${e.baseUrl||"https://api.atlassian.com/"}/oauth/token/accessible-resources`,headers:h(e.token||this.config.token)}),n=e.token||this.config.token,o=n?this._resourceUrlCache[n]||{}:void 0,a=r.body.map(i=>(o&&(o[i.id]=i.url),{avatarUrl:i.avatarUrl,id:i.id,name:i.name,url:i.url}));return n&&(this._resourceUrlCache[n]=o),{data:a}}async getJiraProjectsForResource(e,r={}){let n=new URL(`${r.baseUrl||G}/${e.resourceId}/rest/api/2/project/search`);n.searchParams.set("maxResults",se.toString()),e.cursor&&n.searchParams.set("startAt",e.cursor);let o=await this.config.request({url:n.toString(),headers:h(r.token||this.config.token)});return{pageInfo:{hasNextPage:o.body.values.length!==0,endCursor:(o.body.startAt+o.body.values.length).toString()},data:o.body.values.map(a=>({id:a.id,key:a.key,name:a.name,resourceId:e.resourceId}))}}async getJiraProjectsForResources(e,r={}){let n=[];return await Promise.all(e.resourceIds.map(async o=>{let a=await this.getJiraProjectsForResource({resourceId:o},r);n.push(...a.data)})),{data:n}}async getAccountsForJiraProject(e,r={}){let{resourceId:n,projectKey:o,cursor:a}=e,i=new URL(`${r.baseUrl||G}/${n}/rest/api/2/user/assignable/search`);i.searchParams.set("maxResults",se.toString()),a&&i.searchParams.set("startAt",a),i.searchParams.set("project",o);let u=await this.config.request({url:i.toString(),headers:h(r.token||this.config.token)});return{pageInfo:{hasNextPage:u.body.length!==0,endCursor:((a?parseInt(a):0)+u.body.length).toString()},data:u.body.filter(l=>l.accountType!=="app"&&l.active).map(Ft)}}async getComponentsForJiraProject(e,r={}){let{resourceId:n,projectIdOrKey:o}=e,a=new URL(`${r.baseUrl||G}/${n}/rest/api/2/project/${o}/components`);return{data:(await this.config.request({url:a.toString(),headers:h(r.token||this.config.token)})).body}}async getIssuesForProject(e,r={}){let{assigneeLogins:n,authorLogin:o,mentionLogin:a,project:i}=e||{},u=[`project = "${i}"`,"statusCategory != Done"];o&&u.push(`creator in ("${o}")`),n&&n.length!==0&&u.push(`assignee in ("${n.join('", "')}")`),a&&u.push(`comment ~ "${a}"`);let l=await this.config.request({url:`${r.baseUrl||G}/${e.resourceId}/rest/api/2/search?jql=${u.join(" AND ")}&startAt=0&maxResults=${se}&fields=${["assignee","comment","summary","created","creator","updated","votes","issuetype","status","labels","components"].join(",")}&expand=transitions`,headers:h(r.token||this.config.token)}),p=await this.getResourceUrl({resourceId:e.resourceId},r);return{data:l.body.issues.map(d=>jt(d,p))}}async setIssueStatus(e,r={}){let{resourceId:n,issueId:o,status:a}=e,i={transition:{id:a}};await this.config.request({method:"POST",url:`${r.baseUrl||G}/${n}/rest/api/2/issue/${o}/transitions`,body:JSON.stringify(i),headers:{...h(r.token||this.config.token),"Content-Type":"application/json"}})}async setIssueAssignee(e,r={}){let{resourceId:n,issueId:o,assigneeId:a}=e,i={accountId:a};await this.config.request({method:"PUT",url:`${r.baseUrl||G}/${n}/rest/api/2/issue/${o}/assignee`,body:JSON.stringify(i),headers:{...h(r.token||this.config.token),"Content-Type":"application/json"}})}async setIssueComponents(e,r={}){let{resourceId:n,issueId:o,componentIds:a}=e,i={fields:{components:a.map(u=>({id:u}))}};await this.config.request({method:"PUT",url:`${r.baseUrl||G}/${n}/rest/api/2/issue/${o}`,body:JSON.stringify(i),headers:{...h(r.token||this.config.token),"Content-Type":"application/json"}})}async setIssueLabels(e,r={}){let{resourceId:n,issueId:o,labelNames:a}=e,i={fields:{labels:a}};if(!(await this.config.request({method:"PUT",url:`${r.baseUrl||G}/${n}/rest/api/2/issue/${o}?returnIssue=true`,body:JSON.stringify(i),headers:{...h(r.token||this.config.token),"Content-Type":"application/json"}})).body.id)throw new Error("Could not set issue labels")}async getLabelsForResource(e,r={}){let{resourceId:n,cursor:o}=e,a=new URL(`${r.baseUrl||G}/${n}/rest/api/2/label`);a.searchParams.set("maxResults",se.toString()),o&&a.searchParams.set("startAt",o);let i=await this.config.request({url:a.toString(),headers:h(r.token||this.config.token)});return{pageInfo:{hasNextPage:!i.body.isLast,endCursor:(i.body.startAt+i.body.values.length).toString()},data:i.body.values.map(u=>({color:null,description:null,id:null,name:u}))}}};var zt=100,Jt=t=>{var r,n,o,a,i,u,l,p,d;let s=t.fields.assignee,e=new URL(t.self);return{id:t.id,commentCount:((o=(n=(r=t.fields)==null?void 0:r.comment)==null?void 0:n.comments)==null?void 0:o.length)||0,number:t.key,title:t.fields.summary,url:`${e.origin}/browse/${t.key}`,createdDate:new Date(t.fields.created),author:{id:t.fields.creator.key,name:t.fields.creator.displayName,email:t.fields.creator.emailAddress,avatarUrl:t.fields.creator.avatarUrls["32x32"],username:t.fields.creator.displayName},updatedDate:new Date(t.fields.updated),assignees:s?[{id:s.key,name:s.displayName,email:s.emailAddress,avatarUrl:s.avatarUrls["32x32"],username:s.displayName}]:[],description:null,repository:null,state:{name:(a=t.fields.status)==null?void 0:a.name,color:(u=(i=t.fields.status)==null?void 0:i.statusCategory)==null?void 0:u.colorName},statusTransitions:((l=t.transitions)==null?void 0:l.map(Wt))??[],type:t.fields.issuetype.name,upvoteCount:((p=t.fields.votes)==null?void 0:p.votes)||0,labels:((d=t.fields.labels)==null?void 0:d.map(c=>({color:null,description:null,id:null,name:c})))??[]}},Wt=t=>({name:t.name,id:t.id}),H=class extends D{async getCurrentUser(s){let e=await this.config.request({url:`${(s==null?void 0:s.baseUrl)||this.config.baseUrl}/rest/api/2/myself`,headers:h((s==null?void 0:s.token)||this.config.token)});return{data:{name:e.body.displayName,email:e.body.emailAddress,avatarUrl:e.body.avatarUrls["48x48"],id:e.body.key,username:e.body.displayName}}}async getJiraProjects(s){return{data:(await this.config.request({url:`${(s==null?void 0:s.baseUrl)||this.config.baseUrl}/rest/api/2/project`,headers:h((s==null?void 0:s.token)||this.config.token)})).body.map(r=>({id:r.id,name:r.name}))}}async getIssuesForProject(s,e){let{assigneeLogins:r,authorLogin:n,mentionLogin:o,project:a}=s||{},i=[`project = "${a}"`];return n&&i.push(`creator in ("${n}")`),r&&r.length!==0&&i.push(`assignee in ("${r.join('", "')}")`),o&&i.push(`comment ~ "${o}"`),{data:(await this.config.request({url:`${(e==null?void 0:e.baseUrl)||this.config.baseUrl}/rest/api/2/search?jql=${i.join(" AND ")}&startAt=0&maxResults=${zt}&fields=${["assignee","comment","summary","created","creator","updated","votes","issuetype","status","labels"].join(",")}&expand=transitions`,headers:h((e==null?void 0:e.token)||this.config.token)})).body.issues.map(Jt)}}async setIssueStatus(s,e){let{issueId:r,status:n}=s,o={transition:{id:n}};try{await this.config.request({method:"POST",url:`${(e==null?void 0:e.baseUrl)||this.config.baseUrl}/rest/api/2/issue/${r}/transitions`,body:JSON.stringify(o),headers:{...h((e==null?void 0:e.token)||this.config.token),"Content-Type":"application/json"}})}catch(a){if(a.message=="Unexpected end of JSON input")return;throw new Error("Could not set issue status")}}async getLabels(s){return{data:(await this.config.request({url:`${(s==null?void 0:s.baseUrl)||this.config.baseUrl}/rest/api/2/jql/autocompletedata/suggestions?fieldName=labels`,headers:h(s.token||this.config.token)})).body.results.map(({displayName:r})=>({color:null,description:null,id:null,name:r}))}}};var A="https://api.trello.com",Ht=1e3,Vt=(t,s)=>{let e=new Date(1e3*parseInt(t.id.substring(0,8),16));return{id:t.id,commentCount:t.badges.comments,number:t.idShort.toString(),title:t.name,url:t.url,createdDate:new Date(e.toISOString()),author:null,updatedDate:new Date(t.dateLastActivity),assignees:t.idMembers.map(r=>({id:r,username:null,name:null,email:null,avatarUrl:null})),description:null,state:s[t.idList??""]?{name:s[t.idList].name,color:null}:null,type:null,repository:null,upvoteCount:t.badges.votes,labels:t.labels.map(r=>({color:r.color,description:null,id:r.id,name:r.name}))}},V=class extends U{async getCurrentUser(s,e={}){let r=await this.config.request({url:`${e.baseUrl||A}/1/members/me?key=${s.appKey}&token=${e.token||this.config.token}`,headers:h(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}}}async getBoardsForCurrentUser(s,e={}){return{data:(await this.config.request({url:`${e.baseUrl||A}/1/members/me/boards?fields=name&key=${s.appKey}&token=${e.token||this.config.token}&filter=open`,headers:h(e.token||this.config.token)})).body.map(n=>({id:n.id,name:n.name}))}}async getListsForTrelloBoard(s,e={}){let{appKey:r,boardId:n}=s;return{data:(await this.config.request({url:`${e.baseUrl||A}/1/boards/${n}/lists?key=${r}&token=${e.token||this.config.token}`,headers:h(e.token||this.config.token)})).body}}async getAccountsForTrelloBoard(s,e={}){let{appKey:r,boardId:n}=s;return{data:(await this.config.request({url:`${e.baseUrl||A}/1/boards/${n}/members?key=${r}&token=${e.token||this.config.token}`,headers:h(e.token||this.config.token)})).body.map(a=>({id:a.id,name:a.fullName,username:a.username,email:null,avatarUrl:null}))}}async getIssuesForBoard(s,e={}){let r=["-is:archived","sort:edited"],{appKey:n,boardId:o,filterText:a,assigneeLogins:i,trelloBoardListsById:u}=s||{};i&&r.push("@me");let l=`${a?`${a}`:""}${r.join(" ")} board:${o}`;return{data:(await this.config.request({url:`${e.baseUrl||A}/1/search?key=${n}&query=${l}&cards_limit=${Ht}&token=${e.token||this.config.token}`,headers:h(e.token||this.config.token)})).body.cards.map(d=>Vt(d,u||{}))}}async updateIssue(s,e,r,n){return await this.config.request({method:"PUT",url:`${n.baseUrl||A}/1/cards/${e}?key=${s}&token=${n.token||this.config.token}&${r}`,headers:h(n.token||this.config.token)})}async setIssueStatus(s,e={}){let{appKey:r,cardId:n,status:o}=s,a=`idList=${o}`;if(!(await this.updateIssue(r,n,a,e)).body.id)throw new Error("Could not set issue status")}async setIssueAssignees(s,e={}){let{appKey:r,cardId:n,assigneeIds:o}=s,a=`idMembers=${encodeURIComponent(o.join(","))}`;if(!(await this.updateIssue(r,n,a,e)).body.id)throw new Error("Could not set issue status")}async setIssueLabels(s,e={}){let{appKey:r,cardId:n,labelIds:o}=s;if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||A}/1/cards/${n}?key=${r}&token=${e.token||this.config.token}&idLabels=${encodeURIComponent(o.join(","))}`,headers:h(e.token||this.config.token)})).body.id)throw new Error("Could not set issue status")}async setIssueArchived(s,e={}){let{appKey:r,cardId:n,archived:o}=s;if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||A}/1/cards/${n}?key=${r}&token=${e.token||this.config.token}&closed=${o}`,headers:h(e.token||this.config.token)})).body.id)throw new Error("Could not update issue archived status")}async getLabelsForBoard(s,e={}){let{appKey:r,boardId:n}=s;return{data:(await this.config.request({url:`${e.baseUrl||A}/1/boards/${n}/labels?key=${r}&token=${e.token||this.config.token}`,headers:h(e.token||this.config.token)})).body.map(a=>({color:a.color,description:null,id:a.id,name:a.name}))}}};var re={};x(re,{getIssueUniqueId:()=>Kt,getPullRequestUniqueId:()=>Xt});var Kt=(t,s,e,r="")=>{let n=[];return n.push(r),n.push(t),n.push(s),n.push(e),JSON.stringify(n)},Xt=(t,s,e,r,n="")=>{let o=[];return o.push(n),o.push(t),o.push(s),o.push(e),o.push(r),JSON.stringify(o)};var ne={};x(ne,{getIssueUniqueId:()=>Zt,getPullRequestUniqueId:()=>Yt});var Zt=(t,s)=>JSON.stringify(["",t,s]),Yt=(t,s)=>JSON.stringify(["",t,s]);var ae={};x(ae,{getIssueUniqueId:()=>es,getPullRequestUniqueId:()=>ts});var es=(t,s,e)=>JSON.stringify([e,t,s]),ts=(t,s,e)=>JSON.stringify([e,t,s]);var oe={};x(oe,{getIssueUniqueId:()=>ss,getPullRequestRank:()=>ns,getPullRequestUniqueId:()=>rs});var ss=(t,s="")=>{let e=[];return e.push(s),e.push(t),JSON.stringify(e)},rs=(t,s="")=>{let e=[];return e.push(s),e.push(t),JSON.stringify(e)},ns=(t,s,e)=>{var a,i,u;let r=0,n,o;return(a=t.reviews)==null||a.forEach(l=>{l.reviewer.id===s&&(n=l.state),l.state==="CHANGES_REQUESTED"?o="CHANGES_REQUESTED":l.state==="APPROVED"&&o!=="CHANGES_REQUESTED"&&(o="APPROVED")}),o||(o="REVIEW_REQUESTED"),((i=t.author)==null?void 0:i.id)===s?r+=1e3:(u=t.assignees)!=null&&u.find(l=>l.id===s)?r+=900:n==="REVIEW_REQUESTED"?r+=800:e&&(r+=700),o==="APPROVED"?t.mergeableState==="MERGEABLE"?r+=100:t.mergeableState==="CONFLICTS"?r+=90:r+=80:o=="CHANGES_REQUESTED"&&(r+=70),r};var ie={};x(ie,{getIssueUniqueId:()=>as,getPullRequestUniqueId:()=>os});var as=(t,s="")=>{let e=[];return e.push(s),e.push(t),JSON.stringify(e)},os=(t,s="")=>{let e=[];return e.push(s),e.push(t),JSON.stringify(e)};var ue={};x(ue,{getIssueUniqueId:()=>is,getJiraServerIssueUniqueId:()=>us});var is=(t,s,e)=>{let r=[];return r.push(""),r.push(t),r.push(s),r.push(e),JSON.stringify(r)},us=(t,s,e)=>{let r=[];return r.push(e),r.push(""),r.push(t),r.push(s),JSON.stringify(r)};var le={};x(le,{getIssueUniqueId:()=>ls});var ls=(t,s,e,r="")=>{let n=[];return n.push(r),n.push(t),n.push(s),n.push(e),JSON.stringify(n)};var ps=t=>{let s={request:t==null?void 0:t.request};return{azureDevOps:new Q({...s,...t==null?void 0:t.azureDevOps}),bitbucket:new B({...s,...t==null?void 0:t.bitbucket}),bitbucketServer:new F({...s,...t==null?void 0:t.bitbucketServer}),github:new M({...s,...t==null?void 0:t.github}),gitlab:new J({...s,...t==null?void 0:t.gitlab}),jira:new W({...s,...t==null?void 0:t.jira}),jiraServer:new H({...s,...t==null?void 0:t.jiraServer}),trello:new V({...s,...t==null?void 0:t.trello})}},ds=ps;var cs={azureDevOps:re,bitbucket:ne,bitbucketServer:ae,github:oe,gitlab:ie,jira:ue,trello:le};
|