@gitkraken/provider-apis 0.12.2 → 0.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.12.3
4
+
5
+ - added `getPullRequestsForUser` (BitBucket)
6
+ - fixed error on `setIssueStatus` success if using `window.fetch` (Jira)
7
+
3
8
  ## 0.12.2
4
9
 
5
10
  - added `EXAMPLES.md` file which contains snippets that demonstrate how to use each function in the library. this document is a work in progress and will be updated as time goes on
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Ze=Object.create;var K=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var et=Object.getOwnPropertyNames;var tt=Object.getPrototypeOf,rt=Object.prototype.hasOwnProperty;var x=(e,r)=>{for(var t in r)K(e,t,{get:r[t],enumerable:!0})},Te=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of et(r))!rt.call(e,n)&&n!==t&&K(e,n,{get:()=>r[n],enumerable:!(s=Ye(r,n))||s.enumerable});return e};var st=(e,r,t)=>(t=e!=null?Ze(tt(e)):{},Te(r||!e||!e.__esModule?K(t,"default",{value:e,enumerable:!0}):t,e)),nt=e=>Te(K({},"__esModule",{value:!0}),e);var rr={};x(rr,{AzureDevOps:()=>B,AzureDevopsUtils:()=>te,Bitbucket:()=>j,BitbucketServer:()=>F,BitbucketServerUtils:()=>se,BitbucketUtils:()=>re,GitHub:()=>M,GitHubUtils:()=>ne,GitLab:()=>W,GitLabUtils:()=>oe,Jira:()=>J,JiraUtils:()=>ae,Trello:()=>V,TrelloUtils:()=>ie,Utils:()=>tr,default:()=>er});module.exports=nt(rr);var C=100;var Ae=st(require("node-fetch")),Oe=globalThis.fetch||Ae.default;var ke=e=>e.name==="fetch";var ot=async e=>{let r=e.headers.get("content-type")||"",t=null;if(r.startsWith("application/json"))e.body!==null&&(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},le=e=>ke(e)?async({url:r,...t})=>{let s=await e(r,t);return ot(s)}:e;var $=class{constructor(r){this.config={...r,request:le((r==null?void 0:r.request)||Oe)}}updateConfig(r){this.config={...this.config,...r,request:r.request?le(r.request):this.config.request}}},T=class extends ${};var m=(e,r)=>{let t={};return e&&(t.Authorization=`${r?"Basic":"Bearer"} ${e}`),t};var w=(e,r={})=>m(r.token||e.token,r.isPAT||e.isPAT),_e=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 Ne="https://app.vssps.visualstudio.com/_apis",D="https://dev.azure.com",at={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},it={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},pe=e=>({id:e.id,name:e.displayName,username:e.uniqueName||e.displayName,email:null,avatarUrl:e.imageUrl}),X=e=>e.startsWith("refs/heads/")?e.replace("refs/heads/",""):e,Qe=e=>{var r;return{id:e.pullRequestId.toString(),title:e.title,number:e.codeReviewId,state:at[e.status],isDraft:e.isDraft,commentCount:null,upvoteCount:null,author:pe(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:X(e.targetRefName),oid:e.lastMergeTargetCommit.commitId},headRef:{name:X(e.sourceRefName),oid:e.lastMergeSourceCommit.commitId},url:_e(e),assignees:e.reviewers.map(pe),reviews:e.reviewers.filter(t=>t.vote!==0).map(t=>({reviewer:pe(t),state:it[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})))??[]}},Be=(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:X(r.defaultBranch)}:null,permission:null}),ut=(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()})))??[]}},B=class extends ${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:`${Ne}/profile/profiles/me`,headers:w(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:`${D}/${encodeURIComponent(r.namespace)}/_apis/ConnectionData`,headers:w(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:`${D}/${encodeURIComponent(r.repo.namespace)}/${encodeURIComponent(r.repo.project)}/_apis/git/repositories/${encodeURIComponent(r.repo.name)}/commits/${r.oid}`,headers:w(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:`${Ne}/accounts?memberId=${r.userId}&api-version=6.0`,headers:w(this.config,t)})).body.value.map(n=>({id:n.accountId,name:n.accountName}))}}async getAzureProjects(r,t={}){let s=new URL(`${D}/${encodeURIComponent(r.namespace)}/_apis/projects`);s.searchParams.set("$top",C.toString()),r.cursor&&s.searchParams.set("$skip",r.cursor);let n=await this.config.request({url:s.toString(),headers:w(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:`${D}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/git/repositories/${encodeURIComponent(r.name)}`,headers:w(this.config,t)});return{data:Be(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:`${D}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/git/repositories`,headers:w(this.config,t)})).body.value.map(n=>Be(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(`${D}/${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",C.toString()),t.cursor&&n.searchParams.set("continuationToken",t.cursor);let a=await this.config.request({url:n.toString(),headers:w(this.config,s)}),o=a.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!o,endCursor:o||null},data:a.body.value.map(i=>({name:X(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||D}/${encodeURIComponent(a.namespace)}/${encodeURIComponent(a.project||"")}/_apis/git/repositories/${encodeURIComponent(a.name)}/pullRequests?${l}&%24top=${s}&%24skip=${(u-1)*s}`,headers:w(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(Qe)}}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(Qe(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||D}/${encodeURIComponent(a)}/${encodeURIComponent(o||"")}/_apis/git/repositories/${i}/pullrequests/${t}?api-version=6.0`,body:s,headers:{...w(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||D}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/wit/wiql?api-version=6.0`,body:JSON.stringify({query:d}),method:"POST",headers:{...w(this.config,t),"Content-Type":"application/json"}}),g=c.body.workItems.slice((u-1)*l,l*u).map(I=>I.id);if(g.length==0)return{pageInfo:{hasNextPage:!1,nextPage:null},data:[]};let R=await this.config.request({url:`${t.baseUrl||D}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/wit/workitemsbatch?api-version=6.0`,body:JSON.stringify({ids:g,$expand:"Links"}),method:"POST",headers:{...w(this.config,t),"Content-Type":"application/json"}});return{pageInfo:{hasNextPage:c.body.workItems.length>l*u,nextPage:u+1},data:R.body.value.map(I=>ut(I,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||D}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/workitems/${a}?api-version=6.0`,body:JSON.stringify(i),headers:{...w(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||D}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/workitemtypes?api-version=6.0`,headers:{...w(this.config,t)}})).body.value}}async getLabelsForProject(r,t={}){let{namespace:s,project:n}=r;return{data:(await this.config.request({url:`${t.baseUrl||D}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/tags?api-version=6.0`,headers:{...w(this.config,t)}})).body.value.map(o=>({color:null,description:null,id:o.id,name:o.name}))}}};var S=(e,r={})=>m(r.token||e.token,r.isPAT||e.isPAT);var L="https://api.bitbucket.org/2.0",lt={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},Me=e=>({id:e.uuid,name:e.display_name||e.nickname,username:e.nickname||e.display_name,email:null,avatarUrl:e.links.avatar.href}),je=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}},Fe=e=>{let r=e.id;return{id:r.toString(),title:e.title,number:r,state:lt[e.state],isDraft:!1,commentCount:e.comment_count,upvoteCount:null,author:Me(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,oid:e.destination.commit.hash},headRef:{name:e.source.branch.name,oid:e.source.commit.hash},url:e.links.html.href,assignees:null,reviews:null,additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN"}},j=class extends ${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:`${L}/user`,headers:S(this.config,r)});return{data:Me(t.body)}}async getUserForCommit(r,t={}){var o;let n=(await this.config.request({url:`${L}/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:`${L}/repositories/${r.namespace}/${r.name}`,headers:S(this.config,t)});return{data:je(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(`${L}/repositories`);s.searchParams.set("role","member"),s.searchParams.set("pagelen",C.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(je)}}async getBranches(r,t={}){var o;let s=new URL(`${L}/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",C.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(`${L}/repositories/${r.repo.namespace}/${r.repo.name}/refs/tags`);s.searchParams.set("pagelen",C.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(`${L}/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(Fe(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(Fe(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:`${L}/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:`${L}/repositories/${s}/${n}/pullrequests/${a}/merge`,headers:S(this.config,t)})).body.title)throw new Error("Could not merge pull request")}};var F=class extends T{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 ge="https://api.github.com",pt=`${ge}/graphql`,Y=`
1
+ "use strict";var Ze=Object.create;var K=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var et=Object.getOwnPropertyNames;var tt=Object.getPrototypeOf,rt=Object.prototype.hasOwnProperty;var x=(e,r)=>{for(var t in r)K(e,t,{get:r[t],enumerable:!0})},Ae=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of et(r))!rt.call(e,n)&&n!==t&&K(e,n,{get:()=>r[n],enumerable:!(s=Ye(r,n))||s.enumerable});return e};var st=(e,r,t)=>(t=e!=null?Ze(tt(e)):{},Ae(r||!e||!e.__esModule?K(t,"default",{value:e,enumerable:!0}):t,e)),nt=e=>Ae(K({},"__esModule",{value:!0}),e);var rr={};x(rr,{AzureDevOps:()=>B,AzureDevopsUtils:()=>te,Bitbucket:()=>j,BitbucketServer:()=>F,BitbucketServerUtils:()=>se,BitbucketUtils:()=>re,GitHub:()=>M,GitHubUtils:()=>ne,GitLab:()=>W,GitLabUtils:()=>oe,Jira:()=>J,JiraUtils:()=>ae,Trello:()=>V,TrelloUtils:()=>ie,Utils:()=>tr,default:()=>er});module.exports=nt(rr);var C=100;var Oe=st(require("node-fetch")),ke=globalThis.fetch||Oe.default;var _e=e=>e.name==="fetch";var ot=async e=>{let r=e.headers.get("content-type")||"",t=null;if(r.startsWith("application/json"))e.body!==null&&e.size!==0&&(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},le=e=>_e(e)?async({url:r,...t})=>{let s=await e(r,t);return ot(s)}:e;var E=class{constructor(r){this.config={...r,request:le((r==null?void 0:r.request)||ke)}}updateConfig(r){this.config={...this.config,...r,request:r.request?le(r.request):this.config.request}}},T=class extends E{};var m=(e,r)=>{let t={};return e&&(t.Authorization=`${r?"Basic":"Bearer"} ${e}`),t};var w=(e,r={})=>m(r.token||e.token,r.isPAT||e.isPAT),Ne=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 Qe="https://app.vssps.visualstudio.com/_apis",$="https://dev.azure.com",at={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},it={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},pe=e=>({id:e.id,name:e.displayName,username:e.uniqueName||e.displayName,email:null,avatarUrl:e.imageUrl}),X=e=>e.startsWith("refs/heads/")?e.replace("refs/heads/",""):e,Be=e=>{var r;return{id:e.pullRequestId.toString(),title:e.title,number:e.codeReviewId,state:at[e.status],isDraft:e.isDraft,commentCount:null,upvoteCount:null,author:pe(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:X(e.targetRefName),oid:e.lastMergeTargetCommit.commitId},headRef:{name:X(e.sourceRefName),oid:e.lastMergeSourceCommit.commitId},url:Ne(e),assignees:e.reviewers.map(pe),reviews:e.reviewers.filter(t=>t.vote!==0).map(t=>({reviewer:pe(t),state:it[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})))??[]}},je=(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:X(r.defaultBranch)}:null,permission:null}),ut=(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()})))??[]}},B=class extends E{async getCurrentUser(r={}){if(r.isPAT||this.config.isPAT)throw new Error("Azure DevOps does not support PATs for this function.");let t=await this.config.request({url:`${Qe}/profile/profiles/me`,headers:w(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:`${$}/${encodeURIComponent(r.namespace)}/_apis/ConnectionData`,headers:w(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:`${$}/${encodeURIComponent(r.repo.namespace)}/${encodeURIComponent(r.repo.project)}/_apis/git/repositories/${encodeURIComponent(r.repo.name)}/commits/${r.oid}`,headers:w(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:`${Qe}/accounts?memberId=${r.userId}&api-version=6.0`,headers:w(this.config,t)})).body.value.map(n=>({id:n.accountId,name:n.accountName}))}}async getAzureProjects(r,t={}){let s=new URL(`${$}/${encodeURIComponent(r.namespace)}/_apis/projects`);s.searchParams.set("$top",C.toString()),r.cursor&&s.searchParams.set("$skip",r.cursor);let n=await this.config.request({url:s.toString(),headers:w(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:`${$}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/git/repositories/${encodeURIComponent(r.name)}`,headers:w(this.config,t)});return{data:je(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:`${$}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/git/repositories`,headers:w(this.config,t)})).body.value.map(n=>je(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(`${$}/${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",C.toString()),t.cursor&&n.searchParams.set("continuationToken",t.cursor);let a=await this.config.request({url:n.toString(),headers:w(this.config,s)}),o=a.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!o,endCursor:o||null},data:a.body.value.map(i=>({name:X(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||$}/${encodeURIComponent(a.namespace)}/${encodeURIComponent(a.project||"")}/_apis/git/repositories/${encodeURIComponent(a.name)}/pullRequests?${l}&%24top=${s}&%24skip=${(u-1)*s}`,headers:w(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(Be)}}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(Be(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||$}/${encodeURIComponent(a)}/${encodeURIComponent(o||"")}/_apis/git/repositories/${i}/pullrequests/${t}?api-version=6.0`,body:s,headers:{...w(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||$}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/wit/wiql?api-version=6.0`,body:JSON.stringify({query:d}),method:"POST",headers:{...w(this.config,t),"Content-Type":"application/json"}}),g=c.body.workItems.slice((u-1)*l,l*u).map(I=>I.id);if(g.length==0)return{pageInfo:{hasNextPage:!1,nextPage:null},data:[]};let R=await this.config.request({url:`${t.baseUrl||$}/${encodeURIComponent(r.namespace)}/${encodeURIComponent(r.project)}/_apis/wit/workitemsbatch?api-version=6.0`,body:JSON.stringify({ids:g,$expand:"Links"}),method:"POST",headers:{...w(this.config,t),"Content-Type":"application/json"}});return{pageInfo:{hasNextPage:c.body.workItems.length>l*u,nextPage:u+1},data:R.body.value.map(I=>ut(I,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||$}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/workitems/${a}?api-version=6.0`,body:JSON.stringify(i),headers:{...w(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||$}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/workitemtypes?api-version=6.0`,headers:{...w(this.config,t)}})).body.value}}async getLabelsForProject(r,t={}){let{namespace:s,project:n}=r;return{data:(await this.config.request({url:`${t.baseUrl||$}/${encodeURIComponent(s)}/${encodeURIComponent(n||"")}/_apis/wit/tags?api-version=6.0`,headers:{...w(this.config,t)}})).body.value.map(o=>({color:null,description:null,id:o.id,name:o.name}))}}};var S=(e,r={})=>m(r.token||e.token,r.isPAT||e.isPAT);var U="https://api.bitbucket.org/2.0",lt={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},Me=e=>({id:e.uuid,name:e.display_name||e.nickname,username:e.nickname||e.display_name,email:null,avatarUrl:e.links.avatar.href}),Fe=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}},ge=e=>{let r=e.id;return{id:r.toString(),title:e.title,number:r,state:lt[e.state],isDraft:!1,commentCount:e.comment_count,upvoteCount:null,author:Me(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,oid:e.destination.commit.hash},headRef:{name:e.source.branch.name,oid:e.source.commit.hash},url:e.links.html.href,assignees:null,reviews:null,additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN"}},j=class extends E{async refreshToken(r){return{data:(await this.config.request({url:"https://bitbucket.org/site/oauth2/access_token",method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Authorization:`Basic ${r.base64ClientIDColonClientSecret}`},body:`grant_type=refresh_token&refresh_token=${r.refreshToken}`})).body}}async getCurrentUser(r={}){let t=await this.config.request({url:`${U}/user`,headers:S(this.config,r)});return{data:Me(t.body)}}async getUserForCommit(r,t={}){var o;let n=(await this.config.request({url:`${U}/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:`${U}/repositories/${r.namespace}/${r.name}`,headers:S(this.config,t)});return{data:Fe(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(`${U}/repositories`);s.searchParams.set("role","member"),s.searchParams.set("pagelen",C.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(Fe)}}async getBranches(r,t={}){var o;let s=new URL(`${U}/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",C.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(`${U}/repositories/${r.repo.namespace}/${r.repo.name}/refs/tags`);s.searchParams.set("pagelen",C.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 getPullRequestsForUser(r,t={}){var o;let s=new URL(`${U}/pullrequests/${r.userId}`);s.searchParams.set("page",((o=r.page)==null?void 0:o.toString())||"1"),s.searchParams.set("pagelen","50");let n=await this.config.request({url:`${U}/pullrequests/${r.userId}`,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(ge)}}async getPullRequestsForRepoBase(r,t={}){var n;let s=new URL(`${U}/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(ge(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(ge(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:`${U}/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:`${U}/repositories/${s}/${n}/pullrequests/${a}/merge`,headers:S(this.config,t)})).body.title)throw new Error("Could not merge pull request")}};var F=class extends T{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 me="https://api.github.com",pt=`${me}/graphql`,Y=`
2
2
  description
3
3
  dueOn
4
4
  id
@@ -11,7 +11,7 @@ color
11
11
  description
12
12
  id
13
13
  name
14
- `,dt=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.")},ct=(e,r)=>{let t=r.baseUrl||e.baseUrl;return t?(t=t.replace(/\/$/,""),dt(t),ze.test(t)&&(t=t.replace(ze,"")),`${t}/api/graphql`):pt},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:ct(e,t),method:"POST",headers:s,body:JSON.stringify(r)})},gt={user:!0,"user:email":!0,"read:user":!0},k=e=>e.some(r=>gt[r]),U=(e=!1,r=!1)=>`
14
+ `,dt=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.")},ct=(e,r)=>{let t=r.baseUrl||e.baseUrl;return t?(t=t.replace(/\/$/,""),dt(t),ze.test(t)&&(t=t.replace(ze,"")),`${t}/api/graphql`):pt},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:ct(e,t),method:"POST",headers:s,body:JSON.stringify(r)})},gt={user:!0,"user:email":!0,"read:user":!0},k=e=>e.some(r=>gt[r]),q=(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
+ ${q(!1,r)}
37
37
  }
38
38
  ... on Bot {
39
39
  ${We(!1)}
@@ -96,7 +96,7 @@ updatedAt
96
96
  closedAt
97
97
  assignees(first: 100) {
98
98
  nodes {
99
- ${U(!1,r)}
99
+ ${q(!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
+ ${q(!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
+ ${q(!1,r)}
117
117
  }
118
118
  }
119
119
  state
@@ -137,7 +137,7 @@ databaseId
137
137
  title
138
138
  author {
139
139
  ... on User {
140
- ${U(!1,e)}
140
+ ${q(!1,e)}
141
141
  }
142
142
  ... on Bot {
143
143
  ${We(!1)}
@@ -161,7 +161,7 @@ comments {
161
161
  }
162
162
  assignees(first: 100) {
163
163
  nodes {
164
- ${U(!1,e)}
164
+ ${q(!1,e)}
165
165
  }
166
166
  }
167
167
  state
@@ -173,7 +173,7 @@ labels(first: 100) {
173
173
  ${ee}
174
174
  }
175
175
  }
176
- `,ft={"-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"},Rt=new RegExp('(([^\\s]+:)?\\"(?:[^\\"\\\\]|\\\\.)*\\"?)|([^\\"\\s]+)',"g"),me=e=>{let r=[];return(e.match(Rt)??[]).forEach(s=>{if(s.includes(":")&&s!="is:closed"){let n=s.split(":")[0];ft[n]&&r.push(s)}}),r},he=(e,r,t,s,n=!1)=>{let a=e==="issue";return{query:`
176
+ `,ft={"-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"},Rt=new RegExp('(([^\\s]+:)?\\"(?:[^\\"\\\\]|\\\\.)*\\"?)|([^\\"\\s]+)',"g"),he=e=>{let r=[];return(e.match(Rt)??[]).forEach(s=>{if(s.includes(":")&&s!="is:closed"){let n=s.split(":")[0];ft[n]&&r.push(s)}}),r},fe=(e,r,t,s,n=!1)=>{let a=e==="issue";return{query:`
177
177
  query SearchIssuesOrPullRequests($query: String! $after: String) {
178
178
  search(type:ISSUE query:$query first:100 after:$after) {
179
179
  pageInfo {
@@ -186,7 +186,7 @@ query SearchIssuesOrPullRequests($query: String! $after: String) {
186
186
  }
187
187
  }
188
188
  }
189
- }`,variables:{query:`is:${e} is:open ${r}`,after:t}}},It="Field 'isDraft' doesn't exist on type 'PullRequest'",He=(e=[])=>e.some(r=>(r==null?void 0:r.message)===It);var fe=`
189
+ }`,variables:{query:`is:${e} is:open ${r}`,after:t}}},It="Field 'isDraft' doesn't exist on type 'PullRequest'",He=(e=[])=>e.some(r=>(r==null?void 0:r.message)===It);var Re=`
190
190
  id
191
191
  databaseId
192
192
  owner {
@@ -199,10 +199,10 @@ defaultBranchRef {
199
199
  name
200
200
  }
201
201
  viewerPermission
202
- `,Ie={__typename:"User",id:"U_kgDNJ5k",databaseId:10137,name:"Deleted user",login:"ghost",email:"",avatarUrl:"https://avatars.githubusercontent.com/u/10137?v=4"},bt={APPROVED:"APPROVED",CHANGES_REQUESTED:"CHANGES_REQUESTED",COMMENTED:"COMMENTED",REVIEW_REQUESTED:"REVIEW_REQUESTED"},yt={MERGEABLE:"MERGEABLE",CONFLICTING:"CONFLICTS",UNKNOWN:"UNKNOWN"},Pt={OPEN:"OPEN",CLOSED:"CLOSED"},be=e=>({color:e.color,description:e.description,graphQLId:e.id,id:null,name:e.name}),Re=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}),wt={OPEN:"OPEN",CLOSED:"CLOSED",MERGED:"MERGED"},G=e=>({id:e.databaseId.toString(),graphQLId:e.id,name:e.name??e.login,username:e.login,email:e.email??null,avatarUrl:e.avatarUrl}),Ct=e=>{var l,p,d,c,g,R,I,P,y,b,v,q;let r=null;e.author?r=(e.author.__typename==="Bot",e.author):r=Ie;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=(((R=e.reviewRequests)==null?void 0:R.nodes)||[]).filter(E=>!E.asCodeOwner),u=(I=e.headRepository)==null?void 0:I.url;return u&&!u.endsWith(".git")&&(u=`${u}.git`),{id:e.databaseId.toString(),graphQLId:e.id,title:e.title,number:e.number,state:wt[e.state],commentCount:e.comments.totalCount,upvoteCount:e.reactions.totalCount,author:r?G(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,oid:((P=e.headRef.target)==null?void 0:P.oid)??null}:null,baseRef:e.baseRef?{name:e.baseRef.name,oid:((y=e.baseRef.target)==null?void 0:y.oid)??null}: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(G):null,reviews:i.map(E=>({reviewer:G(E.requestedReviewer),state:"REVIEW_REQUESTED"})).concat((((b=e.latestReviews)==null?void 0:b.nodes)||[]).map(E=>{let ue=E.author||Ie;return{reviewer:G(ue),state:bt[E.state]}})),additions:e.additions,deletions:e.deletions,fileCount:e.changedFiles,commitCount:e.commits.totalCount,mergeableState:yt[e.mergeable],milestone:e.milestone?ye(e.milestone):null,labels:((q=(v=e.labels)==null?void 0:v.nodes)==null?void 0:q.map(be))??[]}},vt=e=>{var t,s;let r=null;return e.author?r=(e.author.__typename==="Bot",e.author):r=Ie,{id:e.databaseId.toString(),graphQLId:e.id,number:e.number,title:e.title,author:G(r),commentCount:e.comments.totalCount,createdDate:new Date(e.createdAt),description:null,state:{name:Pt[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(G):[],upvoteCount:e.reactions.totalCount,milestone:e.milestone?ye(e.milestone):null,labels:((s=(t=e.labels)==null?void 0:t.nodes)==null?void 0:s.map(be))??[]}},ye=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}),M=class extends T{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(ge)?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:`
202
+ `,be={__typename:"User",id:"U_kgDNJ5k",databaseId:10137,name:"Deleted user",login:"ghost",email:"",avatarUrl:"https://avatars.githubusercontent.com/u/10137?v=4"},bt={APPROVED:"APPROVED",CHANGES_REQUESTED:"CHANGES_REQUESTED",COMMENTED:"COMMENTED",REVIEW_REQUESTED:"REVIEW_REQUESTED"},yt={MERGEABLE:"MERGEABLE",CONFLICTING:"CONFLICTS",UNKNOWN:"UNKNOWN"},Pt={OPEN:"OPEN",CLOSED:"CLOSED"},ye=e=>({color:e.color,description:e.description,graphQLId:e.id,id:null,name:e.name}),Ie=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}),wt={OPEN:"OPEN",CLOSED:"CLOSED",MERGED:"MERGED"},G=e=>({id:e.databaseId.toString(),graphQLId:e.id,name:e.name??e.login,username:e.login,email:e.email??null,avatarUrl:e.avatarUrl}),Ct=e=>{var l,p,d,c,g,R,I,P,y,b,v,L;let r=null;e.author?r=(e.author.__typename==="Bot",e.author):r=be;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=(((R=e.reviewRequests)==null?void 0:R.nodes)||[]).filter(D=>!D.asCodeOwner),u=(I=e.headRepository)==null?void 0:I.url;return u&&!u.endsWith(".git")&&(u=`${u}.git`),{id:e.databaseId.toString(),graphQLId:e.id,title:e.title,number:e.number,state:wt[e.state],commentCount:e.comments.totalCount,upvoteCount:e.reactions.totalCount,author:r?G(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,oid:((P=e.headRef.target)==null?void 0:P.oid)??null}:null,baseRef:e.baseRef?{name:e.baseRef.name,oid:((y=e.baseRef.target)==null?void 0:y.oid)??null}: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(G):null,reviews:i.map(D=>({reviewer:G(D.requestedReviewer),state:"REVIEW_REQUESTED"})).concat((((b=e.latestReviews)==null?void 0:b.nodes)||[]).map(D=>{let ue=D.author||be;return{reviewer:G(ue),state:bt[D.state]}})),additions:e.additions,deletions:e.deletions,fileCount:e.changedFiles,commitCount:e.commits.totalCount,mergeableState:yt[e.mergeable],milestone:e.milestone?Pe(e.milestone):null,labels:((L=(v=e.labels)==null?void 0:v.nodes)==null?void 0:L.map(ye))??[]}},vt=e=>{var t,s;let r=null;return e.author?r=(e.author.__typename==="Bot",e.author):r=be,{id:e.databaseId.toString(),graphQLId:e.id,number:e.number,title:e.title,author:G(r),commentCount:e.comments.totalCount,createdDate:new Date(e.createdAt),description:null,state:{name:Pt[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(G):[],upvoteCount:e.reactions.totalCount,milestone:e.milestone?Pe(e.milestone):null,labels:((s=(t=e.labels)==null?void 0:t.nodes)==null?void 0:s.map(ye))??[]}},Pe=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}),M=class extends T{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(me)?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,k(s))}
205
+ ${q(!1,k(s))}
206
206
  }
