@gitkraken/provider-apis 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,7 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.12.0
4
+
5
+ - added `getCurrentUserForResource` (Jira)
6
+ - added `getCurrentUser` (Trello)
7
+ - updated `node-fetch` version to `2.7.0`
8
+
3
9
  ## 0.11.1
4
- - added `id` field to `JiraProject` (Jira)`
10
+
11
+ - added `id` field to `JiraProject` (Jira)
5
12
  - fixed error thrown when fetching Jira issues without labels
6
13
 
7
14
  ## 0.11.0
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Xe=Object.create;var J=Object.defineProperty;var Ke=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var Ye=Object.getPrototypeOf,et=Object.prototype.hasOwnProperty;var G=(e,r)=>{for(var t in r)J(e,t,{get:r[t],enumerable:!0})},qe=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Ze(r))!et.call(e,n)&&n!==t&&J(e,n,{get:()=>r[n],enumerable:!(s=Ke(r,n))||s.enumerable});return e};var tt=(e,r,t)=>(t=e!=null?Xe(Ye(e)):{},qe(r||!e||!e.__esModule?J(t,"default",{value:e,enumerable:!0}):t,e)),rt=e=>qe(J({},"__esModule",{value:!0}),e);var Yt={};G(Yt,{AzureDevOps:()=>_,AzureDevopsUtils:()=>ee,Bitbucket:()=>Q,BitbucketServer:()=>N,BitbucketServerUtils:()=>re,BitbucketUtils:()=>te,GitHub:()=>j,GitHubUtils:()=>se,GitLab:()=>F,GitLabUtils:()=>ne,Jira:()=>M,JiraUtils:()=>oe,Trello:()=>W,TrelloUtils:()=>ae,Utils:()=>Zt,default:()=>Kt});module.exports=rt(Yt);var E=100;var Le=tt(require("node-fetch")),Ge=globalThis.fetch||Le.default;var xe=e=>e.name==="fetch";var st=async e=>{let r=e.headers.get("content-type")||"",t=null;if(r.startsWith("application/json"))t=await e.json();else if(r.startsWith("text/"))t=await e.text();else throw new Error(`Unsupported content-type: ${r}`);let s={body:t,headers:Object.fromEntries(e.headers.entries()),status:e.status,statusText:e.statusText};if(!e.ok){let n=new Error(e.statusText);throw Object.assign(n,{response:s}),n}return s},ie=e=>xe(e)?async({url:r,...t})=>{let s=await e(r,t);return st(s)}:e;var D=class{constructor(r){this.config={...r,request:ie((r==null?void 0:r.request)||Ge)}}updateConfig(r){this.config={...this.config,...r,request:r.request?ie(r.request):this.config.request}}},x=class extends D{};var h=(e,r)=>{let t={};return e&&(t.Authorization=`${r?"Basic":"Bearer"} ${e}`),t};var C=(e,r={})=>h(r.token||e.token,r.isPAT||e.isPAT),Te=e=>e.url.replace("/_apis/git/repositories/","/_git/").replace(`/${e.repository.project.id}/`,`/${encodeURIComponent(e.repository.project.name)}/`).replace(`/${e.repository.id}/`,`/${encodeURIComponent(e.repository.name)}/`).replace("/pullRequests/","/pullrequest/");var Oe="https://app.vssps.visualstudio.com/_apis",v="https://dev.azure.com",nt={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},ot={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},ue=e=>({id:e.id,name:e.displayName,username:e.uniqueName||e.displayName,email:null,avatarUrl:e.imageUrl}),V=e=>e.startsWith("refs/heads/")?e.replace("refs/heads/",""):e,Ae=e=>{var r;return{id:e.pullRequestId.toString(),title:e.title,number:e.codeReviewId,state:nt[e.status],isDraft:e.isDraft,commentCount:null,upvoteCount:null,author:ue(e.createdBy),createdDate:new Date(e.creationDate),updatedDate:new Date(e.closedDate||e.creationDate),closedDate:e.closedDate?new Date(e.closedDate):null,repository:{name:e.repository.name,owner:{login:void 0}},headCommit:{buildStatus:null},baseRef:{name:V(e.targetRefName)},headRef:{name:V(e.sourceRefName)},url:Te(e),assignees:e.reviewers.map(ue),reviews:e.reviewers.filter(t=>t.vote!==0).map(t=>({reviewer:ue(t),state:ot[t.vote]||"REVIEW_REQUESTED"})),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN",labels:((r=e.labels)==null?void 0:r.map(t=>({color:null,description:null,id:t.id,name:t.name})))??[]}},ke=(e,r)=>({id:r.id,name:r.name,namespace:e,project:r.project.name,webUrl:r.webUrl,httpsUrl:r.remoteUrl,sshUrl:r.sshUrl,defaultBranch:r.defaultBranch?{name:V(r.defaultBranch)}:null,permission:null}),at=(e,r)=>{var i,u;let t=e.fields,s=t["System.AssignedTo"],n=t["System.State"],a=t["System.WorkItemType"],o;return n&&a&&(o=(i=r[a])==null?void 0:i[n]),{id:e.id.toString(),number:e.id.toString(),title:t["System.Title"],commentCount:t["System.CommentCount"],author:{avatarUrl:t["System.CreatedBy"]._links.avatar.href,email:null,id:t["System.CreatedBy"].id,name:t["System.CreatedBy"].uniqueName,username:t["System.CreatedBy"].displayName},createdDate:new Date(t["System.CreatedDate"]),updatedDate:new Date(t["System.ChangedDate"]),url:e._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:(o==null?void 0:o.title)||n,color:null},type:t["System.WorkItemType"],repository:null,upvoteCount:0,labels:((u=e.fields["System.Tags"])==null?void 0:u.split(";").map(l=>({color:null,description:null,id:null,name:l.trim()})))??[]}},_=class extends D{async getCurrentUser(r={}){if(r.isPAT||this.config.isPAT)throw new Error("Azure DevOps does not support PATs for this function.");let t=await this.config.request({url:`${Oe}/profile/profiles/me`,headers:C(this.config,r)});return{data:{id:t.body.id,name:t.body.displayName,username:t.body.displayName,email:t.body.emailAddress,avatarUrl:null}}}async getCurrentUserForInstance(r,t={}){let n=(await this.config.request({url:`${v}/${encodeURIComponent(r.namespace)}/_apis/ConnectionData`,headers:C(this.config,t)})).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,t={}){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:`${v}/${encodeURIComponent(r.repo.namespace)}/${encodeURIComponent(r.repo.project)}/_apis/git/repositories/${encodeURIComponent(r.repo.name)}/commits/${r.oid}`,headers:C(this.config,t)})).body.author;return{data:{name:n.name,email:n.email,avatarUrl:n.imageUrl}}}async getOrgsForUser(r,t={}){return{data:(await this.config.request({url:`${Oe}/accounts?memberId=${r.userId}&api-version=6.0`,headers:C(this.config,t)})).body.value.map(n=>({id:n.accountId,name:n.accountName}))}}async getAzureProjects(r,t={}){let s=new URL(`${v}/${encodeURIComponent(r.namespace)}/_apis/projects`);s.searchParams.set("$top",E.toString()),r.cursor&&s.searchParams.set("$skip",r.cursor);let n=await this.config.request({url:s.toString(),headers:C(this.config,t)}),a=n.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!a,endCursor:a||null},data:n.body.value.map(o=>({id:o.id,name:o.name,namespace:r.namespace}))}}async getRepo(r,t={}){if(!r.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let s=await this.config.request({url:`${v}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/git/repositories/${encodeURIComponent(r.name)}`,headers:C(this.config,t)});return{data:ke(r.namespace,s.body)}}async getRepos(r,t={}){let s=[],n=[];return await Promise.all(r.map(async a=>{try{let o=await this.getRepo(a,t);s.push(o.data)}catch(o){n.push({input:a,error:o})}})),{data:s,errors:n}}async getReposForAzureProject(r,t={}){if(!r.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');return{data:(await this.config.request({url:`${v}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/git/repositories`,headers:C(this.config,t)})).body.value.map(n=>ke(r.namespace,n))}}async getRefs(r,t,s={}){if(!t.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=new URL(`${v}/${encodeURIComponent(t.repo.namespace)}/${encodeURIComponent(t.repo.project)}/_apis/git/repositories/${encodeURIComponent(t.repo.name)}/refs`);n.searchParams.set("filter",r),n.searchParams.set("$top",E.toString()),t.cursor&&n.searchParams.set("continuationToken",t.cursor);let a=await this.config.request({url:n.toString(),headers:C(this.config,s)}),o=a.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!o,endCursor:o||null},data:a.body.value.map(i=>({name:V(i.name),commit:{oid:i.objectId,authoredDate:null,committedDate:null}}))}}async getBranches(r,t={}){return this.getRefs("heads",r,t)}async getTags(r,t={}){return this.getRefs("tags",r,t)}async getPullRequestsForRepoBase(r,t={},s=100){let{page:n,repo:a,assigneeLogins:o,authorLogin:i}=r||{},u=n||1;if(!a.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let l="searchCriteria.status=1";return o&&o.length&&(l+=`&searchCriteria.reviewerId=${o[0]}`),i&&(l+=`&searchCriteria.creatorId=${i}`),await this.config.request({url:`${t.baseUrl||v}/${encodeURIComponent(a.namespace)}/${encodeURIComponent(a.project||"")}/_apis/git/repositories/${encodeURIComponent(a.name)}/pullRequests?${l}&%24top=${s}&%24skip=${(u-1)*s}`,headers:C(this.config,t)})}async getPullRequestsForRepo(r,t={}){let n=r.page||1,a=await this.getPullRequestsForRepoBase(r,t,100);return{pageInfo:{hasNextPage:a.body.value.length===100,nextPage:n+1},data:a.body.value.map(Ae)}}async getPullRequestsForRepos(r,t={}){if(!r.repos.every(a=>a.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 a=>{try{(await this.getPullRequestsForRepoBase({repo:a,...r},t)).body.value.forEach(i=>{n.push(Ae(i))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:n}}async updatePullRequest(r,t,s,n){let{namespace:a,project:o,name:i}=r;return await this.config.request({method:"PATCH",url:`${n.baseUrl||v}/${encodeURIComponent(a)}/${encodeURIComponent(o||"")}/_apis/git/repositories/${i}/pullrequests/${t}?api-version=6.0`,body:s,headers:{...C(this.config,n),"Content-Type":"application/json"}})}async closePullRequest(r,t={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:s,pullRequestId:n}=r,a={status:"abandoned"};if(!(await this.updatePullRequest(s,n,JSON.stringify(a),t)).body.status)throw new Error("Could not close pull request")}async mergePullRequest(r,t={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:s,pullRequestId:n,expectedSourceSha:a}=r,o={lastMergeSourceCommit:{commitId:a},status:"completed"};if(!(await this.updatePullRequest(s,n,JSON.stringify(o),t)).body.status)throw new Error("Could not merge pull request")}async setPullRequestAsDraft(r,t={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:s,pullRequestId:n,isDraft:a}=r,o={isDraft:a};if(!(await this.updatePullRequest(s,n,JSON.stringify(o),t)).body.status)throw new Error("Could not set the pull request as draft")}async getIssuesForAzureProject(r,t={}){let{page:s,assigneeLogins:n,authorLogin:a,mentionLogin:o,statusByWorkItemIdByStatusId:i}=r||{},u=s||1,l=200,p=["[Microsoft.VSTS.Common.ClosedDate] = ''","[System.TeamProject] = @project","[Microsoft.VSTS.Common.ResolvedDate] = ''"];a&&p.push(`[System.CreatedBy] = '${a.replace("'","''")}'`),n&&n[0]&&p.push(`[System.AssignedTo] = '${n[0].replace("'","''")}'`),o&&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:`${t.baseUrl||v}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/wit/wiql?api-version=6.0`,body:JSON.stringify({query:d}),method:"POST",headers:{...C(this.config,t),"Content-Type":"application/json"}}),g=c.body.workItems.slice((u-1)*l,l*u).map(y=>y.id);if(g.length==0)return{pageInfo:{hasNextPage:!1,nextPage:null},data:[]};let b=await this.config.request({url:`${t.baseUrl||v}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/wit/workitemsbatch?api-version=6.0`,body:JSON.stringify({ids:g,$expand:"Links"}),method:"POST",headers:{...C(this.config,t),"Content-Type":"application/json"}});return{pageInfo:{hasNextPage:c.body.workItems.length>l*u,nextPage:u+1},data:b.body.value.map(y=>at(y,i||{}))}}async setIssueStatus(r,t={}){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:a,status:o}=r,i=[{op:"add",path:"/fields/System.State",value:o}];if(!((l=(await this.config.request({method:"PATCH",url:`${t.baseUrl||v}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/workitems/${a}?api-version=6.0`,body:JSON.stringify(i),headers:{...C(this.config,t),"Content-Type":"application/json-patch+json"}})).body.fields)!=null&&l["System.State"]))throw new Error("Could not set issue status")}async getIssueTypesForAzureProject(r,t={}){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:`${t.baseUrl||v}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/workitemtypes?api-version=6.0`,headers:{...C(this.config,t)}})).body.value}}async getLabelsForProject(r,t={}){let{namespace:s,project:n}=r;return{data:(await this.config.request({url:`${t.baseUrl||v}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/tags?api-version=6.0`,headers:{...C(this.config,t)}})).body.value.map(o=>({color:null,description:null,id:o.id,name:o.name}))}}};var S=(e,r={})=>h(r.token||e.token,r.isPAT||e.isPAT);var $="https://api.bitbucket.org/2.0",it={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},Ne=e=>({id:e.uuid,name:e.display_name||e.nickname,username:e.nickname||e.display_name,email:null,avatarUrl:e.links.avatar.href}),_e=e=>{var r,t;return{id:e.uuid,namespace:e.workspace.slug,name:e.slug,webUrl:e.links.html.href,httpsUrl:((r=e.links.clone.find(s=>s.name==="https"))==null?void 0:r.href)??null,sshUrl:((t=e.links.clone.find(s=>s.name==="ssh"))==null?void 0:t.href)??null,defaultBranch:{name:e.mainbranch.name},permission:null}},Qe=e=>{let r=e.id;return{id:r.toString(),title:e.title,number:r,state:it[e.state],isDraft:!1,commentCount:e.comment_count,upvoteCount:null,author:Ne(e.author),createdDate:new Date(e.created_on),updatedDate:new Date(e.updated_on),closedDate:null,repository:{name:e.source.repository.name,owner:{login:void 0}},headCommit:{buildStatus:null},baseRef:{name:e.destination.branch.name},headRef:{name:e.source.branch.name},url:e.links.html.href,assignees:null,reviews:null,additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN"}},Q=class extends D{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 t=await this.config.request({url:`${$}/user`,headers:S(this.config,r)});return{data:Ne(t.body)}}async getUserForCommit(r,t={}){var o;let n=(await this.config.request({url:`${$}/repositories/${r.repo.namespace}/${r.repo.name}/commit/${r.oid}`,headers:S(this.config,t)})).body.author,a=n.raw.match(/([^<]+)<(.+)>/);return{data:{name:a?a[1].trim():null,email:a?a[2]:null,avatarUrl:((o=n.user)==null?void 0:o.links.avatar.href)||null}}}async getRepo(r,t={}){let s=await this.config.request({url:`${$}/repositories/${r.namespace}/${r.name}`,headers:S(this.config,t)});return{data:_e(s.body)}}async getRepos(r,t={}){let s=[],n=[];return await Promise.all(r.map(async a=>{try{let o=await this.getRepo(a,t);s.push(o.data)}catch(o){n.push({input:a,error:o})}})),{data:s,errors:n}}async getReposForCurrentUser(r={},t={}){let s=new URL(`${$}/repositories`);s.searchParams.set("role","member"),s.searchParams.set("pagelen",E.toString()),r.cursor&&s.searchParams.set("after",r.cursor);let n=await this.config.request({url:s.toString(),headers:S(this.config,t)}),a=!!n.body.next,o=null;return n.body.next&&(o=new URL(n.body.next).searchParams.get("after")),{pageInfo:{hasNextPage:a,endCursor:o},data:n.body.values.map(_e)}}async getBranches(r,t={}){var o;let s=new URL(`${$}/repositories/${r.repo.namespace}/${r.repo.name}/refs/branches`);s.searchParams.set("page",((o=r.page)==null?void 0:o.toString())||"1"),s.searchParams.set("pagelen",E.toString());let n=await this.config.request({url:s.toString(),headers:S(this.config,t)}),a=!!n.body.next;return{pageInfo:{hasNextPage:a,nextPage:a?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,t={}){let s=new URL(`${$}/repositories/${r.repo.namespace}/${r.repo.name}/refs/tags`);s.searchParams.set("pagelen",E.toString()),r.cursor&&s.searchParams.set("page",r.cursor);let n=await this.config.request({url:s.toString(),headers:S(this.config,t)}),a=!!n.body.next,o=null;return n.body.next&&(o=new URL(n.body.next).searchParams.get("page")),{pageInfo:{hasNextPage:a,endCursor:o},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 getPullRequestsForRepoBase(r,t={}){var n;let s=new URL(`${$}/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:S(this.config,t)})}async getPullRequestsForRepo(r,t={}){let s=[],n=await this.getPullRequestsForRepoBase(r,t);n.body.values.forEach(o=>{if(r.authorLogin&&o.author.uuid!==r.authorLogin)return null;s.push(Qe(o))});let a=!!n.body.next;return{pageInfo:{hasNextPage:a,nextPage:a?n.body.page+1:null},data:s}}async getPullRequestsForRepos(r,t={}){let s=[];return await Promise.all(r.repos.map(async n=>{try{(await this.getPullRequestsForRepoBase({repo:n,...r},t)).body.values.forEach(o=>{if(r.authorLogin&&o.author.uuid!==r.authorLogin)return null;s.push(Qe(o))})}catch(a){if(a.statusCode!==404&&a.statusCode!==401)throw a}})),{data:s}}async closePullRequest(r,t={}){let{repo:{namespace:s,name:n},pullRequestId:a}=r;if(!(await this.config.request({method:"POST",url:`${$}/repositories/${s}/${n}/pullrequests/${a}/decline`,headers:S(this.config,t)})).body.title)throw new Error("Could not close pull request")}async mergePullRequest(r,t={}){let{repo:{namespace:s,name:n},pullRequestId:a}=r;if(!(await this.config.request({method:"POST",url:`${$}/repositories/${s}/${n}/pullrequests/${a}/merge`,headers:S(this.config,t)})).body.title)throw new Error("Could not merge pull request")}};var N=class extends x{getBaseUrl(r){let t=r.baseUrl||this.config.baseUrl;if(!t)throw new Error('Bitbucket Server requires "baseUrl"');return t}getRequestHeaders(r){return h(r.token||this.config.token)}async getRepo(r,t={}){var n,a,o;let s=await this.config.request({url:`${this.getBaseUrl(t)}/projects/${r.namespace}/repos/${r.name}`,headers:this.getRequestHeaders(t)});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:((a=s.body.links.clone.find(i=>i.name==="https"))==null?void 0:a.href)??null,sshUrl:((o=s.body.links.clone.find(i=>i.name==="ssh"))==null?void 0:o.href)??null,defaultBranch:null,permission:null}}}async getRepos(r,t={}){let s=[],n=[];return await Promise.all(r.map(async a=>{try{let o=await this.getRepo(a,t);s.push(o.data)}catch(o){n.push({input:a,error:o})}})),{data:s,errors:n}}};var de="https://api.github.com",ut=`${de}/graphql`,K=`
1
+ "use strict";var Ke=Object.create;var V=Object.defineProperty;var Xe=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var Ye=Object.getPrototypeOf,et=Object.prototype.hasOwnProperty;var G=(e,r)=>{for(var t in r)V(e,t,{get:r[t],enumerable:!0})},qe=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Ze(r))!et.call(e,n)&&n!==t&&V(e,n,{get:()=>r[n],enumerable:!(s=Xe(r,n))||s.enumerable});return e};var tt=(e,r,t)=>(t=e!=null?Ke(Ye(e)):{},qe(r||!e||!e.__esModule?V(t,"default",{value:e,enumerable:!0}):t,e)),rt=e=>qe(V({},"__esModule",{value:!0}),e);var Yt={};G(Yt,{AzureDevOps:()=>N,AzureDevopsUtils:()=>ee,Bitbucket:()=>Q,BitbucketServer:()=>j,BitbucketServerUtils:()=>re,BitbucketUtils:()=>te,GitHub:()=>B,GitHubUtils:()=>se,GitLab:()=>M,GitLabUtils:()=>ne,Jira:()=>W,JiraUtils:()=>oe,Trello:()=>H,TrelloUtils:()=>ae,Utils:()=>Zt,default:()=>Xt});module.exports=rt(Yt);var v=100;var Le=tt(require("node-fetch")),Ge=globalThis.fetch||Le.default;var xe=e=>e.name==="fetch";var st=async e=>{let r=e.headers.get("content-type")||"",t=null;if(r.startsWith("application/json"))t=await e.json();else if(r.startsWith("text/"))t=await e.text();else throw new Error(`Unsupported content-type: ${r}`);let s={body:t,headers:Object.fromEntries(e.headers.entries()),status:e.status,statusText:e.statusText};if(!e.ok){let n=new Error(e.statusText);throw Object.assign(n,{response:s}),n}return s},ie=e=>xe(e)?async({url:r,...t})=>{let s=await e(r,t);return st(s)}:e;var D=class{constructor(r){this.config={...r,request:ie((r==null?void 0:r.request)||Ge)}}updateConfig(r){this.config={...this.config,...r,request:r.request?ie(r.request):this.config.request}}},x=class extends D{};var m=(e,r)=>{let t={};return e&&(t.Authorization=`${r?"Basic":"Bearer"} ${e}`),t};var C=(e,r={})=>m(r.token||e.token,r.isPAT||e.isPAT),Te=e=>e.url.replace("/_apis/git/repositories/","/_git/").replace(`/${e.repository.project.id}/`,`/${encodeURIComponent(e.repository.project.name)}/`).replace(`/${e.repository.id}/`,`/${encodeURIComponent(e.repository.name)}/`).replace("/pullRequests/","/pullrequest/");var Oe="https://app.vssps.visualstudio.com/_apis",E="https://dev.azure.com",nt={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},ot={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},ue=e=>({id:e.id,name:e.displayName,username:e.uniqueName||e.displayName,email:null,avatarUrl:e.imageUrl}),K=e=>e.startsWith("refs/heads/")?e.replace("refs/heads/",""):e,Ae=e=>{var r;return{id:e.pullRequestId.toString(),title:e.title,number:e.codeReviewId,state:nt[e.status],isDraft:e.isDraft,commentCount:null,upvoteCount:null,author:ue(e.createdBy),createdDate:new Date(e.creationDate),updatedDate:new Date(e.closedDate||e.creationDate),closedDate:e.closedDate?new Date(e.closedDate):null,repository:{name:e.repository.name,owner:{login:void 0}},headCommit:{buildStatus:null},baseRef:{name:K(e.targetRefName)},headRef:{name:K(e.sourceRefName)},url:Te(e),assignees:e.reviewers.map(ue),reviews:e.reviewers.filter(t=>t.vote!==0).map(t=>({reviewer:ue(t),state:ot[t.vote]||"REVIEW_REQUESTED"})),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN",labels:((r=e.labels)==null?void 0:r.map(t=>({color:null,description:null,id:t.id,name:t.name})))??[]}},ke=(e,r)=>({id:r.id,name:r.name,namespace:e,project:r.project.name,webUrl:r.webUrl,httpsUrl:r.remoteUrl,sshUrl:r.sshUrl,defaultBranch:r.defaultBranch?{name:K(r.defaultBranch)}:null,permission:null}),at=(e,r)=>{var i,u;let t=e.fields,s=t["System.AssignedTo"],n=t["System.State"],a=t["System.WorkItemType"],o;return n&&a&&(o=(i=r[a])==null?void 0:i[n]),{id:e.id.toString(),number:e.id.toString(),title:t["System.Title"],commentCount:t["System.CommentCount"],author:{avatarUrl:t["System.CreatedBy"]._links.avatar.href,email:null,id:t["System.CreatedBy"].id,name:t["System.CreatedBy"].uniqueName,username:t["System.CreatedBy"].displayName},createdDate:new Date(t["System.CreatedDate"]),updatedDate:new Date(t["System.ChangedDate"]),url:e._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:(o==null?void 0:o.title)||n,color:null},type:t["System.WorkItemType"],repository:null,upvoteCount:0,labels:((u=e.fields["System.Tags"])==null?void 0:u.split(";").map(l=>({color:null,description:null,id:null,name:l.trim()})))??[]}},N=class extends D{async getCurrentUser(r={}){if(r.isPAT||this.config.isPAT)throw new Error("Azure DevOps does not support PATs for this function.");let t=await this.config.request({url:`${Oe}/profile/profiles/me`,headers:C(this.config,r)});return{data:{id:t.body.id,name:t.body.displayName,username:t.body.displayName,email:t.body.emailAddress,avatarUrl:null}}}async getCurrentUserForInstance(r,t={}){let n=(await this.config.request({url:`${E}/${encodeURIComponent(r.namespace)}/_apis/ConnectionData`,headers:C(this.config,t)})).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,t={}){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:`${E}/${encodeURIComponent(r.repo.namespace)}/${encodeURIComponent(r.repo.project)}/_apis/git/repositories/${encodeURIComponent(r.repo.name)}/commits/${r.oid}`,headers:C(this.config,t)})).body.author;return{data:{name:n.name,email:n.email,avatarUrl:n.imageUrl}}}async getOrgsForUser(r,t={}){return{data:(await this.config.request({url:`${Oe}/accounts?memberId=${r.userId}&api-version=6.0`,headers:C(this.config,t)})).body.value.map(n=>({id:n.accountId,name:n.accountName}))}}async getAzureProjects(r,t={}){let s=new URL(`${E}/${encodeURIComponent(r.namespace)}/_apis/projects`);s.searchParams.set("$top",v.toString()),r.cursor&&s.searchParams.set("$skip",r.cursor);let n=await this.config.request({url:s.toString(),headers:C(this.config,t)}),a=n.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!a,endCursor:a||null},data:n.body.value.map(o=>({id:o.id,name:o.name,namespace:r.namespace}))}}async getRepo(r,t={}){if(!r.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let s=await this.config.request({url:`${E}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/git/repositories/${encodeURIComponent(r.name)}`,headers:C(this.config,t)});return{data:ke(r.namespace,s.body)}}async getRepos(r,t={}){let s=[],n=[];return await Promise.all(r.map(async a=>{try{let o=await this.getRepo(a,t);s.push(o.data)}catch(o){n.push({input:a,error:o})}})),{data:s,errors:n}}async getReposForAzureProject(r,t={}){if(!r.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');return{data:(await this.config.request({url:`${E}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/git/repositories`,headers:C(this.config,t)})).body.value.map(n=>ke(r.namespace,n))}}async getRefs(r,t,s={}){if(!t.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=new URL(`${E}/${encodeURIComponent(t.repo.namespace)}/${encodeURIComponent(t.repo.project)}/_apis/git/repositories/${encodeURIComponent(t.repo.name)}/refs`);n.searchParams.set("filter",r),n.searchParams.set("$top",v.toString()),t.cursor&&n.searchParams.set("continuationToken",t.cursor);let a=await this.config.request({url:n.toString(),headers:C(this.config,s)}),o=a.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!o,endCursor:o||null},data:a.body.value.map(i=>({name:K(i.name),commit:{oid:i.objectId,authoredDate:null,committedDate:null}}))}}async getBranches(r,t={}){return this.getRefs("heads",r,t)}async getTags(r,t={}){return this.getRefs("tags",r,t)}async getPullRequestsForRepoBase(r,t={},s=100){let{page:n,repo:a,assigneeLogins:o,authorLogin:i}=r||{},u=n||1;if(!a.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let l="searchCriteria.status=1";return o&&o.length&&(l+=`&searchCriteria.reviewerId=${o[0]}`),i&&(l+=`&searchCriteria.creatorId=${i}`),await this.config.request({url:`${t.baseUrl||E}/${encodeURIComponent(a.namespace)}/${encodeURIComponent(a.project||"")}/_apis/git/repositories/${encodeURIComponent(a.name)}/pullRequests?${l}&%24top=${s}&%24skip=${(u-1)*s}`,headers:C(this.config,t)})}async getPullRequestsForRepo(r,t={}){let n=r.page||1,a=await this.getPullRequestsForRepoBase(r,t,100);return{pageInfo:{hasNextPage:a.body.value.length===100,nextPage:n+1},data:a.body.value.map(Ae)}}async getPullRequestsForRepos(r,t={}){if(!r.repos.every(a=>a.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 a=>{try{(await this.getPullRequestsForRepoBase({repo:a,...r},t)).body.value.forEach(i=>{n.push(Ae(i))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:n}}async updatePullRequest(r,t,s,n){let{namespace:a,project:o,name:i}=r;return await this.config.request({method:"PATCH",url:`${n.baseUrl||E}/${encodeURIComponent(a)}/${encodeURIComponent(o||"")}/_apis/git/repositories/${i}/pullrequests/${t}?api-version=6.0`,body:s,headers:{...C(this.config,n),"Content-Type":"application/json"}})}async closePullRequest(r,t={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:s,pullRequestId:n}=r,a={status:"abandoned"};if(!(await this.updatePullRequest(s,n,JSON.stringify(a),t)).body.status)throw new Error("Could not close pull request")}async mergePullRequest(r,t={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:s,pullRequestId:n,expectedSourceSha:a}=r,o={lastMergeSourceCommit:{commitId:a},status:"completed"};if(!(await this.updatePullRequest(s,n,JSON.stringify(o),t)).body.status)throw new Error("Could not merge pull request")}async setPullRequestAsDraft(r,t={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:s,pullRequestId:n,isDraft:a}=r,o={isDraft:a};if(!(await this.updatePullRequest(s,n,JSON.stringify(o),t)).body.status)throw new Error("Could not set the pull request as draft")}async getIssuesForAzureProject(r,t={}){let{page:s,assigneeLogins:n,authorLogin:a,mentionLogin:o,statusByWorkItemIdByStatusId:i}=r||{},u=s||1,l=200,p=["[Microsoft.VSTS.Common.ClosedDate] = ''","[System.TeamProject] = @project","[Microsoft.VSTS.Common.ResolvedDate] = ''"];a&&p.push(`[System.CreatedBy] = '${a.replace("'","''")}'`),n&&n[0]&&p.push(`[System.AssignedTo] = '${n[0].replace("'","''")}'`),o&&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:`${t.baseUrl||E}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/wit/wiql?api-version=6.0`,body:JSON.stringify({query:d}),method:"POST",headers:{...C(this.config,t),"Content-Type":"application/json"}}),g=c.body.workItems.slice((u-1)*l,l*u).map(y=>y.id);if(g.length==0)return{pageInfo:{hasNextPage:!1,nextPage:null},data:[]};let b=await this.config.request({url:`${t.baseUrl||E}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/wit/workitemsbatch?api-version=6.0`,body:JSON.stringify({ids:g,$expand:"Links"}),method:"POST",headers:{...C(this.config,t),"Content-Type":"application/json"}});return{pageInfo:{hasNextPage:c.body.workItems.length>l*u,nextPage:u+1},data:b.body.value.map(y=>at(y,i||{}))}}async setIssueStatus(r,t={}){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:a,status:o}=r,i=[{op:"add",path:"/fields/System.State",value:o}];if(!((l=(await this.config.request({method:"PATCH",url:`${t.baseUrl||E}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/workitems/${a}?api-version=6.0`,body:JSON.stringify(i),headers:{...C(this.config,t),"Content-Type":"application/json-patch+json"}})).body.fields)!=null&&l["System.State"]))throw new Error("Could not set issue status")}async getIssueTypesForAzureProject(r,t={}){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:`${t.baseUrl||E}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/workitemtypes?api-version=6.0`,headers:{...C(this.config,t)}})).body.value}}async getLabelsForProject(r,t={}){let{namespace:s,project:n}=r;return{data:(await this.config.request({url:`${t.baseUrl||E}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/tags?api-version=6.0`,headers:{...C(this.config,t)}})).body.value.map(o=>({color:null,description:null,id:o.id,name:o.name}))}}};var U=(e,r={})=>m(r.token||e.token,r.isPAT||e.isPAT);var S="https://api.bitbucket.org/2.0",it={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},Qe=e=>({id:e.uuid,name:e.display_name||e.nickname,username:e.nickname||e.display_name,email:null,avatarUrl:e.links.avatar.href}),_e=e=>{var r,t;return{id:e.uuid,namespace:e.workspace.slug,name:e.slug,webUrl:e.links.html.href,httpsUrl:((r=e.links.clone.find(s=>s.name==="https"))==null?void 0:r.href)??null,sshUrl:((t=e.links.clone.find(s=>s.name==="ssh"))==null?void 0:t.href)??null,defaultBranch:{name:e.mainbranch.name},permission:null}},Ne=e=>{let r=e.id;return{id:r.toString(),title:e.title,number:r,state:it[e.state],isDraft:!1,commentCount:e.comment_count,upvoteCount:null,author:Qe(e.author),createdDate:new Date(e.created_on),updatedDate:new Date(e.updated_on),closedDate:null,repository:{name:e.source.repository.name,owner:{login:void 0}},headCommit:{buildStatus:null},baseRef:{name:e.destination.branch.name},headRef:{name:e.source.branch.name},url:e.links.html.href,assignees:null,reviews:null,additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN"}},Q=class extends D{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 t=await this.config.request({url:`${S}/user`,headers:U(this.config,r)});return{data:Qe(t.body)}}async getUserForCommit(r,t={}){var o;let n=(await this.config.request({url:`${S}/repositories/${r.repo.namespace}/${r.repo.name}/commit/${r.oid}`,headers:U(this.config,t)})).body.author,a=n.raw.match(/([^<]+)<(.+)>/);return{data:{name:a?a[1].trim():null,email:a?a[2]:null,avatarUrl:((o=n.user)==null?void 0:o.links.avatar.href)||null}}}async getRepo(r,t={}){let s=await this.config.request({url:`${S}/repositories/${r.namespace}/${r.name}`,headers:U(this.config,t)});return{data:_e(s.body)}}async getRepos(r,t={}){let s=[],n=[];return await Promise.all(r.map(async a=>{try{let o=await this.getRepo(a,t);s.push(o.data)}catch(o){n.push({input:a,error:o})}})),{data:s,errors:n}}async getReposForCurrentUser(r={},t={}){let s=new URL(`${S}/repositories`);s.searchParams.set("role","member"),s.searchParams.set("pagelen",v.toString()),r.cursor&&s.searchParams.set("after",r.cursor);let n=await this.config.request({url:s.toString(),headers:U(this.config,t)}),a=!!n.body.next,o=null;return n.body.next&&(o=new URL(n.body.next).searchParams.get("after")),{pageInfo:{hasNextPage:a,endCursor:o},data:n.body.values.map(_e)}}async getBranches(r,t={}){var o;let s=new URL(`${S}/repositories/${r.repo.namespace}/${r.repo.name}/refs/branches`);s.searchParams.set("page",((o=r.page)==null?void 0:o.toString())||"1"),s.searchParams.set("pagelen",v.toString());let n=await this.config.request({url:s.toString(),headers:U(this.config,t)}),a=!!n.body.next;return{pageInfo:{hasNextPage:a,nextPage:a?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,t={}){let s=new URL(`${S}/repositories/${r.repo.namespace}/${r.repo.name}/refs/tags`);s.searchParams.set("pagelen",v.toString()),r.cursor&&s.searchParams.set("page",r.cursor);let n=await this.config.request({url:s.toString(),headers:U(this.config,t)}),a=!!n.body.next,o=null;return n.body.next&&(o=new URL(n.body.next).searchParams.get("page")),{pageInfo:{hasNextPage:a,endCursor:o},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 getPullRequestsForRepoBase(r,t={}){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:U(this.config,t)})}async getPullRequestsForRepo(r,t={}){let s=[],n=await this.getPullRequestsForRepoBase(r,t);n.body.values.forEach(o=>{if(r.authorLogin&&o.author.uuid!==r.authorLogin)return null;s.push(Ne(o))});let a=!!n.body.next;return{pageInfo:{hasNextPage:a,nextPage:a?n.body.page+1:null},data:s}}async getPullRequestsForRepos(r,t={}){let s=[];return await Promise.all(r.repos.map(async n=>{try{(await this.getPullRequestsForRepoBase({repo:n,...r},t)).body.values.forEach(o=>{if(r.authorLogin&&o.author.uuid!==r.authorLogin)return null;s.push(Ne(o))})}catch(a){if(a.statusCode!==404&&a.statusCode!==401)throw a}})),{data:s}}async closePullRequest(r,t={}){let{repo:{namespace:s,name:n},pullRequestId:a}=r;if(!(await this.config.request({method:"POST",url:`${S}/repositories/${s}/${n}/pullrequests/${a}/decline`,headers:U(this.config,t)})).body.title)throw new Error("Could not close pull request")}async mergePullRequest(r,t={}){let{repo:{namespace:s,name:n},pullRequestId:a}=r;if(!(await this.config.request({method:"POST",url:`${S}/repositories/${s}/${n}/pullrequests/${a}/merge`,headers:U(this.config,t)})).body.title)throw new Error("Could not merge pull request")}};var j=class extends x{getBaseUrl(r){let t=r.baseUrl||this.config.baseUrl;if(!t)throw new Error('Bitbucket Server requires "baseUrl"');return t}getRequestHeaders(r){return m(r.token||this.config.token)}async getRepo(r,t={}){var n,a,o;let s=await this.config.request({url:`${this.getBaseUrl(t)}/projects/${r.namespace}/repos/${r.name}`,headers:this.getRequestHeaders(t)});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:((a=s.body.links.clone.find(i=>i.name==="https"))==null?void 0:a.href)??null,sshUrl:((o=s.body.links.clone.find(i=>i.name==="ssh"))==null?void 0:o.href)??null,defaultBranch:null,permission:null}}}async getRepos(r,t={}){let s=[],n=[];return await Promise.all(r.map(async a=>{try{let o=await this.getRepo(a,t);s.push(o.data)}catch(o){n.push({input:a,error:o})}})),{data:s,errors:n}}};var de="https://api.github.com",ut=`${de}/graphql`,Z=`
2
2
  description
