@gitkraken/provider-apis 0.32.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";var _e=Object.defineProperty;var cr=Object.getOwnPropertyDescriptor;var gr=Object.getOwnPropertyNames;var mr=Object.prototype.hasOwnProperty;var hr=(r,s)=>{for(var e in s)_e(r,e,{get:s[e],enumerable:!0})},fr=(r,s,e,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let n of gr(s))!mr.call(r,n)&&n!==e&&_e(r,n,{get:()=>s[n],enumerable:!(t=cr(s,n))||t.enumerable});return r};var Rr=r=>fr(_e({},"__esModule",{value:!0}),r);var js={};hr(js,{AzureDevOps:()=>H,Bitbucket:()=>J,BitbucketServer:()=>V,EntityIdentifierProviderType:()=>lr,EntityType:()=>ur,EntityVersion:()=>ir,GitBuildStatusStage:()=>Pt,GitBuildStatusState:()=>ue,GitDiffLineType:()=>Fe,GitHub:()=>X,GitHubIssueCloseReason:()=>pr,GitIssueState:()=>me,GitLab:()=>Y,GitMergeStrategy:()=>W,GitPullRequestMergeableState:()=>M,GitPullRequestReviewState:()=>F,GitPullRequestState:()=>z,GraphQLErrors:()=>f,Jira:()=>ee,JiraServer:()=>te,PullRequestAsyncStatus:()=>ar,Trello:()=>re,default:()=>Qs,isFetch:()=>le});module.exports=Rr(js);var Pt=(n=>(n.Build="build",n.Production="production",n.Staging="staging",n.Test="test",n))(Pt||{}),ue=(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))(ue||{}),W=(o=>(o.MergeCommit="MERGE_COMMIT",o.Rebase="REBASE",o.RebaseThenMergeCommit="REBASE_THEN_MERGE_COMMIT",o.FastForward="FAST_FORWARD",o.Squash="SQUASH",o))(W||{}),z=(t=>(t.Open="OPEN",t.Closed="CLOSED",t.Merged="MERGED",t))(z||{}),F=(n=>(n.Approved="APPROVED",n.ChangesRequested="CHANGES_REQUESTED",n.Commented="COMMENTED",n.ReviewRequested="REVIEW_REQUESTED",n))(F||{}),M=(u=>(u.Behind="BEHIND",u.Blocked="BLOCKED",u.Conflicts="CONFLICTS",u.FailingChecks="FAILING_CHECKS",u.Mergeable="MERGEABLE",u.Unknown="UNKNOWN",u.UnknownAndBlocked="UNKNOWN_AND_BLOCKED",u.Unstable="UNSTABLE",u))(M||{}),Fe=(t=>(t.ADDED="ADDED",t.DELETED="DELETED",t.UNMODIFIED="UNMODIFIED",t))(Fe||{});var wt={APPROVED:0,COMMENTED:1,REVIEW_REQUESTED:2,CHANGES_REQUESTED:3},G=r=>!r||r.length===0?null:r.reduce((s,e)=>wt[e.state]>wt[s]?e.state:s,"APPROVED");var S=100;var St=globalThis.fetch;var Ir=async r=>{let s=r.headers.get("content-type")||"",e=null;if(s.startsWith("application/json")){let o=await r.text();e=o.trim().length>0?JSON.parse(o):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={};r.headers.forEach((o,a)=>{t[a]=o});let n={body:e,headers:t,status:r.status,statusText:r.statusText};if(!r.ok){let o=new Error(r.statusText);throw Object.assign(o,{response:n}),o}return n},Qe=r=>async({url:s,...e})=>{let t=await r(s,e);return Ir(t)};var le=(r,s=!1)=>r.name==="fetch"||s;var U=class{constructor(s){let e=s?.request||St;this.config={...s,request:le(e,s?.forceIsFetch)?Qe(e):e}}updateConfig(s){this.config={...this.config,...s,request:s.request&&le(s.request,s?.forceIsFetch??this.config.forceIsFetch)?Qe(s.request):this.config.request}}},L=class extends U{};var h=(r,s)=>{let e={};return r&&(e.Authorization=`${s?"Basic":"Bearer"} ${r}`),e},vt=r=>r?r.reduce((s,e)=>(s[e]=!0,s),{}):void 0,Q=(r,s,e)=>!r||s.some(t=>r[t])?e:"",qt=async r=>{let s=[],e=!0,t;for(;e;){let n=await r(t);s=s.concat(n.data),e=!!n?.pageInfo?.hasNextPage,t=n?.pageInfo?.endCursor||n?.pageInfo?.nextPage}return s};async function je(r){return(await Promise.allSettled(r)).map(e=>br(e)).filter(e=>e!=null)}function br(r,s=void 0){return r?.status==="fulfilled"?r.value:s}var yr="https://app.vssps.visualstudio.com/_apis",Pr="https://vssps.dev.azure.com/",wr="https://dev.azure.com",P=(r,s={})=>h(s.token||r.token,s.isPAT||r.isPAT),Et=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/"),Be=(r,s)=>{let e=s.baseUrl||r.baseUrl||yr;return e=e.replace(/\/$/,""),e},w=(r,s)=>{let e=s.baseUrl||r.baseUrl||wr;return e=e.replace(/\/$/,""),e},ze=(r,s)=>{let e=s.baseUrl||r.baseUrl||Pr;return e=e.replace(/\/$/,""),e};var Sr={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},vr={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},Me=r=>({id:r.id,name:r.displayName??null,username:(r.uniqueName||r.displayName)??null,email:null,avatarUrl:r.imageUrl??null,url:null}),de=r=>r.startsWith("refs/heads/")?r.replace("refs/heads/",""):r,qr=r=>{switch(r){case"conflicts":return"CONFLICTS";case"failure":return"FAILING_CHECKS";case"rejectedByPolicy":return"BLOCKED";case"succeeded":return"MERGEABLE";case"notSet":case"queued":default:return"UNKNOWN"}},pe=(r,s)=>{let e=[],t=[];return s.reviewers.forEach(n=>{let o={reviewer:Me(n),state:vr[n.vote??0]||"REVIEW_REQUESTED"};n.isRequired&&e.push(o),t.push(o)}),{id:s.pullRequestId.toString(),title:s.title,description:s.description??null,number:s.codeReviewId,state:Sr[s.status],isDraft:s.isDraft,commentCount:null,upvoteCount:null,author:Me(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:de(s.targetRefName),oid:s.lastMergeTargetCommit.commitId},headRef:{name:de(s.sourceRefName),oid:s.lastMergeSourceCommit.commitId},url:Et(s),assignees:s.reviewers.map(Me),reviews:t,reviewDecision:G(e),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:s.forkSource?{id:s.forkSource.repository.id,name:s.forkSource.repository.name,project:void 0,owner:{login:r},remoteInfo:null}:{id:s.repository.id,name:s.repository.name,project:s.repository.project.name,owner:{login:r},remoteInfo:null},mergeableState:qr(s.mergeStatus),labels:s.labels?.map(n=>({color:null,description:null,id:n.id,name:n.name}))??[],permissions:null}},Ct=(r,s)=>({id:s.id,name:s.name,namespace:r,project:s.project.name,projectId:s.project.id,webUrl:s.webUrl,httpsUrl:s.remoteUrl,sshUrl:s.sshUrl,defaultBranch:s.defaultBranch?{name:de(s.defaultBranch)}:null,permissions:null}),Er=(r,s,e,t)=>{let n=e.fields,o=n["System.AssignedTo"],a=n["System.State"],i=n["System.WorkItemType"],u;return a&&i&&(u=t[i]?.[a]),{id:e.id.toString(),number:e.id.toString(),title:n["System.Title"],commentCount:n["System.CommentCount"],author:{avatarUrl:n["System.CreatedBy"]._links?.avatar?.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:o._links?.avatar?.href??null,email:null,id:o.id,name:o.uniqueName??null,username:o.displayName??null,url:null}]:[],description:n["System.Description"]??null,state:{name:u?.title||a,color:null},type:n["System.WorkItemType"],repository:null,project:{namespace:r,name:s,resourceId:null,key:null,id:null},upvoteCount:0,labels:e.fields["System.Tags"]?.split(";").map(l=>({color:null,description:null,id:null,name:l.trim()}))??[]}},H=class extends L{async getCurrentUser(s={},e={}){if(e.isPAT||this.config.isPAT)throw new Error("Azure DevOps does not support PATs for this function.");let t=`${Be(this.config,e)}/profile/profiles/me`,n=await this.config.request({url:t,headers:P(this.config,e)});return{data:{id:n.body.id,name:n.body.displayName,username:n.body.displayName,email:n.body.emailAddress,avatarUrl:null,url:null}}}async getCurrentUserForInstance(s,e={}){let n=(await this.config.request({url:`${w(this.config,e)}/${encodeURIComponent(s.namespace)}/_apis/ConnectionData`,headers:P(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,url:null}}}async getUserForCommit(s,e={}){if(!s.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=(await this.config.request({url:`${w(this.config,e)}/${encodeURIComponent(s.repo.namespace)}/${encodeURIComponent(s.repo.project)}/_apis/git/repositories/${encodeURIComponent(s.repo.name)}/commits/${s.oid}`,headers:P(this.config,e)})).body.author;return{data:{name:n.name,email:n.email,avatarUrl:n.imageUrl}}}async getOrgsForUser(s,e={}){let t=`${Be(this.config,e)}/accounts?memberId=${s.userId}&api-version=6.0`;return{data:(await this.config.request({url:t,headers:P(this.config,e)})).body.value.map(o=>({id:o.accountId,name:o.accountName}))}}async getCollectionsForUser(s,e={}){let t=`${w(this.config,e)}/_apis/projectCollections`;return{data:(await this.config.request({url:t,headers:P(this.config,e)})).body.value.map(o=>({id:o.id,name:o.name}))}}async getAzureProjects(s,e={}){let t=new URL(`${w(this.config,e)}/${encodeURIComponent(s.namespace)}/_apis/projects`);t.searchParams.set("$top",S.toString()),s.cursor&&t.searchParams.set("$skip",s.cursor);let n=await this.config.request({url:t.toString(),headers:P(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:`${ze(this.config,e)}/${encodeURIComponent(t)}/_apis/graph/descriptors/${n}?api-version=6.0`,headers:P(this.config,e)})).body.value}}}async getAzureGraphAccountsForAzureProject(s,e={}){let{namespace:t,projectScopeDescriptor:n,cursor:o}=s,a=new URL(`${ze(this.config,e)}/${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:P(this.config,e)}),u=i.headers["x-ms-continuationtoken"];return{pageInfo:{endCursor:u||null,hasNextPage:!!u},data:i.body.value.map(l=>({avatarUrl:l._links?.avatar?.href??null,descriptor:l.descriptor??null,email:l.mailAddress??null,name:l.displayName??null,storageKeyURL:l._links?.storageKey?.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:P(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:`${w(this.config,e)}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/git/repositories/${encodeURIComponent(s.name)}`,headers:P(this.config,e)});return{data:Ct(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:`${w(this.config,e)}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/git/repositories`,headers:P(this.config,e)})).body.value.map(n=>Ct(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(`${w(this.config,t)}/${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",S.toString()),e.cursor&&n.searchParams.set("continuationToken",e.cursor);let o=await this.config.request({url:n.toString(),headers:P(this.config,t)}),a=o.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!a,endCursor:a||null},data:o.body.value.map(i=>({name:de(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:`${w(this.config,e)}/${encodeURIComponent(o.namespace)}/${encodeURIComponent(o.project||"")}/_apis/git/repositories/${encodeURIComponent(o.name)}/pullRequests?${l}&%24top=${t}&%24skip=${(u-1)*t}`,headers:P(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=>pe(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(pe(o.namespace,i))})}catch(a){if(a.statusCode!==404&&a.statusCode!==401)throw a}})),{data:n}}async getPullRequestsForProjectBase(s,e={},t=100){let{namespace:n,project:o,page:a,assigneeLogins:i,authorLogin:u,repo:l}=s;if(l?.project&&l.project!==o)throw new Error("Could not fetch pull requests, project mismatch");let p=a||1,d=new URL(`${w(this.config,e)}/${encodeURIComponent(n)}/${encodeURIComponent(o)}/_apis/git/pullRequests`);return d.searchParams.set("searchCriteria.status","1"),d.searchParams.set("$top",t.toString()),d.searchParams.set("$skip",((p-1)*t).toString()),l?.id&&l?.project===o&&d.searchParams.set("searchCriteria.repositoryId",l.id),i&&i.length&&d.searchParams.set("searchCriteria.reviewerId",i[0]),u&&d.searchParams.set("searchCriteria.creatorId",u),await this.config.request({url:d.toString(),headers:P(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=>pe(s.namespace,a))||[]}}async getPullRequestsForProjects(s,e={}){let{projects:t}=s||{},n=[];return await Promise.all(t.map(async o=>{try{(!s.repo||s.repo.project&&s.repo.project===o.project)&&(await this.getPullRequestsForProjectBase({...o,...s},e))?.body.value.forEach(i=>{n.push(pe(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:`${w(this.config,e)}/${encodeURIComponent(t)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${a}?includeCommits=true?api-version=6.0`,headers:{...P(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:`${w(this.config,t)}/${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:{...P(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={}){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:t.headRef?.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:`${w(this.config,e)}/${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:{...P(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:`${w(this.config,e)}/${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:{...P(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:`${w(this.config,e)}/${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:{...P(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:`${w(this.config,e)}/${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:{...P(this.config,e),Accept:"application/json"}})}async setPullRequestReviewers(s,e={}){let{pullRequest:t,reviewers:n}=s;for(let o of n)t.assignees.find(a=>a.id===o.id)||await this.addPullRequestReviewer({pullRequest:t,reviewer:o,isRequired:!0},e);for(let o of t.assignees)n.find(a=>o.id===a.id)||await this.removePullRequestReviewer({pullRequest:t,reviewer:o},e)}async getIssuesForAzureProject(s,e={}){let{page:t,assigneeLogins:n,authorLogin:o,mentionLogin:a,labelNames:i,statusByWorkItemIdByStatusId:u}=s||{},l=t||1,p=200,d=["[Microsoft.VSTS.Common.ClosedDate] = ''","[System.TeamProject] = @project","[Microsoft.VSTS.Common.ResolvedDate] = ''"];o&&d.push(`[System.CreatedBy] = '${o.replace("'","''")}'`),n&&n[0]&&d.push(`[System.AssignedTo] = '${n[0].replace("'","''")}'`),a&&d.push("[System.Id] IN (@recentMentions)"),i&&i.forEach(I=>d.push(`[System.Tags] Contains '${I}'`));let c=`Select [Microsoft.VSTS.Common.ClosedDate], [Microsoft.VSTS.Common.ResolvedDate] From WorkItems Where ${d.join(" AND ")} order by [System.CreatedDate] desc`,g=await this.config.request({url:`${w(this.config,e)}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/wit/wiql?api-version=6.0`,body:JSON.stringify({query:c}),method:"POST",headers:{...P(this.config,e),"Content-Type":"application/json"}}),m=g.body.workItems.slice((l-1)*p,p*l).map(I=>I.id);if(m.length==0)return{pageInfo:{hasNextPage:!1,nextPage:null},data:[]};let b=await this.config.request({url:`${w(this.config,e)}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/wit/workitemsbatch?api-version=6.0`,body:JSON.stringify({ids:m,$expand:"Links"}),method:"POST",headers:{...P(this.config,e),"Content-Type":"application/json"}});return{pageInfo:{hasNextPage:g.body.workItems.length>p*l,nextPage:l+1},data:b.body.value.map(I=>Er(s.namespace,s.project,I,u||{}))}}async getPermissionsForRepos(s,e={}){let{namespace:t,repos:n}=s,o={4:["canPush","canCreateWebhook"],1024:["isAdmin"],2048:["isAdmin"],4096:["isAdmin"],8192:["isAdmin"]},a=p=>{let d="2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87",c=`repoV2/${p.projectId}/${p.id}`;return Object.keys(o).map(g=>({securityNamespaceId:d,token:c,permissions:g}))},i={alwaysAllowAdministrators:!1,evaluations:n.flatMap(a)};return{data:(await this.config.request({method:"POST",url:`${w(this.config,e)}/${encodeURIComponent(t)}/_apis/security/permissionevaluationbatch?api-version=7.0`,body:JSON.stringify(i),headers:{...P(this.config,e),"Content-Type":"application/json"}})).body.evaluations.reduce((p,d)=>{let[,c,g]=d.token.split("/"),m=`${c}/${g}`,b=o[d.permissions];for(let I of b)p[m]===void 0&&(p[m]={canCreateWebhook:!0,canPush:!0,isAdmin:!0}),d.value===!1&&(p[m][I]=!1);return p},{})}}async decorateReposWithPermissions(s,e={}){let{namespace:t,repos:n}=s,o=await this.getPermissionsForRepos({namespace:t,repos:n},e);return{data:n.map(a=>({...a,permissions:o.data[`${a.projectId}/${a.id}`]}))}}async updateIssue(s,e,t={}){return await this.config.request({method:"PATCH",url:`${w(this.config,t)}/${encodeURIComponent(s.project.namespace)}/${encodeURIComponent(s.project.name)}/_apis/wit/workitems/${s.id}?api-version=6.0`,body:JSON.stringify(e),headers:{...P(this.config,t),"Content-Type":"application/json-patch+json"}})}async setIssueStatus(s,e={}){let{issue:t,status:n}=s,o=[{op:"add",path:"/fields/System.State",value:n.name}];if(!(await this.updateIssue(t,o,e)).body.fields?.["System.State"])throw new Error("Could not set issue status")}async setIssueAssignee(s,e={}){let{issue:t,assignee:n}=s,o=[{op:"add",path:"/fields/System.AssignedTo",value:n?.name??""}];if(!(await this.updateIssue(t,o,e)).body.fields?.["System.State"])throw new Error("Could not set issue assignee")}async setIssueLabels(s,e={}){let{issue:t,labels:n}=s,a=[{op:"replace",path:"/fields/System.Tags",value:n.map(u=>u.name).join(";")}];if(!(await this.updateIssue(t,a,e)).body.fields?.["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:`${w(this.config,e)}/${encodeURIComponent(t)}/${encodeURIComponent(n||"")}/_apis/wit/workitemtypes?api-version=6.0`,headers:{...P(this.config,e)}})).body.value}}async getLabelsForProject(s,e={}){let{namespace:t,project:n}=s;return{data:(await this.config.request({url:`${w(this.config,e)}/${encodeURIComponent(t)}/${encodeURIComponent(n||"")}/_apis/wit/tags?api-version=6.0`,headers:{...P(this.config,e)}})).body.value.map(a=>({color:null,description:null,id:a.id,name:a.name,url:a.url}))}}};var q=(r,s={})=>h(s.token||r.token,s.isPAT||r.isPAT);var E="https://api.bitbucket.org/2.0",Cr={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},ce=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}),Lt=r=>{let s=r.links.clone,e=s?.find(n=>n.name==="ssh"),t=s?.find(n=>n.name==="https");return e&&t?{cloneUrlHTTPS:t.href,cloneUrlSSH:e.href}:null},Dt=r=>({id:r.uuid,namespace:r.workspace.slug,name:r.slug,webUrl:r.links.html.href,httpsUrl:r.links.clone.find(s=>s.name==="https")?.href??null,sshUrl:r.links.clone.find(s=>s.name==="ssh")?.href??null,defaultBranch:{name:r.mainbranch.name},permissions:null}),We=r=>{let s=r.id,e=r.participants?.map(t=>{let n="REVIEW_REQUESTED";return t.approved?n="APPROVED":t.state==="changes_requested"?n="CHANGES_REQUESTED":t.participated_on!==null&&(n="COMMENTED"),{reviewer:ce(t.user),state:n}})??[];return{id:s.toString(),title:r.title,description:r.description,number:s,state:Cr[r.state],isDraft:!1,commentCount:r.comment_count,upvoteCount:null,author:ce(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:Lt(r.destination.repository)},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:e,reviewDecision:G(e),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:{id:r.source.repository.uuid,name:r.source.repository.name,owner:{login:r.source.repository.full_name.split("/")[0]},remoteInfo:Lt(r.source.repository)},mergeableState:"MERGEABLE",permissions:null}},Lr=r=>{switch(r){case"owner":case"admin":return{canCreateWebhook:!0,canPush:!0,isAdmin:!0};case"write":return{canCreateWebhook:!1,canPush:!0,isAdmin:!1};case"read":case"none":return{canCreateWebhook:!1,canPush:!1,isAdmin:!1}}},J=class extends U{async refreshToken(s){return{data:(await this.config.request({url:"https://bitbucket.org/site/oauth2/access_token",method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Authorization:`Basic ${s.base64ClientIDColonClientSecret}`},body:`grant_type=refresh_token&refresh_token=${s.refreshToken}`})).body}}async getCurrentUser(s={},e={}){let t=await this.config.request({url:`${E}/user`,headers:q(this.config,e)});return{data:ce(t.body)}}async getUserForCommit(s,e={}){let n=(await this.config.request({url:`${E}/repositories/${s.repo.namespace}/${s.repo.name}/commit/${s.oid}`,headers:q(this.config,e)})).body.author,o=n.raw.match(/([^<]+)<(.+)>/);return{data:{name:o?o[1].trim():null,email:o?o[2]:null,avatarUrl:n.user?.links.avatar.href||null}}}async getRepo(s,e={}){let t=await this.config.request({url:`${E}/repositories/${s.namespace}/${s.name}`,headers:q(this.config,e)});return{data:Dt(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(`${E}/repositories`);t.searchParams.set("role","member"),t.searchParams.set("pagelen",S.toString()),s.cursor&&t.searchParams.set("after",s.cursor);let n=await this.config.request({url:t.toString(),headers:q(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(Dt)}}async getBranches(s,e={}){let t=new URL(`${E}/repositories/${s.repo.namespace}/${s.repo.name}/refs/branches`);t.searchParams.set("page",s.page?.toString()||"1"),t.searchParams.set("pagelen",S.toString());let n=await this.config.request({url:t.toString(),headers:q(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(a=>{let i=new Date(a.target.date);return{name:a.name,commit:{oid:a.target.hash,authoredDate:i,committedDate:i}}})}}async getTags(s,e={}){let t=new URL(`${E}/repositories/${s.repo.namespace}/${s.repo.name}/refs/tags`);t.searchParams.set("pagelen",S.toString()),s.cursor&&t.searchParams.set("page",s.cursor);let n=await this.config.request({url:t.toString(),headers:q(this.config,e)}),o=!!n.body.next,a=null;return n.body.next&&(a=new URL(n.body.next).searchParams.get("page")),{pageInfo:{hasNextPage:o,endCursor:a},data:n.body.values.map(i=>{let u=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:u,committedDate:u}}})}}async getWorkspacesForUser(s,e={}){let t=new URL(`${E}/user/permissions/workspaces`);t.searchParams.set("page",s.page?.toString()||"1"),t.searchParams.set("pagelen","50");let n=await this.config.request({url:t.toString(),headers:q(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(a=>({id:a.workspace.uuid,slug:a.workspace.slug,name:a.workspace.name}))}}async getPullRequestsForUserAndWorkspace(s,e={}){let t=new URL(`${E}/workspaces/${s.workspaceSlug}/pullrequests/${s.userId}`);if(t.searchParams.set("fields","+values.participants,+values.destination.repository.links.clone.*,+values.source.repository.links.clone.*"),t.searchParams.set("page",s.page?.toString()||"1"),t.searchParams.set("pagelen","50"),s.repos&&s.repos.length>0){let a=`state = "open" AND (${s.repos.map(i=>`source.repository.full_name = "${i.namespace}/${i.name}"`).join(" OR ")})`;t.searchParams.set("q",a)}let n=await this.config.request({url:t.toString(),headers:q(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(We)}}async getPullRequestsForRepoBase(s,e={}){let t=new URL(`${E}/repositories/${encodeURI(s.repo.namespace)}/${encodeURI(s.repo.name)}/pullrequests?state=OPEN`),n=[];s.reviewerId&&n.push(`reviewers.uuid="${s.reviewerId}"`),s.authorLogin&&n.push(`author.uuid="${s.authorLogin}"`);let o='state="OPEN"';return n.length&&(o+=` AND (${n.join(s.useOrFilter?" OR ":" AND ")})`),t.searchParams.set("fields","+values.participants,+values.destination.repository.links.clone.*,+values.source.repository.links.clone.*"),t.searchParams.set("page",s.page?.toString()||"1"),t.searchParams.set("pagelen","50"),t.searchParams.set("q",o),await this.config.request({url:t.toString(),headers:q(this.config,e)})}async getPullRequestsForRepo(s,e={}){let t=[],n=await this.getPullRequestsForRepoBase(s,e);n.body.values.forEach(a=>{t.push(We(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=>{t.push(We(a))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:t}}async getAccountsForWorkspace(s,e={}){let t=new URL(`${E}/workspaces/${encodeURI(s.workspace)}/members`);t.searchParams.set("page",s.page?.toString()||"1"),t.searchParams.set("pagelen","100");let n=await this.config.request({url:t.toString(),headers:q(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(a=>ce(a.user))}}async getReposPermissionsForCurrentUser(s,e={}){let t=new URL(`${E}/user/permissions/repositories`);t.searchParams.set("page",s.page?.toString()||"1"),t.searchParams.set("pagelen","100");let n=await this.config.request({url:t.toString(),headers:q(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.reduce((a,i)=>({...a,[i.repository.uuid]:Lr(i.permission)}),{})}}async decorateReposWithPermissions(s,e={}){let t={},n=1;do{let o=await this.getReposPermissionsForCurrentUser({page:n},e);t={...o.data,...t},n=o.pageInfo.hasNextPage?o.pageInfo.nextPage:null}while(n!==null);return{data:s.repos.map(o=>({...o,permissions:t[o.id]??{canCreateWebhook:!1,canPush:!1,isAdmin:!1}}))}}async closePullRequest(s,e={}){let{pullRequest:t}=s;if(!(await this.config.request({method:"POST",url:`${E}/repositories/${t.repository.owner.login}/${t.repository.name}/pullrequests/${t.id}/decline`,headers:q(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:`${E}/repositories/${t.repository.owner.login}/${t.repository.name}/pullrequests/${t.id}/merge`,body:JSON.stringify(a),headers:{...q(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:`${E}/repositories/${t.repository.owner.login}/${t.repository.name}/pullrequests/${t.id}`,body:JSON.stringify(o),headers:{...q(this.config,e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not set pull request reviewers")}};var $t=r=>r?r.find(s=>s.permission==="USER_ADMIN"||s.permission==="PROJECT_ADMIN"||s.permission==="ADMIN"||s.permission==="SYS_ADMIN"||s.permission==="REPO_ADMIN")?{canCreateWebhook:!0,canPush:!0,isAdmin:!0}:r.find(s=>s.permission==="REPO_WRITE"||s.permission==="REPO_CREATE"||s.permission==="PROJECT_CREATE"||s.permission==="PROJECT_WRITE")?{canCreateWebhook:!1,canPush:!0,isAdmin:!1}:{canCreateWebhook:!1,canPush:!1,isAdmin:!1}:{canCreateWebhook:!1,canPush:!1,isAdmin:!1};var oe=r=>{let s=r.links.self[0].href;return{name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrl??(s&&`${s}/avatar.png`),id:r.id.toString(),username:r.name,url:s}},ge=r=>{let s={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},e={UNAPPROVED:"REVIEW_REQUESTED",NEEDS_WORK:"CHANGES_REQUESTED",APPROVED:"APPROVED"},t=r.reviewers.map(u=>({reviewer:oe(u.user),state:e[u.status]})),n=r.toRef.repository.links.clone.find(u=>u.name==="ssh")?.href??null,o=r.toRef.repository.links.clone.find(u=>u.name==="https")?.href??null;o||(o=r.toRef.repository.links.clone.find(u=>u.name==="http")?.href??null);let a=r.fromRef.repository.links.clone.find(u=>u.name==="ssh")?.href??null,i=r.fromRef.repository.links.clone.find(u=>u.name==="https")?.href??null;return i||(i=r.fromRef.repository.links.clone.find(u=>u.name==="http")?.href??null),{id:r.id.toString(),number:r.id,title:r.title,description:r.description,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:G(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:"MERGEABLE",permissions:null,version:r.version}},Ut=r=>({id:r.id.toString(),namespace:r.project.key,name:r.slug,webUrl:r.links.self[0]?.href??null,httpsUrl:r.links.clone.find(s=>s.name==="https"||s.name==="http")?.href??null,sshUrl:r.links.clone.find(s=>s.name==="ssh")?.href??null,defaultBranch:null,permissions:null}),V=class extends L{getBaseUrl(s){let e=s.baseUrl||this.config.baseUrl;if(!e)throw new Error('Bitbucket Server requires "baseUrl"');return e}getRequestHeaders(s){return h(s.token||this.config.token)}async 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 getUserForCommit(s,e){let{repo:t,oid:n}=s,o=await this.config.request({url:`${this.getBaseUrl(e)}/projects/${t.namespace}/repos/${t.name}/commits/${n}`,headers:this.getRequestHeaders(e)});if(!o.body.author)throw new Error("Could not find user for commit");return{data:oe(o.body.author)}}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:Ut(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(Ut)}}async getRepoPermissionsForUsername(s,e={}){let t=new URL(`${this.getBaseUrl(e)}/projects/${s.repo.namespace}/repos/${s.repo.name}/permissions/search?filterText=${s.username}`);try{let n=await this.config.request({url:t.toString(),headers:this.getRequestHeaders(e)});return{data:$t(n.body.values)}}catch(n){if(n.response?.status===401)return{data:{canCreateWebhook:!1,canPush:!1,isAdmin:!1}};throw n}}async decorateReposWithPermissions(s,e={}){return await Promise.all(s.repos.map(async n=>{let o=await this.getRepoPermissionsForUsername({repo:n,username:s.username},e);return{...n,permissions:o.data}}))}async getPullRequestsForRepoBase(s,e={}){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",s.page?.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(ge(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(ge(a))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:t}}async getPullRequestsForCurrentUser(s,e={}){let t=new URL(`${this.getBaseUrl(e)}/dashboard/pull-requests`);t.searchParams.set("state","OPEN"),t.searchParams.set("start",s.page?.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(ge)}}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")}async getAccountsForProject(s,e={}){let t=new URL(`${this.getBaseUrl(e)}/projects/${encodeURI(s.project)}/permissions/users`);t.searchParams.set("start",s.page?.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(a=>oe(a.user))}}};var Nt=require("js-base64");var me=(e=>(e.Open="OPEN",e.Closed="CLOSED",e))(me||{});var f=class extends Error{constructor(e,t){let n=t?.map(a=>`'${a.message}'`).join(", "),o=n?`${e}: ${n}`:e;super(o);this.graphQLErrors=t??[]}};var Dr={AS_CODE_OWNER:[3,0,0],CHECK_RUN:[3,0,0],LATEST_REVIEWS:[3,0,0],VIEWER_CAN_MERGE_AS_ADMIN:[3,5,0],ISSUE_FULL_DATABASE_ID:[3,12,0],PR_FULL_DATABASE_ID:[3,13,0],PR_REVIEW_FULL_DATABASE_ID:[3,13,0],PR_REVIEW_COMMENT_FULL_DATABASE_ID:[3,13,0]},At=15,Gt=100,C=r=>!!r,O=(r,s)=>{let e=Dr[s];for(let t=0;t<3;t++){if(r[t]>e[t])return!0;if(r[t]<e[t])return!1}return!0},fe="https://api.github.com",$r=`${fe}/graphql`,Re=`
1
+ "use strict";var Qe=Object.defineProperty;var gr=Object.getOwnPropertyDescriptor;var mr=Object.getOwnPropertyNames;var hr=Object.prototype.hasOwnProperty;var fr=(r,s)=>{for(var e in s)Qe(r,e,{get:s[e],enumerable:!0})},Rr=(r,s,e,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let n of mr(s))!hr.call(r,n)&&n!==e&&Qe(r,n,{get:()=>s[n],enumerable:!(t=gr(s,n))||t.enumerable});return r};var Ir=r=>Rr(Qe({},"__esModule",{value:!0}),r);var Bs={};fr(Bs,{AzureDevOps:()=>J,Bitbucket:()=>V,BitbucketServer:()=>K,EntityIdentifierProviderType:()=>dr,EntityType:()=>pr,EntityVersion:()=>lr,GitBuildStatusStage:()=>St,GitBuildStatusState:()=>pe,GitDiffLineType:()=>je,GitHub:()=>Z,GitHubIssueCloseReason:()=>cr,GitIssueState:()=>fe,GitLab:()=>ee,GitMergeStrategy:()=>W,GitPullRequestMergeableState:()=>H,GitPullRequestReviewState:()=>Q,GitPullRequestState:()=>M,GraphQLErrors:()=>f,Jira:()=>te,JiraServer:()=>re,PullRequestAsyncStatus:()=>ur,Trello:()=>se,default:()=>js,isFetch:()=>de});module.exports=Ir(Bs);var St=(n=>(n.Build="build",n.Production="production",n.Staging="staging",n.Test="test",n))(St||{}),pe=(p=>(p.ActionRequired="ACTION_REQUIRED",p.Cancelled="CANCELLED",p.Error="ERROR",p.Failed="FAILED",p.Pending="PENDING",p.Running="RUNNING",p.Skipped="SKIPPED",p.Success="SUCCESS",p.Warning="WARNING",p.OptionalActionRequired="OPTIONAL_ACTION_REQUIRED",p))(pe||{}),W=(o=>(o.MergeCommit="MERGE_COMMIT",o.Rebase="REBASE",o.RebaseThenMergeCommit="REBASE_THEN_MERGE_COMMIT",o.FastForward="FAST_FORWARD",o.Squash="SQUASH",o))(W||{}),M=(t=>(t.Open="OPEN",t.Closed="CLOSED",t.Merged="MERGED",t))(M||{}),Q=(n=>(n.Approved="APPROVED",n.ChangesRequested="CHANGES_REQUESTED",n.Commented="COMMENTED",n.ReviewRequested="REVIEW_REQUESTED",n))(Q||{}),H=(u=>(u.Behind="BEHIND",u.Blocked="BLOCKED",u.Conflicts="CONFLICTS",u.FailingChecks="FAILING_CHECKS",u.Mergeable="MERGEABLE",u.Unknown="UNKNOWN",u.UnknownAndBlocked="UNKNOWN_AND_BLOCKED",u.Unstable="UNSTABLE",u))(H||{}),je=(t=>(t.ADDED="ADDED",t.DELETED="DELETED",t.UNMODIFIED="UNMODIFIED",t))(je||{});var vt={APPROVED:0,COMMENTED:1,REVIEW_REQUESTED:2,CHANGES_REQUESTED:3},G=r=>!r||r.length===0?null:r.reduce((s,e)=>vt[e.state]>vt[s]?e.state:s,"APPROVED");var v=100;var qt=globalThis.fetch;var br=async r=>{let s=r.headers.get("content-type")||"",e=null;if(s.startsWith("application/json")){let o=await r.text();e=o.trim().length>0?JSON.parse(o):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={};r.headers.forEach((o,i)=>{t[i]=o});let n={body:e,headers:t,status:r.status,statusText:r.statusText};if(!r.ok){let o=new Error(r.statusText);throw Object.assign(o,{response:n}),o}return n},Be=r=>async({url:s,...e})=>{let t=await r(s,e);return br(t)};var de=(r,s=!1)=>r.name==="fetch"||s;var U=class{constructor(s){let e=s?.request||qt;this.config={...s,request:de(e,s?.forceIsFetch)?Be(e):e}}updateConfig(s){this.config={...this.config,...s,request:s.request&&de(s.request,s?.forceIsFetch??this.config.forceIsFetch)?Be(s.request):this.config.request}}},D=class extends U{};var h=(r,s)=>{let e={};return r&&(e.Authorization=`${s?"Basic":"Bearer"} ${r}`),e},Et=r=>r?r.reduce((s,e)=>(s[e]=!0,s),{}):void 0,j=(r,s,e)=>!r||s.some(t=>r[t])?e:"",Ct=async r=>{let s=[],e=!0,t;for(;e;){let n=await r(t);s=s.concat(n.data),e=!!n?.pageInfo?.hasNextPage,t=n?.pageInfo?.endCursor||n?.pageInfo?.nextPage}return s};async function ze(r){return(await Promise.allSettled(r)).map(e=>yr(e)).filter(e=>e!=null)}function yr(r,s=void 0){return r?.status==="fulfilled"?r.value:s}var Pr="https://app.vssps.visualstudio.com/_apis",wr="https://vssps.dev.azure.com/",Sr="https://dev.azure.com",P=(r,s={})=>h(s.token||r.token,s.isPAT||r.isPAT),Lt=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/"),Me=(r,s)=>{let e=s.baseUrl||r.baseUrl||Pr;return e=e.replace(/\/$/,""),e},w=(r,s)=>{let e=s.baseUrl||r.baseUrl||Sr;return e=e.replace(/\/$/,""),e},He=(r,s)=>{let e=s.baseUrl||r.baseUrl||wr;return e=e.replace(/\/$/,""),e};var vr={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},qr={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},We=r=>({id:r.id,name:r.displayName??null,username:(r.uniqueName||r.displayName)??null,email:null,avatarUrl:r.imageUrl??null,url:null}),ge=r=>r.startsWith("refs/heads/")?r.replace("refs/heads/",""):r,Er=r=>{switch(r){case"conflicts":return"CONFLICTS";case"failure":return"FAILING_CHECKS";case"rejectedByPolicy":return"BLOCKED";case"succeeded":return"MERGEABLE";case"notSet":case"queued":default:return"UNKNOWN"}},ce=(r,s)=>{let e=[],t=[];return s.reviewers.forEach(n=>{let o={reviewer:We(n),state:qr[n.vote??0]||"REVIEW_REQUESTED"};n.isRequired&&e.push(o),t.push(o)}),{id:s.pullRequestId.toString(),title:s.title,description:s.description??null,number:s.codeReviewId,state:vr[s.status],isDraft:s.isDraft,commentCount:null,upvoteCount:null,author:We(s.createdBy),createdDate:new Date(s.creationDate),updatedDate:new Date(s.closedDate||s.creationDate),closedDate:s.closedDate?new Date(s.closedDate):null,mergedDate:s.closedDate&&s.status==="completed"?new Date(s.closedDate):null,repository:{id:s.repository.id,name:s.repository.name,project:s.repository.project.name,owner:{login:r},remoteInfo:null},headCommit:{buildStatuses:null},baseRef:{name:ge(s.targetRefName),oid:s.lastMergeTargetCommit.commitId},headRef:{name:ge(s.sourceRefName),oid:s.lastMergeSourceCommit.commitId},url:Lt(s),assignees:s.reviewers.map(We),reviews:t,reviewDecision:G(e),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:s.forkSource?{id:s.forkSource.repository.id,name:s.forkSource.repository.name,project:void 0,owner:{login:r},remoteInfo:null}:{id:s.repository.id,name:s.repository.name,project:s.repository.project.name,owner:{login:r},remoteInfo:null},mergeableState:Er(s.mergeStatus),labels:s.labels?.map(n=>({color:null,description:null,id:n.id,name:n.name}))??[],permissions:null}},Dt=(r,s)=>({id:s.id,name:s.name,namespace:r,project:s.project.name,projectId:s.project.id,webUrl:s.webUrl,httpsUrl:s.remoteUrl,sshUrl:s.sshUrl,defaultBranch:s.defaultBranch?{name:ge(s.defaultBranch)}:null,permissions:null}),Cr=(r,s,e,t)=>{let n=e.fields,o=n["System.AssignedTo"],i=n["System.State"],a=n["System.WorkItemType"],u;return i&&a&&(u=t[a]?.[i]),{id:e.id.toString(),number:e.id.toString(),title:n["System.Title"],commentCount:n["System.CommentCount"],author:{avatarUrl:n["System.CreatedBy"]._links?.avatar?.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:o._links?.avatar?.href??null,email:null,id:o.id,name:o.uniqueName??null,username:o.displayName??null,url:null}]:[],description:n["System.Description"]??null,state:{name:u?.title||i,color:null},type:n["System.WorkItemType"],repository:null,project:{namespace:r,name:s,resourceId:null,key:null,id:null},upvoteCount:0,labels:e.fields["System.Tags"]?.split(";").map(l=>({color:null,description:null,id:null,name:l.trim()}))??[]}},J=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=`${Me(this.config,e)}/profile/profiles/me`,n=await this.config.request({url:t,headers:P(this.config,e)});return{data:{id:n.body.id,name:n.body.displayName,username:n.body.displayName,email:n.body.emailAddress,avatarUrl:null,url:null}}}async getCurrentUserForInstance(s,e={}){let n=(await this.config.request({url:`${w(this.config,e)}/${encodeURIComponent(s.namespace)}/_apis/ConnectionData`,headers:P(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,url:null}}}async getUserForCommit(s,e={}){if(!s.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=(await this.config.request({url:`${w(this.config,e)}/${encodeURIComponent(s.repo.namespace)}/${encodeURIComponent(s.repo.project)}/_apis/git/repositories/${encodeURIComponent(s.repo.name)}/commits/${s.oid}`,headers:P(this.config,e)})).body.author;return{data:{name:n.name,email:n.email,avatarUrl:n.imageUrl}}}async getOrgsForUser(s,e={}){let t=`${Me(this.config,e)}/accounts?memberId=${s.userId}&api-version=6.0`;return{data:(await this.config.request({url:t,headers:P(this.config,e)})).body.value.map(o=>({id:o.accountId,name:o.accountName}))}}async getCollectionsForUser(s,e={}){let t=`${w(this.config,e)}/_apis/projectCollections`;return{data:(await this.config.request({url:t,headers:P(this.config,e)})).body.value.map(o=>({id:o.id,name:o.name}))}}async getAzureProjects(s,e={}){let t=new URL(`${w(this.config,e)}/${encodeURIComponent(s.namespace)}/_apis/projects`);t.searchParams.set("$top",v.toString()),s.cursor&&t.searchParams.set("$skip",s.cursor);let n=await this.config.request({url:t.toString(),headers:P(this.config,e)}),o=n.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!o,endCursor:o||null},data:n.body.value.map(i=>({id:i.id,name:i.name,namespace:s.namespace}))}}async getAzureProjectScopeDescriptor(s,e={}){let{namespace:t,projectId:n}=s;return{data:{scope:(await this.config.request({url:`${He(this.config,e)}/${encodeURIComponent(t)}/_apis/graph/descriptors/${n}?api-version=6.0`,headers:P(this.config,e)})).body.value}}}async getAzureGraphAccountsForAzureProject(s,e={}){let{namespace:t,projectScopeDescriptor:n,cursor:o}=s,i=new URL(`${He(this.config,e)}/${encodeURIComponent(t)}/_apis/graph/users`);n&&i.searchParams.set("scopeDescriptor",n),o&&i.searchParams.set("continuationToken",o);let a=await this.config.request({url:i.toString(),headers:P(this.config,e)}),u=a.headers["x-ms-continuationtoken"];return{pageInfo:{endCursor:u||null,hasNextPage:!!u},data:a.body.value.map(l=>({avatarUrl:l._links?.avatar?.href??null,descriptor:l.descriptor??null,email:l.mailAddress??null,name:l.displayName??null,storageKeyURL:l._links?.storageKey?.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:P(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:`${w(this.config,e)}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/git/repositories/${encodeURIComponent(s.name)}`,headers:P(this.config,e)});return{data:Dt(s.namespace,t.body)}}async getRepos(s,e={}){let t=[],n=[];return await Promise.all(s.map(async o=>{try{let i=await this.getRepo(o,e);t.push(i.data)}catch(i){n.push({input:o,error:i})}})),{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:`${w(this.config,e)}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/git/repositories`,headers:P(this.config,e)})).body.value.map(n=>Dt(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(`${w(this.config,t)}/${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",v.toString()),e.cursor&&n.searchParams.set("continuationToken",e.cursor);let o=await this.config.request({url:n.toString(),headers:P(this.config,t)}),i=o.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!i,endCursor:i||null},data:o.body.value.map(a=>({name:ge(a.name),commit:{oid:a.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:i,authorLogin:a}=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 i&&i.length&&(l+=`&searchCriteria.reviewerId=${i[0]}`),a&&(l+=`&searchCriteria.creatorId=${a}`),await this.config.request({url:`${w(this.config,e)}/${encodeURIComponent(o.namespace)}/${encodeURIComponent(o.project||"")}/_apis/git/repositories/${encodeURIComponent(o.name)}/pullRequests?${l}&%24top=${t}&%24skip=${(u-1)*t}`,headers:P(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(i=>ce(s.repo.namespace,i))}}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(a=>{n.push(ce(o.namespace,a))})}catch(i){if(i.statusCode!==404&&i.statusCode!==401)throw i}})),{data:n}}async getPullRequestsForProjectBase(s,e={},t=100){let{namespace:n,project:o,page:i,assigneeLogins:a,authorLogin:u,repo:l}=s;if(l?.project&&l.project!==o)throw new Error("Could not fetch pull requests, project mismatch");let p=i||1,d=new URL(`${w(this.config,e)}/${encodeURIComponent(n)}/${encodeURIComponent(o)}/_apis/git/pullRequests`);return d.searchParams.set("searchCriteria.status","1"),d.searchParams.set("$top",t.toString()),d.searchParams.set("$skip",((p-1)*t).toString()),l?.id&&l?.project===o&&d.searchParams.set("searchCriteria.repositoryId",l.id),a&&a.length&&d.searchParams.set("searchCriteria.reviewerId",a[0]),u&&d.searchParams.set("searchCriteria.creatorId",u),await this.config.request({url:d.toString(),headers:P(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(i=>ce(s.namespace,i))||[]}}async getPullRequestsForProjects(s,e={}){let{projects:t}=s||{},n=[];return await Promise.all(t.map(async o=>{try{(!s.repo||s.repo.project&&s.repo.project===o.project)&&(await this.getPullRequestsForProjectBase({...o,...s},e))?.body.value.forEach(a=>{n.push(ce(o.namespace,a))})}catch(i){if(i.statusCode!==404&&i.statusCode!==401)throw i}})),{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:i}=s,a=await this.config.request({url:`${w(this.config,e)}/${encodeURIComponent(t)}/${encodeURIComponent(n||"")}/_apis/git/repositories/${o}/pullrequests/${i}?includeCommits=true?api-version=6.0`,headers:{...P(this.config,e)}});if(!a.body.mergeStatus)throw new Error("Could not fetch pull request");return{data:a.body.mergeStatus}}async updatePullRequest(s,e,t){return await this.config.request({method:"PATCH",url:`${w(this.config,t)}/${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:{...P(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={}){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 i={completionOptions:{mergeStrategy:o},lastMergeSourceCommit:{commitId:t.headRef?.oid},status:"completed"};if(!(await this.updatePullRequest(t,JSON.stringify(i),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:`${w(this.config,e)}/${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:{...P(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:`${w(this.config,e)}/${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:{...P(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 i of n)o.find(a=>a.id===i.id)||await this.addPullRequestLabel({pullRequest:t,label:i},e);for(let i of o)n.find(a=>i.id===a.id)||await this.removePullRequestLabel({pullRequest:t,label:i},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,i={id:n.id,isRequired:o};if(!(await this.config.request({method:"PUT",url:`${w(this.config,e)}/${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(i),headers:{...P(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:`${w(this.config,e)}/${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:{...P(this.config,e),Accept:"application/json"}})}async setPullRequestReviewers(s,e={}){let{pullRequest:t,reviewers:n}=s;for(let o of n)t.assignees.find(i=>i.id===o.id)||await this.addPullRequestReviewer({pullRequest:t,reviewer:o,isRequired:!0},e);for(let o of t.assignees)n.find(i=>o.id===i.id)||await this.removePullRequestReviewer({pullRequest:t,reviewer:o},e)}async getIssuesForAzureProject(s,e={}){let{page:t,assigneeLogins:n,authorLogin:o,mentionLogin:i,labelNames:a,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("'","''")}'`),i&&d.push("[System.Id] IN (@recentMentions)"),a&&a.forEach(I=>d.push(`[System.Tags] Contains '${I}'`));let c=`Select [Microsoft.VSTS.Common.ClosedDate], [Microsoft.VSTS.Common.ResolvedDate] From WorkItems Where ${d.join(" AND ")} order by [System.CreatedDate] desc`,g=await this.config.request({url:`${w(this.config,e)}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/wit/wiql?api-version=6.0`,body:JSON.stringify({query:c}),method:"POST",headers:{...P(this.config,e),"Content-Type":"application/json"}}),m=g.body.workItems.slice((l-1)*p,p*l).map(I=>I.id);if(m.length==0)return{pageInfo:{hasNextPage:!1,nextPage:null},data:[]};let b=await this.config.request({url:`${w(this.config,e)}/${encodeURIComponent(s.namespace)}/${encodeURIComponent(s.project)}/_apis/wit/workitemsbatch?api-version=6.0`,body:JSON.stringify({ids:m,$expand:"Links"}),method:"POST",headers:{...P(this.config,e),"Content-Type":"application/json"}});return{pageInfo:{hasNextPage:g.body.workItems.length>p*l,nextPage:l+1},data:b.body.value.map(I=>Cr(s.namespace,s.project,I,u||{}))}}async getPermissionsForRepos(s,e={}){let{namespace:t,repos:n}=s,o={4:["canPush","canCreateWebhook"],1024:["isAdmin"],2048:["isAdmin"],4096:["isAdmin"],8192:["isAdmin"]},i=p=>{let d="2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87",c=`repoV2/${p.projectId}/${p.id}`;return Object.keys(o).map(g=>({securityNamespaceId:d,token:c,permissions:g}))},a={alwaysAllowAdministrators:!1,evaluations:n.flatMap(i)};return{data:(await this.config.request({method:"POST",url:`${w(this.config,e)}/${encodeURIComponent(t)}/_apis/security/permissionevaluationbatch?api-version=7.0`,body:JSON.stringify(a),headers:{...P(this.config,e),"Content-Type":"application/json"}})).body.evaluations.reduce((p,d)=>{let[,c,g]=d.token.split("/"),m=`${c}/${g}`,b=o[d.permissions];for(let I of b)p[m]===void 0&&(p[m]={canCreateWebhook:!0,canPush:!0,isAdmin:!0}),d.value===!1&&(p[m][I]=!1);return p},{})}}async decorateReposWithPermissions(s,e={}){let{namespace:t,repos:n}=s,o=await this.getPermissionsForRepos({namespace:t,repos:n},e);return{data:n.map(i=>({...i,permissions:o.data[`${i.projectId}/${i.id}`]}))}}async updateIssue(s,e,t={}){return await this.config.request({method:"PATCH",url:`${w(this.config,t)}/${encodeURIComponent(s.project.namespace)}/${encodeURIComponent(s.project.name)}/_apis/wit/workitems/${s.id}?api-version=6.0`,body:JSON.stringify(e),headers:{...P(this.config,t),"Content-Type":"application/json-patch+json"}})}async setIssueStatus(s,e={}){let{issue:t,status:n}=s,o=[{op:"add",path:"/fields/System.State",value:n.name}];if(!(await this.updateIssue(t,o,e)).body.fields?.["System.State"])throw new Error("Could not set issue status")}async setIssueAssignee(s,e={}){let{issue:t,assignee:n}=s,o=[{op:"add",path:"/fields/System.AssignedTo",value:n?.name??""}];if(!(await this.updateIssue(t,o,e)).body.fields?.["System.State"])throw new Error("Could not set issue assignee")}async setIssueLabels(s,e={}){let{issue:t,labels:n}=s,i=[{op:"replace",path:"/fields/System.Tags",value:n.map(u=>u.name).join(";")}];if(!(await this.updateIssue(t,i,e)).body.fields?.["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:`${w(this.config,e)}/${encodeURIComponent(t)}/${encodeURIComponent(n||"")}/_apis/wit/workitemtypes?api-version=6.0`,headers:{...P(this.config,e)}})).body.value}}async getLabelsForProject(s,e={}){let{namespace:t,project:n}=s;return{data:(await this.config.request({url:`${w(this.config,e)}/${encodeURIComponent(t)}/${encodeURIComponent(n||"")}/_apis/wit/tags?api-version=6.0`,headers:{...P(this.config,e)}})).body.value.map(i=>({color:null,description:null,id:i.id,name:i.name,url:i.url}))}}};var q=(r,s={})=>h(s.token||r.token,s.isPAT||r.isPAT);var E="https://api.bitbucket.org/2.0",Lr={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},me=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}),$t=r=>{let s=r.links.clone,e=s?.find(n=>n.name==="ssh"),t=s?.find(n=>n.name==="https");return e&&t?{cloneUrlHTTPS:t.href,cloneUrlSSH:e.href}:null},Ut=r=>({id:r.uuid,namespace:r.workspace.slug,name:r.slug,webUrl:r.links.html.href,httpsUrl:r.links.clone.find(s=>s.name==="https")?.href??null,sshUrl:r.links.clone.find(s=>s.name==="ssh")?.href??null,defaultBranch:{name:r.mainbranch.name},permissions:null}),Je=r=>{let s=r.id,e=r.participants?.map(t=>{let n="REVIEW_REQUESTED";return t.approved?n="APPROVED":t.state==="changes_requested"?n="CHANGES_REQUESTED":t.participated_on!==null&&(n="COMMENTED"),{reviewer:me(t.user),state:n}})??[];return{id:s.toString(),title:r.title,description:r.description,number:s,state:Lr[r.state],isDraft:!1,commentCount:r.comment_count,upvoteCount:null,author:me(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:$t(r.destination.repository)},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:e,reviewDecision:G(e),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:{id:r.source.repository.uuid,name:r.source.repository.name,owner:{login:r.source.repository.full_name.split("/")[0]},remoteInfo:$t(r.source.repository)},mergeableState:"MERGEABLE",permissions:null}},Dr=r=>{switch(r){case"owner":case"admin":return{canCreateWebhook:!0,canPush:!0,isAdmin:!0};case"write":return{canCreateWebhook:!1,canPush:!0,isAdmin:!1};case"read":case"none":return{canCreateWebhook:!1,canPush:!1,isAdmin:!1}}},V=class extends U{async refreshToken(s){return{data:(await this.config.request({url:"https://bitbucket.org/site/oauth2/access_token",method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Authorization:`Basic ${s.base64ClientIDColonClientSecret}`},body:`grant_type=refresh_token&refresh_token=${s.refreshToken}`})).body}}async getCurrentUser(s={},e={}){let t=await this.config.request({url:`${E}/user`,headers:q(this.config,e)});return{data:me(t.body)}}async getUserForCommit(s,e={}){let n=(await this.config.request({url:`${E}/repositories/${s.repo.namespace}/${s.repo.name}/commit/${s.oid}`,headers:q(this.config,e)})).body.author,o=n.raw.match(/([^<]+)<(.+)>/);return{data:{name:o?o[1].trim():null,email:o?o[2]:null,avatarUrl:n.user?.links.avatar.href||null}}}async getRepo(s,e={}){let t=await this.config.request({url:`${E}/repositories/${s.namespace}/${s.name}`,headers:q(this.config,e)});return{data:Ut(t.body)}}async getRepos(s,e={}){let t=[],n=[];return await Promise.all(s.map(async o=>{try{let i=await this.getRepo(o,e);t.push(i.data)}catch(i){n.push({input:o,error:i})}})),{data:t,errors:n}}async getReposForCurrentUser(s,e={}){let t=new URL(`${E}/repositories`);t.searchParams.set("role","member"),t.searchParams.set("pagelen",v.toString()),s.cursor&&t.searchParams.set("after",s.cursor);let n=await this.config.request({url:t.toString(),headers:q(this.config,e)}),o=!!n.body.next,i=null;return n.body.next&&(i=new URL(n.body.next).searchParams.get("after")),{pageInfo:{hasNextPage:o,endCursor:i},data:n.body.values.map(Ut)}}async getBranches(s,e={}){let t=new URL(`${E}/repositories/${s.repo.namespace}/${s.repo.name}/refs/branches`);t.searchParams.set("page",s.page?.toString()||"1"),t.searchParams.set("pagelen",v.toString());let n=await this.config.request({url:t.toString(),headers:q(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 a=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:a,committedDate:a}}})}}async getTags(s,e={}){let t=new URL(`${E}/repositories/${s.repo.namespace}/${s.repo.name}/refs/tags`);t.searchParams.set("pagelen",v.toString()),s.cursor&&t.searchParams.set("page",s.cursor);let n=await this.config.request({url:t.toString(),headers:q(this.config,e)}),o=!!n.body.next,i=null;return n.body.next&&(i=new URL(n.body.next).searchParams.get("page")),{pageInfo:{hasNextPage:o,endCursor:i},data:n.body.values.map(a=>{let u=new Date(a.target.date);return{name:a.name,commit:{oid:a.target.hash,authoredDate:u,committedDate:u}}})}}async getWorkspacesForUser(s,e={}){let t=new URL(`${E}/user/permissions/workspaces`);t.searchParams.set("page",s.page?.toString()||"1"),t.searchParams.set("pagelen","50");let n=await this.config.request({url:t.toString(),headers:q(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(i=>({id:i.workspace.uuid,slug:i.workspace.slug,name:i.workspace.name}))}}async getPullRequestsForUserAndWorkspace(s,e={}){let t=new URL(`${E}/workspaces/${s.workspaceSlug}/pullrequests/${s.userId}`);if(t.searchParams.set("fields","+values.participants,+values.destination.repository.links.clone.*,+values.source.repository.links.clone.*"),t.searchParams.set("page",s.page?.toString()||"1"),t.searchParams.set("pagelen","50"),s.repos&&s.repos.length>0){let i=`state = "open" AND (${s.repos.map(a=>`source.repository.full_name = "${a.namespace}/${a.name}"`).join(" OR ")})`;t.searchParams.set("q",i)}let n=await this.config.request({url:t.toString(),headers:q(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(Je)}}async getPullRequestsForRepoBase(s,e={}){let t=new URL(`${E}/repositories/${encodeURI(s.repo.namespace)}/${encodeURI(s.repo.name)}/pullrequests?state=OPEN`),n=[];s.reviewerId&&n.push(`reviewers.uuid="${s.reviewerId}"`),s.authorLogin&&n.push(`author.uuid="${s.authorLogin}"`);let o='state="OPEN"';return n.length&&(o+=` AND (${n.join(s.useOrFilter?" OR ":" AND ")})`),t.searchParams.set("fields","+values.participants,+values.destination.repository.links.clone.*,+values.source.repository.links.clone.*"),t.searchParams.set("page",s.page?.toString()||"1"),t.searchParams.set("pagelen","50"),t.searchParams.set("q",o),await this.config.request({url:t.toString(),headers:q(this.config,e)})}async getPullRequestsForRepo(s,e={}){let t=[],n=await this.getPullRequestsForRepoBase(s,e);n.body.values.forEach(i=>{t.push(Je(i))});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(i=>{t.push(Je(i))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:t}}async getAccountsForWorkspace(s,e={}){let t=new URL(`${E}/workspaces/${encodeURI(s.workspace)}/members`);t.searchParams.set("page",s.page?.toString()||"1"),t.searchParams.set("pagelen","100");let n=await this.config.request({url:t.toString(),headers:q(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(i=>me(i.user))}}async getReposPermissionsForCurrentUser(s,e={}){let t=new URL(`${E}/user/permissions/repositories`);t.searchParams.set("page",s.page?.toString()||"1"),t.searchParams.set("pagelen","100");let n=await this.config.request({url:t.toString(),headers:q(this.config,e)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.reduce((i,a)=>({...i,[a.repository.uuid]:Dr(a.permission)}),{})}}async decorateReposWithPermissions(s,e={}){let t={},n=1;do{let o=await this.getReposPermissionsForCurrentUser({page:n},e);t={...o.data,...t},n=o.pageInfo.hasNextPage?o.pageInfo.nextPage:null}while(n!==null);return{data:s.repos.map(o=>({...o,permissions:t[o.id]??{canCreateWebhook:!1,canPush:!1,isAdmin:!1}}))}}async closePullRequest(s,e={}){let{pullRequest:t}=s;if(!(await this.config.request({method:"POST",url:`${E}/repositories/${t.repository.owner.login}/${t.repository.name}/pullrequests/${t.id}/decline`,headers:q(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 i={merge_strategy:o,type:"pullrequest"};if(!(await this.config.request({method:"POST",url:`${E}/repositories/${t.repository.owner.login}/${t.repository.name}/pullrequests/${t.id}/merge`,body:JSON.stringify(i),headers:{...q(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(a=>{if(a.username)throw new Error('Bitbucket reviewer requires "username" for this function.');return{username:a.username}})};if(!(await this.config.request({method:"PUT",url:`${E}/repositories/${t.repository.owner.login}/${t.repository.name}/pullrequests/${t.id}`,body:JSON.stringify(o),headers:{...q(this.config,e),"Content-Type":"application/json"}})).body.title)throw new Error("Could not set pull request reviewers")}};var At=r=>r?r.find(s=>s.permission==="USER_ADMIN"||s.permission==="PROJECT_ADMIN"||s.permission==="ADMIN"||s.permission==="SYS_ADMIN"||s.permission==="REPO_ADMIN")?{canCreateWebhook:!0,canPush:!0,isAdmin:!0}:r.find(s=>s.permission==="REPO_WRITE"||s.permission==="REPO_CREATE"||s.permission==="PROJECT_CREATE"||s.permission==="PROJECT_WRITE")?{canCreateWebhook:!1,canPush:!0,isAdmin:!1}:{canCreateWebhook:!1,canPush:!1,isAdmin:!1}:{canCreateWebhook:!1,canPush:!1,isAdmin:!1};var ie=r=>{let s=r.links.self[0].href;return{name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrl??(s&&`${s}/avatar.png`),id:r.id.toString(),username:r.name,url:s}},he=r=>{let s={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},e={UNAPPROVED:"REVIEW_REQUESTED",NEEDS_WORK:"CHANGES_REQUESTED",APPROVED:"APPROVED"},t=r.reviewers.map(u=>({reviewer:ie(u.user),state:e[u.status]})),n=r.toRef.repository.links.clone.find(u=>u.name==="ssh")?.href??null,o=r.toRef.repository.links.clone.find(u=>u.name==="https")?.href??null;o||(o=r.toRef.repository.links.clone.find(u=>u.name==="http")?.href??null);let i=r.fromRef.repository.links.clone.find(u=>u.name==="ssh")?.href??null,a=r.fromRef.repository.links.clone.find(u=>u.name==="https")?.href??null;return a||(a=r.fromRef.repository.links.clone.find(u=>u.name==="http")?.href??null),{id:r.id.toString(),number:r.id,title:r.title,description:r.description,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:ie(r.author.user),assignees:null,reviews:t,reviewDecision:G(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:a&&i?{cloneUrlHTTPS:a,cloneUrlSSH:i}:null},headCommit:null,mergeableState:"MERGEABLE",permissions:null,version:r.version}},Gt=r=>({id:r.id.toString(),namespace:r.project.key,name:r.slug,webUrl:r.links.self[0]?.href??null,httpsUrl:r.links.clone.find(s=>s.name==="https"||s.name==="http")?.href??null,sshUrl:r.links.clone.find(s=>s.name==="ssh")?.href??null,defaultBranch:null,permissions:null}),K=class extends D{getBaseUrl(s){let e=s.baseUrl||this.config.baseUrl;if(!e)throw new Error('Bitbucket Server requires "baseUrl"');return e}getRequestHeaders(s){return h(s.token||this.config.token)}async 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,i=n?parseInt(n,10):null,a=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})=>i?i===d:a===c||a===p||a===g);if(!l)throw new Error("Could not find current Bitbucket Server user");return{data:ie(l)}}async getUserForCommit(s,e){let{repo:t,oid:n}=s,o=await this.config.request({url:`${this.getBaseUrl(e)}/projects/${t.namespace}/repos/${t.name}/commits/${n}`,headers:this.getRequestHeaders(e)});if(!o.body.author)throw new Error("Could not find user for commit");return{data:ie(o.body.author)}}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:Gt(t.body)}}async getRepos(s,e={}){let t=[],n=[];return await Promise.all(s.map(async o=>{try{let i=await this.getRepo(o,e);t.push(i.data)}catch(i){n.push({input:o,error:i})}})),{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(Gt)}}async getRepoPermissionsForUsername(s,e={}){let t=new URL(`${this.getBaseUrl(e)}/projects/${s.repo.namespace}/repos/${s.repo.name}/permissions/search?filterText=${s.username}`);try{let n=await this.config.request({url:t.toString(),headers:this.getRequestHeaders(e)});return{data:At(n.body.values)}}catch(n){if(n.response?.status===401)return{data:{canCreateWebhook:!1,canPush:!1,isAdmin:!1}};throw n}}async decorateReposWithPermissions(s,e={}){return await Promise.all(s.repos.map(async n=>{let o=await this.getRepoPermissionsForUsername({repo:n,username:s.username},e);return{...n,permissions:o.data}}))}async getPullRequestsForRepoBase(s,e={}){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",s.page?.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(i=>{if(s.authorLogin&&i.author.user.name!==s.authorLogin)return null;t.push(he(i))});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(i=>{if(s.authorLogin&&i.author.user.name!==s.authorLogin)return null;t.push(he(i))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:t}}async getPullRequestsForCurrentUser(s,e={}){let t=new URL(`${this.getBaseUrl(e)}/dashboard/pull-requests`);t.searchParams.set("state","OPEN"),t.searchParams.set("start",s.page?.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(he)}}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(a=>{if(a.username)throw new Error('Bitbucket Server reviewer requires "username" for this function.');return{user:{name:a.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")}async getAccountsForProject(s,e={}){let t=new URL(`${this.getBaseUrl(e)}/projects/${encodeURI(s.project)}/permissions/users`);t.searchParams.set("start",s.page?.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(i=>ie(i.user))}}};var Ft=require("js-base64");var fe=(e=>(e.Open="OPEN",e.Closed="CLOSED",e))(fe||{});var f=class extends Error{constructor(e,t){let n=t?.map(i=>`'${i.message}'`).join(", "),o=n?`${e}: ${n}`:e;super(o);this.graphQLErrors=t??[]}};var $r={AS_CODE_OWNER:[3,0,0],CHECK_RUN:[3,0,0],LATEST_REVIEWS:[3,0,0],VIEWER_CAN_MERGE_AS_ADMIN:[3,5,0],ISSUE_FULL_DATABASE_ID:[3,12,0],PR_FULL_DATABASE_ID:[3,13,0],PR_REVIEW_FULL_DATABASE_ID:[3,13,0],PR_REVIEW_COMMENT_FULL_DATABASE_ID:[3,13,0]},Tt=15,Ot=100,C=r=>!!r,O=(r,s)=>{let e=$r[s];for(let t=0;t<3;t++){if(r[t]>e[t])return!0;if(r[t]<e[t])return!1}return!0},Ie="https://api.github.com",Ur=`${Ie}/graphql`,be=`
2
2
  description
3
3
  dueOn
4
4
  id
@@ -6,7 +6,7 @@ number
6
6
  state
7
7
  title
8
8
  url
9
- `,Ur=`
9
+ `,Ar=`
10
10
  ... on CheckRun {
11
11
  completedAt
12
12
  conclusion
@@ -15,48 +15,48 @@ url
15
15
  permalink
16
16
  startedAt
17
17
  }
18
- `,he=/\/api\/v\d+$/,Ie=`
18
+ `,Re=/\/api\/v\d+$/,ye=`
19
19
  color
20
20
  description
21
21
  id
22
22
  name
23
- `,Tt=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.")},Ar=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),Tt(e),he.test(e)&&(e=e.replace(he,"")),`${e}/api/graphql`):$r},K=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),Tt(e),he.test(e)&&(e=e.replace(he,"")),`${e}/api/v3`):fe},R=(r,s,e)=>{let t=h(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:Ar(r,e),method:"POST",headers:t,body:JSON.stringify(s)})},Gr={user:!0,"user:email":!0,"read:user":!0},x=r=>r.some(s=>Gr[s]),D=(r=!1,s=!1,e)=>`
23
+ `,xt=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.")},Gr=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),xt(e),Re.test(e)&&(e=e.replace(Re,"")),`${e}/api/graphql`):Ur},X=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),xt(e),Re.test(e)&&(e=e.replace(Re,"")),`${e}/api/v3`):Ie},R=(r,s,e)=>{let t=h(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:Gr(r,e),method:"POST",headers:t,body:JSON.stringify(s)})},Tr={user:!0,"user:email":!0,"read:user":!0},x=r=>r.some(s=>Tr[s]),$=(r=!1,s=!1,e)=>`
24
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)=>`
25
+ ${j(e,["graphQLId"],"id")}
26
+ ${j(e,["id"],"databaseId")}
27
+ ${j(e,["name"],"name")}
28
+ ${j(e,["name","username"],"login")}
29
+ ${s?j(e,["email"],"email"):""}
30
+ ${j(e,["avatarUrl"],`avatarUrl${r?"(size: $avatarSize)":""}`)}
31
+ ${j(e,["url"],"url")}
32
+ `,Or=(r=!1)=>`
33
33
  latestReviews(first: 100) {
34
34
  nodes {
35
35
  author {
36
36
  ... on User {
37
- ${D(!1,r)}
37
+ ${$(!1,r)}
38
38
  }
39
39
  ... on EnterpriseUserAccount {
40
- ${He(!1)}
40
+ ${Ve(!1)}
41
41
  }
42
42
  }
43
43
  state
44
44
  }
45
45
  }
46
- `,Ot=(r=!1)=>`
46
+ `,kt=(r=!1)=>`
47
47
  __typename
48
48
  id
49
49
  databaseId
50
50
  login
51
51
  avatarUrl${r?"(size: $avatarSize)":""}
52
52
  url
53
- `,He=(r=!1)=>`
53
+ `,Ve=(r=!1)=>`
54
54
  __typename
55
55
  id
56
56
  login
57
57
  avatarUrl${r?"(size: $avatarSize)":""}
58
58
  url
59
- `,be=(r,s=!1,e)=>`
59
+ `,Pe=(r,s=!1,e)=>`
60
60
  id
61
61
  ${!e||O(e,"PR_FULL_DATABASE_ID")?"fullDatabaseId":"databaseId"}
62
62
  number
@@ -65,13 +65,13 @@ body
65
65
  state
66
66
  author {
67
67
  ... on User {
68
- ${D(!1,s)}
68
+ ${$(!1,s)}
69
69
  }
70
70
  ... on Bot {
71
- ${Ot(!1)}
71
+ ${kt(!1)}
72
72
  }
73
73
  ... on EnterpriseUserAccount {
74
- ${He(!1)}
74
+ ${Ve(!1)}
75
75
  }
76
76
  }
77
77
  commits(last: 1) {
@@ -84,7 +84,7 @@ commits(last: 1) {
84
84
  contexts(first: 100) {
85
85
  totalCount
86
86
  nodes {
87
- ${!e||O(e,"CHECK_RUN")?Ur:""}
87
+ ${!e||O(e,"CHECK_RUN")?Ar:""}
88
88
  ... on StatusContext {
89
89
  context
90
90
  createdAt
@@ -146,7 +146,7 @@ closedAt
146
146
  mergedAt
147
147
  assignees(first: 100) {
148
148
  nodes {
149
- ${D(!1,s)}
149
+ ${$(!1,s)}
150
150
  }
151
151
  }
152
152
  reviewRequests(first: 100) {
@@ -154,39 +154,39 @@ reviewRequests(first: 100) {
154
154
  ${!e||O(e,"AS_CODE_OWNER")?"asCodeOwner":""}
155
155
  requestedReviewer {
156
156
  ... on User {
157
- ${D(!1,s)}
157
+ ${$(!1,s)}
158
158
  }
159
159
  }
160
160
  }
161
161
  }
162
- ${!e||O(e,"LATEST_REVIEWS")?Tr(s):""}
162
+ ${!e||O(e,"LATEST_REVIEWS")?Or(s):""}
163
163
  additions
164
164
  deletions
165
165
  changedFiles
166
166
  mergeable
167
167
  mergeStateStatus
168
168
  milestone {
169
- ${Re}
169
+ ${be}
170
170
  }
171
171
  labels(first: 100) {
172
172
  nodes {
173
- ${Ie}
173
+ ${ye}
174
174
  }
175
175
  }
176
176
  ${!e||O(e,"VIEWER_CAN_MERGE_AS_ADMIN")?"viewerCanMergeAsAdmin":""}
177
- `,Or=(r=!1,s)=>`
177
+ `,xr=(r=!1,s)=>`
178
178
  id
179
179
  ${!s||O(s,"ISSUE_FULL_DATABASE_ID")?"fullDatabaseId":"databaseId"}
180
180
  title
181
181
  author {
182
182
  ... on User {
183
- ${D(!1,r)}
183
+ ${$(!1,r)}
184
184
  }
185
185
  ... on Bot {
186
- ${Ot(!1)}
186
+ ${kt(!1)}
187
187
  }
188
188
  ... on EnterpriseUserAccount {
189
- ${He(!1)}
189
+ ${Ve(!1)}
190
190
  }
191
191
  }
192
192
  closedAt
@@ -210,19 +210,19 @@ comments {
210
210
  }
211
211
  assignees(first: 100) {
212
212
  nodes {
213
- ${D(!1,r)}
213
+ ${$(!1,r)}
214
214
  }
215
215
  }
216
216
  state
217
217
  milestone {
218
- ${Re}
218
+ ${be}
219
219
  }
220
220
  labels(first: 100) {
221
221
  nodes {
222
- ${Ie}
222
+ ${ye}
223
223
  }
224
224
  }
225
- `,xr={"-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"},kr=new RegExp('(([^\\s]+:)?\\"(?:[^\\"\\\\]|\\\\.)*\\"?)|([^\\"\\s]+)',"g"),Je=r=>{let s=[];return(r.match(kr)??[]).forEach(t=>{if(t.includes(":")&&t!="is:closed"){let n=t.split(":")[0];xr[n]&&s.push(t)}}),s},Ve=(r,s,e,t)=>{let n=r==="issue";return{query:`
225
+ `,kr={"-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"),Ke=r=>{let s=[];return(r.match(Nr)??[]).forEach(t=>{if(t.includes(":")&&t!="is:closed"){let n=t.split(":")[0];kr[n]&&s.push(t)}}),s},Xe=(r,s,e,t)=>{let n=r==="issue";return{query:`
226
226
  query SearchIssuesOrPullRequests($query: String! $after: String) {
227
227
  search(type:ISSUE query:$query first: ${t.maxPageSize} after:$after) {
228
228
  pageInfo {
@@ -231,18 +231,18 @@ query SearchIssuesOrPullRequests($query: String! $after: String) {
231
231
  }
232
232
  nodes {
233
233
  ... on ${n?"Issue":"PullRequest"} {
234
- ${n?Or(t.supportsEmail,t.enterpriseVersion??null):be(t.supportsDrafts??!1,t.supportsEmail,t.enterpriseVersion??null)}
234
+ ${n?xr(t.supportsEmail,t.enterpriseVersion??null):Pe(t.supportsDrafts??!1,t.supportsEmail,t.enterpriseVersion??null)}
235
235
  }
236
236
  }
237
237
  }
238
- }`,variables:{query:`is:${r} is:open ${t.includeFromArchivedRepos?"":"archived:false"} ${s}`,after:e}}},Nr="Field 'isDraft' doesn't exist on type 'PullRequest'",ye=(r=[])=>r.some(s=>s?.message===Nr),_r=/@@ -(\d+)(?:,\d+ | )\+(\d+)(?:,\d+ | )@@(?:\\n)?/,Fr=`
238
+ }`,variables:{query:`is:${r} is:open ${t.includeFromArchivedRepos?"":"archived:false"} ${s}`,after:e}}},_r="Field 'isDraft' doesn't exist on type 'PullRequest'",we=(r=[])=>r.some(s=>s?.message===_r),Fr=/@@ -(\d+)(?:,\d+ | )\+(\d+)(?:,\d+ | )@@(?:\\n)?/,Qr=`
239
239
  \
240
- +`,xt=(r,s,e,t)=>{let n=_r.exec(r);if(!n||!n[0]||!n[1])return[];let o=parseInt(n[1],10),a=parseInt(n[2],10),i=r.replace(Fr,`
240
+ +`,Nt=(r,s,e,t)=>{let n=Fr.exec(r);if(!n||!n[0]||!n[1])return[];let o=parseInt(n[1],10),i=parseInt(n[2],10),a=r.replace(Qr,`
241
241
  +`).split(`
242
- `).slice(1),u=o-1,l=a-1,p=i.map(g=>{let m,b;switch(g[0]){case"-":{m="DELETED",u+=1,b=`${g.slice(1)}
242
+ `).slice(1),u=o-1,l=i-1,p=a.map(g=>{let m,b;switch(g[0]){case"-":{m="DELETED",u+=1,b=`${g.slice(1)}
243
243
  `;break}case"+":{m="ADDED",l+=1,b=`${g.slice(1)}
244
244
  `;break}default:m="UNMODIFIED",l+=1,u+=1,b=`${g}
245
- `}return{line:b,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,b=t==="LEFT"?"oldLineNumber":"newLineNumber";for(let I=0;I<p.length;I++){let se=p[I][b];se===d?g=I:se===c&&(m=I)}p=p.slice(g,m+1)}return p};var Ke=`
245
+ `}return{line:b,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,b=t==="LEFT"?"oldLineNumber":"newLineNumber";for(let I=0;I<p.length;I++){let F=p[I][b];F===d?g=I:F===c&&(m=I)}p=p.slice(g,m+1)}return p};var Ze=`
246
246
  id
247
247
  databaseId
248
248
  owner {
@@ -255,18 +255,18 @@ defaultBranchRef {
255
255
  name
256
256
  }
257
257
  viewerPermission
258
- `,Ye={__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"},Qr={APPROVED:"APPROVED",CHANGES_REQUESTED:"CHANGES_REQUESTED",COMMENTED:"COMMENTED",REVIEW_REQUESTED:"REVIEW_REQUESTED"},jr={MERGEABLE:"MERGEABLE",CONFLICTING:"CONFLICTS",UNKNOWN:"UNKNOWN"},Br={BEHIND:"BEHIND",BLOCKED:"BLOCKED",UNKNOWN:"UNKNOWN_AND_BLOCKED",UNSTABLE:"UNSTABLE",CLEAN:null,DIRTY:null,DRAFT:null,HAS_HOOKS:null},zr={OPEN:"OPEN",CLOSED:"CLOSED"},Mr=["ADMIN","MAINTAIN","TRIAGE","WRITE"],et=r=>({color:`#${r.color}`,description:r.description,graphQLId:r.id,id:null,name:r.name}),Wr=r=>({canCreateWebhook:r==="ADMIN",canPush:r==="ADMIN"||r==="MAINTAIN"||r==="WRITE",isAdmin:r==="ADMIN"}),Xe=r=>({id:r.databaseId.toString(),graphQLId:r.id,namespace:r.owner.login,name:r.name,webUrl:r.url,httpsUrl:r.url.endsWith(".git")?r.url:`${r.url}.git`,sshUrl:r.sshUrl,defaultBranch:r.defaultBranchRef,permissions:Wr(r.viewerPermission)}),Hr=r=>({canCreateWebhook:r.admin,canPush:r.admin||r.maintain||r.push,isAdmin:r.admin}),kt=r=>({id:r.id.toString(),graphQLId:r.node_id,namespace:r.owner.login,name:r.name,webUrl:r.html_url,httpsUrl:r.clone_url,sshUrl:r.ssh_url,defaultBranch:{name:r.default_branch},permissions:Hr(r.permissions)}),Jr=r=>({path:r.path,isDirectory:r.type==="tree"}),Vr={OPEN:"OPEN",CLOSED:"CLOSED",MERGED:"MERGED"},Kr={id:!0,graphQLId:!0,name:!0,username:!0,email:!0,avatarUrl:!0,url:!0},A=(r,s=Kr)=>{let e={};return s.id&&(e.id="databaseId"in r?r.databaseId.toString():r.id),s.graphQLId&&(e.graphQLId=r.id),s.name&&(e.name=r.name??r.login),s.username&&(e.username=r.login),s.email&&(e.email=r.email??null),s.avatarUrl&&(e.avatarUrl=r.avatarUrl),s.url&&(e.url=r.url),e},Xr=(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]},Zr=r=>({ERROR:"ERROR",EXPECTED:"PENDING",FAILURE:"FAILED",PENDING:"PENDING",SUCCESS:"SUCCESS"})[r],Ze=r=>{let s=null;r.author?s=r.author:s=Ye;let e=(r.reviewRequests?.nodes||[]).filter(C).filter(a=>!a.asCodeOwner),t=r.headRepository?.url;t&&!t.endsWith(".git")&&(t=`${t}.git`);let n=r.repository?.url;n&&!n.endsWith(".git")&&(n=`${n}.git`);let o=e.filter(a=>a.requestedReviewer&&"__typename"in a.requestedReviewer).map(a=>({reviewer:A(a.requestedReviewer),state:"REVIEW_REQUESTED"})).concat((r.latestReviews?.nodes||[]).filter(C).map(a=>{let i=Ye;return a.author&&a.author.__typename&&(i=a.author),{reviewer:A(i),state:Qr[a.state]}}));return{id:r.fullDatabaseId!==void 0?r.fullDatabaseId:r.databaseId.toString(),graphQLId:r.id,title:r.title,description:r.body,number:r.number,state:Vr[r.state],commentCount:r.comments.totalCount,upvoteCount:r.reactions.totalCount,author:s&&s.__typename?A(s):null,createdDate:new Date(r.createdAt),isDraft:r.isDraft,repository:{id:r.repository.databaseId.toString(),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.toString(),graphQLId:r.headRepository.id,name:r.headRepository.name,owner:{login:r.headRepository.owner.login},remoteInfo:{cloneUrlHTTPS:t,cloneUrlSSH:r.headRepository.sshUrl}}:null,headCommit:{buildStatuses:r.commits.nodes?.filter(C)[0]?.commit.statusCheckRollup?.contexts.nodes?.filter(C).map(a=>"context"in a?{completedAt:null,description:a.description,name:a.context,state:Zr(a.state),startedAt:new Date(a.createdAt),stage:null,url:a.targetUrl}:{completedAt:a.completedAt?new Date(a.completedAt):null,description:null,name:a.name,state:Xr(a.status,a.conclusion),startedAt:a.startedAt?new Date(a.startedAt):null,stage:null,url:a.permalink})??[]},headRef:r.headRef?{name:r.headRef.name,oid:r.headRef.target?.oid??null}:null,baseRef:r.baseRef?{name:r.baseRef.name,oid:r.baseRef.target?.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(C).map(a=>A(a)):null,reviews:o,reviewDecision:G(o),additions:r.additions,deletions:r.deletions,fileCount:r.changedFiles,commitCount:r.commits.totalCount,mergeableState:Br[r.mergeStateStatus]??jr[r.mergeable],milestone:r.milestone?tt(r.milestone):null,labels:r.labels?.nodes?.filter(C).map(et)??[],permissions:{canMerge:Mr.includes(r.repository.viewerPermission),canMergeAndBypassProtections:r.viewerCanMergeAsAdmin??!1}}},Yr=r=>{let{comments:s,isOutdated:e,isResolved:t,originalLine:n,originalStartLine:o,startDiffSide:a}=r,i=s.nodes?.[0];if(!i)return null;let{author:u,body:l,databaseId:p,fullDatabaseId:d,id:c,path:g,publishedAt:m,url:b}=i;return{author:u?{avatarUrl:u.avatarUrl,email:null,name:u.login}:null,body:l,createdAt:m?new Date(m):null,diffLines:xt(i.diffHunk,n,o,a),id:d??p.toString(),isOutdated:e,isResolved:t,graphQLId:c,filename:g,replies:s.nodes?.filter(C).slice(1).map(es)??[],url:b}},es=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.fullDatabaseId??r.databaseId.toString(),url:r.url}),ts=r=>{let s=null;return r.author?s=r.author:s=Ye,{id:r.fullDatabaseId!==void 0?r.fullDatabaseId:r.databaseId.toString(),graphQLId:r.id,number:r.number,title:r.title,author:s&&s.__typename?A(s):null,commentCount:r.comments.totalCount,closedDate:r.closedAt?new Date(r.closedAt):null,createdDate:new Date(r.createdAt),description:null,state:{name:zr[r.state],color:null},type:null,repository:{id:r.repository.databaseId.toString(),graphQLId:r.repository.id,name:r.repository.name,owner:{login:r.repository.owner.login}},url:r.url,updatedDate:new Date(r.updatedAt),assignees:r.assignees.nodes?.filter(C).map(e=>A(e))??[],upvoteCount:r.reactions.totalCount,milestone:r.milestone?tt(r.milestone):null,labels:r.labels?.nodes?.filter(C).map(et)??[]}},tt=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}),X=class extends L{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:`${K(this.config,e)}/meta`,headers:h(e.token||this.config.token)});if(!o.body.installed_version)return null;n=o.body.installed_version.split(".").slice(0,3).map(a=>parseInt(a,10)),this._enterpriseVersionsCache[t]=n}return n}getEnterpriseAvatarUrlIfNeeded(e,t,n){let o=n.baseUrl||this.config.baseUrl;return!o||o.startsWith(fe)?e:t?`https://avatars.githubusercontent.com/u/e?email=${encodeURIComponent(t)}`:""}async getCurrentUser(e={},t={}){if(e.fields&&!e.fields.length)throw new Error('"fields" must contain at least one field or be omitted');let n=vt(e.fields),o=await this.getScopes(t),a=await R(this.config,{query:`
258
+ `,tt={__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"},jr={APPROVED:"APPROVED",CHANGES_REQUESTED:"CHANGES_REQUESTED",COMMENTED:"COMMENTED",REVIEW_REQUESTED:"REVIEW_REQUESTED"},Br={MERGEABLE:"MERGEABLE",CONFLICTING:"CONFLICTS",UNKNOWN:"UNKNOWN"},zr={BEHIND:"BEHIND",BLOCKED:"BLOCKED",UNKNOWN:"UNKNOWN_AND_BLOCKED",UNSTABLE:"UNSTABLE",CLEAN:null,DIRTY:null,DRAFT:null,HAS_HOOKS:null},Mr={OPEN:"OPEN",CLOSED:"CLOSED"},Hr=["ADMIN","MAINTAIN","TRIAGE","WRITE"],rt=r=>({color:`#${r.color}`,description:r.description,graphQLId:r.id,id:null,name:r.name}),Wr=r=>({canCreateWebhook:r==="ADMIN",canPush:r==="ADMIN"||r==="MAINTAIN"||r==="WRITE",isAdmin:r==="ADMIN"}),Ye=r=>({id:r.databaseId.toString(),graphQLId:r.id,namespace:r.owner.login,name:r.name,webUrl:r.url,httpsUrl:r.url.endsWith(".git")?r.url:`${r.url}.git`,sshUrl:r.sshUrl,defaultBranch:r.defaultBranchRef,permissions:Wr(r.viewerPermission)}),Jr=r=>({canCreateWebhook:r.admin,canPush:r.admin||r.maintain||r.push,isAdmin:r.admin}),_t=r=>({id:r.id.toString(),graphQLId:r.node_id,namespace:r.owner.login,name:r.name,webUrl:r.html_url,httpsUrl:r.clone_url,sshUrl:r.ssh_url,defaultBranch:{name:r.default_branch},permissions:Jr(r.permissions)}),Vr=r=>({path:r.path,isDirectory:r.type==="tree"}),Kr={OPEN:"OPEN",CLOSED:"CLOSED",MERGED:"MERGED"},Xr={id:!0,graphQLId:!0,name:!0,username:!0,email:!0,avatarUrl:!0,url:!0},A=(r,s=Xr)=>{let e={};return s.id&&(e.id="databaseId"in r?r.databaseId.toString():r.id),s.graphQLId&&(e.graphQLId=r.id),s.name&&(e.name=r.name??r.login),s.username&&(e.username=r.login),s.email&&(e.email=r.email??null),s.avatarUrl&&(e.avatarUrl=r.avatarUrl),s.url&&(e.url=r.url),e},Zr=(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]},Yr=r=>({ERROR:"ERROR",EXPECTED:"PENDING",FAILURE:"FAILED",PENDING:"PENDING",SUCCESS:"SUCCESS"})[r],et=r=>{let s=null;r.author?s=r.author:s=tt;let e=(r.reviewRequests?.nodes||[]).filter(C).filter(i=>!i.asCodeOwner),t=r.headRepository?.url;t&&!t.endsWith(".git")&&(t=`${t}.git`);let n=r.repository?.url;n&&!n.endsWith(".git")&&(n=`${n}.git`);let o=e.filter(i=>i.requestedReviewer&&"__typename"in i.requestedReviewer).map(i=>({reviewer:A(i.requestedReviewer),state:"REVIEW_REQUESTED"})).concat((r.latestReviews?.nodes||[]).filter(C).map(i=>{let a=tt;return i.author&&i.author.__typename&&(a=i.author),{reviewer:A(a),state:jr[i.state]}}));return{id:r.fullDatabaseId!==void 0?r.fullDatabaseId:r.databaseId.toString(),graphQLId:r.id,title:r.title,description:r.body,number:r.number,state:Kr[r.state],commentCount:r.comments.totalCount,upvoteCount:r.reactions.totalCount,author:s&&s.__typename?A(s):null,createdDate:new Date(r.createdAt),isDraft:r.isDraft,repository:{id:r.repository.databaseId.toString(),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.toString(),graphQLId:r.headRepository.id,name:r.headRepository.name,owner:{login:r.headRepository.owner.login},remoteInfo:{cloneUrlHTTPS:t,cloneUrlSSH:r.headRepository.sshUrl}}:null,headCommit:{buildStatuses:r.commits.nodes?.filter(C)[0]?.commit.statusCheckRollup?.contexts.nodes?.filter(C).map(i=>"context"in i?{completedAt:null,description:i.description,name:i.context,state:Yr(i.state),startedAt:new Date(i.createdAt),stage:null,url:i.targetUrl}:{completedAt:i.completedAt?new Date(i.completedAt):null,description:null,name:i.name,state:Zr(i.status,i.conclusion),startedAt:i.startedAt?new Date(i.startedAt):null,stage:null,url:i.permalink})??[]},headRef:r.headRef?{name:r.headRef.name,oid:r.headRef.target?.oid??null}:null,baseRef:r.baseRef?{name:r.baseRef.name,oid:r.baseRef.target?.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(C).map(i=>A(i)):null,reviews:o,reviewDecision:G(o),additions:r.additions,deletions:r.deletions,fileCount:r.changedFiles,commitCount:r.commits.totalCount,mergeableState:zr[r.mergeStateStatus]??Br[r.mergeable],milestone:r.milestone?st(r.milestone):null,labels:r.labels?.nodes?.filter(C).map(rt)??[],permissions:{canMerge:Hr.includes(r.repository.viewerPermission),canMergeAndBypassProtections:r.viewerCanMergeAsAdmin??!1}}},es=r=>{let{id:s,comments:e,isOutdated:t,isResolved:n,line:o,startLine:i,diffSide:a,originalLine:u,originalStartLine:l,startDiffSide:p}=r,d=e.nodes?.[0];if(!d)return null;let{author:c,body:g,databaseId:m,fullDatabaseId:b,id:I,path:L,publishedAt:F,url:wt}=d,le=o??u,S=i??l,ne=a??p;return{author:c?{avatarUrl:c.avatarUrl,email:null,name:c.login}:null,body:g,createdAt:F?new Date(F):null,diffLines:Nt(d.diffHunk,le,S,ne),id:b??m.toString(),isOutdated:t,isResolved:n,graphQLId:I,threadId:s,filename:L,replies:e.nodes?.filter(C).slice(1).map(ts)??[],url:wt,line:le,startLine:S,side:ne}},ts=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.fullDatabaseId??r.databaseId.toString(),url:r.url}),rs=r=>{let s=null;return r.author?s=r.author:s=tt,{id:r.fullDatabaseId!==void 0?r.fullDatabaseId:r.databaseId.toString(),graphQLId:r.id,number:r.number,title:r.title,author:s&&s.__typename?A(s):null,commentCount:r.comments.totalCount,closedDate:r.closedAt?new Date(r.closedAt):null,createdDate:new Date(r.createdAt),description:null,state:{name:Mr[r.state],color:null},type:null,repository:{id:r.repository.databaseId.toString(),graphQLId:r.repository.id,name:r.repository.name,owner:{login:r.repository.owner.login}},url:r.url,updatedDate:new Date(r.updatedAt),assignees:r.assignees.nodes?.filter(C).map(e=>A(e))??[],upvoteCount:r.reactions.totalCount,milestone:r.milestone?st(r.milestone):null,labels:r.labels?.nodes?.filter(C).map(rt)??[]}},st=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}),Z=class extends D{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 i=(await R(this.config,{query:"query { rateLimit(dryRun: true) { __typename } }"},e)).headers["x-oauth-scopes"];n=i?i.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:`${X(this.config,e)}/meta`,headers:h(e.token||this.config.token)});if(!o.body.installed_version)return null;n=o.body.installed_version.split(".").slice(0,3).map(i=>parseInt(i,10)),this._enterpriseVersionsCache[t]=n}return n}getEnterpriseAvatarUrlIfNeeded(e,t,n){let o=n.baseUrl||this.config.baseUrl;return!o||o.startsWith(Ie)?e:t?`https://avatars.githubusercontent.com/u/e?email=${encodeURIComponent(t)}`:""}async getCurrentUser(e={},t={}){if(e.fields&&!e.fields.length)throw new Error('"fields" must contain at least one field or be omitted');let n=Et(e.fields),o=await this.getScopes(t),i=await R(this.config,{query:`
259
259
  query getCurrentUser {
260
260
  viewer {
261
- ${D(!1,x(o),n)}
261
+ ${$(!1,x(o),n)}
262
262
  }
263
263
  }
264
- `},t),i=a.body.data?.viewer;if(!i)throw new f("Current user not found.",a.body.errors);return{data:A(i,n)}}async getAccountsForRepo(e,t={}){let n=await this.getScopes(t),{repo:{namespace:o,name:a},cursor:i}=e,u=await R(this.config,{query:`
264
+ `},t),a=i.body.data?.viewer;if(!a)throw new f("Current user not found.",i.body.errors);return{data:A(a,n)}}async getAccountsForRepo(e,t={}){let n=await this.getScopes(t),{repo:{namespace:o,name:i},cursor:a}=e,u=await R(this.config,{query:`
265
265
  query getAccountsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
266
266
  repository(owner: $owner, name: $name) {
267
267
  assignableUsers(first: $first, after: $cursor) {
268
268
  nodes {
269
- ${D(!1,x(n))}
269
+ ${$(!1,x(n))}
270
270
  }
271
271
  pageInfo {
272
272
  endCursor
@@ -275,7 +275,7 @@ query getAccountsForRepo($owner: String!, $name: String! $cursor: String, $first
275
275
  }
276
276
  }
277
277
  }
278
- `,variables:{owner:o,name:a,cursor:i,first:S}},t);if(!u.body.data)throw new f("Could not fetch accounts for repo",u.body.errors);return{pageInfo:u.body.data.repository?.assignableUsers?.pageInfo??{endCursor:null,hasNextPage:!1},data:u.body.data.repository?.assignableUsers?.nodes?.map(l=>A(l))??[]}}async getUserForCommit(e,t={}){let n=await R(this.config,{query:`
278
+ `,variables:{owner:o,name:i,cursor:a,first:v}},t);if(!u.body.data)throw new f("Could not fetch accounts for repo",u.body.errors);return{pageInfo:u.body.data.repository?.assignableUsers?.pageInfo??{endCursor:null,hasNextPage:!1},data:u.body.data.repository?.assignableUsers?.nodes?.map(l=>A(l))??[]}}async getUserForCommit(e,t={}){let n=await R(this.config,{query:`
279
279
  query getUserForCommit(
280
280
  $owner: String!
281
281
  $name: String!
@@ -294,7 +294,7 @@ query getUserForCommit(
294
294
  }
295
295
  }
296
296
  }
297
- `,variables:{owner:e.repo.namespace,name:e.repo.name,oid:e.oid,avatarSize:e.avatarSize}},t),o=n.body.data?.repository;if(!o)throw new f("Repository not found.",n.body.errors);let a=o.object?.author;if(!a)throw new f("Commit not found.",n.body.errors);return{data:{name:a.name,email:a.email,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)}}}async createCommit(e,t={}){let{commitMessage:n,deletedFiles:o,newOrModifiedFiles:a,repo:i,target:u}=e,l=await R(this.config,{query:`
297
+ `,variables:{owner:e.repo.namespace,name:e.repo.name,oid:e.oid,avatarSize:e.avatarSize}},t),o=n.body.data?.repository;if(!o)throw new f("Repository not found.",n.body.errors);let i=o.object?.author;if(!i)throw new f("Commit not found.",n.body.errors);return{data:{name:i.name,email:i.email,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(i.avatarUrl,i.email,t)}}}async createCommit(e,t={}){let{commitMessage:n,deletedFiles:o,newOrModifiedFiles:i,repo:a,target:u}=e,l=await R(this.config,{query:`
298
298
  mutation createCommitOnBranch(
299
299
  $branchName: String!,
300
300
  $expectedHeadOid: GitObjectID!,
@@ -321,23 +321,23 @@ mutation createCommitOnBranch(
321
321
  }
322
322
  }
323
323
  }
324
- `,variables:{branchName:u.name,expectedHeadOid:u.oid,fileChanges:{additions:Object.entries(a).map(([p,d])=>({contents:Nt.Base64.encode(d),path:p})),deletions:o.map(p=>({path:p}))},message:{body:n.description,headline:n.summary},repositoryNameWithOwner:`${i.namespace}/${i.name}`}},t);if(!l.body.data)throw new f("Could not create commit",l.body.errors);return{data:{name:l.body.data.createCommitOnBranch.ref.name,commit:{authoredDate:new Date(l.body.data.createCommitOnBranch.commit.authoredDate),committedDate:new Date(l.body.data.createCommitOnBranch.commit.committedDate),oid:l.body.data.createCommitOnBranch.commit.oid}}}}async getAccountForEmail(e,t={}){let n=await this.getScopes(t),o=await R(this.config,{query:`
324
+ `,variables:{branchName:u.name,expectedHeadOid:u.oid,fileChanges:{additions:Object.entries(i).map(([p,d])=>({contents:Ft.Base64.encode(d),path:p})),deletions:o.map(p=>({path:p}))},message:{body:n.description,headline:n.summary},repositoryNameWithOwner:`${a.namespace}/${a.name}`}},t);if(!l.body.data)throw new f("Could not create commit",l.body.errors);return{data:{name:l.body.data.createCommitOnBranch.ref.name,commit:{authoredDate:new Date(l.body.data.createCommitOnBranch.commit.authoredDate),committedDate:new Date(l.body.data.createCommitOnBranch.commit.committedDate),oid:l.body.data.createCommitOnBranch.commit.oid}}}}async getAccountForEmail(e,t={}){let n=await this.getScopes(t),o=await R(this.config,{query:`
325
325
  query getAccountForEmail($query: String! $avatarSize: Int) {
326
326
  search(query: $query, type: USER, first: 1) {
327
327
  nodes {
328
328
  ... on User {
329
- ${D(!0,x(n))}
329
+ ${$(!0,x(n))}
330
330
  }
331
331
  }
332
332
  }
333
333
  }
334
- `,variables:{query:`in:email ${e.email}`,avatarSize:e.avatarSize}},t),a=o.body.data?.search?.nodes?.[0];if(!a)throw new f("Could not find user via email",o.body.errors);return{data:A({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)})}}async getAccountForUsername(e,t={}){let n=await this.getScopes(t),o=await R(this.config,{query:`
334
+ `,variables:{query:`in:email ${e.email}`,avatarSize:e.avatarSize}},t),i=o.body.data?.search?.nodes?.[0];if(!i)throw new f("Could not find user via email",o.body.errors);return{data:A({...i,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(i.avatarUrl,i.email,t)})}}async getAccountForUsername(e,t={}){let n=await this.getScopes(t),o=await R(this.config,{query:`
335
335
  query getUserForUsername($login: String! $avatarSize: Int) {
336
336
  user(login: $login) {
337
- ${D(!0,x(n))}
337
+ ${$(!0,x(n))}
338
338
  }
339
339
  }
340
- `,variables:{login:e.username,avatarSize:e.avatarSize}},t),a=o.body.data?.user;if(!a)throw new f("Could not find user via username",o.body.errors);return{data:A({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)})}}async getOrgsForCurrentUser(e={},t={}){let n=await R(this.config,{query:`
340
+ `,variables:{login:e.username,avatarSize:e.avatarSize}},t),i=o.body.data?.user;if(!i)throw new f("Could not find user via username",o.body.errors);return{data:A({...i,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(i.avatarUrl,i.email,t)})}}async getOrgsForCurrentUser(e={},t={}){let n=await R(this.config,{query:`
341
341
  query getOrgsForCurrentUser($cursor: String, $first: Int!) {
342
342
  viewer {
343
343
  organizations(first: $first after: $cursor) {
@@ -356,7 +356,7 @@ query getOrgsForCurrentUser($cursor: String, $first: Int!) {
356
356
  }
357
357
  }
358
358
  }
359
- `,variables:{cursor:e.cursor,first:S}},t);if(!n.body.data)throw new f("Could not fetch orgs for current user",n.body.errors);let o=n.body.data.viewer.organizations.nodes||[];return{pageInfo:n.body.data.viewer.organizations.pageInfo,data:o.map(a=>({id:a.databaseId.toString(),graphQLId:a.id,username:a.login,name:a.name||null,email:a.email||null,avatarUrl:a.avatarUrl}))}}async getOrgMembers(e,t={}){let n=await R(this.config,{query:`
359
+ `,variables:{cursor:e.cursor,first:v}},t);if(!n.body.data)throw new f("Could not fetch orgs for current user",n.body.errors);let o=n.body.data.viewer.organizations.nodes||[];return{pageInfo:n.body.data.viewer.organizations.pageInfo,data:o.map(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={}){let n=await R(this.config,{query:`
360
360
  query getOrgMember($cursor: String, $first: Int!, $login: String!) {
361
361
  viewer {
362
362
  organization(login: $login) {
@@ -366,28 +366,28 @@ query getOrgMember($cursor: String, $first: Int!, $login: String!) {
366
366
  hasNextPage
367
367
  }
368
368
  nodes {
369
- ${D(!1,!0)}
369
+ ${$(!1,!0)}
370
370
  }
371
371
  }
372
372
  }
373
373
  }
374
374
  }
375
- `,variables:{cursor:e.cursor,first:S,login:e.org}},t);if(!n.body.data?.viewer.organization?.membersWithRole&&n.body.errors?.length)throw new f("Could not read the members of the organization",n.body.errors);let o=n.body.data?.viewer.organization?.membersWithRole.nodes||[];return{pageInfo:{hasNextPage:n.body.data?.viewer.organization?.membersWithRole.pageInfo.hasNextPage??!1,endCursor:n.body.data?.viewer.organization?.membersWithRole.pageInfo.endCursor??null},data:o.map(a=>A({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,t)}))}}async getRepo(e,t={}){let n=await R(this.config,{query:`
375
+ `,variables:{cursor:e.cursor,first:v,login:e.org}},t);if(!n.body.data?.viewer.organization?.membersWithRole&&n.body.errors?.length)throw new f("Could not read the members of the organization",n.body.errors);let o=n.body.data?.viewer.organization?.membersWithRole.nodes||[];return{pageInfo:{hasNextPage:n.body.data?.viewer.organization?.membersWithRole.pageInfo.hasNextPage??!1,endCursor:n.body.data?.viewer.organization?.membersWithRole.pageInfo.endCursor??null},data:o.map(i=>A({...i,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(i.avatarUrl,i.email,t)}))}}async getRepo(e,t={}){let n=await R(this.config,{query:`
376
376
  query getRepo($owner: String!, $name: String!) {
377
377
  repository(owner: $owner, name: $name) {
378
- ${Ke}
378
+ ${Ze}
379
379
  }
380
380
  }
381
- `,variables:{owner:e.namespace,name:e.name}},t);if(!n.body.data?.repository)throw new f(`Repository ${e.namespace}/${e.name} not found`,n.body.errors);return{data:Xe(n.body.data.repository)}}async getRepos(e,t={}){let n=e.map(({namespace:u,name:l},p)=>`
381
+ `,variables:{owner:e.namespace,name:e.name}},t);if(!n.body.data?.repository)throw new f(`Repository ${e.namespace}/${e.name} not found`,n.body.errors);return{data:Ye(n.body.data.repository)}}async getRepos(e,t={}){let n=e.map(({namespace:u,name:l},p)=>`
382
382
  getRepo_${p}: repository(owner: "${u}", name: "${l}") {
383
- ${Ke}
383
+ ${Ze}
384
384
  }
385
385
  `).join(`
386
386
  `),o=await R(this.config,{query:`
387
387
  query batchGetRepos {
388
388
  ${n}
389
389
  }
390
- `},t);if(!o.body.data)throw new f("Could not fetch repos",o.body.errors);let a=[],i=[];return e.forEach((u,l)=>{let p=o.body.data[`getRepo_${l}`];p?a.push(Xe(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:`${K(this.config,t)}/user/repos?${n.toString()}&page=${a}`,headers:{...h(t.token||this.config.token),Accept:"application/vnd.github.raw+json","X-Github-Next-Global-ID":1}});return await this.fetchMultipleRESTPages(e.page??1,e.simultaneousPagesToFetch??4,o,kt)}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:`${K(this.config,t)}/orgs/${e.orgName}/repos?per_page=100&page=${o}`,headers:{...h(t.token||this.config.token),Accept:"application/vnd.github.raw+json","X-Github-Next-Global-ID":1}});return await this.fetchMultipleRESTPages(e.page??1,e.simultaneousPagesToFetch??4,n,kt)}async getReposForUsernames(e,t={}){if(!e.usernames.length)return{pageInfo:{endCursor:null,hasNextPage:!1},data:[]};let n=await R(this.config,{query:`
390
+ `},t);if(!o.body.data)throw new f("Could not fetch repos",o.body.errors);let i=[],a=[];return e.forEach((u,l)=>{let p=o.body.data[`getRepo_${l}`];p?i.push(Ye(p)):a.push({input:u})}),{data:i,errors:a}}async fetchMultipleRESTPages(e,t,n,o){let i=[];for(let d=0;d<t;d++)i.push(n(e+d));let a=await Promise.all(i),u=[];for(let d of a){if(!d.body)throw new Error(d.statusText||"Unknown error");u=u.concat(d.body.map(c=>o(c)))}let l=a.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=i=>this.config.request({url:`${X(this.config,t)}/user/repos?${n.toString()}&page=${i}`,headers:{...h(t.token||this.config.token),Accept:"application/vnd.github.raw+json","X-Github-Next-Global-ID":1}});return await this.fetchMultipleRESTPages(e.page??1,e.simultaneousPagesToFetch??4,o,_t)}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:`${X(this.config,t)}/orgs/${e.orgName}/repos?per_page=100&page=${o}`,headers:{...h(t.token||this.config.token),Accept:"application/vnd.github.raw+json","X-Github-Next-Global-ID":1}});return await this.fetchMultipleRESTPages(e.page??1,e.simultaneousPagesToFetch??4,n,_t)}async getReposForUsernames(e,t={}){if(!e.usernames.length)return{pageInfo:{endCursor:null,hasNextPage:!1},data:[]};let n=await R(this.config,{query:`
391
391
  query getReposForUsernames($query: String!, $cursor: String, $first: Int!) {
392
392
  search(query: $query, type: REPOSITORY, first: $first, after: $cursor) {
393
393
  pageInfo {
@@ -396,12 +396,12 @@ query getReposForUsernames($query: String!, $cursor: String, $first: Int!) {
396
396
  }
397
397
  nodes {
398
398
  ... on Repository {
399
- ${Ke}
399
+ ${Ze}
400
400
  }
401
401
  }
402
402
  }
403
403
  }
404
- `,variables:{query:`fork:true ${e.usernames.map(a=>`user:${a}`).join(" ")}`,cursor:e.cursor,first:S}},t);if(!n.body.data)throw new f("Could not fetch repos for usernames",n.body.errors);let o=n.body.data.search.nodes||[];return{pageInfo:n.body.data.search.pageInfo,data:o.map(Xe)}}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={}){let o=await R(this.config,{query:`
404
+ `,variables:{query:`fork:true ${e.usernames.map(i=>`user:${i}`).join(" ")}`,cursor:e.cursor,first:v}},t);if(!n.body.data)throw new f("Could not fetch repos for usernames",n.body.errors);let o=n.body.data.search.nodes||[];return{pageInfo:n.body.data.search.pageInfo,data:o.map(Ye)}}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={}){let o=await R(this.config,{query:`
405
405
  query getRefs($owner: String!, $name: String!, $refPrefix: String!, $cursor: String, $first: Int!) {
406
406
  repository(owner: $owner, name: $name) {
407
407
  refs(refPrefix: $refPrefix first: $first after: $cursor) {
@@ -422,7 +422,7 @@ query getRefs($owner: String!, $name: String!, $refPrefix: String!, $cursor: Str
422
422
  }
423
423
  }
424
424
  }
425
- `,variables:{owner:t.repo.namespace,name:t.repo.name,refPrefix:e,cursor:t.cursor,first:S}},n),a=o.body.data?.repository;if(!a)throw new f("Ref repository not found.",o.body.errors);let i=a.refs;return i?{pageInfo:i.pageInfo,data:(i.nodes||[]).map(u=>{let l=u.target?.oid?u.target:null;return{name:u.name,commit:l?{oid:l.oid,authoredDate:new Date(l.authoredDate),committedDate:new Date(l.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={}){let n=await R(this.config,{query:`
425
+ `,variables:{owner:t.repo.namespace,name:t.repo.name,refPrefix:e,cursor:t.cursor,first:v}},n),i=o.body.data?.repository;if(!i)throw new f("Ref repository not found.",o.body.errors);let a=i.refs;return a?{pageInfo:a.pageInfo,data:(a.nodes||[]).map(u=>{let l=u.target?.oid?u.target:null;return{name:u.name,commit:l?{oid:l.oid,authoredDate:new Date(l.authoredDate),committedDate:new Date(l.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={}){let n=await R(this.config,{query:`
426
426
  query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
427
427
  repository(owner: $owner, name: $name) {
428
428
  object(expression: $ref) {
@@ -461,7 +461,7 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
461
461
  }
462
462
  }
463
463
  }
464
- `,variables:{owner:e.repo.namespace,name:e.repo.name,ref:e.ref,path:e.path}},t),o=n.body.data?.repository;if(!o)throw new f("Blame repository not found.",n.body.errors);let a=o.object;if(!a||!("blame"in a))throw new f("Ref not found.",n.body.errors);if(a.blame.ranges.length===0)throw new f("File not found.",n.body.errors);return{data:{ranges:a.blame.ranges.map(i=>({startingLine:i.startingLine,endingLine:i.endingLine,commit:{oid:i.commit.oid,parentOids:i.commit.parents.nodes?.map(u=>u.oid)||[],authoredDate:new Date(i.commit.authoredDate),author:i.commit.author?{name:i.commit.author.name,email:i.commit.author.email,avatarUrl:i.commit.author.avatarUrl}:null,committedDate:new Date(i.commit.committedDate),committer:i.commit.committer?{name:i.commit.committer.name,email:i.commit.committer.email,avatarUrl:i.commit.committer.avatarUrl}:null,message:i.commit.message,fileCount:i.commit.changedFilesIfAvailable,additions:i.commit.additions,deletions:i.commit.deletions}}))}}}async getFileContents(e,t={}){let n=await this.config.request({url:`${K(this.config,t)}/repos/${e.repo.namespace}/${e.repo.name}/contents/${encodeURIComponent(e.path)}?ref=${e.ref}`,headers:{...h(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={}){let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=x(o),i=p=>{let d=p&&typeof e.isDraft=="boolean"?`${e.query} draft:${e.isDraft}`:e.query;return Ve("pr",d,e.cursor,{maxPageSize:e.maxPageSize??At,supportsEmail:a,supportsDrafts:p,enterpriseVersion:n,includeFromArchivedRepos:e.includeFromArchivedRepos})},u=await R(this.config,i(!0),t);u.body.errors&&ye(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 f("Could not search pull requests",u.body.errors);return{pageInfo:{hasNextPage:l.search.pageInfo.hasNextPage,endCursor:l.search.pageInfo.endCursor},data:l.search.nodes?.filter(C).map(Ze)||[]}}async searchIssues(e,t={}){let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=x(o),i=await R(this.config,Ve("issue",e.query,e.cursor,{supportsEmail:a,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize??Gt,enterpriseVersion:n}),t),{data:u}=i.body;if(!u)throw new f("Could not search issues",i.body.errors);return{pageInfo:{hasNextPage:u.search.pageInfo.hasNextPage,endCursor:u.search.pageInfo.endCursor},data:u.search.nodes?.filter(C).map(ts)||[]}}async getPullRequestsAssociatedWithUser(e,t={}){let n=[`involves:${e.username}`];return e.repos?.length&&e.repos.forEach(o=>{n.push(`repo:${o.namespace}/${o.name}`)}),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=Je(l||"");return i.forEach(m=>{g.push(`repo:${m.namespace}/${m.name}`)}),n&&n.forEach(m=>{g.push(`assignee:${m}`)}),o&&g.push(`updated:<${o}`),a&&g.push(`author:${a}`),u&&g.push(`review-requested:${u}`),p&&g.push(`mentions:${p}`),d&&d.forEach(m=>{g.push(`label:"${m}"`)}),this.searchPullRequests({query:`sort:updated ${g.join(" ")}`,isDraft:e.isDraft,cursor:e.cursor,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:c},t)}async getPullRequestForRepo(e,t={}){let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=x(o),i=d=>({query:`query getPullRequest(
464
+ `,variables:{owner:e.repo.namespace,name:e.repo.name,ref:e.ref,path:e.path}},t),o=n.body.data?.repository;if(!o)throw new f("Blame repository not found.",n.body.errors);let i=o.object;if(!i||!("blame"in i))throw new f("Ref not found.",n.body.errors);if(i.blame.ranges.length===0)throw new f("File not found.",n.body.errors);return{data:{ranges:i.blame.ranges.map(a=>({startingLine:a.startingLine,endingLine:a.endingLine,commit:{oid:a.commit.oid,parentOids:a.commit.parents.nodes?.map(u=>u.oid)||[],authoredDate:new Date(a.commit.authoredDate),author:a.commit.author?{name:a.commit.author.name,email:a.commit.author.email,avatarUrl:a.commit.author.avatarUrl}:null,committedDate:new Date(a.commit.committedDate),committer:a.commit.committer?{name:a.commit.committer.name,email:a.commit.committer.email,avatarUrl:a.commit.committer.avatarUrl}:null,message:a.commit.message,fileCount:a.commit.changedFilesIfAvailable,additions:a.commit.additions,deletions:a.commit.deletions}}))}}}async getFileContents(e,t={}){let n=await this.config.request({url:`${X(this.config,t)}/repos/${e.repo.namespace}/${e.repo.name}/contents/${encodeURIComponent(e.path)}?ref=${e.ref}`,headers:{...h(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={}){let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),i=x(o),a=p=>{let d=p&&typeof e.isDraft=="boolean"?`${e.query} draft:${e.isDraft}`:e.query;return Xe("pr",d,e.cursor,{maxPageSize:e.maxPageSize??Tt,supportsEmail:i,supportsDrafts:p,enterpriseVersion:n,includeFromArchivedRepos:e.includeFromArchivedRepos})},u=await R(this.config,a(!0),t);u.body.errors&&we(u.body.errors)&&(this.config.baseUrl||t.baseUrl)&&(u=await R(this.config,a(!1),t));let{data:l}=u.body;if(!l)throw new f("Could not search pull requests",u.body.errors);return{pageInfo:{hasNextPage:l.search.pageInfo.hasNextPage,endCursor:l.search.pageInfo.endCursor},data:l.search.nodes?.filter(C).map(et)||[]}}async searchIssues(e,t={}){let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),i=x(o),a=await R(this.config,Xe("issue",e.query,e.cursor,{supportsEmail:i,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize??Ot,enterpriseVersion:n}),t),{data:u}=a.body;if(!u)throw new f("Could not search issues",a.body.errors);return{pageInfo:{hasNextPage:u.search.pageInfo.hasNextPage,endCursor:u.search.pageInfo.endCursor},data:u.search.nodes?.filter(C).map(rs)||[]}}async getPullRequestsAssociatedWithUser(e,t={}){let n=[`involves:${e.username}`];return e.repos?.length&&e.repos.forEach(o=>{n.push(`repo:${o.namespace}/${o.name}`)}),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:i,repos:a,reviewRequestedLogin:u,startQuery:l,mentionLogin:p,labelNames:d,maxPageSize:c}=e,g=Ke(l||"");return a.forEach(m=>{g.push(`repo:${m.namespace}/${m.name}`)}),n&&n.forEach(m=>{g.push(`assignee:${m}`)}),o&&g.push(`updated:<${o}`),i&&g.push(`author:${i}`),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={}){let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),i=x(o),a=d=>({query:`query getPullRequest(
465
465
  $owner: String!
466
466
  $name: String!
467
467
  $number: Int!
@@ -471,24 +471,24 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
471
471
  name: $name
472
472
  ) {
473
473
  pullRequest(number: $number) {
474
- ${be(d,a,n)}
474
+ ${Pe(d,i,n)}
475
475
  }
476
476
  }
477
- }`,variables:{owner:e.repo.namespace,name:e.repo.name,number:e.number}}),u=await R(this.config,i(!0),t);u.body.errors&&ye(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 f("Could not fetch pull request by number",u.body.errors);let p=u.body.data?.repository.pullRequest;return{data:p?Ze(p):null}}async getPullRequestByGraphQLId(e,t={}){let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),a=x(o),i=d=>({query:`query getPullRequest(
477
+ }`,variables:{owner:e.repo.namespace,name:e.repo.name,number:e.number}}),u=await R(this.config,a(!0),t);u.body.errors&&we(u.body.errors)&&(this.config.baseUrl||t.baseUrl)&&(u=await R(this.config,a(!1),t));let{data:l}=u.body;if(!l)throw new f("Could not fetch pull request by number",u.body.errors);let p=u.body.data?.repository.pullRequest;return{data:p?et(p):null}}async getPullRequestByGraphQLId(e,t={}){let n=await this.getEnterpriseVersion(t),o=await this.getScopes(t),i=x(o),a=d=>({query:`query getPullRequest(
478
478
  $graphQLId: ID!
479
479
  ) {
480
480
  node(id: $graphQLId) {
481
481
  ... on PullRequest {
482
- ${be(d,a,n)}
482
+ ${Pe(d,i,n)}
483
483
  }
484
484
  }
485
- }`,variables:{graphQLId:e.graphQLId}}),u=await R(this.config,i(!0),t);u.body.errors&&ye(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 f("Could not fetch pull request by id",u.body.errors);let p=u.body.data?.node;return{data:p?Ze(p):null}}async closePullRequest(e,t={}){let{pullRequest:{graphQLId:n}}=e;if(!n)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation ClosePullRequest($pullRequestGraphQLId: ID!) {
485
+ }`,variables:{graphQLId:e.graphQLId}}),u=await R(this.config,a(!0),t);u.body.errors&&we(u.body.errors)&&(this.config.baseUrl||t.baseUrl)&&(u=await R(this.config,a(!1),t));let{data:l}=u.body;if(!l)throw new f("Could not fetch pull request by id",u.body.errors);let p=u.body.data?.node;return{data:p?et(p):null}}async closePullRequest(e,t={}){let{pullRequest:{graphQLId:n}}=e;if(!n)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation ClosePullRequest($pullRequestGraphQLId: ID!) {
486
486
  closePullRequest(input: { pullRequestId: $pullRequestGraphQLId }) {
487
487
  pullRequest {
488
488
  id
489
489
  }
490
490
  }
491
- }`,a=await R(this.config,{query:`${o}`,variables:{pullRequestGraphQLId:n}},t);if(!a.body.data?.closePullRequest?.pullRequest?.id)throw new f("Could not close pull request",a.body.errors)}async mergePullRequest(e,t={}){let{pullRequest:n,mergeStrategy:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');if(!n.headRef?.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(
491
+ }`,i=await R(this.config,{query:`${o}`,variables:{pullRequestGraphQLId:n}},t);if(!i.body.data?.closePullRequest?.pullRequest?.id)throw new f("Could not close pull request",i.body.errors)}async mergePullRequest(e,t={}){let{pullRequest:n,mergeStrategy:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');if(!n.headRef?.oid)throw new Error('GitHub requires "headRef.oid" for this function.');let i;switch(o){case"MERGE_COMMIT":{i="MERGE";break}case"REBASE":{i="REBASE";break}case"SQUASH":{i="SQUASH";break}}let a=`mutation MergePullRequest(
492
492
  $pullRequestGraphQLId: ID!,
493
493
  $expectedSourceSha: GitObjectID!,
494
494
  $mergeStrategy: PullRequestMergeMethod,
@@ -502,7 +502,7 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
502
502
  id
503
503
  }
504
504
  }
505
- }`,u=await R(this.config,{query:`${i}`,variables:{pullRequestGraphQLId:n.graphQLId,expectedSourceSha:n.headRef.oid,mergeStrategy:a}},t);if(!u.body.data?.mergePullRequest?.pullRequest?.id)throw new f("Could not merge pull request",u.body.errors)}async approvePullRequest(e,t={}){let{pullRequest:n,comment:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=`mutation ApprovePullRequest(
505
+ }`,u=await R(this.config,{query:`${a}`,variables:{pullRequestGraphQLId:n.graphQLId,expectedSourceSha:n.headRef.oid,mergeStrategy:i}},t);if(!u.body.data?.mergePullRequest?.pullRequest?.id)throw new f("Could not merge pull request",u.body.errors)}async approvePullRequest(e,t={}){let{pullRequest:n,comment:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let i=`mutation ApprovePullRequest(
506
506
  $pullRequestId: ID!,
507
507
  $body: String
508
508
  ) {
@@ -515,7 +515,7 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
515
515
  id
516
516
  }
517
517
  }
518
- }`,i=await R(this.config,{query:a,variables:{pullRequestId:n.graphQLId,body:o||null}},t);if(!i.body.data?.addPullRequestReview?.pullRequestReview?.id)throw new f("Could not approve pull request",i.body.errors)}async requestPullRequestChanges(e,t={}){let{pullRequest:n,comment:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');if(!o||o.trim()==="")throw new Error("GitHub requires a comment when requesting changes.");let a=`mutation RequestPullRequestChanges(
518
+ }`,a=await R(this.config,{query:i,variables:{pullRequestId:n.graphQLId,body:o||null}},t);if(!a.body.data?.addPullRequestReview?.pullRequestReview?.id)throw new f("Could not approve pull request",a.body.errors)}async requestPullRequestChanges(e,t={}){let{pullRequest:n,comment:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');if(!o||o.trim()==="")throw new Error("GitHub requires a comment when requesting changes.");let i=`mutation RequestPullRequestChanges(
519
519
  $pullRequestId: ID!,
520
520
  $body: String!
521
521
  ) {
@@ -528,7 +528,7 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
528
528
  id
529
529
  }
530
530
  }
531
- }`,i=await R(this.config,{query:a,variables:{pullRequestId:n.graphQLId,body:o}},t);if(!i.body.data?.addPullRequestReview?.pullRequestReview?.id)throw new f("Could not request pull request changes",i.body.errors)}async commentOnPullRequest(e,t={}){let{pullRequest:n,comment:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');if(!o||o.trim()==="")throw new Error("GitHub requires a comment when commenting on a pull request.");let a=`mutation CommentOnPullRequest(
531
+ }`,a=await R(this.config,{query:i,variables:{pullRequestId:n.graphQLId,body:o}},t);if(!a.body.data?.addPullRequestReview?.pullRequestReview?.id)throw new f("Could not request pull request changes",a.body.errors)}async commentOnPullRequest(e,t={}){let{pullRequest:n,comment:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');if(!o||o.trim()==="")throw new Error("GitHub requires a comment when commenting on a pull request.");let i=`mutation CommentOnPullRequest(
532
532
  $pullRequestId: ID!,
533
533
  $body: String!
534
534
  ) {
@@ -541,13 +541,65 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
541
541
  id
542
542
  }
543
543
  }
544
- }`,i=await R(this.config,{query:a,variables:{pullRequestId:n.graphQLId,body:o}},t);if(!i.body.data?.addPullRequestReview?.pullRequestReview?.id)throw new f("Could not comment on pull request",i.body.errors)}async setPullRequestMilestone(e,t={}){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) {
544
+ }`,a=await R(this.config,{query:i,variables:{pullRequestId:n.graphQLId,body:o}},t);if(!a.body.data?.addPullRequestReview?.pullRequestReview?.id)throw new f("Could not comment on pull request",a.body.errors)}async addCommentToPullRequest(e,t={}){let{pullRequest:n,comment:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');if(!o||o.trim()==="")throw new Error("GitHub requires a comment when adding a comment to a pull request.");let i=`mutation AddCommentToPullRequest(
545
+ $subjectId: ID!,
546
+ $body: String!
547
+ ) {
548
+ addComment(input: {
549
+ subjectId: $subjectId,
550
+ body: $body
551
+ }) {
552
+ commentEdge {
553
+ node {
554
+ id
555
+ }
556
+ }
557
+ }
558
+ }`,a=await R(this.config,{query:i,variables:{subjectId:n.graphQLId,body:o}},t);if(!a.body.data?.addComment?.commentEdge?.node?.id)throw new f("Could not add comment to pull request",a.body.errors)}async addInlineCommentToPullRequest(e,t={}){let{pullRequest:n,comment:o,path:i,line:a,side:u="RIGHT",threadId:l}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');if(!o?.trim())throw new Error("GitHub requires a comment when adding an inline comment to a pull request.");if(l)return this.addReplyToReviewThread({threadId:l,comment:o},t);if(!i?.trim())throw new Error("GitHub requires a file path when adding an inline comment to a pull request.");if(!Number.isInteger(a)||a<1)throw new Error("GitHub requires a positive line number when adding an inline comment to a pull request.");if(u!=="LEFT"&&u!=="RIGHT")throw new Error('GitHub requires side to be either "LEFT" or "RIGHT".');return this.createReviewThread({pullRequest:n,comment:o,path:i,line:a,side:u},t)}async addReplyToReviewThread(e,t){let{threadId:n,comment:o}=e,i=`mutation AddPullRequestReviewThreadReply(
559
+ $threadId: ID!,
560
+ $body: String!
561
+ ) {
562
+ addPullRequestReviewThreadReply(input: {
563
+ pullRequestReviewThreadId: $threadId,
564
+ body: $body
565
+ }) {
566
+ comment {
567
+ id
568
+ }
569
+ }
570
+ }`,a=await R(this.config,{query:i,variables:{threadId:n,body:o}},t);if(!a.body.data?.addPullRequestReviewThreadReply?.comment?.id)throw new f("Could not add reply to pull request review thread",a.body.errors);return n}async createReviewThread(e,t){let{pullRequest:n,comment:o,path:i,line:a,side:u}=e,l=`mutation AddInlineCommentToPullRequest(
571
+ $pullRequestId: ID!,
572
+ $body: String!,
573
+ $path: String!,
574
+ $line: Int!,
575
+ $side: DiffSide
576
+ ) {
577
+ addPullRequestReview(input: {
578
+ pullRequestId: $pullRequestId,
579
+ event: COMMENT,
580
+ threads: [{
581
+ path: $path,
582
+ body: $body,
583
+ line: $line,
584
+ side: $side
585
+ }]
586
+ }) {
587
+ pullRequestReview {
588
+ id
589
+ comments(first: 1) {
590
+ nodes {
591
+ id
592
+ }
593
+ }
594
+ }
595
+ }
596
+ }`,p=await R(this.config,{query:l,variables:{pullRequestId:n.graphQLId,body:o,path:i,line:a,side:u}},t);if(!p.body.data?.addPullRequestReview?.pullRequestReview?.id)throw new f("Could not add inline comment to pull request",p.body.errors);return p.body.data?.addPullRequestReview?.pullRequestReview?.comments?.nodes?.[0]?.id}async setPullRequestMilestone(e,t={}){let{pullRequest:n,milestone:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let i=`mutation SetPullRequestMilestone($pullRequestGraphQLId: ID!, $milestoneGraphQLId: ID) {
545
597
  updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, milestoneId: $milestoneGraphQLId }) {
546
598
  pullRequest {
547
599
  id
548
600
  }
549
601
  }
550
- }`,i=await R(this.config,{query:`${a}`,variables:{pullRequestGraphQLId:n.graphQLId,milestoneGraphQLId:o?.graphQLId??null}},t);if(!i.body.data?.updatePullRequest?.pullRequest?.id)throw new f("Could not set milestone of pull request",i.body.errors)}async markPullRequestReadyForReview(e,t){let n=`mutation MarkReadyToReview($pullRequestGraphQLId: ID!) {
602
+ }`,a=await R(this.config,{query:`${i}`,variables:{pullRequestGraphQLId:n.graphQLId,milestoneGraphQLId:o?.graphQLId??null}},t);if(!a.body.data?.updatePullRequest?.pullRequest?.id)throw new f("Could not set milestone of pull request",a.body.errors)}async markPullRequestReadyForReview(e,t){let n=`mutation MarkReadyToReview($pullRequestGraphQLId: ID!) {
551
603
  markPullRequestReadyForReview(input: { pullRequestId: $pullRequestGraphQLId }) {
552
604
  pullRequest {
553
605
  id
@@ -559,25 +611,25 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
559
611
  id
560
612
  }
561
613
  }
562
- }`,o=await R(this.config,{query:n,variables:{pullRequestGraphQLId:e}},t);if(!o.body.data?.convertPullRequestToDraft?.pullRequest?.id)throw new f("Could not convert pull request to draft",o.body.errors)}async setPullRequestAsDraft(e,t={}){let{pullRequest:{graphQLId:n},isDraft:o}=e;if(!n)throw new Error('GitHub requires "graphQLId" for this function.');if(o){await this.convertPullRequestToDraft(n,t);return}await this.markPullRequestReadyForReview(n,t)}async setPullRequestReviewers(e,t={}){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(d=>d.state!=="REVIEW_REQUESTED").map(d=>{if(!d.reviewer.graphQLId)throw new Error('GitHub requires reviewer "graphQLId" for this function.');return d.reviewer.graphQLId}),u=a.map(d=>{if(!d.graphQLId)throw new Error('GitHub requires reviewer "graphQLId" for this function.');return d.graphQLId}).filter(d=>i.indexOf(d)===-1),l=`mutation SetPullRequestReviewers($pullRequestGraphQLId: ID!, $reviewerGraphQLIds: [ID!]!) {
614
+ }`,o=await R(this.config,{query:n,variables:{pullRequestGraphQLId:e}},t);if(!o.body.data?.convertPullRequestToDraft?.pullRequest?.id)throw new f("Could not convert pull request to draft",o.body.errors)}async setPullRequestAsDraft(e,t={}){let{pullRequest:{graphQLId:n},isDraft:o}=e;if(!n)throw new Error('GitHub requires "graphQLId" for this function.');if(o){await this.convertPullRequestToDraft(n,t);return}await this.markPullRequestReadyForReview(n,t)}async setPullRequestReviewers(e,t={}){let{pullRequest:{reviews:n,graphQLId:o},reviewers:i}=e;if(!n)throw new Error('GitHub requires "reviews" for this function');if(!o)throw new Error('GitHub requires "graphQLId" for this function.');let a=n.filter(d=>d.state!=="REVIEW_REQUESTED").map(d=>{if(!d.reviewer.graphQLId)throw new Error('GitHub requires reviewer "graphQLId" for this function.');return d.reviewer.graphQLId}),u=i.map(d=>{if(!d.graphQLId)throw new Error('GitHub requires reviewer "graphQLId" for this function.');return d.graphQLId}).filter(d=>a.indexOf(d)===-1),l=`mutation SetPullRequestReviewers($pullRequestGraphQLId: ID!, $reviewerGraphQLIds: [ID!]!) {
563
615
  requestReviews(input: { pullRequestId: $pullRequestGraphQLId, userIds: $reviewerGraphQLIds }) {
564
616
  pullRequest {
565
617
  id
566
618
  }
567
619
  }
568
- }`,p=await R(this.config,{query:l,variables:{pullRequestGraphQLId:o,reviewerGraphQLIds:u}},t);if(!p.body.data?.requestReviews?.pullRequest?.id)throw new f("Could not set pull request reviewers",p.body.errors)}async reRequestPullRequestReviews(e,t={}){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 p of a){if(!p.graphQLId)throw new Error('GitHub requires reviwer "graphQLId" for this function.');if(!n.find(d=>d.reviewer.graphQLId===p.graphQLId))throw new Error("Can only re-request review from existing reviewer.");i.push(p.graphQLId)}let u=`mutation SetPullRequestReviewers($pullRequestGraphQLId: ID!, $reviewerGraphQLIds: [ID!]!) {
620
+ }`,p=await R(this.config,{query:l,variables:{pullRequestGraphQLId:o,reviewerGraphQLIds:u}},t);if(!p.body.data?.requestReviews?.pullRequest?.id)throw new f("Could not set pull request reviewers",p.body.errors)}async reRequestPullRequestReviews(e,t={}){let{pullRequest:{reviews:n,graphQLId:o},reviewers:i}=e;if(!o)throw new Error('GitHub requires "graphQLId" for this function.');if(!n)throw new Error('GitHub requires "reviews" for this function.');let a=[];for(let p of i){if(!p.graphQLId)throw new Error('GitHub requires reviwer "graphQLId" for this function.');if(!n.find(d=>d.reviewer.graphQLId===p.graphQLId))throw new Error("Can only re-request review from existing reviewer.");a.push(p.graphQLId)}let u=`mutation SetPullRequestReviewers($pullRequestGraphQLId: ID!, $reviewerGraphQLIds: [ID!]!) {
569
621
  requestReviews(input: { pullRequestId: $pullRequestGraphQLId, userIds: $reviewerGraphQLIds, union: true }) {
570
622
  pullRequest {
571
623
  id
572
624
  }
573
625
  }
574
- }`,l=await R(this.config,{query:u,variables:{pullRequestGraphQLId:o,reviewerGraphQLIds:i}},t);if(!l.body.data?.requestReviews?.pullRequest?.id)throw new f("Could not re-request pull request reviews",l.body.errors)}async setPullRequestAssignees(e,t={}){let{pullRequest:n,assignees:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=o.map(l=>{if(!l.graphQLId)throw new Error('GitHub requires assignee "graphQLId" for this function.');return l.graphQLId}),i=`mutation SetPullRequestAssignees($pullRequestGraphQLId: ID!, $assigneeGraphQLIds: [ID!]!) {
626
+ }`,l=await R(this.config,{query:u,variables:{pullRequestGraphQLId:o,reviewerGraphQLIds:a}},t);if(!l.body.data?.requestReviews?.pullRequest?.id)throw new f("Could not re-request pull request reviews",l.body.errors)}async setPullRequestAssignees(e,t={}){let{pullRequest:n,assignees:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let i=o.map(l=>{if(!l.graphQLId)throw new Error('GitHub requires assignee "graphQLId" for this function.');return l.graphQLId}),a=`mutation SetPullRequestAssignees($pullRequestGraphQLId: ID!, $assigneeGraphQLIds: [ID!]!) {
575
627
  updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, assigneeIds: $assigneeGraphQLIds }) {
576
628
  pullRequest {
577
629
  id
578
630
  }
579
631
  }
580
- }`,u=await R(this.config,{query:i,variables:{pullRequestGraphQLId:n.graphQLId,assigneeGraphQLIds:a}},t);if(!u.body.data?.updatePullRequest?.pullRequest?.id)throw new f("Could not set pull request assignees",u.body.errors)}async getReviewsForPullRequest(e,t={}){let n=await this.getEnterpriseVersion(t),{repo:{namespace:o,name:a},pullRequestId:i}=e,u=`query getPullRequests(
632
+ }`,u=await R(this.config,{query:a,variables:{pullRequestGraphQLId:n.graphQLId,assigneeGraphQLIds:i}},t);if(!u.body.data?.updatePullRequest?.pullRequest?.id)throw new f("Could not set pull request assignees",u.body.errors)}async getReviewsForPullRequest(e,t={}){let n=await this.getEnterpriseVersion(t),{repo:{namespace:o,name:i},pullRequestId:a}=e,u=`query getPullRequests(
581
633
  $namespace: String!
582
634
  $name: String!
583
635
  $pullRequestId: Int!
@@ -589,8 +641,12 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
589
641
  pullRequest(number: $pullRequestId) {
590
642
  reviewThreads(first: 100) {
591
643
  nodes {
644
+ id
592
645
  isOutdated
593
646
  isResolved
647
+ line
648
+ startLine
649
+ diffSide
594
650
  originalLine
595
651
  originalStartLine
596
652
  startDiffSide
@@ -629,54 +685,54 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
629
685
  }
630
686
  }
631
687
  }
632
- }`,l=await R(this.config,{query:u,variables:{namespace:o,name:a,pullRequestId:i}},t),p=l.body.data?.repository.pullRequest.reviewThreads.nodes?.filter(C).reduce((c,g)=>{if(!g.comments.nodes?.[0]?.pullRequestReview)return c;let m=g.comments.nodes[0].pullRequestReview,b=Yr(g);return b&&(c[m.id]||(c[m.id]=[]),c[m.id].push(b)),c},{})??{};return{data:l.body.data?.repository.pullRequest.reviews.nodes?.filter(C).filter(c=>p[c.id]).map(c=>({author:c.author?{avatarUrl:c.author.avatarUrl,email:null,name:c.author.login}:null,body:c.body,createdAt:c.publishedAt?new Date(c.publishedAt):null,id:c.fullDatabaseId??c.databaseId.toString(),graphQLId:c.id,reviewComments:p[c.id],url:c.url}))??[]}}async getIssuesAssociatedWithUser(e,t={}){let[n,o]=e.cursor?.split(";")||[void 0,void 0],a=[];e.labelNames&&e.labelNames.forEach(c=>{a.push(`label:"${c}"`)});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=c=>{l[c.id]||(l[c.id]=!0,p.push(c))};return i?.data.forEach(d),u?.data.forEach(d),{pageInfo:{hasNextPage:i?.pageInfo.hasNextPage||u?.pageInfo.hasNextPage||!1,endCursor:`${i?.pageInfo.hasNextPage&&i?.pageInfo.endCursor||"null"};${u?.pageInfo.hasNextPage&&u?.pageInfo.endCursor||"null"}`},data:p}}async setPullRequestLabels(e,t={}){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!]) {
688
+ }`,l=await R(this.config,{query:u,variables:{namespace:o,name:i,pullRequestId:a}},t),p=l.body.data?.repository.pullRequest.reviewThreads.nodes?.filter(C).reduce((c,g)=>{if(!g.comments.nodes?.[0]?.pullRequestReview)return c;let m=g.comments.nodes[0].pullRequestReview,b=es(g);return b&&(c[m.id]||(c[m.id]=[]),c[m.id].push(b)),c},{})??{};return{data:l.body.data?.repository.pullRequest.reviews.nodes?.filter(C).filter(c=>p[c.id]).map(c=>({author:c.author?{avatarUrl:c.author.avatarUrl,email:null,name:c.author.login}:null,body:c.body,createdAt:c.publishedAt?new Date(c.publishedAt):null,id:c.fullDatabaseId??c.databaseId.toString(),graphQLId:c.id,reviewComments:p[c.id],url:c.url}))??[]}}async getIssuesAssociatedWithUser(e,t={}){let[n,o]=e.cursor?.split(";")||[void 0,void 0],i=[];e.labelNames&&e.labelNames.forEach(c=>{i.push(`label:"${c}"`)});let[a,u]=await Promise.all([n==="null"?null:this.searchIssues({query:`author:${e.username} ${i.join(" ")}`,cursor:n,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize},t),o==="null"?null:this.searchIssues({query:`assignee:${e.username} ${i.join(" ")}`,cursor:o,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize},t)]),l={},p=[],d=c=>{l[c.id]||(l[c.id]=!0,p.push(c))};return a?.data.forEach(d),u?.data.forEach(d),{pageInfo:{hasNextPage:a?.pageInfo.hasNextPage||u?.pageInfo.hasNextPage||!1,endCursor:`${a?.pageInfo.hasNextPage&&a?.pageInfo.endCursor||"null"};${u?.pageInfo.hasNextPage&&u?.pageInfo.endCursor||"null"}`},data:p}}async setPullRequestLabels(e,t={}){let{pullRequest:n,labels:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let i=`mutation SetPullRequestLabels($pullRequestGraphQLId: ID!, $labelGraphQLIds: [ID!]) {
633
689
  updatePullRequest(input: { pullRequestId: $pullRequestGraphQLId, labelIds: $labelGraphQLIds }) {
634
690
  pullRequest {
635
691
  id
636
692
  }
637
693
  }
638
- }`,i=await R(this.config,{query:a,variables:{pullRequestGraphQLId:n.graphQLId,labelGraphQLIds:o.map(u=>{if(!u.graphQLId)throw new Error('GitHub requires label "graphQLId" for this function.');return u.graphQLId})}},t);if(!i.body.data?.updatePullRequest?.pullRequest?.id)throw new f("Could not set pull request labels",i.body.errors)}async getIssuesForRepos(e,t={}){let n=Je(e.startQuery||""),{cursor:o,assigneeLogins:a,updatedBefore:i,authorLogin:u,mentionLogin:l,labelNames:p}=e;return e.repos.forEach(d=>{n.push(`repo:${d.namespace}/${d.name}`)}),a&&a.forEach(d=>{n.push(`assignee:${d}`)}),i&&n.push(`updated:<${i}`),u&&n.push(`author:${u}`),l&&n.push(`mentions:${l}`),p&&p.forEach(d=>{n.push(`label:"${d}"`)}),this.searchIssues({query:`sort:updated ${n.join(" ")}`,cursor:o,includeFromArchivedRepos:e.includeFromArchivedRepos,maxPageSize:e.maxPageSize},t)}async closeIssueWithReason(e,t={}){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!) {
694
+ }`,a=await R(this.config,{query:i,variables:{pullRequestGraphQLId:n.graphQLId,labelGraphQLIds:o.map(u=>{if(!u.graphQLId)throw new Error('GitHub requires label "graphQLId" for this function.');return u.graphQLId})}},t);if(!a.body.data?.updatePullRequest?.pullRequest?.id)throw new f("Could not set pull request labels",a.body.errors)}async getIssuesForRepos(e,t={}){let n=Ke(e.startQuery||""),{cursor:o,assigneeLogins:i,updatedBefore:a,authorLogin:u,mentionLogin:l,labelNames:p}=e;return e.repos.forEach(d=>{n.push(`repo:${d.namespace}/${d.name}`)}),i&&i.forEach(d=>{n.push(`assignee:${d}`)}),a&&n.push(`updated:<${a}`),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={}){let{issue:n,reason:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let i=`mutation CloseIssueWithReason($issueGraphQLId: ID!, $reason: IssueClosedStateReason!) {
639
695
  closeIssue(input: { issueId: $issueGraphQLId, stateReason: $reason }) {
640
696
  issue {
641
697
  id
642
698
  }
643
699
  }
644
- }`,i=await R(this.config,{query:a,variables:{issueGraphQLId:n.graphQLId,reason:o}},t);if(!i.body.data?.closeIssue?.issue?.id)throw new f("Could not close issue with reason",i.body.errors)}async closeIssue(e,t={}){let{issue:n}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation SetIssueState($issueGraphQLId: ID!) {
700
+ }`,a=await R(this.config,{query:i,variables:{issueGraphQLId:n.graphQLId,reason:o}},t);if(!a.body.data?.closeIssue?.issue?.id)throw new f("Could not close issue with reason",a.body.errors)}async closeIssue(e,t={}){let{issue:n}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation SetIssueState($issueGraphQLId: ID!) {
645
701
  updateIssue(input: { id: $issueGraphQLId, state: CLOSED }) {
646
702
  issue {
647
703
  id
648
704
  }
649
705
  }
650
- }`,a=await R(this.config,{query:o,variables:{issueGraphQLId:n.graphQLId}},t);if(!a.body.data?.updateIssue?.issue?.id)throw new f("Could not close issue",a.body.errors)}async reOpenIssue(e,t={}){let{issue:n}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation ReOpenIssue($issueGraphQLId: ID!) {
706
+ }`,i=await R(this.config,{query:o,variables:{issueGraphQLId:n.graphQLId}},t);if(!i.body.data?.updateIssue?.issue?.id)throw new f("Could not close issue",i.body.errors)}async reOpenIssue(e,t={}){let{issue:n}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let o=`mutation ReOpenIssue($issueGraphQLId: ID!) {
651
707
  reopenIssue(input: { issueId: $issueGraphQLId }) {
652
708
  issue {
653
709
  id
654
710
  }
655
711
  }
656
- }`,a=await R(this.config,{query:o,variables:{issueGraphQLId:n.graphQLId}},t);if(!a.body.data?.reopenIssue?.issue?.id)throw new f("Could not reopen issue",a.body.errors)}async setIssueLabels(e,t={}){let{issue:n,labels:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=o.map(l=>l.graphQLId),i=`mutation SetIssueLabels($issueGraphQLId: ID!, $labelGraphQLIds: [ID!]) {
712
+ }`,i=await R(this.config,{query:o,variables:{issueGraphQLId:n.graphQLId}},t);if(!i.body.data?.reopenIssue?.issue?.id)throw new f("Could not reopen issue",i.body.errors)}async setIssueLabels(e,t={}){let{issue:n,labels:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let i=o.map(l=>l.graphQLId),a=`mutation SetIssueLabels($issueGraphQLId: ID!, $labelGraphQLIds: [ID!]) {
657
713
  updateIssue(input: { id: $issueGraphQLId, labelIds: $labelGraphQLIds }) {
658
714
  issue {
659
715
  id
660
716
  }
661
717
  }
662
- }`,u=await R(this.config,{query:i,variables:{issueGraphQLId:n.graphQLId,labelGraphQLIds:a}},t);if(!u.body.data?.updateIssue?.issue?.id)throw new f("Could not set issue labels",u.body.errors)}async setIssueMilestone(e,t={}){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) {
718
+ }`,u=await R(this.config,{query:a,variables:{issueGraphQLId:n.graphQLId,labelGraphQLIds:i}},t);if(!u.body.data?.updateIssue?.issue?.id)throw new f("Could not set issue labels",u.body.errors)}async setIssueMilestone(e,t={}){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 i=`mutation SetIssueMilestone($issueGraphQLId: ID!, $milestoneGraphQLId: ID) {
663
719
  updateIssue(input: { id: $issueGraphQLId, milestoneId: $milestoneGraphQLId }) {
664
720
  issue {
665
721
  id
666
722
  }
667
723
  }
668
- }`,i=await R(this.config,{query:`${a}`,variables:{issueGraphQLId:n.graphQLId,milestoneGraphQLId:o?.graphQLId??null}},t);if(!i.body.data?.updateIssue?.issue?.id)throw new f("Could not set milestone of issue",i.body.errors)}async setIssueAssignees(e,t={}){let{issue:n,assignees:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let a=o.map(l=>{if(!l.graphQLId)throw new Error('GitHub requires assignee "graphQLId" for this function.');return l.graphQLId}),i=`mutation SetIssueAssignees($issueGraphQLId: ID!, $assigneeGraphQLIds: [ID!]!) {
724
+ }`,a=await R(this.config,{query:`${i}`,variables:{issueGraphQLId:n.graphQLId,milestoneGraphQLId:o?.graphQLId??null}},t);if(!a.body.data?.updateIssue?.issue?.id)throw new f("Could not set milestone of issue",a.body.errors)}async setIssueAssignees(e,t={}){let{issue:n,assignees:o}=e;if(!n.graphQLId)throw new Error('GitHub requires "graphQLId" for this function.');let i=o.map(l=>{if(!l.graphQLId)throw new Error('GitHub requires assignee "graphQLId" for this function.');return l.graphQLId}),a=`mutation SetIssueAssignees($issueGraphQLId: ID!, $assigneeGraphQLIds: [ID!]!) {
669
725
  updateIssue(input: { id: $issueGraphQLId, assigneeIds: $assigneeGraphQLIds }) {
670
726
  issue {
671
727
  id
672
728
  }
673
729
  }
674
- }`,u=await R(this.config,{query:i,variables:{issueGraphQLId:n.graphQLId,assigneeGraphQLIds:a}},t);if(!u.body.data?.updateIssue?.issue?.id)throw new f("Could not set issue assignees",u.body.errors)}async getMilestonesForRepo(e,t={}){let{repo:{namespace:n,name:o},cursor:a}=e,i=await R(this.config,{query:`
730
+ }`,u=await R(this.config,{query:a,variables:{issueGraphQLId:n.graphQLId,assigneeGraphQLIds:i}},t);if(!u.body.data?.updateIssue?.issue?.id)throw new f("Could not set issue assignees",u.body.errors)}async getMilestonesForRepo(e,t={}){let{repo:{namespace:n,name:o},cursor:i}=e,a=await R(this.config,{query:`
675
731
  query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
676
732
  repository(owner: $owner, name: $name) {
677
733
  milestones(first: $first, after: $cursor) {
678
734
  nodes {
679
- ${Re}
735
+ ${be}
680
736
  }
681
737
  pageInfo {
682
738
  endCursor
@@ -685,12 +741,12 @@ query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first:
685
741
  }
686
742
  }
687
743
  }
688
- `,variables:{owner:n,name:o,cursor:a,first:S}},t);if(!i.body.data)throw new f("Could not fetch milestones",i.body.errors);return{pageInfo:i.body.data.repository.milestones?.pageInfo??{endCursor:null,hasNextPage:!1},data:i.body.data.repository.milestones?.nodes?.map(tt)??[]}}async getLabelsForRepo(e,t={}){let{repo:{namespace:n,name:o},cursor:a}=e,i=await R(this.config,{query:`
744
+ `,variables:{owner:n,name:o,cursor:i,first:v}},t);if(!a.body.data)throw new f("Could not fetch milestones",a.body.errors);return{pageInfo:a.body.data.repository.milestones?.pageInfo??{endCursor:null,hasNextPage:!1},data:a.body.data.repository.milestones?.nodes?.map(st)??[]}}async getLabelsForRepo(e,t={}){let{repo:{namespace:n,name:o},cursor:i}=e,a=await R(this.config,{query:`
689
745
  query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first: Int!) {
690
746
  repository(owner: $owner, name: $name) {
691
747
  labels(first: $first, after: $cursor) {
692
748
  nodes {
693
- ${Ie}
749
+ ${ye}
694
750
  }
695
751
  pageInfo {
696
752
  endCursor
@@ -699,7 +755,7 @@ query getLabelsForRepo($owner: String!, $name: String! $cursor: String, $first:
699
755
  }
700
756
  }
701
757
  }
702
- `,variables:{owner:n,name:o,cursor:a,first:S}},t);if(!i.body.data)throw new f("Could not fetch labels",i.body.errors);return{pageInfo:i.body.data.repository.labels?.pageInfo??{endCursor:null,hasNextPage:!1},data:i.body.data.repository.labels?.nodes?.map(et)??[]}}async getTreeForRepo(e,t={}){let n=await this.config.request({url:`${K(this.config,t)}/repos/${e.repo.namespace}/${e.repo.name}/git/trees/${e.branch}?recursive=1`,headers:{...h(t.token||this.config.token)}});if(!n.body)throw new Error("Could not fetch trees");return{data:n.body.tree.map(Jr)}}};var rs="https://gitlab.com/api/v4",ss="https://gitlab.com/api/graphql",rt=/\/api\/v\d+$/,_t=r=>{if(r.endsWith("/api/graphql"))throw new Error("The graphql endpoint is being used as the baseUrl. This package uses both GraphQL and REST APIs, and the REST version cannot be assumed. Use the REST endpoint as the baseUrl instead.")},Pe=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),_t(e),rt.test(e)||(e=e+"/api/v4"),e):rs},ns=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),_t(e),rt.test(e)&&(e=e.replace(rt,"")),`${e}/api/graphql`):ss},y=(r,s,e)=>{let t=h(e.token||r.token);return r.request({url:ns(r,e),method:"POST",headers:{...t,"Content-Type":"application/json"},body:JSON.stringify(s)})},we=r=>r?.map(s=>`"${s.message}"`).join(", ");var it=r=>r.split("/").slice(0,-1).join("/"),ut=r=>r.split("/").at(-1)??"",Se=r=>({id:r.id.replace(Z,""),graphQLId:r.id,namespace:it(r.fullPath),name:ut(r.fullPath),webUrl:r.webUrl}),Ft=r=>({id:r.id.replace(Z,""),graphQLId:r.id,httpsUrl:r.httpUrlToRepo,namespace:it(r.fullPath),name:ut(r.fullPath),sshUrl:r.sshUrlToRepo,webUrl:r.webUrl}),os={assigned:"assignedMergeRequests",authored:"authoredMergeRequests",reviewRequested:"reviewRequestedMergeRequests"},as={CAN_BE_MERGED:"MERGEABLE",CANNOT_BE_MERGED:"CONFLICTS",CANNOT_BE_MERGED_RECHECK:"UNKNOWN",UNCHECKED:"UNKNOWN",CHECKING:"UNKNOWN"};var is="gid://gitlab/User/",Z="gid://gitlab/Project/",us="gid://gitlab/MergeRequest/",ls="gid://gitlab/Issue/",ps="gid://gitlab/ProjectLabel/",ds="gid://gitlab/Milestone/",cs="gid://gitlab/Ci::Build/",lt=`
758
+ `,variables:{owner:n,name:o,cursor:i,first:v}},t);if(!a.body.data)throw new f("Could not fetch labels",a.body.errors);return{pageInfo:a.body.data.repository.labels?.pageInfo??{endCursor:null,hasNextPage:!1},data:a.body.data.repository.labels?.nodes?.map(rt)??[]}}async getTreeForRepo(e,t={}){let n=await this.config.request({url:`${X(this.config,t)}/repos/${e.repo.namespace}/${e.repo.name}/git/trees/${e.branch}?recursive=1`,headers:{...h(t.token||this.config.token)}});if(!n.body)throw new Error("Could not fetch trees");return{data:n.body.tree.map(Vr)}}};var ss="https://gitlab.com/api/v4",ns="https://gitlab.com/api/graphql",nt=/\/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.")},Se=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),Qt(e),nt.test(e)||(e=e+"/api/v4"),e):ss},os=(r,s)=>{let e=s.baseUrl||r.baseUrl;return e?(e=e.replace(/\/$/,""),Qt(e),nt.test(e)&&(e=e.replace(nt,"")),`${e}/api/graphql`):ns},y=(r,s,e)=>{let t=h(e.token||r.token);return r.request({url:os(r,e),method:"POST",headers:{...t,"Content-Type":"application/json"},body:JSON.stringify(s)})},ve=r=>r?.map(s=>`"${s.message}"`).join(", ");var lt=r=>r.split("/").slice(0,-1).join("/"),pt=r=>r.split("/").at(-1)??"",qe=r=>({id:r.id.replace(Y,""),graphQLId:r.id,namespace:lt(r.fullPath),name:pt(r.fullPath),webUrl:r.webUrl}),jt=r=>({id:r.id.replace(Y,""),graphQLId:r.id,httpsUrl:r.httpUrlToRepo,namespace:lt(r.fullPath),name:pt(r.fullPath),sshUrl:r.sshUrlToRepo,webUrl:r.webUrl}),is={assigned:"assignedMergeRequests",authored:"authoredMergeRequests",reviewRequested:"reviewRequestedMergeRequests"},as={CAN_BE_MERGED:"MERGEABLE",CANNOT_BE_MERGED:"CONFLICTS",CANNOT_BE_MERGED_RECHECK:"UNKNOWN",UNCHECKED:"UNKNOWN",CHECKING:"UNKNOWN"};var us="gid://gitlab/User/",Y="gid://gitlab/Project/",ls="gid://gitlab/MergeRequest/",ps="gid://gitlab/Issue/",ds="gid://gitlab/ProjectLabel/",cs="gid://gitlab/Milestone/",gs="gid://gitlab/Ci::Build/",dt=`
703
759
  description
704
760
  dueDate
705
761
  id
@@ -708,7 +764,7 @@ startDate
708
764
  state
709
765
  title
710
766
  webPath
711
- `,st=`
767
+ `,ot=`
712
768
  id
713
769
  fullPath
714
770
  webUrl
@@ -729,12 +785,12 @@ username
729
785
  publicEmail
730
786
  avatarUrl
731
787
  webUrl
732
- `,pt=`
788
+ `,ct=`
733
789
  color
734
790
  description
735
791
  id
736
792
  title
737
- `,nt=`
793
+ `,it=`
738
794
  author {
739
795
  ${k}
740
796
  }
@@ -751,7 +807,7 @@ id
751
807
  iid
752
808
  labels {
753
809
  nodes {
754
- ${pt}
810
+ ${ct}
755
811
  }
756
812
  }
757
813
  state
@@ -762,9 +818,9 @@ upvotes
762
818
  userNotesCount
763
819
  webUrl
764
820
  milestone {
765
- ${lt}
821
+ ${dt}
766
822
  }
767
- `,gs=`
823
+ `,ms=`
768
824
  stages {
769
825
  nodes {
770
826
  jobs {
@@ -780,7 +836,7 @@ stages {
780
836
  name
781
837
  }
782
838
  }
783
- `,Qt=(r,s,e)=>`
839
+ `,Bt=(r,s,e)=>`
784
840
  id
785
841
  state
786
842
  author {
@@ -825,19 +881,19 @@ reviewers {
825
881
  mergeStatusEnum
826
882
  labels {
827
883
  nodes {
828
- ${pt}
884
+ ${ct}
829
885
  }
830
886
  }
831
887
  ${r?"project { id httpUrlToRepo fullPath sshUrlToRepo webUrl archived } sourceProject { id httpUrlToRepo fullPath sshUrlToRepo webUrl }":""}
832
- ${s?`milestone { ${lt} }`:""}
833
- ${e?`headPipeline { ${gs} }`:""}
834
- `,j=r=>`${r.namespace}/${r.name}`,ms=r=>`${r.namespace}/${r.name}`,hs=r=>({canCreateWebhook:r.adminOperations,canPush:r.pushCode,isAdmin:r.adminOperations}),ot=r=>({id:r.id.replace(Z,""),graphQLId:r.id,namespace:it(r.fullPath),name:ut(r.fullPath),webUrl:r.webUrl,httpsUrl:r.httpUrlToRepo,sshUrl:r.sshUrlToRepo,defaultBranch:r.repository?.rootRef?{name:r.repository.rootRef}:null,permissions:hs(r.userPermissions)}),fs=r=>({path:r.path,isDirectory:r.type==="tree"}),Rs={opened:"OPEN",merged:"MERGED",closed:"CLOSED"},Bt=(r,s,e)=>!s&&r?.startsWith("/")?`https://gitlab.com${r}`:s&&r?.startsWith("/")&&e?`${e.replace(/\/+?$/,"")}${r}`:r,N=(r,s,e)=>{let t=Bt(r.avatarUrl,s,e);return{id:r.id.replace(is,""),graphQLId:r.id,name:r.name,username:r.username,email:r.publicEmail??null,avatarUrl:t,url:r.webUrl}},dt=r=>({color:r.color,description:r.description,id:r.id.replace(ps,""),graphQLId:r.id,name:r.title}),Is=(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,bs=(r,s,e)=>{let t={APPROVED:"APPROVED",REQUESTED_CHANGES:"CHANGES_REQUESTED",REVIEWED:"COMMENTED",UNAPPROVED:"REVIEW_REQUESTED",UNREVIEWED:"REVIEW_REQUESTED"};return{reviewer:N(r,s,e),state:r.mergeRequestInteraction?.reviewState?t[r.mergeRequestInteraction.reviewState]:"REVIEW_REQUESTED"}},jt=(r,s,e,t,n)=>{let o=r.reviewers?.nodes?r.reviewers.nodes.map(a=>bs(a,t,n)):null;return{id:r.id.replace(us,""),graphQLId:r.id,title:r.title,description:r.description,number:parseInt(r.iid,10),state:Rs[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:r.headPipeline?.stages?.nodes?.flatMap(a=>a.jobs?.nodes?.map(i=>({completedAt:i.finishedAt?new Date(i.finishedAt):null,description:null,name:i.name??null,state:Is(i.status,i.allowFailure),stage:a.name??null,startedAt:new Date(i.createdAt),url:`${s.webUrl}/-/jobs/${i.id.replace(cs,"")}`}))??[])??[]},baseRef:{name:r.targetBranch,oid:r.diffRefs?.baseSha??null},headRef:{name:r.sourceBranch,oid:r.diffRefs?.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:r.assignees?.nodes?r.assignees.nodes.map(a=>N(a,t,n)):null,reviews:o,reviewDecision:G(o),additions:r.diffStatsSummary?.additions||0,deletions:r.diffStatsSummary?.deletions||0,fileCount:r.diffStatsSummary?.fileCount||0,commitCount:r.commitCount||0,mergeableState:as[r.mergeStatusEnum],milestone:r.milestone?ct(r.milestone,s.webUrl):null,labels:r.labels?.nodes?.map(dt)??[],permissions:null}},at=(r,s,e,t)=>({author:N(r.author,e,t),assignees:r.assignees.nodes.map(n=>N(n,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(ls,""),labels:r.labels?.nodes?.map(dt)??[],number:r.iid,repository:{id:s.id.replace(Z,""),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?ct(r.milestone,s.webUrl):null}),ct=(r,s)=>({id:r.id.replace(ds,""),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}),Y=class extends L{getIsSelfHosted(s){return!!s.baseUrl||!!this.config.baseUrl}async getCurrentUser(s={},e={}){let n=(await y(this.config,{query:`
888
+ ${s?`milestone { ${dt} }`:""}
889
+ ${e?`headPipeline { ${ms} }`:""}
890
+ `,B=r=>`${r.namespace}/${r.name}`,hs=r=>`${r.namespace}/${r.name}`,fs=r=>({canCreateWebhook:r.adminOperations,canPush:r.pushCode,isAdmin:r.adminOperations}),at=r=>({id:r.id.replace(Y,""),graphQLId:r.id,namespace:lt(r.fullPath),name:pt(r.fullPath),webUrl:r.webUrl,httpsUrl:r.httpUrlToRepo,sshUrl:r.sshUrlToRepo,defaultBranch:r.repository?.rootRef?{name:r.repository.rootRef}:null,permissions:fs(r.userPermissions)}),Rs=r=>({path:r.path,isDirectory:r.type==="tree"}),Is={opened:"OPEN",merged:"MERGED",closed:"CLOSED"},Mt=(r,s,e)=>!s&&r?.startsWith("/")?`https://gitlab.com${r}`:s&&r?.startsWith("/")&&e?`${e.replace(/\/+?$/,"")}${r}`:r,N=(r,s,e)=>{let t=Mt(r.avatarUrl,s,e);return{id:r.id.replace(us,""),graphQLId:r.id,name:r.name,username:r.username,email:r.publicEmail??null,avatarUrl:t,url:r.webUrl}},gt=r=>({color:r.color,description:r.description,id:r.id.replace(ds,""),graphQLId:r.id,name:r.title}),bs=(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,ys=(r,s,e)=>{let t={APPROVED:"APPROVED",REQUESTED_CHANGES:"CHANGES_REQUESTED",REVIEWED:"COMMENTED",UNAPPROVED:"REVIEW_REQUESTED",UNREVIEWED:"REVIEW_REQUESTED"};return{reviewer:N(r,s,e),state:r.mergeRequestInteraction?.reviewState?t[r.mergeRequestInteraction.reviewState]:"REVIEW_REQUESTED"}},zt=(r,s,e,t,n)=>{let o=r.reviewers?.nodes?r.reviewers.nodes.map(i=>ys(i,t,n)):null;return{id:r.id.replace(ls,""),graphQLId:r.id,title:r.title,description:r.description,number:parseInt(r.iid,10),state:Is[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:r.headPipeline?.stages?.nodes?.flatMap(i=>i.jobs?.nodes?.map(a=>({completedAt:a.finishedAt?new Date(a.finishedAt):null,description:null,name:a.name??null,state:bs(a.status,a.allowFailure),stage:i.name??null,startedAt:new Date(a.createdAt),url:`${s.webUrl}/-/jobs/${a.id.replace(gs,"")}`}))??[])??[]},baseRef:{name:r.targetBranch,oid:r.diffRefs?.baseSha??null},headRef:{name:r.sourceBranch,oid:r.diffRefs?.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:r.assignees?.nodes?r.assignees.nodes.map(i=>N(i,t,n)):null,reviews:o,reviewDecision:G(o),additions:r.diffStatsSummary?.additions||0,deletions:r.diffStatsSummary?.deletions||0,fileCount:r.diffStatsSummary?.fileCount||0,commitCount:r.commitCount||0,mergeableState:as[r.mergeStatusEnum],milestone:r.milestone?mt(r.milestone,s.webUrl):null,labels:r.labels?.nodes?.map(gt)??[],permissions:null}},ut=(r,s,e,t)=>({author:N(r.author,e,t),assignees:r.assignees.nodes.map(n=>N(n,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(ps,""),labels:r.labels?.nodes?.map(gt)??[],number:r.iid,repository:{id:s.id.replace(Y,""),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?mt(r.milestone,s.webUrl):null}),mt=(r,s)=>({id:r.id.replace(cs,""),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}),ee=class extends D{getIsSelfHosted(s){return!!s.baseUrl||!!this.config.baseUrl}async getCurrentUser(s={},e={}){let n=(await y(this.config,{query:`
835
891
  query getCurrentUser {
836
892
  currentUser {
837
893
  ${k}
838
894
  }
839
895
  }
840
- `},e)).body.data?.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={}){let t=j(s.repo),o=(await y(this.config,{query:`
896
+ `},e)).body.data?.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={}){let t=B(s.repo),o=(await y(this.config,{query:`
841
897
  query getUserForCommit($fullPath: ID!, $oid: String!) {
842
898
  project(fullPath: $fullPath) {
843
899
  repository {
@@ -853,7 +909,7 @@ query getUserForCommit($fullPath: ID!, $oid: String!) {
853
909
  }
854
910
  }
855
911
  }
856
- `,variables:{fullPath:t,oid:s.oid}},e)).body.data?.project?.repository?.tree?.lastCommit;if(!o)throw new Error("Commit not found.");let a=Bt(o.author.avatarUrl,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl);return{data:{name:o.authorName,email:o.authorEmail,avatarUrl:a}}}async getAccountForEmail(s,e={}){let n=(await y(this.config,{query:`
912
+ `,variables:{fullPath:t,oid:s.oid}},e)).body.data?.project?.repository?.tree?.lastCommit;if(!o)throw new Error("Commit not found.");let i=Mt(o.author.avatarUrl,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl);return{data:{name:o.authorName,email:o.authorEmail,avatarUrl:i}}}async getAccountForEmail(s,e={}){let n=(await y(this.config,{query:`
857
913
  query getAccountForEmail($email: String!) {
858
914
  users(search: $email) {
859
915
  nodes {
@@ -867,7 +923,7 @@ query getAccountForUsername($username: String!) {
867
923
  ${k}
868
924
  }
869
925
  }
870
- `,variables:{username:s.username}},e)).body.data?.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={}){let{repo:{namespace:t,name:n},cursor:o}=s,a=await y(this.config,{query:`
926
+ `,variables:{username:s.username}},e)).body.data?.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={}){let{repo:{namespace:t,name:n},cursor:o}=s,i=await y(this.config,{query:`
871
927
  query getAccountsForRepo(
872
928
  $fullPath: ID!
873
929
  $after: String
@@ -888,22 +944,22 @@ query getAccountsForRepo(
888
944
  }
889
945
  }
890
946
  }
891
- `,variables:{fullPath:`${t}/${n}`,after:o}},e),i=a.body.data?.project?.projectMembers?.nodes?.map(u=>u.user).filter(u=>u!==null);return{pageInfo:a.body.data?.project?.projectMembers?.pageInfo??{endCursor:null,hasNextPage:!1},data:i?.map(u=>N(u,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl))??[]}}async getRepo(s,e={}){let t=j(s),n=await y(this.config,{query:`
947
+ `,variables:{fullPath:`${t}/${n}`,after:o}},e),a=i.body.data?.project?.projectMembers?.nodes?.map(u=>u.user).filter(u=>u!==null);return{pageInfo:i.body.data?.project?.projectMembers?.pageInfo??{endCursor:null,hasNextPage:!1},data:a?.map(u=>N(u,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl))??[]}}async getRepo(s,e={}){let t=B(s),n=await y(this.config,{query:`
892
948
  query getRepo($fullPath: ID!) {
893
949
  project(fullPath: $fullPath) {
894
- ${st}
950
+ ${ot}
895
951
  }
896
952
  }
897
- `,variables:{fullPath:t}},e);if(!n.body.data?.project)throw new Error(`Repository ${t} not found`);return{data:ot(n.body.data.project)}}async getReposBase(s,e={}){let n=s.map(j).map((u,l)=>`
953
+ `,variables:{fullPath:t}},e);if(!n.body.data?.project)throw new Error(`Repository ${t} not found`);return{data:at(n.body.data.project)}}async getReposBase(s,e={}){let n=s.map(B).map((u,l)=>`
898
954
  getRepo_${l}: project(fullPath: "${u}") {
899
- ${st}
955
+ ${ot}
900
956
  }
901
957
  `).join(`
902
958
  `),o=await y(this.config,{query:`
903
959
  query batchGetRepos {
904
960
  ${n}
905
961
  }
906
- `},e);if(!o.body.data)throw new Error(we(o.body.errors)||o.statusText||"Unknown error");let a=[],i=[];return s.forEach((u,l)=>{let p=o.body.data[`getRepo_${l}`];p?a.push(ot(p)):i.push({input:u})}),{data:a,errors:i}}async getRepos(s,e={}){let t=[];for(let a=0;a<s.length;a+=15)t.push(s.slice(a,a+15));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={}){let t=await y(this.config,{query:`
962
+ `},e);if(!o.body.data)throw new Error(ve(o.body.errors)||o.statusText||"Unknown error");let i=[],a=[];return s.forEach((u,l)=>{let p=o.body.data[`getRepo_${l}`];p?i.push(at(p)):a.push({input:u})}),{data:i,errors:a}}async getRepos(s,e={}){let t=[];for(let i=0;i<s.length;i+=15)t.push(s.slice(i,i+15));return(await Promise.all(t.map(i=>this.getReposBase(i,e)))).reduce((i,a)=>({data:[...i.data,...a.data],errors:[...i.errors,...a.errors]}),{data:[],errors:[]})}async getReposForCurrentUser(s,e={}){let t=await y(this.config,{query:`
907
963
  query getReposForCurrentUser($after: String) {
908
964
  projects(membership: true first: 100 after: $after) {
909
965
  pageInfo {
@@ -911,11 +967,11 @@ query getReposForCurrentUser($after: String) {
911
967
  hasNextPage
912
968
  }
913
969
  nodes {
914
- ${st}
970
+ ${ot}
915
971
  }
916
972
  }
917
973
  }
918
- `,variables:{after:s.cursor}},e);if(!t.body.data?.projects)throw new Error(we(t.body.errors)||t.statusText||"Unknown error");let n=t.body.data?.projects?.nodes||[];return{pageInfo:t.body.data?.projects?.pageInfo,data:n.map(ot)}}async getRefs(s,e,t={}){let n=j(e.repo),o=new URL(`${Pe(this.config,t)}/projects/${encodeURIComponent(n)}/repository/${s}`);o.searchParams.set("page",e.page?.toString()||"1"),o.searchParams.set("per_page",S.toString());let a=await this.config.request({url:o.toString(),headers:h(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(u=>({name:u.name,commit:{oid:u.commit.id,authoredDate:new Date(u.commit.authored_date),committedDate:new Date(u.commit.committed_date)}}))}}async getBranches(s,e={}){return this.getRefs("branches",s,e)}async getTags(s,e={}){return this.getRefs("tags",s,e)}async getBlame(s,e={}){let t=j(s.repo),n=new URL(`${Pe(this.config,e)}/projects/${encodeURIComponent(t)}/repository/files/${encodeURIComponent(s.path)}/blame`);n.searchParams.set("ref",s.ref);let o=await this.config.request({url:n.toString(),headers:h(e.token||this.config.token)}),a=0;return{data:{ranges:o.body.map(i=>{let u=a+1;return a+=i.lines.length,{startingLine:u,endingLine:a,commit:{oid:i.commit.id,parentOids:i.commit.parent_ids,authoredDate:new Date(i.commit.authored_date),author:{name:i.commit.author_name,email:i.commit.author_email,avatarUrl:null},committedDate:new Date(i.commit.committed_date),committer:{name:i.commit.committer_name,email:i.commit.committer_email,avatarUrl:null},message:i.commit.message,fileCount:null,additions:null,deletions:null}}})}}}async getPullRequestsForUser(s,e={}){let t="";s.repo?.id?t=`projectId:"${s.repo.id}"`:s.repo?.namespace&&s.repo?.name&&(t=`projectPath:"${s.repo.namespace}/${s.repo.name}"`);let n=os[s.association],o=await y(this.config,{query:`
974
+ `,variables:{after:s.cursor}},e);if(!t.body.data?.projects)throw new Error(ve(t.body.errors)||t.statusText||"Unknown error");let n=t.body.data?.projects?.nodes||[];return{pageInfo:t.body.data?.projects?.pageInfo,data:n.map(at)}}async getRefs(s,e,t={}){let n=B(e.repo),o=new URL(`${Se(this.config,t)}/projects/${encodeURIComponent(n)}/repository/${s}`);o.searchParams.set("page",e.page?.toString()||"1"),o.searchParams.set("per_page",v.toString());let i=await this.config.request({url:o.toString(),headers:h(t.token||this.config.token)}),a=i.headers["x-next-page"];return{pageInfo:{hasNextPage:!!a,nextPage:a?parseInt(a,10):null},data:i.body.map(u=>({name:u.name,commit:{oid:u.commit.id,authoredDate:new Date(u.commit.authored_date),committedDate:new Date(u.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=B(s.repo),n=new URL(`${Se(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:h(e.token||this.config.token)}),i=0;return{data:{ranges:o.body.map(a=>{let u=i+1;return i+=a.lines.length,{startingLine:u,endingLine:i,commit:{oid:a.commit.id,parentOids:a.commit.parent_ids,authoredDate:new Date(a.commit.authored_date),author:{name:a.commit.author_name,email:a.commit.author_email,avatarUrl:null},committedDate:new Date(a.commit.committed_date),committer:{name:a.commit.committer_name,email:a.commit.committer_email,avatarUrl:null},message:a.commit.message,fileCount:null,additions:null,deletions:null}}})}}}async getPullRequestsForUser(s,e={}){let t="";s.repo?.id?t=`projectId:"${s.repo.id}"`:s.repo?.namespace&&s.repo?.name&&(t=`projectPath:"${s.repo.namespace}/${s.repo.name}"`);let n=is[s.association],o=await y(this.config,{query:`
919
975
  query getPullRequestsForUser($username: String! $cursor: String $labelNames: [String!]) {
920
976
  user(username: $username) {
921
977
  ${n}(state:opened first:100 after:$cursor labels: $labelNames${t?` ${t}`:""}) {
@@ -924,12 +980,12 @@ query getPullRequestsForUser($username: String! $cursor: String $labelNames: [St
924
980
  hasNextPage
925
981
  }
926
982
  nodes {
927
- ${Qt(!0,!0,!0)}
983
+ ${Bt(!0,!0,!0)}
928
984
  }
929
985
  }
930
986
  }
931
987
  }
932
- `,variables:{username:s.username,cursor:s.cursor,labelNames:s.labelNames}},e);if(!o.body.data)throw new Error(we(o.body.errors)||o.statusText||"Unknown error");if(!o.body.data.user)throw new Error("User not found");let a=o.body.data.user[n];if(!a)throw new Error("Unexpected response");return{pageInfo:a.pageInfo,data:a.nodes?.filter(i=>s.includeFromArchivedRepos||!i.project.archived).map(i=>jt(i,Ft(i.project),Ft(i.sourceProject),this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl))||[]}}async getPullRequestsAssociatedWithUser(s,e={}){let[t,n,o]=s.cursor?.split(";")||[void 0,void 0,void 0],a=t?.split("-")||[],i=n?.split("-")||[],u=o?.split("-")||[],l=[],p=[],d=[],c=0;do{let v=s.repos&&s.repos[c];a[c]==="null"?l.push(null):l.push(this.getPullRequestsForUser({username:s.username,association:"authored",cursor:a[c],includeFromArchivedRepos:s.includeFromArchivedRepos,labelNames:s.labelNames,...v&&{repo:v}},e)),i[c]==="null"?p.push(null):p.push(this.getPullRequestsForUser({username:s.username,association:"assigned",cursor:i[c],includeFromArchivedRepos:s.includeFromArchivedRepos,labelNames:s.labelNames,...v&&{repo:v}},e)),u[c]==="null"?d.push(null):d.push(this.getPullRequestsForUser({username:s.username,association:"reviewRequested",cursor:u[c],includeFromArchivedRepos:s.includeFromArchivedRepos,labelNames:s.labelNames,...v&&{repo:v}},e)),c++}while(c<(s.repos?.length||0));let g=[l,p,d].flat(),m=await Promise.all(g),b={},I=[],$=v=>{b[v.id]||(b[v.id]=!0,I.push(v))},se=!1,dr=m.map((v,yt)=>{let ne="";return v&&v.data.forEach($),v?.pageInfo.hasNextPage?(se=!0,ne+=`${v.pageInfo.endCursor||"null"}`):ne+="null",s.repos?.length&&(yt+1)%s.repos.length!==0?ne+="-":yt+1<m.length&&(ne+=";"),ne}).join("");return{pageInfo:{hasNextPage:se,endCursor:dr},data:I}}getVariablesForPullRequests(s){let{updatedBefore:e,isDraft:t,authorLogin:n,assigneeLogins:o,labelNames:a,reviewRequestedLogin:i}=s||{},u={},l=[],p=[],d=(c,g,m)=>{l.push(`$${c}: ${m}`),p.push(`${c}: $${c}`),u[c]=g};return e&&d("updatedBefore",e,"Time"),n&&d("authorUsername",n,"String"),o&&d("assigneeUsername",o[0],"String"),a&&d("labelName",a,"[String]"),t!=null&&d("draft",t,"Boolean"),i&&d("reviewerUsername",i,"String"),{variables:u,variableTypes:l,mergeRequestArguments:p}}async getPullRequestsForRepoBase(s,e={},t){let{cursor:n,repo:o}=s||{},a=j(o),{variables:i,variableTypes:u,mergeRequestArguments:l}=this.getVariablesForPullRequests(s),p={fullPath:a,...i},d=await y(this.config,{query:`
988
+ `,variables:{username:s.username,cursor:s.cursor,labelNames:s.labelNames}},e);if(!o.body.data)throw new Error(ve(o.body.errors)||o.statusText||"Unknown error");if(!o.body.data.user)throw new Error("User not found");let i=o.body.data.user[n];if(!i)throw new Error("Unexpected response");return{pageInfo:i.pageInfo,data:i.nodes?.filter(a=>s.includeFromArchivedRepos||!a.project.archived).map(a=>zt(a,jt(a.project),jt(a.sourceProject),this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl))||[]}}async getPullRequestsAssociatedWithUser(s,e={}){let[t,n,o]=s.cursor?.split(";")||[void 0,void 0,void 0],i=t?.split("-")||[],a=n?.split("-")||[],u=o?.split("-")||[],l=[],p=[],d=[],c=0;do{let S=s.repos&&s.repos[c];i[c]==="null"?l.push(null):l.push(this.getPullRequestsForUser({username:s.username,association:"authored",cursor:i[c],includeFromArchivedRepos:s.includeFromArchivedRepos,labelNames:s.labelNames,...S&&{repo:S}},e)),a[c]==="null"?p.push(null):p.push(this.getPullRequestsForUser({username:s.username,association:"assigned",cursor:a[c],includeFromArchivedRepos:s.includeFromArchivedRepos,labelNames:s.labelNames,...S&&{repo:S}},e)),u[c]==="null"?d.push(null):d.push(this.getPullRequestsForUser({username:s.username,association:"reviewRequested",cursor:u[c],includeFromArchivedRepos:s.includeFromArchivedRepos,labelNames:s.labelNames,...S&&{repo:S}},e)),c++}while(c<(s.repos?.length||0));let g=[l,p,d].flat(),m=await Promise.all(g),b={},I=[],L=S=>{b[S.id]||(b[S.id]=!0,I.push(S))},F=!1,le=m.map((S,ne)=>{let oe="";return S&&S.data.forEach(L),S?.pageInfo.hasNextPage?(F=!0,oe+=`${S.pageInfo.endCursor||"null"}`):oe+="null",s.repos?.length&&(ne+1)%s.repos.length!==0?oe+="-":ne+1<m.length&&(oe+=";"),oe}).join("");return{pageInfo:{hasNextPage:F,endCursor:le},data:I}}getVariablesForPullRequests(s){let{updatedBefore:e,isDraft:t,authorLogin:n,assigneeLogins:o,labelNames:i,reviewRequestedLogin:a}=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"),i&&d("labelName",i,"[String]"),t!=null&&d("draft",t,"Boolean"),a&&d("reviewerUsername",a,"String"),{variables:u,variableTypes:l,mergeRequestArguments:p}}async getPullRequestsForRepoBase(s,e={},t){let{cursor:n,repo:o}=s||{},i=B(o),{variables:a,variableTypes:u,mergeRequestArguments:l}=this.getVariablesForPullRequests(s),p={fullPath:i,...a},d=await y(this.config,{query:`
933
989
  query getPullRequestsForRepo(
934
990
  $fullPath: ID!
935
991
  $after: String
@@ -954,19 +1010,19 @@ query getPullRequestsForRepo(
954
1010
  hasNextPage
955
1011
  }
956
1012
  nodes {
957
- ${Qt(!1,!0,!0)}
1013
+ ${Bt(!1,!0,!0)}
958
1014
  }
959
1015
  }
960
1016
  }
961
1017
  }
962
- `,variables:{...p,after:n}},e),c=[],g=d.body.data?.project;if(!t&&g?.archived)return{pageInfo:null,data:[]};let m=Se(g||{id:"",fullPath:"",webUrl:""});return(g?.mergeRequests?.nodes||[]).forEach(I=>{c.push(jt(I,m,null,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl))}),{pageInfo:g?.mergeRequests?.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={}){let{pullRequest:t}=s,n=`mutation ClosePullRequest($fullPath: ID!, $pullRequestId: String!) {
1018
+ `,variables:{...p,after:n}},e),c=[],g=d.body.data?.project;if(!t&&g?.archived)return{pageInfo:null,data:[]};let m=qe(g||{id:"",fullPath:"",webUrl:""});return(g?.mergeRequests?.nodes||[]).forEach(I=>{c.push(zt(I,m,null,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl))}),{pageInfo:g?.mergeRequests?.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:i,labelNames:a,isDraft:u,reviewRequestedLogin:l}=s;return{data:(await Promise.all(t.map(d=>this.getPullRequestsForRepoBase({repo:d,assigneeLogins:n,updatedBefore:o,authorLogin:i,labelNames:a,isDraft:u,reviewRequestedLogin:l},e,s.includeFromArchivedRepos??!1)))).flatMap(d=>d.data)}}async closePullRequest(s,e={}){let{pullRequest:t}=s,n=`mutation ClosePullRequest($fullPath: ID!, $pullRequestId: String!) {
963
1019
  mergeRequestUpdate(input: { projectPath: $fullPath, iid: $pullRequestId, state: CLOSED }) {
964
1020
  errors,
965
1021
  mergeRequest {
966
1022
  id
967
1023
  }
968
1024
  }
969
- }`,a=(await y(this.config,{query:n,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString()}},e)).body.data?.mergeRequestUpdate;if(!a?.mergeRequest?.id||a?.errors?.length!==0)throw new Error("Could not close pull request")}async mergePullRequest(s,e={}){let{pullRequest:t,mergeStrategy:n}=s;if(!t.headRef?.oid)throw new Error('GitLab requires "headRef.oid" for this function.');let o=`mutation MergePullRequest(
1025
+ }`,i=(await y(this.config,{query:n,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString()}},e)).body.data?.mergeRequestUpdate;if(!i?.mergeRequest?.id||i?.errors?.length!==0)throw new Error("Could not close pull request")}async mergePullRequest(s,e={}){let{pullRequest:t,mergeStrategy:n}=s;if(!t.headRef?.oid)throw new Error('GitLab requires "headRef.oid" for this function.');let o=`mutation MergePullRequest(
970
1026
  $fullPath: ID!,
971
1027
  $pullRequestId: String!,
972
1028
  $expectedSourceSha: String!,
@@ -983,63 +1039,63 @@ query getPullRequestsForRepo(
983
1039
  id
984
1040
  }
985
1041
  }
986
- }`,i=(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?.mergeRequestAccept;if(!i?.mergeRequest?.id||i?.errors?.length!==0)throw new Error("Could not merge pull request")}async setPullRequestMilestone(s,e={}){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) {
1042
+ }`,a=(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?.mergeRequestAccept;if(!a?.mergeRequest?.id||a?.errors?.length!==0)throw new Error("Could not merge pull request")}async setPullRequestMilestone(s,e={}){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) {
987
1043
  mergeRequestSetMilestone(input: { projectPath: $fullPath, iid: $pullRequestId, milestoneId: $milestoneGraphQLId }) {
988
1044
  errors,
989
1045
  mergeRequest {
990
1046
  id
991
1047
  }
992
1048
  }
993
- }`,a=await y(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),milestoneGraphQLId:n?.graphQLId}},e),i=a.body.data?.mergeRequestSetMilestone;if(!i?.mergeRequest?.id||a.body.errors||i?.errors?.length!==0)throw new Error("Could not set milestone of pull request")}async setPullRequestAsDraft(s,e={}){let{pullRequest:t,isDraft:n}=s,o=`mutation MergeRequestSetDraft($fullPath: ID!, $pullRequestId: String!, $isDraft: Boolean!) {
1049
+ }`,i=await y(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),milestoneGraphQLId:n?.graphQLId}},e),a=i.body.data?.mergeRequestSetMilestone;if(!a?.mergeRequest?.id||i.body.errors||a?.errors?.length!==0)throw new Error("Could not set milestone of pull request")}async setPullRequestAsDraft(s,e={}){let{pullRequest:t,isDraft:n}=s,o=`mutation MergeRequestSetDraft($fullPath: ID!, $pullRequestId: String!, $isDraft: Boolean!) {
994
1050
  mergeRequestSetDraft(input: { projectPath: $fullPath, iid: $pullRequestId, draft: $isDraft }) {
995
1051
  errors,
996
1052
  mergeRequest {
997
1053
  id
998
1054
  }
999
1055
  }
1000
- }`,i=(await y(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),isDraft:n}},e)).body.data?.mergeRequestSetDraft;if(!i?.mergeRequest?.id||i?.errors?.length!==0)throw new Error("Could not set pull request as draft")}async setPullRequestReviewers(s,e={}){let{pullRequest:t,reviewers:n}=s,o=n.map(l=>{if(!l.username)throw new Error('GitLab requires reviewer "username" for this function.');return l.username}),a=`mutation MergeRequestSetReviewers($fullPath: ID!, $pullRequestId: String!, $reviewerUsernames: [String!]!) {
1056
+ }`,a=(await y(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),isDraft:n}},e)).body.data?.mergeRequestSetDraft;if(!a?.mergeRequest?.id||a?.errors?.length!==0)throw new Error("Could not set pull request as draft")}async setPullRequestReviewers(s,e={}){let{pullRequest:t,reviewers:n}=s,o=n.map(l=>{if(!l.username)throw new Error('GitLab requires reviewer "username" for this function.');return l.username}),i=`mutation MergeRequestSetReviewers($fullPath: ID!, $pullRequestId: String!, $reviewerUsernames: [String!]!) {
1001
1057
  mergeRequestSetReviewers(input: { projectPath: $fullPath, iid: $pullRequestId, reviewerUsernames: $reviewerUsernames }) {
1002
1058
  errors,
1003
1059
  mergeRequest {
1004
1060
  id
1005
1061
  }
1006
1062
  }
1007
- }`,u=(await y(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),reviewerUsernames:o}},e)).body.data?.mergeRequestSetReviewers;if(!u?.mergeRequest?.id||u?.errors?.length!==0)throw new Error("Could not set pull request reviewers")}async reRequestPullRequestReview(s,e={}){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!) {
1063
+ }`,u=(await y(this.config,{query:i,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),reviewerUsernames:o}},e)).body.data?.mergeRequestSetReviewers;if(!u?.mergeRequest?.id||u?.errors?.length!==0)throw new Error("Could not set pull request reviewers")}async reRequestPullRequestReview(s,e={}){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!) {
1008
1064
  mergeRequestReviewerRereview(input: { projectPath: $fullPath, iid: $pullRequestId, userId: $reviewerUserId }) {
1009
1065
  errors,
1010
1066
  mergeRequest {
1011
1067
  id
1012
1068
  }
1013
1069
  }
1014
- }`,i=(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?.mergeRequestReviewerRereview;if(!i?.mergeRequest?.id||i?.errors?.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={}){let{pullRequest:t,assignees:n}=s,o=n.map(l=>{if(!l.username)throw new Error('GitLab requires assignee "username" for this function.');return l.username}),a=`mutation MergeRequestSetAssignees($fullPath: ID!, $pullRequestId: String!, $assigneeUsernames: [String!]!) {
1070
+ }`,a=(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?.mergeRequestReviewerRereview;if(!a?.mergeRequest?.id||a?.errors?.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 i=n.filter(a=>o.find(u=>u.reviewer.graphQLId===a.graphQLId));await Promise.all(i.map(a=>this.reRequestPullRequestReview({pullRequest:t,reviewer:a},e)))}async setPullRequestAssignees(s,e={}){let{pullRequest:t,assignees:n}=s,o=n.map(l=>{if(!l.username)throw new Error('GitLab requires assignee "username" for this function.');return l.username}),i=`mutation MergeRequestSetAssignees($fullPath: ID!, $pullRequestId: String!, $assigneeUsernames: [String!]!) {
1015
1071
  mergeRequestSetAssignees(input: { projectPath: $fullPath, iid: $pullRequestId, assigneeUsernames: $assigneeUsernames }) {
1016
1072
  errors,
1017
1073
  mergeRequest {
1018
1074
  id
1019
1075
  }
1020
1076
  }
1021
- }`,u=(await y(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),assigneeUsernames:o}},e)).body.data?.mergeRequestSetAssignees;if(!u?.mergeRequest?.id||u?.errors?.length!==0)throw new Error("Could not set pull request assignees")}async setPullRequestLabels(s,e={}){let{pullRequest:t,labels:n}=s,o=n.map(u=>{if(!u.graphQLId)throw new Error('GitLab requires "graphQLId" for labels in this function.');return u.graphQLId}),a=`mutation SetPullRequestLabels($fullPath: ID!, $pullRequestId: String!, $labelGraphQLIds: [LabelID!]!) {
1077
+ }`,u=(await y(this.config,{query:i,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),assigneeUsernames:o}},e)).body.data?.mergeRequestSetAssignees;if(!u?.mergeRequest?.id||u?.errors?.length!==0)throw new Error("Could not set pull request assignees")}async setPullRequestLabels(s,e={}){let{pullRequest:t,labels:n}=s,o=n.map(u=>{if(!u.graphQLId)throw new Error('GitLab requires "graphQLId" for labels in this function.');return u.graphQLId}),i=`mutation SetPullRequestLabels($fullPath: ID!, $pullRequestId: String!, $labelGraphQLIds: [LabelID!]!) {
1022
1078
  mergeRequestSetLabels(input: { projectPath: $fullPath, iid: $pullRequestId, labelIds: $labelGraphQLIds }) {
1023
1079
  mergeRequest {
1024
1080
  id
1025
1081
  }
1026
1082
  }
1027
- }`;if(!(await y(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),labelGraphQLIds:o}},e)).body.data?.mergeRequestSetLabels?.mergeRequest?.id)throw new Error("Could not set pull request labels")}async getIssue(s,e={}){let t=ms(s),n=await y(this.config,{query:`
1083
+ }`;if(!(await y(this.config,{query:i,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,pullRequestId:t.number.toString(),labelGraphQLIds:o}},e)).body.data?.mergeRequestSetLabels?.mergeRequest?.id)throw new Error("Could not set pull request labels")}async getIssue(s,e={}){let t=hs(s),n=await y(this.config,{query:`
1028
1084
  query GetSingleIssue($projectId: ID!, $issueNumber: String!) {
1029
1085
  project(fullPath: $projectId) {
1030
1086
  id
1031
1087
  fullPath
1032
1088
  webUrl
1033
1089
  issue(iid: $issueNumber) {
1034
- ${nt}
1090
+ ${it}
1035
1091
  }
1036
1092
  }
1037
1093
  }
1038
- `,variables:{issueNumber:s.number,projectId:t}},e);if(!n.body.data?.project)throw new Error(`Repository ${t} not found`);if(!n.body.data?.project?.issue)throw new Error(`Issue ${s.number} not found`);return{data:at(n.body.data.project.issue,Se(n.body.data.project),this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)}}getVariablesForIssues(s){let{updatedBefore:e,authorLogin:t,assigneeLogins:n,labelNames:o}=s||{},a={},i=[],u=[],l=(p,d,c)=>{i.push(`$${p}: ${c}`),u.push(`${p}: $${p}`),a[p]=d};return e&&l("updatedBefore",e,"Time"),t&&l("authorUsername",t,"String"),n&&l("assigneeUsername",n[0],"String"),o&&l("labelName",o,"[String]"),{variables:a,variableTypes:i,issueArguments:u}}async getIssuesForRepo(s,e={}){let{cursor:t,repo:n}=s||{},o=j(n),{variables:a,variableTypes:i,issueArguments:u}=this.getVariablesForIssues(s),l={fullPath:o,...a},p=`
1094
+ `,variables:{issueNumber:s.number,projectId:t}},e);if(!n.body.data?.project)throw new Error(`Repository ${t} not found`);if(!n.body.data?.project?.issue)throw new Error(`Issue ${s.number} not found`);return{data:ut(n.body.data.project.issue,qe(n.body.data.project),this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)}}getVariablesForIssues(s){let{updatedBefore:e,authorLogin:t,assigneeLogins:n,labelNames:o}=s||{},i={},a=[],u=[],l=(p,d,c)=>{a.push(`$${p}: ${c}`),u.push(`${p}: $${p}`),i[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:i,variableTypes:a,issueArguments:u}}async getIssuesForRepo(s,e={}){let{cursor:t,repo:n}=s||{},o=B(n),{variables:i,variableTypes:a,issueArguments:u}=this.getVariablesForIssues(s),l={fullPath:o,...i},p=`
1039
1095
  query GetIssuesFromProject(
1040
1096
  $fullPath: ID!
1041
1097
  $after: String
1042
- ${i.length?i.join(" "):""}
1098
+ ${a.length?a.join(" "):""}
1043
1099
  ) {
1044
1100
  project(
1045
1101
  fullPath: $fullPath
@@ -1055,7 +1111,7 @@ query GetSingleIssue($projectId: ID!, $issueNumber: String!) {
1055
1111
  ${u.length?u.join(" "):""}
1056
1112
  ) {
1057
1113
  nodes {
1058
- ${nt}
1114
+ ${it}
1059
1115
  }
1060
1116
  pageInfo {
1061
1117
  endCursor
@@ -1063,11 +1119,11 @@ query GetSingleIssue($projectId: ID!, $issueNumber: String!) {
1063
1119
  }
1064
1120
  }
1065
1121
  }
1066
- }`,d=await y(this.config,{query:p,variables:{...l,after:t}},e),c=[],g=d.body.data?.project,m=Se(g||{id:"",fullPath:"",webUrl:""});return(g?.issues?.nodes||[]).forEach(I=>{c.push(at(I,m,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl))}),{pageInfo:g?.issues?.pageInfo??{endCursor:null,hasNextPage:!1},data:c.sort((I,$)=>(I.updatedDate||I.createdDate).getTime()-($.updatedDate||$.createdDate).getTime())}}async getIssuesForRepos(s,e={}){let{cursor:t}=s||{},n=s.repoIds.map(g=>g.toString().startsWith(Z)?g:`${Z}${g}`),{variables:o,variableTypes:a,mergeRequestArguments:i}=this.getVariablesForPullRequests(s),u={projectIds:n,...o},l=`
1122
+ }`,d=await y(this.config,{query:p,variables:{...l,after:t}},e),c=[],g=d.body.data?.project,m=qe(g||{id:"",fullPath:"",webUrl:""});return(g?.issues?.nodes||[]).forEach(I=>{c.push(ut(I,m,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl))}),{pageInfo:g?.issues?.pageInfo??{endCursor:null,hasNextPage:!1},data:c.sort((I,L)=>(I.updatedDate||I.createdDate).getTime()-(L.updatedDate||L.createdDate).getTime())}}async getIssuesForRepos(s,e={}){let{cursor:t}=s||{},n=s.repoIds.map(g=>g.toString().startsWith(Y)?g:`${Y}${g}`),{variables:o,variableTypes:i,mergeRequestArguments:a}=this.getVariablesForPullRequests(s),u={projectIds:n,...o},l=`
1067
1123
  query GetIssuesFromProject(
1068
1124
  $projectIds: [ID!]
1069
1125
  $after: String
1070
- ${a.length?a.join(" "):""}
1126
+ ${i.length?i.join(" "):""}
1071
1127
  ) {
1072
1128
  projects(
1073
1129
  ids: $projectIds
@@ -1086,27 +1142,27 @@ query GetSingleIssue($projectId: ID!, $issueNumber: String!) {
1086
1142
  first: 100
1087
1143
  state: opened
1088
1144
  sort: UPDATED_DESC
1089
- ${i.length?i.join(" "):""}
1145
+ ${a.length?a.join(" "):""}
1090
1146
  ) {
1091
1147
  nodes {
1092
- ${nt}
1148
+ ${it}
1093
1149
  }
1094
1150
  }
1095
1151
  }
1096
1152
  }
1097
- }`,p=await y(this.config,{query:l,variables:{...u,after:t}},e),d=[];return(p.body.data?.projects?.nodes||[]).forEach(g=>{if(!s.includeFromArchivedRepos&&g.archived)return;let m=Se(g);(g.issues?.nodes||[]).forEach(I=>d.push(at(I,m,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)))}),{pageInfo:p.body?.data?.projects?.pageInfo??{endCursor:null,hasNextPage:!1},data:d.sort((g,m)=>(g.updatedDate||g.createdDate).getTime()-(m.updatedDate||m.createdDate).getTime())}}async setIssueState(s,e={}){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!) {
1153
+ }`,p=await y(this.config,{query:l,variables:{...u,after:t}},e),d=[];return(p.body.data?.projects?.nodes||[]).forEach(g=>{if(!s.includeFromArchivedRepos&&g.archived)return;let m=qe(g);(g.issues?.nodes||[]).forEach(I=>d.push(ut(I,m,this.getIsSelfHosted(e),this.config.baseUrl??e.baseUrl)))}),{pageInfo:p.body?.data?.projects?.pageInfo??{endCursor:null,hasNextPage:!1},data:d.sort((g,m)=>(g.updatedDate||g.createdDate).getTime()-(m.updatedDate||m.createdDate).getTime())}}async setIssueState(s,e={}){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!) {
1098
1154
  updateIssue(input: { projectPath: $fullPath, iid: $issueId, stateEvent: $status }) {
1099
1155
  issue {
1100
1156
  id
1101
1157
  }
1102
1158
  }
1103
- }`;if(!(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?.updateIssue?.issue?.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={}){let{issue:t,labels:n}=s;if(!t.repository)throw new Error('GitLab requires a "repository" for this function.');let o=n.map(u=>{if(!u.graphQLId)throw new Error('GitLab requires label "graphQLId" for this function.');return u.graphQLId}),a=`mutation SetIssueLabels($fullPath: ID!, $issueId: String!, $labelGraphQLIds: [ID!]) {
1159
+ }`;if(!(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?.updateIssue?.issue?.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={}){let{issue:t,labels:n}=s;if(!t.repository)throw new Error('GitLab requires a "repository" for this function.');let o=n.map(u=>{if(!u.graphQLId)throw new Error('GitLab requires label "graphQLId" for this function.');return u.graphQLId}),i=`mutation SetIssueLabels($fullPath: ID!, $issueId: String!, $labelGraphQLIds: [ID!]) {
1104
1160
  updateIssue(input: { projectPath: $fullPath, iid: $issueId, labelIds: $labelGraphQLIds }) {
1105
1161
  issue {
1106
1162
  id
1107
1163
  }
1108
1164
  }
1109
- }`;if(!(await y(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,labelGraphQLIds:o}},e)).body.data?.updateIssue?.issue?.id)throw new Error("Could not set issue labels")}async setIssueMilestone(s,e={}){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) {
1165
+ }`;if(!(await y(this.config,{query:i,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,labelGraphQLIds:o}},e)).body.data?.updateIssue?.issue?.id)throw new Error("Could not set issue labels")}async setIssueMilestone(s,e={}){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) {
1110
1166
  updateIssue(input: { projectPath: $fullPath, iid: $issueId, milestoneId: $milestoneId }) {
1111
1167
  errors
1112
1168
  issue {
@@ -1116,14 +1172,14 @@ query GetSingleIssue($projectId: ID!, $issueNumber: String!) {
1116
1172
  }
1117
1173
  }
1118
1174
  }
1119
- }`,a=await y(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,milestoneId:n?.id??null}},e),i=a.body.data?.updateIssue;if(!i?.issue?.id||a.body.errors||i?.errors?.length!==0)throw new Error("Could not set milestone of issue")}async setIssueAssignees(s,e={}){let{issue:t,assignees:n}=s;if(!t.repository)throw new Error('GitLab requires "repository" for this function.');let o=n.map(l=>l.username),a=`mutation SetIssueAssignees($fullPath: ID!, $issueId: String!, $assigneeUsernames: [String!]!) {
1175
+ }`,i=await y(this.config,{query:o,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,milestoneId:n?.id??null}},e),a=i.body.data?.updateIssue;if(!a?.issue?.id||i.body.errors||a?.errors?.length!==0)throw new Error("Could not set milestone of issue")}async setIssueAssignees(s,e={}){let{issue:t,assignees:n}=s;if(!t.repository)throw new Error('GitLab requires "repository" for this function.');let o=n.map(l=>l.username),i=`mutation SetIssueAssignees($fullPath: ID!, $issueId: String!, $assigneeUsernames: [String!]!) {
1120
1176
  issueSetAssignees(input: { projectPath: $fullPath, iid: $issueId, assigneeUsernames: $assigneeUsernames }) {
1121
1177
  errors,
1122
1178
  issue {
1123
1179
  id
1124
1180
  }
1125
1181
  }
1126
- }`,u=(await y(this.config,{query:a,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,assigneeUsernames:o}},e)).body.data?.issueSetAssignees;if(!u?.issue?.id||u?.errors?.length!==0)throw new Error("Could not set issue assignees")}async getMilestonesForRepo(s,e={}){let{repo:{namespace:t,name:n},cursor:o}=s,a=await y(this.config,{query:`
1182
+ }`,u=(await y(this.config,{query:i,variables:{fullPath:`${t.repository.owner.login}/${t.repository.name}`,issueId:t.number,assigneeUsernames:o}},e)).body.data?.issueSetAssignees;if(!u?.issue?.id||u?.errors?.length!==0)throw new Error("Could not set issue assignees")}async getMilestonesForRepo(s,e={}){let{repo:{namespace:t,name:n},cursor:o}=s,i=await y(this.config,{query:`
1127
1183
  query getLabelsForRepo(
1128
1184
  $fullPath: ID!
1129
1185
  $after: String
@@ -1134,7 +1190,7 @@ query getLabelsForRepo(
1134
1190
  webUrl
1135
1191
  milestones(after: $after) {
1136
1192
  nodes {
1137
- ${lt}
1193
+ ${dt}
1138
1194
  }
1139
1195
  pageInfo {
1140
1196
  endCursor
@@ -1143,7 +1199,7 @@ query getLabelsForRepo(
1143
1199
  }
1144
1200
  }
1145
1201
  }
1146
- `,variables:{fullPath:`${t}/${n}`,after:o}},e);return{pageInfo:a.body.data?.project?.milestones?.pageInfo??{endCursor:null,hasNextPage:!1},data:a.body.data?.project?.milestones?.nodes?.map(i=>ct(i,a.body.data?.project?.webUrl||""))??[]}}async getLabelsForRepo(s,e={}){let{repo:{namespace:t,name:n},cursor:o}=s,a=await y(this.config,{query:`
1202
+ `,variables:{fullPath:`${t}/${n}`,after:o}},e);return{pageInfo:i.body.data?.project?.milestones?.pageInfo??{endCursor:null,hasNextPage:!1},data:i.body.data?.project?.milestones?.nodes?.map(a=>mt(a,i.body.data?.project?.webUrl||""))??[]}}async getLabelsForRepo(s,e={}){let{repo:{namespace:t,name:n},cursor:o}=s,i=await y(this.config,{query:`
1147
1203
  query getLabelsForRepo(
1148
1204
  $fullPath: ID!
1149
1205
  $after: String
@@ -1153,7 +1209,7 @@ query getLabelsForRepo(
1153
1209
  ) {
1154
1210
  labels(after: $after) {
1155
1211
  nodes {
1156
- ${pt}
1212
+ ${ct}
1157
1213
  }
1158
1214
  pageInfo {
1159
1215
  endCursor
@@ -1162,8 +1218,8 @@ query getLabelsForRepo(
1162
1218
  }
1163
1219
  }
1164
1220
  }
1165
- `,variables:{fullPath:`${t}/${n}`,after:o}},e);return{pageInfo:a.body.data?.project?.labels?.pageInfo??{endCursor:null,hasNextPage:!1},data:a.body.data?.project?.labels?.nodes?.map(dt)??[]}}async getTreeForRepo(s,e={}){let t=j(s.repo),n=new URL(s.cursor??`${Pe(this.config,e)}/projects/${encodeURIComponent(t)}/repository/tree`);n.searchParams.set("per_page","10000"),n.searchParams.set("recursive","true"),n.searchParams.set("pagination","keyset"),n.searchParams.set("ref",s.branch);let o=await this.config.request({url:n.toString(),headers:h(e.token||this.config.token)}),a=o.headers.link;return{data:o.body.map(fs),pageInfo:{endCursor:a?a.substring(1,a.indexOf(">")):null,hasNextPage:!!a}}}};var ys="https://api.atlassian.com/ex/jira",ve=100,gt=["assignee","comment","summary","created","creator","updated","votes","issuetype","status","labels","components","project","fixVersions","description"],zt="/rest/api/2/search/jql",Mt="/rest/api/2/search",mt=(r,s,e,t)=>{let n=r.fields.assignee,o=!t,a=(r.fields[s?.Sprint??""]??[]).filter(i=>typeof i=="object");return{id:r.id,commentCount:r.fields.comment.comments.length,number:r.key,title:r.fields.summary,url:e?`${e}/browse/${r.key}`:null,closedDate:null,createdDate:new Date(r.fields.created),author:qe(r.fields.creator,e,o),updatedDate:new Date(r.fields.updated),assignees:n?[qe(n,e,o)]:[],description:r.fields.description,repository:null,project:{name:r.fields.project.name,resourceId:t??null,key:r.fields.project.key,namespace:null,id:r.fields.project.id},state:vs(r.fields.status),statusTransitions:r.transitions?.map(Ps)??[],components:r.fields.components?.map(ws)??[],type:r.fields.issuetype.name,upvoteCount:r.fields.votes?.votes||0,labels:r.fields.labels?.map(i=>({color:null,description:null,id:null,name:i}))??[],sprints:a.map(qs),fixVersions:r.fields.fixVersions.map(Es)}},Ps=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}}},ws=r=>({description:r.description??null,id:r.id,name:r.name}),Ss=(r,s,e)=>e&&r.name?`${s}/secure/ViewProfile.jspa?name=${encodeURIComponent(r.name)}`:`${s}/jira/people/${r.accountId}`,qe=(r,s,e)=>({id:(e?r.key:r.accountId)??"",name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrls["48x48"],username:r.displayName,url:Ss(r,s,e)}),vs=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}},qs=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}),Es=r=>({id:r.id,description:r.description,name:r.name,archived:r.archived,released:r.released,releaseDate:r.releaseDate?new Date(r.releaseDate):null}),B=(r,s,e)=>e?`${s.baseUrl||ys}/${e}`:`${s?.baseUrl||r.baseUrl}`,Ee=async(r,s,e={})=>{let{resourceId:t}=s;return(await r.request({url:`${B(r,e,t)}/rest/api/2/field`,headers:h(e.token||r.token)})).body},Ce=async(r,s,e,t={})=>{let{number:n,resourceId:o,fields:a}=s||{},i=await r.request({url:`${B(r,t,o)}/rest/api/2/issue/${n}?fields=${gt.join(",")}&expand=transitions`,headers:h(t.token||r.token)});return{data:mt(i.body,a,e,o)}},Le=async(r,s,e,t={})=>{let{cursor:n,resourceId:o,labelNames:a,fields:i}=s||{},u=["statusCategory != Done",`(creator = currentUser() OR assignee = currentUser()
1166
- OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUser())`];a&&a.forEach($=>u.push(`labels = "${$}"`));let l=`${u.join(" AND ")} ORDER BY updated DESC`,p=!o,d=p?Mt:zt,c=new URL(`${B(r,t,o)}${d}`);c.searchParams.set("jql",l),c.searchParams.set("maxResults",ve.toString()),c.searchParams.set("fields",gt.join(",")),c.searchParams.set("expand","transitions"),n&&(p?c.searchParams.set("startAt",n):c.searchParams.set("nextPageToken",n));let g=await r.request({url:c.toString(),headers:h(t.token||r.token)}),m=g.body.issues.map($=>mt($,i,e,o)),b=!1,I="";return p?(b=m.length==ve,I=(parseInt(n??"0",10)+m.length).toString()):(b=!!g.body.nextPageToken,I=g.body.nextPageToken??null),{data:m,pageInfo:{hasNextPage:b,endCursor:I}}},Wt=async(r,s,e,t={})=>{let{cursor:n,resourceId:o,jql:a,fields:i}=s||{},u=[...gt],l=i?.Sprint;l&&u.push(l);let p=!o,d=p?Mt:zt,c=new URL(`${B(r,t,o)}${d}`);c.searchParams.set("jql",a.join(" AND ")),c.searchParams.set("maxResults",ve.toString()),c.searchParams.set("fields",u.join(",")),c.searchParams.set("expand","transitions"),n&&(p?c.searchParams.set("startAt",n):c.searchParams.set("nextPageToken",n));let g=await r.request({url:c.toString(),headers:h(t.token||r.token)}),m=g.body.issues.map($=>mt($,i,e,o)),b=!1,I="";return p?(b=m.length==ve,I=(parseInt(n??"0",10)+m.length).toString()):(b=!!g.body.nextPageToken,I=g.body.nextPageToken??null),{data:m,pageInfo:{hasNextPage:b,endCursor:I}}},De=async(r,s,e,t={})=>{let{assigneeLogins:n,authorLogin:o,mentionLogin:a,labelNames:i,cursor:u,projectKey:l,resourceId:p,fields:d}=s||{},c=[`project = "${l}"`,"statusCategory != Done"];return o&&c.push(`creator in ("${o}")`),n&&n.length!==0&&c.push(`assignee in ("${n.join('", "')}")`),a&&c.push(`comment ~ "${a}"`),i&&i.forEach(g=>c.push(`labels = "${g}"`)),Wt(r,{resourceId:p,jql:c,cursor:u,fields:d},e,t)},$e=async(r,s,e,t={})=>{let{assigneeLogins:n,authorLogin:o,mentionLogin:a,labelNames:i,cursor:u,projectKeys:l,resourceId:p,fields:d}=s||{},g=["("+l.map(m=>`project = "${m}"`).join(" OR ")+")","statusCategory != Done"];return o&&g.push(`creator in ("${o}")`),n&&n.length!==0&&g.push(`assignee in ("${n.join('", "')}")`),a&&g.push(`comment ~ "${a}"`),i&&i.forEach(m=>g.push(`labels = "${m}"`)),Wt(r,{resourceId:p,jql:g,fields:d,cursor:u},e,t)},Ue=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:`${B(r,e,t.project.resourceId??void 0)}/rest/api/2/issue/${t.id}`,body:JSON.stringify(o),headers:{...h(e.token||r.token),"Content-Type":"application/json"}})},Ae=async(r,s,e={})=>{let{issue:t,components:n}=s;if(!t.project)throw new Error('Jira requires a "project" for this function.');let o={fields:{components:n.map(a=>({id:a.id}))}};await r.request({method:"PUT",url:`${B(r,e,t.project.resourceId??void 0)}/rest/api/2/issue/${t.id}`,body:JSON.stringify(o),headers:{...h(e.token||r.token),"Content-Type":"application/json"}})},Ge=async(r,s,e={})=>{let{issue:t,status:n}=s;if(!t.project)throw new Error('Jira requires a "project" for this function.');if(!n.id)throw new Error('Jira requires a status "id" for this function.');let o={transition:{id:n.id}};await r.request({method:"POST",url:`${B(r,e,t.project.resourceId??void 0)}/rest/api/2/issue/${t.id}/transitions`,body:JSON.stringify(o),headers:{...h(e.token||r.token),"Content-Type":"application/json"}})},Te=async(r,s,e={})=>{let{resourceId:t,projectIdOrKey:n}=s,o=new URL(`${B(r,e,t)}/rest/api/2/project/${n}/components`);return{data:(await r.request({url:o.toString(),headers:h(e.token||r.token)})).body}};var ae="https://api.atlassian.com/ex/jira",ht=100,ee=class extends U{constructor(){super(...arguments);this._resourceUrlCache={};this._issueFieldsCache={}}async getIssueFieldsForResource(e,t={}){if(!this._issueFieldsCache[e.resourceId]){let n=await Ee(this.config,e,t);this._issueFieldsCache[e.resourceId]=n.reduce((o,a)=>({...o,[a.name]:a.id}),{})}return this._issueFieldsCache[e.resourceId]??null}async getResourceUrl(e,t={}){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),this._resourceUrlCache[n]?.[e.resourceId]??null)}async getCurrentUserForResource(e,t={}){let n=await this.getResourceUrl({resourceId:e.resourceId},t),o=await this.config.request({url:`${t.baseUrl||ae}/${e.resourceId}/rest/api/2/myself`,headers:h(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:h(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||ae}/${e.resourceId}/rest/api/2/project/search`);n.searchParams.set("maxResults",ht.toString()),e.cursor&&n.searchParams.set("startAt",e.cursor);let o=await this.config.request({url:n.toString(),headers:h(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 qt(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||ae}/${n}/rest/api/2/user/assignable/search`);u.searchParams.set("maxResults",ht.toString()),a&&u.searchParams.set("startAt",a),u.searchParams.set("project",o);let l=await this.config.request({url:u.toString(),headers:h(t.token||this.config.token)});return{pageInfo:{hasNextPage:l.body.length!==0,endCursor:((a?parseInt(a):0)+l.body.length).toString()},data:l.body.filter(p=>p.accountType!=="app"&&p.active).map(p=>qe(p,i,!1))}}async getComponentsForJiraProject(e,t={}){return await Te(this.config,e,t)}async getIssue(e,t={}){let n=await this.getIssueFieldsForResource({resourceId:e.resourceId},t),o=await this.getResourceUrl({resourceId:e.resourceId},t);return await Ce(this.config,{...e,fields:n},o,t)}async getIssuesForProject(e,t={}){let n=await this.getIssueFieldsForResource({resourceId:e.resourceId},t),o=await this.getResourceUrl({resourceId:e.resourceId},t);return await De(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 $e(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 Le(this.config,{...e,fields:n},o,t)}async setIssueStatus(e,t={}){await Ge(this.config,e,t)}async setIssueAssignee(e,t={}){let{issue:n,assignee:o}=e;if(!n.project)throw new Error('Jira Cloud requires a "project" for this function.');if(!n.project.resourceId)throw new Error('Jira Cloud requires a project "resourceId" for this function.');let a={accountId:o?.id};await this.config.request({method:"PUT",url:`${t.baseUrl||ae}/${n.project.resourceId}/rest/api/2/issue/${n.id}/assignee`,body:JSON.stringify(a),headers:{...h(t.token||this.config.token),"Content-Type":"application/json"}})}async setIssueComponents(e,t={}){await Ae(this.config,e,t)}async setIssueLabels(e,t={}){await Ue(this.config,e,t)}async getLabelsForResource(e,t={}){let{resourceId:n,cursor:o}=e,a=new URL(`${t.baseUrl||ae}/${n}/rest/api/2/label`);a.searchParams.set("maxResults",ht.toString()),o&&a.searchParams.set("startAt",o);let i=await this.config.request({url:a.toString(),headers:h(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 te=class extends L{constructor(){super(...arguments);this._issueFieldsCache={}}async getIssueFieldsForResource(e={}){let t=e?.baseUrl||this.config.baseUrl||"";if(!this._issueFieldsCache[t]){let n=await Ee(this.config,{},e);this._issueFieldsCache[t]=n.reduce((o,a)=>({...o,[a.name]:a.id}),{})}return this._issueFieldsCache[t]??null}async getCurrentUser(e={}){let t=await this.config.request({url:`${e?.baseUrl||this.config.baseUrl}/rest/api/2/myself`,headers:h(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?.baseUrl||this.config.baseUrl}/rest/api/2/project`,headers:h(e?.token||this.config.token)})).body.map(n=>({id:n.id,name:n.name}))}}async getIssue(e,t={}){let n=e.resourceUrl||t.baseUrl||this.config.baseUrl;if(!n)throw new Error('Jira Server requires a "resourceUrl" or "baseUrl" for this function.');let o=await this.getIssueFieldsForResource(t);return await Ce(this.config,{...e,fields:o},n,t)}async getIssuesForProject(e,t={}){let n=e.resourceUrl||t.baseUrl||this.config.baseUrl;if(!n)throw new Error('Jira Server requires a "resourceUrl" or "baseUrl" for this function.');let o=await this.getIssueFieldsForResource(t);return await De(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 $e(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 Le(this.config,{...e,fields:o},n,t)}async setIssueStatus(e,t={}){await Ge(this.config,e,t)}async setIssueLabels(e,t={}){await Ue(this.config,e,t)}async setIssueComponents(e,t={}){await Ae(this.config,e,t)}async getLabels(e={}){return{data:(await this.config.request({url:`${e?.baseUrl||this.config.baseUrl}/rest/api/2/jql/autocompletedata/suggestions?fieldName=labels`,headers:h(e.token||this.config.token)})).body.results.map(({displayName:n})=>({color:null,description:null,id:null,name:n}))}}async getComponentsForJiraProject(e,t={}){return await Te(this.config,e,t)}};var T="https://api.trello.com",Cs=1e3,Ls=r=>({id:r.id,username:r.username,url:r.url,name:r.fullName,email:r.email,avatarUrl:r.avatarUrl}),Ds=(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}))}},re=class extends U{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:h(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:h(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:h(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:Ls(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:h(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=${Cs}&token=${e.token||this.config.token}&card_members=true`,headers:h(e.token||this.config.token)})).body.cards.map(c=>Ds(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:h(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:h(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:h(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:h(e.token||this.config.token)})).body.map(a=>({color:a.color,description:null,id:a.id,name:a.name}))}}};var Rt=100,Oe=class{constructor(){this.set=new Set;this.arr=[]}push(...s){let e=s.filter(t=>!this.set.has(t.id));this.arr.push(...e),e.forEach(t=>this.set.add(t.id))}get length(){return this.arr.length}get items(){return this.arr}},_=async(r,s,e,t)=>{let n=s.token||r.token;if(!n)throw new Error("Linear API key is required");let o=await r.request({url:"https://api.linear.app/graphql",method:"POST",headers:{Authorization:n,"Content-Type":"application/json"},body:JSON.stringify({query:e,variables:t})});if(o.status>=400)throw new Error(`Linear API request failed: ${o.status} ${o.statusText}`);let a=o.body;if(a.errors)throw new Error(`Linear GraphQL errors: ${a.errors.map(i=>i.message).join(", ")}`);return a.data},ft=r=>r?r instanceof Date?r:new Date(r):null,$s=`
1221
+ `,variables:{fullPath:`${t}/${n}`,after:o}},e);return{pageInfo:i.body.data?.project?.labels?.pageInfo??{endCursor:null,hasNextPage:!1},data:i.body.data?.project?.labels?.nodes?.map(gt)??[]}}async getTreeForRepo(s,e={}){let t=B(s.repo),n=new URL(s.cursor??`${Se(this.config,e)}/projects/${encodeURIComponent(t)}/repository/tree`);n.searchParams.set("per_page","10000"),n.searchParams.set("recursive","true"),n.searchParams.set("pagination","keyset"),n.searchParams.set("ref",s.branch);let o=await this.config.request({url:n.toString(),headers:h(e.token||this.config.token)}),i=o.headers.link;return{data:o.body.map(Rs),pageInfo:{endCursor:i?i.substring(1,i.indexOf(">")):null,hasNextPage:!!i}}}};var Ps="https://api.atlassian.com/ex/jira",Ee=100,ht=["assignee","comment","summary","created","creator","updated","votes","issuetype","status","labels","components","project","fixVersions","description"],Ht="/rest/api/2/search/jql",Wt="/rest/api/2/search",ft=(r,s,e,t)=>{let n=r.fields.assignee,o=!t,i=(r.fields[s?.Sprint??""]??[]).filter(a=>typeof a=="object");return{id:r.id,commentCount:r.fields.comment.comments.length,number:r.key,title:r.fields.summary,url:e?`${e}/browse/${r.key}`:null,closedDate:null,createdDate:new Date(r.fields.created),author:Ce(r.fields.creator,e,o),updatedDate:new Date(r.fields.updated),assignees:n?[Ce(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:qs(r.fields.status),statusTransitions:r.transitions?.map(ws)??[],components:r.fields.components?.map(Ss)??[],type:r.fields.issuetype.name,upvoteCount:r.fields.votes?.votes||0,labels:r.fields.labels?.map(a=>({color:null,description:null,id:null,name:a}))??[],sprints:i.map(Es),fixVersions:r.fields.fixVersions.map(Cs)}},ws=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}}},Ss=r=>({description:r.description??null,id:r.id,name:r.name}),vs=(r,s,e)=>e&&r.name?`${s}/secure/ViewProfile.jspa?name=${encodeURIComponent(r.name)}`:`${s}/jira/people/${r.accountId}`,Ce=(r,s,e)=>({id:(e?r.key:r.accountId)??"",name:r.displayName,email:r.emailAddress,avatarUrl:r.avatarUrls["48x48"],username:r.displayName,url:vs(r,s,e)}),qs=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}},Es=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}),Cs=r=>({id:r.id,description:r.description,name:r.name,archived:r.archived,released:r.released,releaseDate:r.releaseDate?new Date(r.releaseDate):null}),z=(r,s,e)=>e?`${s.baseUrl||Ps}/${e}`:`${s?.baseUrl||r.baseUrl}`,Le=async(r,s,e={})=>{let{resourceId:t}=s;return(await r.request({url:`${z(r,e,t)}/rest/api/2/field`,headers:h(e.token||r.token)})).body},De=async(r,s,e,t={})=>{let{number:n,resourceId:o,fields:i}=s||{},a=await r.request({url:`${z(r,t,o)}/rest/api/2/issue/${n}?fields=${ht.join(",")}&expand=transitions`,headers:h(t.token||r.token)});return{data:ft(a.body,i,e,o)}},$e=async(r,s,e,t={})=>{let{cursor:n,resourceId:o,labelNames:i,fields:a}=s||{},u=["statusCategory != Done",`(creator = currentUser() OR assignee = currentUser()
1222
+ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUser())`];i&&i.forEach(L=>u.push(`labels = "${L}"`));let l=`${u.join(" AND ")} ORDER BY updated DESC`,p=!o,d=p?Wt:Ht,c=new URL(`${z(r,t,o)}${d}`);c.searchParams.set("jql",l),c.searchParams.set("maxResults",Ee.toString()),c.searchParams.set("fields",ht.join(",")),c.searchParams.set("expand","transitions"),n&&(p?c.searchParams.set("startAt",n):c.searchParams.set("nextPageToken",n));let g=await r.request({url:c.toString(),headers:h(t.token||r.token)}),m=g.body.issues.map(L=>ft(L,a,e,o)),b=!1,I="";return p?(b=m.length==Ee,I=(parseInt(n??"0",10)+m.length).toString()):(b=!!g.body.nextPageToken,I=g.body.nextPageToken??null),{data:m,pageInfo:{hasNextPage:b,endCursor:I}}},Jt=async(r,s,e,t={})=>{let{cursor:n,resourceId:o,jql:i,fields:a}=s||{},u=[...ht],l=a?.Sprint;l&&u.push(l);let p=!o,d=p?Wt:Ht,c=new URL(`${z(r,t,o)}${d}`);c.searchParams.set("jql",i.join(" AND ")),c.searchParams.set("maxResults",Ee.toString()),c.searchParams.set("fields",u.join(",")),c.searchParams.set("expand","transitions"),n&&(p?c.searchParams.set("startAt",n):c.searchParams.set("nextPageToken",n));let g=await r.request({url:c.toString(),headers:h(t.token||r.token)}),m=g.body.issues.map(L=>ft(L,a,e,o)),b=!1,I="";return p?(b=m.length==Ee,I=(parseInt(n??"0",10)+m.length).toString()):(b=!!g.body.nextPageToken,I=g.body.nextPageToken??null),{data:m,pageInfo:{hasNextPage:b,endCursor:I}}},Ue=async(r,s,e,t={})=>{let{assigneeLogins:n,authorLogin:o,mentionLogin:i,labelNames:a,cursor:u,projectKey:l,resourceId:p,fields:d}=s||{},c=[`project = "${l}"`,"statusCategory != Done"];return o&&c.push(`creator in ("${o}")`),n&&n.length!==0&&c.push(`assignee in ("${n.join('", "')}")`),i&&c.push(`comment ~ "${i}"`),a&&a.forEach(g=>c.push(`labels = "${g}"`)),Jt(r,{resourceId:p,jql:c,cursor:u,fields:d},e,t)},Ae=async(r,s,e,t={})=>{let{assigneeLogins:n,authorLogin:o,mentionLogin:i,labelNames:a,cursor:u,projectKeys:l,resourceId:p,fields:d}=s||{},g=["("+l.map(m=>`project = "${m}"`).join(" OR ")+")","statusCategory != Done"];return o&&g.push(`creator in ("${o}")`),n&&n.length!==0&&g.push(`assignee in ("${n.join('", "')}")`),i&&g.push(`comment ~ "${i}"`),a&&a.forEach(m=>g.push(`labels = "${m}"`)),Jt(r,{resourceId:p,jql:g,fields:d,cursor:u},e,t)},Ge=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(i=>i.name)}};await r.request({method:"PUT",url:`${z(r,e,t.project.resourceId??void 0)}/rest/api/2/issue/${t.id}`,body:JSON.stringify(o),headers:{...h(e.token||r.token),"Content-Type":"application/json"}})},Te=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(i=>({id:i.id}))}};await r.request({method:"PUT",url:`${z(r,e,t.project.resourceId??void 0)}/rest/api/2/issue/${t.id}`,body:JSON.stringify(o),headers:{...h(e.token||r.token),"Content-Type":"application/json"}})},Oe=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:`${z(r,e,t.project.resourceId??void 0)}/rest/api/2/issue/${t.id}/transitions`,body:JSON.stringify(o),headers:{...h(e.token||r.token),"Content-Type":"application/json"}})},xe=async(r,s,e={})=>{let{resourceId:t,projectIdOrKey:n}=s,o=new URL(`${z(r,e,t)}/rest/api/2/project/${n}/components`);return{data:(await r.request({url:o.toString(),headers:h(e.token||r.token)})).body}};var ae="https://api.atlassian.com/ex/jira",Rt=100,te=class extends U{constructor(){super(...arguments);this._resourceUrlCache={};this._issueFieldsCache={}}async getIssueFieldsForResource(e,t={}){if(!this._issueFieldsCache[e.resourceId]){let n=await Le(this.config,e,t);this._issueFieldsCache[e.resourceId]=n.reduce((o,i)=>({...o,[i.name]:i.id}),{})}return this._issueFieldsCache[e.resourceId]??null}async getResourceUrl(e,t={}){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),this._resourceUrlCache[n]?.[e.resourceId]??null)}async getCurrentUserForResource(e,t={}){let n=await this.getResourceUrl({resourceId:e.resourceId},t),o=await this.config.request({url:`${t.baseUrl||ae}/${e.resourceId}/rest/api/2/myself`,headers:h(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:h(e.token||this.config.token)}),n=e.token||this.config.token,o=n?this._resourceUrlCache[n]||{}:void 0,i=t.body.map(a=>(o&&(o[a.id]=a.url),{avatarUrl:a.avatarUrl,id:a.id,name:a.name,url:a.url}));return n&&(this._resourceUrlCache[n]=o),{data:i}}async getJiraProjectsForResource(e,t={}){let n=new URL(`${t.baseUrl||ae}/${e.resourceId}/rest/api/2/project/search`);n.searchParams.set("maxResults",Rt.toString()),e.cursor&&n.searchParams.set("startAt",e.cursor);let o=await this.config.request({url:n.toString(),headers:h(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(i=>({id:i.id,key:i.key,name:i.name,resourceId:e.resourceId}))}}async getJiraProjectsForResources(e,t={}){let n=[];return await Promise.all(e.resourceIds.map(async o=>{try{return await Ct(i=>this.getJiraProjectsForResource({resourceId:o,cursor:i},t))}catch{return[]}})).then((...o)=>{o.forEach(i=>{n=n.concat(...i)})}),{data:n}}async getAccountsForJiraProject(e,t={}){let{resourceId:n,projectKey:o,cursor:i}=e,a=await this.getResourceUrl({resourceId:n},t),u=new URL(`${t.baseUrl||ae}/${n}/rest/api/2/user/assignable/search`);u.searchParams.set("maxResults",Rt.toString()),i&&u.searchParams.set("startAt",i),u.searchParams.set("project",o);let l=await this.config.request({url:u.toString(),headers:h(t.token||this.config.token)});return{pageInfo:{hasNextPage:l.body.length!==0,endCursor:((i?parseInt(i):0)+l.body.length).toString()},data:l.body.filter(p=>p.accountType!=="app"&&p.active).map(p=>Ce(p,a,!1))}}async getComponentsForJiraProject(e,t={}){return await xe(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 De(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 Ue(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 Ae(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 $e(this.config,{...e,fields:n},o,t)}async setIssueStatus(e,t={}){await Oe(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 i={accountId:o?.id};await this.config.request({method:"PUT",url:`${t.baseUrl||ae}/${n.project.resourceId}/rest/api/2/issue/${n.id}/assignee`,body:JSON.stringify(i),headers:{...h(t.token||this.config.token),"Content-Type":"application/json"}})}async setIssueComponents(e,t={}){await Te(this.config,e,t)}async setIssueLabels(e,t={}){await Ge(this.config,e,t)}async getLabelsForResource(e,t={}){let{resourceId:n,cursor:o}=e,i=new URL(`${t.baseUrl||ae}/${n}/rest/api/2/label`);i.searchParams.set("maxResults",Rt.toString()),o&&i.searchParams.set("startAt",o);let a=await this.config.request({url:i.toString(),headers:h(t.token||this.config.token)});return{pageInfo:{hasNextPage:!a.body.isLast,endCursor:(a.body.startAt+a.body.values.length).toString()},data:a.body.values.map(u=>({color:null,description:null,id:null,name:u}))}}};var re=class extends D{constructor(){super(...arguments);this._issueFieldsCache={}}async getIssueFieldsForResource(e={}){let t=e?.baseUrl||this.config.baseUrl||"";if(!this._issueFieldsCache[t]){let n=await Le(this.config,{},e);this._issueFieldsCache[t]=n.reduce((o,i)=>({...o,[i.name]:i.id}),{})}return this._issueFieldsCache[t]??null}async getCurrentUser(e={}){let t=await this.config.request({url:`${e?.baseUrl||this.config.baseUrl}/rest/api/2/myself`,headers:h(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?.baseUrl||this.config.baseUrl}/rest/api/2/project`,headers:h(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 De(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 Ue(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 Ae(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 $e(this.config,{...e,fields:o},n,t)}async setIssueStatus(e,t={}){await Oe(this.config,e,t)}async setIssueLabels(e,t={}){await Ge(this.config,e,t)}async setIssueComponents(e,t={}){await Te(this.config,e,t)}async getLabels(e={}){return{data:(await this.config.request({url:`${e?.baseUrl||this.config.baseUrl}/rest/api/2/jql/autocompletedata/suggestions?fieldName=labels`,headers:h(e.token||this.config.token)})).body.results.map(({displayName:n})=>({color:null,description:null,id:null,name:n}))}}async getComponentsForJiraProject(e,t={}){return await xe(this.config,e,t)}};var T="https://api.trello.com",Ls=1e3,Ds=r=>({id:r.id,username:r.username,url:r.url,name:r.fullName,email:r.email,avatarUrl:r.avatarUrl}),$s=(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}))}},se=class extends U{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:h(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:h(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:h(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:Ds(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:h(e.token||this.config.token)})).body.map(i=>({id:i.id,name:i.fullName,username:i.username,email:null,avatarUrl:null,url:null}))}}async getIssuesForBoard(s,e={}){let t=["-is:archived","sort:edited"],{appKey:n,boardId:o,filterText:i,assigneeLogins:a,labelNamesOrColors:u,trelloBoardListsById:l}=s||{};a&&t.push("@me"),u&&u.forEach(c=>t.push(`label:"${c}"`));let p=`${i?`${i}`:""}${t.join(" ")} board:${o}`;return{data:(await this.config.request({url:`${e.baseUrl||T}/1/search?key=${n}&query=${p}&cards_limit=${Ls}&token=${e.token||this.config.token}&card_members=true`,headers:h(e.token||this.config.token)})).body.cards.map(c=>$s(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:h(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 i=`idList=${o.id}`;if(!(await this.updateIssue(t,n,i,e)).body.id)throw new Error("Could not set issue status")}async setIssueAssignees(s,e={}){let{appKey:t,issue:n,assignees:o}=s,i=o.map(l=>l.id),a=`idMembers=${encodeURIComponent(i.join(","))}`;if(!(await this.updateIssue(t,n,a,e)).body.id)throw new Error("Could not set issue status")}async setIssueLabels(s,e={}){let{appKey:t,issue:n,labels:o}=s,i=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(i)}`,headers:h(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:h(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:h(e.token||this.config.token)})).body.map(i=>({color:i.color,description:null,id:i.id,name:i.name}))}}};var bt=100,ke=class{constructor(){this.set=new Set;this.arr=[]}push(...s){let e=s.filter(t=>!this.set.has(t.id));this.arr.push(...e),e.forEach(t=>this.set.add(t.id))}get length(){return this.arr.length}get items(){return this.arr}},_=async(r,s,e,t)=>{let n=s.token||r.token;if(!n)throw new Error("Linear API key is required");let o=await r.request({url:"https://api.linear.app/graphql",method:"POST",headers:{Authorization:n,"Content-Type":"application/json"},body:JSON.stringify({query:e,variables:t})});if(o.status>=400)throw new Error(`Linear API request failed: ${o.status} ${o.statusText}`);let i=o.body;if(i.errors)throw new Error(`Linear GraphQL errors: ${i.errors.map(a=>a.message).join(", ")}`);return i.data},It=r=>r?r instanceof Date?r:new Date(r):null,Us=`
1167
1223
  id
1168
1224
  name
1169
1225
  description
@@ -1171,11 +1227,11 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1171
1227
  startDate
1172
1228
  targetDate
1173
1229
  url
1174
- `,Ht=r=>({id:r.id,name:r.name,description:r.description??null,state:r.state,startDate:ft(r.startDate),targetDate:ft(r.targetDate),url:r.url}),Jt=async(r,s,e)=>{let t=`
1230
+ `,Vt=r=>({id:r.id,name:r.name,description:r.description??null,state:r.state,startDate:It(r.startDate),targetDate:It(r.targetDate),url:r.url}),Kt=async(r,s,e)=>{let t=`
1175
1231
  query GetProjects($first: Int!, $after: String) {
1176
1232
  projects(first: $first, after: $after) {
1177
1233
  nodes {
1178
- ${$s}
1234
+ ${Us}
1179
1235
  }
1180
1236
  pageInfo {
1181
1237
  hasNextPage
@@ -1183,7 +1239,7 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1183
1239
  }
1184
1240
  }
1185
1241
  }
1186
- `;return(await _(r,s,t,{first:Rt,after:e})).projects},Us=`
1242
+ `;return(await _(r,s,t,{first:bt,after:e})).projects},As=`
1187
1243
  id
1188
1244
  name
1189
1245
  number
@@ -1191,11 +1247,11 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1191
1247
  startsAt
1192
1248
  endsAt
1193
1249
  completedAt
1194
- `,Vt=r=>({id:r.id,name:r.name??`Cycle ${r.number}`,number:r.number,description:r.description??null,startsAt:new Date(r.startsAt),endsAt:new Date(r.endsAt),completedAt:ft(r.completedAt),url:""}),Kt=async(r,s,e)=>{let t=`
1250
+ `,Xt=r=>({id:r.id,name:r.name??`Cycle ${r.number}`,number:r.number,description:r.description??null,startsAt:new Date(r.startsAt),endsAt:new Date(r.endsAt),completedAt:It(r.completedAt),url:""}),Zt=async(r,s,e)=>{let t=`
1195
1251
  query GetCycles($first: Int!, $after: String) {
1196
1252
  cycles(first: $first, after: $after) {
1197
1253
  nodes {
1198
- ${Us}
1254
+ ${As}
1199
1255
  }
1200
1256
  pageInfo {
1201
1257
  hasNextPage
@@ -1203,16 +1259,16 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1203
1259
  }
1204
1260
  }
1205
1261
  }
1206
- `;return(await _(r,s,t,{first:Rt,after:e})).cycles},As=`
1262
+ `;return(await _(r,s,t,{first:bt,after:e})).cycles},Gs=`
1207
1263
  id
1208
1264
  name
1209
1265
  color
1210
1266
  description
1211
- `,Xt=r=>({id:r.id,name:r.name,color:r.color,description:r.description??null}),Zt=async(r,s,e)=>{let t=`
1267
+ `,Yt=r=>({id:r.id,name:r.name,color:r.color,description:r.description??null}),er=async(r,s,e)=>{let t=`
1212
1268
  query GetLabels($first: Int!, $after: String) {
1213
1269
  projectLabels(first: $first, after: $after) {
1214
1270
  nodes {
1215
- ${As}
1271
+ ${Gs}
1216
1272
  }
1217
1273
  pageInfo {
1218
1274
  hasNextPage
@@ -1220,36 +1276,36 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1220
1276
  }
1221
1277
  }
1222
1278
  }
1223
- `;return(await _(r,s,t,{first:Rt,after:e})).projectLabels};var ie=(a=>(a[a.None=0]="None",a[a.Assignee=1]="Assignee",a[a.Creator=2]="Creator",a[a.Mention=3]="Mention",a[a.MentionInDescription=4]="MentionInDescription",a[a.MentionInComments=5]="MentionInComments",a))(ie||{});function Yt(r,s){return r?`${ie[r]}:${s||""}`:s??null}function er(r){if(!r)return{category:0};let[s,e]=r.split(":");return s in ie?{category:ie[s],cursor:e||void 0}:{category:0,cursor:r}}var tr=100;function ke(r){return r?r instanceof Date?r:new Date(r):null}var nr=`
1279
+ `;return(await _(r,s,t,{first:bt,after:e})).projectLabels};var ue=(i=>(i[i.None=0]="None",i[i.Assignee=1]="Assignee",i[i.Creator=2]="Creator",i[i.Mention=3]="Mention",i[i.MentionInDescription=4]="MentionInDescription",i[i.MentionInComments=5]="MentionInComments",i))(ue||{});function tr(r,s){return r?`${ue[r]}:${s||""}`:s??null}function rr(r){if(!r)return{category:0};let[s,e]=r.split(":");return s in ue?{category:ue[s],cursor:e||void 0}:{category:0,cursor:r}}var sr=100;function _e(r){return r?r instanceof Date?r:new Date(r):null}var ir=`
1224
1280
  id
1225
1281
  name
1226
1282
  key
1227
1283
  icon
1228
- `;function Gs(r){return{id:r.id,name:r.name,key:r.key,iconUrl:r.icon}}var rr=`
1284
+ `;function Ts(r){return{id:r.id,name:r.name,key:r.key,iconUrl:r.icon}}var nr=`
1229
1285
  id
1230
1286
  name
1231
1287
  avatarUrl
1232
- `;function sr(r){return r?{id:r.id,name:r.name,username:r.name,email:null,avatarUrl:r.avatarUrl??null,url:null}:null}var Ts=`
1288
+ `;function or(r){return r?{id:r.id,name:r.name,username:r.name,email:null,avatarUrl:r.avatarUrl??null,url:null}:null}var Os=`
1233
1289
  id
1234
1290
  name
1235
- `;function Os(r,s){if(r)return{id:r.id,name:r.name,key:s?.key||null,namespace:null,resourceId:s?.id||null}}var xs=`
1291
+ `;function xs(r,s){if(r)return{id:r.id,name:r.name,key:s?.key||null,namespace:null,resourceId:s?.id||null}}var ks=`
1236
1292
  id
1237
1293
  sortOrder
1238
1294
  name
1239
1295
  description
1240
1296
  status
1241
1297
  targetDate
1242
- `;function ks(r){return r?{id:r.id,number:r.sortOrder,title:r.name,description:r.description??null,isOpen:r.status!=="done",url:"",startDate:null,dueDate:ke(r.targetDate)}:null}function Ns(r){switch(r){case"completed":case"canceled":return"DONE";case"started":return"IN_PROGRESS";default:return"TO_DO"}}var _s=`
1298
+ `;function Ns(r){return r?{id:r.id,number:r.sortOrder,title:r.name,description:r.description??null,isOpen:r.status!=="done",url:"",startDate:null,dueDate:_e(r.targetDate)}:null}function _s(r){switch(r){case"completed":case"canceled":return"DONE";case"started":return"IN_PROGRESS";default:return"TO_DO"}}var Fs=`
1243
1299
  id
1244
1300
  name
1245
1301
  color
1246
1302
  type
1247
- `;function Fs(r){return r?{id:r.id,name:r.name,color:r.color,category:Ns(r.type)}:null}var bt=`
1303
+ `;function Qs(r){return r?{id:r.id,name:r.name,color:r.color,category:_s(r.type)}:null}var Pt=`
1248
1304
  creator {
1249
- ${rr}
1305
+ ${nr}
1250
1306
  }
1251
1307
  assignee {
1252
- ${rr}
1308
+ ${nr}
1253
1309
  }
1254
1310
  archivedAt
1255
1311
  createdAt
@@ -1257,32 +1313,32 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1257
1313
  id
1258
1314
  identifier
1259
1315
  project {
1260
- ${Ts}
1316
+ ${Os}
1261
1317
  }
1262
1318
  team {
1263
- ${nr}
1319
+ ${ir}
1264
1320
  }
1265
1321
  state {
1266
- ${_s}
1322
+ ${Fs}
1267
1323
  }
1268
1324
  title
1269
1325
  updatedAt
1270
1326
  url
1271
1327
  projectMilestone {
1272
- ${xs}
1328
+ ${ks}
1273
1329
  }
1274
- `;async function It(r){return{author:sr(await r.creator),assignees:[sr(await r.assignee)].filter(s=>s!=null),commentCount:null,closedDate:ke(r.archivedAt),createdDate:ke(r.createdAt),description:r.description??null,id:r.id,labels:[],number:r.identifier,repository:null,project:Os(await r.project,await r.team),state:Fs(await r.state),title:r.title,type:null,updatedDate:ke(r.updatedAt),upvoteCount:null,url:r.url,milestone:ks(await r.projectMilestone)}}var xe=`
1330
+ `;async function yt(r){return{author:or(await r.creator),assignees:[or(await r.assignee)].filter(s=>s!=null),commentCount:null,closedDate:_e(r.archivedAt),createdDate:_e(r.createdAt),description:r.description??null,id:r.id,labels:[],number:r.identifier,repository:null,project:xs(await r.project,await r.team),state:Qs(await r.state),title:r.title,type:null,updatedDate:_e(r.updatedAt),upvoteCount:null,url:r.url,milestone:Ns(await r.projectMilestone)}}var Ne=`
1275
1331
  nodes {
1276
- ${bt}
1332
+ ${Pt}
1277
1333
  }
1278
1334
  pageInfo {
1279
1335
  hasNextPage
1280
1336
  endCursor
1281
1337
  }
1282
- `,Ne=class extends U{async fetchIssue(s,e){let t=`
1338
+ `,Fe=class extends U{async fetchIssue(s,e){let t=`
1283
1339
  query GetIssue($identifier: String!) {
1284
1340
  issue(id: $identifier) {
1285
- ${bt}
1341
+ ${Pt}
1286
1342
  }
1287
1343
  }
1288
1344
  `;return(await _(this.config,e,t,{identifier:s})).issue}async fetchOrganization(s){let e=`
@@ -1297,7 +1353,7 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1297
1353
  query GetTeams {
1298
1354
  teams {
1299
1355
  nodes {
1300
- ${nr}
1356
+ ${ir}
1301
1357
  }
1302
1358
  }
1303
1359
  }
@@ -1310,11 +1366,11 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1310
1366
  displayName
1311
1367
  }
1312
1368
  }
1313
- `;return(await _(this.config,s,e)).viewer}async getIssue(s,e={}){let t=await this.fetchIssue(s.number,e);return{data:await It(t)}}async getLinearOrganization(s={}){let e=await this.fetchOrganization(s);return{data:{id:e.id,name:e.name,key:e.urlKey,url:`https://linear.app/${e.urlKey}`}}}async getTeamsForCurrentUser(s={}){return{data:(await this.fetchTeams(s)).nodes.map(Gs)}}async getProjects(s={},e={}){let t=await Jt(this.config,e,s.cursor??void 0);return{data:t.nodes.map(Ht),pageInfo:{hasNextPage:t.pageInfo.hasNextPage,endCursor:t.pageInfo.endCursor??null}}}async getCycles(s={},e={}){let t=await Kt(this.config,e,s.cursor??void 0);return{data:t.nodes.map(Vt),pageInfo:{hasNextPage:t.pageInfo.hasNextPage,endCursor:t.pageInfo.endCursor??null}}}async getLabels(s={},e={}){let t=await Zt(this.config,e,s.cursor??void 0);return{data:t.nodes.map(Xt),pageInfo:{hasNextPage:t.pageInfo.hasNextPage,endCursor:t.pageInfo.endCursor??null}}}async getCurrentUser(s={}){return{data:await this.fetchViewer(s)}}async getIssuesForCurrentUser(s,e={}){let{cursor:t}=s,{category:n,cursor:o}=er(t),a=await this.fetchViewer(e),i,u,l=new Oe,p=async(d,c)=>{if(u||n>d)return;let g=await c(Math.max(tr-l.length,1),n===d?o:void 0);if(!g)return;let m=await je(g.nodes.map(It));l.push(...m),g.pageInfo.hasNextPage&&(i=d,u=g.pageInfo.endCursor)};return await p(1,async(d,c)=>(await this.rawRequest(e,`
1369
+ `;return(await _(this.config,s,e)).viewer}async getIssue(s,e={}){let t=await this.fetchIssue(s.number,e);return{data:await yt(t)}}async getLinearOrganization(s={}){let e=await this.fetchOrganization(s);return{data:{id:e.id,name:e.name,key:e.urlKey,url:`https://linear.app/${e.urlKey}`}}}async getTeamsForCurrentUser(s={}){return{data:(await this.fetchTeams(s)).nodes.map(Ts)}}async getProjects(s={},e={}){let t=await Kt(this.config,e,s.cursor??void 0);return{data:t.nodes.map(Vt),pageInfo:{hasNextPage:t.pageInfo.hasNextPage,endCursor:t.pageInfo.endCursor??null}}}async getCycles(s={},e={}){let t=await Zt(this.config,e,s.cursor??void 0);return{data:t.nodes.map(Xt),pageInfo:{hasNextPage:t.pageInfo.hasNextPage,endCursor:t.pageInfo.endCursor??null}}}async getLabels(s={},e={}){let t=await er(this.config,e,s.cursor??void 0);return{data:t.nodes.map(Yt),pageInfo:{hasNextPage:t.pageInfo.hasNextPage,endCursor:t.pageInfo.endCursor??null}}}async getCurrentUser(s={}){return{data:await this.fetchViewer(s)}}async getIssuesForCurrentUser(s,e={}){let{cursor:t}=s,{category:n,cursor:o}=rr(t),i=await this.fetchViewer(e),a,u,l=new ke,p=async(d,c)=>{if(u||n>d)return;let g=await c(Math.max(sr-l.length,1),n===d?o:void 0);if(!g)return;let m=await ze(g.nodes.map(yt));l.push(...m),g.pageInfo.hasNextPage&&(a=d,u=g.pageInfo.endCursor)};return await p(1,async(d,c)=>(await this.rawRequest(e,`
1314
1370
  query GetAssignedIssues($first: Int!, $after: String) {
1315
1371
  viewer {
1316
1372
  issues: assignedIssues(first: $first, after: $after) {
1317
- ${xe}
1373
+ ${Ne}
1318
1374
  }
1319
1375
  }
1320
1376
  }
@@ -1322,7 +1378,7 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1322
1378
  query GetCreatedIssues($first: Int!, $after: String) {
1323
1379
  viewer {
1324
1380
  issues: createdIssues(first: $first, after: $after) {
1325
- ${xe}
1381
+ ${Ne}
1326
1382
  }
1327
1383
  }
1328
1384
  }
@@ -1334,20 +1390,20 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1334
1390
  filter: {
1335
1391
  or: [{
1336
1392
  searchableContent: {
1337
- contains: "${a.displayName}"
1393
+ contains: "${i.displayName}"
1338
1394
  }
1339
1395
  },{
1340
1396
  searchableContent: {
1341
- contains: "${a.email}"
1397
+ contains: "${i.email}"
1342
1398
  }
1343
1399
  },{
1344
1400
  searchableContent: {
1345
- contains: "${a.name}"
1401
+ contains: "${i.name}"
1346
1402
  }
1347
1403
  }]
1348
1404
  }
1349
1405
  ){
1350
- ${xe}
1406
+ ${Ne}
1351
1407
  }
1352
1408
  }
1353
1409
  `,{first:d,after:c})).data?.issues),await p(5,async(d,c)=>{let m=(await this.rawRequest(e,`
@@ -1358,22 +1414,22 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1358
1414
  filter: {
1359
1415
  or: [{
1360
1416
  body: {
1361
- contains: "${a.displayName}"
1417
+ contains: "${i.displayName}"
1362
1418
  }
1363
1419
  },{
1364
1420
  body: {
1365
- contains: "${a.email}"
1421
+ contains: "${i.email}"
1366
1422
  }
1367
1423
  },{
1368
1424
  body: {
1369
- contains: "${a.name}"
1425
+ contains: "${i.name}"
1370
1426
  }
1371
1427
  }]
1372
1428
  }
1373
1429
  ){
1374
1430
  nodes {
1375
1431
  issue {
1376
- ${bt}
1432
+ ${Pt}
1377
1433
  }
1378
1434
  }
1379
1435
  pageInfo {
@@ -1382,10 +1438,10 @@ OR comment ~ currentUser() OR summary ~ currentUser() OR description ~ currentUs
1382
1438
  }
1383
1439
  }
1384
1440
  }
1385
- `,{first:d,after:c})).data?.comments;return m?{nodes:m.nodes.map(I=>I.issue),pageInfo:m.pageInfo}:void 0}),{data:l.items,pageInfo:{hasNextPage:!!u,endCursor:Yt(i,u)}}}async getIssues(s,e={}){let{teams:t,projects:n,labels:o,cursor:a}=s,i=[];if(t&&t.length>0){let g=t.map(m=>`"${m}"`).join(", ");i.push(`team: { id: { in: [${g}] } }`)}if(n&&n.length>0){let g=n.map(m=>`"${m}"`).join(", ");i.push(`project: { id: { in: [${g}] } }`)}if(o&&o.length>0){let g=o.map(m=>`"${m}"`).join(", ");i.push(`labels: { name: { in: [${g}] } }`)}let u=i.length>0?`filter: { ${i.join(", ")} }`:"",l=`
1441
+ `,{first:d,after:c})).data?.comments;return m?{nodes:m.nodes.map(I=>I.issue),pageInfo:m.pageInfo}:void 0}),{data:l.items,pageInfo:{hasNextPage:!!u,endCursor:tr(a,u)}}}async getIssues(s,e={}){let{teams:t,projects:n,labels:o,cursor:i}=s,a=[];if(t&&t.length>0){let g=t.map(m=>`"${m}"`).join(", ");a.push(`team: { id: { in: [${g}] } }`)}if(n&&n.length>0){let g=n.map(m=>`"${m}"`).join(", ");a.push(`project: { id: { in: [${g}] } }`)}if(o&&o.length>0){let g=o.map(m=>`"${m}"`).join(", ");a.push(`labels: { name: { in: [${g}] } }`)}let u=a.length>0?`filter: { ${a.join(", ")} }`:"",l=`
1386
1442
  query GetIssues($first: Int!, $after: String) {
1387
1443
  issues(first: $first, after: $after${u?", ":""}${u}) {
1388
- ${xe}
1444
+ ${Ne}
1389
1445
  }
1390
1446
  }
1391
- `,d=(await this.rawRequest(e,l,{first:tr,after:a})).data?.issues;return d?{data:await je(d.nodes.map(It)),pageInfo:{hasNextPage:d.pageInfo.hasNextPage,endCursor:d.pageInfo.endCursor??null}}:{data:[],pageInfo:{hasNextPage:!1,endCursor:null}}}};var or=r=>{let s={request:r?.request};return{azureDevOps:new H({...s,...r?.azureDevOps}),bitbucket:new J({...s,...r?.bitbucket}),bitbucketServer:new V({...s,...r?.bitbucketServer}),github:new X({...s,...r?.github}),gitlab:new Y({...s,...r?.gitlab}),jira:new ee({...s,...r?.jira}),jiraServer:new te({...s,...r?.jiraServer}),linear:new Ne({...s,...r?.linear}),trello:new re({...s,...r?.trello})}};var ar=(a=>(a.Conflicts="conflicts",a.Failure="failure",a.NotSet="notSet",a.Queued="queued",a.RejectedByPolicy="rejectedByPolicy",a.Succeeded="succeeded",a))(ar||{});var ir=(e=>(e.Zero="0",e.One="1",e))(ir||{}),ur=(e=>(e.PullRequest="pr",e.Issue="issue",e))(ur||{}),lr=(c=>(c.Azure="azure",c.AzureDevOpsServer="azureDevOpsServer",c.Github="github",c.GithubEnterprise="githubEnterprise",c.Gitlab="gitlab",c.GitlabSelfHosted="gitlabSelfHosted",c.Bitbucket="bitbucket",c.BitbucketServer="bitbucketServer",c.Jira="jira",c.JiraServer="jiraServer",c.Linear="linear",c.Trello="trello",c))(lr||{});var pr=(e=>(e.Completed="COMPLETED",e.NotPlanned="NOT_PLANNED",e))(pr||{});var Qs=or;
1447
+ `,d=(await this.rawRequest(e,l,{first:sr,after:i})).data?.issues;return d?{data:await ze(d.nodes.map(yt)),pageInfo:{hasNextPage:d.pageInfo.hasNextPage,endCursor:d.pageInfo.endCursor??null}}:{data:[],pageInfo:{hasNextPage:!1,endCursor:null}}}};var ar=r=>{let s={request:r?.request};return{azureDevOps:new J({...s,...r?.azureDevOps}),bitbucket:new V({...s,...r?.bitbucket}),bitbucketServer:new K({...s,...r?.bitbucketServer}),github:new Z({...s,...r?.github}),gitlab:new ee({...s,...r?.gitlab}),jira:new te({...s,...r?.jira}),jiraServer:new re({...s,...r?.jiraServer}),linear:new Fe({...s,...r?.linear}),trello:new se({...s,...r?.trello})}};var ur=(i=>(i.Conflicts="conflicts",i.Failure="failure",i.NotSet="notSet",i.Queued="queued",i.RejectedByPolicy="rejectedByPolicy",i.Succeeded="succeeded",i))(ur||{});var lr=(e=>(e.Zero="0",e.One="1",e))(lr||{}),pr=(e=>(e.PullRequest="pr",e.Issue="issue",e))(pr||{}),dr=(c=>(c.Azure="azure",c.AzureDevOpsServer="azureDevOpsServer",c.Github="github",c.GithubEnterprise="githubEnterprise",c.Gitlab="gitlab",c.GitlabSelfHosted="gitlabSelfHosted",c.Bitbucket="bitbucket",c.BitbucketServer="bitbucketServer",c.Jira="jira",c.JiraServer="jiraServer",c.Linear="linear",c.Trello="trello",c))(dr||{});var cr=(e=>(e.Completed="COMPLETED",e.NotPlanned="NOT_PLANNED",e))(cr||{});var js=ar;