207
207
  }
208
208
  `},t)).body.data)==null?void 0:o.viewer;if(!a)throw new Error("Current user not found.");return{data:G(a)}}async getUserForCommit(t,s={}){var i,u;let a=(i=(await h(this.config,{query:`
@@ -229,7 +229,7 @@ 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,k(n))}
232
+ ${q(!0,k(n))}
233
233
  }
234
234
  }
235
235
  }
@@ -237,7 +237,7 @@ query getAccountForEmail($query: String! $avatarSize: Int) {
237
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:G({...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,k(n))}
240
+ ${q(!0,k(n))}
241
241
  }
242
242
  }
243
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:G({...o,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(o.avatarUrl,o.email,s)})}}async getOrgsForCurrentUser(t={},s={}){var o,i;let n=await h(this.config,{query:`
@@ -262,19 +262,19 @@ query getOrgsForCurrentUser($cursor: String, $first: Int!) {
262
262
  `,variables:{cursor:t.cursor,first:C}},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
- ${fe}
265
+ ${Re}
266
266
  }
267
267
  }
268
- `,variables:{owner:t.namespace,name:t.name}},s);if(!((a=n.body.data)!=null&&a.repository))throw new Error(`Repository ${t.namespace}/${t.name} not found`);return{data:Re(n.body.data.repository)}}async getRepos(t,s={}){let n=t.map(({namespace:u,name:l},p)=>`
268
+ `,variables:{owner:t.namespace,name:t.name}},s);if(!((a=n.body.data)!=null&&a.repository))throw new Error(`Repository ${t.namespace}/${t.name} not found`);return{data:Ie(n.body.data.repository)}}async getRepos(t,s={}){let n=t.map(({namespace:u,name:l},p)=>`
269
269
  getRepo_${p}: repository(owner: "${u}", name: "${l}") {
270
- ${fe}
270
+ ${Re}
271
271
  }