3
3
  dueOn
4
4
  id
@@ -6,12 +6,12 @@ number
6
6
  state
7
7
  title
8
8
  url
9
- `,je=/\/api\/v\d+$/,Z=`
9
+ `,je=/\/api\/v\d+$/,Y=`
10
10
  color
11
11
  description
12
12
  id
13
13
  name
14
- `,lt=e=>{if(e.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.")},pt=(e,r)=>{let t=r.baseUrl||e.baseUrl;return t?(t=t.replace(/\/$/,""),lt(t),je.test(t)&&(t=t.replace(je,"")),`${t}/api/graphql`):ut},m=(e,r,t)=>{let s=h(t.token||e.token);return s["X-Github-Next-Global-ID"]="1",s["Content-Type"]="application/json",e.request({url:pt(e,t),method:"POST",headers:s,body:JSON.stringify(r)})},dt={user:!0,"user:email":!0,"read:user":!0},A=e=>e.some(r=>dt[r]),U=(e=!1,r=!1)=>`
14
+ `,lt=e=>{if(e.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.")},pt=(e,r)=>{let t=r.baseUrl||e.baseUrl;return t?(t=t.replace(/\/$/,""),lt(t),je.test(t)&&(t=t.replace(je,"")),`${t}/api/graphql`):ut},h=(e,r,t)=>{let s=m(t.token||e.token);return s["X-Github-Next-Global-ID"]="1",s["Content-Type"]="application/json",e.request({url:pt(e,t),method:"POST",headers:s,body:JSON.stringify(r)})},dt={user:!0,"user:email":!0,"read:user":!0},A=e=>e.some(r=>dt[r]),$=(e=!1,r=!1)=>`
15
15
  __typename
