@gitkraken/provider-apis 0.28.0 → 0.28.2

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.
@@ -1,4 +1,4 @@
1
- "use strict";var Qt=Object.create;var ae=Object.defineProperty;var _t=Object.getOwnPropertyDescriptor;var Bt=Object.getOwnPropertyNames;var jt=Object.getPrototypeOf,Mt=Object.prototype.hasOwnProperty;var zt=(r,n)=>{for(var e in n)ae(r,e,{get:n[e],enumerable:!0})},at=(r,n,e,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of Bt(n))!Mt.call(r,s)&&s!==e&&ae(r,s,{get:()=>n[s],enumerable:!(t=_t(n,s))||t.enumerable});return r};var Wt=(r,n,e)=>(e=r!=null?Qt(jt(r)):{},at(n||!r||!r.__esModule?ae(e,"default",{value:r,enumerable:!0}):e,r)),Ht=r=>at(ae({},"__esModule",{value:!0}),r);var ss={};zt(ss,{AzureDevOps:()=>J,Bitbucket:()=>K,BitbucketServer:()=>V,EntityIdentifierProviderType:()=>kt,EntityType:()=>xt,EntityVersion:()=>Ot,GitBuildStatusStage:()=>it,GitBuildStatusState:()=>ie,GitDiffLineType:()=>Ae,GitHub:()=>Y,GitHubIssueCloseReason:()=>Nt,GitIssueState:()=>de,GitLab:()=>te,GitMergeStrategy:()=>H,GitPullRequestMergeableState:()=>W,GitPullRequestReviewState:()=>z,GitPullRequestState:()=>M,GraphQLErrors:()=>b,Jira:()=>re,JiraServer:()=>se,PullRequestAsyncStatus:()=>Tt,Trello:()=>ne,default:()=>rs,isFetch:()=>ue});module.exports=Ht(ss);var it=(s=>(s.Build="build",s.Production="production",s.Staging="staging",s.Test="test",s))(it||{}),ie=(p=>(p.ActionRequired="ACTION_REQUIRED",p.Cancelled="CANCELLED",p.Error="ERROR",p.Failed="FAILED",p.Pending="PENDING",p.Running="RUNNING",p.Skipped="SKIPPED",p.Success="SUCCESS",p.Warning="WARNING",p.OptionalActionRequired="OPTIONAL_ACTION_REQUIRED",p))(ie||{}),H=(o=>(o.MergeCommit="MERGE_COMMIT",o.Rebase="REBASE",o.RebaseThenMergeCommit="REBASE_THEN_MERGE_COMMIT",o.FastForward="FAST_FORWARD",o.Squash="SQUASH",o))(H||{}),M=(t=>(t.Open="OPEN",t.Closed="CLOSED",t.Merged="MERGED",t))(M||{}),z=(s=>(s.Approved="APPROVED",s.ChangesRequested="CHANGES_REQUESTED",s.Commented="COMMENTED",s.ReviewRequested="REVIEW_REQUESTED",s))(z||{}),W=(u=>(u.Behind="BEHIND",u.Blocked="BLOCKED",u.Conflicts="CONFLICTS",u.FailingChecks="FAILING_CHECKS",u.Mergeable="MERGEABLE",u.Unknown="UNKNOWN",u.UnknownAndBlocked="UNKNOWN_AND_BLOCKED",u.Unstable="UNSTABLE",u))(W||{}),Ae=(t=>(t.ADDED="ADDED",t.DELETED="DELETED",t.UNMODIFIED="UNMODIFIED",t))(Ae||{});var ut={APPROVED:0,COMMENTED:1,REVIEW_REQUESTED:2,CHANGES_REQUESTED:3},Q=r=>!r||r.length===0?null:r.reduce((n,e)=>ut[e.state]>ut[n]?e.state:n,"APPROVED");var E=100;var lt=Wt(require("node-fetch")),pt=globalThis.fetch||lt.default;var Jt=async r=>{let n=r.headers.get("content-type")||"",e=null;if(n.startsWith("application/json")){let s=await r.text();e=s.trim().length>0?JSON.parse(s):null}else if(n.startsWith("text/")||n==="")e=await r.text();else if(n.startsWith("application/vnd.github.raw+json"))e=await r.arrayBuffer();else throw new Error(`Unsupported content-type: ${n}`);let t={body:e,headers:Object.fromEntries(r.headers.entries()),status:r.status,statusText:r.statusText};if(!r.ok){let s=new Error(r.statusText);throw Object.assign(s,{response:t}),s}return t},Ge=r=>async({url:n,...e})=>{let t=await r(n,e);return Jt(t)};var ue=(r,n=!1)=>r.name==="fetch"||n;var $=class{constructor(n){let e=(n==null?void 0:n.request)||pt;this.config={...n,request:ue(e,n==null?void 0:n.forceIsFetch)?Ge(e):e}}updateConfig(n){this.config={...this.config,...n,request:n.request&&ue(n.request,(n==null?void 0:n.forceIsFetch)??this.config.forceIsFetch)?Ge(n.request):this.config.request}}},T=class extends ${};var I=(r,n)=>{let e={};return r&&(e.Authorization=`${n?"Basic":"Bearer"} ${r}`),e},dt=r=>r?r.reduce((n,e)=>(n[e]=!0,n),{}):void 0,_=(r,n,e)=>!r||n.some(t=>r[t])?e:"",ct=async r=>{var s,o,a;let n=[],e=!0,t;for(;e;){let i=await r(t);n=n.concat(i.data),e=!!((s=i==null?void 0:i.pageInfo)!=null&&s.hasNextPage),t=((o=i==null?void 0:i.pageInfo)==null?void 0:o.endCursor)||((a=i==null?void 0:i.pageInfo)==null?void 0:a.nextPage)}return n};var w=(r,n={})=>I(n.token||r.token,n.isPAT||r.isPAT),gt=r=>r.url.replace("/_apis/git/repositories/","/_git/").replace(`/${r.repository.project.id}/`,`/${encodeURIComponent(r.repository.project.name)}/`).replace(`/${r.repository.id}/`,`/${encodeURIComponent(r.repository.name)}/`).replace("/pullRequests/","/pullrequest/");var mt="https://app.vssps.visualstudio.com/_apis",q="https://dev.azure.com",Kt={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},Vt={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},Te=r=>({id:r.id,name:r.displayName??null,username:(r.uniqueName||r.displayName)??null,email:null,avatarUrl:r.imageUrl??null,url:null}),pe=r=>r.startsWith("refs/heads/")?r.replace("refs/heads/",""):r,Xt=r=>{switch(r){case"conflicts":return"CONFLICTS";case"failure":return"FAILING_CHECKS";case"rejectedByPolicy":return"BLOCKED";case"succeeded":return"MERGEABLE";case"notSet":case"queued":default:return"UNKNOWN"}},le=(r,n)=>{var s;let e=[],t=[];return n.reviewers.forEach(o=>{let a={reviewer:Te(o),state:Vt[o.vote??0]||"REVIEW_REQUESTED"};o.isRequired&&e.push(a),t.push(a)}),{id:n.pullRequestId.toString(),title:n.title,number:n.codeReviewId,state:Kt[n.status],isDraft:n.isDraft,commentCount:null,upvoteCount:null,author:Te(n.createdBy),createdDate:new Date(n.creationDate),updatedDate:new Date(n.closedDate||n.creationDate),closedDate:n.closedDate?new Date(n.closedDate):null,mergedDate:n.closedDate&&n.status==="completed"?new Date(n.closedDate):null,repository:{id:n.repository.id,name:n.repository.name,project:n.repository.project.name,owner:{login:r},remoteInfo:null},headCommit:{buildStatuses:null},baseRef:{name:pe(n.targetRefName),oid:n.lastMergeTargetCommit.commitId},headRef:{name:pe(n.sourceRefName),oid:n.lastMergeSourceCommit.commitId},url:gt(n),assignees:n.reviewers.map(Te),reviews:t,reviewDecision:Q(e),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:n.forkSource?{id:n.forkSource.repository.id,name:n.forkSource.repository.name,project:void 0,owner:{login:r},remoteInfo:null}:{id:n.repository.id,name:n.repository.name,project:n.repository.project.name,owner:{login:r},remoteInfo:null},mergeableState:Xt(n.mergeStatus),labels:((s=n.labels)==null?void 0:s.map(o=>({color:null,description:null,id:o.id,name:o.name})))??[],permissions:null}},ht=(r,n)=>({id:n.id,name:n.name,namespace:r,project:n.project.name,projectId:n.project.id,webUrl:n.webUrl,httpsUrl:n.remoteUrl,sshUrl:n.sshUrl,defaultBranch:n.defaultBranch?{name:pe(n.defaultBranch)}:null,permissions:null}),Zt=(r,n,e,t)=>{var l,p,d,c,g,m;let s=e.fields,o=s["System.AssignedTo"],a=s["System.State"],i=s["System.WorkItemType"],u;return a&&i&&(u=(l=t[i])==null?void 0:l[a]),{id:e.id.toString(),number:e.id.toString(),title:s["System.Title"],commentCount:s["System.CommentCount"],author:{avatarUrl:((d=(p=s["System.CreatedBy"]._links)==null?void 0:p.avatar)==null?void 0:d.href)??null,email:null,id:s["System.CreatedBy"].id,name:s["System.CreatedBy"].uniqueName??null,username:s["System.CreatedBy"].displayName??null,url:null},closedDate:s["Microsoft.VSTS.Common.ClosedDate"]?new Date(s["Microsoft.VSTS.Common.ClosedDate"]):null,createdDate:new Date(s["System.CreatedDate"]),updatedDate:new Date(s["System.ChangedDate"]),url:e._links.html.href,assignees:o?[{avatarUrl:((g=(c=o._links)==null?void 0:c.avatar)==null?void 0:g.href)??null,email:null,id:o.id,name:o.uniqueName??null,username:o.displayName??null,url:null}]:[],description:s["System.Description"]??null,state:{name:(u==null?void 0:u.title)||a,color:null},type:s["System.WorkItemType"],repository:null,project:{namespace:r,name:n,resourceId:null,key:null,id:null},upvoteCount:0,labels:((m=e.fields["System.Tags"])==null?void 0:m.split(";").map(h=>({color:null,description:null,id:null,name:h.trim()})))??[]}},J=class extends ${async getCurrentUser(n={},e={}){if(e.isPAT||this.config.isPAT)throw new Error("Azure DevOps does not support PATs for this function.");let t=await this.config.request({url:`${mt}/profile/profiles/me`,headers:w(this.config,e)});return{data:{id:t.body.id,name:t.body.displayName,username:t.body.displayName,email:t.body.emailAddress,avatarUrl:null,url:null}}}async getCurrentUserForInstance(n,e={}){let s=(await this.config.request({url:`${q}/${encodeURIComponent(n.namespace)}/_apis/ConnectionData`,headers:w(this.config,e)})).body.authorizedUser;if(s.providerDisplayName==="Anonymous")throw new Error("Current user not found.");return{data:{id:s.id,name:s.providerDisplayName,username:s.providerDisplayName,email:s.properties.Account.$value,avatarUrl:null}}}async getUserForCommit(n,e={}){if(!n.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let s=(await this.config.request({url:`${q}/${encodeURIComponent(n.repo.namespace)}/${encodeURIComponent(n.repo.project)}/_apis/git/repositories/${encodeURIComponent(n.repo.name)}/commits/${n.oid}`,headers:w(this.config,e)})).body.author;return{data:{name:s.name,email:s.email,avatarUrl:s.imageUrl}}}async getOrgsForUser(n,e={}){return{data:(await this.config.request({url:`${mt}/accounts?memberId=${n.userId}&api-version=6.0`,headers:w(this.config,e)})).body.value.map(s=>({id:s.accountId,name:s.accountName}))}}async getAzureProjects(n,e={}){let t=new URL(`${q}/${encodeURIComponent(n.namespace)}/_apis/projects`);t.searchParams.set("$top",E.toString()),n.cursor&&t.searchParams.set("$skip",n.cursor);let s=await this.config.request({url:t.toString(),headers:w(this.config,e)}),o=s.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!o,endCursor:o||null},data:s.body.value.map(a=>({id:a.id,name:a.name,namespace:n.namespace}))}}async getAzureProjectScopeDescriptor(n,e={}){let{namespace:t,projectId:s}=n;return{data:{scope:(await this.config.request({url:`https://vssps.dev.azure.com/${encodeURIComponent(t)}/_apis/graph/descriptors/${s}?api-version=6.0`,headers:w(this.config,e)})).body.value}}}async getAzureGraphAccountsForAzureProject(n,e={}){let{namespace:t,projectScopeDescriptor:s,cursor:o}=n,a=new URL(`https://vssps.dev.azure.com/${encodeURIComponent(t)}/_apis/graph/users`);s&&a.searchParams.set("scopeDescriptor",s),o&&a.searchParams.set("continuationToken",o);let i=await this.config.request({url:a.toString(),headers:w(this.config,e)}),u=i.headers["x-ms-continuationtoken"];return{pageInfo:{endCursor:u||null,hasNextPage:!!u},data:i.body.value.map(l=>{var p,d,c,g;return{avatarUrl:((d=(p=l._links)==null?void 0:p.avatar)==null?void 0:d.href)??null,descriptor:l.descriptor??null,email:l.mailAddress??null,name:l.displayName??null,storageKeyURL:((g=(c=l._links)==null?void 0:c.storageKey)==null?void 0:g.href)??null,username:l.displayName??null}})}}async getAccountFromAzureGraphAccount(n,e={}){let{azureGraphAccount:t}=n;if(!t.storageKeyURL)throw new Error("Expected 'storageKeyURL' to not be null for 'azureGraphAccount'");let s=await this.config.request({url:t.storageKeyURL,headers:w(this.config,e)});return{data:{avatarUrl:t.avatarUrl,email:t.email,id:s.body.value,name:t.name,username:t.username,url:null}}}async getAccountsFromAzureGraphAccounts(n,e={}){let t=[];for(let s of n.azureGraphAccounts){let o=await this.getAccountFromAzureGraphAccount({azureGraphAccount:s},e);t.push(o.data)}return{data:t}}async getRepo(n,e={}){if(!n.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let t=await this.config.request({url:`${q}/${encodeURIComponent(n.namespace)}/${encodeURIComponent(n.project)}/_apis/git/repositories/${encodeURIComponent(n.name)}`,headers:w(this.config,e)});return{data:ht(n.namespace,t.body)}}async getRepos(n,e={}){let t=[],s=[];return await Promise.all(n.map(async o=>{try{let a=await this.getRepo(o,e);t.push(a.data)}catch(a){s.push({input:o,error:a})}})),{data:t,errors:s}}async getReposForAzureProject(n,e={}){if(!n.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');return{data:(await this.config.request({url:`${q}/${encodeURIComponent(n.namespace)}/${encodeURIComponent(n.project)}/_apis/git/repositories`,headers:w(this.config,e)})).body.value.map(s=>ht(n.namespace,s))}}async getRefs(n,e,t={}){if(!e.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let s=new URL(`${q}/${encodeURIComponent(e.repo.namespace)}/${encodeURIComponent(e.repo.project)}/_apis/git/repositories/${encodeURIComponent(e.repo.name)}/refs`);s.searchParams.set("filter",n),s.searchParams.set("$top",E.toString()),e.cursor&&s.searchParams.set("continuationToken",e.cursor);let o=await this.config.request({url:s.toString(),headers:w(this.config,t)}),a=o.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!a,endCursor:a||null},data:o.body.value.map(i=>({name:pe(i.name),commit:{oid:i.objectId,authoredDate:null,committedDate:null}}))}}async getBranches(n,e={}){return this.getRefs("heads",n,e)}async getTags(n,e={}){return this.getRefs("tags",n,e)}async getPullRequestsForRepoBase(n,e={},t=100){let{page:s,repo:o,assigneeLogins:a,authorLogin:i}=n||{},u=s||1;if(!o.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let l="searchCriteria.status=1";return a&&a.length&&(l+=`&searchCriteria.reviewerId=${a[0]}`),i&&(l+=`&searchCriteria.creatorId=${i}`),await this.config.request({url:`${e.baseUrl||q}/${encodeURIComponent(o.namespace)}/${encodeURIComponent(o.project||"")}/_apis/git/repositories/${encodeURIComponent(o.name)}/pullRequests?${l}&%24top=${t}&%24skip=${(u-1)*t}`,headers:w(this.config,e)})}async getPullRequestsForRepo(n,e={}){let s=n.page||1,o=await this.getPullRequestsForRepoBase(n,e,100);return{pageInfo:{hasNextPage:o.body.value.length===100,nextPage:s+1},data:o.body.value.map(a=>le(n.repo.namespace,a))}}async getPullRequestsForRepos(n,e={}){if(!n.repos.every(o=>o.project))throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repos:t}=n||{},s=[];return await Promise.all(t.map(async o=>{try{(await this.getPullRequestsForRepoBase({repo:o,...n},e)).body.value.forEach(i=>{s.push(le(o.namespace,i))})}catch(a){if(a.statusCode!==404&&a.statusCode!==401)throw a}})),{data:s}}async getPullRequestsForProjectBase(n,e={},t=100){let{namespace:s,project:o,page:a,assigneeLogins:i,authorLogin:u}=n,l=a||1,p=new URL(`${e.baseUrl||q}/${encodeURIComponent(s)}/${encodeURIComponent(o)}/_apis/git/pullRequests`);return p.searchParams.set("searchCriteria.status","1"),p.searchParams.set("$top",t.toString()),p.searchParams.set("$skip",((l-1)*t).toString()),i&&i.length&&p.searchParams.set("searchCriteria.reviewerId",i[0]),u&&p.searchParams.set("searchCriteria.creatorId",u),await this.config.request({url:p.toString(),headers:w(this.config,e)})}async getPullRequestsForProject(n,e={}){let s=n.page||1,o=await this.getPullRequestsForProjectBase(n,e,100);return{pageInfo:{hasNextPage:o.body.value.length===100,nextPage:s+1},data:o.body.value.map(a=>le(n.namespace,a))}}async getPullRequestsForProjects(n,e={}){let{projects:t}=n||{},s=[];return await Promise.all(t.map(async o=>{try{(await this.getPullRequestsForProjectBase({...o,...n},e)).body.value.forEach(i=>{s.push(le(o.namespace,i))})}catch(a){if(a.statusCode!==404&&a.statusCode!==401)throw a}})),{data:s}}async getAzurePullRequestLastMergeStatus(n,e={}){if(!n.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:{namespace:t,project:s,name:o},pullRequestId:a}=n,i=await this.config.request({url:`${e.baseUrl||q}/${encodeURIComponent(t)}/${encodeURIComponent(s||"")}/_apis/git/repositories/${o}/pullrequests/${a}?includeCommits=true?api-version=6.0`,headers:{...w(this.config,e)}});if(!i.body.mergeStatus)throw new Error("Could not fetch pull request");return{data:i.body.mergeStatus}}async updatePullRequest(n,e,t){return await this.config.request({method:"PATCH",url:`${t.baseUrl||q}/${encodeURIComponent(n.repository.owner.login)}/${encodeURIComponent(n.repository.project)}/_apis/git/repositories/${n.repository.name}/pullrequests/${n.id}?api-version=6.0`,body:e,headers:{...w(this.config,t),"Content-Type":"application/json"}})}async closePullRequest(n,e={}){let{pullRequest:t}=n,s={status:"abandoned"};if(!(await this.updatePullRequest(t,JSON.stringify(s),e)).body.status)throw new Error("Could not close pull request")}async mergePullRequest(n,e={}){var u;let{pullRequest:t,mergeStrategy:s}=n,o;switch(s){case"MERGE_COMMIT":{o="noFastForward";break}case"REBASE":{o="rebase";break}case"REBASE_THEN_MERGE_COMMIT":{o="rebaseMerge";break}case"SQUASH":{o="squash";break}}let a={completionOptions:{mergeStrategy:o},lastMergeSourceCommit:{commitId:(u=t.headRef)==null?void 0:u.oid},status:"completed"};if(!(await this.updatePullRequest(t,JSON.stringify(a),e)).body.status)throw new Error("Could not merge pull request")}async addPullRequestLabel(n,e={}){let{pullRequest:t,label:s}=n;if(!t.repository.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let o={name:s.name};if(!(await this.config.request({method:"POST",url:`${e.baseUrl||q}/${encodeURIComponent(t.repository.owner.login)}/${encodeURIComponent(t.repository.project)}/_apis/git/repositories/${t.repository.name}/pullrequests/${t.id}/labels?api-version=6.0`,body:JSON.stringify(o),headers:{...w(this.config,e),"Content-Type":"application/json"}})).body.id)throw new Error("Could not add pull request label")}async removePullRequestLabel(n,e={}){let{pullRequest:t,label:s}=n;if(!t.repository.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');await this.config.request({method:"DELETE",url:`${e.baseUrl||q}/${encodeURIComponent(t.repository.owner.login)}/${encodeURIComponent(t.repository.project)}/_apis/git/repositories/${t.repository.name}/pullrequests/${t.id}/labels/${encodeURIComponent(s.name)}?api-version=6.0`,headers:{...w(this.config,e)}})}async setPullRequestLabels(n,e={}){let{pullRequest:t,labels:s}=n;if(!t.repository.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let o=t.labels;if(!o)throw new Error('Azure DevOps requires "labels" for this function.');for(let a of s)o.find(i=>i.id===a.id)||await this.addPullRequestLabel({pullRequest:t,label:a},e);for(let a of o)s.find(i=>a.id===i.id)||await this.removePullRequestLabel({pullRequest:t,label:a},e)}async setPullRequestAsDraft(n,e={}){let{pullRequest:t,isDraft:s}=n,o={isDraft:s};if(!(await this.updatePullRequest(t,JSON.stringify(o),e)).body.status)throw new Error("Could not set the pull request as draft")}async addPullRequestReviewer(n,e={}){let{pullRequest:t,reviewer:s,isRequired:o}=n,a={id:s.id,isRequired:o};if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||q}/${encodeURIComponent(t.repository.owner.login)}/${encodeURIComponent(t.repository.project)}/_apis/git/repositories/${t.repository.name}/pullrequests/${t.id}/reviewers/${s.id}?api-version=6.0`,body:JSON.stringify(a),headers:{...w(this.config,e),"Content-Type":"application/json"}})).body.id)throw new Error("Could not add pull request reviewer")}async removePullRequestReviewer(n,e={}){let{pullRequest:t,reviewer:s}=n;await this.config.request({method:"DELETE",url:`${e.baseUrl||q}/${encodeURIComponent(t.repository.owner.login)}/${encodeURIComponent(t.repository.project)}/_apis/git/repositories/${t.repository.name}/pullrequests/${t.id}/reviewers/${s.id}?api-version=6.0`,headers:{...w(this.config,e),Accept:"application/json"}})}async setPullRequestReviewers(n,e={}){let{pullRequest:t,reviewers:s}=n;for(let o of s)t.assignees.find(a=>a.id===o.id)||await this.addPullRequestReviewer({pullRequest:t,reviewer:o,isRequired:!0},e);for(let o of t.assignees)s.find(a=>o.id===a.id)||await this.removePullRequestReviewer({pullRequest:t,reviewer:o},e)}async getIssuesForAzureProject(n,e={}){let{page:t,assigneeLogins:s,authorLogin:o,mentionLogin:a,labelNames:i,statusByWorkItemIdByStatusId:u}=n||{},l=t||1,p=200,d=["[Microsoft.VSTS.Common.ClosedDate] = ''","[System.TeamProject] = @project","[Microsoft.VSTS.Common.ResolvedDate] = ''"];o&&d.push(`[System.CreatedBy] = '${o.replace("'","''")}'`),s&&s[0]&&d.push(`[System.AssignedTo] = '${s[0].replace("'","''")}'`),a&&d.push("[System.Id] IN (@recentMentions)"),i&&i.forEach(R=>d.push(`[System.Tags] Contains '${R}'`));let c=`Select [Microsoft.VSTS.Common.ClosedDate], [Microsoft.VSTS.Common.ResolvedDate] From WorkItems Where ${d.join(" AND ")} order by [System.CreatedDate] desc`,g=await this.config.request({url:`${e.baseUrl||q}/${encodeURIComponent(n.namespace)}/${encodeURIComponent(n.project)}/_apis/wit/wiql?api-version=6.0`,body:JSON.stringify({query:c}),method:"POST",headers:{...w(this.config,e),"Content-Type":"application/json"}}),m=g.body.workItems.slice((l-1)*p,p*l).map(R=>R.id);if(m.length==0)return{pageInfo:{hasNextPage:!1,nextPage:null},data:[]};let h=await this.config.request({url:`${e.baseUrl||q}/${encodeURIComponent(n.namespace)}/${encodeURIComponent(n.project)}/_apis/wit/workitemsbatch?api-version=6.0`,body:JSON.stringify({ids:m,$expand:"Links"}),method:"POST",headers:{...w(this.config,e),"Content-Type":"application/json"}});return{pageInfo:{hasNextPage:g.body.workItems.length>p*l,nextPage:l+1},data:h.body.value.map(R=>Zt(n.namespace,n.project,R,u||{}))}}async getPermissionsForRepos(n,e={}){let{namespace:t,repos:s}=n,o={4:["canPush","canCreateWebhook"],1024:["isAdmin"],2048:["isAdmin"],4096:["isAdmin"],8192:["isAdmin"]},a=p=>{let d="2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87",c=`repoV2/${p.projectId}/${p.id}`;return Object.keys(o).map(g=>({securityNamespaceId:d,token:c,permissions:g}))},i={alwaysAllowAdministrators:!1,evaluations:s.flatMap(a)};return{data:(await this.config.request({method:"POST",url:`${e.baseUrl||q}/${encodeURIComponent(t)}/_apis/security/permissionevaluationbatch?api-version=7.1`,body:JSON.stringify(i),headers:{...w(this.config,e),"Content-Type":"application/json"}})).body.evaluations.reduce((p,d)=>{let[,c,g]=d.token.split("/"),m=`${c}/${g}`,h=o[d.permissions];for(let R of h)p[m]===void 0&&(p[m]={canCreateWebhook:!0,canPush:!0,isAdmin:!0}),d.value===!1&&(p[m][R]=!1);return p},{})}}async decorateReposWithPermissions(n,e={}){let{namespace:t,repos:s}=n,o=await this.getPermissionsForRepos({namespace:t,repos:s},e);return{data:s.map(a=>({...a,permissions:o.data[`${a.projectId}/${a.id}`]}))}}async updateIssue(n,e,t={}){return await this.config.request({method:"PATCH",url:`${t.baseUrl||q}/${encodeURIComponent(n.project.namespace)}/${encodeURIComponent(n.project.name)}/_apis/wit/workitems/${n.id}?api-version=6.0`,body:JSON.stringify(e),headers:{...w(this.config,t),"Content-Type":"application/json-patch+json"}})}async setIssueStatus(n,e={}){var i;let{issue:t,status:s}=n,o=[{op:"add",path:"/fields/System.State",value:s.name}];if(!((i=(await this.updateIssue(t,o,e)).body.fields)!=null&&i["System.State"]))throw new Error("Could not set issue status")}async setIssueAssignee(n,e={}){var i;let{issue:t,assignee:s}=n,o=[{op:"add",path:"/fields/System.AssignedTo",value:(s==null?void 0:s.name)??""}];if(!((i=(await this.updateIssue(t,o,e)).body.fields)!=null&&i["System.State"]))throw new Error("Could not set issue assignee")}async setIssueLabels(n,e={}){var u;let{issue:t,labels:s}=n,a=[{op:"replace",path:"/fields/System.Tags",value:s.map(l=>l.name).join(";")}];if(!((u=(await this.updateIssue(t,a,e)).body.fields)!=null&&u["System.Tags"]))throw new Error("Could not set issue tags")}async getIssueTypesForAzureProject(n,e={}){if(!n.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{namespace:t,project:s}=n;return{data:(await this.config.request({url:`${e.baseUrl||q}/${encodeURIComponent(t)}/${encodeURIComponent(s||"")}/_apis/wit/workitemtypes?api-version=6.0`,headers:{...w(this.config,e)}})).body.value}}async getLabelsForProject(n,e={}){let{namespace:t,project:s}=n;return{data:(await this.config.request({url:`${e.baseUrl||q}/${encodeURIComponent(t)}/${encodeURIComponent(s||"")}/_apis/wit/tags?api-version=6.0`,headers:{...w(this.config,e)}})).body.value.map(a=>({color:null,description:null,id:a.id,name:a.name,url:a.url}))}}};var C=(r,n={})=>I(n.token||r.token,n.isPAT||r.isPAT);var D="https://api.bitbucket.org/2.0",Yt={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},xe=r=>({id:r.uuid,name:r.display_name||r.nickname,username:r.nickname||r.display_name,email:null,avatarUrl:r.links.avatar.href,url:r.links.html.href}),ft=r=>{var n,e;return{id:r.uuid,namespace:r.workspace.slug,name:r.slug,webUrl:r.links.html.href,httpsUrl:((n=r.links.clone.find(t=>t.name==="https"))==null?void 0:n.href)??null,sshUrl:((e=r.links.clone.find(t=>t.name==="ssh"))==null?void 0:e.href)??null,defaultBranch:{name:r.mainbranch.name},permissions:null}},Oe=r=>{let n=r.id;return{id:n.toString(),title:r.title,number:n,state:Yt[r.state],isDraft:!1,commentCount:r.comment_count,upvoteCount:null,author:xe(r.author),createdDate:new Date(r.created_on),updatedDate:new Date(r.updated_on),closedDate:null,mergedDate:null,repository:{id:r.destination.repository.uuid,name:r.destination.repository.name,owner:{login:r.destination.repository.full_name.split("/")[0]},remoteInfo:null},headCommit:{buildStatuses:null},baseRef:{name:r.destination.branch.name,oid:r.destination.commit.hash},headRef:{name:r.source.branch.name,oid:r.source.commit.hash},url:r.links.html.href,assignees:null,reviews:null,reviewDecision:null,additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN",permissions:null}},er=r=>{switch(r){case"owner":case"admin":return{canCreateWebhook:!0,canPush:!0,isAdmin:!0};case"write":return{canCreateWebhook:!1,canPush:!0,isAdmin:!1};case"read":case"none":return{canCreateWebhook:!1,canPush:!1,isAdmin:!1}}},K=class extends ${async refreshToken(n){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 ${n.base64ClientIDColonClientSecret}`},body:`grant_type=refresh_token&refresh_token=${n.refreshToken}`})).body}}async getCurrentUser(n={},e={}){let t=await this.config.request({url:`${D}/user`,headers:C(this.config,e)});return{data:xe(t.body)}}async getUserForCommit(n,e={}){var a;let s=(await this.config.request({url:`${D}/repositories/${n.repo.namespace}/${n.repo.name}/commit/${n.oid}`,headers:C(this.config,e)})).body.author,o=s.raw.match(/([^<]+)<(.+)>/);return{data:{name:o?o[1].trim():null,email:o?o[2]:null,avatarUrl:((a=s.user)==null?void 0:a.links.avatar.href)||null}}}async getRepo(n,e={}){let t=await this.config.request({url:`${D}/repositories/${n.namespace}/${n.name}`,headers:C(this.config,e)});return{data:ft(t.body)}}async getRepos(n,e={}){let t=[],s=[];return await Promise.all(n.map(async o=>{try{let a=await this.getRepo(o,e);t.push(a.data)}catch(a){s.push({input:o,error:a})}})),{data:t,errors:s}}async getReposForCurrentUser(n,e={}){let t=new URL(`${D}/repositories`);t.searchParams.set("role","member"),t.searchParams.set("pagelen",E.toString()),n.cursor&&t.searchParams.set("after",n.cursor);let s=await this.config.request({url:t.toString(),headers:C(this.config,e)}),o=!!s.body.next,a=null;return s.body.next&&(a=new URL(s.body.next).searchParams.get("after")),{pageInfo:{hasNextPage:o,endCursor:a},data:s.body.values.map(ft)}}async getBranches(n,e={}){var a;let t=new URL(`${D}/repositories/${n.repo.namespace}/${n.repo.name}/refs/branches`);t.searchParams.set("page",((a=n.page)==null?void 0:a.toString())||"1"),t.searchParams.set("pagelen",E.toString());let s=await this.config.request({url:t.toString(),headers:C(this.config,e)}),o=!!s.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?s.body.page+1:null},data:s.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(n,e={}){let t=new URL(`${D}/repositories/${n.repo.namespace}/${n.repo.name}/refs/tags`);t.searchParams.set("pagelen",E.toString()),n.cursor&&t.searchParams.set("page",n.cursor);let s=await this.config.request({url:t.toString(),headers:C(this.config,e)}),o=!!s.body.next,a=null;return s.body.next&&(a=new URL(s.body.next).searchParams.get("page")),{pageInfo:{hasNextPage:o,endCursor:a},data:s.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 getWorkspacesForUser(n,e={}){var a;let t=new URL(`${D}/user/permissions/workspaces`);t.searchParams.set("page",((a=n.page)==null?void 0:a.toString())||"1"),t.searchParams.set("pagelen","50");let s=await this.config.request({url:t.toString(),headers:C(this.config,e)}),o=!!s.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?s.body.page+1:null},data:s.body.values.map(i=>({id:i.workspace.uuid,slug:i.workspace.slug,name:i.workspace.name}))}}async getPullRequestsForUserAndWorkspace(n,e={}){var a;let t=new URL(`${D}/workspaces/${n.workspaceSlug}/pullrequests/${n.userId}`);t.searchParams.set("page",((a=n.page)==null?void 0:a.toString())||"1"),t.searchParams.set("pagelen","50");let s=await this.config.request({url:t.toString(),headers:C(this.config,e)}),o=!!s.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?s.body.page+1:null},data:s.body.values.map(Oe)}}async getPullRequestsForRepoBase(n,e={}){var s;let t=new URL(`${D}/repositories/${encodeURI(n.repo.namespace)}/${encodeURI(n.repo.name)}/pullrequests?state=OPEN`);return t.searchParams.set("page",((s=n.page)==null?void 0:s.toString())||"1"),t.searchParams.set("pagelen","50"),await this.config.request({url:t.toString(),headers:C(this.config,e)})}async getPullRequestsForRepo(n,e={}){let t=[],s=await this.getPullRequestsForRepoBase(n,e);s.body.values.forEach(a=>{if(n.authorLogin&&a.author.uuid!==n.authorLogin)return null;t.push(Oe(a))});let o=!!s.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?s.body.page+1:null},data:t}}async getPullRequestsForRepos(n,e={}){let t=[];return await Promise.all(n.repos.map(async s=>{try{(await this.getPullRequestsForRepoBase({repo:s,...n},e)).body.values.forEach(a=>{if(n.authorLogin&&a.author.uuid!==n.authorLogin)return null;t.push(Oe(a))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:t}}async getAccountsForWorkspace(n,e={}){var a;let t=new URL(`${D}/workspaces/${encodeURI(n.workspace)}/members`);t.searchParams.set("page",((a=n.page)==null?void 0:a.toString())||"1"),t.searchParams.set("pagelen","100");let s=await this.config.request({url:t.toString(),headers:C(this.config,e)}),o=!!s.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?s.body.page+1:null},data:s.body.values.map(i=>xe(i.user))}}async getReposPermissionsForCurrentUser(n,e={}){var a;let t=new URL(`${D}/user/permissions/repositories`);t.searchParams.set("page",((a=n.page)==null?void 0:a.toString())||"1"),t.searchParams.set("pagelen","100");let s=await this.config.request({url:t.toString(),headers:C(this.config,e)}),o=!!s.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?s.body.page+1:null},data:s.body.values.reduce((i,u)=>({...i,[u.repository.uuid]:er(u.permission)}),{})}}async decorateReposWithPermissions(n,e={}){let t={},s=1;do{let o=await this.getReposPermissionsForCurrentUser({page:s},e);t={...o.data,...t},s=o.pageInfo.hasNextPage?o.pageInfo.nextPage:null}while(s!==null);return{data:n.repos.map(o=>({...o,permissions:t[o.id]??{canCreateWebhook:!1,canPush:!1,isAdmin:!1}}))}}async closePullRequest(n,e={}){let{pullRequest:t}=n;if(!(await this.config.request({method:"POST",url:`${D}/repositories/${t.repository.owner.login}/${t.repository.name}/pullrequests/${t.id}/decline`,headers:C(this.config,e)})).body.title)throw new Error("Could not close pull request")}async mergePullRequest(n,e={}){let{pullRequest:t,mergeStrategy:s}=n,o;switch(s){case"MERGE_COMMIT":{o="merge_commit";break}case"FAST_FORWARD":{o="fast_forward";break}case"SQUASH":{o="squash";break}}let a={merge_strategy:o,type:"pullrequest"};if(!(await this.config.request({method:"POST",url:`${D}/repositories/${t.repository.owner.login}/${t.repository.name}/pullrequests/${t.id}/merge`,body:JSON.stringify(a),headers:{...C(this.config,e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not merge pull request")}async setPullRequestReviewers(n,e={}){let{pullRequest:t,reviewers:s}=n,o={reviewers:s.map(i=>{if(i.username)throw new Error('Bitbucket reviewer requires "username" for this function.');return{username:i.username}})};if(!(await this.config.request({method:"PUT",url:`${D}/repositories/${t.repository.owner.login}/${t.repository.name}/pullrequests/${t.id}`,body:JSON.stringify(o),headers:{...C(this.config,e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not set pull request reviewers")}};var Ne=r=>({name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrl??null,id:r.id.toString(),username:r.name,url:r.links.self[0].href}),ke=r=>{var u,l,p,d,c,g;let n={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},e={UNAPPROVED:"REVIEW_REQUESTED",NEEDS_WORK:"CHANGES_REQUESTED",APPROVED:"APPROVED"},t=r.reviewers.map(m=>({reviewer:Ne(m.user),state:e[m.status]})),s=((u=r.toRef.repository.links.clone.find(m=>m.name==="ssh"))==null?void 0:u.href)??null,o=((l=r.toRef.repository.links.clone.find(m=>m.name==="https"))==null?void 0:l.href)??null;o||(o=((p=r.toRef.repository.links.clone.find(m=>m.name==="http"))==null?void 0:p.href)??null);let a=((d=r.fromRef.repository.links.clone.find(m=>m.name==="ssh"))==null?void 0:d.href)??null,i=((c=r.fromRef.repository.links.clone.find(m=>m.name==="https"))==null?void 0:c.href)??null;return i||(i=((g=r.fromRef.repository.links.clone.find(m=>m.name==="http"))==null?void 0:g.href)??null),{id:r.id.toString(),number:r.id,title:r.title,url:r.links.self[0].href,state:n[r.state],isDraft:!1,createdDate:new Date(r.createdDate),updatedDate:new Date(r.updatedDate),closedDate:r.closedDate?new Date(r.closedDate):null,mergedDate:r.state=="MERGED"&&r.closedDate?new Date(r.closedDate):null,baseRef:{name:r.toRef.displayId,oid:r.toRef.latestCommit},headRef:{name:r.fromRef.displayId,oid:r.fromRef.latestCommit},commentCount:r.properties.commentCount,upvoteCount:null,commitCount:null,fileCount:null,additions:null,deletions:null,author:Ne(r.author.user),assignees:null,reviews:t,reviewDecision:Q(t),repository:{id:r.toRef.repository.id.toString(),name:r.toRef.repository.name,owner:{login:r.toRef.repository.project.key},remoteInfo:o&&s?{cloneUrlHTTPS:o,cloneUrlSSH:s}:null},headRepository:{id:r.fromRef.repository.id.toString(),name:r.fromRef.repository.name,owner:{login:r.fromRef.repository.project.key},remoteInfo:i&&a?{cloneUrlHTTPS:i,cloneUrlSSH:a}:null},headCommit:null,mergeableState:"UNKNOWN",permissions:null,version:r.version}},It=r=>{var n,e,t;return{id:r.id.toString(),namespace:r.project.key,name:r.slug,webUrl:((n=r.links.self[0])==null?void 0:n.href)??null,httpsUrl:((e=r.links.clone.find(s=>s.name==="https"||s.name==="http"))==null?void 0:e.href)??null,sshUrl:((t=r.links.clone.find(s=>s.name==="ssh"))==null?void 0:t.href)??null,defaultBranch:null,permissions:null}},V=class extends T{getBaseUrl(n){let e=n.baseUrl||this.config.baseUrl;if(!e)throw new Error('Bitbucket Server requires "baseUrl"');return e}getRequestHeaders(n){return I(n.token||this.config.token)}async getCurrentUser(n={},e={}){let t=await this.config.request({url:`${this.getBaseUrl(e)}/users?limit=2`,headers:this.getRequestHeaders(e)}),{headers:{"x-auserid":s,"x-ausername":o}}=t,a=s?parseInt(s,10):null,i=decodeURIComponent(o),l=(await this.config.request({url:`${this.getBaseUrl(e)}/users?filter=${o}&avatarSize=64`,headers:this.getRequestHeaders(e)})).body.values.find(({emailAddress:p,id:d,name:c,slug:g})=>a?a===d:i===c||i===p||i===g);if(!l)throw new Error("Could not find current Bitbucket Server user");return{data:Ne(l)}}async getRepo(n,e={}){let t=await this.config.request({url:`${this.getBaseUrl(e)}/projects/${n.namespace}/repos/${n.name}`,headers:this.getRequestHeaders(e)});return{data:It(t.body)}}async getRepos(n,e={}){let t=[],s=[];return await Promise.all(n.map(async o=>{try{let a=await this.getRepo(o,e);t.push(a.data)}catch(a){s.push({input:o,error:a})}})),{data:t,errors:s}}async getReposForCurrentUser(n,e={}){let t=n.page??0,s=await this.config.request({url:`${this.getBaseUrl(e)}/repos?start=${t}`,headers:this.getRequestHeaders(e)});return{pageInfo:{hasNextPage:!s.body.isLastPage,nextPage:s.body.nextPageStart},data:s.body.values.map(It)}}async getPullRequestsForRepoBase(n,e={}){var s;let t=new URL(`${this.getBaseUrl(e)}/projects/${encodeURI(n.repo.namespace)}/repos/${encodeURI(n.repo.name)}/pull-requests?state=OPEN`);return t.searchParams.set("start",((s=n.page)==null?void 0:s.toString())||"0"),t.searchParams.set("limit","50"),await this.config.request({url:t.toString(),headers:this.getRequestHeaders(e)})}async getPullRequestsForRepo(n,e={}){let t=[],s=await this.getPullRequestsForRepoBase(n,e);s.body.values.forEach(a=>{if(n.authorLogin&&a.author.user.name!==n.authorLogin)return null;t.push(ke(a))});let o=s.body.values.length!==0;return{pageInfo:{hasNextPage:o,nextPage:o?s.body.start+s.body.values.length:null},data:t}}async getPullRequestsForRepos(n,e={}){let t=[];return await Promise.all(n.repos.map(async s=>{try{(await this.getPullRequestsForRepoBase({repo:s,...n},e)).body.values.forEach(a=>{if(n.authorLogin&&a.author.user.name!==n.authorLogin)return null;t.push(ke(a))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:t}}async getPullRequestsForCurrentUser(n,e={}){var a;let t=new URL(`${this.getBaseUrl(e)}/dashboard/pull-requests`);t.searchParams.set("state","OPEN"),t.searchParams.set("start",((a=n.page)==null?void 0:a.toString())||"0"),t.searchParams.set("limit","50");let s=await this.config.request({url:t.toString(),headers:this.getRequestHeaders(e)}),o=s.body.values.length!==0;return{pageInfo:{hasNextPage:o,nextPage:o?s.body.start+s.body.values.length:null},data:s.body.values.map(ke)}}async closePullRequest(n,e={}){let{pullRequest:t}=n;if(t.version===void 0)throw new Error('Bitbucket Server requires "version" for this function.');if(!(await this.config.request({method:"POST",url:`${this.getBaseUrl(e)}/projects/${t.repository.owner.login}/repos/${t.repository.name}/pull-requests/${t.id}/decline`,body:JSON.stringify({version:t.version}),headers:{...this.getRequestHeaders(e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not close pull request")}async mergePullRequest(n,e={}){let{pullRequest:t,mergeStrategyId:s}=n;if(n.mergeStrategy)throw new Error('Bitbucket Server uses "mergeStrategyId" instead of "mergeStrategy".');if(t.version===void 0)throw new Error('Bitbucket Server requires "version" for this function.');if(!(await this.config.request({method:"POST",url:`${this.getBaseUrl(e)}/projects/${t.repository.owner.login}/repos/${t.repository.name}/pull-requests/${t.id}/merge`,body:JSON.stringify({strategyId:s,version:t.version}),headers:{...this.getRequestHeaders(e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not merge pull request")}async getMergeStrategies(n={}){let e=await this.config.request({url:`${this.getBaseUrl(n)}/admin/pull-requests/git`,headers:{...this.getRequestHeaders(n),"Content-Type":"application/json"}});return{data:{defaultStrategy:e.body.mergeConfig.defaultStrategy,strategies:e.body.mergeConfig.strategies}}}async setPullRequestReviewers(n,e={}){let{pullRequest:t,reviewers:s}=n;if(t.version===void 0)throw new Error('Bitbucket Server requires "version" for this function.');let o={reviewers:s.map(i=>{if(i.username)throw new Error('Bitbucket Server reviewer requires "username" for this function.');return{user:{name:i.username}}}),version:t.version};if(!(await this.config.request({method:"PUT",url:`${this.getBaseUrl(e)}/projects/${t.repository.owner.login}/repos/${t.repository.name}/pull-requests/${t.id}`,body:JSON.stringify(o),headers:{...this.getRequestHeaders(e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not set pull request reviewers")}};var vt=require("js-base64");var de=(e=>(e.Open="OPEN",e.Closed="CLOSED",e))(de||{});var b=class extends Error{constructor(e,t){let s=t==null?void 0:t.map(a=>`'${a.message}'`).join(", "),o=s?`${e}: ${s}`:e;super(o);this.graphQLErrors=t??[]}};var tr={AS_CODE_OWNER:[3,0,0],CHECK_RUN:[3,0,0],PR_ISSUE_FULL_DATABASE_ID:[3,12,0],LATEST_REVIEWS:[3,0,0],VIEWER_CAN_MERGE_AS_ADMIN:[3,5,0]},Rt=15,bt=100,L=r=>!!r,X=(r,n)=>{let e=tr[n];for(let t=0;t<3;t++){if(r[t]>e[t])return!0;if(r[t]<e[t])return!1}return!0},ge="https://api.github.com",rr=`${ge}/graphql`,me=`
1
+ "use strict";var zt=Object.create;var le=Object.defineProperty;var Wt=Object.getOwnPropertyDescriptor;var Ht=Object.getOwnPropertyNames;var Jt=Object.getPrototypeOf,Kt=Object.prototype.hasOwnProperty;var Vt=(r,s)=>{for(var e in s)le(r,e,{get:s[e],enumerable:!0})},ct=(r,s,e,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let n of Ht(s))!Kt.call(r,n)&&n!==e&&le(r,n,{get:()=>s[n],enumerable:!(t=Wt(s,n))||t.enumerable});return r};var Xt=(r,s,e)=>(e=r!=null?zt(Jt(r)):{},ct(s||!r||!r.__esModule?le(e,"default",{value:r,enumerable:!0}):e,r)),Zt=r=>ct(le({},"__esModule",{value:!0}),r);var us={};Vt(us,{AzureDevOps:()=>K,Bitbucket:()=>V,BitbucketServer:()=>X,EntityIdentifierProviderType:()=>jt,EntityType:()=>Bt,EntityVersion:()=>_t,GitBuildStatusStage:()=>gt,GitBuildStatusState:()=>pe,GitDiffLineType:()=>Oe,GitHub:()=>ee,GitHubIssueCloseReason:()=>Mt,GitIssueState:()=>me,GitLab:()=>re,GitMergeStrategy:()=>J,GitPullRequestMergeableState:()=>H,GitPullRequestReviewState:()=>W,GitPullRequestState:()=>z,GraphQLErrors:()=>b,Jira:()=>se,JiraServer:()=>ne,PullRequestAsyncStatus:()=>Qt,Trello:()=>oe,default:()=>is,isFetch:()=>de});module.exports=Zt(us);var gt=(n=>(n.Build="build",n.Production="production",n.Staging="staging",n.Test="test",n))(gt||{}),pe=(p=>(p.ActionRequired="ACTION_REQUIRED",p.Cancelled="CANCELLED",p.Error="ERROR",p.Failed="FAILED",p.Pending="PENDING",p.Running="RUNNING",p.Skipped="SKIPPED",p.Success="SUCCESS",p.Warning="WARNING",p.OptionalActionRequired="OPTIONAL_ACTION_REQUIRED",p))(pe||{}),J=(o=>(o.MergeCommit="MERGE_COMMIT",o.Rebase="REBASE",o.RebaseThenMergeCommit="REBASE_THEN_MERGE_COMMIT",o.FastForward="FAST_FORWARD",o.Squash="SQUASH",o))(J||{}),z=(t=>(t.Open="OPEN",t.Closed="CLOSED",t.Merged="MERGED",t))(z||{}),W=(n=>(n.Approved="APPROVED",n.ChangesRequested="CHANGES_REQUESTED",n.Commented="COMMENTED",n.ReviewRequested="REVIEW_REQUESTED",n))(W||{}),H=(u=>(u.Behind="BEHIND",u.Blocked="BLOCKED",u.Conflicts="CONFLICTS",u.FailingChecks="FAILING_CHECKS",u.Mergeable="MERGEABLE",u.Unknown="UNKNOWN",u.UnknownAndBlocked="UNKNOWN_AND_BLOCKED",u.Unstable="UNSTABLE",u))(H||{}),Oe=(t=>(t.ADDED="ADDED",t.DELETED="DELETED",t.UNMODIFIED="UNMODIFIED",t))(Oe||{});var mt={APPROVED:0,COMMENTED:1,REVIEW_REQUESTED:2,CHANGES_REQUESTED:3},_=r=>!r||r.length===0?null:r.reduce((s,e)=>mt[e.state]>mt[s]?e.state:s,"APPROVED");var C=100;var ht=Xt(require("node-fetch")),ft=globalThis.fetch||ht.default;var Yt=async r=>{let s=r.headers.get("content-type")||"",e=null;if(s.startsWith("application/json")){let n=await r.text();e=n.trim().length>0?JSON.parse(n):null}else if(s.startsWith("text/")||s==="")e=await r.text();else if(s.startsWith("application/vnd.github.raw+json"))e=await r.arrayBuffer();else throw new Error(`Unsupported content-type: ${s}`);let t={body:e,headers:Object.fromEntries(r.headers.entries()),status:r.status,statusText:r.statusText};if(!r.ok){let n=new Error(r.statusText);throw Object.assign(n,{response:t}),n}return t},xe=r=>async({url:s,...e})=>{let t=await r(s,e);return Yt(t)};var de=(r,s=!1)=>r.name==="fetch"||s;var T=class{constructor(s){let e=(s==null?void 0:s.request)||ft;this.config={...s,request:de(e,s==null?void 0:s.forceIsFetch)?xe(e):e}}updateConfig(s){this.config={...this.config,...s,request:s.request&&de(s.request,(s==null?void 0:s.forceIsFetch)??this.config.forceIsFetch)?xe(s.request):this.config.request}}},x=class extends T{};var R=(r,s)=>{let e={};return r&&(e.Authorization=`${s?"Basic":"Bearer"} ${r}`),e},It=r=>r?r.reduce((s,e)=>(s[e]=!0,s),{}):void 0,B=(r,s,e)=>!r||s.some(t=>r[t])?e:"",Rt=async r=>{var n,o,a;let s=[],e=!0,t;for(;e;){let i=await r(t);s=s.concat(i.data),e=!!((n=i==null?void 0:i.pageInfo)!=null&&n.hasNextPage),t=((o=i==null?void 0:i.pageInfo)==null?void 0:o.endCursor)||((a=i==null?void 0:i.pageInfo)==null?void 0:a.nextPage)}return s};var S=(r,s={})=>R(s.token||r.token,s.isPAT||r.isPAT),bt=r=>r.url.replace("/_apis/git/repositories/","/_git/").replace(`/${r.repository.project.id}/`,`/${encodeURIComponent(r.repository.project.name)}/`).replace(`/${r.repository.id}/`,`/${encodeURIComponent(r.repository.name)}/`).replace("/pullRequests/","/pullrequest/");var yt="https://app.vssps.visualstudio.com/_apis",q="https://dev.azure.com",er={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},tr={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},ke=r=>({id:r.id,name:r.displayName??null,username:(r.uniqueName||r.displayName)??null,email:null,avatarUrl:r.imageUrl??null,url:null}),ge=r=>r.startsWith("refs/heads/")?r.replace("refs/heads/",""):r,rr=r=>{switch(r){case"conflicts":return"CONFLICTS";case"failure":return"FAILING_CHECKS";case"rejectedByPolicy":return"BLOCKED";case"succeeded":return"MERGEABLE";case"notSet":case"queued":default:return"UNKNOWN"}},ce=(r,s)=>{var n;let e=[],t=[];return s.reviewers.forEach(o=>{let a={reviewer:ke(o),state:tr[o.vote??0]||"REVIEW_REQUESTED"};o.isRequired&&e.push(a),t.push(a)}),{id:s.pullRequestId.toString(),title:s.title,number:s.codeReviewId,state:er[s.status],isDraft:s.isDraft,commentCount:null,upvoteCount:null,author:ke(s.createdBy),createdDate:new Date(s.creationDate),updatedDate:new Date(s.closedDate||s.creationDate),closedDate:s.closedDate?new Date(s.closedDate):null,mergedDate:s.closedDate&&s.status==="completed"?new Date(s.closedDate):null,repository:{id:s.repository.id,name:s.repository.name,project:s.repository.project.name,owner:{login:r},remoteInfo:null},headCommit:{buildStatuses:null},baseRef:{name:ge(s.targetRefName),oid:s.lastMergeTargetCommit.commitId},headRef:{name:ge(s.sourceRefName),oid:s.lastMergeSourceCommit.commitId},url:bt(s),assignees:s.reviewers.map(ke),reviews:t,reviewDecision:_(e),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:s.forkSource?{id:s.forkSource.repository.id,name:s.forkSource.repository.name,project:void 0,owner:{login:r},remoteInfo:null}:{id:s.repository.id,name:s.repository.name,project:s.repository.project.name,owner:{login:r},remoteInfo:null},mergeableState:rr(s.mergeStatus),labels:((n=s.labels)==null?void 0:n.map(o=>({color:null,description:null,id:o.id,name:o.name})))??[],permissions:null}},Pt=(r,s)=>({id:s.id,name:s.name,namespace:r,project:s.project.name,projectId:s.project.id,webUrl:s.webUrl,httpsUrl:s.remoteUrl,sshUrl:s.sshUrl,defaultBranch:s.defaultBranch?{name:ge(s.defaultBranch)}:null,permissions:null}),sr=(r,s,e,t)=>{var l,p,d,c,g,m;let n=e.fields,o=n["System.AssignedTo"],a=n["System.State"],i=n["System.WorkItemType"],u;return a&&i&&(u=(l=t[i])==null?void 0:l[a]),{id:e.id.toString(),number:e.id.toString(),title:n["System.Title"],commentCount:n["System.CommentCount"],author:{avatarUrl:((d=(p=n["System.CreatedBy"]._links)==null?void 0:p.avatar)==null?void 0:d.href)??null,email:null,id:n["System.CreatedBy"].id,name:n["System.CreatedBy"].uniqueName??null,username:n["System.CreatedBy"].displayName??null,url:null},closedDate:n["Microsoft.VSTS.Common.ClosedDate"]?new Date(n["Microsoft.VSTS.Common.ClosedDate"]):null,createdDate:new Date(n["System.CreatedDate"]),updatedDate:new Date(n["System.ChangedDate"]),url:e._links.html.href,assignees:o?[{avatarUrl:((g=(c=o._links)==null?void 0:c.avatar)==null?void 0:g.href)??null,email:null,id:o.id,name:o.uniqueName??null,username:o.displayName??null,url:null}]:[],description:n["System.Description"]??null,state:{name:(u==null?void 0:u.title)||a,color:null},type:n["System.WorkItemType"],repository:null,project:{namespace:r,name:s,resourceId:null,key:null,id:null},upvoteCount:0,labels:((m=e.fields["System.Tags"])==null?void 0:m.split(";").map(h=>({color:null,description:null,id:null,name:h.trim()})))??[]}},K=class extends T{async getCurrentUser(s={},e={}){if(e.isPAT||this.config.isPAT)throw new Error("Azure DevOps does not support PATs for this function.");let t=await this.config.request({url:`${yt}/profile/profiles/me`,headers:S(this.config,e)});return{data:{id:t.body.id,name:t.body.displayName,username:t.body.displayName,email:t.body.emailAddress,avatarUrl:null,url:null}}}async getCurrentUserForInstance(s,e={}){let n=(await this.config.request({url:`${q}/${encodeURIComponent(s.namespace)}/_apis/ConnectionData`,headers:S(this.config,e)})).body.authorizedUser;if(n.providerDisplayName==="Anonymous")throw new Error("Current user not found.");return{data:{id:n.id,name:n.providerDisplayName,username:n.providerDisplayName,email:n.properties.Account.$value,avatarUrl:null}}}async getUserForCommit(s,e={}){if(!s.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=(await this.config.request({url:`${q}/${encodeURIComponent(s.repo.namespace)}/${encodeURIComponent(s.repo.project)}/_apis/git/repositories/${encodeURIComponent(s.repo.name)}/commits/${s.oid}`,headers:S(this.config,e)})).body.author;return{data:{name:n.name,email:n.email,avatarUrl:n.imageUrl}}}async getOrgsForUser(s,e={}){return{data:(await this.config.request({url:`${yt}/accounts?memberId=${s.userId}&api-version=6.0`,headers:S(this.config,e)})).body.value.map(n=>({id:n.accountId,name:n.accountName}))}}async getAzureProjects(s,e={}){let t=new URL(`${q}/${encodeURIComponent(s.namespace)}/_apis/projects`);t.searchParams.set("$top",C.toString()),s.cursor&&t.searchParams.set("$skip",s.cursor);let n=await this.config.request({url:t.toString(),headers:S(this.config,e)}),o=n.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!o,endCursor:o||null},data:n.body.value.map(a=>({id:a.id,name:a.name,namespace:s.namespace}))}}async getAzureProjectScopeDescriptor(s,e={}){let{namespace:t,projectId:n}=s;return{data:{scope:(await this.config.request({url:`https://vssps.dev.azure.com/${encodeURIComponent(t)}/_apis/graph/descriptors/${n}?api-version=6.0`,headers:S(this.config,e)})).body.value}}}async getAzureGraphAccountsForAzureProject(s,e={}){let{namespace:t,projectScopeDescriptor:n,cursor:o}=s,a=new URL(`https://vssps.dev.azure.com/${encodeURIComponent(t)}/_apis/graph/users`);n&&a.searchParams.set("scopeDescriptor",n),o&&a.searchParams.set("continuationToken",o);let i=await this.config.request({url:a.toString(),headers:S(this.config,e)}),u=i.headers["x-ms-continuationtoken"];return{pageInfo:{endCursor:u||null,hasNextPage:!!u},data:i.body.value.map(l=>{var p,d,c,g;return{avatarUrl:((d=(p=l._links)==null?void 0:p.avatar)==null?void 0:d.href)??null,descriptor:l.descriptor??null,email:l.mailAddress??null,name:l.displayName??null,storageKeyURL:((g=(c=l._links)==null?void 0:c.storageKey)==null?void 0:g.href)??null,username:l.displayName??null}})}}async getAccountFromAzureGraphAccount(s,e={}){let{azureGraphAccount:t}=s;if(!t.storageKeyURL)throw new Error("Expected 'storageKeyURL' to not be null for 'azureGraphAccount'");let n=await this.config.request({url:t.storageKeyURL,headers:S(this.config,e)});return{data:{avatarUrl:t.avatarUrl,email:t.email,id:n.body.value,name:t.name,username:t.username,url:null}}}async getAccountsFromAzureGraphAccounts(s,e={}){let t=[];for(let n of s.azureGraphAccounts){let o=await this.getAccountFromAzureGraphAccount({azureGraphAccount:n},e);t.push(o.data)}return{data:t}}async getRepo(s,e={}){if(!s.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let t=await this.config.request({url:`${q}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/git/repositories/${encodeURIComponent(s.name)}`,headers:S(this.config,e)});return{data:Pt(s.namespace,t.body)}}async getRepos(s,e={}){let t=[],n=[];return await Promise.all(s.map(async o=>{try{let a=await this.getRepo(o,e);t.push(a.data)}catch(a){n.push({input:o,error:a})}})),{data:t,errors:n}}async getReposForAzureProject(s,e={}){if(!s.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');return{data:(await this.config.request({url:`${q}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/git/repositories`,headers:S(this.config,e)})).body.value.map(n=>Pt(s.namespace,n))}}async getRefs(s,e,t={}){if(!e.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=new URL(`${q}/${encodeURIComponent(e.repo.namespace)}/${encodeURIComponent(e.repo.project)}/_apis/git/repositories/${encodeURIComponent(e.repo.name)}/refs`);n.searchParams.set("filter",s),n.searchParams.set("$top",C.toString()),e.cursor&&n.searchParams.set("continuationToken",e.cursor);let o=await this.config.request({url:n.toString(),headers:S(this.config,t)}),a=o.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!a,endCursor:a||null},data:o.body.value.map(i=>({name:ge(i.name),commit:{oid:i.objectId,authoredDate:null,committedDate:null}}))}}async getBranches(s,e={}){return this.getRefs("heads",s,e)}async getTags(s,e={}){return this.getRefs("tags",s,e)}async getPullRequestsForRepoBase(s,e={},t=100){let{page:n,repo:o,assigneeLogins:a,authorLogin:i}=s||{},u=n||1;if(!o.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let l="searchCriteria.status=1";return a&&a.length&&(l+=`&searchCriteria.reviewerId=${a[0]}`),i&&(l+=`&searchCriteria.creatorId=${i}`),await this.config.request({url:`${e.baseUrl||q}/${encodeURIComponent(o.namespace)}/${encodeURIComponent(o.project||"")}/_apis/git/repositories/${encodeURIComponent(o.name)}/pullRequests?${l}&%24top=${t}&%24skip=${(u-1)*t}`,headers:S(this.config,e)})}async getPullRequestsForRepo(s,e={}){let n=s.page||1,o=await this.getPullRequestsForRepoBase(s,e,100);return{pageInfo:{hasNextPage:o.body.value.length===100,nextPage:n+1},data:o.body.value.map(a=>ce(s.repo.namespace,a))}}async getPullRequestsForRepos(s,e={}){if(!s.repos.every(o=>o.project))throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repos:t}=s||{},n=[];return await Promise.all(t.map(async o=>{try{(await this.getPullRequestsForRepoBase({repo:o,...s},e)).body.value.forEach(i=>{n.push(ce(o.namespace,i))})}catch(a){if(a.statusCode!==404&&a.statusCode!==401)throw a}})),{data:n}}async getPullRequestsForProjectBase(s,e={},t=100){let{namespace:n,project:o,page:a,assigneeLogins:i,authorLogin:u,repo:l}=s;if(l!=null&&l.project&&l.project!==o)throw new Error("Could not fetch pull requests, project mismatch");let p=a||1,d=new URL(`${e.baseUrl||q}/${encodeURIComponent(n)}/${encodeURIComponent(o)}/_apis/git/pullRequests`);return d.searchParams.set("searchCriteria.status","1"),d.searchParams.set("$top",t.toString()),d.searchParams.set("$skip",((p-1)*t).toString()),l!=null&&l.id&&(l==null?void 0:l.project)===o&&d.searchParams.set("searchCriteria.repositoryId",l.id),i&&i.length&&d.searchParams.set("searchCriteria.reviewerId",i[0]),u&&d.searchParams.set("searchCriteria.creatorId",u),await this.config.request({url:d.toString(),headers:S(this.config,e)})}async getPullRequestsForProject(s,e={}){let n=s.page||1,o=await this.getPullRequestsForProjectBase(s,e,100);return{pageInfo:{hasNextPage:(o==null?void 0:o.body.value.length)===100,nextPage:n+1},data:(o==null?void 0:o.body.value.map(a=>ce(s.namespace,a)))||[]}}async getPullRequestsForProjects(s,e={}){let{projects:t}=s||{},n=[];return await Promise.all(t.map(async o=>{try{if(!s.repo||s.repo.project&&s.repo.project===o.project){let a=await this.getPullRequestsForProjectBase({...o,...s},e);a==null||a.body.value.forEach(i=>{n.push(ce(o.namespace,i))})}}catch(a){if(a.statusCode!==404&&a.statusCode!==401)throw a}})),{data:n}}async getAzurePullRequestLastMergeStatus(s,e={}){if(!s.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repo:{namespace:t,project:n,name:o},pullRequestId:a}=s,i=await this.config.request({url:`${e.baseUrl||q}/${encodeURIComponent(t)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${a}?includeCommits=true?api-version=6.0`,headers:{...S(this.config,e)}});if(!i.body.mergeStatus)throw new Error("Could not fetch pull request");return{data:i.body.mergeStatus}}async updatePullRequest(s,e,t){return await this.config.request({method:"PATCH",url:`${t.baseUrl||q}/${encodeURIComponent(s.repository.owner.login)}/${encodeURIComponent(s.repository.project)}/_apis/git/repositories/${s.repository.name}/pullrequests/${s.id}?api-version=6.0`,body:e,headers:{...S(this.config,t),"Content-Type":"application/json"}})}async closePullRequest(s,e={}){let{pullRequest:t}=s,n={status:"abandoned"};if(!(await this.updatePullRequest(t,JSON.stringify(n),e)).body.status)throw new Error("Could not close pull request")}async mergePullRequest(s,e={}){var u;let{pullRequest:t,mergeStrategy:n}=s,o;switch(n){case"MERGE_COMMIT":{o="noFastForward";break}case"REBASE":{o="rebase";break}case"REBASE_THEN_MERGE_COMMIT":{o="rebaseMerge";break}case"SQUASH":{o="squash";break}}let a={completionOptions:{mergeStrategy:o},lastMergeSourceCommit:{commitId:(u=t.headRef)==null?void 0:u.oid},status:"completed"};if(!(await this.updatePullRequest(t,JSON.stringify(a),e)).body.status)throw new Error("Could not merge pull request")}async addPullRequestLabel(s,e={}){let{pullRequest:t,label:n}=s;if(!t.repository.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let o={name:n.name};if(!(await this.config.request({method:"POST",url:`${e.baseUrl||q}/${encodeURIComponent(t.repository.owner.login)}/${encodeURIComponent(t.repository.project)}/_apis/git/repositories/${t.repository.name}/pullrequests/${t.id}/labels?api-version=6.0`,body:JSON.stringify(o),headers:{...S(this.config,e),"Content-Type":"application/json"}})).body.id)throw new Error("Could not add pull request label")}async removePullRequestLabel(s,e={}){let{pullRequest:t,label:n}=s;if(!t.repository.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');await this.config.request({method:"DELETE",url:`${e.baseUrl||q}/${encodeURIComponent(t.repository.owner.login)}/${encodeURIComponent(t.repository.project)}/_apis/git/repositories/${t.repository.name}/pullrequests/${t.id}/labels/${encodeURIComponent(n.name)}?api-version=6.0`,headers:{...S(this.config,e)}})}async setPullRequestLabels(s,e={}){let{pullRequest:t,labels:n}=s;if(!t.repository.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let o=t.labels;if(!o)throw new Error('Azure DevOps requires "labels" for this function.');for(let a of n)o.find(i=>i.id===a.id)||await this.addPullRequestLabel({pullRequest:t,label:a},e);for(let a of o)n.find(i=>a.id===i.id)||await this.removePullRequestLabel({pullRequest:t,label:a},e)}async setPullRequestAsDraft(s,e={}){let{pullRequest:t,isDraft:n}=s,o={isDraft:n};if(!(await this.updatePullRequest(t,JSON.stringify(o),e)).body.status)throw new Error("Could not set the pull request as draft")}async addPullRequestReviewer(s,e={}){let{pullRequest:t,reviewer:n,isRequired:o}=s,a={id:n.id,isRequired:o};if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||q}/${encodeURIComponent(t.repository.owner.login)}/${encodeURIComponent(t.repository.project)}/_apis/git/repositories/${t.repository.name}/pullrequests/${t.id}/reviewers/${n.id}?api-version=6.0`,body:JSON.stringify(a),headers:{...S(this.config,e),"Content-Type":"application/json"}})).body.id)throw new Error("Could not add pull request reviewer")}async removePullRequestReviewer(s,e={}){let{pullRequest:t,reviewer:n}=s;await this.config.request({method:"DELETE",url:`${e.baseUrl||q}/${encodeURIComponent(t.repository.owner.login)}/${encodeURIComponent(t.repository.project)}/_apis/git/repositories/${t.repository.name}/pullrequests/${t.id}/reviewers/${n.id}?api-version=6.0`,headers:{...S(this.config,e),Accept:"application/json"}})}async setPullRequestReviewers(s,e={}){let{pullRequest:t,reviewers:n}=s;for(let o of n)t.assignees.find(a=>a.id===o.id)||await this.addPullRequestReviewer({pullRequest:t,reviewer:o,isRequired:!0},e);for(let o of t.assignees)n.find(a=>o.id===a.id)||await this.removePullRequestReviewer({pullRequest:t,reviewer:o},e)}async getIssuesForAzureProject(s,e={}){let{page:t,assigneeLogins:n,authorLogin:o,mentionLogin:a,labelNames:i,statusByWorkItemIdByStatusId:u}=s||{},l=t||1,p=200,d=["[Microsoft.VSTS.Common.ClosedDate] = ''","[System.TeamProject] = @project","[Microsoft.VSTS.Common.ResolvedDate] = ''"];o&&d.push(`[System.CreatedBy] = '${o.replace("'","''")}'`),n&&n[0]&&d.push(`[System.AssignedTo] = '${n[0].replace("'","''")}'`),a&&d.push("[System.Id] IN (@recentMentions)"),i&&i.forEach(I=>d.push(`[System.Tags] Contains '${I}'`));let c=`Select [Microsoft.VSTS.Common.ClosedDate], [Microsoft.VSTS.Common.ResolvedDate] From WorkItems Where ${d.join(" AND ")} order by [System.CreatedDate] desc`,g=await this.config.request({url:`${e.baseUrl||q}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/wit/wiql?api-version=6.0`,body:JSON.stringify({query:c}),method:"POST",headers:{...S(this.config,e),"Content-Type":"application/json"}}),m=g.body.workItems.slice((l-1)*p,p*l).map(I=>I.id);if(m.length==0)return{pageInfo:{hasNextPage:!1,nextPage:null},data:[]};let h=await this.config.request({url:`${e.baseUrl||q}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/wit/workitemsbatch?api-version=6.0`,body:JSON.stringify({ids:m,$expand:"Links"}),method:"POST",headers:{...S(this.config,e),"Content-Type":"application/json"}});return{pageInfo:{hasNextPage:g.body.workItems.length>p*l,nextPage:l+1},data:h.body.value.map(I=>sr(s.namespace,s.project,I,u||{}))}}async getPermissionsForRepos(s,e={}){let{namespace:t,repos:n}=s,o={4:["canPush","canCreateWebhook"],1024:["isAdmin"],2048:["isAdmin"],4096:["isAdmin"],8192:["isAdmin"]},a=p=>{let d="2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87",c=`repoV2/${p.projectId}/${p.id}`;return Object.keys(o).map(g=>({securityNamespaceId:d,token:c,permissions:g}))},i={alwaysAllowAdministrators:!1,evaluations:n.flatMap(a)};return{data:(await this.config.request({method:"POST",url:`${e.baseUrl||q}/${encodeURIComponent(t)}/_apis/security/permissionevaluationbatch?api-version=7.1`,body:JSON.stringify(i),headers:{...S(this.config,e),"Content-Type":"application/json"}})).body.evaluations.reduce((p,d)=>{let[,c,g]=d.token.split("/"),m=`${c}/${g}`,h=o[d.permissions];for(let I of h)p[m]===void 0&&(p[m]={canCreateWebhook:!0,canPush:!0,isAdmin:!0}),d.value===!1&&(p[m][I]=!1);return p},{})}}async decorateReposWithPermissions(s,e={}){let{namespace:t,repos:n}=s,o=await this.getPermissionsForRepos({namespace:t,repos:n},e);return{data:n.map(a=>({...a,permissions:o.data[`${a.projectId}/${a.id}`]}))}}async updateIssue(s,e,t={}){return await this.config.request({method:"PATCH",url:`${t.baseUrl||q}/${encodeURIComponent(s.project.namespace)}/${encodeURIComponent(s.project.name)}/_apis/wit/workitems/${s.id}?api-version=6.0`,body:JSON.stringify(e),headers:{...S(this.config,t),"Content-Type":"application/json-patch+json"}})}async setIssueStatus(s,e={}){var i;let{issue:t,status:n}=s,o=[{op:"add",path:"/fields/System.State",value:n.name}];if(!((i=(await this.updateIssue(t,o,e)).body.fields)!=null&&i["System.State"]))throw new Error("Could not set issue status")}async setIssueAssignee(s,e={}){var i;let{issue:t,assignee:n}=s,o=[{op:"add",path:"/fields/System.AssignedTo",value:(n==null?void 0:n.name)??""}];if(!((i=(await this.updateIssue(t,o,e)).body.fields)!=null&&i["System.State"]))throw new Error("Could not set issue assignee")}async setIssueLabels(s,e={}){var u;let{issue:t,labels:n}=s,a=[{op:"replace",path:"/fields/System.Tags",value:n.map(l=>l.name).join(";")}];if(!((u=(await this.updateIssue(t,a,e)).body.fields)!=null&&u["System.Tags"]))throw new Error("Could not set issue tags")}async getIssueTypesForAzureProject(s,e={}){if(!s.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{namespace:t,project:n}=s;return{data:(await this.config.request({url:`${e.baseUrl||q}/${encodeURIComponent(t)}/${encodeURIComponent(n||"")}/_apis/wit/workitemtypes?api-version=6.0`,headers:{...S(this.config,e)}})).body.value}}async getLabelsForProject(s,e={}){let{namespace:t,project:n}=s;return{data:(await this.config.request({url:`${e.baseUrl||q}/${encodeURIComponent(t)}/${encodeURIComponent(n||"")}/_apis/wit/tags?api-version=6.0`,headers:{...S(this.config,e)}})).body.value.map(a=>({color:null,description:null,id:a.id,name:a.name,url:a.url}))}}};var D=(r,s={})=>R(s.token||r.token,s.isPAT||r.isPAT);var L="https://api.bitbucket.org/2.0",nr={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},Fe=r=>({id:r.uuid,name:r.display_name||r.nickname,username:r.nickname||r.display_name,email:null,avatarUrl:r.links.avatar.href,url:r.links.html.href}),wt=r=>{var s,e;return{id:r.uuid,namespace:r.workspace.slug,name:r.slug,webUrl:r.links.html.href,httpsUrl:((s=r.links.clone.find(t=>t.name==="https"))==null?void 0:s.href)??null,sshUrl:((e=r.links.clone.find(t=>t.name==="ssh"))==null?void 0:e.href)??null,defaultBranch:{name:r.mainbranch.name},permissions:null}},Ne=r=>{let s=r.id;return{id:s.toString(),title:r.title,number:s,state:nr[r.state],isDraft:!1,commentCount:r.comment_count,upvoteCount:null,author:Fe(r.author),createdDate:new Date(r.created_on),updatedDate:new Date(r.updated_on),closedDate:null,mergedDate:null,repository:{id:r.destination.repository.uuid,name:r.destination.repository.name,owner:{login:r.destination.repository.full_name.split("/")[0]},remoteInfo:null},headCommit:{buildStatuses:null},baseRef:{name:r.destination.branch.name,oid:r.destination.commit.hash},headRef:{name:r.source.branch.name,oid:r.source.commit.hash},url:r.links.html.href,assignees:null,reviews:null,reviewDecision:null,additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN",permissions:null}},or=r=>{switch(r){case"owner":case"admin":return{canCreateWebhook:!0,canPush:!0,isAdmin:!0};case"write":return{canCreateWebhook:!1,canPush:!0,isAdmin:!1};case"read":case"none":return{canCreateWebhook:!1,canPush:!1,isAdmin:!1}}},V=class extends T{async refreshToken(s){return{data:(await this.config.request({url:"https://bitbucket.org/site/oauth2/access_token",method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Authorization:`Basic ${s.base64ClientIDColonClientSecret}`},body:`grant_type=refresh_token&refresh_token=${s.refreshToken}`})).body}}async getCurrentUser(s={},e={}){let t=await this.config.request({url:`${L}/user`,headers:D(this.config,e)});return{data:Fe(t.body)}}async getUserForCommit(s,e={}){var a;let n=(await this.config.request({url:`${L}/repositories/${s.repo.namespace}/${s.repo.name}/commit/${s.oid}`,headers:D(this.config,e)})).body.author,o=n.raw.match(/([^<]+)<(.+)>/);return{data:{name:o?o[1].trim():null,email:o?o[2]:null,avatarUrl:((a=n.user)==null?void 0:a.links.avatar.href)||null}}}async getRepo(s,e={}){let t=await this.config.request({url:`${L}/repositories/${s.namespace}/${s.name}`,headers:D(this.config,e)});return{data:wt(t.body)}}async getRepos(s,e={}){let t=[],n=[];return await Promise.all(s.map(async o=>{try{let a=await this.getRepo(o,e);t.push(a.data)}catch(a){n.push({input:o,error:a})}})),{data:t,errors:n}}async getReposForCurrentUser(s,e={}){let t=new URL(`${L}/repositories`);t.searchParams.set("role","member"),t.searchParams.set("pagelen",C.toString()),s.cursor&&t.searchParams.set("after",s.cursor);let n=await this.config.request({url:t.toString(),headers:D(this.config,e)}),o=!!n.body.next,a=null;return n.body.next&&(a=new URL(n.body.next).searchParams.get("after")),{pageInfo:{hasNextPage:o,endCursor:a},data:n.body.values.map(wt)}}async getBranches(s,e={}){var a;let t=new URL(`${L}/repositories/${s.repo.namespace}/${s.repo.name}/refs/branches`);t.searchParams.set("page",((a=s.page)==null?void 0:a.toString())||"1"),t.searchParams.set("pagelen",C.toString());let n=await this.config.request({url:t.toString(),headers:D(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(i=>{let u=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:u,committedDate:u}}})}}async getTags(s,e={}){let t=new URL(`${L}/repositories/${s.repo.namespace}/${s.repo.name}/refs/tags`);t.searchParams.set("pagelen",C.toString()),s.cursor&&t.searchParams.set("page",s.cursor);let n=await this.config.request({url:t.toString(),headers:D(this.config,e)}),o=!!n.body.next,a=null;return n.body.next&&(a=new URL(n.body.next).searchParams.get("page")),{pageInfo:{hasNextPage:o,endCursor:a},data:n.body.values.map(i=>{let u=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:u,committedDate:u}}})}}async getWorkspacesForUser(s,e={}){var a;let t=new URL(`${L}/user/permissions/workspaces`);t.searchParams.set("page",((a=s.page)==null?void 0:a.toString())||"1"),t.searchParams.set("pagelen","50");let n=await this.config.request({url:t.toString(),headers:D(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(i=>({id:i.workspace.uuid,slug:i.workspace.slug,name:i.workspace.name}))}}async getPullRequestsForUserAndWorkspace(s,e={}){var a;let t=new URL(`${L}/workspaces/${s.workspaceSlug}/pullrequests/${s.userId}`);if(t.searchParams.set("page",((a=s.page)==null?void 0:a.toString())||"1"),t.searchParams.set("pagelen","50"),s.repos&&s.repos.length>0){let i=`state = "open" AND (${s.repos.map(u=>`source.repository.full_name = "${u.namespace}/${u.name}"`).join(" OR ")})`;t.searchParams.set("q",i)}let n=await this.config.request({url:t.toString(),headers:D(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(Ne)}}async getPullRequestsForRepoBase(s,e={}){var n;let t=new URL(`${L}/repositories/${encodeURI(s.repo.namespace)}/${encodeURI(s.repo.name)}/pullrequests?state=OPEN`);return t.searchParams.set("page",((n=s.page)==null?void 0:n.toString())||"1"),t.searchParams.set("pagelen","50"),await this.config.request({url:t.toString(),headers:D(this.config,e)})}async getPullRequestsForRepo(s,e={}){let t=[],n=await this.getPullRequestsForRepoBase(s,e);n.body.values.forEach(a=>{if(s.authorLogin&&a.author.uuid!==s.authorLogin)return null;t.push(Ne(a))});let o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:t}}async getPullRequestsForRepos(s,e={}){let t=[];return await Promise.all(s.repos.map(async n=>{try{(await this.getPullRequestsForRepoBase({repo:n,...s},e)).body.values.forEach(a=>{if(s.authorLogin&&a.author.uuid!==s.authorLogin)return null;t.push(Ne(a))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:t}}async getAccountsForWorkspace(s,e={}){var a;let t=new URL(`${L}/workspaces/${encodeURI(s.workspace)}/members`);t.searchParams.set("page",((a=s.page)==null?void 0:a.toString())||"1"),t.searchParams.set("pagelen","100");let n=await this.config.request({url:t.toString(),headers:D(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(i=>Fe(i.user))}}async getReposPermissionsForCurrentUser(s,e={}){var a;let t=new URL(`${L}/user/permissions/repositories`);t.searchParams.set("page",((a=s.page)==null?void 0:a.toString())||"1"),t.searchParams.set("pagelen","100");let n=await this.config.request({url:t.toString(),headers:D(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.reduce((i,u)=>({...i,[u.repository.uuid]:or(u.permission)}),{})}}async decorateReposWithPermissions(s,e={}){let t={},n=1;do{let o=await this.getReposPermissionsForCurrentUser({page:n},e);t={...o.data,...t},n=o.pageInfo.hasNextPage?o.pageInfo.nextPage:null}while(n!==null);return{data:s.repos.map(o=>({...o,permissions:t[o.id]??{canCreateWebhook:!1,canPush:!1,isAdmin:!1}}))}}async closePullRequest(s,e={}){let{pullRequest:t}=s;if(!(await this.config.request({method:"POST",url:`${L}/repositories/${t.repository.owner.login}/${t.repository.name}/pullrequests/${t.id}/decline`,headers:D(this.config,e)})).body.title)throw new Error("Could not close pull request")}async mergePullRequest(s,e={}){let{pullRequest:t,mergeStrategy:n}=s,o;switch(n){case"MERGE_COMMIT":{o="merge_commit";break}case"FAST_FORWARD":{o="fast_forward";break}case"SQUASH":{o="squash";break}}let a={merge_strategy:o,type:"pullrequest"};if(!(await this.config.request({method:"POST",url:`${L}/repositories/${t.repository.owner.login}/${t.repository.name}/pullrequests/${t.id}/merge`,body:JSON.stringify(a),headers:{...D(this.config,e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not merge pull request")}async setPullRequestReviewers(s,e={}){let{pullRequest:t,reviewers:n}=s,o={reviewers:n.map(i=>{if(i.username)throw new Error('Bitbucket reviewer requires "username" for this function.');return{username:i.username}})};if(!(await this.config.request({method:"PUT",url:`${L}/repositories/${t.repository.owner.login}/${t.repository.name}/pullrequests/${t.id}`,body:JSON.stringify(o),headers:{...D(this.config,e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not set pull request reviewers")}};var _e=r=>({name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrl??null,id:r.id.toString(),username:r.name,url:r.links.self[0].href}),Qe=r=>{var u,l,p,d,c,g;let s={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},e={UNAPPROVED:"REVIEW_REQUESTED",NEEDS_WORK:"CHANGES_REQUESTED",APPROVED:"APPROVED"},t=r.reviewers.map(m=>({reviewer:_e(m.user),state:e[m.status]})),n=((u=r.toRef.repository.links.clone.find(m=>m.name==="ssh"))==null?void 0:u.href)??null,o=((l=r.toRef.repository.links.clone.find(m=>m.name==="https"))==null?void 0:l.href)??null;o||(o=((p=r.toRef.repository.links.clone.find(m=>m.name==="http"))==null?void 0:p.href)??null);let a=((d=r.fromRef.repository.links.clone.find(m=>m.name==="ssh"))==null?void 0:d.href)??null,i=((c=r.fromRef.repository.links.clone.find(m=>m.name==="https"))==null?void 0:c.href)??null;return i||(i=((g=r.fromRef.repository.links.clone.find(m=>m.name==="http"))==null?void 0:g.href)??null),{id:r.id.toString(),number:r.id,title:r.title,url:r.links.self[0].href,state:s[r.state],isDraft:!1,createdDate:new Date(r.createdDate),updatedDate:new Date(r.updatedDate),closedDate:r.closedDate?new Date(r.closedDate):null,mergedDate:r.state=="MERGED"&&r.closedDate?new Date(r.closedDate):null,baseRef:{name:r.toRef.displayId,oid:r.toRef.latestCommit},headRef:{name:r.fromRef.displayId,oid:r.fromRef.latestCommit},commentCount:r.properties.commentCount,upvoteCount:null,commitCount:null,fileCount:null,additions:null,deletions:null,author:_e(r.author.user),assignees:null,reviews:t,reviewDecision:_(t),repository:{id:r.toRef.repository.id.toString(),name:r.toRef.repository.name,owner:{login:r.toRef.repository.project.key},remoteInfo:o&&n?{cloneUrlHTTPS:o,cloneUrlSSH:n}:null},headRepository:{id:r.fromRef.repository.id.toString(),name:r.fromRef.repository.name,owner:{login:r.fromRef.repository.project.key},remoteInfo:i&&a?{cloneUrlHTTPS:i,cloneUrlSSH:a}:null},headCommit:null,mergeableState:"UNKNOWN",permissions:null,version:r.version}},St=r=>{var s,e,t;return{id:r.id.toString(),namespace:r.project.key,name:r.slug,webUrl:((s=r.links.self[0])==null?void 0:s.href)??null,httpsUrl:((e=r.links.clone.find(n=>n.name==="https"||n.name==="http"))==null?void 0:e.href)??null,sshUrl:((t=r.links.clone.find(n=>n.name==="ssh"))==null?void 0:t.href)??null,defaultBranch:null,permissions:null}},X=class extends x{getBaseUrl(s){let e=s.baseUrl||this.config.baseUrl;if(!e)throw new Error('Bitbucket Server requires "baseUrl"');return e}getRequestHeaders(s){return R(s.token||this.config.token)}async getCurrentUser(s={},e={}){let t=await this.config.request({url:`${this.getBaseUrl(e)}/users?limit=2`,headers:this.getRequestHeaders(e)}),{headers:{"x-auserid":n,"x-ausername":o}}=t,a=n?parseInt(n,10):null,i=decodeURIComponent(o),l=(await this.config.request({url:`${this.getBaseUrl(e)}/users?filter=${o}&avatarSize=64`,headers:this.getRequestHeaders(e)})).body.values.find(({emailAddress:p,id:d,name:c,slug:g})=>a?a===d:i===c||i===p||i===g);if(!l)throw new Error("Could not find current Bitbucket Server user");return{data:_e(l)}}async getRepo(s,e={}){let t=await this.config.request({url:`${this.getBaseUrl(e)}/projects/${s.namespace}/repos/${s.name}`,headers:this.getRequestHeaders(e)});return{data:St(t.body)}}async getRepos(s,e={}){let t=[],n=[];return await Promise.all(s.map(async o=>{try{let a=await this.getRepo(o,e);t.push(a.data)}catch(a){n.push({input:o,error:a})}})),{data:t,errors:n}}async getReposForCurrentUser(s,e={}){let t=s.page??0,n=await this.config.request({url:`${this.getBaseUrl(e)}/repos?start=${t}`,headers:this.getRequestHeaders(e)});return{pageInfo:{hasNextPage:!n.body.isLastPage,nextPage:n.body.nextPageStart},data:n.body.values.map(St)}}async getPullRequestsForRepoBase(s,e={}){var n;let t=new URL(`${this.getBaseUrl(e)}/projects/${encodeURI(s.repo.namespace)}/repos/${encodeURI(s.repo.name)}/pull-requests?state=OPEN`);return t.searchParams.set("start",((n=s.page)==null?void 0:n.toString())||"0"),t.searchParams.set("limit","50"),await this.config.request({url:t.toString(),headers:this.getRequestHeaders(e)})}async getPullRequestsForRepo(s,e={}){let t=[],n=await this.getPullRequestsForRepoBase(s,e);n.body.values.forEach(a=>{if(s.authorLogin&&a.author.user.name!==s.authorLogin)return null;t.push(Qe(a))});let o=n.body.values.length!==0;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.start+n.body.values.length:null},data:t}}async getPullRequestsForRepos(s,e={}){let t=[];return await Promise.all(s.repos.map(async n=>{try{(await this.getPullRequestsForRepoBase({repo:n,...s},e)).body.values.forEach(a=>{if(s.authorLogin&&a.author.user.name!==s.authorLogin)return null;t.push(Qe(a))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:t}}async getPullRequestsForCurrentUser(s,e={}){var a;let t=new URL(`${this.getBaseUrl(e)}/dashboard/pull-requests`);t.searchParams.set("state","OPEN"),t.searchParams.set("start",((a=s.page)==null?void 0:a.toString())||"0"),t.searchParams.set("limit","50");let n=await this.config.request({url:t.toString(),headers:this.getRequestHeaders(e)}),o=n.body.values.length!==0;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.start+n.body.values.length:null},data:n.body.values.map(Qe)}}async closePullRequest(s,e={}){let{pullRequest:t}=s;if(t.version===void 0)throw new Error('Bitbucket Server requires "version" for this function.');if(!(await this.config.request({method:"POST",url:`${this.getBaseUrl(e)}/projects/${t.repository.owner.login}/repos/${t.repository.name}/pull-requests/${t.id}/decline`,body:JSON.stringify({version:t.version}),headers:{...this.getRequestHeaders(e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not close pull request")}async mergePullRequest(s,e={}){let{pullRequest:t,mergeStrategyId:n}=s;if(s.mergeStrategy)throw new Error('Bitbucket Server uses "mergeStrategyId" instead of "mergeStrategy".');if(t.version===void 0)throw new Error('Bitbucket Server requires "version" for this function.');if(!(await this.config.request({method:"POST",url:`${this.getBaseUrl(e)}/projects/${t.repository.owner.login}/repos/${t.repository.name}/pull-requests/${t.id}/merge`,body:JSON.stringify({strategyId:n,version:t.version}),headers:{...this.getRequestHeaders(e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not merge pull request")}async getMergeStrategies(s={}){let e=await this.config.request({url:`${this.getBaseUrl(s)}/admin/pull-requests/git`,headers:{...this.getRequestHeaders(s),"Content-Type":"application/json"}});return{data:{defaultStrategy:e.body.mergeConfig.defaultStrategy,strategies:e.body.mergeConfig.strategies}}}async setPullRequestReviewers(s,e={}){let{pullRequest:t,reviewers:n}=s;if(t.version===void 0)throw new Error('Bitbucket Server requires "version" for this function.');let o={reviewers:n.map(i=>{if(i.username)throw new Error('Bitbucket Server reviewer requires "username" for this function.');return{user:{name:i.username}}}),version:t.version};if(!(await this.config.request({method:"PUT",url:`${this.getBaseUrl(e)}/projects/${t.repository.owner.login}/repos/${t.repository.name}/pull-requests/${t.id}`,body:JSON.stringify(o),headers:{...this.getRequestHeaders(e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not set pull request reviewers")}};var Ut=require("js-base64");var me=(e=>(e.Open="OPEN",e.Closed="CLOSED",e))(me||{});var b=class extends Error{constructor(e,t){let n=t==null?void 0:t.map(a=>`'${a.message}'`).join(", "),o=n?`${e}: ${n}`:e;super(o);this.graphQLErrors=t??[]}};var ar={AS_CODE_OWNER:[3,0,0],CHECK_RUN:[3,0,0],PR_ISSUE_FULL_DATABASE_ID:[3,12,0],LATEST_REVIEWS:[3,0,0],VIEWER_CAN_MERGE_AS_ADMIN:[3,5,0]},vt=15,qt=100,U=r=>!!r,Z=(r,s)=>{let e=ar[s];for(let t=0;t<3;t++){if(r[t]>e[t])return!0;if(r[t]<e[t])return!1}return!0},fe="https://api.github.com",ir=`${fe}/graphql`,Ie=`
2
2
  description
3
3
  dueOn
4
4
  id
@@ -6,7 +6,7 @@ number
6
6
  state
7
7
  title
8
8
  url
9
- `,sr=`
9
+ `,ur=`
10
10
  ... on CheckRun {
11
11
  completedAt
12
12
  conclusion
@@ -15,50 +15,62 @@ url
15
15
  permalink
16
16
  startedAt
17
17
  }
18
- `,ce=/\/api\/v\d+$/,he=`
18
+ `,he=/\/api\/v\d+$/,Re=`
19
19
  color
20
20
  description
21
21
  id
22
22
  name
23
- `,yt=r=>{if(r.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.")},nr=(r,n)=>{let e=n.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),yt(e),ce.test(e)&&(e=e.replace(ce,"")),`${e}/api/graphql`):rr},Z=(r,n)=>{let e=n.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),yt(e),ce.test(e)&&(e=e.replace(ce,"")),`${e}/api/v3`):ge},y=(r,n,e)=>{let t=I(e.token||r.token);return t["X-Github-Next-Global-ID"]="1",t["Content-Type"]="application/json",t.Accept="application/vnd.github.merge-info-preview+json",r.request({url:nr(r,e),method:"POST",headers:t,body:JSON.stringify(n)})},or={user:!0,"user:email":!0,"read:user":!0},k=r=>r.some(n=>or[n]),U=(r=!1,n=!1,e)=>`
23
+ `,Et=r=>{if(r.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.")},lr=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),Et(e),he.test(e)&&(e=e.replace(he,"")),`${e}/api/graphql`):ir},Y=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),Et(e),he.test(e)&&(e=e.replace(he,"")),`${e}/api/v3`):fe},y=(r,s,e)=>{let t=R(e.token||r.token);return t["X-Github-Next-Global-ID"]="1",t["Content-Type"]="application/json",t.Accept="application/vnd.github.merge-info-preview+json",r.request({url:lr(r,e),method:"POST",headers:t,body:JSON.stringify(s)})},pr={user:!0,"user:email":!0,"read:user":!0},N=r=>r.some(s=>pr[s]),A=(r=!1,s=!1,e)=>`
24
24
  __typename
25
- ${_(e,["graphQLId"],"id")}
26
- ${_(e,["id"],"databaseId")}
27
- ${_(e,["name"],"name")}
28
- ${_(e,["name","username"],"login")}
29
- ${n?_(e,["email"],"email"):""}
30
- ${_(e,["avatarUrl"],`avatarUrl${r?"(size: $avatarSize)":""}`)}
31
- ${_(e,["url"],"url")}
32
- `,ar=(r=!1)=>`
25
+ ${B(e,["graphQLId"],"id")}
26
+ ${B(e,["id"],"databaseId")}
27
+ ${B(e,["name"],"name")}
28
+ ${B(e,["name","username"],"login")}
29
+ ${s?B(e,["email"],"email"):""}
30
+ ${B(e,["avatarUrl"],`avatarUrl${r?"(size: $avatarSize)":""}`)}
31
+ ${B(e,["url"],"url")}
32
+ `,dr=(r=!1)=>`
33
33
  latestReviews(first: 100) {
34
34
  nodes {
35
35
  author {
36
36
  ... on User {
37
- ${U(!1,r)}
37
+ ${A(!1,r)}
38
+ }
39
+ ... on EnterpriseUserAccount {
40
+ ${Be(!1)}
38
41
  }
39
42
  }
40
43
  state
41
44
  }
42
45
  }
43
- `,Pt=(r=!1)=>`
46
+ `,Ct=(r=!1)=>`
44
47
  __typename
45
48
  id
46
49
  databaseId
47
50
  login
48
51
  avatarUrl${r?"(size: $avatarSize)":""}
49
52
  url
50
- `,fe=(r,n=!1,e)=>`
53
+ `,Be=(r=!1)=>`
54
+ __typename
55
+ id
56
+ login
57
+ avatarUrl${r?"(size: $avatarSize)":""}
58
+ url
59
+ `,be=(r,s=!1,e)=>`
51
60
  id
52
- ${!e||X(e,"PR_ISSUE_FULL_DATABASE_ID")?"fullDatabaseId":"databaseId"}
61
+ ${!e||Z(e,"PR_ISSUE_FULL_DATABASE_ID")?"fullDatabaseId":"databaseId"}
53
62
  number
54
63
  title
55
64
  state
56
65
  author {
57
66
  ... on User {
58
- ${U(!1,n)}
67
+ ${A(!1,s)}
59
68
  }
60
69
  ... on Bot {
61
- ${Pt(!1)}
70
+ ${Ct(!1)}
71
+ }
72
+ ... on EnterpriseUserAccount {
73
+ ${Be(!1)}
62
74
  }
63
75
  }
64
76
  commits(last: 1) {
@@ -71,7 +83,7 @@ commits(last: 1) {
71
83
  contexts(first: 100) {
72
84
  totalCount
73
85
  nodes {
74
- ${!e||X(e,"CHECK_RUN")?sr:""}
86
+ ${!e||Z(e,"CHECK_RUN")?ur:""}
75
87
  ... on StatusContext {
76
88
  context
77
89
  createdAt
@@ -133,44 +145,47 @@ closedAt
133
145
  mergedAt
134
146
  assignees(first: 100) {
135
147
  nodes {
136
- ${U(!1,n)}
148
+ ${A(!1,s)}
137
149
  }
138
150
  }
139
151
  reviewRequests(first: 100) {
140
152
  nodes {
141
- ${!e||X(e,"AS_CODE_OWNER")?"asCodeOwner":""}
153
+ ${!e||Z(e,"AS_CODE_OWNER")?"asCodeOwner":""}
142
154
  requestedReviewer {
143
155
  ... on User {
144
- ${U(!1,n)}
156
+ ${A(!1,s)}
145
157
  }
146
158
  }
147
159
  }
148
160
  }
149
- ${!e||X(e,"LATEST_REVIEWS")?ar(n):""}
161
+ ${!e||Z(e,"LATEST_REVIEWS")?dr(s):""}
150
162
  additions
151
163
  deletions
152
164
  changedFiles
153
165
  mergeable
154
166
  mergeStateStatus
155
167
  milestone {
156
- ${me}
168
+ ${Ie}
157
169
  }
158
170
  labels(first: 100) {
159
171
  nodes {
160
- ${he}
172
+ ${Re}
161
173
  }
162
174
  }
163
- ${!e||X(e,"VIEWER_CAN_MERGE_AS_ADMIN")?"viewerCanMergeAsAdmin":""}
164
- `,ir=(r=!1,n)=>`
175
+ ${!e||Z(e,"VIEWER_CAN_MERGE_AS_ADMIN")?"viewerCanMergeAsAdmin":""}
176
+ `,cr=(r=!1,s)=>`
165
177
  id
166
- ${!n||X(n,"PR_ISSUE_FULL_DATABASE_ID")?"fullDatabaseId":"databaseId"}
178
+ ${!s||Z(s,"PR_ISSUE_FULL_DATABASE_ID")?"fullDatabaseId":"databaseId"}
167
179
  title
168
180
  author {
169
181
  ... on User {
170
- ${U(!1,r)}
182
+ ${A(!1,r)}
171
183
  }
172
184
  ... on Bot {
173
- ${Pt(!1)}
185
+ ${Ct(!1)}
186
+ }
187
+ ... on EnterpriseUserAccount {
188
+ ${Be(!1)}
174
189
  }
175
190
  }
176
191
  closedAt
@@ -194,19 +209,19 @@ comments {
194
209
  }
195
210
  assignees(first: 100) {
196
211
  nodes {
197
- ${U(!1,r)}
212
+ ${A(!1,r)}
198
213
  }
199
214
  }
200
215
  state
201
216
  milestone {
202
- ${me}
217
+ ${Ie}
203
218
  }
204
219
  labels(first: 100) {
205
220
  nodes {
206
- ${he}
221
+ ${Re}
207
222
  }
208
223
  }
209
- `,ur={"-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"},lr=new RegExp('(([^\\s]+:)?\\"(?:[^\\"\\\\]|\\\\.)*\\"?)|([^\\"\\s]+)',"g"),Fe=r=>{let n=[];return(r.match(lr)??[]).forEach(t=>{if(t.includes(":")&&t!="is:closed"){let s=t.split(":")[0];ur[s]&&n.push(t)}}),n},Qe=(r,n,e,t)=>{let s=r==="issue";return{query:`
224
+ `,gr={"-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"},mr=new RegExp('(([^\\s]+:)?\\"(?:[^\\"\\\\]|\\\\.)*\\"?)|([^\\"\\s]+)',"g"),je=r=>{let s=[];return(r.match(mr)??[]).forEach(t=>{if(t.includes(":")&&t!="is:closed"){let n=t.split(":")[0];gr[n]&&s.push(t)}}),s},Me=(r,s,e,t)=>{let n=r==="issue";return{query:`
210
225
  query SearchIssuesOrPullRequests($query: String! $after: String) {
211
226
  search(type:ISSUE query:$query first: ${t.maxPageSize} after:$after) {
212
227
  pageInfo {
@@ -214,19 +229,19 @@ query SearchIssuesOrPullRequests($query: String! $after: String) {
214
229
  endCursor
215
230
  }
216
231
  nodes {
217
- ... on ${s?"Issue":"PullRequest"} {
218
- ${s?ir(t.supportsEmail,t.enterpriseVersion??null):fe(t.supportsDrafts??!1,t.supportsEmail,t.enterpriseVersion??null)}
232
+ ... on ${n?"Issue":"PullRequest"} {
233
+ ${n?cr(t.supportsEmail,t.enterpriseVersion??null):be(t.supportsDrafts??!1,t.supportsEmail,t.enterpriseVersion??null)}
219
234
  }
220
235
  }
221
236
  }
222
- }`,variables:{query:`is:${r} is:open ${t.includeFromArchivedRepos?"":"archived:false"} ${n}`,after:e}}},pr="Field 'isDraft' doesn't exist on type 'PullRequest'",Ie=(r=[])=>r.some(n=>(n==null?void 0:n.message)===pr),dr=/@@ -(\d+)(?:,\d+ | )\+(\d+)(?:,\d+ | )@@(?:\\n)?/,cr=`
237
+ }`,variables:{query:`is:${r} is:open ${t.includeFromArchivedRepos?"":"archived:false"} ${s}`,after:e}}},hr="Field 'isDraft' doesn't exist on type 'PullRequest'",ye=(r=[])=>r.some(s=>(s==null?void 0:s.message)===hr),fr=/@@ -(\d+)(?:,\d+ | )\+(\d+)(?:,\d+ | )@@(?:\\n)?/,Ir=`
223
238
  \
224
- +`,wt=(r,n,e,t)=>{let s=dr.exec(r);if(!s||!s[0]||!s[1])return[];let o=parseInt(s[1],10),a=parseInt(s[2],10),i=r.replace(cr,`
239
+ +`,Dt=(r,s,e,t)=>{let n=fr.exec(r);if(!n||!n[0]||!n[1])return[];let o=parseInt(n[1],10),a=parseInt(n[2],10),i=r.replace(Ir,`
225
240
  +`).split(`
226
241
  `).slice(1),u=o-1,l=a-1,p=i.map(g=>{let m,h;switch(g[0]){case"-":{m="DELETED",u+=1,h=`${g.slice(1)}
227
242
  `;break}case"+":{m="ADDED",l+=1,h=`${g.slice(1)}
228
243
  `;break}default:m="UNMODIFIED",l+=1,u+=1,h=`${g}
229
- `}return{line:h,oldLineNumber:m!=="ADDED"?u:null,newLineNumber:m!=="DELETED"?l:null,type:m}}),d=e,c=n;if(d!==null&&c!==null&&t!==null&&d<c){let g=0,m=p.length,h=t==="LEFT"?"oldLineNumber":"newLineNumber";for(let R=0;R<p.length;R++){let f=p[R][h];f===d?g=R:f===c&&(m=R)}p=p.slice(g,m+1)}return p};var _e=`
244
+ `}return{line:h,oldLineNumber:m!=="ADDED"?u:null,newLineNumber:m!=="DELETED"?l:null,type:m}}),d=e,c=s;if(d!==null&&c!==null&&t!==null&&d<c){let g=0,m=p.length,h=t==="LEFT"?"oldLineNumber":"newLineNumber";for(let I=0;I<p.length;I++){let f=p[I][h];f===d?g=I:f===c&&(m=I)}p=p.slice(g,m+1)}return p};var ze=`
230
245
  id
231
246
  databaseId
232
247
  owner {
@@ -239,18 +254,18 @@ defaultBranchRef {
239
254
  name
240
255
  }
241
256
  viewerPermission
242
- `,Me={__typename:"User",id:"U_kgDNJ5k",databaseId:10137,name:"Deleted user",login:"ghost",email:"",avatarUrl:"https://avatars.githubusercontent.com/u/10137?v=4",url:"https://github.com/ghost"},gr={APPROVED:"APPROVED",CHANGES_REQUESTED:"CHANGES_REQUESTED",COMMENTED:"COMMENTED",REVIEW_REQUESTED:"REVIEW_REQUESTED"},mr={MERGEABLE:"MERGEABLE",CONFLICTING:"CONFLICTS",UNKNOWN:"UNKNOWN"},hr={BEHIND:"BEHIND",BLOCKED:"BLOCKED",UNKNOWN:"UNKNOWN_AND_BLOCKED",UNSTABLE:"UNSTABLE",CLEAN:null,DIRTY:null,DRAFT:null,HAS_HOOKS:null},fr={OPEN:"OPEN",CLOSED:"CLOSED"},Ir=["ADMIN","MAINTAIN","TRIAGE","WRITE"],ze=r=>({color:`#${r.color}`,description:r.description,graphQLId:r.id,id:null,name:r.name}),Rr=r=>({canCreateWebhook:r==="ADMIN",canPush:r==="ADMIN"||r==="MAINTAIN"||r==="WRITE",isAdmin:r==="ADMIN"}),Be=r=>({id:r.databaseId.toString(),graphQLId:r.id,namespace:r.owner.login,name:r.name,webUrl:r.url,httpsUrl:r.url.endsWith(".git")?r.url:`${r.url}.git`,sshUrl:r.sshUrl,defaultBranch:r.defaultBranchRef,permissions:Rr(r.viewerPermission)}),br=r=>({canCreateWebhook:r.admin,canPush:r.admin||r.maintain||r.push,isAdmin:r.admin}),St=r=>({id:r.id.toString(),graphQLId:r.node_id,namespace:r.owner.login,name:r.name,webUrl:r.html_url,httpsUrl:r.clone_url,sshUrl:r.ssh_url,defaultBranch:{name:r.default_branch},permissions:br(r.permissions)}),yr=r=>({path:r.path,isDirectory:r.type==="tree"}),Pr={OPEN:"OPEN",CLOSED:"CLOSED",MERGED:"MERGED"},wr={id:!0,graphQLId:!0,name:!0,username:!0,email:!0,avatarUrl:!0,url:!0},A=(r,n=wr)=>{let e={};return n.id&&(e.id=r.databaseId.toString()),n.graphQLId&&(e.graphQLId=r.id),n.name&&(e.name=r.name??r.login),n.username&&(e.username=r.login),n.email&&(e.email=r.email??null),n.avatarUrl&&(e.avatarUrl=r.avatarUrl),n.url&&(e.url=r.url),e},Sr=(r,n)=>{let e={IN_PROGRESS:"RUNNING",PENDING:"PENDING",QUEUED:"PENDING",REQUESTED:"PENDING",WAITING:"PENDING"};return r!=="COMPLETED"?e[r]:{ACTION_REQUIRED:"ACTION_REQUIRED",CANCELLED:"CANCELLED",FAILURE:"FAILED",NEUTRAL:null,SKIPPED:"SKIPPED",STALE:"FAILED",STARTUP_FAILURE:"FAILED",SUCCESS:"SUCCESS",TIMED_OUT:"ERROR"}[n]},vr=r=>({ERROR:"ERROR",EXPECTED:"PENDING",FAILURE:"FAILED",PENDING:"PENDING",SUCCESS:"SUCCESS"})[r],je=r=>{var a,i,u,l,p,d,c,g,m,h,R,S;let n=null;r.author?n=(r.author.__typename==="Bot",r.author):n=Me;let e=(((a=r.reviewRequests)==null?void 0:a.nodes)||[]).filter(L).filter(f=>!f.asCodeOwner),t=(i=r.headRepository)==null?void 0:i.url;t&&!t.endsWith(".git")&&(t=`${t}.git`);let s=(u=r.repository)==null?void 0:u.url;s&&!s.endsWith(".git")&&(s=`${s}.git`);let o=e.filter(f=>f.requestedReviewer&&"__typename"in f.requestedReviewer).map(f=>({reviewer:A(f.requestedReviewer),state:"REVIEW_REQUESTED"})).concat((((l=r.latestReviews)==null?void 0:l.nodes)||[]).filter(L).map(f=>{let v=Me;return f.author&&Object.keys(f.author).length>0&&(v=f.author),{reviewer:A(v),state:gr[f.state]}}));return{id:r.fullDatabaseId!==void 0?r.fullDatabaseId:r.databaseId.toString(),graphQLId:r.id,title:r.title,number:r.number,state:Pr[r.state],commentCount:r.comments.totalCount,upvoteCount:r.reactions.totalCount,author:n?A(n):null,createdDate:new Date(r.createdAt),isDraft:r.isDraft,repository:{id:r.repository.databaseId,graphQLId:r.repository.id,name:r.repository.name,owner:{login:r.repository.owner.login},remoteInfo:{cloneUrlHTTPS:s,cloneUrlSSH:r.repository.sshUrl}},headRepository:r.headRepository?{id:r.headRepository.databaseId,graphQLId:r.headRepository.id,name:r.headRepository.name,owner:{login:r.headRepository.owner.login},remoteInfo:{cloneUrlHTTPS:t,cloneUrlSSH:r.headRepository.sshUrl}}:null,headCommit:{buildStatuses:((g=(c=(d=(p=r.commits.nodes)==null?void 0:p.filter(L)[0])==null?void 0:d.commit.statusCheckRollup)==null?void 0:c.contexts.nodes)==null?void 0:g.filter(L).map(f=>"context"in f?{completedAt:null,description:f.description,name:f.context,state:vr(f.state),startedAt:new Date(f.createdAt),stage:null,url:f.targetUrl}:{completedAt:f.completedAt?new Date(f.completedAt):null,description:null,name:f.name,state:Sr(f.status,f.conclusion),startedAt:f.startedAt?new Date(f.startedAt):null,stage:null,url:f.permalink}))??[]},headRef:r.headRef?{name:r.headRef.name,oid:((m=r.headRef.target)==null?void 0:m.oid)??null}:null,baseRef:r.baseRef?{name:r.baseRef.name,oid:((h=r.baseRef.target)==null?void 0:h.oid)??null}:null,url:r.url,updatedDate:new Date(r.updatedAt),closedDate:r.closedAt?new Date(r.closedAt):null,mergedDate:r.mergedAt?new Date(r.mergedAt):null,assignees:r.assignees.nodes?r.assignees.nodes.filter(L).map(f=>A(f)):null,reviews:o,reviewDecision:Q(o),additions:r.additions,deletions:r.deletions,fileCount:r.changedFiles,commitCount:r.commits.totalCount,mergeableState:hr[r.mergeStateStatus]??mr[r.mergeable],milestone:r.milestone?We(r.milestone):null,labels:((S=(R=r.labels)==null?void 0:R.nodes)==null?void 0:S.filter(L).map(ze))??[],permissions:{canMerge:Ir.includes(r.repository.viewerPermission),canMergeAndBypassProtections:r.viewerCanMergeAsAdmin??!1}}},qr=r=>{var h,R;let{comments:n,isOutdated:e,isResolved:t,originalLine:s,originalStartLine:o,startDiffSide:a}=r,i=(h=n.nodes)==null?void 0:h[0];if(!i)return null;let{author:u,body:l,databaseId:p,id:d,path:c,publishedAt:g,url:m}=i;return{author:u?{avatarUrl:u.avatarUrl,email:null,name:u.login}:null,body:l,createdAt:g?new Date(g):null,diffLines:wt(i.diffHunk,s,o,a),id:p,isOutdated:e,isResolved:t,graphQLId:d,filename:c,replies:((R=n.nodes)==null?void 0:R.filter(L).slice(1).map(Er))??[],url:m}},Er=r=>({author:r.author?{avatarUrl:r.author.avatarUrl,email:null,name:r.author.login}:null,body:r.body,createdAt:r.publishedAt?new Date(r.publishedAt):null,graphQLId:r.id,id:r.databaseId,url:r.url}),Cr=r=>{var e,t,s;let n=null;return r.author?n=(r.author.__typename==="Bot",r.author):n=Me,{id:r.fullDatabaseId!==void 0?r.fullDatabaseId:r.databaseId.toString(),graphQLId:r.id,number:r.number,title:r.title,author:A(n),commentCount:r.comments.totalCount,closedDate:r.closedAt?new Date(r.closedAt):null,createdDate:new Date(r.createdAt),description:null,state:{name:fr[r.state],color:null},type:null,repository:{id:r.repository.databaseId,graphQLId:r.repository.id,name:r.repository.name,owner:{login:r.repository.owner.login}},url:r.url,updatedDate:new Date(r.updatedAt),assignees:((e=r.assignees.nodes)==null?void 0:e.filter(L).map(o=>A(o)))??[],upvoteCount:r.reactions.totalCount,milestone:r.milestone?We(r.milestone):null,labels:((s=(t=r.labels)==null?void 0:t.nodes)==null?void 0:s.filter(L).map(ze))??[]}},We=r=>({id:r.number.toString(),graphQLId:r.id.toString(),number:r.number,title:r.title,description:r.description,isOpen:r.state=="OPEN",url:r.url,startDate:null,dueDate:r.dueOn?new Date(r.dueOn):null}),Y=class extends T{constructor(){super(...arguments);this._scopesCache={};this._enterpriseVersionsCache={}}async getScopes(e){let t=e.token||this.config.token;if(!t)return[];let s=this._scopesCache[t];if(!s){let a=(await y(this.config,{query:"query { rateLimit(dryRun: true) { __typename } }"},e)).headers["x-oauth-scopes"];s=a?a.split(", "):[],this._scopesCache[t]=s}return s}async getEnterpriseVersion(e){let t=e.baseUrl||this.config.baseUrl;if(!t)return null;let s=this._enterpriseVersionsCache[t];if(!s){let o=await this.config.request({url:`${Z(this.config,e)}/meta`,headers:I(e.token||this.config.token)});if(!o.body.installed_version)return null;s=o.body.installed_version.split(".").slice(0,3).map(a=>parseInt(a,10)),this._enterpriseVersionsCache[t]=s}return s}getEnterpriseAvatarUrlIfNeeded(e,t,s){let o=s.baseUrl||this.config.baseUrl;return!o||o.startsWith(ge)?e:t?`https://avatars.githubusercontent.com/u/e?email=${encodeURIComponent(t)}`:""}async getCurrentUser(e={},t={}){var u;if(e.fields&&!e.fields.length)throw new Error('"fields" must contain at least one field or be omitted');let s=dt(e.fields),o=await this.getScopes(t),a=await y(this.config,{query:`
257
+ `,Je={__typename:"User",id:"U_kgDNJ5k",databaseId:10137,name:"Deleted user",login:"ghost",email:"",avatarUrl:"https://avatars.githubusercontent.com/u/10137?v=4",url:"https://github.com/ghost"},Rr={APPROVED:"APPROVED",CHANGES_REQUESTED:"CHANGES_REQUESTED",COMMENTED:"COMMENTED",REVIEW_REQUESTED:"REVIEW_REQUESTED"},br={MERGEABLE:"MERGEABLE",CONFLICTING:"CONFLICTS",UNKNOWN:"UNKNOWN"},yr={BEHIND:"BEHIND",BLOCKED:"BLOCKED",UNKNOWN:"UNKNOWN_AND_BLOCKED",UNSTABLE:"UNSTABLE",CLEAN:null,DIRTY:null,DRAFT:null,HAS_HOOKS:null},Pr={OPEN:"OPEN",CLOSED:"CLOSED"},wr=["ADMIN","MAINTAIN","TRIAGE","WRITE"],Ke=r=>({color:`#${r.color}`,description:r.description,graphQLId:r.id,id:null,name:r.name}),Sr=r=>({canCreateWebhook:r==="ADMIN",canPush:r==="ADMIN"||r==="MAINTAIN"||r==="WRITE",isAdmin:r==="ADMIN"}),We=r=>({id:r.databaseId.toString(),graphQLId:r.id,namespace:r.owner.login,name:r.name,webUrl:r.url,httpsUrl:r.url.endsWith(".git")?r.url:`${r.url}.git`,sshUrl:r.sshUrl,defaultBranch:r.defaultBranchRef,permissions:Sr(r.viewerPermission)}),vr=r=>({canCreateWebhook:r.admin,canPush:r.admin||r.maintain||r.push,isAdmin:r.admin}),Lt=r=>({id:r.id.toString(),graphQLId:r.node_id,namespace:r.owner.login,name:r.name,webUrl:r.html_url,httpsUrl:r.clone_url,sshUrl:r.ssh_url,defaultBranch:{name:r.default_branch},permissions:vr(r.permissions)}),qr=r=>({path:r.path,isDirectory:r.type==="tree"}),Er={OPEN:"OPEN",CLOSED:"CLOSED",MERGED:"MERGED"},Cr={id:!0,graphQLId:!0,name:!0,username:!0,email:!0,avatarUrl:!0,url:!0},O=(r,s=Cr)=>{let e={};return s.id&&(e.id="databaseId"in r?r.databaseId.toString():r.id),s.graphQLId&&(e.graphQLId=r.id),s.name&&(e.name=r.name??r.login),s.username&&(e.username=r.login),s.email&&(e.email=r.email??null),s.avatarUrl&&(e.avatarUrl=r.avatarUrl),s.url&&(e.url=r.url),e},Dr=(r,s)=>{let e={IN_PROGRESS:"RUNNING",PENDING:"PENDING",QUEUED:"PENDING",REQUESTED:"PENDING",WAITING:"PENDING"};return r!=="COMPLETED"?e[r]:{ACTION_REQUIRED:"ACTION_REQUIRED",CANCELLED:"CANCELLED",FAILURE:"FAILED",NEUTRAL:null,SKIPPED:"SKIPPED",STALE:"FAILED",STARTUP_FAILURE:"FAILED",SUCCESS:"SUCCESS",TIMED_OUT:"ERROR"}[s]},Lr=r=>({ERROR:"ERROR",EXPECTED:"PENDING",FAILURE:"FAILED",PENDING:"PENDING",SUCCESS:"SUCCESS"})[r],He=r=>{var a,i,u,l,p,d,c,g,m,h,I,w;let s=null;r.author?s=r.author:s=Je;let e=(((a=r.reviewRequests)==null?void 0:a.nodes)||[]).filter(U).filter(f=>!f.asCodeOwner),t=(i=r.headRepository)==null?void 0:i.url;t&&!t.endsWith(".git")&&(t=`${t}.git`);let n=(u=r.repository)==null?void 0:u.url;n&&!n.endsWith(".git")&&(n=`${n}.git`);let o=e.filter(f=>f.requestedReviewer&&"__typename"in f.requestedReviewer).map(f=>({reviewer:O(f.requestedReviewer),state:"REVIEW_REQUESTED"})).concat((((l=r.latestReviews)==null?void 0:l.nodes)||[]).filter(U).map(f=>{let v=Je;return f.author&&f.author.__typename&&(v=f.author),{reviewer:O(v),state:Rr[f.state]}}));return{id:r.fullDatabaseId!==void 0?r.fullDatabaseId:r.databaseId.toString(),graphQLId:r.id,title:r.title,number:r.number,state:Er[r.state],commentCount:r.comments.totalCount,upvoteCount:r.reactions.totalCount,author:s&&s.__typename?O(s):null,createdDate:new Date(r.createdAt),isDraft:r.isDraft,repository:{id:r.repository.databaseId,graphQLId:r.repository.id,name:r.repository.name,owner:{login:r.repository.owner.login},remoteInfo:{cloneUrlHTTPS:n,cloneUrlSSH:r.repository.sshUrl}},headRepository:r.headRepository?{id:r.headRepository.databaseId,graphQLId:r.headRepository.id,name:r.headRepository.name,owner:{login:r.headRepository.owner.login},remoteInfo:{cloneUrlHTTPS:t,cloneUrlSSH:r.headRepository.sshUrl}}:null,headCommit:{buildStatuses:((g=(c=(d=(p=r.commits.nodes)==null?void 0:p.filter(U)[0])==null?void 0:d.commit.statusCheckRollup)==null?void 0:c.contexts.nodes)==null?void 0:g.filter(U).map(f=>"context"in f?{completedAt:null,description:f.description,name:f.context,state:Lr(f.state),startedAt:new Date(f.createdAt),stage:null,url:f.targetUrl}:{completedAt:f.completedAt?new Date(f.completedAt):null,description:null,name:f.name,state:Dr(f.status,f.conclusion),startedAt:f.startedAt?new Date(f.startedAt):null,stage:null,url:f.permalink}))??[]},headRef:r.headRef?{name:r.headRef.name,oid:((m=r.headRef.target)==null?void 0:m.oid)??null}:null,baseRef:r.baseRef?{name:r.baseRef.name,oid:((h=r.baseRef.target)==null?void 0:h.oid)??null}:null,url:r.url,updatedDate:new Date(r.updatedAt),closedDate:r.closedAt?new Date(r.closedAt):null,mergedDate:r.mergedAt?new Date(r.mergedAt):null,assignees:r.assignees.nodes?r.assignees.nodes.filter(U).map(f=>O(f)):null,reviews:o,reviewDecision:_(o),additions:r.additions,deletions:r.deletions,fileCount:r.changedFiles,commitCount:r.commits.totalCount,mergeableState:yr[r.mergeStateStatus]??br[r.mergeable],milestone:r.milestone?Ve(r.milestone):null,labels:((w=(I=r.labels)==null?void 0:I.nodes)==null?void 0:w.filter(U).map(Ke))??[],permissions:{canMerge:wr.includes(r.repository.viewerPermission),canMergeAndBypassProtections:r.viewerCanMergeAsAdmin??!1}}},Ur=r=>{var h,I;let{comments:s,isOutdated:e,isResolved:t,originalLine:n,originalStartLine:o,startDiffSide:a}=r,i=(h=s.nodes)==null?void 0:h[0];if(!i)return null;let{author:u,body:l,databaseId:p,id:d,path:c,publishedAt:g,url:m}=i;return{author:u?{avatarUrl:u.avatarUrl,email:null,name:u.login}:null,body:l,createdAt:g?new Date(g):null,diffLines:Dt(i.diffHunk,n,o,a),id:p,isOutdated:e,isResolved:t,graphQLId:d,filename:c,replies:((I=s.nodes)==null?void 0:I.filter(U).slice(1).map($r))??[],url:m}},$r=r=>({author:r.author?{avatarUrl:r.author.avatarUrl,email:null,name:r.author.login}:null,body:r.body,createdAt:r.publishedAt?new Date(r.publishedAt):null,graphQLId:r.id,id:r.databaseId,url:r.url}),Ar=r=>{var e,t,n;let s=null;return r.author?s=r.author:s=Je,{id:r.fullDatabaseId!==void 0?r.fullDatabaseId:r.databaseId.toString(),graphQLId:r.id,number:r.number,title:r.title,author:s&&s.__typename?O(s):null,commentCount:r.comments.totalCount,closedDate:r.closedAt?new Date(r.closedAt):null,createdDate:new Date(r.createdAt),description:null,state:{name:Pr[r.state],color:null},type:null,repository:{id:r.repository.databaseId,graphQLId:r.repository.id,name:r.repository.name,owner:{login:r.repository.owner.login}},url:r.url,updatedDate:new Date(r.updatedAt),assignees:((e=r.assignees.nodes)==null?void 0:e.filter(U).map(o=>O(o)))??[],upvoteCount:r.reactions.totalCount,milestone:r.milestone?Ve(r.milestone):null,labels:((n=(t=r.labels)==null?void 0:t.nodes)==null?void 0:n.filter(U).map(Ke))??[]}},Ve=r=>({id:r.number.toString(),graphQLId:r.id.toString(),number:r.number,title:r.title,description:r.description,isOpen:r.state=="OPEN",url:r.url,startDate:null,dueDate:r.dueOn?new Date(r.dueOn):null}),ee=class extends x{constructor(){super(...arguments);this._scopesCache={};this._enterpriseVersionsCache={}}async getScopes(e){let t=e.token||this.config.token;if(!t)return[];let n=this._scopesCache[t];if(!n){let a=(await y(this.config,{query:"query { rateLimit(dryRun: true) { __typename } }"},e)).headers["x-oauth-scopes"];n=a?a.split(", "):[],this._scopesCache[t]=n}return n}async getEnterpriseVersion(e){let t=e.baseUrl||this.config.baseUrl;if(!t)return null;let n=this._enterpriseVersionsCache[t];if(!n){let o=await this.config.request({url:`${Y(this.config,e)}/meta`,headers:R(e.token||this.config.token)});if(!o.body.installed_version)return null;n=o.body.installed_version.split(".").slice(0,3).map(a=>parseInt(a,10)),this._enterpriseVersionsCache[t]=n}return n}getEnterpriseAvatarUrlIfNeeded(e,t,n){let o=n.baseUrl||this.config.baseUrl;return!o||o.startsWith(fe)?e:t?`https://avatars.githubusercontent.com/u/e?email=${encodeURIComponent(t)}`:""}async getCurrentUser(e={},t={}){var u;if(e.fields&&!e.fields.length)throw new Error('"fields" must contain at least one field or be omitted');let n=It(e.fields),o=await this.getScopes(t),a=await y(this.config,{query:`
243
258
  query getCurrentUser {
244
259
  viewer {
245
- ${U(!1,k(o),s)}
260
+ ${A(!1,N(o),n)}
246
261
  }
247
262
  }
248
- `},t),i=(u=a.body.data)==null?void 0:u.viewer;if(!i)throw new b("Current user not found.",a.body.errors);return{data:A(i,s)}}async getAccountsForRepo(e,t={}){var l,p,d,c,g;let s=await this.getScopes(t),{repo:{namespace:o,name:a},cursor:i}=e,u=await y(this.config,{query:`
263
+ `},t),i=(u=a.body.data)==null?void 0:u.viewer;if(!i)throw new b("Current user not found.",a.body.errors);return{data:O(i,n)}}async getAccountsForRepo(e,t={}){var l,p,d,c,g;let n=await this.getScopes(t),{repo:{namespace:o,name:a},cursor:i}=e,u=await y(this.config,{query:`
249
264
  query getAccountsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
250
265
  repository(owner: $owner, name: $name) {
251
266
  assignableUsers(first: $first, after: $cursor) {
252
267
  nodes {
253
- ${U(!1,k(s))}
268
+ ${A(!1,N(n))}
254
269
  }
255
270
  pageInfo {
256
271
  endCursor
@@ -259,7 +274,7 @@ query getAccountsForRepo($owner: String!, $name: String! $cursor: String, $first
259
274
  }
260
275
  }
261
276
  }
262
- `,variables:{owner:o,name:a,cursor:i,first:E}},t);if(!u.body.data)throw new b("Could not fetch accounts for repo",u.body.errors);return{pageInfo:((p=(l=u.body.data.repository)==null?void 0:l.assignableUsers)==null?void 0:p.pageInfo)??{endCursor:null,hasNextPage:!1},data:((g=(c=(d=u.body.data.repository)==null?void 0:d.assignableUsers)==null?void 0:c.nodes)==null?void 0:g.map(m=>A(m)))??[]}}async getUserForCommit(e,t={}){var i,u;let s=await y(this.config,{query:`
277
+ `,variables:{owner:o,name:a,cursor:i,first:C}},t);if(!u.body.data)throw new b("Could not fetch accounts for repo",u.body.errors);return{pageInfo:((p=(l=u.body.data.repository)==null?void 0:l.assignableUsers)==null?void 0:p.pageInfo)??{endCursor:null,hasNextPage:!1},data:((g=(c=(d=u.body.data.repository)==null?void 0:d.assignableUsers)==null?void 0:c.nodes)==null?void 0:g.map(m=>O(m)))??[]}}async getUserForCommit(e,t={}){var i,u;let n=await y(this.config,{query:`
263
278
  query getUserForCommit(
264
279
  $owner: String!
265
280
  $name: String!
@@ -278,7 +293,7 @@ query getUserForCommit(
278
293
  }
279
294
  }
280
295
  }
281
- `,variables:{owner:e.repo.namespace,name:e.repo.name,oid:e.oid,avatarSize:e.avatarSize}},t),o=(i=s.body.data)==null?void 0:i.repository;if(!o)throw new b("Repository not found.",s.body.errors);let a=(u=o.object)==null?void 0:u.author;if(!a)throw new b("Commit not found.",s.body.errors);return{data:{name:a.name,email:a.email,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)}}}async createCommit(e,t={}){let{commitMessage:s,deletedFiles:o,newOrModifiedFiles:a,repo:i,target:u}=e,l=await y(this.config,{query:`
296
+ `,variables:{owner:e.repo.namespace,name:e.repo.name,oid:e.oid,avatarSize:e.avatarSize}},t),o=(i=n.body.data)==null?void 0:i.repository;if(!o)throw new b("Repository not found.",n.body.errors);let a=(u=o.object)==null?void 0:u.author;if(!a)throw new b("Commit not found.",n.body.errors);return{data:{name:a.name,email:a.email,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)}}}async createCommit(e,t={}){let{commitMessage:n,deletedFiles:o,newOrModifiedFiles:a,repo:i,target:u}=e,l=await y(this.config,{query:`
282
297
  mutation createCommitOnBranch(
283
298
  $branchName: String!,
284
299
  $expectedHeadOid: GitObjectID!,
@@ -305,23 +320,23 @@ mutation createCommitOnBranch(
305
320
  }
306
321
  }
307
322
  }
308
- `,variables:{branchName:u.name,expectedHeadOid:u.oid,fileChanges:{additions:Object.entries(a).map(([p,d])=>({contents:vt.Base64.encode(d),path:p})),deletions:o.map(p=>({path:p}))},message:{body:s.description,headline:s.summary},repositoryNameWithOwner:`${i.namespace}/${i.name}`}},t);if(!l.body.data)throw new b("Could not create commit",l.body.errors);return{data:{name:l.body.data.createCommitOnBranch.ref.name,commit:{authoredDate:new Date(l.body.data.createCommitOnBranch.commit.authoredDate),committedDate:new Date(l.body.data.createCommitOnBranch.commit.committedDate),oid:l.body.data.createCommitOnBranch.commit.oid}}}}async getAccountForEmail(e,t={}){var i,u,l;let s=await this.getScopes(t),o=await y(this.config,{query:`
323
+ `,variables:{branchName:u.name,expectedHeadOid:u.oid,fileChanges:{additions:Object.entries(a).map(([p,d])=>({contents:Ut.Base64.encode(d),path:p})),deletions:o.map(p=>({path:p}))},message:{body:n.description,headline:n.summary},repositoryNameWithOwner:`${i.namespace}/${i.name}`}},t);if(!l.body.data)throw new b("Could not create commit",l.body.errors);return{data:{name:l.body.data.createCommitOnBranch.ref.name,commit:{authoredDate:new Date(l.body.data.createCommitOnBranch.commit.authoredDate),committedDate:new Date(l.body.data.createCommitOnBranch.commit.committedDate),oid:l.body.data.createCommitOnBranch.commit.oid}}}}async getAccountForEmail(e,t={}){var i,u,l;let n=await this.getScopes(t),o=await y(this.config,{query:`
309
324
  query getAccountForEmail($query: String! $avatarSize: Int) {
310
325
  search(query: $query, type: USER, first: 1) {
311
326
  nodes {
312
327
  ... on User {
313
- ${U(!0,k(s))}
328
+ ${A(!0,N(n))}
314
329
  }
315
330
  }
316
331
  }
317
332
  }
318
- `,variables:{query:`in:email ${e.email}`,avatarSize:e.avatarSize}},t),a=(l=(u=(i=o.body.data)==null?void 0:i.search)==null?void 0:u.nodes)==null?void 0:l[0];if(!a)throw new b("Could not find user via email",o.body.errors);return{data:A({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)})}}async getAccountForUsername(e,t={}){var i;let s=await this.getScopes(t),o=await y(this.config,{query:`
333
+ `,variables:{query:`in:email ${e.email}`,avatarSize:e.avatarSize}},t),a=(l=(u=(i=o.body.data)==null?void 0:i.search)==null?void 0:u.nodes)==null?void 0:l[0];if(!a)throw new b("Could not find user via email",o.body.errors);return{data:O({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)})}}async getAccountForUsername(e,t={}){var i;let n=await this.getScopes(t),o=await y(this.config,{query:`
319
334
  query getUserForUsername($login: String! $avatarSize: Int) {
320
335
  user(login: $login) {
321
- ${U(!0,k(s))}
336
+ ${A(!0,N(n))}
322
337
  }
323
338
  }
324
- `,variables:{login:e.username,avatarSize:e.avatarSize}},t),a=(i=o.body.data)==null?void 0:i.user;if(!a)throw new b("Could not find user via username",o.body.errors);return{data:A({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)})}}async getOrgsForCurrentUser(e={},t={}){let s=await y(this.config,{query:`
339
+ `,variables:{login:e.username,avatarSize:e.avatarSize}},t),a=(i=o.body.data)==null?void 0:i.user;if(!a)throw new b("Could not find user via username",o.body.errors);return{data:O({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)})}}async getOrgsForCurrentUser(e={},t={}){let n=await y(this.config,{query:`
325
340
  query getOrgsForCurrentUser($cursor: String, $first: Int!) {
326
341
  viewer {
327
342
  organizations(first: $first after: $cursor) {
@@ -340,7 +355,7 @@ query getOrgsForCurrentUser($cursor: String, $first: Int!) {
340
355
  }
341
356
  }
342
357
  }
343
- `,variables:{cursor:e.cursor,first:E}},t);if(!s.body.data)throw new b("Could not fetch orgs for current user",s.body.errors);let o=s.body.data.viewer.organizations.nodes||[];return{pageInfo:s.body.data.viewer.organizations.pageInfo,data:o.map(a=>({id:a.databaseId.toString(),graphQLId:a.id,username:a.login,name:a.name||null,email:a.email||null,avatarUrl:a.avatarUrl}))}}async getOrgMembers(e,t={}){var a,i,u,l,p,d,c,g,m;let s=await y(this.config,{query:`
358
+ `,variables:{cursor:e.cursor,first:C}},t);if(!n.body.data)throw new b("Could not fetch orgs for current user",n.body.errors);let o=n.body.data.viewer.organizations.nodes||[];return{pageInfo:n.body.data.viewer.organizations.pageInfo,data:o.map(a=>({id:a.databaseId.toString(),graphQLId:a.id,username:a.login,name:a.name||null,email:a.email||null,avatarUrl:a.avatarUrl}))}}async getOrgMembers(e,t={}){var a,i,u,l,p,d,c,g,m;let n=await y(this.config,{query:`
344
359
  query getOrgMember($cursor: String, $first: Int!, $login: String!) {
345
360
  viewer {
346
361
  organization(login: $login) {
@@ -350,28 +365,28 @@ query getOrgMember($cursor: String, $first: Int!, $login: String!) {
350
365
  hasNextPage
351
366
  }
352
367
  nodes {
353
- ${U(!1,!0)}
368
+ ${A(!1,!0)}
354
369
  }
355
370
  }
356
371
  }
357
372
  }
358
373
  }
359
- `,variables:{cursor:e.cursor,first:E,login:e.org}},t);if(!((i=(a=s.body.data)==null?void 0:a.viewer.organization)!=null&&i.membersWithRole)&&((u=s.body.errors)!=null&&u.length))throw new b("Could not read the members of the organization",s.body.errors);let o=((p=(l=s.body.data)==null?void 0:l.viewer.organization)==null?void 0:p.membersWithRole.nodes)||[];return{pageInfo:{hasNextPage:((c=(d=s.body.data)==null?void 0:d.viewer.organization)==null?void 0:c.membersWithRole.pageInfo.hasNextPage)??!1,endCursor:((m=(g=s.body.data)==null?void 0:g.viewer.organization)==null?void 0:m.membersWithRole.pageInfo.endCursor)??null},data:o.map(h=>A({...h,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(h.avatarUrl,h.email,t)}))}}async getRepo(e,t={}){var o;let s=await y(this.config,{query:`
374
+ `,variables:{cursor:e.cursor,first:C,login:e.org}},t);if(!((i=(a=n.body.data)==null?void 0:a.viewer.organization)!=null&&i.membersWithRole)&&((u=n.body.errors)!=null&&u.length))throw new b("Could not read the members of the organization",n.body.errors);let o=((p=(l=n.body.data)==null?void 0:l.viewer.organization)==null?void 0:p.membersWithRole.nodes)||[];return{pageInfo:{hasNextPage:((c=(d=n.body.data)==null?void 0:d.viewer.organization)==null?void 0:c.membersWithRole.pageInfo.hasNextPage)??!1,endCursor:((m=(g=n.body.data)==null?void 0:g.viewer.organization)==null?void 0:m.membersWithRole.pageInfo.endCursor)??null},data:o.map(h=>O({...h,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(h.avatarUrl,h.email,t)}))}}async getRepo(e,t={}){var o;let n=await y(this.config,{query:`
360
375
  query getRepo($owner: String!, $name: String!) {
361
376
  repository(owner: $owner, name: $name) {
362
- ${_e}
377
+ ${ze}
363
378
  }
364
379
  }
365
- `,variables:{owner:e.namespace,name:e.name}},t);if(!((o=s.body.data)!=null&&o.repository))throw new b(`Repository ${e.namespace}/${e.name} not found`,s.body.errors);return{data:Be(s.body.data.repository)}}async getRepos(e,t={}){let s=e.map(({namespace:u,name:l},p)=>`
380
+ `,variables:{owner:e.namespace,name:e.name}},t);if(!((o=n.body.data)!=null&&o.repository))throw new b(`Repository ${e.namespace}/${e.name} not found`,n.body.errors);return{data:We(n.body.data.repository)}}async getRepos(e,t={}){let n=e.map(({namespace:u,name:l},p)=>`
366
381
  getRepo_${p}: repository(owner: "${u}", name: "${l}") {
367
- ${_e}
382
+ ${ze}
368
383
  }
369
384
  `).join(`
370
385
  `),o=await y(this.config,{query:`
371
386
  query batchGetRepos {
372
- ${s}
387
+ ${n}
373
388
  }
374
- `},t);if(!o.body.data)throw new b("Could not fetch repos",o.body.errors);let a=[],i=[];return e.forEach((u,l)=>{let p=o.body.data[`getRepo_${l}`];p?a.push(Be(p)):i.push({input:u})}),{data:a,errors:i}}async fetchMultipleRESTPages(e,t,s,o){let a=[];for(let d=0;d<t;d++)a.push(s(e+d));let i=await Promise.all(a),u=[];for(let d of i){if(!d.body)throw new Error(d.statusText||"Unknown error");u=u.concat(d.body.map(c=>o(c)))}let l=i.every(d=>d.body.length===100),p=e+t;return{data:u,pageInfo:{hasNextPage:l,nextPage:l?p:null}}}async getReposForCurrentUser(e,t={}){if(e.simultaneousPagesToFetch&&e.simultaneousPagesToFetch>40)throw new Error("The argument 'simultaneousPagesToFetch' cannot exceed 40 for 'getReposForCurrentUser'");let s=new URLSearchParams;s.append("per_page","100"),e.affiliations&&s.append("affiliation",e.affiliations.join(","));let o=a=>this.config.request({url:`${Z(this.config,t)}/user/repos?${s.toString()}&page=${a}`,headers:{...I(t.token||this.config.token),Accept:"application/vnd.github.raw+json","X-Github-Next-Global-ID":1}});return await this.fetchMultipleRESTPages(e.page??1,e.simultaneousPagesToFetch??4,o,St)}async getReposForOrg(e,t={}){if(e.simultaneousPagesToFetch&&e.simultaneousPagesToFetch>40)throw new Error("The argument 'simultaneousPagesToFetch' cannot exceed 40 for 'getReposForOrg'");let s=o=>this.config.request({url:`${Z(this.config,t)}/orgs/${e.orgName}/repos?per_page=100&page=${o}`,headers:{...I(t.token||this.config.token),Accept:"application/vnd.github.raw+json","X-Github-Next-Global-ID":1}});return await this.fetchMultipleRESTPages(e.page??1,e.simultaneousPagesToFetch??4,s,St)}async getReposForUsernames(e,t={}){if(!e.usernames.length)return{pageInfo:{endCursor:null,hasNextPage:!1},data:[]};let s=await y(this.config,{query:`
389
+ `},t);if(!o.body.data)throw new b("Could not fetch repos",o.body.errors);let a=[],i=[];return e.forEach((u,l)=>{let p=o.body.data[`getRepo_${l}`];p?a.push(We(p)):i.push({input:u})}),{data:a,errors:i}}async fetchMultipleRESTPages(e,t,n,o){let a=[];for(let d=0;d<t;d++)a.push(n(e+d));let i=await Promise.all(a),u=[];for(let d of i){if(!d.body)throw new Error(d.statusText||"Unknown error");u=u.concat(d.body.map(c=>o(c)))}let l=i.every(d=>d.body.length===100),p=e+t;return{data:u,pageInfo:{hasNextPage:l,nextPage:l?p:null}}}async getReposForCurrentUser(e,t={}){if(e.simultaneousPagesToFetch&&e.simultaneousPagesToFetch>40)throw new Error("The argument 'simultaneousPagesToFetch' cannot exceed 40 for 'getReposForCurrentUser'");let n=new URLSearchParams;n.append("per_page","100"),e.affiliations&&n.append("affiliation",e.affiliations.join(","));let o=a=>this.config.request({url:`${Y(this.config,t)}/user/repos?${n.toString()}&page=${a}`,headers:{...R(t.token||this.config.token),Accept:"application/vnd.github.raw+json","X-Github-Next-Global-ID":1}});return await this.fetchMultipleRESTPages(e.page??1,e.simultaneousPagesToFetch??4,o,Lt)}async getReposForOrg(e,t={}){if(e.simultaneousPagesToFetch&&e.simultaneousPagesToFetch>40)throw new Error("The argument 'simultaneousPagesToFetch' cannot exceed 40 for 'getReposForOrg'");let n=o=>this.config.request({url:`${Y(this.config,t)}/orgs/${e.orgName}/repos?per_page=100&page=${o}`,headers:{...R(t.token||this.config.token),Accept:"application/vnd.github.raw+json","X-Github-Next-Global-ID":1}});return await this.fetchMultipleRESTPages(e.page??1,e.simultaneousPagesToFetch??4,n,Lt)}async getReposForUsernames(e,t={}){if(!e.usernames.length)return{pageInfo:{endCursor:null,hasNextPage:!1},data:[]};let n=await y(this.config,{query:`
375
390
  query getReposForUsernames($query: String!, $cursor: String, $first: Int!) {
376
391
  search(query: $query, type: REPOSITORY, first: $first, after: $cursor) {
377
392
  pageInfo {
@@ -380,12 +395,12 @@ query getReposForUsernames($query: String!, $cursor: String, $first: Int!) {
380
395
  }
381
396
  nodes {
382
397
  ... on Repository {
383
- ${_e}
398
+ ${ze}
384
399
  }
385
400
  }
386
401
  }
387
402
  }
388
- `,variables:{query:`fork:true ${e.usernames.map(a=>`user:${a}`).join(" ")}`,cursor:e.cursor,first:E}},t);if(!s.body.data)throw new b("Could not fetch repos for usernames",s.body.errors);let o=s.body.data.search.nodes||[];return{pageInfo:s.body.data.search.pageInfo,data:o.map(Be)}}async getReposForOwners(e,t={}){return this.getReposForUsernames({usernames:e.owners.filter(s=>s.username).map(s=>s.username),cursor:e.cursor},t)}async getRefs(e,t,s={}){var u;let o=await y(this.config,{query:`
403
+ `,variables:{query:`fork:true ${e.usernames.map(a=>`user:${a}`).join(" ")}`,cursor:e.cursor,first:C}},t);if(!n.body.data)throw new b("Could not fetch repos for usernames",n.body.errors);let o=n.body.data.search.nodes||[];return{pageInfo:n.body.data.search.pageInfo,data:o.map(We)}}async getReposForOwners(e,t={}){return this.getReposForUsernames({usernames:e.owners.filter(n=>n.username).map(n=>n.username),cursor:e.cursor},t)}async getRefs(e,t,n={}){var u;let o=await y(this.config,{query:`
389
404
  query getRefs($owner: String!, $name: String!, $refPrefix: String!, $cursor: String, $first: Int!) {
390
405
  repository(owner: $owner, name: $name) {
391
406
  refs(refPrefix: $refPrefix first: $first after: $cursor) {
@@ -406,7 +421,7 @@ query getRefs($owner: String!, $name: String!, $refPrefix: String!, $cursor: Str
406
421
  }
407
422
  }
408
423
  }
409
- `,variables:{owner:t.repo.namespace,name:t.repo.name,refPrefix:e,cursor:t.cursor,first:E}},s),a=(u=o.body.data)==null?void 0:u.repository;if(!a)throw new b("Ref repository not found.",o.body.errors);let i=a.refs;return i?{pageInfo:i.pageInfo,data:(i.nodes||[]).map(l=>{var d;let p=(d=l.target)!=null&&d.oid?l.target:null;return{name:l.name,commit:p?{oid:p.oid,authoredDate:new Date(p.authoredDate),committedDate:new Date(p.committedDate)}:null}})}:{pageInfo:{endCursor:null,hasNextPage:!1},data:[]}}async getBranches(e,t={}){return this.getRefs("refs/heads/",e,t)}async getTags(e,t={}){return this.getRefs("refs/tags/",e,t)}async getBlame(e,t={}){var i;let s=await y(this.config,{query:`
424
+ `,variables:{owner:t.repo.namespace,name:t.repo.name,refPrefix:e,cursor:t.cursor,first:C}},n),a=(u=o.body.data)==null?void 0:u.repository;if(!a)throw new b("Ref repository not found.",o.body.errors);let i=a.refs;return i?{pageInfo:i.pageInfo,data:(i.nodes||[]).map(l=>{var d;let p=(d=l.target)!=null&&d.oid?l.target:null;return{name:l.name,commit:p?{oid:p.oid,authoredDate:new Date(p.authoredDate),committedDate:new Date(p.committedDate)}:null}})}:{pageInfo:{endCursor:null,hasNextPage:!1},data:[]}}async getBranches(e,t={}){return this.getRefs("refs/heads/",e,t)}async getTags(e,t={}){return this.getRefs("refs/tags/",e,t)}async getBlame(e,t={}){var i;let n=await y(this.config,{query:`
410
425
  query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
411
426
  repository(owner: $owner, name: $name) {
412
427
  object(expression: $ref) {
@@ -445,7 +460,7 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
445
460
  }
446
461
  }
447
462
  }
448
- `,variables:{owner:e.repo.namespace,name:e.repo.name,ref:e.ref,path:e.path}},t),o=(i=s.body.data)==null?void 0:i.repository;if(!o)throw new b("Blame repository not found.",s.body.errors);let a=o.object;if(!a||!("blame"in a))throw new b("Ref not found.",s.body.errors);if(a.blame.ranges.length===0)throw new b("File not found.",s.body.errors);return{data:{ranges:a.blame.ranges.map(u=>{var l;return{startingLine:u.startingLine,endingLine:u.endingLine,commit:{oid:u.commit.oid,parentOids:((l=u.commit.parents.nodes)==null?void 0:l.map(p=>p.oid))||[],authoredDate:new Date(u.commit.authoredDate),author:u.commit.author?{name:u.commit.author.name,email:u.commit.author.email,avatarUrl:u.commit.author.avatarUrl}:null,committedDate:new Date(u.commit.committedDate),committer:u.commit.committer?{name:u.commit.committer.name,email:u.commit.committer.email,avatarUrl:u.commit.committer.avatarUrl}:null,message:u.commit.message,fileCount:u.commit.changedFilesIfAvailable,additions:u.commit.additions,deletions:u.commit.deletions}}})}}}async getFileContents(e,t={}){let s=await this.config.request({url:`${Z(this.config,t)}/repos/${e.repo.namespace}/${e.repo.name}/contents/${encodeURIComponent(e.path)}?ref=${e.ref}`,headers:{...I(t.token||this.config.token),Accept:"application/vnd.github.raw+json"}});if(s.headers["content-type"].startsWith("application/json"))throw new Error(`GitHub: got directory when fetching "${e.path}", getFileContents does not support fetching directories`);if(!s.headers["content-type"].startsWith("application/vnd.github.raw+json"))throw new Error(`GitHub: unsupported content type "${s.headers["content-type"]}" when fetching "${e.path}"`);return{data:new Blob([s.body])}}async searchPullRequests(e,t={}){var p;let s=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=k(o),i=d=>{let c=d&&typeof e.isDraft=="boolean"?`${e.query} draft:${e.isDraft}`:e.query;return Qe("pr",c,e.cursor,{maxPageSize:e.maxPageSize??Rt,supportsEmail:a,supportsDrafts:d,enterpriseVersion:s,includeFromArchivedRepos:e.includeFromArchivedRepos})},u=await y(this.config,i(!0),t);u.body.errors&&Ie(u.body.errors)&&(this.config.baseUrl||t.baseUrl)&&(u=await y(this.config,i(!1),t));let{data:l}=u.body;if(!l)throw new b("Could not search pull requests",u.body.errors);return{pageInfo:{hasNextPage:l.search.pageInfo.hasNextPage,endCursor:l.search.pageInfo.endCursor},data:((p=l.search.nodes)==null?void 0:p.filter(L).map(je))||[]}}async searchIssues(e,t={}){var l;let s=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=k(o),i=await y(this.config,Qe("issue",e.query,e.cursor,{supportsEmail:a,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize??bt,enterpriseVersion:s}),t),{data:u}=i.body;if(!u)throw new b("Could not search issues",i.body.errors);return{pageInfo:{hasNextPage:u.search.pageInfo.hasNextPage,endCursor:u.search.pageInfo.endCursor},data:((l=u.search.nodes)==null?void 0:l.filter(L).map(Cr))||[]}}async getPullRequestsAssociatedWithUser(e,t={}){let s=[`involves:${e.username}`];return e.labelNames&&e.labelNames.forEach(o=>{s.push(`label:"${o}"`)}),this.searchPullRequests({query:s.join(" "),cursor:e.cursor,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize},t)}async getPullRequestsForRepos(e,t={}){let{assigneeLogins:s,updatedBefore:o,authorLogin:a,repos:i,reviewRequestedLogin:u,startQuery:l,mentionLogin:p,labelNames:d,maxPageSize:c}=e,g=Fe(l||"");return i.forEach(m=>{g.push(`repo:${m.namespace}/${m.name}`)}),s&&s.forEach(m=>{g.push(`assignee:${m}`)}),o&&g.push(`updated:<${o}`),a&&g.push(`author:${a}`),u&&g.push(`review-requested:${u}`),p&&g.push(`mentions:${p}`),d&&d.forEach(m=>{g.push(`label:"${m}"`)}),this.searchPullRequests({query:`sort:updated ${g.join(" ")}`,isDraft:e.isDraft,cursor:e.cursor,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:c},t)}async getPullRequestForRepo(e,t={}){var d;let s=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=k(o),i=c=>({query:`query getPullRequest(
463
+ `,variables:{owner:e.repo.namespace,name:e.repo.name,ref:e.ref,path:e.path}},t),o=(i=n.body.data)==null?void 0:i.repository;if(!o)throw new b("Blame repository not found.",n.body.errors);let a=o.object;if(!a||!("blame"in a))throw new b("Ref not found.",n.body.errors);if(a.blame.ranges.length===0)throw new b("File not found.",n.body.errors);return{data:{ranges:a.blame.ranges.map(u=>{var l;return{startingLine:u.startingLine,endingLine:u.endingLine,commit:{oid:u.commit.oid,parentOids:((l=u.commit.parents.nodes)==null?void 0:l.map(p=>p.oid))||[],authoredDate:new Date(u.commit.authoredDate),author:u.commit.author?{name:u.commit.author.name,email:u.commit.author.email,avatarUrl:u.commit.author.avatarUrl}:null,committedDate:new Date(u.commit.committedDate),committer:u.commit.committer?{name:u.commit.committer.name,email:u.commit.committer.email,avatarUrl:u.commit.committer.avatarUrl}:null,message:u.commit.message,fileCount:u.commit.changedFilesIfAvailable,additions:u.commit.additions,deletions:u.commit.deletions}}})}}}async getFileContents(e,t={}){let n=await this.config.request({url:`${Y(this.config,t)}/repos/${e.repo.namespace}/${e.repo.name}/contents/${encodeURIComponent(e.path)}?ref=${e.ref}`,headers:{...R(t.token||this.config.token),Accept:"application/vnd.github.raw+json"}});if(n.headers["content-type"].startsWith("application/json"))throw new Error(`GitHub: got directory when fetching "${e.path}", getFileContents does not support fetching directories`);if(!n.headers["content-type"].startsWith("application/vnd.github.raw+json"))throw new Error(`GitHub: unsupported content type "${n.headers["content-type"]}" when fetching "${e.path}"`);return{data:new Blob([n.body])}}async searchPullRequests(e,t={}){var p;let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=N(o),i=d=>{let c=d&&typeof e.isDraft=="boolean"?`${e.query} draft:${e.isDraft}`:e.query;return Me("pr",c,e.cursor,{maxPageSize:e.maxPageSize??vt,supportsEmail:a,supportsDrafts:d,enterpriseVersion:n,includeFromArchivedRepos:e.includeFromArchivedRepos})},u=await y(this.config,i(!0),t);u.body.errors&&ye(u.body.errors)&&(this.config.baseUrl||t.baseUrl)&&(u=await y(this.config,i(!1),t));let{data:l}=u.body;if(!l)throw new b("Could not search pull requests",u.body.errors);return{pageInfo:{hasNextPage:l.search.pageInfo.hasNextPage,endCursor:l.search.pageInfo.endCursor},data:((p=l.search.nodes)==null?void 0:p.filter(U).map(He))||[]}}async searchIssues(e,t={}){var l;let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=N(o),i=await y(this.config,Me("issue",e.query,e.cursor,{supportsEmail:a,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize??qt,enterpriseVersion:n}),t),{data:u}=i.body;if(!u)throw new b("Could not search issues",i.body.errors);return{pageInfo:{hasNextPage:u.search.pageInfo.hasNextPage,endCursor:u.search.pageInfo.endCursor},data:((l=u.search.nodes)==null?void 0:l.filter(U).map(Ar))||[]}}async getPullRequestsAssociatedWithUser(e,t={}){var o;let n=[`involves:${e.username}`];return(o=e.repos)!=null&&o.length&&e.repos.forEach(a=>{n.push(`repo:${a.namespace}/${a.name}`)}),e.labelNames&&e.labelNames.forEach(a=>{n.push(`label:"${a}"`)}),this.searchPullRequests({query:n.join(" "),cursor:e.cursor,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize},t)}async getPullRequestsForRepos(e,t={}){let{assigneeLogins:n,updatedBefore:o,authorLogin:a,repos:i,reviewRequestedLogin:u,startQuery:l,mentionLogin:p,labelNames:d,maxPageSize:c}=e,g=je(l||"");return i.forEach(m=>{g.push(`repo:${m.namespace}/${m.name}`)}),n&&n.forEach(m=>{g.push(`assignee:${m}`)}),o&&g.push(`updated:<${o}`),a&&g.push(`author:${a}`),u&&g.push(`review-requested:${u}`),p&&g.push(`mentions:${p}`),d&&d.forEach(m=>{g.push(`label:"${m}"`)}),this.searchPullRequests({query:`sort:updated ${g.join(" ")}`,isDraft:e.isDraft,cursor:e.cursor,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:c},t)}async getPullRequestForRepo(e,t={}){var d;let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=N(o),i=c=>({query:`query getPullRequest(
449
464
  $owner: String!
450
465
  $name: String!
451
466
  $number: Int!
@@ -455,24 +470,24 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
455
470
  name: $name
456
471
  ) {
457
472
  pullRequest(number: $number) {
458
- ${fe(c,a,s)}
473
+ ${be(c,a,n)}
459
474
  }
460
475
  }
461
- }`,variables:{owner:e.repo.namespace,name:e.repo.name,number:e.number}}),u=await y(this.config,i(!0),t);u.body.errors&&Ie(u.body.errors)&&(this.config.baseUrl||t.baseUrl)&&(u=await y(this.config,i(!1),t));let{data:l}=u.body;if(!l)throw new b("Could not fetch pull request by number",u.body.errors);let p=(d=u.body.data)==null?void 0:d.repository.pullRequest;return{data:p?je(p):null}}async getPullRequestByGraphQLId(e,t={}){var d;let s=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=k(o),i=c=>({query:`query getPullRequest(
476
+ }`,variables:{owner:e.repo.namespace,name:e.repo.name,number:e.number}}),u=await y(this.config,i(!0),t);u.body.errors&&ye(u.body.errors)&&(this.config.baseUrl||t.baseUrl)&&(u=await y(this.config,i(!1),t));let{data:l}=u.body;if(!l)throw new b("Could not fetch pull request by number",u.body.errors);let p=(d=u.body.data)==null?void 0:d.repository.pullRequest;return{data:p?He(p):null}}async getPullRequestByGraphQLId(e,t={}){var d;let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=N(o),i=c=>({query:`query getPullRequest(
462
477
  $graphQLId: ID!
463
478
  ) {
464
479
  node(id: $graphQLId) {
465
480
  ... on PullRequest {
466
- ${fe(c,a,s)}
481
+ ${be(c,a,n)}
467
482
  }
468
483
  }
469
- }`,variables:{graphQLId:e.graphQLId}}),u=await y(this.config,i(!0),t);u.body.errors&&Ie(u.body.errors)&&(this.config.baseUrl||t.baseUrl)&&(u=await y(this.config,i(!1),t));let{data:l}=u.body;if(!l)throw new b("Could not fetch pull request by id",u.body.errors);let p=(d=u.body.data)==null?void 0:d.node;return{data:p?je(p):null}}async closePullRequest(e,t={}){var i,u,l;let{pullRequest:{graphQLId:s}}=e;if(!s)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation ClosePullRequest($pullRequestGraphQLId: ID!) {
484
+ }`,variables:{graphQLId:e.graphQLId}}),u=await y(this.config,i(!0),t);u.body.errors&&ye(u.body.errors)&&(this.config.baseUrl||t.baseUrl)&&(u=await y(this.config,i(!1),t));let{data:l}=u.body;if(!l)throw new b("Could not fetch pull request by id",u.body.errors);let p=(d=u.body.data)==null?void 0:d.node;return{data:p?He(p):null}}async closePullRequest(e,t={}){var i,u,l;let{pullRequest:{graphQLId:n}}=e;if(!n)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation ClosePullRequest($pullRequestGraphQLId: ID!) {
470
485
  closePullRequest(input: { pullRequestId: $pullRequestGraphQLId }) {
471
486
  pullRequest {
472
487
  id
473
488
  }
474
489
  }
475
- }`,a=await y(this.config,{query:`${o}`,variables:{pullRequestGraphQLId:s}},t);if(!((l=(u=(i=a.body.data)==null?void 0:i.closePullRequest)==null?void 0:u.pullRequest)!=null&&l.id))throw new b("Could not close pull request",a.body.errors)}async mergePullRequest(e,t={}){var l,p,d,c;let{pullRequest:s,mergeStrategy:o}=e;if(!s.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');if(!((l=s.headRef)!=null&&l.oid))throw new Error('GitHub requires "headRef.oid" for this function.');let a;switch(o){case"MERGE_COMMIT":{a="MERGE";break}case"REBASE":{a="REBASE";break}case"SQUASH":{a="SQUASH";break}}let i=`mutation MergePullRequest(
490
+ }`,a=await y(this.config,{query:`${o}`,variables:{pullRequestGraphQLId:n}},t);if(!((l=(u=(i=a.body.data)==null?void 0:i.closePullRequest)==null?void 0:u.pullRequest)!=null&&l.id))throw new b("Could not close pull request",a.body.errors)}async mergePullRequest(e,t={}){var l,p,d,c;let{pullRequest:n,mergeStrategy:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');if(!((l=n.headRef)!=null&&l.oid))throw new Error('GitHub requires "headRef.oid" for this function.');let a;switch(o){case"MERGE_COMMIT":{a="MERGE";break}case"REBASE":{a="REBASE";break}case"SQUASH":{a="SQUASH";break}}let i=`mutation MergePullRequest(
476
491
  $pullRequestGraphQLId: ID!,
477
492
  $expectedSourceSha: GitObjectID!,
478
493
  $mergeStrategy: PullRequestMergeMethod,
@@ -486,43 +501,43 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
486
501
  id
487
502
  }
488
503
  }
489
- }`,u=await y(this.config,{query:`${i}`,variables:{pullRequestGraphQLId:s.graphQLId,expectedSourceSha:s.headRef.oid,mergeStrategy:a}},t);if(!((c=(d=(p=u.body.data)==null?void 0:p.mergePullRequest)==null?void 0:d.pullRequest)!=null&&c.id))throw new b("Could not merge pull request",u.body.errors)}async setPullRequestMilestone(e,t={}){var u,l,p;let{pullRequest:s,milestone:o}=e;if(!s.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=`mutation SetPullRequestMilestone($pullRequestGraphQLId: ID!, $milestoneGraphQLId: ID) {
504
+ }`,u=await y(this.config,{query:`${i}`,variables:{pullRequestGraphQLId:n.graphQLId,expectedSourceSha:n.headRef.oid,mergeStrategy:a}},t);if(!((c=(d=(p=u.body.data)==null?void 0:p.mergePullRequest)==null?void 0:d.pullRequest)!=null&&c.id))throw new b("Could not merge pull request",u.body.errors)}async setPullRequestMilestone(e,t={}){var u,l,p;let{pullRequest:n,milestone:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=`mutation SetPullRequestMilestone($pullRequestGraphQLId: ID!, $milestoneGraphQLId: ID) {
490
505
  updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, milestoneId: $milestoneGraphQLId }) {
491
506
  pullRequest {
492
507
  id
493
508
  }
494
509
  }
495
- }`,i=await y(this.config,{query:`${a}`,variables:{pullRequestGraphQLId:s.graphQLId,milestoneGraphQLId:(o==null?void 0:o.graphQLId)??null}},t);if(!((p=(l=(u=i.body.data)==null?void 0:u.updatePullRequest)==null?void 0:l.pullRequest)!=null&&p.id))throw new b("Could not set milestone of pull request",i.body.errors)}async markPullRequestReadyForReview(e,t){var a,i,u;let s=`mutation MarkReadyToReview($pullRequestGraphQLId: ID!) {
510
+ }`,i=await y(this.config,{query:`${a}`,variables:{pullRequestGraphQLId:n.graphQLId,milestoneGraphQLId:(o==null?void 0:o.graphQLId)??null}},t);if(!((p=(l=(u=i.body.data)==null?void 0:u.updatePullRequest)==null?void 0:l.pullRequest)!=null&&p.id))throw new b("Could not set milestone of pull request",i.body.errors)}async markPullRequestReadyForReview(e,t){var a,i,u;let n=`mutation MarkReadyToReview($pullRequestGraphQLId: ID!) {
496
511
  markPullRequestReadyForReview(input: { pullRequestId: $pullRequestGraphQLId }) {
497
512
  pullRequest {
498
513
  id
499
514
  }
500
515
  }
501
- }`,o=await y(this.config,{query:s,variables:{pullRequestGraphQLId:e}},t);if(!((u=(i=(a=o.body.data)==null?void 0:a.markPullRequestReadyForReview)==null?void 0:i.pullRequest)!=null&&u.id))throw new b("Could not mark pull request ready to review",o.body.errors)}async convertPullRequestToDraft(e,t){var a,i,u;let s=`mutation ConvertToDraft($pullRequestGraphQLId: ID!) {
516
+ }`,o=await y(this.config,{query:n,variables:{pullRequestGraphQLId:e}},t);if(!((u=(i=(a=o.body.data)==null?void 0:a.markPullRequestReadyForReview)==null?void 0:i.pullRequest)!=null&&u.id))throw new b("Could not mark pull request ready to review",o.body.errors)}async convertPullRequestToDraft(e,t){var a,i,u;let n=`mutation ConvertToDraft($pullRequestGraphQLId: ID!) {
502
517
  convertPullRequestToDraft(input: { pullRequestId: $pullRequestGraphQLId }) {
503
518
  pullRequest {
504
519
  id
505
520
  }
506
521
  }
507
- }`,o=await y(this.config,{query:s,variables:{pullRequestGraphQLId:e}},t);if(!((u=(i=(a=o.body.data)==null?void 0:a.convertPullRequestToDraft)==null?void 0:i.pullRequest)!=null&&u.id))throw new b("Could not convert pull request to draft",o.body.errors)}async setPullRequestAsDraft(e,t={}){let{pullRequest:{graphQLId:s},isDraft:o}=e;if(!s)throw new Error('GitHub requires "graphQLId" for this function.');if(o){await this.convertPullRequestToDraft(s,t);return}await this.markPullRequestReadyForReview(s,t)}async setPullRequestReviewers(e,t={}){var d,c,g;let{pullRequest:{reviews:s,graphQLId:o},reviewers:a}=e;if(!s)throw new Error('GitHub requires "reviews" for this function');if(!o)throw new Error('GitHub requires "graphQLId" for this function.');let i=s.filter(m=>m.state!=="REVIEW_REQUESTED").map(m=>{if(!m.reviewer.graphQLId)throw new Error('GitHub requires reviewer "graphQLId" for this function.');return m.reviewer.graphQLId}),u=a.map(m=>{if(!m.graphQLId)throw new Error('GitHub requires reviewer "graphQLId" for this function.');return m.graphQLId}).filter(m=>i.indexOf(m)===-1),l=`mutation SetPullRequestReviewers($pullRequestGraphQLId: ID!, $reviewerGraphQLIds: [ID!]!) {
522
+ }`,o=await y(this.config,{query:n,variables:{pullRequestGraphQLId:e}},t);if(!((u=(i=(a=o.body.data)==null?void 0:a.convertPullRequestToDraft)==null?void 0:i.pullRequest)!=null&&u.id))throw new b("Could not convert pull request to draft",o.body.errors)}async setPullRequestAsDraft(e,t={}){let{pullRequest:{graphQLId:n},isDraft:o}=e;if(!n)throw new Error('GitHub requires "graphQLId" for this function.');if(o){await this.convertPullRequestToDraft(n,t);return}await this.markPullRequestReadyForReview(n,t)}async setPullRequestReviewers(e,t={}){var d,c,g;let{pullRequest:{reviews:n,graphQLId:o},reviewers:a}=e;if(!n)throw new Error('GitHub requires "reviews" for this function');if(!o)throw new Error('GitHub requires "graphQLId" for this function.');let i=n.filter(m=>m.state!=="REVIEW_REQUESTED").map(m=>{if(!m.reviewer.graphQLId)throw new Error('GitHub requires reviewer "graphQLId" for this function.');return m.reviewer.graphQLId}),u=a.map(m=>{if(!m.graphQLId)throw new Error('GitHub requires reviewer "graphQLId" for this function.');return m.graphQLId}).filter(m=>i.indexOf(m)===-1),l=`mutation SetPullRequestReviewers($pullRequestGraphQLId: ID!, $reviewerGraphQLIds: [ID!]!) {
508
523
  requestReviews(input: { pullRequestId: $pullRequestGraphQLId, userIds: $reviewerGraphQLIds }) {
509
524
  pullRequest {
510
525
  id
511
526
  }
512
527
  }
513
- }`,p=await y(this.config,{query:l,variables:{pullRequestGraphQLId:o,reviewerGraphQLIds:u}},t);if(!((g=(c=(d=p.body.data)==null?void 0:d.requestReviews)==null?void 0:c.pullRequest)!=null&&g.id))throw new b("Could not set pull request reviewers",p.body.errors)}async reRequestPullRequestReviews(e,t={}){var p,d,c;let{pullRequest:{reviews:s,graphQLId:o},reviewers:a}=e;if(!o)throw new Error('GitHub requires "graphQLId" for this function.');if(!s)throw new Error('GitHub requires "reviews" for this function.');let i=[];for(let g of a){if(!g.graphQLId)throw new Error('GitHub requires reviwer "graphQLId" for this function.');if(!s.find(m=>m.reviewer.graphQLId===g.graphQLId))throw new Error("Can only re-request review from existing reviewer.");i.push(g.graphQLId)}let u=`mutation SetPullRequestReviewers($pullRequestGraphQLId: ID!, $reviewerGraphQLIds: [ID!]!) {
528
+ }`,p=await y(this.config,{query:l,variables:{pullRequestGraphQLId:o,reviewerGraphQLIds:u}},t);if(!((g=(c=(d=p.body.data)==null?void 0:d.requestReviews)==null?void 0:c.pullRequest)!=null&&g.id))throw new b("Could not set pull request reviewers",p.body.errors)}async reRequestPullRequestReviews(e,t={}){var p,d,c;let{pullRequest:{reviews:n,graphQLId:o},reviewers:a}=e;if(!o)throw new Error('GitHub requires "graphQLId" for this function.');if(!n)throw new Error('GitHub requires "reviews" for this function.');let i=[];for(let g of a){if(!g.graphQLId)throw new Error('GitHub requires reviwer "graphQLId" for this function.');if(!n.find(m=>m.reviewer.graphQLId===g.graphQLId))throw new Error("Can only re-request review from existing reviewer.");i.push(g.graphQLId)}let u=`mutation SetPullRequestReviewers($pullRequestGraphQLId: ID!, $reviewerGraphQLIds: [ID!]!) {
514
529
  requestReviews(input: { pullRequestId: $pullRequestGraphQLId, userIds: $reviewerGraphQLIds, union: true }) {
515
530
  pullRequest {
516
531
  id
517
532
  }
518
533
  }
519
- }`,l=await y(this.config,{query:u,variables:{pullRequestGraphQLId:o,reviewerGraphQLIds:i}},t);if(!((c=(d=(p=l.body.data)==null?void 0:p.requestReviews)==null?void 0:d.pullRequest)!=null&&c.id))throw new b("Could not re-request pull request reviews",l.body.errors)}async setPullRequestAssignees(e,t={}){var l,p,d;let{pullRequest:s,assignees:o}=e;if(!s.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=o.map(c=>{if(!c.graphQLId)throw new Error('GitHub requires assignee "graphQLId" for this function.');return c.graphQLId}),i=`mutation SetPullRequestAssignees($pullRequestGraphQLId: ID!, $assigneeGraphQLIds: [ID!]!) {
534
+ }`,l=await y(this.config,{query:u,variables:{pullRequestGraphQLId:o,reviewerGraphQLIds:i}},t);if(!((c=(d=(p=l.body.data)==null?void 0:p.requestReviews)==null?void 0:d.pullRequest)!=null&&c.id))throw new b("Could not re-request pull request reviews",l.body.errors)}async setPullRequestAssignees(e,t={}){var l,p,d;let{pullRequest:n,assignees:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=o.map(c=>{if(!c.graphQLId)throw new Error('GitHub requires assignee "graphQLId" for this function.');return c.graphQLId}),i=`mutation SetPullRequestAssignees($pullRequestGraphQLId: ID!, $assigneeGraphQLIds: [ID!]!) {
520
535
  updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, assigneeIds: $assigneeGraphQLIds }) {
521
536
  pullRequest {
522
537
  id
523
538
  }
524
539
  }
525
- }`,u=await y(this.config,{query:i,variables:{pullRequestGraphQLId:s.graphQLId,assigneeGraphQLIds:a}},t);if(!((d=(p=(l=u.body.data)==null?void 0:l.updatePullRequest)==null?void 0:p.pullRequest)!=null&&d.id))throw new b("Could not set pull request assignees",u.body.errors)}async getReviewsForPullRequest(e,t={}){var d,c,g,m;let{repo:{namespace:s,name:o},pullRequestId:a}=e,i=`query getPullRequests(
540
+ }`,u=await y(this.config,{query:i,variables:{pullRequestGraphQLId:n.graphQLId,assigneeGraphQLIds:a}},t);if(!((d=(p=(l=u.body.data)==null?void 0:l.updatePullRequest)==null?void 0:p.pullRequest)!=null&&d.id))throw new b("Could not set pull request assignees",u.body.errors)}async getReviewsForPullRequest(e,t={}){var d,c,g,m;let{repo:{namespace:n,name:o},pullRequestId:a}=e,i=`query getPullRequests(
526
541
  $namespace: String!
527
542
  $name: String!
528
543
  $pullRequestId: Int!
@@ -574,54 +589,54 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
574
589
  }
575
590
  }
576
591
  }
577
- }`,u=await y(this.config,{query:i,variables:{namespace:s,name:o,pullRequestId:a}},t),l=((c=(d=u.body.data)==null?void 0:d.repository.pullRequest.reviewThreads.nodes)==null?void 0:c.filter(L).reduce((h,R)=>{var v,x;if(!((x=(v=R.comments.nodes)==null?void 0:v[0])!=null&&x.pullRequestReview))return h;let S=R.comments.nodes[0].pullRequestReview,f=qr(R);return f&&(h[S.id]||(h[S.id]=[]),h[S.id].push(f)),h},{}))??{};return{data:((m=(g=u.body.data)==null?void 0:g.repository.pullRequest.reviews.nodes)==null?void 0:m.filter(L).filter(h=>l[h.id]).map(h=>({author:h.author?{avatarUrl:h.author.avatarUrl,email:null,name:h.author.login}:null,body:h.body,createdAt:h.publishedAt?new Date(h.publishedAt):null,id:h.databaseId,graphQLId:h.id,reviewComments:l[h.id],url:h.url})))??[]}}async getIssuesAssociatedWithUser(e,t={}){var c;let[s,o]=((c=e.cursor)==null?void 0:c.split(";"))||[void 0,void 0],a=[];e.labelNames&&e.labelNames.forEach(g=>{a.push(`label:"${g}"`)});let[i,u]=await Promise.all([s==="null"?null:this.searchIssues({query:`author:${e.username} ${a.join(" ")}`,cursor:s,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize},t),o==="null"?null:this.searchIssues({query:`assignee:${e.username} ${a.join(" ")}`,cursor:o,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize},t)]),l={},p=[],d=g=>{l[g.id]||(l[g.id]=!0,p.push(g))};return i==null||i.data.forEach(d),u==null||u.data.forEach(d),{pageInfo:{hasNextPage:(i==null?void 0:i.pageInfo.hasNextPage)||(u==null?void 0:u.pageInfo.hasNextPage)||!1,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"}`},data:p}}async setPullRequestLabels(e,t={}){var u,l,p;let{pullRequest:s,labels:o}=e;if(!s.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=`mutation SetPullRequestLabels($pullRequestGraphQLId: ID!, $labelGraphQLIds: [ID!]) {
592
+ }`,u=await y(this.config,{query:i,variables:{namespace:n,name:o,pullRequestId:a}},t),l=((c=(d=u.body.data)==null?void 0:d.repository.pullRequest.reviewThreads.nodes)==null?void 0:c.filter(U).reduce((h,I)=>{var v,G;if(!((G=(v=I.comments.nodes)==null?void 0:v[0])!=null&&G.pullRequestReview))return h;let w=I.comments.nodes[0].pullRequestReview,f=Ur(I);return f&&(h[w.id]||(h[w.id]=[]),h[w.id].push(f)),h},{}))??{};return{data:((m=(g=u.body.data)==null?void 0:g.repository.pullRequest.reviews.nodes)==null?void 0:m.filter(U).filter(h=>l[h.id]).map(h=>({author:h.author?{avatarUrl:h.author.avatarUrl,email:null,name:h.author.login}:null,body:h.body,createdAt:h.publishedAt?new Date(h.publishedAt):null,id:h.databaseId,graphQLId:h.id,reviewComments:l[h.id],url:h.url})))??[]}}async getIssuesAssociatedWithUser(e,t={}){var c;let[n,o]=((c=e.cursor)==null?void 0:c.split(";"))||[void 0,void 0],a=[];e.labelNames&&e.labelNames.forEach(g=>{a.push(`label:"${g}"`)});let[i,u]=await Promise.all([n==="null"?null:this.searchIssues({query:`author:${e.username} ${a.join(" ")}`,cursor:n,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize},t),o==="null"?null:this.searchIssues({query:`assignee:${e.username} ${a.join(" ")}`,cursor:o,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize},t)]),l={},p=[],d=g=>{l[g.id]||(l[g.id]=!0,p.push(g))};return i==null||i.data.forEach(d),u==null||u.data.forEach(d),{pageInfo:{hasNextPage:(i==null?void 0:i.pageInfo.hasNextPage)||(u==null?void 0:u.pageInfo.hasNextPage)||!1,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"}`},data:p}}async setPullRequestLabels(e,t={}){var u,l,p;let{pullRequest:n,labels:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=`mutation SetPullRequestLabels($pullRequestGraphQLId: ID!, $labelGraphQLIds: [ID!]) {
578
593
  updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, labelIds: $labelGraphQLIds }) {
579
594
  pullRequest {
580
595
  id
581
596
  }
582
597
  }
583
- }`,i=await y(this.config,{query:a,variables:{pullRequestGraphQLId:s.graphQLId,labelGraphQLIds:o.map(d=>{if(!d.graphQLId)throw new Error('GitHub requires label "graphQLId" for this function.');return d.graphQLId})}},t);if(!((p=(l=(u=i.body.data)==null?void 0:u.updatePullRequest)==null?void 0:l.pullRequest)!=null&&p.id))throw new b("Could not set pull request labels",i.body.errors)}async getIssuesForRepos(e,t={}){let s=Fe(e.startQuery||""),{cursor:o,assigneeLogins:a,updatedBefore:i,authorLogin:u,mentionLogin:l,labelNames:p}=e;return e.repos.forEach(d=>{s.push(`repo:${d.namespace}/${d.name}`)}),a&&a.forEach(d=>{s.push(`assignee:${d}`)}),i&&s.push(`updated:<${i}`),u&&s.push(`author:${u}`),l&&s.push(`mentions:${l}`),p&&p.forEach(d=>{s.push(`label:"${d}"`)}),this.searchIssues({query:`sort:updated ${s.join(" ")}`,cursor:o,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize},t)}async closeIssueWithReason(e,t={}){var u,l,p;let{issue:s,reason:o}=e;if(!s.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=`mutation CloseIssueWithReason($issueGraphQLId: ID!, $reason: IssueClosedStateReason!) {
598
+ }`,i=await y(this.config,{query:a,variables:{pullRequestGraphQLId:n.graphQLId,labelGraphQLIds:o.map(d=>{if(!d.graphQLId)throw new Error('GitHub requires label "graphQLId" for this function.');return d.graphQLId})}},t);if(!((p=(l=(u=i.body.data)==null?void 0:u.updatePullRequest)==null?void 0:l.pullRequest)!=null&&p.id))throw new b("Could not set pull request labels",i.body.errors)}async getIssuesForRepos(e,t={}){let n=je(e.startQuery||""),{cursor:o,assigneeLogins:a,updatedBefore:i,authorLogin:u,mentionLogin:l,labelNames:p}=e;return e.repos.forEach(d=>{n.push(`repo:${d.namespace}/${d.name}`)}),a&&a.forEach(d=>{n.push(`assignee:${d}`)}),i&&n.push(`updated:<${i}`),u&&n.push(`author:${u}`),l&&n.push(`mentions:${l}`),p&&p.forEach(d=>{n.push(`label:"${d}"`)}),this.searchIssues({query:`sort:updated ${n.join(" ")}`,cursor:o,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize},t)}async closeIssueWithReason(e,t={}){var u,l,p;let{issue:n,reason:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=`mutation CloseIssueWithReason($issueGraphQLId: ID!, $reason: IssueClosedStateReason!) {
584
599
  closeIssue(input: { issueId: $issueGraphQLId, stateReason: $reason }) {
585
600
  issue {
586
601
  id
587
602
  }
588
603
  }
589
- }`,i=await y(this.config,{query:a,variables:{issueGraphQLId:s.graphQLId,reason:o}},t);if(!((p=(l=(u=i.body.data)==null?void 0:u.closeIssue)==null?void 0:l.issue)!=null&&p.id))throw new b("Could not close issue with reason",i.body.errors)}async closeIssue(e,t={}){var i,u,l;let{issue:s}=e;if(!s.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation SetIssueState($issueGraphQLId: ID!) {
604
+ }`,i=await y(this.config,{query:a,variables:{issueGraphQLId:n.graphQLId,reason:o}},t);if(!((p=(l=(u=i.body.data)==null?void 0:u.closeIssue)==null?void 0:l.issue)!=null&&p.id))throw new b("Could not close issue with reason",i.body.errors)}async closeIssue(e,t={}){var i,u,l;let{issue:n}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation SetIssueState($issueGraphQLId: ID!) {
590
605
  updateIssue(input: { id: $issueGraphQLId, state: CLOSED }) {
591
606
  issue {
592
607
  id
593
608
  }
594
609
  }
595
- }`,a=await y(this.config,{query:o,variables:{issueGraphQLId:s.graphQLId}},t);if(!((l=(u=(i=a.body.data)==null?void 0:i.updateIssue)==null?void 0:u.issue)!=null&&l.id))throw new b("Could not close issue",a.body.errors)}async reOpenIssue(e,t={}){var i,u,l;let{issue:s}=e;if(!s.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation ReOpenIssue($issueGraphQLId: ID!) {
610
+ }`,a=await y(this.config,{query:o,variables:{issueGraphQLId:n.graphQLId}},t);if(!((l=(u=(i=a.body.data)==null?void 0:i.updateIssue)==null?void 0:u.issue)!=null&&l.id))throw new b("Could not close issue",a.body.errors)}async reOpenIssue(e,t={}){var i,u,l;let{issue:n}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation ReOpenIssue($issueGraphQLId: ID!) {
596
611
  reopenIssue(input: { issueId: $issueGraphQLId }) {
597
612
  issue {
598
613
  id
599
614
  }
600
615
  }
601
- }`,a=await y(this.config,{query:o,variables:{issueGraphQLId:s.graphQLId}},t);if(!((l=(u=(i=a.body.data)==null?void 0:i.reopenIssue)==null?void 0:u.issue)!=null&&l.id))throw new b("Could not reopen issue",a.body.errors)}async setIssueLabels(e,t={}){var l,p,d;let{issue:s,labels:o}=e;if(!s.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=o.map(c=>c.graphQLId),i=`mutation SetIssueLabels($issueGraphQLId: ID!, $labelGraphQLIds: [ID!]) {
616
+ }`,a=await y(this.config,{query:o,variables:{issueGraphQLId:n.graphQLId}},t);if(!((l=(u=(i=a.body.data)==null?void 0:i.reopenIssue)==null?void 0:u.issue)!=null&&l.id))throw new b("Could not reopen issue",a.body.errors)}async setIssueLabels(e,t={}){var l,p,d;let{issue:n,labels:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=o.map(c=>c.graphQLId),i=`mutation SetIssueLabels($issueGraphQLId: ID!, $labelGraphQLIds: [ID!]) {
602
617
  updateIssue(input: { id: $issueGraphQLId, labelIds: $labelGraphQLIds }) {
603
618
  issue {
604
619
  id
605
620
  }
606
621
  }
607
- }`,u=await y(this.config,{query:i,variables:{issueGraphQLId:s.graphQLId,labelGraphQLIds:a}},t);if(!((d=(p=(l=u.body.data)==null?void 0:l.updateIssue)==null?void 0:p.issue)!=null&&d.id))throw new b("Could not set issue labels",u.body.errors)}async setIssueMilestone(e,t={}){var u,l,p;let{issue:s,milestone:o}=e;if(!s.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');if(o&&!o.graphQLId)throw new Error('GitHub requires milestone "graphQLId" for this function.');let a=`mutation SetIssueMilestone($issueGraphQLId: ID!, $milestoneGraphQLId: ID) {
622
+ }`,u=await y(this.config,{query:i,variables:{issueGraphQLId:n.graphQLId,labelGraphQLIds:a}},t);if(!((d=(p=(l=u.body.data)==null?void 0:l.updateIssue)==null?void 0:p.issue)!=null&&d.id))throw new b("Could not set issue labels",u.body.errors)}async setIssueMilestone(e,t={}){var u,l,p;let{issue:n,milestone:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');if(o&&!o.graphQLId)throw new Error('GitHub requires milestone "graphQLId" for this function.');let a=`mutation SetIssueMilestone($issueGraphQLId: ID!, $milestoneGraphQLId: ID) {
608
623
  updateIssue(input: { id: $issueGraphQLId, milestoneId: $milestoneGraphQLId }) {
609
624
  issue {
610
625
  id
611
626
  }
612
627
  }
613
- }`,i=await y(this.config,{query:`${a}`,variables:{issueGraphQLId:s.graphQLId,milestoneGraphQLId:(o==null?void 0:o.graphQLId)??null}},t);if(!((p=(l=(u=i.body.data)==null?void 0:u.updateIssue)==null?void 0:l.issue)!=null&&p.id))throw new b("Could not set milestone of issue",i.body.errors)}async setIssueAssignees(e,t={}){var l,p,d;let{issue:s,assignees:o}=e;if(!s.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=o.map(c=>{if(!c.graphQLId)throw new Error('GitHub requires assignee "graphQLId" for this function.');return c.graphQLId}),i=`mutation SetIssueAssignees($issueGraphQLId: ID!, $assigneeGraphQLIds: [ID!]!) {
628
+ }`,i=await y(this.config,{query:`${a}`,variables:{issueGraphQLId:n.graphQLId,milestoneGraphQLId:(o==null?void 0:o.graphQLId)??null}},t);if(!((p=(l=(u=i.body.data)==null?void 0:u.updateIssue)==null?void 0:l.issue)!=null&&p.id))throw new b("Could not set milestone of issue",i.body.errors)}async setIssueAssignees(e,t={}){var l,p,d;let{issue:n,assignees:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=o.map(c=>{if(!c.graphQLId)throw new Error('GitHub requires assignee "graphQLId" for this function.');return c.graphQLId}),i=`mutation SetIssueAssignees($issueGraphQLId: ID!, $assigneeGraphQLIds: [ID!]!) {
614
629
  updateIssue(input: { id: $issueGraphQLId, assigneeIds: $assigneeGraphQLIds }) {
615
630
  issue {
616
631
  id
617
632
  }
618
633
  }
619
- }`,u=await y(this.config,{query:i,variables:{issueGraphQLId:s.graphQLId,assigneeGraphQLIds:a}},t);if(!((d=(p=(l=u.body.data)==null?void 0:l.updateIssue)==null?void 0:p.issue)!=null&&d.id))throw new b("Could not set issue assignees",u.body.errors)}async getMilestonesForRepo(e,t={}){var u,l,p;let{repo:{namespace:s,name:o},cursor:a}=e,i=await y(this.config,{query:`
634
+ }`,u=await y(this.config,{query:i,variables:{issueGraphQLId:n.graphQLId,assigneeGraphQLIds:a}},t);if(!((d=(p=(l=u.body.data)==null?void 0:l.updateIssue)==null?void 0:p.issue)!=null&&d.id))throw new b("Could not set issue assignees",u.body.errors)}async getMilestonesForRepo(e,t={}){var u,l,p;let{repo:{namespace:n,name:o},cursor:a}=e,i=await y(this.config,{query:`
620
635
  query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
621
636
  repository(owner: $owner, name: $name) {
622
637
  milestones(first: $first, after: $cursor) {
623
638
  nodes {
624
- ${me}
639
+ ${Ie}
625
640
  }
626
641
  pageInfo {
627
642
  endCursor
@@ -630,12 +645,12 @@ query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first:
630
645
  }
631
646
  }
632
647
  }
633
- `,variables:{owner:s,name:o,cursor:a,first:E}},t);if(!i.body.data)throw new b("Could not fetch milestones",i.body.errors);return{pageInfo:((u=i.body.data.repository.milestones)==null?void 0:u.pageInfo)??{endCursor:null,hasNextPage:!1},data:((p=(l=i.body.data.repository.milestones)==null?void 0:l.nodes)==null?void 0:p.map(We))??[]}}async getLabelsForRepo(e,t={}){var u,l,p;let{repo:{namespace:s,name:o},cursor:a}=e,i=await y(this.config,{query:`
648
+ `,variables:{owner:n,name:o,cursor:a,first:C}},t);if(!i.body.data)throw new b("Could not fetch milestones",i.body.errors);return{pageInfo:((u=i.body.data.repository.milestones)==null?void 0:u.pageInfo)??{endCursor:null,hasNextPage:!1},data:((p=(l=i.body.data.repository.milestones)==null?void 0:l.nodes)==null?void 0:p.map(Ve))??[]}}async getLabelsForRepo(e,t={}){var u,l,p;let{repo:{namespace:n,name:o},cursor:a}=e,i=await y(this.config,{query:`
634
649
  query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
635
650
  repository(owner: $owner, name: $name) {
636
651
  labels(first: $first, after: $cursor) {
637
652
  nodes {
638
- ${he}
653
+ ${Re}
639
654
  }
640
655
  pageInfo {
641
656
  endCursor
@@ -644,7 +659,7 @@ query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first:
644
659
  }
645
660
  }
646
661
  }
647
- `,variables:{owner:s,name:o,cursor:a,first:E}},t);if(!i.body.data)throw new b("Could not fetch labels",i.body.errors);return{pageInfo:((u=i.body.data.repository.labels)==null?void 0:u.pageInfo)??{endCursor:null,hasNextPage:!1},data:((p=(l=i.body.data.repository.labels)==null?void 0:l.nodes)==null?void 0:p.map(ze))??[]}}async getTreeForRepo(e,t={}){let s=await this.config.request({url:`${Z(this.config,t)}/repos/${e.repo.namespace}/${e.repo.name}/git/trees/${e.branch}?recursive=1`,headers:{...I(t.token||this.config.token)}});if(!s.body)throw new Error("Could not fetch trees");return{data:s.body.tree.map(yr)}}};var Dr="https://gitlab.com/api/v4",Lr="https://gitlab.com/api/graphql",qt=/\/api\/v\d+$/,Et=r=>{if(r.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.")},Re=(r,n)=>{let e=n.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),Et(e),e):Dr},Ur=(r,n)=>{let e=n.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),Et(e),qt.test(e)&&(e=e.replace(qt,"")),`${e}/api/graphql`):Lr},P=(r,n,e)=>{let t=I(e.token||r.token);return r.request({url:Ur(r,e),method:"POST",headers:{...t,"Content-Type":"application/json"},body:JSON.stringify(n)})},be=r=>r==null?void 0:r.map(n=>`"${n.message}"`).join(", ");var Xe=r=>r.split("/").slice(0,-1).join("/"),Ze=r=>r.split("/").at(-1)??"",ye=r=>({id:r.id.replace(ee,""),graphQLId:r.id,namespace:Xe(r.fullPath),name:Ze(r.fullPath),webUrl:r.webUrl}),Ct=r=>({id:r.id.replace(ee,""),graphQLId:r.id,httpsUrl:r.httpUrlToRepo,namespace:Xe(r.fullPath),name:Ze(r.fullPath),sshUrl:r.sshUrlToRepo,webUrl:r.webUrl}),$r={assigned:"assignedMergeRequests",authored:"authoredMergeRequests",reviewRequested:"reviewRequestedMergeRequests"},Ar={CAN_BE_MERGED:"MERGEABLE",CANNOT_BE_MERGED:"CONFLICTS",CANNOT_BE_MERGED_RECHECK:"UNKNOWN",UNCHECKED:"UNKNOWN",CHECKING:"UNKNOWN"};var Gr="gid://gitlab/User/",ee="gid://gitlab/Project/",Tr="gid://gitlab/MergeRequest/",Or="gid://gitlab/Issue/",xr="gid://gitlab/ProjectLabel/",kr="gid://gitlab/Milestone/",Nr="gid://gitlab/Ci::Build/",Ye=`
662
+ `,variables:{owner:n,name:o,cursor:a,first:C}},t);if(!i.body.data)throw new b("Could not fetch labels",i.body.errors);return{pageInfo:((u=i.body.data.repository.labels)==null?void 0:u.pageInfo)??{endCursor:null,hasNextPage:!1},data:((p=(l=i.body.data.repository.labels)==null?void 0:l.nodes)==null?void 0:p.map(Ke))??[]}}async getTreeForRepo(e,t={}){let n=await this.config.request({url:`${Y(this.config,t)}/repos/${e.repo.namespace}/${e.repo.name}/git/trees/${e.branch}?recursive=1`,headers:{...R(t.token||this.config.token)}});if(!n.body)throw new Error("Could not fetch trees");return{data:n.body.tree.map(qr)}}};var Gr="https://gitlab.com/api/v4",Tr="https://gitlab.com/api/graphql",$t=/\/api\/v\d+$/,At=r=>{if(r.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=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),At(e),e):Gr},Or=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),At(e),$t.test(e)&&(e=e.replace($t,"")),`${e}/api/graphql`):Tr},P=(r,s,e)=>{let t=R(e.token||r.token);return r.request({url:Or(r,e),method:"POST",headers:{...t,"Content-Type":"application/json"},body:JSON.stringify(s)})},we=r=>r==null?void 0:r.map(s=>`"${s.message}"`).join(", ");var tt=r=>r.split("/").slice(0,-1).join("/"),rt=r=>r.split("/").at(-1)??"",Se=r=>({id:r.id.replace(te,""),graphQLId:r.id,namespace:tt(r.fullPath),name:rt(r.fullPath),webUrl:r.webUrl}),Gt=r=>({id:r.id.replace(te,""),graphQLId:r.id,httpsUrl:r.httpUrlToRepo,namespace:tt(r.fullPath),name:rt(r.fullPath),sshUrl:r.sshUrlToRepo,webUrl:r.webUrl}),xr={assigned:"assignedMergeRequests",authored:"authoredMergeRequests",reviewRequested:"reviewRequestedMergeRequests"},kr={CAN_BE_MERGED:"MERGEABLE",CANNOT_BE_MERGED:"CONFLICTS",CANNOT_BE_MERGED_RECHECK:"UNKNOWN",UNCHECKED:"UNKNOWN",CHECKING:"UNKNOWN"};var Nr="gid://gitlab/User/",te="gid://gitlab/Project/",Fr="gid://gitlab/MergeRequest/",Qr="gid://gitlab/Issue/",_r="gid://gitlab/ProjectLabel/",Br="gid://gitlab/Milestone/",jr="gid://gitlab/Ci::Build/",st=`
648
663
  description
649
664
  dueDate
650
665
  id
@@ -653,7 +668,7 @@ startDate
653
668
  state
654
669
  title
655
670
  webPath
656
- `,He=`
671
+ `,Xe=`
657
672
  id
658
673
  fullPath
659
674
  webUrl
@@ -667,25 +682,25 @@ userPermissions {
667
682
  downloadCode
668
683
  pushCode
669
684
  }
670
- `,N=`
685
+ `,F=`
671
686
  id
672
687
  name
673
688
  username
674
689
  publicEmail
675
690
  avatarUrl
676
691
  webUrl
677
- `,et=`
692
+ `,nt=`
678
693
  color
679
694
  description
680
695
  id
681
696
  title
682
- `,Je=`
697
+ `,Ze=`
683
698
  author {
684
- ${N}
699
+ ${F}
685
700
  }
686
701
  assignees {
687
702
  nodes {
688
- ${N}
703
+ ${F}
689
704
  }
690
705
  }
691
706
  closedAt
@@ -696,7 +711,7 @@ id
696
711
  iid
697
712
  labels {
698
713
  nodes {
699
- ${et}
714
+ ${nt}
700
715
  }
701
716
  }
702
717
  state
@@ -707,9 +722,9 @@ upvotes
707
722
  userNotesCount
708
723
  webUrl
709
724
  milestone {
710
- ${Ye}
725
+ ${st}
711
726
  }
712
- `,Fr=`
727
+ `,Mr=`
713
728
  stages {
714
729
  nodes {
715
730
  jobs {
@@ -725,12 +740,11 @@ stages {
725
740
  name
726
741
  }
727
742
  }
728
- `,Dt=(r,n,e)=>`
743
+ `,Tt=(r,s,e)=>`
729
744
  id
730
745
  state
731
- approved
732
746
  author {
733
- ${N}
747
+ ${F}
734
748
  }
735
749
  diffRefs {
736
750
  baseSha
@@ -755,12 +769,12 @@ targetBranch
755
769
  sourceBranch
756
770
  assignees {
757
771
  nodes {
758
- ${N}
772
+ ${F}
759
773
  }
760
774
  }
761
775
  reviewers {
762
776
  nodes {
763
- ${N}
777
+ ${F}
764
778
  mergeRequestInteraction {
765
779
  approved
766
780
  reviewState
@@ -770,19 +784,19 @@ reviewers {
770
784
  mergeStatusEnum
771
785
  labels {
772
786
  nodes {
773
- ${et}
787
+ ${nt}
774
788
  }
775
789
  }
776
790
  ${r?"project { id httpUrlToRepo fullPath sshUrlToRepo webUrl archived } sourceProject { id httpUrlToRepo fullPath sshUrlToRepo webUrl }":""}
777
- ${n?`milestone { ${Ye} }`:""}
778
- ${e?`headPipeline { ${Fr} }`:""}
779
- `,B=r=>`${r.namespace}/${r.name}`,Qr=r=>`${r.namespace}/${r.name}`,_r=r=>({canCreateWebhook:r.adminOperations,canPush:r.pushCode,isAdmin:r.adminOperations}),Ke=r=>{var n;return{id:r.id.replace(ee,""),graphQLId:r.id,namespace:Xe(r.fullPath),name:Ze(r.fullPath),webUrl:r.webUrl,httpsUrl:r.httpUrlToRepo,sshUrl:r.sshUrlToRepo,defaultBranch:(n=r.repository)!=null&&n.rootRef?{name:r.repository.rootRef}:null,permissions:_r(r.userPermissions)}},Br=r=>({path:r.path,isDirectory:r.type==="tree"}),jr={opened:"OPEN",merged:"MERGED",closed:"CLOSED"},F=(r,n,e)=>{let t=r.avatarUrl;return!n&&(t!=null&&t.startsWith("/"))?t=`https://gitlab.com${t}`:n&&(t!=null&&t.startsWith("/"))&&e&&(t=`${e.replace(/\/+?$/,"")}${t}`),{id:r.id.replace(Gr,""),graphQLId:r.id,name:r.name,username:r.username,email:r.publicEmail??null,avatarUrl:t,url:r.webUrl}},tt=r=>({color:r.color,description:r.description,id:r.id.replace(xr,""),graphQLId:r.id,name:r.title}),Mr=(r,n)=>r?r==="FAILED"&&n?"WARNING":{CANCELED:"CANCELLED",CREATED:"PENDING",FAILED:"FAILED",MANUAL:"OPTIONAL_ACTION_REQUIRED",PENDING:"PENDING",PREPARING:"RUNNING",RUNNING:"RUNNING",SCHEDULED:"PENDING",SKIPPED:"SKIPPED",SUCCESS:"SUCCESS",WAITING_FOR_CALLBACK:"PENDING",WAITING_FOR_RESOURCE:"PENDING"}[r]:null,zr=(r,n,e)=>{var s;let t={APPROVED:"APPROVED",REQUESTED_CHANGES:"CHANGES_REQUESTED",REVIEWED:"COMMENTED",UNAPPROVED:"REVIEW_REQUESTED",UNREVIEWED:"REVIEW_REQUESTED"};return{reviewer:F(r,n,e),state:(s=r.mergeRequestInteraction)!=null&&s.reviewState?t[r.mergeRequestInteraction.reviewState]:"REVIEW_REQUESTED"}},Lt=(r,n,e,t,s)=>{var a,i,u,l,p,d,c,g,m,h,R,S;let o=(a=r.reviewers)!=null&&a.nodes?r.reviewers.nodes.map(f=>zr(f,t,s)):null;return{id:r.id.replace(Tr,""),graphQLId:r.id,title:r.title,number:parseInt(r.iid,10),state:jr[r.state],commentCount:r.userNotesCount||0,upvoteCount:r.upvotes,author:r.author?F(r.author,t,s):null,createdDate:new Date(r.createdAt),isDraft:r.draft,repository:{id:n.id,graphQLId:n.graphQLId,name:n.name,owner:{login:n.namespace},remoteInfo:n.httpsUrl&&n.sshUrl?{cloneUrlHTTPS:n.httpsUrl,cloneUrlSSH:n.sshUrl}:null},headRepository:e?{id:e.id,graphQLId:e.graphQLId,name:e.name,owner:{login:e.namespace},remoteInfo:{cloneUrlHTTPS:e.httpsUrl,cloneUrlSSH:e.sshUrl}}:null,headCommit:{buildStatuses:((l=(u=(i=r.headPipeline)==null?void 0:i.stages)==null?void 0:u.nodes)==null?void 0:l.flatMap(f=>{var v,x;return((x=(v=f.jobs)==null?void 0:v.nodes)==null?void 0:x.map(G=>({completedAt:G.finishedAt?new Date(G.finishedAt):null,description:null,name:G.name??null,state:Mr(G.status,G.allowFailure),stage:f.name??null,startedAt:new Date(G.createdAt),url:`${n.webUrl}/-/jobs/${G.id.replace(Nr,"")}`})))??[]}))??[]},baseRef:{name:r.targetBranch,oid:((p=r.diffRefs)==null?void 0:p.baseSha)??null},headRef:{name:r.sourceBranch,oid:((d=r.diffRefs)==null?void 0:d.headSha)??null},url:r.webUrl,updatedDate:new Date(r.updatedAt),closedDate:r.mergedAt?new Date(r.mergedAt):null,mergedDate:r.mergedAt?new Date(r.mergedAt):null,assignees:(c=r.assignees)!=null&&c.nodes?r.assignees.nodes.map(f=>F(f,t,s)):null,reviews:o,reviewDecision:r.approved?"APPROVED":Q(o),additions:((g=r.diffStatsSummary)==null?void 0:g.additions)||0,deletions:((m=r.diffStatsSummary)==null?void 0:m.deletions)||0,fileCount:((h=r.diffStatsSummary)==null?void 0:h.fileCount)||0,commitCount:r.commitCount||0,mergeableState:Ar[r.mergeStatusEnum],milestone:r.milestone?rt(r.milestone,n.webUrl):null,labels:((S=(R=r.labels)==null?void 0:R.nodes)==null?void 0:S.map(tt))??[],permissions:null}},Ve=(r,n,e,t)=>{var s,o;return{author:F(r.author,e,t),assignees:r.assignees.nodes.map(a=>F(a,e,t)),commentCount:r.userNotesCount,closedDate:r.closedAt?new Date(r.closedAt):null,createdDate:new Date(r.createdAt),description:r.description,graphQLId:r.id,id:r.id.replace(Or,""),labels:((o=(s=r.labels)==null?void 0:s.nodes)==null?void 0:o.map(tt))??[],number:r.iid,repository:{id:n.id.replace(ee,""),graphQLId:n.id,name:n.name,owner:{login:n.namespace}},updatedDate:new Date(r.updatedAt),upvoteCount:r.upvotes,state:{name:r.state,color:null},type:r.type,title:r.title,url:r.webUrl,milestone:r.milestone?rt(r.milestone,n.webUrl):null}},rt=(r,n)=>({id:r.id.replace(kr,""),graphQLId:r.id,number:parseInt(r.iid,10),title:r.title,description:r.description,isOpen:r.state==="active",url:`${n}/-/${r.webPath.replace(/.+?\/-\//,"")}`,startDate:r.startDate?new Date(r.startDate):null,dueDate:r.dueDate?new Date(r.dueDate):null}),te=class extends T{getIsSelfHosted(n){return!!n.baseUrl||!!this.config.baseUrl}async getCurrentUser(n={},e={}){var o;let s=(o=(await P(this.config,{query:`
791
+ ${s?`milestone { ${st} }`:""}
792
+ ${e?`headPipeline { ${Mr} }`:""}
793
+ `,j=r=>`${r.namespace}/${r.name}`,zr=r=>`${r.namespace}/${r.name}`,Wr=r=>({canCreateWebhook:r.adminOperations,canPush:r.pushCode,isAdmin:r.adminOperations}),Ye=r=>{var s;return{id:r.id.replace(te,""),graphQLId:r.id,namespace:tt(r.fullPath),name:rt(r.fullPath),webUrl:r.webUrl,httpsUrl:r.httpUrlToRepo,sshUrl:r.sshUrlToRepo,defaultBranch:(s=r.repository)!=null&&s.rootRef?{name:r.repository.rootRef}:null,permissions:Wr(r.userPermissions)}},Hr=r=>({path:r.path,isDirectory:r.type==="tree"}),Jr={opened:"OPEN",merged:"MERGED",closed:"CLOSED"},Q=(r,s,e)=>{let t=r.avatarUrl;return!s&&(t!=null&&t.startsWith("/"))?t=`https://gitlab.com${t}`:s&&(t!=null&&t.startsWith("/"))&&e&&(t=`${e.replace(/\/+?$/,"")}${t}`),{id:r.id.replace(Nr,""),graphQLId:r.id,name:r.name,username:r.username,email:r.publicEmail??null,avatarUrl:t,url:r.webUrl}},ot=r=>({color:r.color,description:r.description,id:r.id.replace(_r,""),graphQLId:r.id,name:r.title}),Kr=(r,s)=>r?r==="FAILED"&&s?"WARNING":{CANCELED:"CANCELLED",CREATED:"PENDING",FAILED:"FAILED",MANUAL:"OPTIONAL_ACTION_REQUIRED",PENDING:"PENDING",PREPARING:"RUNNING",RUNNING:"RUNNING",SCHEDULED:"PENDING",SKIPPED:"SKIPPED",SUCCESS:"SUCCESS",WAITING_FOR_CALLBACK:"PENDING",WAITING_FOR_RESOURCE:"PENDING"}[r]:null,Vr=(r,s,e)=>{var n;let t={APPROVED:"APPROVED",REQUESTED_CHANGES:"CHANGES_REQUESTED",REVIEWED:"COMMENTED",UNAPPROVED:"REVIEW_REQUESTED",UNREVIEWED:"REVIEW_REQUESTED"};return{reviewer:Q(r,s,e),state:(n=r.mergeRequestInteraction)!=null&&n.reviewState?t[r.mergeRequestInteraction.reviewState]:"REVIEW_REQUESTED"}},Ot=(r,s,e,t,n)=>{var a,i,u,l,p,d,c,g,m,h,I,w;let o=(a=r.reviewers)!=null&&a.nodes?r.reviewers.nodes.map(f=>Vr(f,t,n)):null;return{id:r.id.replace(Fr,""),graphQLId:r.id,title:r.title,number:parseInt(r.iid,10),state:Jr[r.state],commentCount:r.userNotesCount||0,upvoteCount:r.upvotes,author:r.author?Q(r.author,t,n):null,createdDate:new Date(r.createdAt),isDraft:r.draft,repository:{id:s.id,graphQLId:s.graphQLId,name:s.name,owner:{login:s.namespace},remoteInfo:s.httpsUrl&&s.sshUrl?{cloneUrlHTTPS:s.httpsUrl,cloneUrlSSH:s.sshUrl}:null},headRepository:e?{id:e.id,graphQLId:e.graphQLId,name:e.name,owner:{login:e.namespace},remoteInfo:{cloneUrlHTTPS:e.httpsUrl,cloneUrlSSH:e.sshUrl}}:null,headCommit:{buildStatuses:((l=(u=(i=r.headPipeline)==null?void 0:i.stages)==null?void 0:u.nodes)==null?void 0:l.flatMap(f=>{var v,G;return((G=(v=f.jobs)==null?void 0:v.nodes)==null?void 0:G.map($=>({completedAt:$.finishedAt?new Date($.finishedAt):null,description:null,name:$.name??null,state:Kr($.status,$.allowFailure),stage:f.name??null,startedAt:new Date($.createdAt),url:`${s.webUrl}/-/jobs/${$.id.replace(jr,"")}`})))??[]}))??[]},baseRef:{name:r.targetBranch,oid:((p=r.diffRefs)==null?void 0:p.baseSha)??null},headRef:{name:r.sourceBranch,oid:((d=r.diffRefs)==null?void 0:d.headSha)??null},url:r.webUrl,updatedDate:new Date(r.updatedAt),closedDate:r.mergedAt?new Date(r.mergedAt):null,mergedDate:r.mergedAt?new Date(r.mergedAt):null,assignees:(c=r.assignees)!=null&&c.nodes?r.assignees.nodes.map(f=>Q(f,t,n)):null,reviews:o,reviewDecision:_(o),additions:((g=r.diffStatsSummary)==null?void 0:g.additions)||0,deletions:((m=r.diffStatsSummary)==null?void 0:m.deletions)||0,fileCount:((h=r.diffStatsSummary)==null?void 0:h.fileCount)||0,commitCount:r.commitCount||0,mergeableState:kr[r.mergeStatusEnum],milestone:r.milestone?at(r.milestone,s.webUrl):null,labels:((w=(I=r.labels)==null?void 0:I.nodes)==null?void 0:w.map(ot))??[],permissions:null}},et=(r,s,e,t)=>{var n,o;return{author:Q(r.author,e,t),assignees:r.assignees.nodes.map(a=>Q(a,e,t)),commentCount:r.userNotesCount,closedDate:r.closedAt?new Date(r.closedAt):null,createdDate:new Date(r.createdAt),description:r.description,graphQLId:r.id,id:r.id.replace(Qr,""),labels:((o=(n=r.labels)==null?void 0:n.nodes)==null?void 0:o.map(ot))??[],number:r.iid,repository:{id:s.id.replace(te,""),graphQLId:s.id,name:s.name,owner:{login:s.namespace}},updatedDate:new Date(r.updatedAt),upvoteCount:r.upvotes,state:{name:r.state,color:null},type:r.type,title:r.title,url:r.webUrl,milestone:r.milestone?at(r.milestone,s.webUrl):null}},at=(r,s)=>({id:r.id.replace(Br,""),graphQLId:r.id,number:parseInt(r.iid,10),title:r.title,description:r.description,isOpen:r.state==="active",url:`${s}/-/${r.webPath.replace(/.+?\/-\//,"")}`,startDate:r.startDate?new Date(r.startDate):null,dueDate:r.dueDate?new Date(r.dueDate):null}),re=class extends x{getIsSelfHosted(s){return!!s.baseUrl||!!this.config.baseUrl}async getCurrentUser(s={},e={}){var o;let n=(o=(await P(this.config,{query:`
780
794
  query getCurrentUser {
781
795
  currentUser {
782
- ${N}
796
+ ${F}
783
797
  }
784
798
  }
785
- `},e)).body.data)==null?void 0:o.currentUser;if(!s)throw new Error("Current user not found.");return{data:F(s,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)}}async getUserForCommit(n,e={}){var a,i,u,l;let t=B(n.repo),o=(l=(u=(i=(a=(await P(this.config,{query:`
799
+ `},e)).body.data)==null?void 0:o.currentUser;if(!n)throw new Error("Current user not found.");return{data:Q(n,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)}}async getUserForCommit(s,e={}){var a,i,u,l;let t=j(s.repo),o=(l=(u=(i=(a=(await P(this.config,{query:`
786
800
  query getUserForCommit($fullPath: ID!, $oid: String!) {
787
801
  project(fullPath: $fullPath) {
788
802
  repository {
@@ -796,21 +810,21 @@ query getUserForCommit($fullPath: ID!, $oid: String!) {
796
810
  }
797
811
  }
798
812
  }
799
- `,variables:{fullPath:t,oid:n.oid}},e)).body.data)==null?void 0:a.project)==null?void 0:i.repository)==null?void 0:u.tree)==null?void 0:l.lastCommit;if(!o)throw new Error("Commit not found.");return{data:{name:o.authorName,email:o.authorEmail,avatarUrl:o.authorGravatar}}}async getAccountForEmail(n,e={}){var o,a,i;let s=(i=(a=(o=(await P(this.config,{query:`
813
+ `,variables:{fullPath:t,oid:s.oid}},e)).body.data)==null?void 0:a.project)==null?void 0:i.repository)==null?void 0:u.tree)==null?void 0:l.lastCommit;if(!o)throw new Error("Commit not found.");return{data:{name:o.authorName,email:o.authorEmail,avatarUrl:o.authorGravatar}}}async getAccountForEmail(s,e={}){var o,a,i;let n=(i=(a=(o=(await P(this.config,{query:`
800
814
  query getAccountForEmail($email: String!) {
801
815
  users(search: $email) {
802
816
  nodes {
803
- ${N}
817
+ ${F}
804
818
  }
805
819
  }
806
820
  }
807
- `,variables:{email:n.email}},e)).body.data)==null?void 0:o.users)==null?void 0:a.nodes)==null?void 0:i[0];if(!s)throw new Error("User not found.");return{data:F(s,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)}}async getAccountForUsername(n,e={}){var o;let s=(o=(await P(this.config,{query:`
821
+ `,variables:{email:s.email}},e)).body.data)==null?void 0:o.users)==null?void 0:a.nodes)==null?void 0:i[0];if(!n)throw new Error("User not found.");return{data:Q(n,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)}}async getAccountForUsername(s,e={}){var o;let n=(o=(await P(this.config,{query:`
808
822
  query getAccountForUsername($username: String!) {
809
823
  user(username: $username) {
810
- ${N}
824
+ ${F}
811
825
  }
812
826
  }
813
- `,variables:{username:n.username}},e)).body.data)==null?void 0:o.user;if(!s)throw new Error("User not found.");return{data:F(s,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)}}async getAccountsForRepo(n,e={}){var u,l,p,d,c,g,m;let{repo:{namespace:t,name:s},cursor:o}=n,a=await P(this.config,{query:`
827
+ `,variables:{username:s.username}},e)).body.data)==null?void 0:o.user;if(!n)throw new Error("User not found.");return{data:Q(n,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)}}async getAccountsForRepo(s,e={}){var u,l,p,d,c,g,m;let{repo:{namespace:t,name:n},cursor:o}=s,a=await P(this.config,{query:`
814
828
  query getAccountsForRepo(
815
829
  $fullPath: ID!
816
830
  $after: String
@@ -821,7 +835,7 @@ query getAccountsForRepo(
821
835
  projectMembers(after: $after) {
822
836
  nodes {
823
837
  user {
824
- ${N}
838
+ ${F}
825
839
  }
826
840
  }
827
841
  pageInfo {
@@ -831,22 +845,22 @@ query getAccountsForRepo(
831
845
  }
832
846
  }
833
847
  }
834
- `,variables:{fullPath:`${t}/${s}`,after:o}},e),i=(d=(p=(l=(u=a.body.data)==null?void 0:u.project)==null?void 0:l.projectMembers)==null?void 0:p.nodes)==null?void 0:d.map(h=>h.user).filter(h=>h!==null);return{pageInfo:((m=(g=(c=a.body.data)==null?void 0:c.project)==null?void 0:g.projectMembers)==null?void 0:m.pageInfo)??{endCursor:null,hasNextPage:!1},data:(i==null?void 0:i.map(h=>F(h,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)))??[]}}async getRepo(n,e={}){var o;let t=B(n),s=await P(this.config,{query:`
848
+ `,variables:{fullPath:`${t}/${n}`,after:o}},e),i=(d=(p=(l=(u=a.body.data)==null?void 0:u.project)==null?void 0:l.projectMembers)==null?void 0:p.nodes)==null?void 0:d.map(h=>h.user).filter(h=>h!==null);return{pageInfo:((m=(g=(c=a.body.data)==null?void 0:c.project)==null?void 0:g.projectMembers)==null?void 0:m.pageInfo)??{endCursor:null,hasNextPage:!1},data:(i==null?void 0:i.map(h=>Q(h,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)))??[]}}async getRepo(s,e={}){var o;let t=j(s),n=await P(this.config,{query:`
835
849
  query getRepo($fullPath: ID!) {
836
850
  project(fullPath: $fullPath) {
837
- ${He}
851
+ ${Xe}
838
852
  }
839
853
  }
840
- `,variables:{fullPath:t}},e);if(!((o=s.body.data)!=null&&o.project))throw new Error(`Repository ${t} not found`);return{data:Ke(s.body.data.project)}}async getReposBase(n,e={}){let s=n.map(B).map((u,l)=>`
854
+ `,variables:{fullPath:t}},e);if(!((o=n.body.data)!=null&&o.project))throw new Error(`Repository ${t} not found`);return{data:Ye(n.body.data.project)}}async getReposBase(s,e={}){let n=s.map(j).map((u,l)=>`
841
855
  getRepo_${l}: project(fullPath: "${u}") {
842
- ${He}
856
+ ${Xe}
843
857
  }
844
858
  `).join(`
845
859
  `),o=await P(this.config,{query:`
846
860
  query batchGetRepos {
847
- ${s}
861
+ ${n}
848
862
  }
849
- `},e);if(!o.body.data)throw new Error(be(o.body.errors)||o.statusText||"Unknown error");let a=[],i=[];return n.forEach((u,l)=>{let p=o.body.data[`getRepo_${l}`];p?a.push(Ke(p)):i.push({input:u})}),{data:a,errors:i}}async getRepos(n,e={}){let t=[];for(let a=0;a<n.length;a+=20)t.push(n.slice(a,a+20));return(await Promise.all(t.map(a=>this.getReposBase(a,e)))).reduce((a,i)=>({data:[...a.data,...i.data],errors:[...a.errors,...i.errors]}),{data:[],errors:[]})}async getReposForCurrentUser(n,e={}){var o,a,i,u,l;let t=await P(this.config,{query:`
863
+ `},e);if(!o.body.data)throw new Error(we(o.body.errors)||o.statusText||"Unknown error");let a=[],i=[];return s.forEach((u,l)=>{let p=o.body.data[`getRepo_${l}`];p?a.push(Ye(p)):i.push({input:u})}),{data:a,errors:i}}async getRepos(s,e={}){let t=[];for(let a=0;a<s.length;a+=20)t.push(s.slice(a,a+20));return(await Promise.all(t.map(a=>this.getReposBase(a,e)))).reduce((a,i)=>({data:[...a.data,...i.data],errors:[...a.errors,...i.errors]}),{data:[],errors:[]})}async getReposForCurrentUser(s,e={}){var o,a,i,u,l;let t=await P(this.config,{query:`
850
864
  query getReposForCurrentUser($after: String) {
851
865
  projects(membership: true first: 100 after: $after) {
852
866
  pageInfo {
@@ -854,25 +868,25 @@ query getReposForCurrentUser($after: String) {
854
868
  hasNextPage
855
869
  }
856
870
  nodes {
857
- ${He}
871
+ ${Xe}
858
872
  }
859
873
  }
860
874
  }
861
- `,variables:{after:n.cursor}},e);if(!((o=t.body.data)!=null&&o.projects))throw new Error(be(t.body.errors)||t.statusText||"Unknown error");let s=((i=(a=t.body.data)==null?void 0:a.projects)==null?void 0:i.nodes)||[];return{pageInfo:(l=(u=t.body.data)==null?void 0:u.projects)==null?void 0:l.pageInfo,data:s.map(Ke)}}async getRefs(n,e,t={}){var u;let s=B(e.repo),o=new URL(`${Re(this.config,t)}/projects/${encodeURIComponent(s)}/repository/${n}`);o.searchParams.set("page",((u=e.page)==null?void 0:u.toString())||"1"),o.searchParams.set("per_page",E.toString());let a=await this.config.request({url:o.toString(),headers:I(t.token||this.config.token)}),i=a.headers["x-next-page"];return{pageInfo:{hasNextPage:!!i,nextPage:i?parseInt(i,10):null},data:a.body.map(l=>({name:l.name,commit:{oid:l.commit.id,authoredDate:new Date(l.commit.authored_date),committedDate:new Date(l.commit.committed_date)}}))}}async getBranches(n,e={}){return this.getRefs("branches",n,e)}async getTags(n,e={}){return this.getRefs("tags",n,e)}async getBlame(n,e={}){let t=B(n.repo),s=new URL(`${Re(this.config,e)}/projects/${encodeURIComponent(t)}/repository/files/${encodeURIComponent(n.path)}/blame`);s.searchParams.set("ref",n.ref);let o=await this.config.request({url:s.toString(),headers:I(e.token||this.config.token)}),a=0;return{data:{ranges:o.body.map(i=>{let u=a+1;return a+=i.lines.length,{startingLine:u,endingLine:a,commit:{oid:i.commit.id,parentOids:i.commit.parent_ids,authoredDate:new Date(i.commit.authored_date),author:{name:i.commit.author_name,email:i.commit.author_email,avatarUrl:null},committedDate:new Date(i.commit.committed_date),committer:{name:i.commit.committer_name,email:i.commit.committer_email,avatarUrl:null},message:i.commit.message,fileCount:null,additions:null,deletions:null}}})}}}async getPullRequestsForUser(n,e={}){var a;let t=$r[n.association],s=await P(this.config,{query:`
875
+ `,variables:{after:s.cursor}},e);if(!((o=t.body.data)!=null&&o.projects))throw new Error(we(t.body.errors)||t.statusText||"Unknown error");let n=((i=(a=t.body.data)==null?void 0:a.projects)==null?void 0:i.nodes)||[];return{pageInfo:(l=(u=t.body.data)==null?void 0:u.projects)==null?void 0:l.pageInfo,data:n.map(Ye)}}async getRefs(s,e,t={}){var u;let n=j(e.repo),o=new URL(`${Pe(this.config,t)}/projects/${encodeURIComponent(n)}/repository/${s}`);o.searchParams.set("page",((u=e.page)==null?void 0:u.toString())||"1"),o.searchParams.set("per_page",C.toString());let a=await this.config.request({url:o.toString(),headers:R(t.token||this.config.token)}),i=a.headers["x-next-page"];return{pageInfo:{hasNextPage:!!i,nextPage:i?parseInt(i,10):null},data:a.body.map(l=>({name:l.name,commit:{oid:l.commit.id,authoredDate:new Date(l.commit.authored_date),committedDate:new Date(l.commit.committed_date)}}))}}async getBranches(s,e={}){return this.getRefs("branches",s,e)}async getTags(s,e={}){return this.getRefs("tags",s,e)}async getBlame(s,e={}){let t=j(s.repo),n=new URL(`${Pe(this.config,e)}/projects/${encodeURIComponent(t)}/repository/files/${encodeURIComponent(s.path)}/blame`);n.searchParams.set("ref",s.ref);let o=await this.config.request({url:n.toString(),headers:R(e.token||this.config.token)}),a=0;return{data:{ranges:o.body.map(i=>{let u=a+1;return a+=i.lines.length,{startingLine:u,endingLine:a,commit:{oid:i.commit.id,parentOids:i.commit.parent_ids,authoredDate:new Date(i.commit.authored_date),author:{name:i.commit.author_name,email:i.commit.author_email,avatarUrl:null},committedDate:new Date(i.commit.committed_date),committer:{name:i.commit.committer_name,email:i.commit.committer_email,avatarUrl:null},message:i.commit.message,fileCount:null,additions:null,deletions:null}}})}}}async getPullRequestsForUser(s,e={}){var i,u,l,p;let t="";(i=s.repo)!=null&&i.id?t=`projectId:"${s.repo.id}"`:(u=s.repo)!=null&&u.namespace&&((l=s.repo)!=null&&l.name)&&(t=`projectPath:"${s.repo.namespace}/${s.repo.name}"`);let n=xr[s.association],o=await P(this.config,{query:`
862
876
  query getPullRequestsForUser($username: String! $cursor: String $labelNames: [String!]) {
863
877
  user(username: $username) {
864
- ${t}(state:opened first:100 after:$cursor labels: $labelNames) {
878
+ ${n}(state:opened first:100 after:$cursor labels: $labelNames${t?` ${t}`:""}) {
865
879
  pageInfo {
866
880
  endCursor
867
881
  hasNextPage
868
882
  }
869
883
  nodes {
870
- ${Dt(!0,!0,!0)}
884
+ ${Tt(!0,!0,!0)}
871
885
  }
872
886
  }
873
887
  }
874
888
  }
875
- `,variables:{username:n.username,cursor:n.cursor,labelNames:n.labelNames}},e);if(!s.body.data)throw new Error(be(s.body.errors)||s.statusText||"Unknown error");if(!s.body.data.user)throw new Error("User not found");let o=s.body.data.user[t];if(!o)throw new Error("Unexpected response");return{pageInfo:o.pageInfo,data:((a=o.nodes)==null?void 0:a.filter(i=>n.includeFromArchivedRepos||!i.project.archived).map(i=>Lt(i,Ct(i.project),Ct(i.sourceProject),this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)))||[]}}async getPullRequestsAssociatedWithUser(n,e={}){var c;let[t,s,o]=((c=n.cursor)==null?void 0:c.split(";"))||[void 0,void 0,void 0],[a,i,u]=await Promise.all([t==="null"?null:this.getPullRequestsForUser({username:n.username,association:"authored",cursor:t,includeFromArchivedRepos:n.includeFromArchivedRepos,labelNames:n.labelNames},e),s==="null"?null:this.getPullRequestsForUser({username:n.username,association:"assigned",cursor:s,includeFromArchivedRepos:n.includeFromArchivedRepos,labelNames:n.labelNames},e),o==="null"?null:this.getPullRequestsForUser({username:n.username,association:"reviewRequested",cursor:o,includeFromArchivedRepos:n.includeFromArchivedRepos,labelNames:n.labelNames},e)]),l={},p=[],d=g=>{l[g.id]||(l[g.id]=!0,p.push(g))};return a==null||a.data.forEach(d),i==null||i.data.forEach(d),u==null||u.data.forEach(d),{pageInfo:{hasNextPage:(a==null?void 0:a.pageInfo.hasNextPage)||(i==null?void 0:i.pageInfo.hasNextPage)||(u==null?void 0:u.pageInfo.hasNextPage)||!1,endCursor:`${(a==null?void 0:a.pageInfo.hasNextPage)&&(a==null?void 0:a.pageInfo.endCursor)||"null"};${(i==null?void 0:i.pageInfo.hasNextPage)&&(i==null?void 0:i.pageInfo.endCursor)||"null"};${(u==null?void 0:u.pageInfo.hasNextPage)&&(u==null?void 0:u.pageInfo.endCursor)||"null"}`},data:p}}getVariablesForPullRequests(n){let{updatedBefore:e,isDraft:t,authorLogin:s,assigneeLogins:o,labelNames:a,reviewRequestedLogin:i}=n||{},u={},l=[],p=[],d=(c,g,m)=>{l.push(`$${c}: ${m}`),p.push(`${c}: $${c}`),u[c]=g};return e&&d("updatedBefore",e,"Time"),s&&d("authorUsername",s,"String"),o&&d("assigneeUsername",o[0],"String"),a&&d("labelName",a,"[String]"),t!=null&&d("draft",t,"Boolean"),i&&d("reviewerUsername",i,"String"),{variables:u,variableTypes:l,mergeRequestArguments:p}}async getPullRequestsForRepoBase(n,e={},t){var R,S,f;let{cursor:s,repo:o}=n||{},a=B(o),{variables:i,variableTypes:u,mergeRequestArguments:l}=this.getVariablesForPullRequests(n),p={fullPath:a,...i},d=await P(this.config,{query:`
889
+ `,variables:{username:s.username,cursor:s.cursor,labelNames:s.labelNames}},e);if(!o.body.data)throw new Error(we(o.body.errors)||o.statusText||"Unknown error");if(!o.body.data.user)throw new Error("User not found");let a=o.body.data.user[n];if(!a)throw new Error("Unexpected response");return{pageInfo:a.pageInfo,data:((p=a.nodes)==null?void 0:p.filter(d=>s.includeFromArchivedRepos||!d.project.archived).map(d=>Ot(d,Gt(d.project),Gt(d.sourceProject),this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)))||[]}}async getPullRequestsAssociatedWithUser(s,e={}){var $,ue;let[t,n,o]=(($=s.cursor)==null?void 0:$.split(";"))||[void 0,void 0,void 0],a=(t==null?void 0:t.split("-"))||[],i=(n==null?void 0:n.split("-"))||[],u=(o==null?void 0:o.split("-"))||[],l=[],p=[],d=[],c=0;do{let E=s.repos&&s.repos[c];a[c]==="null"?l.push(null):l.push(this.getPullRequestsForUser({username:s.username,association:"authored",cursor:a[c],includeFromArchivedRepos:s.includeFromArchivedRepos,labelNames:s.labelNames,...E&&{repo:E}},e)),i[c]==="null"?p.push(null):p.push(this.getPullRequestsForUser({username:s.username,association:"assigned",cursor:i[c],includeFromArchivedRepos:s.includeFromArchivedRepos,labelNames:s.labelNames,...E&&{repo:E}},e)),u[c]==="null"?d.push(null):d.push(this.getPullRequestsForUser({username:s.username,association:"reviewRequested",cursor:u[c],includeFromArchivedRepos:s.includeFromArchivedRepos,labelNames:s.labelNames,...E&&{repo:E}},e)),c++}while(c<(((ue=s.repos)==null?void 0:ue.length)||0));let g=[l,p,d].flat(),m=await Promise.all(g),h={},I=[],w=E=>{h[E.id]||(h[E.id]=!0,I.push(E))},f=!1,G=m.map((E,pt)=>{var dt;let ae="";return E&&E.data.forEach(w),E!=null&&E.pageInfo.hasNextPage?(f=!0,ae+=`${E.pageInfo.endCursor||"null"}`):ae+="null",(dt=s.repos)!=null&&dt.length&&(pt+1)%s.repos.length!==0?ae+="-":pt+1<m.length&&(ae+=";"),ae}).join("");return{pageInfo:{hasNextPage:f,endCursor:G},data:I}}getVariablesForPullRequests(s){let{updatedBefore:e,isDraft:t,authorLogin:n,assigneeLogins:o,labelNames:a,reviewRequestedLogin:i}=s||{},u={},l=[],p=[],d=(c,g,m)=>{l.push(`$${c}: ${m}`),p.push(`${c}: $${c}`),u[c]=g};return e&&d("updatedBefore",e,"Time"),n&&d("authorUsername",n,"String"),o&&d("assigneeUsername",o[0],"String"),a&&d("labelName",a,"[String]"),t!=null&&d("draft",t,"Boolean"),i&&d("reviewerUsername",i,"String"),{variables:u,variableTypes:l,mergeRequestArguments:p}}async getPullRequestsForRepoBase(s,e={},t){var I,w,f;let{cursor:n,repo:o}=s||{},a=j(o),{variables:i,variableTypes:u,mergeRequestArguments:l}=this.getVariablesForPullRequests(s),p={fullPath:a,...i},d=await P(this.config,{query:`
876
890
  query getPullRequestsForRepo(
877
891
  $fullPath: ID!
878
892
  $after: String
@@ -897,19 +911,19 @@ query getPullRequestsForRepo(
897
911
  hasNextPage
898
912
  }
899
913
  nodes {
900
- ${Dt(!1,!0,!0)}
914
+ ${Tt(!1,!0,!0)}
901
915
  }
902
916
  }
903
917
  }
904
918
  }
905
- `,variables:{...p,after:s}},e),c=[],g=(R=d.body.data)==null?void 0:R.project;if(!t&&(g!=null&&g.archived))return{pageInfo:null,data:[]};let m=ye(g||{id:"",fullPath:"",webUrl:""});return(((S=g==null?void 0:g.mergeRequests)==null?void 0:S.nodes)||[]).forEach(v=>{c.push(Lt(v,m,null,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl))}),{pageInfo:(f=g==null?void 0:g.mergeRequests)==null?void 0:f.pageInfo,data:c}}async getPullRequestsForRepo(n,e={}){return this.getPullRequestsForRepoBase(n,e,!1)}async getPullRequestsForRepos(n,e={}){let{repos:t,assigneeLogins:s,updatedBefore:o,authorLogin:a,labelNames:i,isDraft:u,reviewRequestedLogin:l}=n;return{data:(await Promise.all(t.map(d=>this.getPullRequestsForRepoBase({repo:d,assigneeLogins:s,updatedBefore:o,authorLogin:a,labelNames:i,isDraft:u,reviewRequestedLogin:l},e,n.includeFromArchivedRepos??!1)))).flatMap(d=>d.data)}}async closePullRequest(n,e={}){var i,u,l;let{pullRequest:t}=n,s=`mutation ClosePullRequest($fullPath: ID!, $pullRequestId: String!) {
919
+ `,variables:{...p,after:n}},e),c=[],g=(I=d.body.data)==null?void 0:I.project;if(!t&&(g!=null&&g.archived))return{pageInfo:null,data:[]};let m=Se(g||{id:"",fullPath:"",webUrl:""});return(((w=g==null?void 0:g.mergeRequests)==null?void 0:w.nodes)||[]).forEach(v=>{c.push(Ot(v,m,null,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl))}),{pageInfo:(f=g==null?void 0:g.mergeRequests)==null?void 0:f.pageInfo,data:c}}async getPullRequestsForRepo(s,e={}){return this.getPullRequestsForRepoBase(s,e,!1)}async getPullRequestsForRepos(s,e={}){let{repos:t,assigneeLogins:n,updatedBefore:o,authorLogin:a,labelNames:i,isDraft:u,reviewRequestedLogin:l}=s;return{data:(await Promise.all(t.map(d=>this.getPullRequestsForRepoBase({repo:d,assigneeLogins:n,updatedBefore:o,authorLogin:a,labelNames:i,isDraft:u,reviewRequestedLogin:l},e,s.includeFromArchivedRepos??!1)))).flatMap(d=>d.data)}}async closePullRequest(s,e={}){var i,u,l;let{pullRequest:t}=s,n=`mutation ClosePullRequest($fullPath: ID!, $pullRequestId: String!) {
906
920
  mergeRequestUpdate(input: { projectPath: $fullPath, iid: $pullRequestId, state: CLOSED }) {
907
921
  errors,
908
922
  mergeRequest {
909
923
  id
910
924
  }
911
925
  }
912
- }`,a=(i=(await P(this.config,{query:s,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString()}},e)).body.data)==null?void 0:i.mergeRequestUpdate;if(!((u=a==null?void 0:a.mergeRequest)!=null&&u.id)||((l=a==null?void 0:a.errors)==null?void 0:l.length)!==0)throw new Error("Could not close pull request")}async mergePullRequest(n,e={}){var u,l,p,d;let{pullRequest:t,mergeStrategy:s}=n;if(!((u=t.headRef)!=null&&u.oid))throw new Error('GitLab requires "headRef.oid" for this function.');let o=`mutation MergePullRequest(
926
+ }`,a=(i=(await P(this.config,{query:n,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString()}},e)).body.data)==null?void 0:i.mergeRequestUpdate;if(!((u=a==null?void 0:a.mergeRequest)!=null&&u.id)||((l=a==null?void 0:a.errors)==null?void 0:l.length)!==0)throw new Error("Could not close pull request")}async mergePullRequest(s,e={}){var u,l,p,d;let{pullRequest:t,mergeStrategy:n}=s;if(!((u=t.headRef)!=null&&u.oid))throw new Error('GitLab requires "headRef.oid" for this function.');let o=`mutation MergePullRequest(
913
927
  $fullPath: ID!,
914
928
  $pullRequestId: String!,
915
929
  $expectedSourceSha: String!,
@@ -926,59 +940,59 @@ query getPullRequestsForRepo(
926
940
  id
927
941
  }
928
942
  }
929
- }`,i=(l=(await P(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),expectedSourceSha:t.headRef.oid,squash:s==="SQUASH"}},e)).body.data)==null?void 0:l.mergeRequestAccept;if(!((p=i==null?void 0:i.mergeRequest)!=null&&p.id)||((d=i==null?void 0:i.errors)==null?void 0:d.length)!==0)throw new Error("Could not merge pull request")}async setPullRequestMilestone(n,e={}){var u,l,p;let{pullRequest:t,milestone:s}=n;if(!t.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation SetPullRequestMilestone($fullPath: ID!, $pullRequestId: String!, $milestoneGraphQLId: MilestoneID) {
943
+ }`,i=(l=(await P(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),expectedSourceSha:t.headRef.oid,squash:n==="SQUASH"}},e)).body.data)==null?void 0:l.mergeRequestAccept;if(!((p=i==null?void 0:i.mergeRequest)!=null&&p.id)||((d=i==null?void 0:i.errors)==null?void 0:d.length)!==0)throw new Error("Could not merge pull request")}async setPullRequestMilestone(s,e={}){var u,l,p;let{pullRequest:t,milestone:n}=s;if(!t.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation SetPullRequestMilestone($fullPath: ID!, $pullRequestId: String!, $milestoneGraphQLId: MilestoneID) {
930
944
  mergeRequestSetMilestone(input: { projectPath: $fullPath, iid: $pullRequestId, milestoneId: $milestoneGraphQLId }) {
931
945
  errors,
932
946
  mergeRequest {
933
947
  id
934
948
  }
935
949
  }
936
- }`,a=await P(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),milestoneGraphQLId:s==null?void 0:s.graphQLId}},e),i=(u=a.body.data)==null?void 0:u.mergeRequestSetMilestone;if(!((l=i==null?void 0:i.mergeRequest)!=null&&l.id)||a.body.errors||((p=i==null?void 0:i.errors)==null?void 0:p.length)!==0)throw new Error("Could not set milestone of pull request")}async setPullRequestAsDraft(n,e={}){var u,l,p;let{pullRequest:t,isDraft:s}=n,o=`mutation MergeRequestSetDraft($fullPath: ID!, $pullRequestId: String!, $isDraft: Boolean!) {
950
+ }`,a=await P(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),milestoneGraphQLId:n==null?void 0:n.graphQLId}},e),i=(u=a.body.data)==null?void 0:u.mergeRequestSetMilestone;if(!((l=i==null?void 0:i.mergeRequest)!=null&&l.id)||a.body.errors||((p=i==null?void 0:i.errors)==null?void 0:p.length)!==0)throw new Error("Could not set milestone of pull request")}async setPullRequestAsDraft(s,e={}){var u,l,p;let{pullRequest:t,isDraft:n}=s,o=`mutation MergeRequestSetDraft($fullPath: ID!, $pullRequestId: String!, $isDraft: Boolean!) {
937
951
  mergeRequestSetDraft(input: { projectPath: $fullPath, iid: $pullRequestId, draft: $isDraft }) {
938
952
  errors,
939
953
  mergeRequest {
940
954
  id
941
955
  }
942
956
  }
943
- }`,i=(u=(await P(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),isDraft:s}},e)).body.data)==null?void 0:u.mergeRequestSetDraft;if(!((l=i==null?void 0:i.mergeRequest)!=null&&l.id)||((p=i==null?void 0:i.errors)==null?void 0:p.length)!==0)throw new Error("Could not set pull request as draft")}async setPullRequestReviewers(n,e={}){var l,p,d;let{pullRequest:t,reviewers:s}=n,o=s.map(c=>{if(!c.username)throw new Error('GitLab requires reviewer "username" for this function.');return c.username}),a=`mutation MergeRequestSetReviewers($fullPath: ID!, $pullRequestId: String!, $reviewerUsernames: [String!]!) {
957
+ }`,i=(u=(await P(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),isDraft:n}},e)).body.data)==null?void 0:u.mergeRequestSetDraft;if(!((l=i==null?void 0:i.mergeRequest)!=null&&l.id)||((p=i==null?void 0:i.errors)==null?void 0:p.length)!==0)throw new Error("Could not set pull request as draft")}async setPullRequestReviewers(s,e={}){var l,p,d;let{pullRequest:t,reviewers:n}=s,o=n.map(c=>{if(!c.username)throw new Error('GitLab requires reviewer "username" for this function.');return c.username}),a=`mutation MergeRequestSetReviewers($fullPath: ID!, $pullRequestId: String!, $reviewerUsernames: [String!]!) {
944
958
  mergeRequestSetReviewers(input: { projectPath: $fullPath, iid: $pullRequestId, reviewerUsernames: $reviewerUsernames }) {
945
959
  errors,
946
960
  mergeRequest {
947
961
  id
948
962
  }
949
963
  }
950
- }`,u=(l=(await P(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),reviewerUsernames:o}},e)).body.data)==null?void 0:l.mergeRequestSetReviewers;if(!((p=u==null?void 0:u.mergeRequest)!=null&&p.id)||((d=u==null?void 0:u.errors)==null?void 0:d.length)!==0)throw new Error("Could not set pull request reviewers")}async reRequestPullRequestReview(n,e={}){var u,l,p;let{pullRequest:t,reviewer:s}=n;if(!s.graphQLId)throw new Error('GitLab requires reviwer "graphQLId" for this function.');let o=`mutation MergeRequestReviewerRereview($fullPath: ID!, $pullRequestId: String!, $reviewerUserId: UserID!) {
964
+ }`,u=(l=(await P(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),reviewerUsernames:o}},e)).body.data)==null?void 0:l.mergeRequestSetReviewers;if(!((p=u==null?void 0:u.mergeRequest)!=null&&p.id)||((d=u==null?void 0:u.errors)==null?void 0:d.length)!==0)throw new Error("Could not set pull request reviewers")}async reRequestPullRequestReview(s,e={}){var u,l,p;let{pullRequest:t,reviewer:n}=s;if(!n.graphQLId)throw new Error('GitLab requires reviwer "graphQLId" for this function.');let o=`mutation MergeRequestReviewerRereview($fullPath: ID!, $pullRequestId: String!, $reviewerUserId: UserID!) {
951
965
  mergeRequestReviewerRereview(input: { projectPath: $fullPath, iid: $pullRequestId, userId: $reviewerUserId }) {
952
966
  errors,
953
967
  mergeRequest {
954
968
  id
955
969
  }
956
970
  }
957
- }`,i=(u=(await P(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),reviewerUserId:s.graphQLId}},e)).body.data)==null?void 0:u.mergeRequestReviewerRereview;if(!((l=i==null?void 0:i.mergeRequest)!=null&&l.id)||((p=i==null?void 0:i.errors)==null?void 0:p.length)!==0)throw new Error("Could not set pull request reviewers")}async reRequestPullRequestReviews(n,e={}){let{pullRequest:t,reviewers:s}=n,o=t.reviews;if(!o)throw new Error('GitLab requires "reviews" for this function.');let a=s.filter(i=>o.find(u=>u.reviewer.graphQLId===i.graphQLId));await Promise.all(a.map(i=>this.reRequestPullRequestReview({pullRequest:t,reviewer:i},e)))}async setPullRequestAssignees(n,e={}){var l,p,d;let{pullRequest:t,assignees:s}=n,o=s.map(c=>{if(!c.username)throw new Error('GitLab requires assignee "username" for this function.');return c.username}),a=`mutation MergeRequestSetAssignees($fullPath: ID!, $pullRequestId: String!, $assigneeUsernames: [String!]!) {
971
+ }`,i=(u=(await P(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),reviewerUserId:n.graphQLId}},e)).body.data)==null?void 0:u.mergeRequestReviewerRereview;if(!((l=i==null?void 0:i.mergeRequest)!=null&&l.id)||((p=i==null?void 0:i.errors)==null?void 0:p.length)!==0)throw new Error("Could not set pull request reviewers")}async reRequestPullRequestReviews(s,e={}){let{pullRequest:t,reviewers:n}=s,o=t.reviews;if(!o)throw new Error('GitLab requires "reviews" for this function.');let a=n.filter(i=>o.find(u=>u.reviewer.graphQLId===i.graphQLId));await Promise.all(a.map(i=>this.reRequestPullRequestReview({pullRequest:t,reviewer:i},e)))}async setPullRequestAssignees(s,e={}){var l,p,d;let{pullRequest:t,assignees:n}=s,o=n.map(c=>{if(!c.username)throw new Error('GitLab requires assignee "username" for this function.');return c.username}),a=`mutation MergeRequestSetAssignees($fullPath: ID!, $pullRequestId: String!, $assigneeUsernames: [String!]!) {
958
972
  mergeRequestSetAssignees(input: { projectPath: $fullPath, iid: $pullRequestId, assigneeUsernames: $assigneeUsernames }) {
959
973
  errors,
960
974
  mergeRequest {
961
975
  id
962
976
  }
963
977
  }
964
- }`,u=(l=(await P(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),assigneeUsernames:o}},e)).body.data)==null?void 0:l.mergeRequestSetAssignees;if(!((p=u==null?void 0:u.mergeRequest)!=null&&p.id)||((d=u==null?void 0:u.errors)==null?void 0:d.length)!==0)throw new Error("Could not set pull request assignees")}async setPullRequestLabels(n,e={}){var u,l,p;let{pullRequest:t,labels:s}=n,o=s.map(d=>{if(!d.graphQLId)throw new Error('GitLab requires "graphQLId" for labels in this function.');return d.graphQLId}),a=`mutation SetPullRequestLabels($fullPath: ID!, $pullRequestId: String!, $labelGraphQLIds: [LabelID!]!) {
978
+ }`,u=(l=(await P(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),assigneeUsernames:o}},e)).body.data)==null?void 0:l.mergeRequestSetAssignees;if(!((p=u==null?void 0:u.mergeRequest)!=null&&p.id)||((d=u==null?void 0:u.errors)==null?void 0:d.length)!==0)throw new Error("Could not set pull request assignees")}async setPullRequestLabels(s,e={}){var u,l,p;let{pullRequest:t,labels:n}=s,o=n.map(d=>{if(!d.graphQLId)throw new Error('GitLab requires "graphQLId" for labels in this function.');return d.graphQLId}),a=`mutation SetPullRequestLabels($fullPath: ID!, $pullRequestId: String!, $labelGraphQLIds: [LabelID!]!) {
965
979
  mergeRequestSetLabels(input: { projectPath: $fullPath, iid: $pullRequestId, labelIds: $labelGraphQLIds }) {
966
980
  mergeRequest {
967
981
  id
968
982
  }
969
983
  }
970
- }`;if(!((p=(l=(u=(await P(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),labelGraphQLIds:o}},e)).body.data)==null?void 0:u.mergeRequestSetLabels)==null?void 0:l.mergeRequest)!=null&&p.id))throw new Error("Could not set pull request labels")}async getIssue(n,e={}){var o,a,i;let t=Qr(n),s=await P(this.config,{query:`
984
+ }`;if(!((p=(l=(u=(await P(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),labelGraphQLIds:o}},e)).body.data)==null?void 0:u.mergeRequestSetLabels)==null?void 0:l.mergeRequest)!=null&&p.id))throw new Error("Could not set pull request labels")}async getIssue(s,e={}){var o,a,i;let t=zr(s),n=await P(this.config,{query:`
971
985
  query GetSingleIssue($projectId: ID!, $issueNumber: String!) {
972
986
  project(fullPath: $projectId) {
973
987
  id
974
988
  fullPath
975
989
  webUrl
976
990
  issue(iid: $issueNumber) {
977
- ${Je}
991
+ ${Ze}
978
992
  }
979
993
  }
980
994
  }
981
- `,variables:{issueNumber:n.number,projectId:t}},e);if(!((o=s.body.data)!=null&&o.project))throw new Error(`Repository ${t} not found`);if(!((i=(a=s.body.data)==null?void 0:a.project)!=null&&i.issue))throw new Error(`Issue ${n.number} not found`);return{data:Ve(s.body.data.project.issue,ye(s.body.data.project),this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)}}getVariablesForIssues(n){let{updatedBefore:e,authorLogin:t,assigneeLogins:s,labelNames:o}=n||{},a={},i=[],u=[],l=(p,d,c)=>{i.push(`$${p}: ${c}`),u.push(`${p}: $${p}`),a[p]=d};return e&&l("updatedBefore",e,"Time"),t&&l("authorUsername",t,"String"),s&&l("assigneeUsername",s[0],"String"),o&&l("labelName",o,"[String]"),{variables:a,variableTypes:i,issueArguments:u}}async getIssuesForRepo(n,e={}){var R,S,f;let{cursor:t,repo:s}=n||{},o=B(s),{variables:a,variableTypes:i,issueArguments:u}=this.getVariablesForIssues(n),l={fullPath:o,...a},p=`
995
+ `,variables:{issueNumber:s.number,projectId:t}},e);if(!((o=n.body.data)!=null&&o.project))throw new Error(`Repository ${t} not found`);if(!((i=(a=n.body.data)==null?void 0:a.project)!=null&&i.issue))throw new Error(`Issue ${s.number} not found`);return{data:et(n.body.data.project.issue,Se(n.body.data.project),this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)}}getVariablesForIssues(s){let{updatedBefore:e,authorLogin:t,assigneeLogins:n,labelNames:o}=s||{},a={},i=[],u=[],l=(p,d,c)=>{i.push(`$${p}: ${c}`),u.push(`${p}: $${p}`),a[p]=d};return e&&l("updatedBefore",e,"Time"),t&&l("authorUsername",t,"String"),n&&l("assigneeUsername",n[0],"String"),o&&l("labelName",o,"[String]"),{variables:a,variableTypes:i,issueArguments:u}}async getIssuesForRepo(s,e={}){var I,w,f;let{cursor:t,repo:n}=s||{},o=j(n),{variables:a,variableTypes:i,issueArguments:u}=this.getVariablesForIssues(s),l={fullPath:o,...a},p=`
982
996
  query GetIssuesFromProject(
983
997
  $fullPath: ID!
984
998
  $after: String
@@ -998,7 +1012,7 @@ query GetSingleIssue($projectId: ID!, $issueNumber: String!) {
998
1012
  ${u.length?u.join(" "):""}
999
1013
  ) {
1000
1014
  nodes {
1001
- ${Je}
1015
+ ${Ze}
1002
1016
  }
1003
1017
  pageInfo {
1004
1018
  endCursor
@@ -1006,7 +1020,7 @@ query GetSingleIssue($projectId: ID!, $issueNumber: String!) {
1006
1020
  }
1007
1021
  }
1008
1022
  }
1009
- }`,d=await P(this.config,{query:p,variables:{...l,after:t}},e),c=[],g=(R=d.body.data)==null?void 0:R.project,m=ye(g||{id:"",fullPath:"",webUrl:""});return(((S=g==null?void 0:g.issues)==null?void 0:S.nodes)||[]).forEach(v=>{c.push(Ve(v,m,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl))}),{pageInfo:((f=g==null?void 0:g.issues)==null?void 0:f.pageInfo)??{endCursor:null,hasNextPage:!1},data:c.sort((v,x)=>(v.updatedDate||v.createdDate).getTime()-(x.updatedDate||x.createdDate).getTime())}}async getIssuesForRepos(n,e={}){var g,m,h,R,S;let{cursor:t}=n||{},s=n.repoIds.map(f=>f.toString().startsWith(ee)?f:`${ee}${f}`),{variables:o,variableTypes:a,mergeRequestArguments:i}=this.getVariablesForPullRequests(n),u={projectIds:s,...o},l=`
1023
+ }`,d=await P(this.config,{query:p,variables:{...l,after:t}},e),c=[],g=(I=d.body.data)==null?void 0:I.project,m=Se(g||{id:"",fullPath:"",webUrl:""});return(((w=g==null?void 0:g.issues)==null?void 0:w.nodes)||[]).forEach(v=>{c.push(et(v,m,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl))}),{pageInfo:((f=g==null?void 0:g.issues)==null?void 0:f.pageInfo)??{endCursor:null,hasNextPage:!1},data:c.sort((v,G)=>(v.updatedDate||v.createdDate).getTime()-(G.updatedDate||G.createdDate).getTime())}}async getIssuesForRepos(s,e={}){var g,m,h,I,w;let{cursor:t}=s||{},n=s.repoIds.map(f=>f.toString().startsWith(te)?f:`${te}${f}`),{variables:o,variableTypes:a,mergeRequestArguments:i}=this.getVariablesForPullRequests(s),u={projectIds:n,...o},l=`
1010
1024
  query GetIssuesFromProject(
1011
1025
  $projectIds: [ID!]
1012
1026
  $after: String
@@ -1032,24 +1046,24 @@ query GetSingleIssue($projectId: ID!, $issueNumber: String!) {
1032
1046
  ${i.length?i.join(" "):""}
1033
1047
  ) {
1034
1048
  nodes {
1035
- ${Je}
1049
+ ${Ze}
1036
1050
  }
1037
1051
  }
1038
1052
  }
1039
1053
  }
1040
- }`,p=await P(this.config,{query:l,variables:{...u,after:t}},e),d=[];return(((m=(g=p.body.data)==null?void 0:g.projects)==null?void 0:m.nodes)||[]).forEach(f=>{var G;if(!n.includeFromArchivedRepos&&f.archived)return;let v=ye(f);(((G=f.issues)==null?void 0:G.nodes)||[]).forEach(Ft=>d.push(Ve(Ft,v,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)))}),{pageInfo:((S=(R=(h=p.body)==null?void 0:h.data)==null?void 0:R.projects)==null?void 0:S.pageInfo)??{endCursor:null,hasNextPage:!1},data:d.sort((f,v)=>(f.updatedDate||f.createdDate).getTime()-(v.updatedDate||v.createdDate).getTime())}}async setIssueState(n,e={}){var i,u,l;let{issue:t,state:s}=n;if(!t.repository)throw new Error('GitLab requires "repository" for this function.');let o=`mutation SetIssueState($fullPath: ID!, $issueId: String!, $status: IssueStateEvent!) {
1054
+ }`,p=await P(this.config,{query:l,variables:{...u,after:t}},e),d=[];return(((m=(g=p.body.data)==null?void 0:g.projects)==null?void 0:m.nodes)||[]).forEach(f=>{var $;if(!s.includeFromArchivedRepos&&f.archived)return;let v=Se(f);((($=f.issues)==null?void 0:$.nodes)||[]).forEach(ue=>d.push(et(ue,v,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)))}),{pageInfo:((w=(I=(h=p.body)==null?void 0:h.data)==null?void 0:I.projects)==null?void 0:w.pageInfo)??{endCursor:null,hasNextPage:!1},data:d.sort((f,v)=>(f.updatedDate||f.createdDate).getTime()-(v.updatedDate||v.createdDate).getTime())}}async setIssueState(s,e={}){var i,u,l;let{issue:t,state:n}=s;if(!t.repository)throw new Error('GitLab requires "repository" for this function.');let o=`mutation SetIssueState($fullPath: ID!, $issueId: String!, $status: IssueStateEvent!) {
1041
1055
  updateIssue(input: { projectPath: $fullPath, iid: $issueId, stateEvent: $status }) {
1042
1056
  issue {
1043
1057
  id
1044
1058
  }
1045
1059
  }
1046
- }`;if(!((l=(u=(i=(await P(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,status:s==="OPEN"?"REOPEN":"CLOSE"}},e)).body.data)==null?void 0:i.updateIssue)==null?void 0:u.issue)!=null&&l.id))throw new Error("Could not set issue status")}async closeIssue(n,e={}){await this.setIssueState({...n,state:"CLOSED"},e)}async reOpenIssue(n,e={}){await this.setIssueState({...n,state:"OPEN"},e)}async setIssueLabels(n,e={}){var u,l,p;let{issue:t,labels:s}=n;if(!t.repository)throw new Error('GitLab requires a "repository" for this function.');let o=s.map(d=>{if(!d.graphQLId)throw new Error('GitLab requires label "graphQLId" for this function.');return d.graphQLId}),a=`mutation SetIssueLabels($fullPath: ID!, $issueId: String!, $labelGraphQLIds: [ID!]) {
1060
+ }`;if(!((l=(u=(i=(await P(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,status:n==="OPEN"?"REOPEN":"CLOSE"}},e)).body.data)==null?void 0:i.updateIssue)==null?void 0:u.issue)!=null&&l.id))throw new Error("Could not set issue status")}async closeIssue(s,e={}){await this.setIssueState({...s,state:"CLOSED"},e)}async reOpenIssue(s,e={}){await this.setIssueState({...s,state:"OPEN"},e)}async setIssueLabels(s,e={}){var u,l,p;let{issue:t,labels:n}=s;if(!t.repository)throw new Error('GitLab requires a "repository" for this function.');let o=n.map(d=>{if(!d.graphQLId)throw new Error('GitLab requires label "graphQLId" for this function.');return d.graphQLId}),a=`mutation SetIssueLabels($fullPath: ID!, $issueId: String!, $labelGraphQLIds: [ID!]) {
1047
1061
  updateIssue(input: { projectPath: $fullPath, iid: $issueId, labelIds: $labelGraphQLIds }) {
1048
1062
  issue {
1049
1063
  id
1050
1064
  }
1051
1065
  }
1052
- }`;if(!((p=(l=(u=(await P(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,labelGraphQLIds:o}},e)).body.data)==null?void 0:u.updateIssue)==null?void 0:l.issue)!=null&&p.id))throw new Error("Could not set issue labels")}async setIssueMilestone(n,e={}){var u,l,p;let{issue:t,milestone:s}=n;if(!t.repository)throw new Error('GitLab requires "repository" for this function.');let o=`mutation SetIssueMilestone($fullPath: ID!, $issueId: String!, $milestoneId: ID) {
1066
+ }`;if(!((p=(l=(u=(await P(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,labelGraphQLIds:o}},e)).body.data)==null?void 0:u.updateIssue)==null?void 0:l.issue)!=null&&p.id))throw new Error("Could not set issue labels")}async setIssueMilestone(s,e={}){var u,l,p;let{issue:t,milestone:n}=s;if(!t.repository)throw new Error('GitLab requires "repository" for this function.');let o=`mutation SetIssueMilestone($fullPath: ID!, $issueId: String!, $milestoneId: ID) {
1053
1067
  updateIssue(input: { projectPath: $fullPath, iid: $issueId, milestoneId: $milestoneId }) {
1054
1068
  errors
1055
1069
  issue {
@@ -1059,14 +1073,14 @@ query GetSingleIssue($projectId: ID!, $issueNumber: String!) {
1059
1073
  }
1060
1074
  }
1061
1075
  }
1062
- }`,a=await P(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,milestoneId:(s==null?void 0:s.id)??null}},e),i=(u=a.body.data)==null?void 0:u.updateIssue;if(!((l=i==null?void 0:i.issue)!=null&&l.id)||a.body.errors||((p=i==null?void 0:i.errors)==null?void 0:p.length)!==0)throw new Error("Could not set milestone of issue")}async setIssueAssignees(n,e={}){var l,p,d;let{issue:t,assignees:s}=n;if(!t.repository)throw new Error('GitLab requires "repository" for this function.');let o=s.map(c=>c.username),a=`mutation SetIssueAssignees($fullPath: ID!, $issueId: String!, $assigneeUsernames: [String!]!) {
1076
+ }`,a=await P(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,milestoneId:(n==null?void 0:n.id)??null}},e),i=(u=a.body.data)==null?void 0:u.updateIssue;if(!((l=i==null?void 0:i.issue)!=null&&l.id)||a.body.errors||((p=i==null?void 0:i.errors)==null?void 0:p.length)!==0)throw new Error("Could not set milestone of issue")}async setIssueAssignees(s,e={}){var l,p,d;let{issue:t,assignees:n}=s;if(!t.repository)throw new Error('GitLab requires "repository" for this function.');let o=n.map(c=>c.username),a=`mutation SetIssueAssignees($fullPath: ID!, $issueId: String!, $assigneeUsernames: [String!]!) {
1063
1077
  issueSetAssignees(input: { projectPath: $fullPath, iid: $issueId, assigneeUsernames: $assigneeUsernames }) {
1064
1078
  errors,
1065
1079
  issue {
1066
1080
  id
1067
1081
  }
1068
1082
  }
1069
- }`,u=(l=(await P(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,assigneeUsernames:o}},e)).body.data)==null?void 0:l.issueSetAssignees;if(!((p=u==null?void 0:u.issue)!=null&&p.id)||((d=u==null?void 0:u.errors)==null?void 0:d.length)!==0)throw new Error("Could not set issue assignees")}async getMilestonesForRepo(n,e={}){var i,u,l,p,d,c,g;let{repo:{namespace:t,name:s},cursor:o}=n,a=await P(this.config,{query:`
1083
+ }`,u=(l=(await P(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,assigneeUsernames:o}},e)).body.data)==null?void 0:l.issueSetAssignees;if(!((p=u==null?void 0:u.issue)!=null&&p.id)||((d=u==null?void 0:u.errors)==null?void 0:d.length)!==0)throw new Error("Could not set issue assignees")}async getMilestonesForRepo(s,e={}){var i,u,l,p,d,c,g;let{repo:{namespace:t,name:n},cursor:o}=s,a=await P(this.config,{query:`
1070
1084
  query getLabelsForRepo(
1071
1085
  $fullPath: ID!
1072
1086
  $after: String
@@ -1077,7 +1091,7 @@ query getLabelsForRepo(
1077
1091
  webUrl
1078
1092
  milestones(after: $after) {
1079
1093
  nodes {
1080
- ${Ye}
1094
+ ${st}
1081
1095
  }
1082
1096
  pageInfo {
1083
1097
  endCursor
@@ -1086,7 +1100,7 @@ query getLabelsForRepo(
1086
1100
  }
1087
1101
  }
1088
1102
  }
1089
- `,variables:{fullPath:`${t}/${s}`,after:o}},e);return{pageInfo:((l=(u=(i=a.body.data)==null?void 0:i.project)==null?void 0:u.milestones)==null?void 0:l.pageInfo)??{endCursor:null,hasNextPage:!1},data:((g=(c=(d=(p=a.body.data)==null?void 0:p.project)==null?void 0:d.milestones)==null?void 0:c.nodes)==null?void 0:g.map(m=>{var h,R;return rt(m,((R=(h=a.body.data)==null?void 0:h.project)==null?void 0:R.webUrl)||"")}))??[]}}async getLabelsForRepo(n,e={}){var i,u,l,p,d,c,g;let{repo:{namespace:t,name:s},cursor:o}=n,a=await P(this.config,{query:`
1103
+ `,variables:{fullPath:`${t}/${n}`,after:o}},e);return{pageInfo:((l=(u=(i=a.body.data)==null?void 0:i.project)==null?void 0:u.milestones)==null?void 0:l.pageInfo)??{endCursor:null,hasNextPage:!1},data:((g=(c=(d=(p=a.body.data)==null?void 0:p.project)==null?void 0:d.milestones)==null?void 0:c.nodes)==null?void 0:g.map(m=>{var h,I;return at(m,((I=(h=a.body.data)==null?void 0:h.project)==null?void 0:I.webUrl)||"")}))??[]}}async getLabelsForRepo(s,e={}){var i,u,l,p,d,c,g;let{repo:{namespace:t,name:n},cursor:o}=s,a=await P(this.config,{query:`
1090
1104
  query getLabelsForRepo(
1091
1105
  $fullPath: ID!
1092
1106
  $after: String
@@ -1096,7 +1110,7 @@ query getLabelsForRepo(
1096
1110
  ) {
1097
1111
  labels(after: $after) {
1098
1112
  nodes {
1099
- ${et}
1113
+ ${nt}
1100
1114
  }
1101
1115
  pageInfo {
1102
1116
  endCursor
@@ -1105,5 +1119,5 @@ query getLabelsForRepo(
1105
1119
  }
1106
1120
  }
1107
1121
  }
1108
- `,variables:{fullPath:`${t}/${s}`,after:o}},e);return{pageInfo:((l=(u=(i=a.body.data)==null?void 0:i.project)==null?void 0:u.labels)==null?void 0:l.pageInfo)??{endCursor:null,hasNextPage:!1},data:((g=(c=(d=(p=a.body.data)==null?void 0:p.project)==null?void 0:d.labels)==null?void 0:c.nodes)==null?void 0:g.map(tt))??[]}}async getTreeForRepo(n,e={}){let t=B(n.repo),s=new URL(n.cursor??`${Re(this.config,e)}/projects/${encodeURIComponent(t)}/repository/tree`);s.searchParams.set("per_page","10000"),s.searchParams.set("recursive","true"),s.searchParams.set("pagination","keyset"),s.searchParams.set("ref",n.branch);let o=await this.config.request({url:s.toString(),headers:I(e.token||this.config.token)}),a=o.headers.link;return{data:o.body.map(Br),pageInfo:{endCursor:a?a.substring(1,a.indexOf(">")):null,hasNextPage:!!a}}}};var Wr="https://api.atlassian.com/ex/jira",Pe=100,st=["assignee","comment","summary","created","creator","updated","votes","issuetype","status","labels","components","project","fixVersions","description"],Ut="/rest/api/2/search/jql",$t="/rest/api/2/search",nt=(r,n,e,t)=>{var i,u,l,p;let s=r.fields.assignee,o=!t,a=(r.fields[(n==null?void 0:n.Sprint)??""]??[]).filter(d=>typeof d=="object");return{id:r.id,commentCount:r.fields.comment.comments.length,number:r.key,title:r.fields.summary,url:e?`${e}/browse/${r.key}`:null,closedDate:null,createdDate:new Date(r.fields.created),author:we(r.fields.creator,e,o),updatedDate:new Date(r.fields.updated),assignees:s?[we(s,e,o)]:[],description:r.fields.description,repository:null,project:{name:r.fields.project.name,resourceId:t??null,key:r.fields.project.key,namespace:null,id:r.fields.project.id},state:Vr(r.fields.status),statusTransitions:((i=r.transitions)==null?void 0:i.map(Hr))??[],components:((u=r.fields.components)==null?void 0:u.map(Jr))??[],type:r.fields.issuetype.name,upvoteCount:((l=r.fields.votes)==null?void 0:l.votes)||0,labels:((p=r.fields.labels)==null?void 0:p.map(d=>({color:null,description:null,id:null,name:d})))??[],sprints:a.map(Xr),fixVersions:r.fields.fixVersions.map(Zr)}},Hr=r=>{let n;switch(r.to.statusCategory.name){case"To Do":n="TO_DO";break;case"In Progress":n="IN_PROGRESS";break;default:n="DONE";break}return{name:r.name,id:r.id,to:{id:r.to.id,name:r.to.name,color:r.to.statusCategory.colorName,category:n}}},Jr=r=>({description:r.description??null,id:r.id,name:r.name}),Kr=(r,n,e)=>e&&r.name?`${n}/secure/ViewProfile.jspa?name=${encodeURIComponent(r.name)}`:`${n}/jira/people/${r.accountId}`,we=(r,n,e)=>({id:(e?r.key:r.accountId)??"",name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrls["48x48"],username:r.displayName,url:Kr(r,n,e)}),Vr=r=>{let n;switch(r.statusCategory.name){case"To Do":n="TO_DO";break;case"In Progress":n="IN_PROGRESS";break;default:n="DONE";break}return{id:r.id,name:r.name,color:r.statusCategory.colorName,category:n}},Xr=r=>({id:r.id.toString(),name:r.name,isActive:r.state==="active",startDate:r.startDate?new Date(r.startDate):null,endDate:r.endDate?new Date(r.endDate):null,completedDate:r.completeDate?new Date(r.completeDate):null}),Zr=r=>({id:r.id,description:r.description,name:r.name,archived:r.archived,released:r.released,releaseDate:r.releaseDate?new Date(r.releaseDate):null}),j=(r,n,e)=>e?`${n.baseUrl||Wr}/${e}`:`${(n==null?void 0:n.baseUrl)||r.baseUrl}`,Se=async(r,n,e={})=>{let{resourceId:t}=n;return(await r.request({url:`${j(r,e,t)}/rest/api/2/field`,headers:I(e.token||r.token)})).body},ve=async(r,n,e,t={})=>{let{number:s,resourceId:o,fields:a}=n||{},i=await r.request({url:`${j(r,t,o)}/rest/api/2/issue/${s}?fields=${st.join(",")}&expand=transitions`,headers:I(t.token||r.token)});return{data:nt(i.body,a,e,o)}},qe=async(r,n,e,t={})=>{let{cursor:s,resourceId:o,labelNames:a,fields:i}=n||{},u=["statusCategory != Done",`(creator = currentUser() OR assignee = currentUser()
1109
- OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUser())`];a&&a.forEach(S=>u.push(`labels = "${S}"`));let l=`${u.join(" AND ")} ORDER BY updated DESC`,p=!o,d=p?$t:Ut,c=new URL(`${j(r,t,o)}${d}`);c.searchParams.set("jql",l),c.searchParams.set("maxResults",Pe.toString()),c.searchParams.set("fields",st.join(",")),c.searchParams.set("expand","transitions"),s&&(p?c.searchParams.set("startAt",s):c.searchParams.set("nextPageToken",s));let g=await r.request({url:c.toString(),headers:I(t.token||r.token)}),m=g.body.issues.map(S=>nt(S,i,e,o)),h=!1,R="";return p?(h=m.length==Pe,R=(parseInt(s??"0",10)+m.length).toString()):(h=!!g.body.nextPageToken,R=g.body.nextPageToken??null),{data:m,pageInfo:{hasNextPage:h,endCursor:R}}},At=async(r,n,e,t={})=>{let{cursor:s,resourceId:o,jql:a,fields:i}=n||{},u=[...st],l=i==null?void 0:i.Sprint;l&&u.push(l);let p=!o,d=p?$t:Ut,c=new URL(`${j(r,t,o)}${d}`);c.searchParams.set("jql",a.join(" AND ")),c.searchParams.set("maxResults",Pe.toString()),c.searchParams.set("fields",u.join(",")),c.searchParams.set("expand","transitions"),s&&(p?c.searchParams.set("startAt",s):c.searchParams.set("nextPageToken",s));let g=await r.request({url:c.toString(),headers:I(t.token||r.token)}),m=g.body.issues.map(S=>nt(S,i,e,o)),h=!1,R="";return p?(h=m.length==Pe,R=(parseInt(s??"0",10)+m.length).toString()):(h=!!g.body.nextPageToken,R=g.body.nextPageToken??null),{data:m,pageInfo:{hasNextPage:h,endCursor:R}}},Ee=async(r,n,e,t={})=>{let{assigneeLogins:s,authorLogin:o,mentionLogin:a,labelNames:i,cursor:u,projectKey:l,resourceId:p,fields:d}=n||{},c=[`project = "${l}"`,"statusCategory != Done"];return o&&c.push(`creator in ("${o}")`),s&&s.length!==0&&c.push(`assignee in ("${s.join('", "')}")`),a&&c.push(`comment ~ "${a}"`),i&&i.forEach(g=>c.push(`labels = "${g}"`)),At(r,{resourceId:p,jql:c,cursor:u,fields:d},e,t)},Ce=async(r,n,e,t={})=>{let{assigneeLogins:s,authorLogin:o,mentionLogin:a,labelNames:i,cursor:u,projectKeys:l,resourceId:p,fields:d}=n||{},g=["("+l.map(m=>`project = "${m}"`).join(" OR ")+")","statusCategory != Done"];return o&&g.push(`creator in ("${o}")`),s&&s.length!==0&&g.push(`assignee in ("${s.join('", "')}")`),a&&g.push(`comment ~ "${a}"`),i&&i.forEach(m=>g.push(`labels = "${m}"`)),At(r,{resourceId:p,jql:g,fields:d,cursor:u},e,t)},De=async(r,n,e={})=>{let{issue:t,labels:s}=n;if(!t.project)throw new Error('Jira requires a "project" for this function.');let o={fields:{labels:s.map(a=>a.name)}};await r.request({method:"PUT",url:`${j(r,e,t.project.resourceId??void 0)}/rest/api/2/issue/${t.id}`,body:JSON.stringify(o),headers:{...I(e.token||r.token),"Content-Type":"application/json"}})},Le=async(r,n,e={})=>{let{issue:t,components:s}=n;if(!t.project)throw new Error('Jira requires a "project" for this function.');let o={fields:{components:s.map(a=>({id:a.id}))}};await r.request({method:"PUT",url:`${j(r,e,t.project.resourceId??void 0)}/rest/api/2/issue/${t.id}`,body:JSON.stringify(o),headers:{...I(e.token||r.token),"Content-Type":"application/json"}})},Ue=async(r,n,e={})=>{let{issue:t,status:s}=n;if(!t.project)throw new Error('Jira requires a "project" for this function.');if(!s.id)throw new Error('Jira requires a status "id" for this function.');let o={transition:{id:s.id}};await r.request({method:"POST",url:`${j(r,e,t.project.resourceId??void 0)}/rest/api/2/issue/${t.id}/transitions`,body:JSON.stringify(o),headers:{...I(e.token||r.token),"Content-Type":"application/json"}})},$e=async(r,n,e={})=>{let{resourceId:t,projectIdOrKey:s}=n,o=new URL(`${j(r,e,t)}/rest/api/2/project/${s}/components`);return{data:(await r.request({url:o.toString(),headers:I(e.token||r.token)})).body}};var oe="https://api.atlassian.com/ex/jira",ot=100,re=class extends ${constructor(){super(...arguments);this._resourceUrlCache={};this._issueFieldsCache={}}async getIssueFieldsForResource(e,t={}){if(!this._issueFieldsCache[e.resourceId]){let s=await Se(this.config,e,t);this._issueFieldsCache[e.resourceId]=s.reduce((o,a)=>({...o,[a.name]:a.id}),{})}return this._issueFieldsCache[e.resourceId]??null}async getResourceUrl(e,t={}){var a;let s=t.token||this.config.token;if(!s)return null;let o=this._resourceUrlCache[s];return o?o[e.resourceId]??null:(await this.getJiraResourcesForCurrentUser(t),((a=this._resourceUrlCache[s])==null?void 0:a[e.resourceId])??null)}async getCurrentUserForResource(e,t={}){let s=await this.getResourceUrl({resourceId:e.resourceId},t),o=await this.config.request({url:`${t.baseUrl||oe}/${e.resourceId}/rest/api/2/myself`,headers:I(t.token||this.config.token)});return{data:{name:o.body.displayName,email:o.body.emailAddress,avatarUrl:o.body.avatarUrls["48x48"],id:o.body.accountId,username:o.body.displayName,url:s?`${s}/jira/people/${o.body.accountId}`:null}}}async getJiraResourcesForCurrentUser(e={}){let t=await this.config.request({url:`${e.baseUrl||"https://api.atlassian.com/"}/oauth/token/accessible-resources`,headers:I(e.token||this.config.token)}),s=e.token||this.config.token,o=s?this._resourceUrlCache[s]||{}:void 0,a=t.body.map(i=>(o&&(o[i.id]=i.url),{avatarUrl:i.avatarUrl,id:i.id,name:i.name,url:i.url}));return s&&(this._resourceUrlCache[s]=o),{data:a}}async getJiraProjectsForResource(e,t={}){let s=new URL(`${t.baseUrl||oe}/${e.resourceId}/rest/api/2/project/search`);s.searchParams.set("maxResults",ot.toString()),e.cursor&&s.searchParams.set("startAt",e.cursor);let o=await this.config.request({url:s.toString(),headers:I(t.token||this.config.token)});return{pageInfo:{hasNextPage:o.body.values.length!==0,endCursor:(o.body.startAt+o.body.values.length).toString()},data:o.body.values.map(a=>({id:a.id,key:a.key,name:a.name,resourceId:e.resourceId}))}}async getJiraProjectsForResources(e,t={}){let s=[];return await Promise.all(e.resourceIds.map(async o=>{try{return await ct(a=>this.getJiraProjectsForResource({resourceId:o,cursor:a},t))}catch{return[]}})).then((...o)=>{o.forEach(a=>{s=s.concat(...a)})}),{data:s}}async getAccountsForJiraProject(e,t={}){let{resourceId:s,projectKey:o,cursor:a}=e,i=await this.getResourceUrl({resourceId:s},t),u=new URL(`${t.baseUrl||oe}/${s}/rest/api/2/user/assignable/search`);u.searchParams.set("maxResults",ot.toString()),a&&u.searchParams.set("startAt",a),u.searchParams.set("project",o);let l=await this.config.request({url:u.toString(),headers:I(t.token||this.config.token)});return{pageInfo:{hasNextPage:l.body.length!==0,endCursor:((a?parseInt(a):0)+l.body.length).toString()},data:l.body.filter(p=>p.accountType!=="app"&&p.active).map(p=>we(p,i,!1))}}async getComponentsForJiraProject(e,t={}){return await $e(this.config,e,t)}async getIssue(e,t={}){let s=await this.getIssueFieldsForResource({resourceId:e.resourceId},t),o=await this.getResourceUrl({resourceId:e.resourceId},t);return await ve(this.config,{...e,fields:s},o,t)}async getIssuesForProject(e,t={}){let s=await this.getIssueFieldsForResource({resourceId:e.resourceId},t),o=await this.getResourceUrl({resourceId:e.resourceId},t);return await Ee(this.config,{...e,fields:s},o,t)}async getIssuesForProjects(e,t={}){let s=await this.getIssueFieldsForResource({resourceId:e.resourceId},t),o=await this.getResourceUrl({resourceId:e.resourceId},t);return await Ce(this.config,{...e,fields:s},o,t)}async getIssuesForResourceForCurrentUser(e,t={}){let s=await this.getIssueFieldsForResource({resourceId:e.resourceId},t),o=await this.getResourceUrl({resourceId:e.resourceId},t);return await qe(this.config,{...e,fields:s},o,t)}async setIssueStatus(e,t={}){await Ue(this.config,e,t)}async setIssueAssignee(e,t={}){let{issue:s,assignee:o}=e;if(!s.project)throw new Error('Jira Cloud requires a "project" for this function.');if(!s.project.resourceId)throw new Error('Jira Cloud requires a project "resourceId" for this function.');let a={accountId:o==null?void 0:o.id};await this.config.request({method:"PUT",url:`${t.baseUrl||oe}/${s.project.resourceId}/rest/api/2/issue/${s.id}/assignee`,body:JSON.stringify(a),headers:{...I(t.token||this.config.token),"Content-Type":"application/json"}})}async setIssueComponents(e,t={}){await Le(this.config,e,t)}async setIssueLabels(e,t={}){await De(this.config,e,t)}async getLabelsForResource(e,t={}){let{resourceId:s,cursor:o}=e,a=new URL(`${t.baseUrl||oe}/${s}/rest/api/2/label`);a.searchParams.set("maxResults",ot.toString()),o&&a.searchParams.set("startAt",o);let i=await this.config.request({url:a.toString(),headers:I(t.token||this.config.token)});return{pageInfo:{hasNextPage:!i.body.isLast,endCursor:(i.body.startAt+i.body.values.length).toString()},data:i.body.values.map(u=>({color:null,description:null,id:null,name:u}))}}};var se=class extends T{constructor(){super(...arguments);this._issueFieldsCache={}}async getIssueFieldsForResource(e={}){let t=(e==null?void 0:e.baseUrl)||this.config.baseUrl||"";if(!this._issueFieldsCache[t]){let s=await Se(this.config,{},e);this._issueFieldsCache[t]=s.reduce((o,a)=>({...o,[a.name]:a.id}),{})}return this._issueFieldsCache[t]??null}async getCurrentUser(e={}){let t=await this.config.request({url:`${(e==null?void 0:e.baseUrl)||this.config.baseUrl}/rest/api/2/myself`,headers:I((e==null?void 0:e.token)||this.config.token)});return{data:{name:t.body.displayName,email:t.body.emailAddress,avatarUrl:t.body.avatarUrls["48x48"],id:t.body.key,username:t.body.displayName,url:null}}}async getJiraProjects(e={}){return{data:(await this.config.request({url:`${(e==null?void 0:e.baseUrl)||this.config.baseUrl}/rest/api/2/project`,headers:I((e==null?void 0:e.token)||this.config.token)})).body.map(s=>({id:s.id,name:s.name}))}}async getIssue(e,t={}){let s=e.resourceUrl||t.baseUrl||this.config.baseUrl;if(!s)throw new Error('Jira Server requires a "resourceUrl" or "baseUrl" for this function.');let o=await this.getIssueFieldsForResource(t);return await ve(this.config,{...e,fields:o},s,t)}async getIssuesForProject(e,t={}){let s=e.resourceUrl||t.baseUrl||this.config.baseUrl;if(!s)throw new Error('Jira Server requires a "resourceUrl" or "baseUrl" for this function.');let o=await this.getIssueFieldsForResource(t);return await Ee(this.config,{...e,fields:o},s,t)}async getIssuesForProjects(e,t={}){let s=e.resourceUrl||t.baseUrl||this.config.baseUrl;if(!s)throw new Error('Jira Server requires a "resourceUrl" or "baseUrl" for this function.');let o=await this.getIssueFieldsForResource(t);return await Ce(this.config,{...e,fields:o},s,t)}async getIssuesForResourceForCurrentUser(e,t={}){let s=e.resourceUrl||t.baseUrl||this.config.baseUrl;if(!s)throw new Error('Jira Server requires a "resourceUrl" or "baseUrl" for this function.');let o=await this.getIssueFieldsForResource(t);return await qe(this.config,{...e,fields:o},s,t)}async setIssueStatus(e,t={}){await Ue(this.config,e,t)}async setIssueLabels(e,t={}){await De(this.config,e,t)}async setIssueComponents(e,t={}){await Le(this.config,e,t)}async getLabels(e={}){return{data:(await this.config.request({url:`${(e==null?void 0:e.baseUrl)||this.config.baseUrl}/rest/api/2/jql/autocompletedata/suggestions?fieldName=labels`,headers:I(e.token||this.config.token)})).body.results.map(({displayName:s})=>({color:null,description:null,id:null,name:s}))}}async getComponentsForJiraProject(e,t={}){return await $e(this.config,e,t)}};var O="https://api.trello.com",Yr=1e3,es=r=>({id:r.id,username:r.username,url:r.url,name:r.fullName,email:r.email,avatarUrl:r.avatarUrl}),ts=(r,n)=>{let e=new Date(1e3*parseInt(r.id.substring(0,8),16));return{id:r.id,commentCount:r.badges.comments,number:r.idShort.toString(),title:r.name,url:r.url,closedDate:null,createdDate:new Date(e.toISOString()),author:null,updatedDate:new Date(r.dateLastActivity),assignees:r.members.map(t=>({id:t.id,username:t.username,name:t.fullName,email:null,avatarUrl:t.avatarUrl,url:null})),description:null,state:n[r.idList??""]?{id:r.idList,name:n[r.idList].name,color:null}:null,type:null,repository:null,upvoteCount:r.badges.votes,labels:r.labels.map(t=>({color:t.color,description:null,id:t.id,name:t.name}))}},ne=class extends ${async getCurrentUser(n,e={}){let t=await this.config.request({url:`${e.baseUrl||O}/1/members/me?key=${n.appKey}&token=${e.token||this.config.token}`,headers:I(e.token||this.config.token)});return{data:{name:t.body.fullName,email:t.body.email,avatarUrl:t.body.avatarHash?`https://trello-members.s3.amazonaws.com/${t.body.id}/${t.body.avatarHash}/50.png`:null,id:t.body.id,username:t.body.username,url:t.body.url}}}async getBoardsForCurrentUser(n,e={}){return{data:(await this.config.request({url:`${e.baseUrl||O}/1/members/me/boards?fields=name&key=${n.appKey}&token=${e.token||this.config.token}&filter=open`,headers:I(e.token||this.config.token)})).body.map(s=>({id:s.id,name:s.name}))}}async getListsForTrelloBoard(n,e={}){let{appKey:t,boardId:s}=n;return{data:(await this.config.request({url:`${e.baseUrl||O}/1/boards/${s}/lists?key=${t}&token=${e.token||this.config.token}`,headers:I(e.token||this.config.token)})).body}}async getAccountForId(n,e={}){let{appKey:t,memberId:s}=n,o=await this.config.request({url:`${e.baseUrl||O}/1/members/${s}/?key=${t}&token=${e.token||this.config.token}`});return{data:es(o.body)}}async getAccountsForTrelloBoard(n,e={}){let{appKey:t,boardId:s}=n;return{data:(await this.config.request({url:`${e.baseUrl||O}/1/boards/${s}/members?key=${t}&token=${e.token||this.config.token}`,headers:I(e.token||this.config.token)})).body.map(a=>({id:a.id,name:a.fullName,username:a.username,email:null,avatarUrl:null,url:null}))}}async getIssuesForBoard(n,e={}){let t=["-is:archived","sort:edited"],{appKey:s,boardId:o,filterText:a,assigneeLogins:i,labelNamesOrColors:u,trelloBoardListsById:l}=n||{};i&&t.push("@me"),u&&u.forEach(c=>t.push(`label:"${c}"`));let p=`${a?`${a}`:""}${t.join(" ")} board:${o}`;return{data:(await this.config.request({url:`${e.baseUrl||O}/1/search?key=${s}&query=${p}&cards_limit=${Yr}&token=${e.token||this.config.token}&card_members=true`,headers:I(e.token||this.config.token)})).body.cards.map(c=>ts(c,l||{}))}}async updateIssue(n,e,t,s){return await this.config.request({method:"PUT",url:`${s.baseUrl||O}/1/cards/${e.id}?key=${n}&token=${s.token||this.config.token}&${t}`,headers:I(s.token||this.config.token)})}async setIssueStatus(n,e={}){let{appKey:t,issue:s,status:o}=n;if(!o.id)throw new Error('Trello requires a status "id" for this function.');let a=`idList=${o.id}`;if(!(await this.updateIssue(t,s,a,e)).body.id)throw new Error("Could not set issue status")}async setIssueAssignees(n,e={}){let{appKey:t,issue:s,assignees:o}=n,a=o.map(l=>l.id),i=`idMembers=${encodeURIComponent(a.join(","))}`;if(!(await this.updateIssue(t,s,i,e)).body.id)throw new Error("Could not set issue status")}async setIssueLabels(n,e={}){let{appKey:t,issue:s,labels:o}=n,a=o.map(u=>u.id).join(",");if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||O}/1/cards/${s.id}?key=${t}&token=${e.token||this.config.token}&idLabels=${encodeURIComponent(a)}`,headers:I(e.token||this.config.token)})).body.id)throw new Error("Could not set issue status")}async setIssueArchived(n,e={}){let{appKey:t,issue:s,archived:o}=n;if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||O}/1/cards/${s.id}?key=${t}&token=${e.token||this.config.token}&closed=${o}`,headers:I(e.token||this.config.token)})).body.id)throw new Error("Could not update issue archived status")}async archiveIssue(n,e={}){await this.setIssueArchived({...n,archived:!0},e)}async unArchiveIssue(n,e={}){await this.setIssueArchived({...n,archived:!1},e)}async getLabelsForBoard(n,e={}){let{appKey:t,boardId:s}=n;return{data:(await this.config.request({url:`${e.baseUrl||O}/1/boards/${s}/labels?key=${t}&token=${e.token||this.config.token}`,headers:I(e.token||this.config.token)})).body.map(a=>({color:a.color,description:null,id:a.id,name:a.name}))}}};var Gt=r=>{let n={request:r==null?void 0:r.request};return{azureDevOps:new J({...n,...r==null?void 0:r.azureDevOps}),bitbucket:new K({...n,...r==null?void 0:r.bitbucket}),bitbucketServer:new V({...n,...r==null?void 0:r.bitbucketServer}),github:new Y({...n,...r==null?void 0:r.github}),gitlab:new te({...n,...r==null?void 0:r.gitlab}),jira:new re({...n,...r==null?void 0:r.jira}),jiraServer:new se({...n,...r==null?void 0:r.jiraServer}),trello:new ne({...n,...r==null?void 0:r.trello})}};var Tt=(a=>(a.Conflicts="conflicts",a.Failure="failure",a.NotSet="notSet",a.Queued="queued",a.RejectedByPolicy="rejectedByPolicy",a.Succeeded="succeeded",a))(Tt||{});var Ot=(e=>(e.Zero="0",e.One="1",e))(Ot||{}),xt=(e=>(e.PullRequest="pr",e.Issue="issue",e))(xt||{}),kt=(p=>(p.Azure="azure",p.Github="github",p.GithubEnterprise="githubEnterprise",p.Gitlab="gitlab",p.GitlabSelfHosted="gitlabSelfHosted",p.Bitbucket="bitbucket",p.BitbucketServer="bitbucketServer",p.Jira="jira",p.JiraServer="jiraServer",p.Trello="trello",p))(kt||{});var Nt=(e=>(e.Completed="COMPLETED",e.NotPlanned="NOT_PLANNED",e))(Nt||{});var rs=Gt;
1122
+ `,variables:{fullPath:`${t}/${n}`,after:o}},e);return{pageInfo:((l=(u=(i=a.body.data)==null?void 0:i.project)==null?void 0:u.labels)==null?void 0:l.pageInfo)??{endCursor:null,hasNextPage:!1},data:((g=(c=(d=(p=a.body.data)==null?void 0:p.project)==null?void 0:d.labels)==null?void 0:c.nodes)==null?void 0:g.map(ot))??[]}}async getTreeForRepo(s,e={}){let t=j(s.repo),n=new URL(s.cursor??`${Pe(this.config,e)}/projects/${encodeURIComponent(t)}/repository/tree`);n.searchParams.set("per_page","10000"),n.searchParams.set("recursive","true"),n.searchParams.set("pagination","keyset"),n.searchParams.set("ref",s.branch);let o=await this.config.request({url:n.toString(),headers:R(e.token||this.config.token)}),a=o.headers.link;return{data:o.body.map(Hr),pageInfo:{endCursor:a?a.substring(1,a.indexOf(">")):null,hasNextPage:!!a}}}};var Xr="https://api.atlassian.com/ex/jira",ve=100,it=["assignee","comment","summary","created","creator","updated","votes","issuetype","status","labels","components","project","fixVersions","description"],xt="/rest/api/2/search/jql",kt="/rest/api/2/search",ut=(r,s,e,t)=>{var i,u,l,p;let n=r.fields.assignee,o=!t,a=(r.fields[(s==null?void 0:s.Sprint)??""]??[]).filter(d=>typeof d=="object");return{id:r.id,commentCount:r.fields.comment.comments.length,number:r.key,title:r.fields.summary,url:e?`${e}/browse/${r.key}`:null,closedDate:null,createdDate:new Date(r.fields.created),author:qe(r.fields.creator,e,o),updatedDate:new Date(r.fields.updated),assignees:n?[qe(n,e,o)]:[],description:r.fields.description,repository:null,project:{name:r.fields.project.name,resourceId:t??null,key:r.fields.project.key,namespace:null,id:r.fields.project.id},state:ts(r.fields.status),statusTransitions:((i=r.transitions)==null?void 0:i.map(Zr))??[],components:((u=r.fields.components)==null?void 0:u.map(Yr))??[],type:r.fields.issuetype.name,upvoteCount:((l=r.fields.votes)==null?void 0:l.votes)||0,labels:((p=r.fields.labels)==null?void 0:p.map(d=>({color:null,description:null,id:null,name:d})))??[],sprints:a.map(rs),fixVersions:r.fields.fixVersions.map(ss)}},Zr=r=>{let s;switch(r.to.statusCategory.name){case"To Do":s="TO_DO";break;case"In Progress":s="IN_PROGRESS";break;default:s="DONE";break}return{name:r.name,id:r.id,to:{id:r.to.id,name:r.to.name,color:r.to.statusCategory.colorName,category:s}}},Yr=r=>({description:r.description??null,id:r.id,name:r.name}),es=(r,s,e)=>e&&r.name?`${s}/secure/ViewProfile.jspa?name=${encodeURIComponent(r.name)}`:`${s}/jira/people/${r.accountId}`,qe=(r,s,e)=>({id:(e?r.key:r.accountId)??"",name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrls["48x48"],username:r.displayName,url:es(r,s,e)}),ts=r=>{let s;switch(r.statusCategory.name){case"To Do":s="TO_DO";break;case"In Progress":s="IN_PROGRESS";break;default:s="DONE";break}return{id:r.id,name:r.name,color:r.statusCategory.colorName,category:s}},rs=r=>({id:r.id.toString(),name:r.name,isActive:r.state==="active",startDate:r.startDate?new Date(r.startDate):null,endDate:r.endDate?new Date(r.endDate):null,completedDate:r.completeDate?new Date(r.completeDate):null}),ss=r=>({id:r.id,description:r.description,name:r.name,archived:r.archived,released:r.released,releaseDate:r.releaseDate?new Date(r.releaseDate):null}),M=(r,s,e)=>e?`${s.baseUrl||Xr}/${e}`:`${(s==null?void 0:s.baseUrl)||r.baseUrl}`,Ee=async(r,s,e={})=>{let{resourceId:t}=s;return(await r.request({url:`${M(r,e,t)}/rest/api/2/field`,headers:R(e.token||r.token)})).body},Ce=async(r,s,e,t={})=>{let{number:n,resourceId:o,fields:a}=s||{},i=await r.request({url:`${M(r,t,o)}/rest/api/2/issue/${n}?fields=${it.join(",")}&expand=transitions`,headers:R(t.token||r.token)});return{data:ut(i.body,a,e,o)}},De=async(r,s,e,t={})=>{let{cursor:n,resourceId:o,labelNames:a,fields:i}=s||{},u=["statusCategory != Done",`(creator = currentUser() OR assignee = currentUser()
1123
+ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUser())`];a&&a.forEach(w=>u.push(`labels = "${w}"`));let l=`${u.join(" AND ")} ORDER BY updated DESC`,p=!o,d=p?kt:xt,c=new URL(`${M(r,t,o)}${d}`);c.searchParams.set("jql",l),c.searchParams.set("maxResults",ve.toString()),c.searchParams.set("fields",it.join(",")),c.searchParams.set("expand","transitions"),n&&(p?c.searchParams.set("startAt",n):c.searchParams.set("nextPageToken",n));let g=await r.request({url:c.toString(),headers:R(t.token||r.token)}),m=g.body.issues.map(w=>ut(w,i,e,o)),h=!1,I="";return p?(h=m.length==ve,I=(parseInt(n??"0",10)+m.length).toString()):(h=!!g.body.nextPageToken,I=g.body.nextPageToken??null),{data:m,pageInfo:{hasNextPage:h,endCursor:I}}},Nt=async(r,s,e,t={})=>{let{cursor:n,resourceId:o,jql:a,fields:i}=s||{},u=[...it],l=i==null?void 0:i.Sprint;l&&u.push(l);let p=!o,d=p?kt:xt,c=new URL(`${M(r,t,o)}${d}`);c.searchParams.set("jql",a.join(" AND ")),c.searchParams.set("maxResults",ve.toString()),c.searchParams.set("fields",u.join(",")),c.searchParams.set("expand","transitions"),n&&(p?c.searchParams.set("startAt",n):c.searchParams.set("nextPageToken",n));let g=await r.request({url:c.toString(),headers:R(t.token||r.token)}),m=g.body.issues.map(w=>ut(w,i,e,o)),h=!1,I="";return p?(h=m.length==ve,I=(parseInt(n??"0",10)+m.length).toString()):(h=!!g.body.nextPageToken,I=g.body.nextPageToken??null),{data:m,pageInfo:{hasNextPage:h,endCursor:I}}},Le=async(r,s,e,t={})=>{let{assigneeLogins:n,authorLogin:o,mentionLogin:a,labelNames:i,cursor:u,projectKey:l,resourceId:p,fields:d}=s||{},c=[`project = "${l}"`,"statusCategory != Done"];return o&&c.push(`creator in ("${o}")`),n&&n.length!==0&&c.push(`assignee in ("${n.join('", "')}")`),a&&c.push(`comment ~ "${a}"`),i&&i.forEach(g=>c.push(`labels = "${g}"`)),Nt(r,{resourceId:p,jql:c,cursor:u,fields:d},e,t)},Ue=async(r,s,e,t={})=>{let{assigneeLogins:n,authorLogin:o,mentionLogin:a,labelNames:i,cursor:u,projectKeys:l,resourceId:p,fields:d}=s||{},g=["("+l.map(m=>`project = "${m}"`).join(" OR ")+")","statusCategory != Done"];return o&&g.push(`creator in ("${o}")`),n&&n.length!==0&&g.push(`assignee in ("${n.join('", "')}")`),a&&g.push(`comment ~ "${a}"`),i&&i.forEach(m=>g.push(`labels = "${m}"`)),Nt(r,{resourceId:p,jql:g,fields:d,cursor:u},e,t)},$e=async(r,s,e={})=>{let{issue:t,labels:n}=s;if(!t.project)throw new Error('Jira requires a "project" for this function.');let o={fields:{labels:n.map(a=>a.name)}};await r.request({method:"PUT",url:`${M(r,e,t.project.resourceId??void 0)}/rest/api/2/issue/${t.id}`,body:JSON.stringify(o),headers:{...R(e.token||r.token),"Content-Type":"application/json"}})},Ae=async(r,s,e={})=>{let{issue:t,components:n}=s;if(!t.project)throw new Error('Jira requires a "project" for this function.');let o={fields:{components:n.map(a=>({id:a.id}))}};await r.request({method:"PUT",url:`${M(r,e,t.project.resourceId??void 0)}/rest/api/2/issue/${t.id}`,body:JSON.stringify(o),headers:{...R(e.token||r.token),"Content-Type":"application/json"}})},Ge=async(r,s,e={})=>{let{issue:t,status:n}=s;if(!t.project)throw new Error('Jira requires a "project" for this function.');if(!n.id)throw new Error('Jira requires a status "id" for this function.');let o={transition:{id:n.id}};await r.request({method:"POST",url:`${M(r,e,t.project.resourceId??void 0)}/rest/api/2/issue/${t.id}/transitions`,body:JSON.stringify(o),headers:{...R(e.token||r.token),"Content-Type":"application/json"}})},Te=async(r,s,e={})=>{let{resourceId:t,projectIdOrKey:n}=s,o=new URL(`${M(r,e,t)}/rest/api/2/project/${n}/components`);return{data:(await r.request({url:o.toString(),headers:R(e.token||r.token)})).body}};var ie="https://api.atlassian.com/ex/jira",lt=100,se=class extends T{constructor(){super(...arguments);this._resourceUrlCache={};this._issueFieldsCache={}}async getIssueFieldsForResource(e,t={}){if(!this._issueFieldsCache[e.resourceId]){let n=await Ee(this.config,e,t);this._issueFieldsCache[e.resourceId]=n.reduce((o,a)=>({...o,[a.name]:a.id}),{})}return this._issueFieldsCache[e.resourceId]??null}async getResourceUrl(e,t={}){var a;let n=t.token||this.config.token;if(!n)return null;let o=this._resourceUrlCache[n];return o?o[e.resourceId]??null:(await this.getJiraResourcesForCurrentUser(t),((a=this._resourceUrlCache[n])==null?void 0:a[e.resourceId])??null)}async getCurrentUserForResource(e,t={}){let n=await this.getResourceUrl({resourceId:e.resourceId},t),o=await this.config.request({url:`${t.baseUrl||ie}/${e.resourceId}/rest/api/2/myself`,headers:R(t.token||this.config.token)});return{data:{name:o.body.displayName,email:o.body.emailAddress,avatarUrl:o.body.avatarUrls["48x48"],id:o.body.accountId,username:o.body.displayName,url:n?`${n}/jira/people/${o.body.accountId}`:null}}}async getJiraResourcesForCurrentUser(e={}){let t=await this.config.request({url:`${e.baseUrl||"https://api.atlassian.com/"}/oauth/token/accessible-resources`,headers:R(e.token||this.config.token)}),n=e.token||this.config.token,o=n?this._resourceUrlCache[n]||{}:void 0,a=t.body.map(i=>(o&&(o[i.id]=i.url),{avatarUrl:i.avatarUrl,id:i.id,name:i.name,url:i.url}));return n&&(this._resourceUrlCache[n]=o),{data:a}}async getJiraProjectsForResource(e,t={}){let n=new URL(`${t.baseUrl||ie}/${e.resourceId}/rest/api/2/project/search`);n.searchParams.set("maxResults",lt.toString()),e.cursor&&n.searchParams.set("startAt",e.cursor);let o=await this.config.request({url:n.toString(),headers:R(t.token||this.config.token)});return{pageInfo:{hasNextPage:o.body.values.length!==0,endCursor:(o.body.startAt+o.body.values.length).toString()},data:o.body.values.map(a=>({id:a.id,key:a.key,name:a.name,resourceId:e.resourceId}))}}async getJiraProjectsForResources(e,t={}){let n=[];return await Promise.all(e.resourceIds.map(async o=>{try{return await Rt(a=>this.getJiraProjectsForResource({resourceId:o,cursor:a},t))}catch{return[]}})).then((...o)=>{o.forEach(a=>{n=n.concat(...a)})}),{data:n}}async getAccountsForJiraProject(e,t={}){let{resourceId:n,projectKey:o,cursor:a}=e,i=await this.getResourceUrl({resourceId:n},t),u=new URL(`${t.baseUrl||ie}/${n}/rest/api/2/user/assignable/search`);u.searchParams.set("maxResults",lt.toString()),a&&u.searchParams.set("startAt",a),u.searchParams.set("project",o);let l=await this.config.request({url:u.toString(),headers:R(t.token||this.config.token)});return{pageInfo:{hasNextPage:l.body.length!==0,endCursor:((a?parseInt(a):0)+l.body.length).toString()},data:l.body.filter(p=>p.accountType!=="app"&&p.active).map(p=>qe(p,i,!1))}}async getComponentsForJiraProject(e,t={}){return await Te(this.config,e,t)}async getIssue(e,t={}){let n=await this.getIssueFieldsForResource({resourceId:e.resourceId},t),o=await this.getResourceUrl({resourceId:e.resourceId},t);return await Ce(this.config,{...e,fields:n},o,t)}async getIssuesForProject(e,t={}){let n=await this.getIssueFieldsForResource({resourceId:e.resourceId},t),o=await this.getResourceUrl({resourceId:e.resourceId},t);return await Le(this.config,{...e,fields:n},o,t)}async getIssuesForProjects(e,t={}){let n=await this.getIssueFieldsForResource({resourceId:e.resourceId},t),o=await this.getResourceUrl({resourceId:e.resourceId},t);return await Ue(this.config,{...e,fields:n},o,t)}async getIssuesForResourceForCurrentUser(e,t={}){let n=await this.getIssueFieldsForResource({resourceId:e.resourceId},t),o=await this.getResourceUrl({resourceId:e.resourceId},t);return await De(this.config,{...e,fields:n},o,t)}async setIssueStatus(e,t={}){await Ge(this.config,e,t)}async setIssueAssignee(e,t={}){let{issue:n,assignee:o}=e;if(!n.project)throw new Error('Jira Cloud requires a "project" for this function.');if(!n.project.resourceId)throw new Error('Jira Cloud requires a project "resourceId" for this function.');let a={accountId:o==null?void 0:o.id};await this.config.request({method:"PUT",url:`${t.baseUrl||ie}/${n.project.resourceId}/rest/api/2/issue/${n.id}/assignee`,body:JSON.stringify(a),headers:{...R(t.token||this.config.token),"Content-Type":"application/json"}})}async setIssueComponents(e,t={}){await Ae(this.config,e,t)}async setIssueLabels(e,t={}){await $e(this.config,e,t)}async getLabelsForResource(e,t={}){let{resourceId:n,cursor:o}=e,a=new URL(`${t.baseUrl||ie}/${n}/rest/api/2/label`);a.searchParams.set("maxResults",lt.toString()),o&&a.searchParams.set("startAt",o);let i=await this.config.request({url:a.toString(),headers:R(t.token||this.config.token)});return{pageInfo:{hasNextPage:!i.body.isLast,endCursor:(i.body.startAt+i.body.values.length).toString()},data:i.body.values.map(u=>({color:null,description:null,id:null,name:u}))}}};var ne=class extends x{constructor(){super(...arguments);this._issueFieldsCache={}}async getIssueFieldsForResource(e={}){let t=(e==null?void 0:e.baseUrl)||this.config.baseUrl||"";if(!this._issueFieldsCache[t]){let n=await Ee(this.config,{},e);this._issueFieldsCache[t]=n.reduce((o,a)=>({...o,[a.name]:a.id}),{})}return this._issueFieldsCache[t]??null}async getCurrentUser(e={}){let t=await this.config.request({url:`${(e==null?void 0:e.baseUrl)||this.config.baseUrl}/rest/api/2/myself`,headers:R((e==null?void 0:e.token)||this.config.token)});return{data:{name:t.body.displayName,email:t.body.emailAddress,avatarUrl:t.body.avatarUrls["48x48"],id:t.body.key,username:t.body.displayName,url:null}}}async getJiraProjects(e={}){return{data:(await this.config.request({url:`${(e==null?void 0:e.baseUrl)||this.config.baseUrl}/rest/api/2/project`,headers:R((e==null?void 0:e.token)||this.config.token)})).body.map(n=>({id:n.id,name:n.name}))}}async getIssue(e,t={}){let n=e.resourceUrl||t.baseUrl||this.config.baseUrl;if(!n)throw new Error('Jira Server requires a "resourceUrl" or "baseUrl" for this function.');let o=await this.getIssueFieldsForResource(t);return await Ce(this.config,{...e,fields:o},n,t)}async getIssuesForProject(e,t={}){let n=e.resourceUrl||t.baseUrl||this.config.baseUrl;if(!n)throw new Error('Jira Server requires a "resourceUrl" or "baseUrl" for this function.');let o=await this.getIssueFieldsForResource(t);return await Le(this.config,{...e,fields:o},n,t)}async getIssuesForProjects(e,t={}){let n=e.resourceUrl||t.baseUrl||this.config.baseUrl;if(!n)throw new Error('Jira Server requires a "resourceUrl" or "baseUrl" for this function.');let o=await this.getIssueFieldsForResource(t);return await Ue(this.config,{...e,fields:o},n,t)}async getIssuesForResourceForCurrentUser(e,t={}){let n=e.resourceUrl||t.baseUrl||this.config.baseUrl;if(!n)throw new Error('Jira Server requires a "resourceUrl" or "baseUrl" for this function.');let o=await this.getIssueFieldsForResource(t);return await De(this.config,{...e,fields:o},n,t)}async setIssueStatus(e,t={}){await Ge(this.config,e,t)}async setIssueLabels(e,t={}){await $e(this.config,e,t)}async setIssueComponents(e,t={}){await Ae(this.config,e,t)}async getLabels(e={}){return{data:(await this.config.request({url:`${(e==null?void 0:e.baseUrl)||this.config.baseUrl}/rest/api/2/jql/autocompletedata/suggestions?fieldName=labels`,headers:R(e.token||this.config.token)})).body.results.map(({displayName:n})=>({color:null,description:null,id:null,name:n}))}}async getComponentsForJiraProject(e,t={}){return await Te(this.config,e,t)}};var k="https://api.trello.com",ns=1e3,os=r=>({id:r.id,username:r.username,url:r.url,name:r.fullName,email:r.email,avatarUrl:r.avatarUrl}),as=(r,s)=>{let e=new Date(1e3*parseInt(r.id.substring(0,8),16));return{id:r.id,commentCount:r.badges.comments,number:r.idShort.toString(),title:r.name,url:r.url,closedDate:null,createdDate:new Date(e.toISOString()),author:null,updatedDate:new Date(r.dateLastActivity),assignees:r.members.map(t=>({id:t.id,username:t.username,name:t.fullName,email:null,avatarUrl:t.avatarUrl,url:null})),description:null,state:s[r.idList??""]?{id:r.idList,name:s[r.idList].name,color:null}:null,type:null,repository:null,upvoteCount:r.badges.votes,labels:r.labels.map(t=>({color:t.color,description:null,id:t.id,name:t.name}))}},oe=class extends T{async getCurrentUser(s,e={}){let t=await this.config.request({url:`${e.baseUrl||k}/1/members/me?key=${s.appKey}&token=${e.token||this.config.token}`,headers:R(e.token||this.config.token)});return{data:{name:t.body.fullName,email:t.body.email,avatarUrl:t.body.avatarHash?`https://trello-members.s3.amazonaws.com/${t.body.id}/${t.body.avatarHash}/50.png`:null,id:t.body.id,username:t.body.username,url:t.body.url}}}async getBoardsForCurrentUser(s,e={}){return{data:(await this.config.request({url:`${e.baseUrl||k}/1/members/me/boards?fields=name&key=${s.appKey}&token=${e.token||this.config.token}&filter=open`,headers:R(e.token||this.config.token)})).body.map(n=>({id:n.id,name:n.name}))}}async getListsForTrelloBoard(s,e={}){let{appKey:t,boardId:n}=s;return{data:(await this.config.request({url:`${e.baseUrl||k}/1/boards/${n}/lists?key=${t}&token=${e.token||this.config.token}`,headers:R(e.token||this.config.token)})).body}}async getAccountForId(s,e={}){let{appKey:t,memberId:n}=s,o=await this.config.request({url:`${e.baseUrl||k}/1/members/${n}/?key=${t}&token=${e.token||this.config.token}`});return{data:os(o.body)}}async getAccountsForTrelloBoard(s,e={}){let{appKey:t,boardId:n}=s;return{data:(await this.config.request({url:`${e.baseUrl||k}/1/boards/${n}/members?key=${t}&token=${e.token||this.config.token}`,headers:R(e.token||this.config.token)})).body.map(a=>({id:a.id,name:a.fullName,username:a.username,email:null,avatarUrl:null,url:null}))}}async getIssuesForBoard(s,e={}){let t=["-is:archived","sort:edited"],{appKey:n,boardId:o,filterText:a,assigneeLogins:i,labelNamesOrColors:u,trelloBoardListsById:l}=s||{};i&&t.push("@me"),u&&u.forEach(c=>t.push(`label:"${c}"`));let p=`${a?`${a}`:""}${t.join(" ")} board:${o}`;return{data:(await this.config.request({url:`${e.baseUrl||k}/1/search?key=${n}&query=${p}&cards_limit=${ns}&token=${e.token||this.config.token}&card_members=true`,headers:R(e.token||this.config.token)})).body.cards.map(c=>as(c,l||{}))}}async updateIssue(s,e,t,n){return await this.config.request({method:"PUT",url:`${n.baseUrl||k}/1/cards/${e.id}?key=${s}&token=${n.token||this.config.token}&${t}`,headers:R(n.token||this.config.token)})}async setIssueStatus(s,e={}){let{appKey:t,issue:n,status:o}=s;if(!o.id)throw new Error('Trello requires a status "id" for this function.');let a=`idList=${o.id}`;if(!(await this.updateIssue(t,n,a,e)).body.id)throw new Error("Could not set issue status")}async setIssueAssignees(s,e={}){let{appKey:t,issue:n,assignees:o}=s,a=o.map(l=>l.id),i=`idMembers=${encodeURIComponent(a.join(","))}`;if(!(await this.updateIssue(t,n,i,e)).body.id)throw new Error("Could not set issue status")}async setIssueLabels(s,e={}){let{appKey:t,issue:n,labels:o}=s,a=o.map(u=>u.id).join(",");if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||k}/1/cards/${n.id}?key=${t}&token=${e.token||this.config.token}&idLabels=${encodeURIComponent(a)}`,headers:R(e.token||this.config.token)})).body.id)throw new Error("Could not set issue status")}async setIssueArchived(s,e={}){let{appKey:t,issue:n,archived:o}=s;if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||k}/1/cards/${n.id}?key=${t}&token=${e.token||this.config.token}&closed=${o}`,headers:R(e.token||this.config.token)})).body.id)throw new Error("Could not update issue archived status")}async archiveIssue(s,e={}){await this.setIssueArchived({...s,archived:!0},e)}async unArchiveIssue(s,e={}){await this.setIssueArchived({...s,archived:!1},e)}async getLabelsForBoard(s,e={}){let{appKey:t,boardId:n}=s;return{data:(await this.config.request({url:`${e.baseUrl||k}/1/boards/${n}/labels?key=${t}&token=${e.token||this.config.token}`,headers:R(e.token||this.config.token)})).body.map(a=>({color:a.color,description:null,id:a.id,name:a.name}))}}};var Ft=r=>{let s={request:r==null?void 0:r.request};return{azureDevOps:new K({...s,...r==null?void 0:r.azureDevOps}),bitbucket:new V({...s,...r==null?void 0:r.bitbucket}),bitbucketServer:new X({...s,...r==null?void 0:r.bitbucketServer}),github:new ee({...s,...r==null?void 0:r.github}),gitlab:new re({...s,...r==null?void 0:r.gitlab}),jira:new se({...s,...r==null?void 0:r.jira}),jiraServer:new ne({...s,...r==null?void 0:r.jiraServer}),trello:new oe({...s,...r==null?void 0:r.trello})}};var Qt=(a=>(a.Conflicts="conflicts",a.Failure="failure",a.NotSet="notSet",a.Queued="queued",a.RejectedByPolicy="rejectedByPolicy",a.Succeeded="succeeded",a))(Qt||{});var _t=(e=>(e.Zero="0",e.One="1",e))(_t||{}),Bt=(e=>(e.PullRequest="pr",e.Issue="issue",e))(Bt||{}),jt=(p=>(p.Azure="azure",p.Github="github",p.GithubEnterprise="githubEnterprise",p.Gitlab="gitlab",p.GitlabSelfHosted="gitlabSelfHosted",p.Bitbucket="bitbucket",p.BitbucketServer="bitbucketServer",p.Jira="jira",p.JiraServer="jiraServer",p.Trello="trello",p))(jt||{});var Mt=(e=>(e.Completed="COMPLETED",e.NotPlanned="NOT_PLANNED",e))(Mt||{});var is=Ft;