272
272
  `).join(`
273
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(Re(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:`
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(Ie(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 {
@@ -283,12 +283,12 @@ query getReposForUsernames($query: String!, $cursor: String, $first: Int!) {
283
283
  }
284
284
  nodes {
285
285
  ... on Repository {
286
- ${fe}
286
+ ${Re}
287
287
  }
288
288
  }
289
289
  }
290
290
  }
291
- `,variables:{query:`fork:true ${t.usernames.map(i=>`user:${i}`).join(" ")}`,cursor:t.cursor,first:C}},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(Re)}}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:`
291
+ `,variables:{query:`fork:true ${t.usernames.map(i=>`user:${i}`).join(" ")}`,cursor:t.cursor,first:C}},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(Ie)}}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) {
@@ -348,7 +348,7 @@ 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=k(n),o=d=>{let c=d&&typeof t.isDraft=="boolean"?`${t.query} draft:${t.isDraft}`:t.query;return he("pr",c,t.cursor,a,d)},i=await h(this.config,o(!0),s);i.body.errors&&He(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(Ct))||[]}}async searchIssues(t,s={}){var u,l;let n=await this.getScopes(s),a=k(n),o=await h(this.config,he("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(vt))||[]}}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=R=>{p[R.id]||(p[R.id]=!0,d.push(R))};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=me(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=k(n),o=d=>{let c=d&&typeof t.isDraft=="boolean"?`${t.query} draft:${t.isDraft}`:t.query;return fe("pr",c,t.cursor,a,d)},i=await h(this.config,o(!0),s);i.body.errors&&He(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(Ct))||[]}}async searchIssues(t,s={}){var u,l;let n=await this.getScopes(s),a=k(n),o=await h(this.config,fe("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(vt))||[]}}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=R=>{p[R.id]||(p[R.id]=!0,d.push(R))};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=he(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
@@ -378,7 +378,7 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
378
378
  id
379
379
  }