16
16
  id
17
17
  databaseId
@@ -33,7 +33,7 @@ title
33
33
  state
34
34
  author {
35
35
  ... on User {
36
- ${U(!1,r)}
36
+ ${$(!1,r)}
37
37
  }
38
38
  ... on Bot {
39
39
  ${Be(!1)}
@@ -96,7 +96,7 @@ updatedAt
96
96
  closedAt
97
97
  assignees(first: 100) {
98
98
  nodes {
99
- ${U(!1,r)}
99
+ ${$(!1,r)}
100
100
  }
101
101
  }
102
102
  reviewRequests(first: 100) {
@@ -104,7 +104,7 @@ reviewRequests(first: 100) {
104
104
  asCodeOwner
105
105
  requestedReviewer {
106
106
  ... on User {
107
- ${U(!1,r)}
107
+ ${$(!1,r)}
108
108
  }
109
109
  }
110
110
  }
@@ -113,7 +113,7 @@ latestReviews(first: 100) {
113
113
  nodes {
114
114
  author {
115
115
  ... on User {
116
- ${U(!1,r)}
116
+ ${$(!1,r)}
117
117
  }
118
118
  }
119
119
  state
@@ -124,11 +124,11 @@ deletions
124
124
  changedFiles
125
125
  mergeable
126
126
  milestone {
127
- ${K}
127
+ ${Z}
128
128
  }
129
129
  labels(first: 100) {
130
130
  nodes {
131
- ${Z}
131
+ ${Y}
132
132
  }
133
133
  }
134
134
  `,gt=(e=!1)=>`
@@ -137,7 +137,7 @@ databaseId
137
137
  title
138
138
  author {
139
139
  ... on User {
140
- ${U(!1,e)}
140
+ ${$(!1,e)}
141
141
  }
142
142
  ... on Bot {
143
143
  ${Be(!1)}
@@ -161,16 +161,16 @@ comments {
161
161
  }
162
162
  assignees(first: 100) {
163
163
  nodes {
164
- ${U(!1,e)}
164
+ ${$(!1,e)}
165
165
  }
166
166
  }
167
167
  state
168
168
  milestone {
169
- ${K}
169
+ ${Z}
170
170
  }
171
171
  labels(first: 100) {
172
172
  nodes {
173
- ${Z}
173
+ ${Y}
174
174
  }
175
175
  }
176
176
  `,mt={"-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"},ht=new RegExp('(([^\\s]+:)?\\"(?:[^\\"\\\\]|\\\\.)*\\"?)|([^\\"\\s]+)',"g"),ce=e=>{let r=[];return(e.match(ht)??[]).forEach(s=>{if(s.includes(":")&&s!="is:closed"){let n=s.split(":")[0];mt[n]&&r.push(s)}}),r},ge=(e,r,t,s,n=!1)=>{let a=e==="issue";return{query:`
@@ -199,13 +199,13 @@ defaultBranchRef {
199
199
  name
200
200
  }
201
201
  viewerPermission
202
- `,fe={__typename:"User",id:"U_kgDNJ5k",databaseId:10137,name:"Deleted user",login:"ghost",email:"",avatarUrl:"https://avatars.githubusercontent.com/u/10137?v=4"},Rt={APPROVED:"APPROVED",CHANGES_REQUESTED:"CHANGES_REQUESTED",COMMENTED:"COMMENTED",REVIEW_REQUESTED:"REVIEW_REQUESTED"},It={MERGEABLE:"MERGEABLE",CONFLICTING:"CONFLICTS",UNKNOWN:"UNKNOWN"},bt={OPEN:"OPEN",CLOSED:"CLOSED"},Re=e=>({color:e.color,description:e.description,graphQLId:e.id,id:null,name:e.name}),he=e=>({id:e.databaseId.toString(),graphQLId:e.id,namespace:e.owner.login,name:e.name,webUrl:e.url,httpsUrl:e.url.endsWith(".git")?e.url:`${e.url}.git`,sshUrl:e.sshUrl,defaultBranch:e.defaultBranchRef,permission:e.viewerPermission}),yt={OPEN:"OPEN",CLOSED:"CLOSED",MERGED:"MERGED"},q=e=>({id:e.databaseId.toString(),graphQLId:e.id,name:e.name??e.login,username:e.login,email:e.email??null,avatarUrl:e.avatarUrl}),Pt=e=>{var l,p,d,c,g,b,y,P,I,f;let r=null;e.author?r=(e.author.__typename==="Bot",e.author):r=fe;let t=(p=(l=e.commits.nodes)==null?void 0:l[0])==null?void 0:p.commit,s=((d=e.headRef)==null?void 0:d.target)||t,n=s==null?void 0:s.oid,a=t==null?void 0:t.oid,o=n===a?(g=(c=t==null?void 0:t.status)==null?void 0:c.contexts)==null?void 0:g[0]:null,i=(((b=e.reviewRequests)==null?void 0:b.nodes)||[]).filter(w=>!w.asCodeOwner),u=(y=e.headRepository)==null?void 0:y.url;return u&&!u.endsWith(".git")&&(u=`${u}.git`),{id:e.databaseId.toString(),graphQLId:e.id,title:e.title,number:e.number,state:yt[e.state],commentCount:e.comments.totalCount,upvoteCount:e.reactions.totalCount,author:r?q(r):null,createdDate:new Date(e.createdAt),isDraft:e.isDraft,repository:{name:e.repository.name,owner:{login:e.repository.owner.login}},headRepository:e.headRepository?{name:e.headRepository.name,owner:{login:e.headRepository.owner.login},remoteInfo:{cloneUrlHTTPS:u,cloneUrlSSH:e.headRepository.sshUrl}}:null,headCommit:{buildStatus:o||null},headRef:e.headRef?{name:e.headRef.name}:null,baseRef:e.baseRef?{name:e.baseRef.name}:null,url:e.url,updatedDate:new Date(e.updatedAt),closedDate:e.closedAt?new Date(e.closedAt):null,assignees:e.assignees.nodes?e.assignees.nodes.map(q):null,reviews:i.map(w=>({reviewer:q(w.requestedReviewer),state:"REVIEW_REQUESTED"})).concat((((P=e.latestReviews)==null?void 0:P.nodes)||[]).map(w=>{let L=w.author||fe;return{reviewer:q(L),state:Rt[w.state]}})),additions:e.additions,deletions:e.deletions,fileCount:e.changedFiles,commitCount:e.commits.totalCount,mergeableState:It[e.mergeable],milestone:e.milestone?Ie(e.milestone):null,labels:((f=(I=e.labels)==null?void 0:I.nodes)==null?void 0:f.map(Re))??[]}},wt=e=>{var t,s;let r=null;return e.author?r=(e.author.__typename==="Bot",e.author):r=fe,{id:e.databaseId.toString(),graphQLId:e.id,number:e.number,title:e.title,author:q(r),commentCount:e.comments.totalCount,createdDate:new Date(e.createdAt),description:null,state:{name:bt[e.state],color:null},type:null,repository:{name:e.repository.name,owner:{login:e.repository.owner.login}},url:e.url,updatedDate:new Date(e.updatedAt),assignees:e.assignees.nodes?e.assignees.nodes.map(q):[],upvoteCount:e.reactions.totalCount,milestone:e.milestone?Ie(e.milestone):null,labels:((s=(t=e.labels)==null?void 0:t.nodes)==null?void 0:s.map(Re))??[]}},Ie=e=>({id:e.number.toString(),graphQLId:e.id.toString(),number:e.number,title:e.title,description:e.description,isOpen:e.state=="OPEN",url:e.url,startDate:null,dueDate:e.dueOn?new Date(e.dueOn):null}),j=class extends x{constructor(){super(...arguments);this._scopesCache={}}async getScopes(t){let s=t.token||this.config.token;if(!s)return[];let n=this._scopesCache[s];if(!n){let o=(await m(this.config,{query:"query { rateLimit(dryRun: true) { __typename } }"},t)).headers["x-oauth-scopes"];n=o?o.split(", "):[],this._scopesCache[s]=n}return n}getEnterpriseAvatarUrlIfNeeded(t,s,n){let a=n.baseUrl||this.config.baseUrl;return!a||a.startsWith(de)?t:s?`https://avatars.githubusercontent.com/u/e?email=${encodeURIComponent(s)}`:""}async getCurrentUser(t={}){var o;let s=await this.getScopes(t),a=(o=(await m(this.config,{query:`
202
+ `,fe={__typename:"User",id:"U_kgDNJ5k",databaseId:10137,name:"Deleted user",login:"ghost",email:"",avatarUrl:"https://avatars.githubusercontent.com/u/10137?v=4"},Rt={APPROVED:"APPROVED",CHANGES_REQUESTED:"CHANGES_REQUESTED",COMMENTED:"COMMENTED",REVIEW_REQUESTED:"REVIEW_REQUESTED"},It={MERGEABLE:"MERGEABLE",CONFLICTING:"CONFLICTS",UNKNOWN:"UNKNOWN"},bt={OPEN:"OPEN",CLOSED:"CLOSED"},Re=e=>({color:e.color,description:e.description,graphQLId:e.id,id:null,name:e.name}),he=e=>({id:e.databaseId.toString(),graphQLId:e.id,namespace:e.owner.login,name:e.name,webUrl:e.url,httpsUrl:e.url.endsWith(".git")?e.url:`${e.url}.git`,sshUrl:e.sshUrl,defaultBranch:e.defaultBranchRef,permission:e.viewerPermission}),yt={OPEN:"OPEN",CLOSED:"CLOSED",MERGED:"MERGED"},q=e=>({id:e.databaseId.toString(),graphQLId:e.id,name:e.name??e.login,username:e.login,email:e.email??null,avatarUrl:e.avatarUrl}),Pt=e=>{var l,p,d,c,g,b,y,P,I,f;let r=null;e.author?r=(e.author.__typename==="Bot",e.author):r=fe;let t=(p=(l=e.commits.nodes)==null?void 0:l[0])==null?void 0:p.commit,s=((d=e.headRef)==null?void 0:d.target)||t,n=s==null?void 0:s.oid,a=t==null?void 0:t.oid,o=n===a?(g=(c=t==null?void 0:t.status)==null?void 0:c.contexts)==null?void 0:g[0]:null,i=(((b=e.reviewRequests)==null?void 0:b.nodes)||[]).filter(w=>!w.asCodeOwner),u=(y=e.headRepository)==null?void 0:y.url;return u&&!u.endsWith(".git")&&(u=`${u}.git`),{id:e.databaseId.toString(),graphQLId:e.id,title:e.title,number:e.number,state:yt[e.state],commentCount:e.comments.totalCount,upvoteCount:e.reactions.totalCount,author:r?q(r):null,createdDate:new Date(e.createdAt),isDraft:e.isDraft,repository:{name:e.repository.name,owner:{login:e.repository.owner.login}},headRepository:e.headRepository?{name:e.headRepository.name,owner:{login:e.headRepository.owner.login},remoteInfo:{cloneUrlHTTPS:u,cloneUrlSSH:e.headRepository.sshUrl}}:null,headCommit:{buildStatus:o||null},headRef:e.headRef?{name:e.headRef.name}:null,baseRef:e.baseRef?{name:e.baseRef.name}:null,url:e.url,updatedDate:new Date(e.updatedAt),closedDate:e.closedAt?new Date(e.closedAt):null,assignees:e.assignees.nodes?e.assignees.nodes.map(q):null,reviews:i.map(w=>({reviewer:q(w.requestedReviewer),state:"REVIEW_REQUESTED"})).concat((((P=e.latestReviews)==null?void 0:P.nodes)||[]).map(w=>{let L=w.author||fe;return{reviewer:q(L),state:Rt[w.state]}})),additions:e.additions,deletions:e.deletions,fileCount:e.changedFiles,commitCount:e.commits.totalCount,mergeableState:It[e.mergeable],milestone:e.milestone?Ie(e.milestone):null,labels:((f=(I=e.labels)==null?void 0:I.nodes)==null?void 0:f.map(Re))??[]}},wt=e=>{var t,s;let r=null;return e.author?r=(e.author.__typename==="Bot",e.author):r=fe,{id:e.databaseId.toString(),graphQLId:e.id,number:e.number,title:e.title,author:q(r),commentCount:e.comments.totalCount,createdDate:new Date(e.createdAt),description:null,state:{name:bt[e.state],color:null},type:null,repository:{name:e.repository.name,owner:{login:e.repository.owner.login}},url:e.url,updatedDate:new Date(e.updatedAt),assignees:e.assignees.nodes?e.assignees.nodes.map(q):[],upvoteCount:e.reactions.totalCount,milestone:e.milestone?Ie(e.milestone):null,labels:((s=(t=e.labels)==null?void 0:t.nodes)==null?void 0:s.map(Re))??[]}},Ie=e=>({id:e.number.toString(),graphQLId:e.id.toString(),number:e.number,title:e.title,description:e.description,isOpen:e.state=="OPEN",url:e.url,startDate:null,dueDate:e.dueOn?new Date(e.dueOn):null}),B=class extends x{constructor(){super(...arguments);this._scopesCache={}}async getScopes(t){let s=t.token||this.config.token;if(!s)return[];let n=this._scopesCache[s];if(!n){let o=(await h(this.config,{query:"query { rateLimit(dryRun: true) { __typename } }"},t)).headers["x-oauth-scopes"];n=o?o.split(", "):[],this._scopesCache[s]=n}return n}getEnterpriseAvatarUrlIfNeeded(t,s,n){let a=n.baseUrl||this.config.baseUrl;return!a||a.startsWith(de)?t:s?`https://avatars.githubusercontent.com/u/e?email=${encodeURIComponent(s)}`:""}async getCurrentUser(t={}){var o;let s=await this.getScopes(t),a=(o=(await h(this.config,{query:`
203
203
  query getCurrentUser {
204
204
  viewer {
205
- ${U(!1,A(s))}
205
+ ${$(!1,A(s))}
206
206
  }
207
207
  }
208
- `},t)).body.data)==null?void 0:o.viewer;if(!a)throw new Error("Current user not found.");return{data:q(a)}}async getUserForCommit(t,s={}){var i,u;let a=(i=(await m(this.config,{query:`
208
+ `},t)).body.data)==null?void 0:o.viewer;if(!a)throw new Error("Current user not found.");return{data:q(a)}}async getUserForCommit(t,s={}){var i,u;let a=(i=(await h(this.config,{query:`
209
209
  query getUserForCommit(
210
210
  $owner: String!
211
211
  $name: String!
@@ -224,23 +224,23 @@ query getUserForCommit(
224
224
  }
225
225
  }
226
226
  }
227
- `,variables:{owner:t.repo.namespace,name:t.repo.name,oid:t.oid,avatarSize:t.avatarSize}},s)).body.data)==null?void 0:i.repository;if(!a)throw new Error("Repository not found.");let o=(u=a.object)==null?void 0:u.author;if(!o)throw new Error("Commit not found.");return{data:{name:o.name,email:o.email,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(o.avatarUrl,o.email,s)}}}async getAccountForEmail(t,s={}){var i,u,l;let n=await this.getScopes(s),o=(l=(u=(i=(await m(this.config,{query:`
227
+ `,variables:{owner:t.repo.namespace,name:t.repo.name,oid:t.oid,avatarSize:t.avatarSize}},s)).body.data)==null?void 0:i.repository;if(!a)throw new Error("Repository not found.");let o=(u=a.object)==null?void 0:u.author;if(!o)throw new Error("Commit not found.");return{data:{name:o.name,email:o.email,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(o.avatarUrl,o.email,s)}}}async getAccountForEmail(t,s={}){var i,u,l;let n=await this.getScopes(s),o=(l=(u=(i=(await h(this.config,{query:`
228
228
  query getAccountForEmail($query: String! $avatarSize: Int) {
229
229
  search(query: $query, type: USER, first: 1) {
230
230
  nodes {
231
231
  ... on User {
232
- ${U(!0,A(n))}
232
+ ${$(!0,A(n))}
233
233
  }
234
234
  }
235
235
  }
236
236
  }
237
- `,variables:{query:`in:email ${t.email}`,avatarSize:t.avatarSize}},s)).body.data)==null?void 0:i.search)==null?void 0:u.nodes)==null?void 0:l[0];if(!o)throw new Error("User not found.");return{data:q({...o,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(o.avatarUrl,o.email,s)})}}async getAccountForUsername(t,s={}){var i;let n=await this.getScopes(s),o=(i=(await m(this.config,{query:`
237
+ `,variables:{query:`in:email ${t.email}`,avatarSize:t.avatarSize}},s)).body.data)==null?void 0:i.search)==null?void 0:u.nodes)==null?void 0:l[0];if(!o)throw new Error("User not found.");return{data:q({...o,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(o.avatarUrl,o.email,s)})}}async getAccountForUsername(t,s={}){var i;let n=await this.getScopes(s),o=(i=(await h(this.config,{query:`
238
238
  query getUserForUsername($login: String! $avatarSize: Int) {
239
239
  user(login: $login) {
240
- ${U(!0,A(n))}
240
+ ${$(!0,A(n))}
241
241
  }
242
242
  }
243
- `,variables:{login:t.username,avatarSize:t.avatarSize}},s)).body.data)==null?void 0:i.user;if(!o)throw new Error("User not found.");return{data:q({...o,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(o.avatarUrl,o.email,s)})}}async getOrgsForCurrentUser(t={},s={}){var o,i;let n=await m(this.config,{query:`
243
+ `,variables:{login:t.username,avatarSize:t.avatarSize}},s)).body.data)==null?void 0:i.user;if(!o)throw new Error("User not found.");return{data:q({...o,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(o.avatarUrl,o.email,s)})}}async getOrgsForCurrentUser(t={},s={}){var o,i;let n=await h(this.config,{query:`
244
244
  query getOrgsForCurrentUser($cursor: String, $first: Int!) {
245
245
  viewer {
246
246
  organizations(first: $first after: $cursor) {
@@ -259,7 +259,7 @@ query getOrgsForCurrentUser($cursor: String, $first: Int!) {
259
259
  }
260
260
  }
261
261
  }
262
- `,variables:{cursor:t.cursor,first:E}},s);if(!((o=n.body.data)!=null&&o.viewer.organizations))throw new Error(((i=n.body.errors)==null?void 0:i[0].message)||n.statusText||"Unknown error");let a=n.body.data.viewer.organizations.nodes||[];return{pageInfo:n.body.data.viewer.organizations.pageInfo,data:a.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(t,s={}){var a;let n=await m(this.config,{query:`
262
+ `,variables:{cursor:t.cursor,first:v}},s);if(!((o=n.body.data)!=null&&o.viewer.organizations))throw new Error(((i=n.body.errors)==null?void 0:i[0].message)||n.statusText||"Unknown error");let a=n.body.data.viewer.organizations.nodes||[];return{pageInfo:n.body.data.viewer.organizations.pageInfo,data:a.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(t,s={}){var a;let n=await h(this.config,{query:`
263
263
  query getRepo($owner: String!, $name: String!) {
264
264
  repository(owner: $owner, name: $name) {
265
265
  ${me}
@@ -270,11 +270,11 @@ query getRepo($owner: String!, $name: String!) {
270
270
  ${me}
271
271
  }
272
272
  `).join(`
273
- `),a=await m(this.config,{query:`
273
+ `),a=await h(this.config,{query:`
274
274
  query batchGetRepos {
275
275
  ${n}
276
276
  }
277
- `},s);if(!a.body.data)throw new Error(a.statusText||"Unknown error");let o=[],i=[];return t.forEach((u,l)=>{let p=a.body.data[`getRepo_${l}`];p?o.push(he(p)):i.push({input:u})}),{data:o,errors:i}}async getReposForUsernames(t,s={}){var o;if(!t.usernames.length)return{pageInfo:{endCursor:null,hasNextPage:!1},data:[]};let n=await m(this.config,{query:`
277
+ `},s);if(!a.body.data)throw new Error(a.statusText||"Unknown error");let o=[],i=[];return t.forEach((u,l)=>{let p=a.body.data[`getRepo_${l}`];p?o.push(he(p)):i.push({input:u})}),{data:o,errors:i}}async getReposForUsernames(t,s={}){var o;if(!t.usernames.length)return{pageInfo:{endCursor:null,hasNextPage:!1},data:[]};let n=await h(this.config,{query:`
278
278
  query getReposForUsernames($query: String!, $cursor: String, $first: Int!) {
279
279
  search(query: $query, type: REPOSITORY, first: $first, after: $cursor) {
280
280
  pageInfo {
@@ -288,7 +288,7 @@ query getReposForUsernames($query: String!, $cursor: String, $first: Int!) {
288
288
  }
289
289
  }
290
290
  }
291
- `,variables:{query:`fork:true ${t.usernames.map(i=>`user:${i}`).join(" ")}`,cursor:t.cursor,first:E}},s);if(!n.body.data)throw new Error(((o=n.body.errors)==null?void 0:o[0].message)||n.statusText||"Unknown error");let a=n.body.data.search.nodes||[];return{pageInfo:n.body.data.search.pageInfo,data:a.map(he)}}async getReposForOwners(t,s={}){return this.getReposForUsernames({usernames:t.owners.filter(n=>n.username).map(n=>n.username),cursor:t.cursor},s)}async getRefs(t,s,n={}){var u;let o=(u=(await m(this.config,{query:`
291
+ `,variables:{query:`fork:true ${t.usernames.map(i=>`user:${i}`).join(" ")}`,cursor:t.cursor,first:v}},s);if(!n.body.data)throw new Error(((o=n.body.errors)==null?void 0:o[0].message)||n.statusText||"Unknown error");let a=n.body.data.search.nodes||[];return{pageInfo:n.body.data.search.pageInfo,data:a.map(he)}}async getReposForOwners(t,s={}){return this.getReposForUsernames({usernames:t.owners.filter(n=>n.username).map(n=>n.username),cursor:t.cursor},s)}async getRefs(t,s,n={}){var u;let o=(u=(await h(this.config,{query:`
292
292
  query getRefs($owner: String!, $name: String!, $refPrefix: String!, $cursor: String, $first: Int!) {
293
293
  repository(owner: $owner, name: $name) {
294
294
  refs(refPrefix: $refPrefix first: $first after: $cursor) {
@@ -309,7 +309,7 @@ query getRefs($owner: String!, $name: String!, $refPrefix: String!, $cursor: Str
309
309
  }
310
310
  }
311
311
  }
312
- `,variables:{owner:s.repo.namespace,name:s.repo.name,refPrefix:t,cursor:s.cursor,first:E}},n)).body.data)==null?void 0:u.repository;if(!o)throw new Error("Repository not found.");let i=o.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(t,s={}){return this.getRefs("refs/heads/",t,s)}async getTags(t,s={}){return this.getRefs("refs/tags/",t,s)}async getBlame(t,s={}){var i;let a=(i=(await m(this.config,{query:`
312
+ `,variables:{owner:s.repo.namespace,name:s.repo.name,refPrefix:t,cursor:s.cursor,first:v}},n)).body.data)==null?void 0:u.repository;if(!o)throw new Error("Repository not found.");let i=o.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(t,s={}){return this.getRefs("refs/heads/",t,s)}async getTags(t,s={}){return this.getRefs("refs/tags/",t,s)}async getBlame(t,s={}){var i;let a=(i=(await h(this.config,{query:`
313
313
  query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
314
314
  repository(owner: $owner, name: $name) {
315
315
  object(expression: $ref) {
@@ -348,66 +348,66 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
348
348
  }
349
349
  }
350
350
  }
351
- `,variables:{owner:t.repo.namespace,name:t.repo.name,ref:t.ref,path:t.path}},s)).body.data)==null?void 0:i.repository;if(!a)throw new Error("Repository not found.");let o=a.object;if(!o||!("blame"in o))throw new Error("Ref not found.");if(o.blame.ranges.length===0)throw new Error("File not found.");return{data:{ranges:o.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(t,s={}){var l,p;let n=await this.getScopes(s),a=A(n),o=d=>{let c=d&&typeof t.isDraft=="boolean"?`${t.query} draft:${t.isDraft}`:t.query;return ge("pr",c,t.cursor,a,d)},i=await m(this.config,o(!0),s);i.body.errors&&Fe(i.body.errors)&&(this.config.baseUrl||s.baseUrl)&&(i=await m(this.config,o(!1),s));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(Pt))||[]}}async searchIssues(t,s={}){var u,l;let n=await this.getScopes(s),a=A(n),o=await m(this.config,ge("issue",t.query,t.cursor,a),s),{data:i}=o.body;if(!i)throw new Error(((u=o.body.errors)==null?void 0:u[0].message)||o.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(wt))||[]}}async getPullRequestsAssociatedWithUser(t,s={}){var g;let[n,a,o]=((g=t.cursor)==null?void 0:g.split(";"))||[void 0,void 0,void 0];if(t.cursor&&n==="null"&&a==="null"&&o==="null")return{pageInfo:{hasNextPage:!1,endCursor:"null;null;null"},data:[]};let[i,u,l]=await Promise.all([this.searchPullRequests({query:`author:${t.username}`,cursor:n},s),this.searchPullRequests({query:`assignee:${t.username}`,cursor:a},s),this.searchPullRequests({query:`review-requested:${t.username}`,cursor:o},s)]),p={},d=[],c=b=>{p[b.id]||(p[b.id]=!0,d.push(b))};return i.data.forEach(c),u.data.forEach(c),l.data.forEach(c),{pageInfo:{hasNextPage:i.pageInfo.hasNextPage||u.pageInfo.hasNextPage||l.pageInfo.hasNextPage,endCursor:`${(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"};${(l==null?void 0:l.pageInfo.hasNextPage)&&(l==null?void 0:l.pageInfo.endCursor)||"null"}`},data:d}}async getPullRequestsForRepos(t,s={}){let{assigneeLogins:n,updatedBefore:a,authorLogin:o,repos:i,reviewRequestedLogin:u,startQuery:l,mentionLogin:p}=t,d=ce(l||"");return i.forEach(c=>{d.push(`repo:${c.namespace}/${c.name}`)}),n&&n.forEach(c=>{d.push(`assignee:${c}`)}),a&&d.push(`updated:<${a}`),o&&d.push(`author:${o}`),u&&d.push(`review-requested:${u}`),p&&d.push(`mentions:${p}`),this.searchPullRequests({query:`sort:updated ${d.join(" ")}`,isDraft:t.isDraft,cursor:t.cursor},s)}async closePullRequest(t,s={}){var i,u,l;let{pullRequestGraphQLId:n}=t,a=`mutation ClosePullRequest($pullRequestGraphQLId: ID!) {
351
+ `,variables:{owner:t.repo.namespace,name:t.repo.name,ref:t.ref,path:t.path}},s)).body.data)==null?void 0:i.repository;if(!a)throw new Error("Repository not found.");let o=a.object;if(!o||!("blame"in o))throw new Error("Ref not found.");if(o.blame.ranges.length===0)throw new Error("File not found.");return{data:{ranges:o.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(t,s={}){var l,p;let n=await this.getScopes(s),a=A(n),o=d=>{let c=d&&typeof t.isDraft=="boolean"?`${t.query} draft:${t.isDraft}`:t.query;return ge("pr",c,t.cursor,a,d)},i=await h(this.config,o(!0),s);i.body.errors&&Fe(i.body.errors)&&(this.config.baseUrl||s.baseUrl)&&(i=await h(this.config,o(!1),s));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(Pt))||[]}}async searchIssues(t,s={}){var u,l;let n=await this.getScopes(s),a=A(n),o=await h(this.config,ge("issue",t.query,t.cursor,a),s),{data:i}=o.body;if(!i)throw new Error(((u=o.body.errors)==null?void 0:u[0].message)||o.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(wt))||[]}}async getPullRequestsAssociatedWithUser(t,s={}){var g;let[n,a,o]=((g=t.cursor)==null?void 0:g.split(";"))||[void 0,void 0,void 0];if(t.cursor&&n==="null"&&a==="null"&&o==="null")return{pageInfo:{hasNextPage:!1,endCursor:"null;null;null"},data:[]};let[i,u,l]=await Promise.all([this.searchPullRequests({query:`author:${t.username}`,cursor:n},s),this.searchPullRequests({query:`assignee:${t.username}`,cursor:a},s),this.searchPullRequests({query:`review-requested:${t.username}`,cursor:o},s)]),p={},d=[],c=b=>{p[b.id]||(p[b.id]=!0,d.push(b))};return i.data.forEach(c),u.data.forEach(c),l.data.forEach(c),{pageInfo:{hasNextPage:i.pageInfo.hasNextPage||u.pageInfo.hasNextPage||l.pageInfo.hasNextPage,endCursor:`${(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"};${(l==null?void 0:l.pageInfo.hasNextPage)&&(l==null?void 0:l.pageInfo.endCursor)||"null"}`},data:d}}async getPullRequestsForRepos(t,s={}){let{assigneeLogins:n,updatedBefore:a,authorLogin:o,repos:i,reviewRequestedLogin:u,startQuery:l,mentionLogin:p}=t,d=ce(l||"");return i.forEach(c=>{d.push(`repo:${c.namespace}/${c.name}`)}),n&&n.forEach(c=>{d.push(`assignee:${c}`)}),a&&d.push(`updated:<${a}`),o&&d.push(`author:${o}`),u&&d.push(`review-requested:${u}`),p&&d.push(`mentions:${p}`),this.searchPullRequests({query:`sort:updated ${d.join(" ")}`,isDraft:t.isDraft,cursor:t.cursor},s)}async closePullRequest(t,s={}){var i,u,l;let{pullRequestGraphQLId:n}=t,a=`mutation ClosePullRequest($pullRequestGraphQLId: ID!) {
352
352
  closePullRequest(input: { pullRequestId: $pullRequestGraphQLId }) {
353
353
  pullRequest {
354
354
  id
355
355
  }
356
356
  }
357
- }`;if(!((l=(u=(i=(await m(this.config,{query:`${a}`,variables:{pullRequestGraphQLId:n}},s)).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(t,s={}){var u,l,p;let{pullRequestGraphQLId:n,expectedSourceSha:a}=t,o=`mutation MergePullRequest($pullRequestGraphQLId: ID!, $expectedSourceSha: GitObjectID!) {
357
+ }`;if(!((l=(u=(i=(await h(this.config,{query:`${a}`,variables:{pullRequestGraphQLId:n}},s)).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(t,s={}){var u,l,p;let{pullRequestGraphQLId:n,expectedSourceSha:a}=t,o=`mutation MergePullRequest($pullRequestGraphQLId: ID!, $expectedSourceSha: GitObjectID!) {
358
358
  mergePullRequest(input: { pullRequestId: $pullRequestGraphQLId, expectedHeadOid: $expectedSourceSha }) {
359
359
  pullRequest {
360
360
  id
361
361
  }
362
362
  }
363
- }`;if(!((p=(l=(u=(await m(this.config,{query:`${o}`,variables:{pullRequestGraphQLId:n,expectedSourceSha:a}},s)).body.data)==null?void 0:u.mergePullRequest)==null?void 0:l.pullRequest)!=null&&p.id))throw new Error("Could not merge pull request")}async setPullRequestMilestone(t,s={}){var u,l,p;let{pullRequestGraphQLId:n,milestoneGraphQLId:a}=t,o=`mutation SetPullRequestMilestone($pullRequestGraphQLId: ID!, $milestoneGraphQLId: ID) {
363
+ }`;if(!((p=(l=(u=(await h(this.config,{query:`${o}`,variables:{pullRequestGraphQLId:n,expectedSourceSha:a}},s)).body.data)==null?void 0:u.mergePullRequest)==null?void 0:l.pullRequest)!=null&&p.id))throw new Error("Could not merge pull request")}async setPullRequestMilestone(t,s={}){var u,l,p;let{pullRequestGraphQLId:n,milestoneGraphQLId:a}=t,o=`mutation SetPullRequestMilestone($pullRequestGraphQLId: ID!, $milestoneGraphQLId: ID) {
364
364
  updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, milestoneId: $milestoneGraphQLId }) {
365
365
  pullRequest {
366
366
  id
367
367
  }
368
368
  }
369
- }`;if(!((p=(l=(u=(await m(this.config,{query:`${o}`,variables:{pullRequestGraphQLId:n,milestoneGraphQLId:a}},s)).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(t,s){var o,i,u;let n=`mutation MarkReadyToReview($pullRequestGraphQLId: ID!) {
369
+ }`;if(!((p=(l=(u=(await h(this.config,{query:`${o}`,variables:{pullRequestGraphQLId:n,milestoneGraphQLId:a}},s)).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(t,s){var o,i,u;let n=`mutation MarkReadyToReview($pullRequestGraphQLId: ID!) {
370
370
  markPullRequestReadyForReview(input: { pullRequestId: $pullRequestGraphQLId }) {
371
371
  pullRequest {
372
372
  id
373
373
  }
374
374
  }
375
- }`;if(!((u=(i=(o=(await m(this.config,{query:n,variables:{pullRequestGraphQLId:t}},s)).body.data)==null?void 0:o.markPullRequestReadyForReview)==null?void 0:i.pullRequest)!=null&&u.id))throw new Error("Could not mark pull request ready to review")}async convertPullRequestToDraft(t,s){var o,i,u;let n=`mutation ConvertToDraft($pullRequestGraphQLId: ID!) {
375
+ }`;if(!((u=(i=(o=(await h(this.config,{query:n,variables:{pullRequestGraphQLId:t}},s)).body.data)==null?void 0:o.markPullRequestReadyForReview)==null?void 0:i.pullRequest)!=null&&u.id))throw new Error("Could not mark pull request ready to review")}async convertPullRequestToDraft(t,s){var o,i,u;let n=`mutation ConvertToDraft($pullRequestGraphQLId: ID!) {
376
376
  convertPullRequestToDraft(input: { pullRequestId: $pullRequestGraphQLId }) {
377
377
  pullRequest {
378
378
  id
379
379
  }
380
380
  }
381
- }`;if(!((u=(i=(o=(await m(this.config,{query:n,variables:{pullRequestGraphQLId:t}},s)).body.data)==null?void 0:o.convertPullRequestToDraft)==null?void 0:i.pullRequest)!=null&&u.id))throw new Error("Could not convert pull request to draft")}async setPullRequestAsDraft(t,s={}){let{pullRequestGraphQLId:n,isDraft:a}=t;if(a){await this.convertPullRequestToDraft(n,s);return}await this.markPullRequestReadyForReview(n,s)}async getIssuesAssociatedWithUser(t,s={}){var d;let[n,a]=((d=t.cursor)==null?void 0:d.split(";"))||[void 0,void 0];if(t.cursor&&n==="null"&&a==="null")return{pageInfo:{hasNextPage:!1,endCursor:"null;null"},data:[]};let[o,i]=await Promise.all([this.searchIssues({query:`author:${t.username}`,cursor:n},s),this.searchIssues({query:`assignee:${t.username}`,cursor:a},s)]),u={},l=[],p=c=>{u[c.id]||(u[c.id]=!0,l.push(c))};return o.data.forEach(p),i.data.forEach(p),{pageInfo:{hasNextPage:o.pageInfo.hasNextPage||i.pageInfo.hasNextPage,endCursor:`${(o==null?void 0:o.pageInfo.hasNextPage)&&(o==null?void 0:o.pageInfo.endCursor)||"null"};${(i==null?void 0:i.pageInfo.hasNextPage)&&(i==null?void 0:i.pageInfo.endCursor)||"null"}`},data:l}}async getIssuesForRepos(t,s={}){let n=ce(t.startQuery||""),{cursor:a,assigneeLogins:o,updatedBefore:i,authorLogin:u,mentionLogin:l}=t;return t.repos.forEach(p=>{n.push(`repo:${p.namespace}/${p.name}`)}),o&&o.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:a},s)}async closeIssueWithReason(t,s,n){var i,u,l;let a=`mutation CloseIssueWithReason($issueGraphQLId: ID!, $closeReason: IssueClosedStateReason!) {
381
+ }`;if(!((u=(i=(o=(await h(this.config,{query:n,variables:{pullRequestGraphQLId:t}},s)).body.data)==null?void 0:o.convertPullRequestToDraft)==null?void 0:i.pullRequest)!=null&&u.id))throw new Error("Could not convert pull request to draft")}async setPullRequestAsDraft(t,s={}){let{pullRequestGraphQLId:n,isDraft:a}=t;if(a){await this.convertPullRequestToDraft(n,s);return}await this.markPullRequestReadyForReview(n,s)}async getIssuesAssociatedWithUser(t,s={}){var d;let[n,a]=((d=t.cursor)==null?void 0:d.split(";"))||[void 0,void 0];if(t.cursor&&n==="null"&&a==="null")return{pageInfo:{hasNextPage:!1,endCursor:"null;null"},data:[]};let[o,i]=await Promise.all([this.searchIssues({query:`author:${t.username}`,cursor:n},s),this.searchIssues({query:`assignee:${t.username}`,cursor:a},s)]),u={},l=[],p=c=>{u[c.id]||(u[c.id]=!0,l.push(c))};return o.data.forEach(p),i.data.forEach(p),{pageInfo:{hasNextPage:o.pageInfo.hasNextPage||i.pageInfo.hasNextPage,endCursor:`${(o==null?void 0:o.pageInfo.hasNextPage)&&(o==null?void 0:o.pageInfo.endCursor)||"null"};${(i==null?void 0:i.pageInfo.hasNextPage)&&(i==null?void 0:i.pageInfo.endCursor)||"null"}`},data:l}}async getIssuesForRepos(t,s={}){let n=ce(t.startQuery||""),{cursor:a,assigneeLogins:o,updatedBefore:i,authorLogin:u,mentionLogin:l}=t;return t.repos.forEach(p=>{n.push(`repo:${p.namespace}/${p.name}`)}),o&&o.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:a},s)}async closeIssueWithReason(t,s,n){var i,u,l;let a=`mutation CloseIssueWithReason($issueGraphQLId: ID!, $closeReason: IssueClosedStateReason!) {
382
382
  closeIssue(input: { issueId: $issueGraphQLId, stateReason: $closeReason }) {
383
383
  issue {
384
384
  id
385
385
  }
386
386
  }
387
- }`;if(!((l=(u=(i=(await m(this.config,{query:a,variables:{issueGraphQLId:t,closeReason:s}},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(t,s){var o,i,u;let n=`mutation SetIssueState($issueGraphQLId: ID!) {
387
+ }`;if(!((l=(u=(i=(await h(this.config,{query:a,variables:{issueGraphQLId:t,closeReason:s}},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(t,s){var o,i,u;let n=`mutation SetIssueState($issueGraphQLId: ID!) {
388
388
  updateIssue(input: { id: $issueGraphQLId, state: CLOSED }) {
389
389
  issue {
390
390
  id
391
391
  }
392
392
  }
393
- }`;if(!((u=(i=(o=(await m(this.config,{query:n,variables:{issueGraphQLId:t}},s)).body.data)==null?void 0:o.updateIssue)==null?void 0:i.issue)!=null&&u.id))throw new Error("Could not close issue")}async reopenIssue(t,s){var o,i,u;let n=`mutation ReOpenIssue($issueGraphQLId: ID!) {
393
+ }`;if(!((u=(i=(o=(await h(this.config,{query:n,variables:{issueGraphQLId:t}},s)).body.data)==null?void 0:o.updateIssue)==null?void 0:i.issue)!=null&&u.id))throw new Error("Could not close issue")}async reopenIssue(t,s){var o,i,u;let n=`mutation ReOpenIssue($issueGraphQLId: ID!) {
394
394
  reopenIssue(input: { issueId: $issueGraphQLId }) {
395
395
  issue {
396
396
  id
397
397
  }
398
398
  }
399
- }`;if(!((u=(i=(o=(await m(this.config,{query:n,variables:{issueGraphQLId:t}},s)).body.data)==null?void 0:o.reopenIssue)==null?void 0:i.issue)!=null&&u.id))throw new Error("Could not reopen issue")}async setIssueStatus(t,s={}){let{issueGraphQLId:n,status:a,closeReason:o}=t;if(o&&a=="OPEN")throw new Error("Did not expect closeReason to be set when trying to reopen issue");a=="OPEN"?await this.reopenIssue(n,s):a=="CLOSED"&&!o?await this.closeIssueWithoutReason(n,s):o&&await this.closeIssueWithReason(n,o,s)}async setIssueMilestone(t,s={}){var u,l,p;let{issueGraphQLId:n,milestoneGraphQLId:a}=t,o=`mutation SetIssueMilestone($issueGraphQLId: ID!, $milestoneGraphQLId: ID) {
399
+ }`;if(!((u=(i=(o=(await h(this.config,{query:n,variables:{issueGraphQLId:t}},s)).body.data)==null?void 0:o.reopenIssue)==null?void 0:i.issue)!=null&&u.id))throw new Error("Could not reopen issue")}async setIssueStatus(t,s={}){let{issueGraphQLId:n,status:a,closeReason:o}=t;if(o&&a=="OPEN")throw new Error("Did not expect closeReason to be set when trying to reopen issue");a=="OPEN"?await this.reopenIssue(n,s):a=="CLOSED"&&!o?await this.closeIssueWithoutReason(n,s):o&&await this.closeIssueWithReason(n,o,s)}async setIssueMilestone(t,s={}){var u,l,p;let{issueGraphQLId:n,milestoneGraphQLId:a}=t,o=`mutation SetIssueMilestone($issueGraphQLId: ID!, $milestoneGraphQLId: ID) {
400
400
  updateIssue(input: { id: $issueGraphQLId, milestoneId: $milestoneGraphQLId }) {
401
401
  issue {
402
402
  id
403
403
  }
404
404
  }
405
- }`;if(!((p=(l=(u=(await m(this.config,{query:`${o}`,variables:{issueGraphQLId:n,milestoneGraphQLId:a}},s)).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 getMilestonesForRepo(t,s={}){var u,l,p,d;let{repo:{namespace:n,name:a},cursor:o}=t,i=await m(this.config,{query:`
405
+ }`;if(!((p=(l=(u=(await h(this.config,{query:`${o}`,variables:{issueGraphQLId:n,milestoneGraphQLId:a}},s)).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 getMilestonesForRepo(t,s={}){var u,l,p,d;let{repo:{namespace:n,name:a},cursor:o}=t,i=await h(this.config,{query:`
406
406
  query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
407
407
  repository(owner: $owner, name: $name) {
408
408
  milestones(first: $first, after: $cursor) {
409
409
  nodes {
410
- ${K}
410
+ ${Z}
411
411
  }
412
412
  pageInfo {
413
413
  endCursor
@@ -416,12 +416,12 @@ query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first:
416
416
  }
417
417
  }
418
418
  }
419
- `,variables:{owner:n,name:a,cursor:o,first:E}},s);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(Ie))??[]}}async getLabelsForRepo(t,s={}){var u,l,p,d;let{repo:{namespace:n,name:a},cursor:o}=t,i=await m(this.config,{query:`
419
+ `,variables:{owner:n,name:a,cursor:o,first:v}},s);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(Ie))??[]}}async getLabelsForRepo(t,s={}){var u,l,p,d;let{repo:{namespace:n,name:a},cursor:o}=t,i=await h(this.config,{query:`
420
420
  query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
421
421
  repository(owner: $owner, name: $name) {
422
422
  labels(first: $first, after: $cursor) {
423
423
  nodes {
424
- ${Z}
424
+ ${Y}
425
425
  }
426
426
  pageInfo {
427
427
  endCursor
@@ -430,7 +430,7 @@ query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first:
430
430
  }
431
431
  }
432
432
  }
433
- `,variables:{owner:n,name:a,cursor:o,first:E}},s);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(Re))??[]}}};var Ct="https://gitlab.com/api/v4",Et="https://gitlab.com/api/graphql",Me=/\/api\/v\d+$/,ze=e=>{if(e.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.")},be=(e,r)=>{let t=r.baseUrl||e.baseUrl;return t?(t=t.replace(/\/$/,""),ze(t),t):Ct},vt=(e,r)=>{let t=r.baseUrl||e.baseUrl;return t?(t=t.replace(/\/$/,""),ze(t),Me.test(t)&&(t=t.replace(Me,"")),`${t}/api/graphql`):Et},R=(e,r,t)=>{let s=h(t.token||e.token);return e.request({url:vt(e,t),method:"POST",headers:{...s,"Content-Type":"application/json"},body:JSON.stringify(r)})};var Dt={CAN_BE_MERGED:"MERGEABLE",CANNOT_BE_MERGED:"CONFLICTS",CANNOT_BE_MERGED_RECHECK:"UNKNOWN",UNCHECKED:"UNKNOWN",CHECKING:"UNKNOWN"},Ee="gid://gitlab/User/",B="gid://gitlab/Project/",St="gid://gitlab/MergeRequest/",Ut="gid://gitlab/Issue/",$t="gid://gitlab/ProjectLabel/",Je="gid://gitlab/Milestone/",ve=`
433
+ `,variables:{owner:n,name:a,cursor:o,first:v}},s);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(Re))??[]}}};var Ct="https://gitlab.com/api/v4",vt="https://gitlab.com/api/graphql",Me=/\/api\/v\d+$/,ze=e=>{if(e.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.")},be=(e,r)=>{let t=r.baseUrl||e.baseUrl;return t?(t=t.replace(/\/$/,""),ze(t),t):Ct},Et=(e,r)=>{let t=r.baseUrl||e.baseUrl;return t?(t=t.replace(/\/$/,""),ze(t),Me.test(t)&&(t=t.replace(Me,"")),`${t}/api/graphql`):vt},R=(e,r,t)=>{let s=m(t.token||e.token);return e.request({url:Et(e,t),method:"POST",headers:{...s,"Content-Type":"application/json"},body:JSON.stringify(r)})};var Dt={CAN_BE_MERGED:"MERGEABLE",CANNOT_BE_MERGED:"CONFLICTS",CANNOT_BE_MERGED_RECHECK:"UNKNOWN",UNCHECKED:"UNKNOWN",CHECKING:"UNKNOWN"},ve="gid://gitlab/User/",F="gid://gitlab/Project/",Ut="gid://gitlab/MergeRequest/",$t="gid://gitlab/Issue/",St="gid://gitlab/ProjectLabel/",Je="gid://gitlab/Milestone/",Ee=`
434
434
  description
435
435
  dueDate
436
436
  id
@@ -487,7 +487,7 @@ upvotes
487
487
  userNotesCount
488
488
  webUrl
489
489
  milestone {
490
- ${ve}
490
+ ${Ee}
491
491
  }
492
492
  `,We=`
493
493
  id
@@ -531,7 +531,7 @@ labels {
531
531
  nodes {
532
532
  ${De}
533
533
  }
534
- }`,O=e=>`${e.namespace}/${e.name}`,qt=e=>`${e.namespace}/${e.name}`,we=e=>{var r;return{id:e.id.replace(B,""),graphQLId:e.id,namespace:e.fullPath.split("/").slice(0,-1).join("/"),name:e.path,webUrl:e.webUrl,httpsUrl:e.httpUrlToRepo,sshUrl:e.sshUrlToRepo,defaultBranch:(r=e.repository)!=null&&r.rootRef?{name:e.repository.rootRef}:null,permission:null}},Lt={opened:"OPEN",merged:"MERGED",closed:"CLOSED"},k=e=>({id:e.id.replace(Ee,""),graphQLId:e.id,name:e.name,username:e.username,email:e.publicEmail,avatarUrl:e.avatarUrl}),Se=e=>({color:e.color,description:e.description,id:e.id.replace($t,""),graphQLId:e.id,name:e.title}),He=(e,r)=>{var t,s,n,a,o,i,u;return{id:e.id.replace(St,""),graphQLId:e.id,title:e.title,number:parseInt(e.iid,10),state:Lt[e.state],commentCount:e.userNotesCount||0,upvoteCount:e.upvotes,author:e.author?k(e.author):null,createdDate:new Date(e.createdAt),isDraft:e.draft,repository:{name:r.name,owner:{login:r.owner}},headRepository:null,headCommit:{buildStatus:null},baseRef:{name:e.targetBranch},headRef:{name:e.sourceBranch},url:e.webUrl,updatedDate:new Date(e.updatedAt),closedDate:e.mergedAt?new Date(e.mergedAt):null,assignees:(t=e.assignees)!=null&&t.nodes?e.assignees.nodes.map(k):null,reviews:(s=e.reviewers)!=null&&s.nodes?e.reviewers.nodes.map(l=>{var p,d;return{reviewer:k(l),state:(p=l.mergeRequestInteraction)!=null&&p.approved?"APPROVED":((d=l.mergeRequestInteraction)==null?void 0:d.reviewState)==="REVIEWED"?"CHANGES_REQUESTED":"CHANGES_REQUESTED"}}):null,additions:((n=e.diffStatsSummary)==null?void 0:n.additions)||0,deletions:((a=e.diffStatsSummary)==null?void 0:a.deletions)||0,fileCount:((o=e.diffStatsSummary)==null?void 0:o.fileCount)||0,commitCount:e.commitCount||0,mergeableState:Dt[e.mergeStatusEnum],milestone:e.milestone?Ue(e.milestone,r.webUrl):null,labels:((u=(i=e.labels)==null?void 0:i.nodes)==null?void 0:u.map(Se))??[]}},Ce=(e,r)=>{var t,s;return{author:{avatarUrl:e.author.avatarUrl,email:null,graphQLId:e.author.id,id:e.author.id.replace(Ee,""),name:e.author.name,username:e.author.username},assignees:e.assignees.nodes.map(n=>({avatarUrl:n.avatarUrl,email:null,graphQLId:n.id,id:n.id.replace(Ee,""),name:n.name,username:n.username})),commentCount:e.userNotesCount,createdDate:new Date(e.createdAt),description:e.description,graphQLId:e.id,id:e.id.replace(Ut,""),labels:((s=(t=e.labels)==null?void 0:t.nodes)==null?void 0:s.map(Se))??[],number:e.iid,repository:{name:r.name,owner:{login:r.owner}},updatedDate:new Date(e.updatedAt),upvoteCount:e.upvotes,state:{name:e.state,color:null},type:e.type,title:e.title,url:e.webUrl,milestone:e.milestone?Ue(e.milestone,r.webUrl):null}},Ue=(e,r)=>({id:e.id.replace(Je,""),graphQLId:e.id,number:parseInt(e.iid,10),title:e.title,description:e.description,isOpen:e.state==="active",url:`${r}/-/${e.webPath.replace(/.+?\/-\//,"")}`,startDate:e.startDate?new Date(e.startDate):null,dueDate:e.dueDate?new Date(e.dueDate):null}),F=class extends x{async getCurrentUser(r={}){var n;let s=(n=(await R(this.config,{query:`
534
+ }`,O=e=>`${e.namespace}/${e.name}`,qt=e=>`${e.namespace}/${e.name}`,we=e=>{var r;return{id:e.id.replace(F,""),graphQLId:e.id,namespace:e.fullPath.split("/").slice(0,-1).join("/"),name:e.path,webUrl:e.webUrl,httpsUrl:e.httpUrlToRepo,sshUrl:e.sshUrlToRepo,defaultBranch:(r=e.repository)!=null&&r.rootRef?{name:e.repository.rootRef}:null,permission:null}},Lt={opened:"OPEN",merged:"MERGED",closed:"CLOSED"},k=e=>({id:e.id.replace(ve,""),graphQLId:e.id,name:e.name,username:e.username,email:e.publicEmail,avatarUrl:e.avatarUrl}),Ue=e=>({color:e.color,description:e.description,id:e.id.replace(St,""),graphQLId:e.id,name:e.title}),He=(e,r)=>{var t,s,n,a,o,i,u;return{id:e.id.replace(Ut,""),graphQLId:e.id,title:e.title,number:parseInt(e.iid,10),state:Lt[e.state],commentCount:e.userNotesCount||0,upvoteCount:e.upvotes,author:e.author?k(e.author):null,createdDate:new Date(e.createdAt),isDraft:e.draft,repository:{name:r.name,owner:{login:r.owner}},headRepository:null,headCommit:{buildStatus:null},baseRef:{name:e.targetBranch},headRef:{name:e.sourceBranch},url:e.webUrl,updatedDate:new Date(e.updatedAt),closedDate:e.mergedAt?new Date(e.mergedAt):null,assignees:(t=e.assignees)!=null&&t.nodes?e.assignees.nodes.map(k):null,reviews:(s=e.reviewers)!=null&&s.nodes?e.reviewers.nodes.map(l=>{var p,d;return{reviewer:k(l),state:(p=l.mergeRequestInteraction)!=null&&p.approved?"APPROVED":((d=l.mergeRequestInteraction)==null?void 0:d.reviewState)==="REVIEWED"?"CHANGES_REQUESTED":"CHANGES_REQUESTED"}}):null,additions:((n=e.diffStatsSummary)==null?void 0:n.additions)||0,deletions:((a=e.diffStatsSummary)==null?void 0:a.deletions)||0,fileCount:((o=e.diffStatsSummary)==null?void 0:o.fileCount)||0,commitCount:e.commitCount||0,mergeableState:Dt[e.mergeStatusEnum],milestone:e.milestone?$e(e.milestone,r.webUrl):null,labels:((u=(i=e.labels)==null?void 0:i.nodes)==null?void 0:u.map(Ue))??[]}},Ce=(e,r)=>{var t,s;return{author:{avatarUrl:e.author.avatarUrl,email:null,graphQLId:e.author.id,id:e.author.id.replace(ve,""),name:e.author.name,username:e.author.username},assignees:e.assignees.nodes.map(n=>({avatarUrl:n.avatarUrl,email:null,graphQLId:n.id,id:n.id.replace(ve,""),name:n.name,username:n.username})),commentCount:e.userNotesCount,createdDate:new Date(e.createdAt),description:e.description,graphQLId:e.id,id:e.id.replace($t,""),labels:((s=(t=e.labels)==null?void 0:t.nodes)==null?void 0:s.map(Ue))??[],number:e.iid,repository:{name:r.name,owner:{login:r.owner}},updatedDate:new Date(e.updatedAt),upvoteCount:e.upvotes,state:{name:e.state,color:null},type:e.type,title:e.title,url:e.webUrl,milestone:e.milestone?$e(e.milestone,r.webUrl):null}},$e=(e,r)=>({id:e.id.replace(Je,""),graphQLId:e.id,number:parseInt(e.iid,10),title:e.title,description:e.description,isOpen:e.state==="active",url:`${r}/-/${e.webPath.replace(/.+?\/-\//,"")}`,startDate:e.startDate?new Date(e.startDate):null,dueDate:e.dueDate?new Date(e.dueDate):null}),M=class extends x{async getCurrentUser(r={}){var n;let s=(n=(await R(this.config,{query:`
535
535
  query getCurrentUser {
536
536
  currentUser {
537
537
  ${T}
@@ -592,7 +592,7 @@ query getReposForCurrentUser($after: String) {
592
592
  }
593
593
  }
594
594
  }
595
- `,variables:{after:r.cursor}},t);if(!((a=s.body.data)!=null&&a.projects))throw new Error(((o=s.body.errors)==null?void 0:o[0].message)||s.statusText||"Unknown error");let n=((u=(i=s.body.data)==null?void 0:i.projects)==null?void 0:u.nodes)||[];return{pageInfo:(p=(l=s.body.data)==null?void 0:l.projects)==null?void 0:p.pageInfo,data:n.map(we)}}async getRefs(r,t,s={}){var u;let n=O(t.repo),a=new URL(`${be(this.config,s)}/projects/${encodeURIComponent(n)}/repository/${r}`);a.searchParams.set("page",((u=t.page)==null?void 0:u.toString())||"1"),a.searchParams.set("per_page",E.toString());let o=await this.config.request({url:a.toString(),headers:h(s.token||this.config.token)}),i=o.headers["x-next-page"];return{pageInfo:{hasNextPage:!!i,nextPage:i?parseInt(i,10):null},data:o.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(r,t={}){return this.getRefs("branches",r,t)}async getTags(r,t={}){return this.getRefs("tags",r,t)}async getBlame(r,t={}){let s=O(r.repo),n=new URL(`${be(this.config,t)}/projects/${encodeURIComponent(s)}/repository/files/${encodeURIComponent(r.path)}/blame`);n.searchParams.set("ref",r.ref);let a=await this.config.request({url:n.toString(),headers:h(t.token||this.config.token)}),o=0;return{data:{ranges:a.body.map(i=>{let u=o+1;return o+=i.lines.length,{startingLine:u,endingLine:o,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}}})}}}getVariablesForPullRequests(r){let{updatedBefore:t,isDraft:s,authorLogin:n,assigneeLogins:a,reviewRequestedLogin:o}=r||{},i={},u=[],l=[],p=(d,c,g)=>{u.push(`$${d}: ${g}`),l.push(`${d}: $${d}`),i[d]=c};return t&&p("updatedBefore",t,"Time"),n&&p("authorUsername",n,"String"),a&&p("assigneeUsername",a[0],"String"),s!=null&&p("draft",s,"Boolean"),o&&p("reviewerUsername",o,"String"),{variables:i,variableTypes:u,mergeRequestArguments:l}}async getPullRequestsForRepo(r,t={}){var y,P,I;let{cursor:s,repo:n}=r||{},a=O(n),{variables:o,variableTypes:i,mergeRequestArguments:u}=this.getVariablesForPullRequests(r),l={fullPath:a,...o},p=await R(this.config,{query:`
595
+ `,variables:{after:r.cursor}},t);if(!((a=s.body.data)!=null&&a.projects))throw new Error(((o=s.body.errors)==null?void 0:o[0].message)||s.statusText||"Unknown error");let n=((u=(i=s.body.data)==null?void 0:i.projects)==null?void 0:u.nodes)||[];return{pageInfo:(p=(l=s.body.data)==null?void 0:l.projects)==null?void 0:p.pageInfo,data:n.map(we)}}async getRefs(r,t,s={}){var u;let n=O(t.repo),a=new URL(`${be(this.config,s)}/projects/${encodeURIComponent(n)}/repository/${r}`);a.searchParams.set("page",((u=t.page)==null?void 0:u.toString())||"1"),a.searchParams.set("per_page",v.toString());let o=await this.config.request({url:a.toString(),headers:m(s.token||this.config.token)}),i=o.headers["x-next-page"];return{pageInfo:{hasNextPage:!!i,nextPage:i?parseInt(i,10):null},data:o.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(r,t={}){return this.getRefs("branches",r,t)}async getTags(r,t={}){return this.getRefs("tags",r,t)}async getBlame(r,t={}){let s=O(r.repo),n=new URL(`${be(this.config,t)}/projects/${encodeURIComponent(s)}/repository/files/${encodeURIComponent(r.path)}/blame`);n.searchParams.set("ref",r.ref);let a=await this.config.request({url:n.toString(),headers:m(t.token||this.config.token)}),o=0;return{data:{ranges:a.body.map(i=>{let u=o+1;return o+=i.lines.length,{startingLine:u,endingLine:o,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}}})}}}getVariablesForPullRequests(r){let{updatedBefore:t,isDraft:s,authorLogin:n,assigneeLogins:a,reviewRequestedLogin:o}=r||{},i={},u=[],l=[],p=(d,c,g)=>{u.push(`$${d}: ${g}`),l.push(`${d}: $${d}`),i[d]=c};return t&&p("updatedBefore",t,"Time"),n&&p("authorUsername",n,"String"),a&&p("assigneeUsername",a[0],"String"),s!=null&&p("draft",s,"Boolean"),o&&p("reviewerUsername",o,"String"),{variables:i,variableTypes:u,mergeRequestArguments:l}}async getPullRequestsForRepo(r,t={}){var y,P,I;let{cursor:s,repo:n}=r||{},a=O(n),{variables:o,variableTypes:i,mergeRequestArguments:u}=this.getVariablesForPullRequests(r),l={fullPath:a,...o},p=await R(this.config,{query:`
596
596
  query getPullRequestsForRepo(
597
597
  $fullPath: ID!
598
598
  $after: String
@@ -618,13 +618,13 @@ query getPullRequestsForRepo(
618
618
  nodes {
619
619
  ${We}
620
620
  milestone {
621
- ${ve}
621
+ ${Ee}
622
622
  }
623
623
  }
624
624
  }
625
625
  }
626
626
  }
627
- `,variables:{...l,after:s}},t),d=[],c=(y=p.body.data)==null?void 0:y.project,g={name:(c==null?void 0:c.name)||"",owner:((c==null?void 0:c.fullPath)||"").split("/").slice(0,-1).join("/"),webUrl:(c==null?void 0:c.webUrl)||""};return(((P=c==null?void 0:c.mergeRequests)==null?void 0:P.nodes)||[]).forEach(f=>{d.push(He(f,g))}),{pageInfo:(I=c==null?void 0:c.mergeRequests)==null?void 0:I.pageInfo,data:d}}async getPullRequestsForRepos(r,t={}){var c,g,b,y,P;let{cursor:s}=r||{},n=r.repoIds.map(I=>I.toString().startsWith(B)?I:`${B}${I}`),{variables:a,variableTypes:o,mergeRequestArguments:i}=this.getVariablesForPullRequests(r),u={projectIds:n,...a},l=await R(this.config,{query:`
627
+ `,variables:{...l,after:s}},t),d=[],c=(y=p.body.data)==null?void 0:y.project,g={name:(c==null?void 0:c.name)||"",owner:((c==null?void 0:c.fullPath)||"").split("/").slice(0,-1).join("/"),webUrl:(c==null?void 0:c.webUrl)||""};return(((P=c==null?void 0:c.mergeRequests)==null?void 0:P.nodes)||[]).forEach(f=>{d.push(He(f,g))}),{pageInfo:(I=c==null?void 0:c.mergeRequests)==null?void 0:I.pageInfo,data:d}}async getPullRequestsForRepos(r,t={}){var c,g,b,y,P;let{cursor:s}=r||{},n=r.repoIds.map(I=>I.toString().startsWith(F)?I:`${F}${I}`),{variables:a,variableTypes:o,mergeRequestArguments:i}=this.getVariablesForPullRequests(r),u={projectIds:n,...a},l=await R(this.config,{query:`
628
628
  query getPullRequests(
629
629
  $projectIds: [ID!]
630
630
  $after: String
@@ -655,7 +655,7 @@ query getPullRequests(
655
655
  }
656
656
  }
657
657
  }
658
- `,variables:{...u,after:s}},t),p=[];return(((g=(c=l.body.data)==null?void 0:c.projects)==null?void 0:g.nodes)||[]).forEach(I=>{var L;let f={name:I.name,owner:I.fullPath.split("/").slice(0,-1).join("/"),webUrl:I.webUrl};(((L=I.mergeRequests)==null?void 0:L.nodes)||[]).forEach(H=>{p.push(He(H,f))})}),{pageInfo:(P=(y=(b=l.body)==null?void 0:b.data)==null?void 0:y.projects)==null?void 0:P.pageInfo,data:p}}async closePullRequest(r,t={}){var l,p,d;let{repo:{namespace:s,name:n},pullRequestId:a}=r,o=`mutation ClosePullRequest($fullPath: ID!, $pullRequestId: String!) {
658
+ `,variables:{...u,after:s}},t),p=[];return(((g=(c=l.body.data)==null?void 0:c.projects)==null?void 0:g.nodes)||[]).forEach(I=>{var L;let f={name:I.name,owner:I.fullPath.split("/").slice(0,-1).join("/"),webUrl:I.webUrl};(((L=I.mergeRequests)==null?void 0:L.nodes)||[]).forEach(J=>{p.push(He(J,f))})}),{pageInfo:(P=(y=(b=l.body)==null?void 0:b.data)==null?void 0:y.projects)==null?void 0:P.pageInfo,data:p}}async closePullRequest(r,t={}){var l,p,d;let{repo:{namespace:s,name:n},pullRequestId:a}=r,o=`mutation ClosePullRequest($fullPath: ID!, $pullRequestId: String!) {
659
659
  mergeRequestUpdate(input: { projectPath: $fullPath, iid: $pullRequestId, state: CLOSED }) {
660
660
  errors,
661
661
  mergeRequest {
@@ -722,7 +722,7 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
722
722
  }
723
723
  }
724
724
  }
725
- }`,d=await R(this.config,{query:p,variables:{...l,after:s}},t),c=[],g=(P=d.body.data)==null?void 0:P.project,b={name:(g==null?void 0:g.name)||"",owner:((g==null?void 0:g.fullPath)||"").split("/").slice(0,-1).join("/"),webUrl:(g==null?void 0:g.webUrl)||""};return(((I=g==null?void 0:g.issues)==null?void 0:I.nodes)||[]).forEach(w=>{c.push(Ce(w,b))}),{pageInfo:(f=g==null?void 0:g.issues)==null?void 0:f.pageInfo,data:c.sort((w,L)=>(w.updatedDate||w.createdDate).getTime()-(L.updatedDate||L.createdDate).getTime())}}async getIssuesForRepos(r,t={}){var g,b,y,P,I;let{cursor:s}=r||{},n=r.repoIds.map(f=>f.toString().startsWith(B)?f:`${B}${f}`),{variables:a,variableTypes:o,mergeRequestArguments:i}=this.getVariablesForPullRequests(r),u={projectIds:n,...a},l=`
725
+ }`,d=await R(this.config,{query:p,variables:{...l,after:s}},t),c=[],g=(P=d.body.data)==null?void 0:P.project,b={name:(g==null?void 0:g.name)||"",owner:((g==null?void 0:g.fullPath)||"").split("/").slice(0,-1).join("/"),webUrl:(g==null?void 0:g.webUrl)||""};return(((I=g==null?void 0:g.issues)==null?void 0:I.nodes)||[]).forEach(w=>{c.push(Ce(w,b))}),{pageInfo:(f=g==null?void 0:g.issues)==null?void 0:f.pageInfo,data:c.sort((w,L)=>(w.updatedDate||w.createdDate).getTime()-(L.updatedDate||L.createdDate).getTime())}}async getIssuesForRepos(r,t={}){var g,b,y,P,I;let{cursor:s}=r||{},n=r.repoIds.map(f=>f.toString().startsWith(F)?f:`${F}${f}`),{variables:a,variableTypes:o,mergeRequestArguments:i}=this.getVariablesForPullRequests(r),u={projectIds:n,...a},l=`
726
726
  query GetIssuesFromProject(
727
727
  $projectIds: [ID!]
728
728
  $after: String
@@ -752,7 +752,7 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
752
752
  }
753
753
  }
754
754
  }
755
- }`,p=await R(this.config,{query:l,variables:{...u,after:s}},t),d=[];return(((b=(g=p.body.data)==null?void 0:g.projects)==null?void 0:b.nodes)||[]).forEach(f=>{var H;let w={name:f.name,owner:f.fullPath.split("/").slice(0,-1).join("/"),webUrl:f.webUrl};(((H=f.issues)==null?void 0:H.nodes)||[]).forEach(Ve=>d.push(Ce(Ve,w)))}),{pageInfo:(I=(P=(y=p.body)==null?void 0:y.data)==null?void 0:P.projects)==null?void 0:I.pageInfo,data:d.sort((f,w)=>(f.updatedDate||f.createdDate).getTime()-(w.updatedDate||w.createdDate).getTime())}}async setIssueStatus(r,t={}){var l,p,d;let{repo:{namespace:s,name:n},issueId:a,status:o}=r,i=`mutation SetIssueState($fullPath: ID!, $issueId: String!, $status: IssueStateEvent!) {
755
+ }`,p=await R(this.config,{query:l,variables:{...u,after:s}},t),d=[];return(((b=(g=p.body.data)==null?void 0:g.projects)==null?void 0:b.nodes)||[]).forEach(f=>{var J;let w={name:f.name,owner:f.fullPath.split("/").slice(0,-1).join("/"),webUrl:f.webUrl};(((J=f.issues)==null?void 0:J.nodes)||[]).forEach(Ve=>d.push(Ce(Ve,w)))}),{pageInfo:(I=(P=(y=p.body)==null?void 0:y.data)==null?void 0:P.projects)==null?void 0:I.pageInfo,data:d.sort((f,w)=>(f.updatedDate||f.createdDate).getTime()-(w.updatedDate||w.createdDate).getTime())}}async setIssueStatus(r,t={}){var l,p,d;let{repo:{namespace:s,name:n},issueId:a,status:o}=r,i=`mutation SetIssueState($fullPath: ID!, $issueId: String!, $status: IssueStateEvent!) {
756
756
  updateIssue(input: { projectPath: $fullPath, iid: $issueId, stateEvent: $status }) {
757
757
  issue {
758
758
  id
@@ -779,7 +779,7 @@ query getLabelsForRepo(
779
779
  webUrl
780
780
  milestones(after: $after) {
781
781
  nodes {
782
- ${ve}
782
+ ${Ee}
783
783
  }
784
784
  pageInfo {
785
785
  endCursor
@@ -788,7 +788,7 @@ query getLabelsForRepo(
788
788
  }
789
789
  }
790
790
  }
791
- `,variables:{fullPath:`${s}/${n}`,after:a}},t);return{pageInfo:((l=(u=(i=o.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=o.body.data)==null?void 0:p.project)==null?void 0:d.milestones)==null?void 0:c.nodes)==null?void 0:g.map(b=>{var y,P;return Ue(b,((P=(y=o.body.data)==null?void 0:y.project)==null?void 0:P.webUrl)||"")}))??[]}}async getLabelsForRepo(r,t={}){var i,u,l,p,d,c,g;let{repo:{namespace:s,name:n},cursor:a}=r,o=await R(this.config,{query:`
791
+ `,variables:{fullPath:`${s}/${n}`,after:a}},t);return{pageInfo:((l=(u=(i=o.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=o.body.data)==null?void 0:p.project)==null?void 0:d.milestones)==null?void 0:c.nodes)==null?void 0:g.map(b=>{var y,P;return $e(b,((P=(y=o.body.data)==null?void 0:y.project)==null?void 0:P.webUrl)||"")}))??[]}}async getLabelsForRepo(r,t={}){var i,u,l,p,d,c,g;let{repo:{namespace:s,name:n},cursor:a}=r,o=await R(this.config,{query:`
792
792
  query getLabelsForRepo(
793
793
  $fullPath: ID!
794
794
  $after: String
@@ -807,4 +807,4 @@ query getLabelsForRepo(
807
807
  }
808
808
  }
809
809
  }
810
- `,variables:{fullPath:`${s}/${n}`,after:a}},t);return{pageInfo:((l=(u=(i=o.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=o.body.data)==null?void 0:p.project)==null?void 0:d.labels)==null?void 0:c.nodes)==null?void 0:g.map(Se))??[]}}};var Y="https://api.atlassian.com/ex/jira",$e=100,Gt=e=>{var t,s,n,a,o,i;let r=e.fields.assignee;return{id:e.id,commentCount:e.fields.comment.comments.length,number:e.key,title:e.fields.summary,url:e.self,createdDate:new Date(e.fields.created),author:{id:e.fields.creator.accountId,name:e.fields.creator.displayName,email:e.fields.creator.emailAddress,avatarUrl:e.fields.creator.avatarUrls["32x32"],username:e.fields.creator.displayName},updatedDate:new Date(e.fields.updated),assignees:r?[{id:r.accountId,name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrls["32x32"],username:r.displayName}]:[],description:null,repository:null,state:{name:(t=e.fields.status)==null?void 0:t.name,color:(n=(s=e.fields.status)==null?void 0:s.statusCategory)==null?void 0:n.colorName},statusTransitions:((a=e.transitions)==null?void 0:a.map(xt))??[],type:e.fields.issuetype.name,upvoteCount:((o=e.fields.votes)==null?void 0:o.votes)||0,labels:((i=e.fields.labels)==null?void 0:i.map(u=>({color:null,description:null,id:null,name:u})))??[]}},xt=e=>({name:e.name,id:e.id}),M=class extends D{async getJiraResourcesForCurrentUser(r={}){return{data:(await this.config.request({url:`${r.baseUrl||"https://api.atlassian.com/"}/oauth/token/accessible-resources`,headers:h(r.token||this.config.token)})).body.map(s=>({avatarUrl:s.avatarUrl,id:s.id,name:s.name}))}}async getJiraProjectsForResource(r,t={}){let s=new URL(`${t.baseUrl||Y}/${r.resourceId}/rest/api/2/project/search`);s.searchParams.set("maxResults",$e.toString()),r.cursor&&s.searchParams.set("startAt",r.cursor);let n=await this.config.request({url:s.toString(),headers:h(t.token||this.config.token)});return{pageInfo:{hasNextPage:n.body.values.length!==0,endCursor:(n.body.startAt+n.body.values.length).toString()},data:n.body.values.map(a=>({id:a.id,name:a.name,resourceId:r.resourceId}))}}async getJiraProjectsForResources(r,t={}){let s=[];return await Promise.all(r.resourceIds.map(async n=>{let a=await this.getJiraProjectsForResource({resourceId:n},t);s.push(...a.data)})),{data:s}}async getIssuesForProject(r,t={}){let{assigneeLogins:s,authorLogin:n,mentionLogin:a,project:o}=r||{},i=[`project = "${o}"`];return n&&i.push(`creator in (${n})`),s&&i.push(`assignee in (${s.join(", ")})`),a&&i.push(`comment ~ ${a}`),{data:(await this.config.request({url:`${t.baseUrl||Y}/${r.resourceId}/rest/api/2/search?jql=${i.join(" AND ")}&startAt=0&maxResults=${$e}&fields=${["assignee","comment","summary","created","creator","updated","votes","issuetype","status","labels"].join(",")}&expand=transitions`,headers:h(t.token||this.config.token)})).body.issues.map(Gt)}}async setIssueStatus(r,t={}){let{resourceId:s,issueId:n,status:a}=r,o={transition:{id:a}};try{await this.config.request({method:"POST",url:`${t.baseUrl||Y}/${s}/rest/api/2/issue/${n}/transitions`,body:JSON.stringify(o),headers:{...h(t.token||this.config.token),"Content-Type":"application/json"}})}catch(i){if(i.message=="Unexpected end of JSON input")return;throw new Error("Could not set issue status")}}async getLabelsForResource(r,t={}){let{resourceId:s,cursor:n}=r,a=new URL(`${t.baseUrl||Y}/${s}/rest/api/2/label`);a.searchParams.set("maxResults",$e.toString()),n&&a.searchParams.set("startAt",n);let o=await this.config.request({url:a.toString(),headers:h(t.token||this.config.token)});return{pageInfo:{hasNextPage:!o.body.isLast,endCursor:(o.body.startAt+o.body.values.length).toString()},data:o.body.values.map(i=>({color:null,description:null,id:null,name:i}))}}};var z="https://api.trello.com",Tt=1e3,Ot=(e,r)=>{let t=new Date(1e3*parseInt(e.id.substring(0,8),16));return{id:e.id,commentCount:e.badges.comments,number:e.idShort.toString(),title:e.name,url:e.url,createdDate:new Date(t.toISOString()),author:null,updatedDate:new Date(e.dateLastActivity),assignees:e.idMembers.map(s=>({id:s,username:null,name:null,email:null,avatarUrl:null})),description:null,state:r[e.idList??""]?{name:r[e.idList].name,color:null}:null,type:null,repository:null,upvoteCount:e.badges.votes,labels:e.labels.map(s=>({color:s.color,description:null,id:s.id,name:s.name}))}},W=class extends D{async getBoardsForCurrentUser(r,t={}){return{data:(await this.config.request({url:`${t.baseUrl||z}/1/members/me/boards?fields=name&key=${r.appKey}&token=${t.token||this.config.token}&filter=open`,headers:h(t.token||this.config.token)})).body.map(n=>({id:n.id,name:n.name}))}}async getListsForTrelloBoard(r,t={}){let{appKey:s,boardId:n}=r;return{data:(await this.config.request({url:`${t.baseUrl||z}/1/boards/${n}/lists?key=${s}&token=${t.token||this.config.token}`,headers:h(t.token||this.config.token)})).body}}async getIssuesForBoard(r,t={}){let s=["-is:archived","sort:edited"],{appKey:n,boardId:a,filterText:o,assigneeLogins:i,trelloBoardListsById:u}=r||{};i&&s.push("@me");let l=`${o?`${o}`:""}${s.join(" ")} board:${a}`;return{data:(await this.config.request({url:`${t.baseUrl||z}/1/search?key=${n}&query=${l}&cards_limit=${Tt}&token=${t.token||this.config.token}`,headers:h(t.token||this.config.token)})).body.cards.map(d=>Ot(d,u||{}))}}async setIssueStatus(r,t={}){let{appKey:s,cardId:n,status:a}=r;if(!(await this.config.request({method:"PUT",url:`${t.baseUrl||z}/1/cards/${n}?key=${s}&token=${t.token||this.config.token}&idList=${a}`,headers:h(t.token||this.config.token)})).body.id)throw new Error("Could not set issue status")}async getLabelsForBoard(r,t={}){let{appKey:s,boardId:n}=r;return{data:(await this.config.request({url:`${t.baseUrl||z}/1/boards/${n}/labels?key=${s}&token=${t.token||this.config.token}`,headers:h(t.token||this.config.token)})).body.map(o=>({color:o.color,description:null,id:o.id,name:o.name}))}}};var ee={};G(ee,{getIssueUniqueId:()=>At,getPullRequestUniqueId:()=>kt});var At=(e,r,t,s="")=>{let n=[];return n.push(s),n.push(e),n.push(r),n.push(t),JSON.stringify(n)},kt=(e,r,t,s,n="")=>{let a=[];return a.push(n),a.push(e),a.push(r),a.push(t),a.push(s),JSON.stringify(a)};var te={};G(te,{getIssueUniqueId:()=>_t,getPullRequestUniqueId:()=>Qt});var _t=(e,r)=>JSON.stringify(["",e,r]),Qt=(e,r)=>JSON.stringify(["",e,r]);var re={};G(re,{getIssueUniqueId:()=>Nt,getPullRequestUniqueId:()=>jt});var Nt=(e,r,t)=>JSON.stringify([t,e,r]),jt=(e,r,t)=>JSON.stringify([t,e,r]);var se={};G(se,{getIssueUniqueId:()=>Bt,getPullRequestRank:()=>Mt,getPullRequestUniqueId:()=>Ft});var Bt=(e,r="")=>{let t=[];return t.push(r),t.push(e),JSON.stringify(t)},Ft=(e,r="")=>{let t=[];return t.push(r),t.push(e),JSON.stringify(t)},Mt=(e,r,t)=>{var o,i,u;let s=0,n,a;return(o=e.reviews)==null||o.forEach(l=>{l.reviewer.id===r&&(n=l.state),l.state==="CHANGES_REQUESTED"?a="CHANGES_REQUESTED":l.state==="APPROVED"&&a!=="CHANGES_REQUESTED"&&(a="APPROVED")}),a||(a="REVIEW_REQUESTED"),((i=e.author)==null?void 0:i.id)===r?s+=1e3:(u=e.assignees)!=null&&u.find(l=>l.id===r)?s+=900:n==="REVIEW_REQUESTED"?s+=800:t&&(s+=700),a==="APPROVED"?e.mergeableState==="MERGEABLE"?s+=100:e.mergeableState==="CONFLICTS"?s+=90:s+=80:a=="CHANGES_REQUESTED"&&(s+=70),s};var ne={};G(ne,{getIssueUniqueId:()=>zt,getPullRequestUniqueId:()=>Wt});var zt=(e,r="")=>{let t=[];return t.push(r),t.push(e),JSON.stringify(t)},Wt=(e,r="")=>{let t=[];return t.push(r),t.push(e),JSON.stringify(t)};var oe={};G(oe,{getIssueUniqueId:()=>Ht,getJiraServerIssueUniqueId:()=>Jt});var Ht=(e,r,t)=>{let s=[];return s.push(""),s.push(e),s.push(r),s.push(t),JSON.stringify(s)},Jt=(e,r,t)=>{let s=[];return s.push(t),s.push(""),s.push(e),s.push(r),JSON.stringify(s)};var ae={};G(ae,{getIssueUniqueId:()=>Vt});var Vt=(e,r,t,s="")=>{let n=[];return n.push(s),n.push(e),n.push(r),n.push(t),JSON.stringify(n)};var Xt=e=>{let r={request:e==null?void 0:e.request};return{azureDevOps:new _({...r,...e==null?void 0:e.azureDevOps}),bitbucket:new Q({...r,...e==null?void 0:e.bitbucket}),bitbucketServer:new N({...r,...e==null?void 0:e.bitbucketServer}),github:new j({...r,...e==null?void 0:e.github}),gitlab:new F({...r,...e==null?void 0:e.gitlab}),jira:new M({...r,...e==null?void 0:e.jira}),trello:new W({...r,...e==null?void 0:e.trello})}},Kt=Xt;var Zt={azureDevOps:ee,bitbucket:te,bitbucketServer:re,github:se,gitlab:ne,jira:oe,trello:ae};
810
+ `,variables:{fullPath:`${s}/${n}`,after:a}},t);return{pageInfo:((l=(u=(i=o.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=o.body.data)==null?void 0:p.project)==null?void 0:d.labels)==null?void 0:c.nodes)==null?void 0:g.map(Ue))??[]}}};var z="https://api.atlassian.com/ex/jira",Se=100,Gt=e=>{var t,s,n,a,o,i;let r=e.fields.assignee;return{id:e.id,commentCount:e.fields.comment.comments.length,number:e.key,title:e.fields.summary,url:e.self,createdDate:new Date(e.fields.created),author:{id:e.fields.creator.accountId,name:e.fields.creator.displayName,email:e.fields.creator.emailAddress,avatarUrl:e.fields.creator.avatarUrls["32x32"],username:e.fields.creator.displayName},updatedDate:new Date(e.fields.updated),assignees:r?[{id:r.accountId,name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrls["32x32"],username:r.displayName}]:[],description:null,repository:null,state:{name:(t=e.fields.status)==null?void 0:t.name,color:(n=(s=e.fields.status)==null?void 0:s.statusCategory)==null?void 0:n.colorName},statusTransitions:((a=e.transitions)==null?void 0:a.map(xt))??[],type:e.fields.issuetype.name,upvoteCount:((o=e.fields.votes)==null?void 0:o.votes)||0,labels:((i=e.fields.labels)==null?void 0:i.map(u=>({color:null,description:null,id:null,name:u})))??[]}},xt=e=>({name:e.name,id:e.id}),W=class extends D{async getCurrentUserForResource(r,t={}){let s=await this.config.request({url:`${t.baseUrl||z}/${r.resourceId}/rest/api/2/myself`,headers:m(t.token||this.config.token)});return{data:{name:s.body.displayName,email:s.body.emailAddress,avatarUrl:s.body.avatarUrls["48x48"],id:s.body.accountId,username:s.body.displayName}}}async getJiraResourcesForCurrentUser(r={}){return{data:(await this.config.request({url:`${r.baseUrl||"https://api.atlassian.com/"}/oauth/token/accessible-resources`,headers:m(r.token||this.config.token)})).body.map(s=>({avatarUrl:s.avatarUrl,id:s.id,name:s.name}))}}async getJiraProjectsForResource(r,t={}){let s=new URL(`${t.baseUrl||z}/${r.resourceId}/rest/api/2/project/search`);s.searchParams.set("maxResults",Se.toString()),r.cursor&&s.searchParams.set("startAt",r.cursor);let n=await this.config.request({url:s.toString(),headers:m(t.token||this.config.token)});return{pageInfo:{hasNextPage:n.body.values.length!==0,endCursor:(n.body.startAt+n.body.values.length).toString()},data:n.body.values.map(a=>({id:a.id,name:a.name,resourceId:r.resourceId}))}}async getJiraProjectsForResources(r,t={}){let s=[];return await Promise.all(r.resourceIds.map(async n=>{let a=await this.getJiraProjectsForResource({resourceId:n},t);s.push(...a.data)})),{data:s}}async getIssuesForProject(r,t={}){let{assigneeLogins:s,authorLogin:n,mentionLogin:a,project:o}=r||{},i=[`project = "${o}"`];return n&&i.push(`creator in (${n})`),s&&i.push(`assignee in (${s.join(", ")})`),a&&i.push(`comment ~ ${a}`),{data:(await this.config.request({url:`${t.baseUrl||z}/${r.resourceId}/rest/api/2/search?jql=${i.join(" AND ")}&startAt=0&maxResults=${Se}&fields=${["assignee","comment","summary","created","creator","updated","votes","issuetype","status","labels"].join(",")}&expand=transitions`,headers:m(t.token||this.config.token)})).body.issues.map(Gt)}}async setIssueStatus(r,t={}){let{resourceId:s,issueId:n,status:a}=r,o={transition:{id:a}};try{await this.config.request({method:"POST",url:`${t.baseUrl||z}/${s}/rest/api/2/issue/${n}/transitions`,body:JSON.stringify(o),headers:{...m(t.token||this.config.token),"Content-Type":"application/json"}})}catch(i){if(i.message=="Unexpected end of JSON input")return;throw new Error("Could not set issue status")}}async getLabelsForResource(r,t={}){let{resourceId:s,cursor:n}=r,a=new URL(`${t.baseUrl||z}/${s}/rest/api/2/label`);a.searchParams.set("maxResults",Se.toString()),n&&a.searchParams.set("startAt",n);let o=await this.config.request({url:a.toString(),headers:m(t.token||this.config.token)});return{pageInfo:{hasNextPage:!o.body.isLast,endCursor:(o.body.startAt+o.body.values.length).toString()},data:o.body.values.map(i=>({color:null,description:null,id:null,name:i}))}}};var _="https://api.trello.com",Tt=1e3,Ot=(e,r)=>{let t=new Date(1e3*parseInt(e.id.substring(0,8),16));return{id:e.id,commentCount:e.badges.comments,number:e.idShort.toString(),title:e.name,url:e.url,createdDate:new Date(t.toISOString()),author:null,updatedDate:new Date(e.dateLastActivity),assignees:e.idMembers.map(s=>({id:s,username:null,name:null,email:null,avatarUrl:null})),description:null,state:r[e.idList??""]?{name:r[e.idList].name,color:null}:null,type:null,repository:null,upvoteCount:e.badges.votes,labels:e.labels.map(s=>({color:s.color,description:null,id:s.id,name:s.name}))}},H=class extends D{async getCurrentUser(r,t={}){let s=await this.config.request({url:`${t.baseUrl||_}/1/members/me?key=${r.appKey}&token=${t.token||this.config.token}`,headers:m(t.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,t={}){return{data:(await this.config.request({url:`${t.baseUrl||_}/1/members/me/boards?fields=name&key=${r.appKey}&token=${t.token||this.config.token}&filter=open`,headers:m(t.token||this.config.token)})).body.map(n=>({id:n.id,name:n.name}))}}async getListsForTrelloBoard(r,t={}){let{appKey:s,boardId:n}=r;return{data:(await this.config.request({url:`${t.baseUrl||_}/1/boards/${n}/lists?key=${s}&token=${t.token||this.config.token}`,headers:m(t.token||this.config.token)})).body}}async getIssuesForBoard(r,t={}){let s=["-is:archived","sort:edited"],{appKey:n,boardId:a,filterText:o,assigneeLogins:i,trelloBoardListsById:u}=r||{};i&&s.push("@me");let l=`${o?`${o}`:""}${s.join(" ")} board:${a}`;return{data:(await this.config.request({url:`${t.baseUrl||_}/1/search?key=${n}&query=${l}&cards_limit=${Tt}&token=${t.token||this.config.token}`,headers:m(t.token||this.config.token)})).body.cards.map(d=>Ot(d,u||{}))}}async setIssueStatus(r,t={}){let{appKey:s,cardId:n,status:a}=r;if(!(await this.config.request({method:"PUT",url:`${t.baseUrl||_}/1/cards/${n}?key=${s}&token=${t.token||this.config.token}&idList=${a}`,headers:m(t.token||this.config.token)})).body.id)throw new Error("Could not set issue status")}async getLabelsForBoard(r,t={}){let{appKey:s,boardId:n}=r;return{data:(await this.config.request({url:`${t.baseUrl||_}/1/boards/${n}/labels?key=${s}&token=${t.token||this.config.token}`,headers:m(t.token||this.config.token)})).body.map(o=>({color:o.color,description:null,id:o.id,name:o.name}))}}};var ee={};G(ee,{getIssueUniqueId:()=>At,getPullRequestUniqueId:()=>kt});var At=(e,r,t,s="")=>{let n=[];return n.push(s),n.push(e),n.push(r),n.push(t),JSON.stringify(n)},kt=(e,r,t,s,n="")=>{let a=[];return a.push(n),a.push(e),a.push(r),a.push(t),a.push(s),JSON.stringify(a)};var te={};G(te,{getIssueUniqueId:()=>_t,getPullRequestUniqueId:()=>Nt});var _t=(e,r)=>JSON.stringify(["",e,r]),Nt=(e,r)=>JSON.stringify(["",e,r]);var re={};G(re,{getIssueUniqueId:()=>Qt,getPullRequestUniqueId:()=>jt});var Qt=(e,r,t)=>JSON.stringify([t,e,r]),jt=(e,r,t)=>JSON.stringify([t,e,r]);var se={};G(se,{getIssueUniqueId:()=>Bt,getPullRequestRank:()=>Mt,getPullRequestUniqueId:()=>Ft});var Bt=(e,r="")=>{let t=[];return t.push(r),t.push(e),JSON.stringify(t)},Ft=(e,r="")=>{let t=[];return t.push(r),t.push(e),JSON.stringify(t)},Mt=(e,r,t)=>{var o,i,u;let s=0,n,a;return(o=e.reviews)==null||o.forEach(l=>{l.reviewer.id===r&&(n=l.state),l.state==="CHANGES_REQUESTED"?a="CHANGES_REQUESTED":l.state==="APPROVED"&&a!=="CHANGES_REQUESTED"&&(a="APPROVED")}),a||(a="REVIEW_REQUESTED"),((i=e.author)==null?void 0:i.id)===r?s+=1e3:(u=e.assignees)!=null&&u.find(l=>l.id===r)?s+=900:n==="REVIEW_REQUESTED"?s+=800:t&&(s+=700),a==="APPROVED"?e.mergeableState==="MERGEABLE"?s+=100:e.mergeableState==="CONFLICTS"?s+=90:s+=80:a=="CHANGES_REQUESTED"&&(s+=70),s};var ne={};G(ne,{getIssueUniqueId:()=>zt,getPullRequestUniqueId:()=>Wt});var zt=(e,r="")=>{let t=[];return t.push(r),t.push(e),JSON.stringify(t)},Wt=(e,r="")=>{let t=[];return t.push(r),t.push(e),JSON.stringify(t)};var oe={};G(oe,{getIssueUniqueId:()=>Ht,getJiraServerIssueUniqueId:()=>Jt});var Ht=(e,r,t)=>{let s=[];return s.push(""),s.push(e),s.push(r),s.push(t),JSON.stringify(s)},Jt=(e,r,t)=>{let s=[];return s.push(t),s.push(""),s.push(e),s.push(r),JSON.stringify(s)};var ae={};G(ae,{getIssueUniqueId:()=>Vt});var Vt=(e,r,t,s="")=>{let n=[];return n.push(s),n.push(e),n.push(r),n.push(t),JSON.stringify(n)};var Kt=e=>{let r={request:e==null?void 0:e.request};return{azureDevOps:new N({...r,...e==null?void 0:e.azureDevOps}),bitbucket:new Q({...r,...e==null?void 0:e.bitbucket}),bitbucketServer:new j({...r,...e==null?void 0:e.bitbucketServer}),github:new B({...r,...e==null?void 0:e.github}),gitlab:new M({...r,...e==null?void 0:e.gitlab}),jira:new W({...r,...e==null?void 0:e.jira}),trello:new H({...r,...e==null?void 0:e.trello})}},Xt=Kt;var Zt={azureDevOps:ee,bitbucket:te,bitbucketServer:re,github:se,gitlab:ne,jira:oe,trello:ae};
@@ -13,6 +13,17 @@ export interface JiraProject {
13
13
  resourceId: string;
14
14
  }
15
15
  export declare class Jira extends Provider {
16
+ getCurrentUserForResource(input: {
17
+ resourceId: string;
18
+ }, options?: EnterpriseOptions): Promise<{
19
+ data: {
20
+ name: string;
21
+ email: string;
22
+ avatarUrl: string;
23
+ id: string;
24
+ username: string;
25
+ };
26
+ }>;
16
27
  getJiraResourcesForCurrentUser(options?: EnterpriseOptions): Promise<Result<JiraResource[]>>;
17
28
  getJiraProjectsForResource(input: {
18
29
  resourceId: string;
@@ -25,6 +25,17 @@ export interface TrelloBoard {
25
25
  name: string;
26
26
  }
27
27
  export declare class Trello extends Provider {
28
+ getCurrentUser(input: {
29
+ appKey: string;
30
+ }, options?: EnterpriseOptions): Promise<{
31
+ data: {
32
+ name: string;
33
+ email: string;
34
+ avatarUrl: string | null;
35
+ id: string;
36
+ username: string;
37
+ };
38
+ }>;
28
39
  getBoardsForCurrentUser(input: {
29
40
  appKey: string;
30
41
  }, options?: EnterpriseOptions): Promise<Result<TrelloBoard[]>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitkraken/provider-apis",
3
- "version": "0.11.1",
3
+ "version": "0.12.0",
4
4
  "description": "An SDK around different third-party APIs that accepts and returns data in a common format.",
5
5
  "author": "Axosoft, LLC dba GitKraken",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -29,12 +29,12 @@
29
29
  "watch": "yarn clean && node ./scripts/build.mjs --watch & tsc -w"
30
30
  },
31
31
  "dependencies": {
32
- "node-fetch": "2.6.9"
32
+ "node-fetch": "2.7.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/chai": "^4.3.5",
36
36
  "@types/mocha": "^10.0.1",
37
- "@types/node-fetch": "^2.6.4",
37
+ "@types/node-fetch": "^2.6.9",
38
38
  "@types/sinon": "^10.0.15",
39
39
  "@typescript-eslint/eslint-plugin": "^5.59.9",
40
40
  "@typescript-eslint/parser": "^5.59.9",