@gitkraken/provider-apis 0.25.7 → 0.25.8

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.
@@ -0,0 +1,1104 @@
1
+ "use strict";var kt=Object.create;var ne=Object.defineProperty;var Nt=Object.getOwnPropertyDescriptor;var Ft=Object.getOwnPropertyNames;var Qt=Object.getPrototypeOf,_t=Object.prototype.hasOwnProperty;var Bt=(r,s)=>{for(var e in s)ne(r,e,{get:s[e],enumerable:!0})},nt=(r,s,e,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let n of Ft(s))!_t.call(r,n)&&n!==e&&ne(r,n,{get:()=>s[n],enumerable:!(t=Nt(s,n))||t.enumerable});return r};var jt=(r,s,e)=>(e=r!=null?kt(Qt(r)):{},nt(s||!r||!r.__esModule?ne(e,"default",{value:r,enumerable:!0}):e,r)),Mt=r=>nt(ne({},"__esModule",{value:!0}),r);var Wr={};Bt(Wr,{AzureDevOps:()=>W,Bitbucket:()=>J,BitbucketServer:()=>K,EntityIdentifierProviderType:()=>Tt,EntityType:()=>Gt,EntityVersion:()=>At,GitBuildStatusStage:()=>ot,GitBuildStatusState:()=>oe,GitDiffLineType:()=>Le,GitHub:()=>V,GitHubIssueCloseReason:()=>Ot,GitIssueState:()=>le,GitLab:()=>Z,GitMergeStrategy:()=>H,GitPullRequestMergeableState:()=>M,GitPullRequestReviewState:()=>j,GitPullRequestState:()=>B,Jira:()=>Y,JiraServer:()=>ee,PullRequestAsyncStatus:()=>$t,Trello:()=>te,default:()=>Hr,isFetch:()=>ae});module.exports=Mt(Wr);var ot=(n=>(n.Build="build",n.Production="production",n.Staging="staging",n.Test="test",n))(ot||{}),oe=(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))(oe||{}),H=(o=>(o.MergeCommit="MERGE_COMMIT",o.Rebase="REBASE",o.RebaseThenMergeCommit="REBASE_THEN_MERGE_COMMIT",o.FastForward="FAST_FORWARD",o.Squash="SQUASH",o))(H||{}),B=(t=>(t.Open="OPEN",t.Closed="CLOSED",t.Merged="MERGED",t))(B||{}),j=(n=>(n.Approved="APPROVED",n.ChangesRequested="CHANGES_REQUESTED",n.Commented="COMMENTED",n.ReviewRequested="REVIEW_REQUESTED",n))(j||{}),M=(i=>(i.Behind="BEHIND",i.Blocked="BLOCKED",i.Conflicts="CONFLICTS",i.Mergeable="MERGEABLE",i.Unknown="UNKNOWN",i.UnknownAndBlocked="UNKNOWN_AND_BLOCKED",i.Unstable="UNSTABLE",i))(M||{}),Le=(t=>(t.ADDED="ADDED",t.DELETED="DELETED",t.UNMODIFIED="UNMODIFIED",t))(Le||{});var at={APPROVED:0,COMMENTED:1,REVIEW_REQUESTED:2,CHANGES_REQUESTED:3},F=r=>!r||r.length===0?null:r.reduce((s,e)=>at[e.state]>at[s]?e.state:s,"APPROVED");var q=100;var it=jt(require("node-fetch")),ut=globalThis.fetch||it.default;var zt=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},$e=r=>async({url:s,...e})=>{let t=await r(s,e);return zt(t)};var ae=(r,s=!1)=>r.name==="fetch"||s;var D=class{constructor(s){let e=(s==null?void 0:s.request)||ut;this.config={...s,request:ae(e,s==null?void 0:s.forceIsFetch)?$e(e):e}}updateConfig(s){this.config={...this.config,...s,request:s.request&&ae(s.request,(s==null?void 0:s.forceIsFetch)??this.config.forceIsFetch)?$e(s.request):this.config.request}}},G=class extends D{};var I=(r,s)=>{let e={};return r&&(e.Authorization=`${s?"Basic":"Bearer"} ${r}`),e},lt=r=>r?r.reduce((s,e)=>(s[e]=!0,s),{}):void 0,Q=(r,s,e)=>!r||s.some(t=>r[t])?e:"",pt=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 w=(r,s={})=>I(s.token||r.token,s.isPAT||r.isPAT),dt=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 ct="https://app.vssps.visualstudio.com/_apis",v="https://dev.azure.com",Ht={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},Wt={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},Ae=r=>({id:r.id,name:r.displayName??null,username:(r.uniqueName||r.displayName)??null,email:null,avatarUrl:r.imageUrl??null,url:null}),ue=r=>r.startsWith("refs/heads/")?r.replace("refs/heads/",""):r,ie=(r,s)=>{var n;let e=[],t=[];return s.reviewers.forEach(o=>{let a={reviewer:Ae(o),state:Wt[o.vote??0]||"REVIEW_REQUESTED"};o.isRequired&&e.push(a),t.push(a)}),{id:s.pullRequestId.toString(),title:s.title,number:s.codeReviewId,state:Ht[s.status],isDraft:s.isDraft,commentCount:null,upvoteCount:null,author:Ae(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:ue(s.targetRefName),oid:s.lastMergeTargetCommit.commitId},headRef:{name:ue(s.sourceRefName),oid:s.lastMergeSourceCommit.commitId},url:dt(s),assignees:s.reviewers.map(Ae),reviews:t,reviewDecision:F(e),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN",labels:((n=s.labels)==null?void 0:n.map(o=>({color:null,description:null,id:o.id,name:o.name})))??[],permissions:null}},gt=(r,s)=>({id:s.id,name:s.name,namespace:r,project:s.project.name,webUrl:s.webUrl,httpsUrl:s.remoteUrl,sshUrl:s.sshUrl,defaultBranch:s.defaultBranch?{name:ue(s.defaultBranch)}:null,permission:null}),Jt=(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: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()})))??[]}},W=class extends D{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:`${ct}/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(s,e={}){let n=(await this.config.request({url:`${v}/${encodeURIComponent(s.namespace)}/_apis/ConnectionData`,headers:w(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:`${v}/${encodeURIComponent(s.repo.namespace)}/${encodeURIComponent(s.repo.project)}/_apis/git/repositories/${encodeURIComponent(s.repo.name)}/commits/${s.oid}`,headers:w(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:`${ct}/accounts?memberId=${s.userId}&api-version=6.0`,headers:w(this.config,e)})).body.value.map(n=>({id:n.accountId,name:n.accountName}))}}async getAzureProjects(s,e={}){let t=new URL(`${v}/${encodeURIComponent(s.namespace)}/_apis/projects`);t.searchParams.set("$top",q.toString()),s.cursor&&t.searchParams.set("$skip",s.cursor);let n=await this.config.request({url:t.toString(),headers:w(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:w(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: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(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:w(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:`${v}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/git/repositories/${encodeURIComponent(s.name)}`,headers:w(this.config,e)});return{data:gt(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:`${v}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/git/repositories`,headers:w(this.config,e)})).body.value.map(n=>gt(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(`${v}/${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",q.toString()),e.cursor&&n.searchParams.set("continuationToken",e.cursor);let o=await this.config.request({url:n.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:ue(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||v}/${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(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=>ie(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(ie(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}=s,l=a||1,p=new URL(`${e.baseUrl||v}/${encodeURIComponent(n)}/${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(s,e={}){let n=s.page||1,o=await this.getPullRequestsForProjectBase(s,e,100);return{pageInfo:{hasNextPage:o.body.value.length===100,nextPage:n+1},data:o.body.value.map(a=>ie(s.namespace,a))}}async getPullRequestsForProjects(s,e={}){let{projects:t}=s||{},n=[];return await Promise.all(t.map(async o=>{try{(await this.getPullRequestsForProjectBase({...o,...s},e)).body.value.forEach(i=>{n.push(ie(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||v}/${encodeURIComponent(t)}/${encodeURIComponent(n||"")}/_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(s,e,t){return await this.config.request({method:"PATCH",url:`${t.baseUrl||v}/${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:{...w(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||v}/${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(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||v}/${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:{...w(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||v}/${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:{...w(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||v}/${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:{...w(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(b=>d.push(`[System.Tags] Contains '${b}'`));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||v}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.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(b=>b.id);if(m.length==0)return{pageInfo:{hasNextPage:!1,nextPage:null},data:[]};let h=await this.config.request({url:`${e.baseUrl||v}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.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(b=>Jt(s.namespace,s.project,b,u||{}))}}async updateIssue(s,e,t={}){return await this.config.request({method:"PATCH",url:`${t.baseUrl||v}/${encodeURIComponent(s.project.namespace)}/${encodeURIComponent(s.project.name)}/_apis/wit/workitems/${s.id}?api-version=6.0`,body:JSON.stringify(e),headers:{...w(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||v}/${encodeURIComponent(t)}/${encodeURIComponent(n||"")}/_apis/wit/workitemtypes?api-version=6.0`,headers:{...w(this.config,e)}})).body.value}}async getLabelsForProject(s,e={}){let{namespace:t,project:n}=s;return{data:(await this.config.request({url:`${e.baseUrl||v}/${encodeURIComponent(t)}/${encodeURIComponent(n||"")}/_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,s={})=>I(s.token||r.token,s.isPAT||r.isPAT);var L="https://api.bitbucket.org/2.0",Kt={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},ht=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}),mt=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},permission:null}},Ge=r=>{let s=r.id;return{id:s.toString(),title:r.title,number:s,state:Kt[r.state],isDraft:!1,commentCount:r.comment_count,upvoteCount:null,author:ht(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}},J=class extends D{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:C(this.config,e)});return{data:ht(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:C(this.config,e)})).body.author,o=n.raw.match(/([^<]+)<(.+)>/);return{data:{name:o?o[1].trim():null,email:o?o[2]:null,avatarUrl:((a=n.user)==null?void 0:a.links.avatar.href)||null}}}async getRepo(s,e={}){let t=await this.config.request({url:`${L}/repositories/${s.namespace}/${s.name}`,headers:C(this.config,e)});return{data:mt(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",q.toString()),s.cursor&&t.searchParams.set("after",s.cursor);let n=await this.config.request({url:t.toString(),headers:C(this.config,e)}),o=!!n.body.next,a=null;return n.body.next&&(a=new URL(n.body.next).searchParams.get("after")),{pageInfo:{hasNextPage:o,endCursor:a},data:n.body.values.map(mt)}}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",q.toString());let n=await this.config.request({url:t.toString(),headers:C(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(i=>{let u=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:u,committedDate:u}}})}}async getTags(s,e={}){let t=new URL(`${L}/repositories/${s.repo.namespace}/${s.repo.name}/refs/tags`);t.searchParams.set("pagelen",q.toString()),s.cursor&&t.searchParams.set("page",s.cursor);let n=await this.config.request({url:t.toString(),headers:C(this.config,e)}),o=!!n.body.next,a=null;return n.body.next&&(a=new URL(n.body.next).searchParams.get("page")),{pageInfo:{hasNextPage:o,endCursor:a},data:n.body.values.map(i=>{let u=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:u,committedDate:u}}})}}async getPullRequestsForUser(s,e={}){var a;let t=new URL(`${L}/pullrequests/${s.userId}`);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:C(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(Ge)}}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:C(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(Ge(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(Ge(a))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:t}}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:C(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:{...C(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:{...C(this.config,e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not set pull request reviewers")}};var Oe=r=>({name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrl??null,id:r.id.toString(),username:r.name,url:r.links.self[0].href}),Te=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:Oe(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:Oe(r.author.user),assignees:null,reviews:t,reviewDecision:F(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}},ft=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,permission:null}},K=class extends G{getBaseUrl(s){let e=s.baseUrl||this.config.baseUrl;if(!e)throw new Error('Bitbucket Server requires "baseUrl"');return e}getRequestHeaders(s){return I(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:Oe(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:ft(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(ft)}}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(Te(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(Te(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(Te)}}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 St=require("js-base64");var le=(e=>(e.Open="OPEN",e.Closed="CLOSED",e))(le||{});var Vt={AS_CODE_OWNER:[3,0,0],CHECK_RUN:[3,0,0],LATEST_REVIEWS:[3,0,0],VIEWER_CAN_MERGE_AS_ADMIN:[3,5,0]},It=15,Rt=100,E=r=>!!r,pe=(r,s)=>{let e=Vt[s];for(let t=0;t<3;t++){if(r[t]>e[t])return!0;if(r[t]<e[t])return!1}return!0},ce="https://api.github.com",Xt=`${ce}/graphql`,ge=`
2
+ description
3
+ dueOn
4
+ id
5
+ number
6
+ state
7
+ title
8
+ url
9
+ `,Zt=`
10
+ ... on CheckRun {
11
+ completedAt
12
+ conclusion
13
+ name
14
+ status
15
+ permalink
16
+ startedAt
17
+ }
18
+ `,de=/\/api\/v\d+$/,me=`
19
+ color
20
+ description
21
+ id
22
+ name
23
+ `,bt=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.")},Yt=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),bt(e),de.test(e)&&(e=e.replace(de,"")),`${e}/api/graphql`):Xt},re=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),bt(e),de.test(e)&&(e=e.replace(de,"")),`${e}/api/v3`):ce},R=(r,s,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:Yt(r,e),method:"POST",headers:t,body:JSON.stringify(s)})},er={user:!0,"user:email":!0,"read:user":!0},x=r=>r.some(s=>er[s]),U=(r=!1,s=!1,e)=>`
24
+ __typename
25
+ ${Q(e,["graphQLId"],"id")}
26
+ ${Q(e,["id"],"databaseId")}
27
+ ${Q(e,["name"],"name")}
28
+ ${Q(e,["name","username"],"login")}
29
+ ${s?Q(e,["email"],"email"):""}
30
+ ${Q(e,["avatarUrl"],`avatarUrl${r?"(size: $avatarSize)":""}`)}
31
+ ${Q(e,["url"],"url")}
32
+ `,tr=(r=!1)=>`
33
+ latestReviews(first: 100) {
34
+ nodes {
35
+ author {
36
+ ... on User {
37
+ ${U(!1,r)}
38
+ }
39
+ }
40
+ state
41
+ }
42
+ }
43
+ `,yt=(r=!1)=>`
44
+ __typename
45
+ id
46
+ databaseId
47
+ login
48
+ avatarUrl${r?"(size: $avatarSize)":""}
49
+ url
50
+ `,he=(r,s=!1,e)=>`
51
+ id
52
+ databaseId
53
+ number
54
+ title
55
+ state
56
+ author {
57
+ ... on User {
58
+ ${U(!1,s)}
59
+ }
60
+ ... on Bot {
61
+ ${yt(!1)}
62
+ }
63
+ }
64
+ commits(last: 1) {
65
+ totalCount
66
+ nodes {
67
+ commit {
68
+ ... on Commit {
69
+ oid
70
+ statusCheckRollup {
71
+ contexts(first: 100) {
72
+ totalCount
73
+ nodes {
74
+ ${!e||pe(e,"CHECK_RUN")?Zt:""}
75
+ ... on StatusContext {
76
+ context
77
+ createdAt
78
+ description
79
+ state
80
+ targetUrl
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ baseRef {
90
+ name
91
+ target {
92
+ oid
93
+ }
94
+ }
95
+ headRef {
96
+ name
97
+ target {
98
+ oid
99
+ }
100
+ }
101
+ repository {
102
+ id
103
+ databaseId
104
+ name
105
+ owner {
106
+ login
107
+ }
108
+ url
109
+ sshUrl
110
+ viewerPermission
111
+ }
112
+ headRepository {
113
+ id
114
+ databaseId
115
+ name
116
+ owner {
117
+ login
118
+ }
119
+ url
120
+ sshUrl
121
+ }
122
+ ${r?"isDraft":""}
123
+ url
124
+ createdAt
125
+ comments {
126
+ totalCount
127
+ }
128
+ reactions(content: THUMBS_UP) {
129
+ totalCount
130
+ }
131
+ updatedAt
132
+ closedAt
133
+ mergedAt
134
+ assignees(first: 100) {
135
+ nodes {
136
+ ${U(!1,s)}
137
+ }
138
+ }
139
+ reviewRequests(first: 100) {
140
+ nodes {
141
+ ${!e||pe(e,"AS_CODE_OWNER")?"asCodeOwner":""}
142
+ requestedReviewer {
143
+ ... on User {
144
+ ${U(!1,s)}
145
+ }
146
+ }
147
+ }
148
+ }
149
+ ${!e||pe(e,"LATEST_REVIEWS")?tr(s):""}
150
+ additions
151
+ deletions
152
+ changedFiles
153
+ mergeable
154
+ mergeStateStatus
155
+ milestone {
156
+ ${ge}
157
+ }
158
+ labels(first: 100) {
159
+ nodes {
160
+ ${me}
161
+ }
162
+ }
163
+ ${!e||pe(e,"VIEWER_CAN_MERGE_AS_ADMIN")?"viewerCanMergeAsAdmin":""}
164
+ `,rr=(r=!1)=>`
165
+ id
166
+ databaseId
167
+ title
168
+ author {
169
+ ... on User {
170
+ ${U(!1,r)}
171
+ }
172
+ ... on Bot {
173
+ ${yt(!1)}
174
+ }
175
+ }
176
+ closedAt
177
+ createdAt
178
+ number
179
+ updatedAt
180
+ url
181
+ reactions(content: THUMBS_UP) {
182
+ totalCount
183
+ }
184
+ repository {
185
+ databaseId
186
+ id
187
+ name
188
+ owner {
189
+ login
190
+ }
191
+ }
192
+ comments {
193
+ totalCount
194
+ }
195
+ assignees(first: 100) {
196
+ nodes {
197
+ ${U(!1,r)}
198
+ }
199
+ }
200
+ state
201
+ milestone {
202
+ ${ge}
203
+ }
204
+ labels(first: 100) {
205
+ nodes {
206
+ ${me}
207
+ }
208
+ }
209
+ `,sr={"-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"},nr=new RegExp('(([^\\s]+:)?\\"(?:[^\\"\\\\]|\\\\.)*\\"?)|([^\\"\\s]+)',"g"),xe=r=>{let s=[];return(r.match(nr)??[]).forEach(t=>{if(t.includes(":")&&t!="is:closed"){let n=t.split(":")[0];sr[n]&&s.push(t)}}),s},ke=(r,s,e,t)=>{let n=r==="issue";return{query:`
210
+ query SearchIssuesOrPullRequests($query: String! $after: String) {
211
+ search(type:ISSUE query:$query first: ${t.maxPageSize} after:$after) {
212
+ pageInfo {
213
+ hasNextPage
214
+ endCursor
215
+ }
216
+ nodes {
217
+ ... on ${n?"Issue":"PullRequest"} {
218
+ ${n?rr(t.supportsEmail):he(t.supportsDrafts??!1,t.supportsEmail,t.enterpriseVersion??null)}
219
+ }
220
+ }
221
+ }
222
+ }`,variables:{query:`is:${r} is:open ${t.includeFromArchivedRepos?"":"archived:false"} ${s}`,after:e}}},or="Field 'isDraft' doesn't exist on type 'PullRequest'",fe=(r=[])=>r.some(s=>(s==null?void 0:s.message)===or),ar=/@@ -(\d+)(?:,\d+ | )\+(\d+)(?:,\d+ | )@@(?:\\n)?/,ir=`
223
+ \
224
+ +`,wt=(r,s,e,t)=>{let n=ar.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
+ +`).split(`
226
+ `).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
+ `;break}case"+":{m="ADDED",l+=1,h=`${g.slice(1)}
228
+ `;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=s;if(d!==null&&c!==null&&t!==null&&d<c){let g=0,m=p.length,h=t==="LEFT"?"oldLineNumber":"newLineNumber";for(let b=0;b<p.length;b++){let f=p[b][h];f===d?g=b:f===c&&(m=b)}p=p.slice(g,m+1)}return p};var Ne=`
230
+ id
231
+ databaseId
232
+ owner {
233
+ login
234
+ }
235
+ name
236
+ url
237
+ sshUrl
238
+ defaultBranchRef {
239
+ name
240
+ }
241
+ viewerPermission
242
+ `,_e={__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"},ur={APPROVED:"APPROVED",CHANGES_REQUESTED:"CHANGES_REQUESTED",COMMENTED:"COMMENTED",REVIEW_REQUESTED:"REVIEW_REQUESTED"},lr={MERGEABLE:"MERGEABLE",CONFLICTING:"CONFLICTS",UNKNOWN:"UNKNOWN"},pr={BEHIND:"BEHIND",BLOCKED:"BLOCKED",UNKNOWN:"UNKNOWN_AND_BLOCKED",UNSTABLE:"UNSTABLE",CLEAN:null,DIRTY:null,DRAFT:null,HAS_HOOKS:null},dr={OPEN:"OPEN",CLOSED:"CLOSED"},cr=["ADMIN","MAINTAIN","TRIAGE","WRITE"],Be=r=>({color:`#${r.color}`,description:r.description,graphQLId:r.id,id:null,name:r.name}),Fe=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,permission:r.viewerPermission}),Pt=r=>{let s=null;return r.permissions.admin?s="ADMIN":r.permissions.maintain?s="MAINTAIN":r.permissions.push?s="WRITE":r.permissions.triage?s="TRIAGE":r.permissions.pull&&(s="READ"),{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},permission:s}},gr={OPEN:"OPEN",CLOSED:"CLOSED",MERGED:"MERGED"},mr={id:!0,graphQLId:!0,name:!0,username:!0,email:!0,avatarUrl:!0,url:!0},$=(r,s=mr)=>{let e={};return s.id&&(e.id=r.databaseId.toString()),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},hr=(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]},fr=r=>({ERROR:"ERROR",EXPECTED:"PENDING",FAILURE:"FAILED",PENDING:"PENDING",SUCCESS:"SUCCESS"})[r],Qe=r=>{var a,i,u,l,p,d,c,g,m,h,b,S;let s=null;r.author?s=(r.author.__typename==="Bot",r.author):s=_e;let e=(((a=r.reviewRequests)==null?void 0:a.nodes)||[]).filter(E).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:$(f.requestedReviewer),state:"REVIEW_REQUESTED"})).concat((((l=r.latestReviews)==null?void 0:l.nodes)||[]).filter(E).map(f=>{let P=_e;return f.author&&Object.keys(f.author).length>0&&(P=f.author),{reviewer:$(P),state:ur[f.state]}}));return{id:r.databaseId.toString(),graphQLId:r.id,title:r.title,number:r.number,state:gr[r.state],commentCount:r.comments.totalCount,upvoteCount:r.reactions.totalCount,author:s?$(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(E)[0])==null?void 0:d.commit.statusCheckRollup)==null?void 0:c.contexts.nodes)==null?void 0:g.filter(E).map(f=>"context"in f?{completedAt:null,description:f.description,name:f.context,state:fr(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:hr(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(E).map(f=>$(f)):null,reviews:o,reviewDecision:F(o),additions:r.additions,deletions:r.deletions,fileCount:r.changedFiles,commitCount:r.commits.totalCount,mergeableState:pr[r.mergeStateStatus]??lr[r.mergeable],milestone:r.milestone?je(r.milestone):null,labels:((S=(b=r.labels)==null?void 0:b.nodes)==null?void 0:S.filter(E).map(Be))??[],permissions:{canMerge:cr.includes(r.repository.viewerPermission),canMergeAndBypassProtections:r.viewerCanMergeAsAdmin??!1}}},Ir=r=>{var h,b;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:wt(i.diffHunk,n,o,a),id:p,isOutdated:e,isResolved:t,graphQLId:d,filename:c,replies:((b=s.nodes)==null?void 0:b.filter(E).slice(1).map(Rr))??[],url:m}},Rr=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}),br=r=>{var e,t,n;let s=null;return r.author?s=(r.author.__typename==="Bot",r.author):s=_e,{id:r.databaseId.toString(),graphQLId:r.id,number:r.number,title:r.title,author:$(s),commentCount:r.comments.totalCount,closedDate:r.closedAt?new Date(r.closedAt):null,createdDate:new Date(r.createdAt),description:null,state:{name:dr[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(E).map(o=>$(o)))??[],upvoteCount:r.reactions.totalCount,milestone:r.milestone?je(r.milestone):null,labels:((n=(t=r.labels)==null?void 0:t.nodes)==null?void 0:n.filter(E).map(Be))??[]}},je=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}),V=class extends G{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 R(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:`${re(this.config,e)}/meta`,headers:I(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(ce)?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=lt(e.fields),o=await this.getScopes(t),i=(u=(await R(this.config,{query:`
243
+ query getCurrentUser {
244
+ viewer {
245
+ ${U(!1,x(o),n)}
246
+ }
247
+ }
248
+ `},t)).body.data)==null?void 0:u.viewer;if(!i)throw new Error("Current user not found.");return{data:$(i,n)}}async getAccountsForRepo(e,t={}){var l,p,d,c,g,m;let n=await this.getScopes(t),{repo:{namespace:o,name:a},cursor:i}=e,u=await R(this.config,{query:`
249
+ query getAccountsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
250
+ repository(owner: $owner, name: $name) {
251
+ assignableUsers(first: $first, after: $cursor) {
252
+ nodes {
253
+ ${U(!1,x(n))}
254
+ }
255
+ pageInfo {
256
+ endCursor
257
+ hasNextPage
258
+ }
259
+ }
260
+ }
261
+ }
262
+ `,variables:{owner:o,name:a,cursor:i,first:q}},t);if(!u.body.data)throw new Error(((l=u.body.errors)==null?void 0:l[0].message)||u.statusText||"Unknown error");return{pageInfo:((d=(p=u.body.data.repository)==null?void 0:p.assignableUsers)==null?void 0:d.pageInfo)??{endCursor:null,hasNextPage:!1},data:((m=(g=(c=u.body.data.repository)==null?void 0:c.assignableUsers)==null?void 0:g.nodes)==null?void 0:m.map(h=>$(h)))??[]}}async getUserForCommit(e,t={}){var i,u;let o=(i=(await R(this.config,{query:`
263
+ query getUserForCommit(
264
+ $owner: String!
265
+ $name: String!
266
+ $oid: GitObjectID!
267
+ $avatarSize: Int
268
+ ) {
269
+ repository(owner: $owner, name: $name) {
270
+ object(oid: $oid) {
271
+ ... on Commit {
272
+ author {
273
+ name
274
+ email
275
+ avatarUrl(size: $avatarSize)
276
+ }
277
+ }
278
+ }
279
+ }
280
+ }
281
+ `,variables:{owner:e.repo.namespace,name:e.repo.name,oid:e.oid,avatarSize:e.avatarSize}},t)).body.data)==null?void 0:i.repository;if(!o)throw new Error("Repository not found.");let a=(u=o.object)==null?void 0:u.author;if(!a)throw new Error("Commit not found.");return{data:{name:a.name,email:a.email,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)}}}async createCommit(e,t={}){var p;let{commitMessage:n,deletedFiles:o,newOrModifiedFiles:a,repo:i,target:u}=e,l=await R(this.config,{query:`
282
+ mutation createCommitOnBranch(
283
+ $branchName: String!,
284
+ $expectedHeadOid: GitObjectID!,
285
+ $fileChanges: FileChanges!,
286
+ $message: CommitMessage!,
287
+ $repositoryNameWithOwner: String!,
288
+ ) {
289
+ createCommitOnBranch(input: {
290
+ branch: {
291
+ branchName: $branchName,
292
+ repositoryNameWithOwner: $repositoryNameWithOwner,
293
+ },
294
+ expectedHeadOid: $expectedHeadOid,
295
+ fileChanges: $fileChanges,
296
+ message: $message
297
+ }) {
298
+ commit {
299
+ authoredDate
300
+ committedDate
301
+ oid
302
+ }
303
+ ref {
304
+ name
305
+ }
306
+ }
307
+ }
308
+ `,variables:{branchName:u.name,expectedHeadOid:u.oid,fileChanges:{additions:Object.entries(a).map(([d,c])=>({contents:St.Base64.encode(c),path:d})),deletions:o.map(d=>({path:d}))},message:{body:n.description,headline:n.summary},repositoryNameWithOwner:`${i.namespace}/${i.name}`}},t);if((p=l.body.errors)!=null&&p[0])throw new Error(l.body.errors[0].message);if(!l.body.data)throw new Error("Could not create commit");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),a=(l=(u=(i=(await R(this.config,{query:`
309
+ query getAccountForEmail($query: String! $avatarSize: Int) {
310
+ search(query: $query, type: USER, first: 1) {
311
+ nodes {
312
+ ... on User {
313
+ ${U(!0,x(n))}
314
+ }
315
+ }
316
+ }
317
+ }
318
+ `,variables:{query:`in:email ${e.email}`,avatarSize:e.avatarSize}},t)).body.data)==null?void 0:i.search)==null?void 0:u.nodes)==null?void 0:l[0];if(!a)throw new Error("User not found.");return{data:$({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)})}}async getAccountForUsername(e,t={}){var i;let n=await this.getScopes(t),a=(i=(await R(this.config,{query:`
319
+ query getUserForUsername($login: String! $avatarSize: Int) {
320
+ user(login: $login) {
321
+ ${U(!0,x(n))}
322
+ }
323
+ }
324
+ `,variables:{login:e.username,avatarSize:e.avatarSize}},t)).body.data)==null?void 0:i.user;if(!a)throw new Error("User not found.");return{data:$({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)})}}async getOrgsForCurrentUser(e={},t={}){var a;let n=await R(this.config,{query:`
325
+ query getOrgsForCurrentUser($cursor: String, $first: Int!) {
326
+ viewer {
327
+ organizations(first: $first after: $cursor) {
328
+ pageInfo {
329
+ endCursor
330
+ hasNextPage
331
+ }
332
+ nodes {
333
+ id
334
+ databaseId
335
+ name
336
+ login
337
+ email
338
+ avatarUrl
339
+ }
340
+ }
341
+ }
342
+ }
343
+ `,variables:{cursor:e.cursor,first:q}},t);if(!n.body.data)throw new Error(((a=n.body.errors)==null?void 0:a[0].message)||n.statusText||"Unknown error");let o=n.body.data.viewer.organizations.nodes||[];return{pageInfo:n.body.data.viewer.organizations.pageInfo,data:o.map(i=>({id:i.databaseId.toString(),graphQLId:i.id,username:i.login,name:i.name||null,email:i.email||null,avatarUrl:i.avatarUrl}))}}async getOrgMembers(e,t={}){var a,i,u;let n=await R(this.config,{query:`
344
+ query getOrgMember($cursor: String, $first: Int!, $login: String!) {
345
+ viewer {
346
+ organization(login: $login) {
347
+ membersWithRole(first: $first after: $cursor) {
348
+ pageInfo {
349
+ endCursor
350
+ hasNextPage
351
+ }
352
+ nodes {
353
+ ${U(!1,!0)}
354
+ }
355
+ }
356
+ }
357
+ }
358
+ }
359
+ `,variables:{cursor:e.cursor,first:q,login:e.org}},t);if(!n.body.data)throw new Error(((a=n.body.errors)==null?void 0:a[0].message)||n.statusText||"Unknown error");if(!((u=(i=n.body.data)==null?void 0:i.viewer.organization)!=null&&u.membersWithRole))throw new Error("Could not read the members of the organization");let o=n.body.data.viewer.organization.membersWithRole.nodes||[];return{pageInfo:n.body.data.viewer.organization.membersWithRole.pageInfo,data:o.map(l=>$({...l,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(l.avatarUrl,l.email,t)}))}}async getRepo(e,t={}){var o;let n=await R(this.config,{query:`
360
+ query getRepo($owner: String!, $name: String!) {
361
+ repository(owner: $owner, name: $name) {
362
+ ${Ne}
363
+ }
364
+ }
365
+ `,variables:{owner:e.namespace,name:e.name}},t);if(!((o=n.body.data)!=null&&o.repository))throw new Error(`Repository ${e.namespace}/${e.name} not found`);return{data:Fe(n.body.data.repository)}}async getRepos(e,t={}){let n=e.map(({namespace:u,name:l},p)=>`
366
+ getRepo_${p}: repository(owner: "${u}", name: "${l}") {
367
+ ${Ne}
368
+ }
369
+ `).join(`
370
+ `),o=await R(this.config,{query:`
371
+ query batchGetRepos {
372
+ ${n}
373
+ }
374
+ `},t);if(!o.body.data)throw new Error(o.statusText||"Unknown error");let a=[],i=[];return e.forEach((u,l)=>{let p=o.body.data[`getRepo_${l}`];p?a.push(Fe(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:`${re(this.config,t)}/user/repos?${n.toString()}&page=${a}`,headers:{...I(t.token||this.config.token),Accept:"application/vnd.github.raw+json"}});return await this.fetchMultipleRESTPages(e.page??1,e.simultaneousPagesToFetch??4,o,Pt)}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:`${re(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"}});return await this.fetchMultipleRESTPages(e.page??1,e.simultaneousPagesToFetch??4,n,Pt)}async getReposForUsernames(e,t={}){var a;if(!e.usernames.length)return{pageInfo:{endCursor:null,hasNextPage:!1},data:[]};let n=await R(this.config,{query:`
375
+ query getReposForUsernames($query: String!, $cursor: String, $first: Int!) {
376
+ search(query: $query, type: REPOSITORY, first: $first, after: $cursor) {
377
+ pageInfo {
378
+ endCursor
379
+ hasNextPage
380
+ }
381
+ nodes {
382
+ ... on Repository {
383
+ ${Ne}
384
+ }
385
+ }
386
+ }
387
+ }
388
+ `,variables:{query:`fork:true ${e.usernames.map(i=>`user:${i}`).join(" ")}`,cursor:e.cursor,first:q}},t);if(!n.body.data)throw new Error(((a=n.body.errors)==null?void 0:a[0].message)||n.statusText||"Unknown error");let o=n.body.data.search.nodes||[];return{pageInfo:n.body.data.search.pageInfo,data:o.map(Fe)}}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 a=(u=(await R(this.config,{query:`
389
+ query getRefs($owner: String!, $name: String!, $refPrefix: String!, $cursor: String, $first: Int!) {
390
+ repository(owner: $owner, name: $name) {
391
+ refs(refPrefix: $refPrefix first: $first after: $cursor) {
392
+ pageInfo {
393
+ endCursor
394
+ hasNextPage
395
+ }
396
+ nodes {
397
+ name
398
+ target {
399
+ ... on Commit {
400
+ oid
401
+ authoredDate
402
+ committedDate
403
+ }
404
+ }
405
+ }
406
+ }
407
+ }
408
+ }
409
+ `,variables:{owner:t.repo.namespace,name:t.repo.name,refPrefix:e,cursor:t.cursor,first:q}},n)).body.data)==null?void 0:u.repository;if(!a)throw new Error("Repository not found.");let i=a.refs;return i?{pageInfo:i.pageInfo,data:(i.nodes||[]).map(l=>{var d;let p=(d=l.target)!=null&&d.oid?l.target:null;return{name:l.name,commit:p?{oid:p.oid,authoredDate:new Date(p.authoredDate),committedDate:new Date(p.committedDate)}:null}})}:{pageInfo:{endCursor:null,hasNextPage:!1},data:[]}}async getBranches(e,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 o=(i=(await R(this.config,{query:`
410
+ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
411
+ repository(owner: $owner, name: $name) {
412
+ object(expression: $ref) {
413
+ ... on Commit {
414
+ blame(path: $path) {
415
+ ranges {
416
+ startingLine
417
+ endingLine
418
+ commit {
419
+ oid
420
+ parents(first:100) {
421
+ nodes {
422
+ oid
423
+ }
424
+ }
425
+ authoredDate
426
+ committedDate
427
+ message
428
+ author {
429
+ name
430
+ email
431
+ avatarUrl
432
+ }
433
+ committer {
434
+ name
435
+ email
436
+ avatarUrl
437
+ }
438
+ additions
439
+ deletions
440
+ changedFilesIfAvailable
441
+ }
442
+ }
443
+ }
444
+ }
445
+ }
446
+ }
447
+ }
448
+ `,variables:{owner:e.repo.namespace,name:e.repo.name,ref:e.ref,path:e.path}},t)).body.data)==null?void 0:i.repository;if(!o)throw new Error("Repository not found.");let a=o.object;if(!a||!("blame"in a))throw new Error("Ref not found.");if(a.blame.ranges.length===0)throw new Error("File not found.");return{data:{ranges:a.blame.ranges.map(u=>{var l;return{startingLine:u.startingLine,endingLine:u.endingLine,commit:{oid:u.commit.oid,parentOids:((l=u.commit.parents.nodes)==null?void 0:l.map(p=>p.oid))||[],authoredDate:new Date(u.commit.authoredDate),author:u.commit.author?{name:u.commit.author.name,email:u.commit.author.email,avatarUrl:u.commit.author.avatarUrl}:null,committedDate:new Date(u.commit.committedDate),committer:u.commit.committer?{name:u.commit.committer.name,email:u.commit.committer.email,avatarUrl:u.commit.committer.avatarUrl}:null,message:u.commit.message,fileCount:u.commit.changedFilesIfAvailable,additions:u.commit.additions,deletions:u.commit.deletions}}})}}}async getFileContents(e,t={}){let n=await this.config.request({url:`${re(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(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,d;let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=x(o),i=c=>{let g=c&&typeof e.isDraft=="boolean"?`${e.query} draft:${e.isDraft}`:e.query;return ke("pr",g,e.cursor,{maxPageSize:e.maxPageSize??It,supportsEmail:a,supportsDrafts:c,enterpriseVersion:n,includeFromArchivedRepos:e.includeFromArchivedRepos})},u=await R(this.config,i(!0),t);u.body.errors&&fe(u.body.errors)&&(this.config.baseUrl||t.baseUrl)&&(u=await R(this.config,i(!1),t));let{data:l}=u.body;if(!l)throw new Error(((p=u.body.errors)==null?void 0:p[0].message)||u.statusText||"Unknown error");return{pageInfo:{hasNextPage:l.search.pageInfo.hasNextPage,endCursor:l.search.pageInfo.endCursor},data:((d=l.search.nodes)==null?void 0:d.filter(E).map(Qe))||[]}}async searchIssues(e,t={}){var u,l;let n=await this.getScopes(t),o=x(n),a=await R(this.config,ke("issue",e.query,e.cursor,{supportsEmail:o,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize??Rt}),t),{data:i}=a.body;if(!i)throw new Error(((u=a.body.errors)==null?void 0:u[0].message)||a.statusText||"Unknown error");return{pageInfo:{hasNextPage:i.search.pageInfo.hasNextPage,endCursor:i.search.pageInfo.endCursor},data:((l=i.search.nodes)==null?void 0:l.filter(E).map(br))||[]}}async getPullRequestsAssociatedWithUser(e,t={}){let n=[`involves:${e.username}`];return e.labelNames&&e.labelNames.forEach(o=>{n.push(`label:"${o}"`)}),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=xe(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,c;let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=x(o),i=g=>({query:`query getPullRequest(
449
+ $owner: String!
450
+ $name: String!
451
+ $number: Int!
452
+ ) {
453
+ repository(
454
+ owner: $owner,
455
+ name: $name
456
+ ) {
457
+ pullRequest(number: $number) {
458
+ ${he(g,a,n)}
459
+ }
460
+ }
461
+ }`,variables:{owner:e.repo.namespace,name:e.repo.name,number:e.number}}),u=await R(this.config,i(!0),t);u.body.errors&&fe(u.body.errors)&&(this.config.baseUrl||t.baseUrl)&&(u=await R(this.config,i(!1),t));let{data:l}=u.body;if(!l)throw new Error(((d=u.body.errors)==null?void 0:d[0].message)||u.statusText||"Unknown error");let p=(c=u.body.data)==null?void 0:c.repository.pullRequest;return{data:p?Qe(p):null}}async getPullRequestByGraphQLId(e,t={}){var d,c;let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=x(o),i=g=>({query:`query getPullRequest(
462
+ $graphQLId: ID!
463
+ ) {
464
+ node(id: $graphQLId) {
465
+ ... on PullRequest {
466
+ ${he(g,a,n)}
467
+ }
468
+ }
469
+ }`,variables:{graphQLId:e.graphQLId}}),u=await R(this.config,i(!0),t);u.body.errors&&fe(u.body.errors)&&(this.config.baseUrl||t.baseUrl)&&(u=await R(this.config,i(!1),t));let{data:l}=u.body;if(!l)throw new Error(((d=u.body.errors)==null?void 0:d[0].message)||u.statusText||"Unknown error");let p=(c=u.body.data)==null?void 0:c.node;return{data:p?Qe(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
+ closePullRequest(input: { pullRequestId: $pullRequestGraphQLId }) {
471
+ pullRequest {
472
+ id
473
+ }
474
+ }
475
+ }`;if(!((l=(u=(i=(await R(this.config,{query:`${o}`,variables:{pullRequestGraphQLId:n}},t)).body.data)==null?void 0:i.closePullRequest)==null?void 0:u.pullRequest)!=null&&l.id))throw new Error("Could not close pull request")}async mergePullRequest(e,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
+ $pullRequestGraphQLId: ID!,
477
+ $expectedSourceSha: GitObjectID!,
478
+ $mergeStrategy: PullRequestMergeMethod,
479
+ ) {
480
+ mergePullRequest(input: {
481
+ pullRequestId: $pullRequestGraphQLId,
482
+ expectedHeadOid: $expectedSourceSha,
483
+ mergeMethod: $mergeStrategy,
484
+ }) {
485
+ pullRequest {
486
+ id
487
+ }
488
+ }
489
+ }`;if(!((c=(d=(p=(await R(this.config,{query:`${i}`,variables:{pullRequestGraphQLId:n.graphQLId,expectedSourceSha:n.headRef.oid,mergeStrategy:a}},t)).body.data)==null?void 0:p.mergePullRequest)==null?void 0:d.pullRequest)!=null&&c.id))throw new Error("Could not merge pull request")}async setPullRequestMilestone(e,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
+ updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, milestoneId: $milestoneGraphQLId }) {
491
+ pullRequest {
492
+ id
493
+ }
494
+ }
495
+ }`;if(!((p=(l=(u=(await R(this.config,{query:`${a}`,variables:{pullRequestGraphQLId:n.graphQLId,milestoneGraphQLId:(o==null?void 0:o.graphQLId)??null}},t)).body.data)==null?void 0:u.updatePullRequest)==null?void 0:l.pullRequest)!=null&&p.id))throw new Error("Could not set milestone of pull request")}async markPullRequestReadyForReview(e,t){var a,i,u;let n=`mutation MarkReadyToReview($pullRequestGraphQLId: ID!) {
496
+ markPullRequestReadyForReview(input: { pullRequestId: $pullRequestGraphQLId }) {
497
+ pullRequest {
498
+ id
499
+ }
500
+ }
501
+ }`;if(!((u=(i=(a=(await R(this.config,{query:n,variables:{pullRequestGraphQLId:e}},t)).body.data)==null?void 0:a.markPullRequestReadyForReview)==null?void 0:i.pullRequest)!=null&&u.id))throw new Error("Could not mark pull request ready to review")}async convertPullRequestToDraft(e,t){var a,i,u;let n=`mutation ConvertToDraft($pullRequestGraphQLId: ID!) {
502
+ convertPullRequestToDraft(input: { pullRequestId: $pullRequestGraphQLId }) {
503
+ pullRequest {
504
+ id
505
+ }
506
+ }
507
+ }`;if(!((u=(i=(a=(await R(this.config,{query:n,variables:{pullRequestGraphQLId:e}},t)).body.data)==null?void 0:a.convertPullRequestToDraft)==null?void 0:i.pullRequest)!=null&&u.id))throw new Error("Could not convert pull request to draft")}async setPullRequestAsDraft(e,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
+ requestReviews(input: { pullRequestId: $pullRequestGraphQLId, userIds: $reviewerGraphQLIds }) {
509
+ pullRequest {
510
+ id
511
+ }
512
+ }
513
+ }`;if(!((g=(c=(d=(await R(this.config,{query:l,variables:{pullRequestGraphQLId:o,reviewerGraphQLIds:u}},t)).body.data)==null?void 0:d.requestReviews)==null?void 0:c.pullRequest)!=null&&g.id))throw new Error("Could not set pull request reviewers")}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
+ requestReviews(input: { pullRequestId: $pullRequestGraphQLId, userIds: $reviewerGraphQLIds, union: true }) {
515
+ pullRequest {
516
+ id
517
+ }
518
+ }
519
+ }`;if(!((c=(d=(p=(await R(this.config,{query:u,variables:{pullRequestGraphQLId:o,reviewerGraphQLIds:i}},t)).body.data)==null?void 0:p.requestReviews)==null?void 0:d.pullRequest)!=null&&c.id))throw new Error("Could not re-request pull request reviews")}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
+ updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, assigneeIds: $assigneeGraphQLIds }) {
521
+ pullRequest {
522
+ id
523
+ }
524
+ }
525
+ }`;if(!((d=(p=(l=(await R(this.config,{query:i,variables:{pullRequestGraphQLId:n.graphQLId,assigneeGraphQLIds:a}},t)).body.data)==null?void 0:l.updatePullRequest)==null?void 0:p.pullRequest)!=null&&d.id))throw new Error("Could not set pull request assignees")}async getReviewsForPullRequest(e,t={}){var d,c,g,m;let{repo:{namespace:n,name:o},pullRequestId:a}=e,i=`query getPullRequests(
526
+ $namespace: String!
527
+ $name: String!
528
+ $pullRequestId: Int!
529
+ ) {
530
+ repository(
531
+ owner: $namespace,
532
+ name: $name
533
+ ) {
534
+ pullRequest(number: $pullRequestId) {
535
+ reviewThreads(first: 100) {
536
+ nodes {
537
+ isOutdated
538
+ isResolved
539
+ originalLine
540
+ originalStartLine
541
+ startDiffSide
542
+ comments(first: 100) {
543
+ nodes {
544
+ author {
545
+ avatarUrl
546
+ login
547
+ }
548
+ body
549
+ databaseId
550
+ diffHunk
551
+ id
552
+ path
553
+ publishedAt
554
+ pullRequestReview {
555
+ id
556
+ }
557
+ url
558
+ }
559
+ }
560
+ }
561
+ }
562
+ reviews(first: 100) {
563
+ nodes {
564
+ author {
565
+ avatarUrl
566
+ login
567
+ }
568
+ body
569
+ databaseId
570
+ id
571
+ publishedAt
572
+ url
573
+ }
574
+ }
575
+ }
576
+ }
577
+ }`,u=await R(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(E).reduce((h,b)=>{var P,O;if(!((O=(P=b.comments.nodes)==null?void 0:P[0])!=null&&O.pullRequestReview))return h;let S=b.comments.nodes[0].pullRequestReview,f=Ir(b);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(E).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
+ updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, labelIds: $labelGraphQLIds }) {
579
+ pullRequest {
580
+ id
581
+ }
582
+ }
583
+ }`;if(!((p=(l=(u=(await R(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)).body.data)==null?void 0:u.updatePullRequest)==null?void 0:l.pullRequest)!=null&&p.id))throw new Error("Could not set pull request labels")}async getIssuesForRepos(e,t={}){let n=xe(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
+ closeIssue(input: { issueId: $issueGraphQLId, stateReason: $reason }) {
585
+ issue {
586
+ id
587
+ }
588
+ }
589
+ }`;if(!((p=(l=(u=(await R(this.config,{query:a,variables:{issueGraphQLId:n.graphQLId,reason:o}},t)).body.data)==null?void 0:u.closeIssue)==null?void 0:l.issue)!=null&&p.id))throw new Error("Could not close issue with reason")}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
+ updateIssue(input: { id: $issueGraphQLId, state: CLOSED }) {
591
+ issue {
592
+ id
593
+ }
594
+ }
595
+ }`;if(!((l=(u=(i=(await R(this.config,{query:o,variables:{issueGraphQLId:n.graphQLId}},t)).body.data)==null?void 0:i.updateIssue)==null?void 0:u.issue)!=null&&l.id))throw new Error("Could not close issue")}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
+ reopenIssue(input: { issueId: $issueGraphQLId }) {
597
+ issue {
598
+ id
599
+ }
600
+ }
601
+ }`;if(!((l=(u=(i=(await R(this.config,{query:o,variables:{issueGraphQLId:n.graphQLId}},t)).body.data)==null?void 0:i.reopenIssue)==null?void 0:u.issue)!=null&&l.id))throw new Error("Could not reopen issue")}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
+ updateIssue(input: { id: $issueGraphQLId, labelIds: $labelGraphQLIds }) {
603
+ issue {
604
+ id
605
+ }
606
+ }
607
+ }`;if(!((d=(p=(l=(await R(this.config,{query:i,variables:{issueGraphQLId:n.graphQLId,labelGraphQLIds:a}},t)).body.data)==null?void 0:l.updateIssue)==null?void 0:p.issue)!=null&&d.id))throw new Error("Could not set issue labels")}async setIssueMilestone(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
+ updateIssue(input: { id: $issueGraphQLId, milestoneId: $milestoneGraphQLId }) {
609
+ issue {
610
+ id
611
+ }
612
+ }
613
+ }`;if(!((p=(l=(u=(await R(this.config,{query:`${a}`,variables:{issueGraphQLId:n.graphQLId,milestoneGraphQLId:(o==null?void 0:o.graphQLId)??null}},t)).body.data)==null?void 0:u.updateIssue)==null?void 0:l.issue)!=null&&p.id))throw new Error("Could not set milestone of issue")}async setIssueAssignees(e,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
+ updateIssue(input: { id: $issueGraphQLId, assigneeIds: $assigneeGraphQLIds }) {
615
+ issue {
616
+ id
617
+ }
618
+ }
619
+ }`;if(!((d=(p=(l=(await R(this.config,{query:i,variables:{issueGraphQLId:n.graphQLId,assigneeGraphQLIds:a}},t)).body.data)==null?void 0:l.updateIssue)==null?void 0:p.issue)!=null&&d.id))throw new Error("Could not set issue assignees")}async getMilestonesForRepo(e,t={}){var u,l,p,d;let{repo:{namespace:n,name:o},cursor:a}=e,i=await R(this.config,{query:`
620
+ query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
621
+ repository(owner: $owner, name: $name) {
622
+ milestones(first: $first, after: $cursor) {
623
+ nodes {
624
+ ${ge}
625
+ }
626
+ pageInfo {
627
+ endCursor
628
+ hasNextPage
629
+ }
630
+ }
631
+ }
632
+ }
633
+ `,variables:{owner:n,name:o,cursor:a,first:q}},t);if(!i.body.data)throw new Error(((u=i.body.errors)==null?void 0:u[0].message)||i.statusText||"Unknown error");return{pageInfo:((l=i.body.data.repository.milestones)==null?void 0:l.pageInfo)??{endCursor:null,hasNextPage:!1},data:((d=(p=i.body.data.repository.milestones)==null?void 0:p.nodes)==null?void 0:d.map(je))??[]}}async getLabelsForRepo(e,t={}){var u,l,p,d;let{repo:{namespace:n,name:o},cursor:a}=e,i=await R(this.config,{query:`
634
+ query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
635
+ repository(owner: $owner, name: $name) {
636
+ labels(first: $first, after: $cursor) {
637
+ nodes {
638
+ ${me}
639
+ }
640
+ pageInfo {
641
+ endCursor
642
+ hasNextPage
643
+ }
644
+ }
645
+ }
646
+ }
647
+ `,variables:{owner:n,name:o,cursor:a,first:q}},t);if(!i.body.data)throw new Error(((u=i.body.errors)==null?void 0:u[0].message)||i.statusText||"Unknown error");return{pageInfo:((l=i.body.data.repository.labels)==null?void 0:l.pageInfo)??{endCursor:null,hasNextPage:!1},data:((d=(p=i.body.data.repository.labels)==null?void 0:p.nodes)==null?void 0:d.map(Be))??[]}}};var yr="https://gitlab.com/api/v4",wr="https://gitlab.com/api/graphql",vt=/\/api\/v\d+$/,qt=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.")},Me=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),qt(e),e):yr},Pr=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),qt(e),vt.test(e)&&(e=e.replace(vt,"")),`${e}/api/graphql`):wr},y=(r,s,e)=>{let t=I(e.token||r.token);return r.request({url:Pr(r,e),method:"POST",headers:{...t,"Content-Type":"application/json"},body:JSON.stringify(s)})},Ie=r=>r==null?void 0:r.map(s=>`"${s.message}"`).join(", ");var Ke=r=>r.split("/").slice(0,-1).join("/"),Ve=r=>r.split("/").at(-1)??"",Re=r=>({id:r.id.replace(X,""),graphQLId:r.id,namespace:Ke(r.fullPath),name:Ve(r.fullPath),webUrl:r.webUrl}),Et=r=>({id:r.id.replace(X,""),graphQLId:r.id,httpsUrl:r.httpUrlToRepo,namespace:Ke(r.fullPath),name:Ve(r.fullPath),sshUrl:r.sshUrlToRepo,webUrl:r.webUrl}),Sr={assigned:"assignedMergeRequests",authored:"authoredMergeRequests",reviewRequested:"reviewRequestedMergeRequests"},vr={CAN_BE_MERGED:"MERGEABLE",CANNOT_BE_MERGED:"CONFLICTS",CANNOT_BE_MERGED_RECHECK:"UNKNOWN",UNCHECKED:"UNKNOWN",CHECKING:"UNKNOWN"};var qr="gid://gitlab/User/",X="gid://gitlab/Project/",Er="gid://gitlab/MergeRequest/",Cr="gid://gitlab/Issue/",Ur="gid://gitlab/ProjectLabel/",Dr="gid://gitlab/Milestone/",Lr="gid://gitlab/Ci::Build/",Xe=`
648
+ description
649
+ dueDate
650
+ id
651
+ iid
652
+ startDate
653
+ state
654
+ title
655
+ webPath
656
+ `,ze=`
657
+ id
658
+ fullPath
659
+ webUrl
660
+ httpUrlToRepo
661
+ sshUrlToRepo
662
+ repository {
663
+ rootRef
664
+ }
665
+ `,k=`
666
+ id
667
+ name
668
+ username
669
+ publicEmail
670
+ avatarUrl
671
+ webUrl
672
+ `,Ze=`
673
+ color
674
+ description
675
+ id
676
+ title
677
+ `,He=`
678
+ author {
679
+ ${k}
680
+ }
681
+ assignees {
682
+ nodes {
683
+ ${k}
684
+ }
685
+ }
686
+ closedAt
687
+ createdAt
688
+ description
689
+ dueDate
690
+ id
691
+ iid
692
+ labels {
693
+ nodes {
694
+ ${Ze}
695
+ }
696
+ }
697
+ state
698
+ title
699
+ type
700
+ updatedAt
701
+ upvotes
702
+ userNotesCount
703
+ webUrl
704
+ milestone {
705
+ ${Xe}
706
+ }
707
+ `,$r=`
708
+ stages {
709
+ nodes {
710
+ jobs {
711
+ nodes {
712
+ allowFailure
713
+ createdAt
714
+ finishedAt
715
+ id
716
+ name
717
+ status
718
+ }
719
+ }
720
+ name
721
+ }
722
+ }
723
+ `,Ct=(r,s,e)=>`
724
+ id
725
+ state
726
+ approved
727
+ author {
728
+ ${k}
729
+ }
730
+ diffRefs {
731
+ baseSha
732
+ headSha
733
+ }
734
+ diffStatsSummary {
735
+ additions
736
+ deletions
737
+ fileCount
738
+ }
739
+ commitCount
740
+ draft
741
+ userNotesCount
742
+ upvotes
743
+ title
744
+ webUrl
745
+ createdAt
746
+ updatedAt
747
+ mergedAt
748
+ iid
749
+ targetBranch
750
+ sourceBranch
751
+ assignees {
752
+ nodes {
753
+ ${k}
754
+ }
755
+ }
756
+ reviewers {
757
+ nodes {
758
+ ${k}
759
+ mergeRequestInteraction {
760
+ approved
761
+ reviewState
762
+ }
763
+ }
764
+ }
765
+ mergeStatusEnum
766
+ labels {
767
+ nodes {
768
+ ${Ze}
769
+ }
770
+ }
771
+ ${r?"project { id httpUrlToRepo fullPath sshUrlToRepo webUrl archived } sourceProject { id httpUrlToRepo fullPath sshUrlToRepo webUrl }":""}
772
+ ${s?`milestone { ${Xe} }`:""}
773
+ ${e?`headPipeline { ${$r} }`:""}
774
+ `,z=r=>`${r.namespace}/${r.name}`,Ar=r=>`${r.namespace}/${r.name}`,We=r=>{var s;return{id:r.id.replace(X,""),graphQLId:r.id,namespace:Ke(r.fullPath),name:Ve(r.fullPath),webUrl:r.webUrl,httpsUrl:r.httpUrlToRepo,sshUrl:r.sshUrlToRepo,defaultBranch:(s=r.repository)!=null&&s.rootRef?{name:r.repository.rootRef}:null,permission:null}},Gr={opened:"OPEN",merged:"MERGED",closed:"CLOSED"},N=(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(qr,""),graphQLId:r.id,name:r.name,username:r.username,email:r.publicEmail??null,avatarUrl:t,url:r.webUrl}},Ye=r=>({color:r.color,description:r.description,id:r.id.replace(Ur,""),graphQLId:r.id,name:r.title}),Tr=(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,Or=(r,s,e)=>{var n;let t={APPROVED:"APPROVED",REQUESTED_CHANGES:"CHANGES_REQUESTED",REVIEWED:"COMMENTED",UNAPPROVED:"REVIEW_REQUESTED",UNREVIEWED:"REVIEW_REQUESTED"};return{reviewer:N(r,s,e),state:(n=r.mergeRequestInteraction)!=null&&n.reviewState?t[r.mergeRequestInteraction.reviewState]:"REVIEW_REQUESTED"}},Ut=(r,s,e,t,n)=>{var a,i,u,l,p,d,c,g,m,h,b,S;let o=(a=r.reviewers)!=null&&a.nodes?r.reviewers.nodes.map(f=>Or(f,t,n)):null;return{id:r.id.replace(Er,""),graphQLId:r.id,title:r.title,number:parseInt(r.iid,10),state:Gr[r.state],commentCount:r.userNotesCount||0,upvoteCount:r.upvotes,author:r.author?N(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 P,O;return((O=(P=f.jobs)==null?void 0:P.nodes)==null?void 0:O.map(A=>({completedAt:A.finishedAt?new Date(A.finishedAt):null,description:null,name:A.name??null,state:Tr(A.status,A.allowFailure),stage:f.name??null,startedAt:new Date(A.createdAt),url:`${s.webUrl}/-/jobs/${A.id.replace(Lr,"")}`})))??[]}))??[]},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=>N(f,t,n)):null,reviews:o,reviewDecision:r.approved?"APPROVED":F(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:vr[r.mergeStatusEnum],milestone:r.milestone?et(r.milestone,s.webUrl):null,labels:((S=(b=r.labels)==null?void 0:b.nodes)==null?void 0:S.map(Ye))??[],permissions:null}},Je=(r,s,e,t)=>{var n,o;return{author:N(r.author,e,t),assignees:r.assignees.nodes.map(a=>N(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(Cr,""),labels:((o=(n=r.labels)==null?void 0:n.nodes)==null?void 0:o.map(Ye))??[],number:r.iid,repository:{id:s.id.replace(X,""),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?et(r.milestone,s.webUrl):null}},et=(r,s)=>({id:r.id.replace(Dr,""),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}),Z=class extends G{getIsSelfHosted(s){return!!s.baseUrl||!!this.config.baseUrl}async getCurrentUser(s={},e={}){var o;let n=(o=(await y(this.config,{query:`
775
+ query getCurrentUser {
776
+ currentUser {
777
+ ${k}
778
+ }
779
+ }
780
+ `},e)).body.data)==null?void 0:o.currentUser;if(!n)throw new Error("Current user not found.");return{data:N(n,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)}}async getUserForCommit(s,e={}){var a,i,u,l;let t=z(s.repo),o=(l=(u=(i=(a=(await y(this.config,{query:`
781
+ query getUserForCommit($fullPath: ID!, $oid: String!) {
782
+ project(fullPath: $fullPath) {
783
+ repository {
784
+ tree(ref: $oid) {
785
+ lastCommit {
786
+ authorName
787
+ authorEmail
788
+ authorGravatar
789
+ }
790
+ }
791
+ }
792
+ }
793
+ }
794
+ `,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 y(this.config,{query:`
795
+ query getAccountForEmail($email: String!) {
796
+ users(search: $email) {
797
+ nodes {
798
+ ${k}
799
+ }
800
+ }
801
+ }
802
+ `,variables:{email:s.email}},e)).body.data)==null?void 0:o.users)==null?void 0:a.nodes)==null?void 0:i[0];if(!n)throw new Error("User not found.");return{data:N(n,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)}}async getAccountForUsername(s,e={}){var o;let n=(o=(await y(this.config,{query:`
803
+ query getAccountForUsername($username: String!) {
804
+ user(username: $username) {
805
+ ${k}
806
+ }
807
+ }
808
+ `,variables:{username:s.username}},e)).body.data)==null?void 0:o.user;if(!n)throw new Error("User not found.");return{data:N(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 y(this.config,{query:`
809
+ query getAccountsForRepo(
810
+ $fullPath: ID!
811
+ $after: String
812
+ ) {
813
+ project(
814
+ fullPath: $fullPath
815
+ ) {
816
+ projectMembers(after: $after) {
817
+ nodes {
818
+ user {
819
+ ${k}
820
+ }
821
+ }
822
+ pageInfo {
823
+ endCursor
824
+ hasNextPage
825
+ }
826
+ }
827
+ }
828
+ }
829
+ `,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=>N(h,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)))??[]}}async getRepo(s,e={}){var o;let t=z(s),n=await y(this.config,{query:`
830
+ query getRepo($fullPath: ID!) {
831
+ project(fullPath: $fullPath) {
832
+ ${ze}
833
+ }
834
+ }
835
+ `,variables:{fullPath:t}},e);if(!((o=n.body.data)!=null&&o.project))throw new Error(`Repository ${t} not found`);return{data:We(n.body.data.project)}}async getReposBase(s,e={}){let n=s.map(z).map((u,l)=>`
836
+ getRepo_${l}: project(fullPath: "${u}") {
837
+ ${ze}
838
+ }
839
+ `).join(`
840
+ `),o=await y(this.config,{query:`
841
+ query batchGetRepos {
842
+ ${n}
843
+ }
844
+ `},e);if(!o.body.data)throw new Error(Ie(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(We(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 y(this.config,{query:`
845
+ query getReposForCurrentUser($after: String) {
846
+ projects(membership: true first: 100 after: $after) {
847
+ pageInfo {
848
+ endCursor
849
+ hasNextPage
850
+ }
851
+ nodes {
852
+ ${ze}
853
+ }
854
+ }
855
+ }
856
+ `,variables:{after:s.cursor}},e);if(!((o=t.body.data)!=null&&o.projects))throw new Error(Ie(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(We)}}async getRefs(s,e,t={}){var u;let n=z(e.repo),o=new URL(`${Me(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",q.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(s,e={}){return this.getRefs("branches",s,e)}async getTags(s,e={}){return this.getRefs("tags",s,e)}async getBlame(s,e={}){let t=z(s.repo),n=new URL(`${Me(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: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(s,e={}){var a;let t=Sr[s.association],n=await y(this.config,{query:`
857
+ query getPullRequestsForUser($username: String! $cursor: String $labelNames: [String!]) {
858
+ user(username: $username) {
859
+ ${t}(state:opened first:100 after:$cursor labels: $labelNames) {
860
+ pageInfo {
861
+ endCursor
862
+ hasNextPage
863
+ }
864
+ nodes {
865
+ ${Ct(!0,!0,!0)}
866
+ }
867
+ }
868
+ }
869
+ }
870
+ `,variables:{username:s.username,cursor:s.cursor,labelNames:s.labelNames}},e);if(!n.body.data)throw new Error(Ie(n.body.errors)||n.statusText||"Unknown error");if(!n.body.data.user)throw new Error("User not found");let o=n.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=>s.includeFromArchivedRepos||!i.project.archived).map(i=>Ut(i,Et(i.project),Et(i.sourceProject),this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)))||[]}}async getPullRequestsAssociatedWithUser(s,e={}){var c;let[t,n,o]=((c=s.cursor)==null?void 0:c.split(";"))||[void 0,void 0,void 0],[a,i,u]=await Promise.all([t==="null"?null:this.getPullRequestsForUser({username:s.username,association:"authored",cursor:t,includeFromArchivedRepos:s.includeFromArchivedRepos,labelNames:s.labelNames},e),n==="null"?null:this.getPullRequestsForUser({username:s.username,association:"assigned",cursor:n,includeFromArchivedRepos:s.includeFromArchivedRepos,labelNames:s.labelNames},e),o==="null"?null:this.getPullRequestsForUser({username:s.username,association:"reviewRequested",cursor:o,includeFromArchivedRepos:s.includeFromArchivedRepos,labelNames:s.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(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 b,S,f;let{cursor:n,repo:o}=s||{},a=z(o),{variables:i,variableTypes:u,mergeRequestArguments:l}=this.getVariablesForPullRequests(s),p={fullPath:a,...i},d=await y(this.config,{query:`
871
+ query getPullRequestsForRepo(
872
+ $fullPath: ID!
873
+ $after: String
874
+ ${u.length?u.join(" "):""}
875
+ ) {
876
+ project(
877
+ fullPath: $fullPath
878
+ ) {
879
+ id
880
+ fullPath
881
+ webUrl
882
+ archived
883
+ mergeRequests(
884
+ first: 100
885
+ state: opened
886
+ sort: UPDATED_DESC
887
+ after: $after
888
+ ${l.length?l.join(" "):""}
889
+ ) {
890
+ pageInfo {
891
+ endCursor
892
+ hasNextPage
893
+ }
894
+ nodes {
895
+ ${Ct(!1,!0,!0)}
896
+ }
897
+ }
898
+ }
899
+ }
900
+ `,variables:{...p,after:n}},e),c=[],g=(b=d.body.data)==null?void 0:b.project;if(!t&&(g!=null&&g.archived))return{pageInfo:null,data:[]};let m=Re(g||{id:"",fullPath:"",webUrl:""});return(((S=g==null?void 0:g.mergeRequests)==null?void 0:S.nodes)||[]).forEach(P=>{c.push(Ut(P,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!) {
901
+ mergeRequestUpdate(input: { projectPath: $fullPath, iid: $pullRequestId, state: CLOSED }) {
902
+ errors,
903
+ mergeRequest {
904
+ id
905
+ }
906
+ }
907
+ }`,a=(i=(await y(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(
908
+ $fullPath: ID!,
909
+ $pullRequestId: String!,
910
+ $expectedSourceSha: String!,
911
+ $squash: Boolean!,
912
+ ) {
913
+ mergeRequestAccept(input: {
914
+ projectPath: $fullPath,
915
+ iid: $pullRequestId,
916
+ sha: $expectedSourceSha,
917
+ squash: $squash,
918
+ }) {
919
+ errors,
920
+ mergeRequest {
921
+ id
922
+ }
923
+ }
924
+ }`,i=(l=(await y(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) {
925
+ mergeRequestSetMilestone(input: { projectPath: $fullPath, iid: $pullRequestId, milestoneId: $milestoneGraphQLId }) {
926
+ errors,
927
+ mergeRequest {
928
+ id
929
+ }
930
+ }
931
+ }`,a=await y(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!) {
932
+ mergeRequestSetDraft(input: { projectPath: $fullPath, iid: $pullRequestId, draft: $isDraft }) {
933
+ errors,
934
+ mergeRequest {
935
+ id
936
+ }
937
+ }
938
+ }`,i=(u=(await y(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!]!) {
939
+ mergeRequestSetReviewers(input: { projectPath: $fullPath, iid: $pullRequestId, reviewerUsernames: $reviewerUsernames }) {
940
+ errors,
941
+ mergeRequest {
942
+ id
943
+ }
944
+ }
945
+ }`,u=(l=(await y(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!) {
946
+ mergeRequestReviewerRereview(input: { projectPath: $fullPath, iid: $pullRequestId, userId: $reviewerUserId }) {
947
+ errors,
948
+ mergeRequest {
949
+ id
950
+ }
951
+ }
952
+ }`,i=(u=(await y(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!]!) {
953
+ mergeRequestSetAssignees(input: { projectPath: $fullPath, iid: $pullRequestId, assigneeUsernames: $assigneeUsernames }) {
954
+ errors,
955
+ mergeRequest {
956
+ id
957
+ }
958
+ }
959
+ }`,u=(l=(await y(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!]!) {
960
+ mergeRequestSetLabels(input: { projectPath: $fullPath, iid: $pullRequestId, labelIds: $labelGraphQLIds }) {
961
+ mergeRequest {
962
+ id
963
+ }
964
+ }
965
+ }`;if(!((p=(l=(u=(await y(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=Ar(s),n=await y(this.config,{query:`
966
+ query GetSingleIssue($projectId: ID!, $issueNumber: String!) {
967
+ project(fullPath: $projectId) {
968
+ id
969
+ fullPath
970
+ webUrl
971
+ issue(iid: $issueNumber) {
972
+ ${He}
973
+ }
974
+ }
975
+ }
976
+ `,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:Je(n.body.data.project.issue,Re(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 b,S,f;let{cursor:t,repo:n}=s||{},o=z(n),{variables:a,variableTypes:i,issueArguments:u}=this.getVariablesForIssues(s),l={fullPath:o,...a},p=`
977
+ query GetIssuesFromProject(
978
+ $fullPath: ID!
979
+ $after: String
980
+ ${i.length?i.join(" "):""}
981
+ ) {
982
+ project(
983
+ fullPath: $fullPath
984
+ ) {
985
+ id
986
+ fullPath
987
+ webUrl
988
+ issues(
989
+ first: 100
990
+ state: opened
991
+ sort: UPDATED_DESC
992
+ after: $after
993
+ ${u.length?u.join(" "):""}
994
+ ) {
995
+ nodes {
996
+ ${He}
997
+ }
998
+ pageInfo {
999
+ endCursor
1000
+ hasNextPage
1001
+ }
1002
+ }
1003
+ }
1004
+ }`,d=await y(this.config,{query:p,variables:{...l,after:t}},e),c=[],g=(b=d.body.data)==null?void 0:b.project,m=Re(g||{id:"",fullPath:"",webUrl:""});return(((S=g==null?void 0:g.issues)==null?void 0:S.nodes)||[]).forEach(P=>{c.push(Je(P,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((P,O)=>(P.updatedDate||P.createdDate).getTime()-(O.updatedDate||O.createdDate).getTime())}}async getIssuesForRepos(s,e={}){var g,m,h,b,S;let{cursor:t}=s||{},n=s.repoIds.map(f=>f.toString().startsWith(X)?f:`${X}${f}`),{variables:o,variableTypes:a,mergeRequestArguments:i}=this.getVariablesForPullRequests(s),u={projectIds:n,...o},l=`
1005
+ query GetIssuesFromProject(
1006
+ $projectIds: [ID!]
1007
+ $after: String
1008
+ ${a.length?a.join(" "):""}
1009
+ ) {
1010
+ projects(
1011
+ ids: $projectIds
1012
+ after: $after
1013
+ ) {
1014
+ pageInfo {
1015
+ endCursor
1016
+ hasNextPage
1017
+ }
1018
+ nodes {
1019
+ id
1020
+ fullPath
1021
+ webUrl
1022
+ archived
1023
+ issues(
1024
+ first: 100
1025
+ state: opened
1026
+ sort: UPDATED_DESC
1027
+ ${i.length?i.join(" "):""}
1028
+ ) {
1029
+ nodes {
1030
+ ${He}
1031
+ }
1032
+ }
1033
+ }
1034
+ }
1035
+ }`,p=await y(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 A;if(!s.includeFromArchivedRepos&&f.archived)return;let P=Re(f);(((A=f.issues)==null?void 0:A.nodes)||[]).forEach(xt=>d.push(Je(xt,P,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)))}),{pageInfo:((S=(b=(h=p.body)==null?void 0:h.data)==null?void 0:b.projects)==null?void 0:S.pageInfo)??{endCursor:null,hasNextPage:!1},data:d.sort((f,P)=>(f.updatedDate||f.createdDate).getTime()-(P.updatedDate||P.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!) {
1036
+ updateIssue(input: { projectPath: $fullPath, iid: $issueId, stateEvent: $status }) {
1037
+ issue {
1038
+ id
1039
+ }
1040
+ }
1041
+ }`;if(!((l=(u=(i=(await y(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!]) {
1042
+ updateIssue(input: { projectPath: $fullPath, iid: $issueId, labelIds: $labelGraphQLIds }) {
1043
+ issue {
1044
+ id
1045
+ }
1046
+ }
1047
+ }`;if(!((p=(l=(u=(await y(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) {
1048
+ updateIssue(input: { projectPath: $fullPath, iid: $issueId, milestoneId: $milestoneId }) {
1049
+ errors
1050
+ issue {
1051
+ id
1052
+ milestone {
1053
+ id
1054
+ }
1055
+ }
1056
+ }
1057
+ }`,a=await y(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!]!) {
1058
+ issueSetAssignees(input: { projectPath: $fullPath, iid: $issueId, assigneeUsernames: $assigneeUsernames }) {
1059
+ errors,
1060
+ issue {
1061
+ id
1062
+ }
1063
+ }
1064
+ }`,u=(l=(await y(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 y(this.config,{query:`
1065
+ query getLabelsForRepo(
1066
+ $fullPath: ID!
1067
+ $after: String
1068
+ ) {
1069
+ project(
1070
+ fullPath: $fullPath
1071
+ ) {
1072
+ webUrl
1073
+ milestones(after: $after) {
1074
+ nodes {
1075
+ ${Xe}
1076
+ }
1077
+ pageInfo {
1078
+ endCursor
1079
+ hasNextPage
1080
+ }
1081
+ }
1082
+ }
1083
+ }
1084
+ `,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,b;return et(m,((b=(h=a.body.data)==null?void 0:h.project)==null?void 0:b.webUrl)||"")}))??[]}}async getLabelsForRepo(s,e={}){var i,u,l,p,d,c,g;let{repo:{namespace:t,name:n},cursor:o}=s,a=await y(this.config,{query:`
1085
+ query getLabelsForRepo(
1086
+ $fullPath: ID!
1087
+ $after: String
1088
+ ) {
1089
+ project(
1090
+ fullPath: $fullPath
1091
+ ) {
1092
+ labels(after: $after) {
1093
+ nodes {
1094
+ ${Ze}
1095
+ }
1096
+ pageInfo {
1097
+ endCursor
1098
+ hasNextPage
1099
+ }
1100
+ }
1101
+ }
1102
+ }
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.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(Ye))??[]}}};var xr="https://api.atlassian.com/ex/jira",be=100,tt=["assignee","comment","summary","created","creator","updated","votes","issuetype","status","labels","components","project","fixVersions","description"],rt=(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)??""]??[];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:ye(r.fields.creator,e,o),updatedDate:new Date(r.fields.updated),assignees:n?[ye(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:Qr(r.fields.status),statusTransitions:((i=r.transitions)==null?void 0:i.map(kr))??[],components:((u=r.fields.components)==null?void 0:u.map(Nr))??[],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(_r),fixVersions:r.fields.fixVersions.map(Br)}},kr=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}}},Nr=r=>({description:r.description??null,id:r.id,name:r.name}),Fr=(r,s,e)=>e&&r.name?`${s}/secure/ViewProfile.jspa?name=${encodeURIComponent(r.name)}`:`${s}/jira/people/${r.accountId}`,ye=(r,s,e)=>({id:(e?r.key:r.accountId)??"",name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrls["48x48"],username:r.displayName,url:Fr(r,s,e)}),Qr=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}},_r=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}),Br=r=>({id:r.id,description:r.description,name:r.name,archived:r.archived,released:r.released,releaseDate:r.releaseDate?new Date(r.releaseDate):null}),_=(r,s,e)=>e?`${s.baseUrl||xr}/${e}`:`${(s==null?void 0:s.baseUrl)||r.baseUrl}`,we=async(r,s,e={})=>{let{resourceId:t}=s;return(await r.request({url:`${_(r,e,t)}/rest/api/2/field`,headers:I(e.token||r.token)})).body},Pe=async(r,s,e,t={})=>{let{number:n,resourceId:o,fields:a}=s||{},i=await r.request({url:`${_(r,t,o)}/rest/api/2/issue/${n}?fields=${tt.join(",")}&expand=transitions`,headers:I(t.token||r.token)});return{data:rt(i.body,a,e,o)}},Se=async(r,s,e,t={})=>{let{page:n,resourceId:o,labelNames:a,fields:i}=s||{},u=n??0,l=["statusCategory != Done",`(creator = currentUser() OR assignee = currentUser()
1104
+ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUser())`];a&&a.forEach(m=>l.push(`labels = "${m}"`));let p=`${l.join(" AND ")} ORDER BY updated DESC`,c=(await r.request({url:`${_(r,t,o)}/rest/api/2/search?jql=${p}&startAt=${u}&maxResults=${be}&fields=${tt.join(",")}&expand=transitions`,headers:I(t.token||r.token)})).body.issues.map(m=>rt(m,i,e,o)),g=c.length==be;return{data:c,pageInfo:{hasNextPage:g,nextPage:g?u+c.length:null}}},Dt=async(r,s,e,t={})=>{let{page:n,resourceId:o,jql:a,fields:i}=s||{},u=n??0,l=[...tt],p=i==null?void 0:i.Sprint;p&&l.push(p);let c=(await r.request({url:`${_(r,t,o)}/rest/api/2/search?jql=${a.join(" AND ")}&startAt=${u}&maxResults=${be}&fields=${l.join(",")}&expand=transitions`,headers:I(t.token||r.token)})).body.issues.map(m=>rt(m,i,e,o)),g=c.length==be;return{data:c,pageInfo:{hasNextPage:g,nextPage:g?u+c.length:null}}},ve=async(r,s,e,t={})=>{let{assigneeLogins:n,authorLogin:o,mentionLogin:a,labelNames:i,page:u,projectKey:l,resourceId:p,fields:d}=s||{},c=u??0,g=[`project = "${l}"`,"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}"`)),Dt(r,{resourceId:p,jql:g,page:c,fields:d},e,t)},qe=async(r,s,e,t={})=>{let{assigneeLogins:n,authorLogin:o,mentionLogin:a,labelNames:i,page:u,projectKeys:l,resourceId:p,fields:d}=s||{},c=u??0,m=["("+l.map(h=>`project = "${h}"`).join(" OR ")+")","statusCategory != Done"];return o&&m.push(`creator in ("${o}")`),n&&n.length!==0&&m.push(`assignee in ("${n.join('", "')}")`),a&&m.push(`comment ~ "${a}"`),i&&i.forEach(h=>m.push(`labels = "${h}"`)),Dt(r,{resourceId:p,jql:m,fields:d,page:c},e,t)},Ee=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:`${_(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"}})},Ce=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:`${_(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,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:`${_(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"}})},De=async(r,s,e={})=>{let{resourceId:t,projectIdOrKey:n}=s,o=new URL(`${_(r,e,t)}/rest/api/2/project/${n}/components`);return{data:(await r.request({url:o.toString(),headers:I(e.token||r.token)})).body}};var se="https://api.atlassian.com/ex/jira",st=100,Y=class extends D{constructor(){super(...arguments);this._resourceUrlCache={};this._issueFieldsCache={}}async getIssueFieldsForResource(e,t={}){if(!this._issueFieldsCache[e.resourceId]){let n=await we(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||se}/${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: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:I(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||se}/${e.resourceId}/rest/api/2/project/search`);n.searchParams.set("maxResults",st.toString()),e.cursor&&n.searchParams.set("startAt",e.cursor);let o=await this.config.request({url:n.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 n=[];return await Promise.all(e.resourceIds.map(async o=>{try{return await pt(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||se}/${n}/rest/api/2/user/assignable/search`);u.searchParams.set("maxResults",st.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=>ye(p,i,!1))}}async getComponentsForJiraProject(e,t={}){return await De(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 Pe(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 ve(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 qe(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 Se(this.config,{...e,fields:n},o,t)}async setIssueStatus(e,t={}){await Ue(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||se}/${n.project.resourceId}/rest/api/2/issue/${n.id}/assignee`,body:JSON.stringify(a),headers:{...I(t.token||this.config.token),"Content-Type":"application/json"}})}async setIssueComponents(e,t={}){await Ce(this.config,e,t)}async setIssueLabels(e,t={}){await Ee(this.config,e,t)}async getLabelsForResource(e,t={}){let{resourceId:n,cursor:o}=e,a=new URL(`${t.baseUrl||se}/${n}/rest/api/2/label`);a.searchParams.set("maxResults",st.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 ee=class extends G{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 we(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: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(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 Pe(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 ve(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 qe(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 Se(this.config,{...e,fields:o},n,t)}async setIssueStatus(e,t={}){await Ue(this.config,e,t)}async setIssueLabels(e,t={}){await Ee(this.config,e,t)}async setIssueComponents(e,t={}){await Ce(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:n})=>({color:null,description:null,id:null,name:n}))}}async getComponentsForJiraProject(e,t={}){return await De(this.config,e,t)}};var T="https://api.trello.com",jr=1e3,Mr=r=>({id:r.id,username:r.username,url:r.url,name:r.fullName,email:r.email,avatarUrl:r.avatarUrl}),zr=(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}))}},te=class extends D{async getCurrentUser(s,e={}){let t=await this.config.request({url:`${e.baseUrl||T}/1/members/me?key=${s.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(s,e={}){return{data:(await this.config.request({url:`${e.baseUrl||T}/1/members/me/boards?fields=name&key=${s.appKey}&token=${e.token||this.config.token}&filter=open`,headers:I(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||T}/1/boards/${n}/lists?key=${t}&token=${e.token||this.config.token}`,headers:I(e.token||this.config.token)})).body}}async getAccountForId(s,e={}){let{appKey:t,memberId:n}=s,o=await this.config.request({url:`${e.baseUrl||T}/1/members/${n}/?key=${t}&token=${e.token||this.config.token}`});return{data:Mr(o.body)}}async getAccountsForTrelloBoard(s,e={}){let{appKey:t,boardId:n}=s;return{data:(await this.config.request({url:`${e.baseUrl||T}/1/boards/${n}/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(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||T}/1/search?key=${n}&query=${p}&cards_limit=${jr}&token=${e.token||this.config.token}&card_members=true`,headers:I(e.token||this.config.token)})).body.cards.map(c=>zr(c,l||{}))}}async updateIssue(s,e,t,n){return await this.config.request({method:"PUT",url:`${n.baseUrl||T}/1/cards/${e.id}?key=${s}&token=${n.token||this.config.token}&${t}`,headers:I(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||T}/1/cards/${n.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(s,e={}){let{appKey:t,issue:n,archived:o}=s;if(!(await this.config.request({method:"PUT",url:`${e.baseUrl||T}/1/cards/${n.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(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||T}/1/boards/${n}/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 Lt=r=>{let s={request:r==null?void 0:r.request};return{azureDevOps:new W({...s,...r==null?void 0:r.azureDevOps}),bitbucket:new J({...s,...r==null?void 0:r.bitbucket}),bitbucketServer:new K({...s,...r==null?void 0:r.bitbucketServer}),github:new V({...s,...r==null?void 0:r.github}),gitlab:new Z({...s,...r==null?void 0:r.gitlab}),jira:new Y({...s,...r==null?void 0:r.jira}),jiraServer:new ee({...s,...r==null?void 0:r.jiraServer}),trello:new te({...s,...r==null?void 0:r.trello})}};var $t=(a=>(a.Conflicts="conflicts",a.Failure="failure",a.NotSet="notSet",a.Queued="queued",a.RejectedByPolicy="rejectedByPolicy",a.Succeeded="succeeded",a))($t||{});var At=(e=>(e.Zero="0",e.One="1",e))(At||{}),Gt=(e=>(e.PullRequest="pr",e.Issue="issue",e))(Gt||{}),Tt=(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))(Tt||{});var Ot=(e=>(e.Completed="COMPLETED",e.NotPlanned="NOT_PLANNED",e))(Ot||{});var Hr=Lt;