380
380
  }
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=me(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=he(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
@@ -416,7 +416,7 @@ query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first:
416
416
  }
417
417
  }
418
418
  }
419
- `,variables:{owner:n,name:a,cursor:o,first:C}},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(ye))??[]}}async getLabelsForRepo(t,s={}){var u,l,p,d;let{repo:{namespace:n,name:a},cursor:o}=t,i=await h(this.config,{query:`
419
+ `,variables:{owner:n,name:a,cursor:o,first:C}},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(Pe))??[]}}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) {
@@ -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:C}},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(be))??[]}}};var Dt="https://gitlab.com/api/v4",Et="https://gitlab.com/api/graphql",Je=/\/api\/v\d+$/,Ve=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.")},Pe=(e,r)=>{let t=r.baseUrl||e.baseUrl;return t?(t=t.replace(/\/$/,""),Ve(t),t):Dt},$t=(e,r)=>{let t=r.baseUrl||e.baseUrl;return t?(t=t.replace(/\/$/,""),Ve(t),Je.test(t)&&(t=t.replace(Je,"")),`${t}/api/graphql`):Et},f=(e,r,t)=>{let s=m(t.token||e.token);return e.request({url:$t(e,t),method:"POST",headers:{...s,"Content-Type":"application/json"},body:JSON.stringify(r)})};var Ke=e=>e.split("/").slice(0,-1).join("/"),_=e=>({namespace:Ke(e.fullPath),name:e.path,webUrl:e.webUrl}),St={assigned:"assignedMergeRequests",authored:"authoredMergeRequests",reviewRequested:"reviewRequestedMergeRequests"},Ut={CAN_BE_MERGED:"MERGEABLE",CANNOT_BE_MERGED:"CONFLICTS",CANNOT_BE_MERGED_RECHECK:"UNKNOWN",UNCHECKED:"UNKNOWN",CHECKING:"UNKNOWN"},Se="gid://gitlab/User/",z="gid://gitlab/Project/",qt="gid://gitlab/MergeRequest/",Lt="gid://gitlab/Issue/",Gt="gid://gitlab/ProjectLabel/",Xe="gid://gitlab/Milestone/",Ue=`
433
+ `,variables:{owner:n,name:a,cursor:o,first:C}},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(ye))??[]}}};var $t="https://gitlab.com/api/v4",Dt="https://gitlab.com/api/graphql",Je=/\/api\/v\d+$/,Ve=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.")},we=(e,r)=>{let t=r.baseUrl||e.baseUrl;return t?(t=t.replace(/\/$/,""),Ve(t),t):$t},Et=(e,r)=>{let t=r.baseUrl||e.baseUrl;return t?(t=t.replace(/\/$/,""),Ve(t),Je.test(t)&&(t=t.replace(Je,"")),`${t}/api/graphql`):Dt},f=(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 Ke=e=>e.split("/").slice(0,-1).join("/"),_=e=>({namespace:Ke(e.fullPath),name:e.path,webUrl:e.webUrl}),St={assigned:"assignedMergeRequests",authored:"authoredMergeRequests",reviewRequested:"reviewRequestedMergeRequests"},Ut={CAN_BE_MERGED:"MERGEABLE",CANNOT_BE_MERGED:"CONFLICTS",CANNOT_BE_MERGED_RECHECK:"UNKNOWN",UNCHECKED:"UNKNOWN",CHECKING:"UNKNOWN"},Ue="gid://gitlab/User/",z="gid://gitlab/Project/",qt="gid://gitlab/MergeRequest/",Lt="gid://gitlab/Issue/",Gt="gid://gitlab/ProjectLabel/",Xe="gid://gitlab/Milestone/",qe=`
434
434
  description
435
435
  dueDate
436
436
  id
@@ -439,7 +439,7 @@ startDate
439
439
  state
440
440
  title
441
441
  webPath
442
- `,we=`
442
+ `,Ce=`
443
443
  id
444
444
  path
445
445
  fullPath
@@ -455,12 +455,12 @@ name
455
455
  username
456
456
  publicEmail
457
457
  avatarUrl
458
- `,qe=`
458
+ `,Le=`
459
459
  color
460
460
  description
461
461
  id
462
462
  title
463
- `,Ce=`
463
+ `,ve=`
464
464
  author {
465
465
  ${A}
466
466
  }
@@ -476,7 +476,7 @@ id
476
476
  iid
477
477
  labels {
478
478
  nodes {
479
- ${qe}
479
+ ${Le}
480
480
  }
481
481
  }
482
482
  state
@@ -487,9 +487,9 @@ upvotes
487
487
  userNotesCount
488
488
  webUrl
489
489
  milestone {
490
- ${Ue}
490
+ ${qe}
491
491
  }
492
- `,ve=(e,r)=>`
492
+ `,$e=(e,r)=>`
493
493
  id
494
494
  state
495
495
  author {
@@ -533,12 +533,12 @@ reviewers {
533
533
  mergeStatusEnum
534
534
  labels {
535
535
  nodes {
536
- ${qe}
536
+ ${Le}
537
537
  }
538
538
  }
539
539
  ${e?"project { path fullPath webUrl }":""}
540
- ${r?`milestone { ${Ue} }`:""}
541
- `,O=e=>`${e.namespace}/${e.name}`,xt=e=>`${e.namespace}/${e.name}`,De=e=>{var r;return{id:e.id.replace(z,""),graphQLId:e.id,namespace:Ke(e.fullPath),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}},Tt={opened:"OPEN",merged:"MERGED",closed:"CLOSED"},N=e=>({id:e.id.replace(Se,""),graphQLId:e.id,name:e.name,username:e.username,email:e.publicEmail,avatarUrl:e.avatarUrl}),Le=e=>({color:e.color,description:e.description,id:e.id.replace(Gt,""),graphQLId:e.id,name:e.title}),Ee=(e,r)=>{var t,s,n,a,o,i,u,l,p;return{id:e.id.replace(qt,""),graphQLId:e.id,title:e.title,number:parseInt(e.iid,10),state:Tt[e.state],commentCount:e.userNotesCount||0,upvoteCount:e.upvotes,author:e.author?N(e.author):null,createdDate:new Date(e.createdAt),isDraft:e.draft,repository:{name:r.name,owner:{login:r.namespace}},headRepository:null,headCommit:{buildStatus:null},baseRef:{name:e.targetBranch,oid:((t=e.diffRefs)==null?void 0:t.baseSha)??null},headRef:{name:e.sourceBranch,oid:((s=e.diffRefs)==null?void 0:s.headSha)??null},url:e.webUrl,updatedDate:new Date(e.updatedAt),closedDate:e.mergedAt?new Date(e.mergedAt):null,assignees:(n=e.assignees)!=null&&n.nodes?e.assignees.nodes.map(N):null,reviews:(a=e.reviewers)!=null&&a.nodes?e.reviewers.nodes.map(d=>{var c,g;return{reviewer:N(d),state:(c=d.mergeRequestInteraction)!=null&&c.approved?"APPROVED":((g=d.mergeRequestInteraction)==null?void 0:g.reviewState)==="REVIEWED"?"CHANGES_REQUESTED":"CHANGES_REQUESTED"}}):null,additions:((o=e.diffStatsSummary)==null?void 0:o.additions)||0,deletions:((i=e.diffStatsSummary)==null?void 0:i.deletions)||0,fileCount:((u=e.diffStatsSummary)==null?void 0:u.fileCount)||0,commitCount:e.commitCount||0,mergeableState:Ut[e.mergeStatusEnum],milestone:e.milestone?Ge(e.milestone,r.webUrl):null,labels:((p=(l=e.labels)==null?void 0:l.nodes)==null?void 0:p.map(Le))??[]}},$e=(e,r)=>{var t,s;return{author:{avatarUrl:e.author.avatarUrl,email:null,graphQLId:e.author.id,id:e.author.id.replace(Se,""),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(Se,""),name:n.name,username:n.username})),commentCount:e.userNotesCount,createdDate:new Date(e.createdAt),description:e.description,graphQLId:e.id,id:e.id.replace(Lt,""),labels:((s=(t=e.labels)==null?void 0:t.nodes)==null?void 0:s.map(Le))??[],number:e.iid,repository:{name:r.name,owner:{login:r.namespace}},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?Ge(e.milestone,r.webUrl):null}},Ge=(e,r)=>({id:e.id.replace(Xe,""),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}),W=class extends T{async getCurrentUser(r={}){var n;let s=(n=(await f(this.config,{query:`
540
+ ${r?`milestone { ${qe} }`:""}
541
+ `,O=e=>`${e.namespace}/${e.name}`,xt=e=>`${e.namespace}/${e.name}`,De=e=>{var r;return{id:e.id.replace(z,""),graphQLId:e.id,namespace:Ke(e.fullPath),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}},Tt={opened:"OPEN",merged:"MERGED",closed:"CLOSED"},N=e=>({id:e.id.replace(Ue,""),graphQLId:e.id,name:e.name,username:e.username,email:e.publicEmail,avatarUrl:e.avatarUrl}),Ge=e=>({color:e.color,description:e.description,id:e.id.replace(Gt,""),graphQLId:e.id,name:e.title}),Ee=(e,r)=>{var t,s,n,a,o,i,u,l,p;return{id:e.id.replace(qt,""),graphQLId:e.id,title:e.title,number:parseInt(e.iid,10),state:Tt[e.state],commentCount:e.userNotesCount||0,upvoteCount:e.upvotes,author:e.author?N(e.author):null,createdDate:new Date(e.createdAt),isDraft:e.draft,repository:{name:r.name,owner:{login:r.namespace}},headRepository:null,headCommit:{buildStatus:null},baseRef:{name:e.targetBranch,oid:((t=e.diffRefs)==null?void 0:t.baseSha)??null},headRef:{name:e.sourceBranch,oid:((s=e.diffRefs)==null?void 0:s.headSha)??null},url:e.webUrl,updatedDate:new Date(e.updatedAt),closedDate:e.mergedAt?new Date(e.mergedAt):null,assignees:(n=e.assignees)!=null&&n.nodes?e.assignees.nodes.map(N):null,reviews:(a=e.reviewers)!=null&&a.nodes?e.reviewers.nodes.map(d=>{var c,g;return{reviewer:N(d),state:(c=d.mergeRequestInteraction)!=null&&c.approved?"APPROVED":((g=d.mergeRequestInteraction)==null?void 0:g.reviewState)==="REVIEWED"?"CHANGES_REQUESTED":"CHANGES_REQUESTED"}}):null,additions:((o=e.diffStatsSummary)==null?void 0:o.additions)||0,deletions:((i=e.diffStatsSummary)==null?void 0:i.deletions)||0,fileCount:((u=e.diffStatsSummary)==null?void 0:u.fileCount)||0,commitCount:e.commitCount||0,mergeableState:Ut[e.mergeStatusEnum],milestone:e.milestone?xe(e.milestone,r.webUrl):null,labels:((p=(l=e.labels)==null?void 0:l.nodes)==null?void 0:p.map(Ge))??[]}},Se=(e,r)=>{var t,s;return{author:{avatarUrl:e.author.avatarUrl,email:null,graphQLId:e.author.id,id:e.author.id.replace(Ue,""),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(Ue,""),name:n.name,username:n.username})),commentCount:e.userNotesCount,createdDate:new Date(e.createdAt),description:e.description,graphQLId:e.id,id:e.id.replace(Lt,""),labels:((s=(t=e.labels)==null?void 0:t.nodes)==null?void 0:s.map(Ge))??[],number:e.iid,repository:{name:r.name,owner:{login:r.namespace}},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?xe(e.milestone,r.webUrl):null}},xe=(e,r)=>({id:e.id.replace(Xe,""),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}),W=class extends T{async getCurrentUser(r={}){var n;let s=(n=(await f(this.config,{query:`
542
542
  query getCurrentUser {
543
543
  currentUser {
544
544
  ${A}
@@ -575,12 +575,12 @@ query getAccountForUsername($username: String!) {
575
575
  `,variables:{username:r.username}},t)).body.data)==null?void 0:a.user;if(!n)throw new Error("User not found.");return{data:N(n)}}async getRepo(r,t={}){var a;let s=O(r),n=await f(this.config,{query:`
576
576
  query getRepo($fullPath: ID!) {
577
577
  project(fullPath: $fullPath) {
578
- ${we}
578
+ ${Ce}
579
579
  }
580
580
  }
581
581
  `,variables:{fullPath:s}},t);if(!((a=n.body.data)!=null&&a.project))throw new Error(`Repository ${s} not found`);return{data:De(n.body.data.project)}}async getRepos(r,t={}){let n=r.map(O).map((u,l)=>`
582
582
  getRepo_${l}: project(fullPath: "${u}") {
583
- ${we}
583
+ ${Ce}
584
584
  }
585
585
  `).join(`
586
586
  `),a=await f(this.config,{query:`
@@ -595,11 +595,11 @@ query getReposForCurrentUser($after: String) {
595
595
  hasNextPage
596
596
  }
597
597
  nodes {
598
- ${we}
598
+ ${Ce}
599
599
  }
600
600
  }
601
601
  }
602
- `,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(De)}}async getRefs(r,t,s={}){var u;let n=O(t.repo),a=new URL(`${Pe(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",C.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(`${Pe(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}}})}}}async getPullRequestsForUser(r,t={}){var o,i;let s=St[r.association],n=await f(this.config,{query:`
602
+ `,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(De)}}async getRefs(r,t,s={}){var u;let n=O(t.repo),a=new URL(`${we(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",C.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(`${we(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}}})}}}async getPullRequestsForUser(r,t={}){var o,i;let s=St[r.association],n=await f(this.config,{query:`
603
603
  query getPullRequestsForUser($username: String! $cursor: String) {
604
604
  user(username: $username) {
605
605
  ${s}(state:opened first:100 after:$cursor) {
@@ -608,7 +608,7 @@ query getPullRequestsForUser($username: String! $cursor: String) {
608
608
  hasNextPage
609
609
  }
610
610
  nodes {
611
- ${ve(!0,!0)}
611
+ ${$e(!0,!0)}
612
612
  }
613
613
  }
614
614
  }
@@ -637,7 +637,7 @@ query getPullRequestsForRepo(
637
637
  hasNextPage
638
638
  }
639
639
  nodes {
640
- ${ve(!1,!0)}
640
+ ${$e(!1,!0)}
641
641
  }
642
642
  }
643
643
  }
@@ -667,13 +667,13 @@ query getPullRequests(
667
667
  ${i.length?i.join(" "):""}
668
668
  ) {
669
669
  nodes {
670
- ${ve(!1,!1)}
670
+ ${$e(!1,!1)}
671
671
  }
672
672
  }
673
673
  }
674
674
  }
675
675
  }
676
- `,variables:{...u,after:s}},t),p=[];return(((g=(c=l.body.data)==null?void 0:c.projects)==null?void 0:g.nodes)||[]).forEach(y=>{var q;let b=_(y);(((q=y.mergeRequests)==null?void 0:q.nodes)||[]).forEach(E=>{p.push(Ee(E,b))})}),{pageInfo:(P=(I=(R=l.body)==null?void 0:R.data)==null?void 0:I.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!) {
676
+ `,variables:{...u,after:s}},t),p=[];return(((g=(c=l.body.data)==null?void 0:c.projects)==null?void 0:g.nodes)||[]).forEach(y=>{var L;let b=_(y);(((L=y.mergeRequests)==null?void 0:L.nodes)||[]).forEach(D=>{p.push(Ee(D,b))})}),{pageInfo:(P=(I=(R=l.body)==null?void 0:R.data)==null?void 0:I.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!) {
677
677
  mergeRequestUpdate(input: { projectPath: $fullPath, iid: $pullRequestId, state: CLOSED }) {
678
678
  errors,
679
679
  mergeRequest {
@@ -708,11 +708,11 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
708
708
  fullPath
709
709
  webUrl
710
710
  issue(iid: $issueId) {
711
- ${Ce}
711
+ ${ve}
712
712
  }
713
713
  }
714
714
  }
715
- `,variables:{issueId:r.id,projectId:s}},t);if(!((a=n.body.data)!=null&&a.project))throw new Error(`Repository ${s} not found`);if(!((i=(o=n.body.data)==null?void 0:o.project)!=null&&i.issue))throw new Error(`Issue ${r.id} not found`);return{data:$e(n.body.data.project.issue,_(n.body.data.project))}}getVariablesForIssues(r){let{updatedBefore:t,authorLogin:s,assigneeLogins:n}=r||{},a={},o=[],i=[],u=(l,p,d)=>{o.push(`$${l}: ${d}`),i.push(`${l}: $${l}`),a[l]=p};return t&&u("updatedBefore",t,"Time"),s&&u("authorUsername",s,"String"),n&&u("assigneeUsername",n[0],"String"),{variables:a,variableTypes:o,issueArguments:i}}async getIssuesForRepo(r,t={}){var P,y,b;let{cursor:s,repo:n}=r||{},a=O(n),{variables:o,variableTypes:i,issueArguments:u}=this.getVariablesForIssues(r),l={fullPath:a,...o},p=`
715
+ `,variables:{issueId:r.id,projectId:s}},t);if(!((a=n.body.data)!=null&&a.project))throw new Error(`Repository ${s} not found`);if(!((i=(o=n.body.data)==null?void 0:o.project)!=null&&i.issue))throw new Error(`Issue ${r.id} not found`);return{data:Se(n.body.data.project.issue,_(n.body.data.project))}}getVariablesForIssues(r){let{updatedBefore:t,authorLogin:s,assigneeLogins:n}=r||{},a={},o=[],i=[],u=(l,p,d)=>{o.push(`$${l}: ${d}`),i.push(`${l}: $${l}`),a[l]=p};return t&&u("updatedBefore",t,"Time"),s&&u("authorUsername",s,"String"),n&&u("assigneeUsername",n[0],"String"),{variables:a,variableTypes:o,issueArguments:i}}async getIssuesForRepo(r,t={}){var P,y,b;let{cursor:s,repo:n}=r||{},a=O(n),{variables:o,variableTypes:i,issueArguments:u}=this.getVariablesForIssues(r),l={fullPath:a,...o},p=`
716
716
  query GetIssuesFromProject(
717
717
  $fullPath: ID!
718
718
  $after: String
@@ -732,7 +732,7 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
732
732
  ${u.length?u.join(" "):""}
733
733
  ) {
734
734
  nodes {
735
- ${Ce}
735
+ ${ve}
736
736
  }
737
737
  pageInfo {
738
738
  endCursor
@@ -740,7 +740,7 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
740
740
  }
741
741
  }
742
742
  }
743
- }`,d=await f(this.config,{query:p,variables:{...l,after:s}},t),c=[],g=(P=d.body.data)==null?void 0:P.project,R=_(g||{fullPath:"",path:"",webUrl:""});return(((y=g==null?void 0:g.issues)==null?void 0:y.nodes)||[]).forEach(v=>{c.push($e(v,R))}),{pageInfo:(b=g==null?void 0:g.issues)==null?void 0:b.pageInfo,data:c.sort((v,q)=>(v.updatedDate||v.createdDate).getTime()-(q.updatedDate||q.createdDate).getTime())}}async getIssuesForRepos(r,t={}){var g,R,I,P,y;let{cursor:s}=r||{},n=r.repoIds.map(b=>b.toString().startsWith(z)?b:`${z}${b}`),{variables:a,variableTypes:o,mergeRequestArguments:i}=this.getVariablesForPullRequests(r),u={projectIds:n,...a},l=`
743
+ }`,d=await f(this.config,{query:p,variables:{...l,after:s}},t),c=[],g=(P=d.body.data)==null?void 0:P.project,R=_(g||{fullPath:"",path:"",webUrl:""});return(((y=g==null?void 0:g.issues)==null?void 0:y.nodes)||[]).forEach(v=>{c.push(Se(v,R))}),{pageInfo:(b=g==null?void 0:g.issues)==null?void 0:b.pageInfo,data:c.sort((v,L)=>(v.updatedDate||v.createdDate).getTime()-(L.updatedDate||L.createdDate).getTime())}}async getIssuesForRepos(r,t={}){var g,R,I,P,y;let{cursor:s}=r||{},n=r.repoIds.map(b=>b.toString().startsWith(z)?b:`${z}${b}`),{variables:a,variableTypes:o,mergeRequestArguments:i}=this.getVariablesForPullRequests(r),u={projectIds:n,...a},l=`
744
744
  query GetIssuesFromProject(
745
745
  $projectIds: [ID!]
746
746
  $after: String
@@ -765,12 +765,12 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
765
765
  ${i.length?i.join(" "):""}
766
766
  ) {
767
767
  nodes {
768
- ${Ce}
768
+ ${ve}
769
769
  }
770
770
  }
771
771
  }
772
772
  }
773
- }`,p=await f(this.config,{query:l,variables:{...u,after:s}},t),d=[];return(((R=(g=p.body.data)==null?void 0:g.projects)==null?void 0:R.nodes)||[]).forEach(b=>{var E;let v=_(b);(((E=b.issues)==null?void 0:E.nodes)||[]).forEach(ue=>d.push($e(ue,v)))}),{pageInfo:(y=(P=(I=p.body)==null?void 0:I.data)==null?void 0:P.projects)==null?void 0:y.pageInfo,data:d.sort((b,v)=>(b.updatedDate||b.createdDate).getTime()-(v.updatedDate||v.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!) {
773
+ }`,p=await f(this.config,{query:l,variables:{...u,after:s}},t),d=[];return(((R=(g=p.body.data)==null?void 0:g.projects)==null?void 0:R.nodes)||[]).forEach(b=>{var D;let v=_(b);(((D=b.issues)==null?void 0:D.nodes)||[]).forEach(ue=>d.push(Se(ue,v)))}),{pageInfo:(y=(P=(I=p.body)==null?void 0:I.data)==null?void 0:P.projects)==null?void 0:y.pageInfo,data:d.sort((b,v)=>(b.updatedDate||b.createdDate).getTime()-(v.updatedDate||v.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!) {
774
774
  updateIssue(input: { projectPath: $fullPath, iid: $issueId, stateEvent: $status }) {
775
775
  issue {
776
776
  id
@@ -797,7 +797,7 @@ query getLabelsForRepo(
797
797
  webUrl
798
798
  milestones(after: $after) {
799
799
  nodes {
800
- ${Ue}
800
+ ${qe}
801
801
  }
802
802
  pageInfo {
803
803
  endCursor
@@ -806,7 +806,7 @@ query getLabelsForRepo(
806
806
  }
807
807
  }
808
808
  }
809
- `,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(R=>{var I,P;return Ge(R,((P=(I=o.body.data)==null?void 0:I.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 f(this.config,{query:`
809
+ `,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(R=>{var I,P;return xe(R,((P=(I=o.body.data)==null?void 0:I.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 f(this.config,{query:`
810
810
  query getLabelsForRepo(
811
811
  $fullPath: ID!
812
812
  $after: String
@@ -816,7 +816,7 @@ query getLabelsForRepo(
816
816
  ) {
817
817
  labels(after: $after) {
818
818
  nodes {
819
- ${qe}
819
+ ${Le}
820
820
  }
821
821
  pageInfo {
822
822
  endCursor
@@ -825,4 +825,4 @@ query getLabelsForRepo(
825
825
  }
826
826
  }
827
827
  }
828
- `,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(Le))??[]}}};var H="https://api.atlassian.com/ex/jira",xe=100,At=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(Ot))??[],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})))??[]}},Ot=e=>({name:e.name,id:e.id}),J=class extends ${async getCurrentUserForResource(r,t={}){let s=await this.config.request({url:`${t.baseUrl||H}/${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||H}/${r.resourceId}/rest/api/2/project/search`);s.searchParams.set("maxResults",xe.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&&s.length!==0&&i.push(`assignee in ("${s.join('", "')}")`),a&&i.push(`comment ~ "${a}"`),{data:(await this.config.request({url:`${t.baseUrl||H}/${r.resourceId}/rest/api/2/search?jql=${i.join(" AND ")}&startAt=0&maxResults=${xe}&fields=${["assignee","comment","summary","created","creator","updated","votes","issuetype","status","labels"].join(",")}&expand=transitions`,headers:m(t.token||this.config.token)})).body.issues.map(At)}}async setIssueStatus(r,t={}){let{resourceId:s,issueId:n,status:a}=r,o={transition:{id:a}};await this.config.request({method:"POST",url:`${t.baseUrl||H}/${s}/rest/api/2/issue/${n}/transitions`,body:JSON.stringify(o),headers:{...m(t.token||this.config.token),"Content-Type":"application/json"}})}async getLabelsForResource(r,t={}){let{resourceId:s,cursor:n}=r,a=new URL(`${t.baseUrl||H}/${s}/rest/api/2/label`);a.searchParams.set("maxResults",xe.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 Q="https://api.trello.com",kt=1e3,_t=(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}))}},V=class extends ${async getCurrentUser(r,t={}){let s=await this.config.request({url:`${t.baseUrl||Q}/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||Q}/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||Q}/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||Q}/1/search?key=${n}&query=${l}&cards_limit=${kt}&token=${t.token||this.config.token}`,headers:m(t.token||this.config.token)})).body.cards.map(d=>_t(d,u||{}))}}async setIssueStatus(r,t={}){let{appKey:s,cardId:n,status:a}=r;if(!(await this.config.request({method:"PUT",url:`${t.baseUrl||Q}/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||Q}/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 te={};x(te,{getIssueUniqueId:()=>Nt,getPullRequestUniqueId:()=>Qt});var Nt=(e,r,t,s="")=>{let n=[];return n.push(s),n.push(e),n.push(r),n.push(t),JSON.stringify(n)},Qt=(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 re={};x(re,{getIssueUniqueId:()=>Bt,getPullRequestUniqueId:()=>jt});var Bt=(e,r)=>JSON.stringify(["",e,r]),jt=(e,r)=>JSON.stringify(["",e,r]);var se={};x(se,{getIssueUniqueId:()=>Ft,getPullRequestUniqueId:()=>Mt});var Ft=(e,r,t)=>JSON.stringify([t,e,r]),Mt=(e,r,t)=>JSON.stringify([t,e,r]);var ne={};x(ne,{getIssueUniqueId:()=>zt,getPullRequestRank:()=>Ht,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)},Ht=(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 oe={};x(oe,{getIssueUniqueId:()=>Jt,getPullRequestUniqueId:()=>Vt});var Jt=(e,r="")=>{let t=[];return t.push(r),t.push(e),JSON.stringify(t)},Vt=(e,r="")=>{let t=[];return t.push(r),t.push(e),JSON.stringify(t)};var ae={};x(ae,{getIssueUniqueId:()=>Kt,getJiraServerIssueUniqueId:()=>Xt});var Kt=(e,r,t)=>{let s=[];return s.push(""),s.push(e),s.push(r),s.push(t),JSON.stringify(s)},Xt=(e,r,t)=>{let s=[];return s.push(t),s.push(""),s.push(e),s.push(r),JSON.stringify(s)};var ie={};x(ie,{getIssueUniqueId:()=>Zt});var Zt=(e,r,t,s="")=>{let n=[];return n.push(s),n.push(e),n.push(r),n.push(t),JSON.stringify(n)};var Yt=e=>{let r={request:e==null?void 0:e.request};return{azureDevOps:new B({...r,...e==null?void 0:e.azureDevOps}),bitbucket:new j({...r,...e==null?void 0:e.bitbucket}),bitbucketServer:new F({...r,...e==null?void 0:e.bitbucketServer}),github:new M({...r,...e==null?void 0:e.github}),gitlab:new W({...r,...e==null?void 0:e.gitlab}),jira:new J({...r,...e==null?void 0:e.jira}),trello:new V({...r,...e==null?void 0:e.trello})}},er=Yt;var tr={azureDevOps:te,bitbucket:re,bitbucketServer:se,github:ne,gitlab:oe,jira:ae,trello:ie};
828
+ `,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(Ge))??[]}}};var H="https://api.atlassian.com/ex/jira",Te=100,At=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(Ot))??[],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})))??[]}},Ot=e=>({name:e.name,id:e.id}),J=class extends E{async getCurrentUserForResource(r,t={}){let s=await this.config.request({url:`${t.baseUrl||H}/${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||H}/${r.resourceId}/rest/api/2/project/search`);s.searchParams.set("maxResults",Te.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&&s.length!==0&&i.push(`assignee in ("${s.join('", "')}")`),a&&i.push(`comment ~ "${a}"`),{data:(await this.config.request({url:`${t.baseUrl||H}/${r.resourceId}/rest/api/2/search?jql=${i.join(" AND ")}&startAt=0&maxResults=${Te}&fields=${["assignee","comment","summary","created","creator","updated","votes","issuetype","status","labels"].join(",")}&expand=transitions`,headers:m(t.token||this.config.token)})).body.issues.map(At)}}async setIssueStatus(r,t={}){let{resourceId:s,issueId:n,status:a}=r,o={transition:{id:a}};await this.config.request({method:"POST",url:`${t.baseUrl||H}/${s}/rest/api/2/issue/${n}/transitions`,body:JSON.stringify(o),headers:{...m(t.token||this.config.token),"Content-Type":"application/json"}})}async getLabelsForResource(r,t={}){let{resourceId:s,cursor:n}=r,a=new URL(`${t.baseUrl||H}/${s}/rest/api/2/label`);a.searchParams.set("maxResults",Te.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 Q="https://api.trello.com",kt=1e3,_t=(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}))}},V=class extends E{async getCurrentUser(r,t={}){let s=await this.config.request({url:`${t.baseUrl||Q}/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||Q}/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||Q}/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||Q}/1/search?key=${n}&query=${l}&cards_limit=${kt}&token=${t.token||this.config.token}`,headers:m(t.token||this.config.token)})).body.cards.map(d=>_t(d,u||{}))}}async setIssueStatus(r,t={}){let{appKey:s,cardId:n,status:a}=r;if(!(await this.config.request({method:"PUT",url:`${t.baseUrl||Q}/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||Q}/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 te={};x(te,{getIssueUniqueId:()=>Nt,getPullRequestUniqueId:()=>Qt});var Nt=(e,r,t,s="")=>{let n=[];return n.push(s),n.push(e),n.push(r),n.push(t),JSON.stringify(n)},Qt=(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 re={};x(re,{getIssueUniqueId:()=>Bt,getPullRequestUniqueId:()=>jt});var Bt=(e,r)=>JSON.stringify(["",e,r]),jt=(e,r)=>JSON.stringify(["",e,r]);var se={};x(se,{getIssueUniqueId:()=>Ft,getPullRequestUniqueId:()=>Mt});var Ft=(e,r,t)=>JSON.stringify([t,e,r]),Mt=(e,r,t)=>JSON.stringify([t,e,r]);var ne={};x(ne,{getIssueUniqueId:()=>zt,getPullRequestRank:()=>Ht,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)},Ht=(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 oe={};x(oe,{getIssueUniqueId:()=>Jt,getPullRequestUniqueId:()=>Vt});var Jt=(e,r="")=>{let t=[];return t.push(r),t.push(e),JSON.stringify(t)},Vt=(e,r="")=>{let t=[];return t.push(r),t.push(e),JSON.stringify(t)};var ae={};x(ae,{getIssueUniqueId:()=>Kt,getJiraServerIssueUniqueId:()=>Xt});var Kt=(e,r,t)=>{let s=[];return s.push(""),s.push(e),s.push(r),s.push(t),JSON.stringify(s)},Xt=(e,r,t)=>{let s=[];return s.push(t),s.push(""),s.push(e),s.push(r),JSON.stringify(s)};var ie={};x(ie,{getIssueUniqueId:()=>Zt});var Zt=(e,r,t,s="")=>{let n=[];return n.push(s),n.push(e),n.push(r),n.push(t),JSON.stringify(n)};var Yt=e=>{let r={request:e==null?void 0:e.request};return{azureDevOps:new B({...r,...e==null?void 0:e.azureDevOps}),bitbucket:new j({...r,...e==null?void 0:e.bitbucket}),bitbucketServer:new F({...r,...e==null?void 0:e.bitbucketServer}),github:new M({...r,...e==null?void 0:e.github}),gitlab:new W({...r,...e==null?void 0:e.gitlab}),jira:new J({...r,...e==null?void 0:e.jira}),trello:new V({...r,...e==null?void 0:e.trello})}},er=Yt;var tr={azureDevOps:te,bitbucket:re,bitbucketServer:se,github:ne,gitlab:oe,jira:ae,trello:ie};
@@ -74,6 +74,15 @@ export declare class Bitbucket extends Provider implements GitProvider {
74
74
  };
75
75
  }[];
76
76
  }>;
77
+ getPullRequestsForUser(input: {
78
+ userId: string;
79
+ } & NumberedPageInput, options?: Options): Promise<{
80
+ pageInfo: {
81
+ hasNextPage: boolean;
82
+ nextPage: number | null;
83
+ };
84
+ data: GitPullRequest[];
85
+ }>;
77
86
  private getPullRequestsForRepoBase;
78
87
  getPullRequestsForRepo(input: {
79
88
  repo: GetRepoInput;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitkraken/provider-apis",
3
- "version": "0.12.2",
3
+ "version": "0.12.3",
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",