@gitkraken/provider-apis 0.6.2 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
"use strict";var Pe=Object.create;var Q=Object.defineProperty;var ve=Object.getOwnPropertyDescriptor;var Se=Object.getOwnPropertyNames;var we=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Ue=(e,t)=>{for(var r in t)Q(e,r,{get:t[r],enumerable:!0})},ne=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Se(t))!Ce.call(e,n)&&n!==r&&Q(e,n,{get:()=>t[n],enumerable:!(s=ve(t,n))||s.enumerable});return e};var De=(e,t,r)=>(r=e!=null?Pe(we(e)):{},ne(t||!e||!e.__esModule?Q(r,"default",{value:e,enumerable:!0}):r,e)),$e=e=>ne(Q({},"__esModule",{value:!0}),e);var at={};Ue(at,{AzureDevOps:()=>O,Bitbucket:()=>k,GitHub:()=>j,GitLab:()=>N,default:()=>nt});module.exports=$e(at);var ae=De(require("node-fetch")),oe=globalThis.fetch||ae.default;var ie=e=>e.name==="fetch";var Le=async e=>{let t=e.headers.get("content-type")||"",r=null;if(t.startsWith("application/json"))r=await e.json();else if(t.startsWith("text/"))r=await e.text();else throw new Error(`Unsupported content-type: ${t}`);let s={body:r,headers:Object.fromEntries(e.headers.entries()),status:e.status,statusText:e.statusText};if(!e.ok){let n=new Error(e.statusText);throw Object.assign(n,{response:s}),n}return s},W=e=>ie(e)?async({url:t,...r})=>{let s=await e(t,r);return Le(s)}:e;var S=class{constructor(t){this.config={...t,request:W((t==null?void 0:t.request)||oe)}}updateConfig(t){this.config={...this.config,...t,request:t.request?W(t.request):this.config.request}}};var G=class extends S{},z=class extends G{},$=100;var y=(e,t)=>{let r={};return e&&(r.Authorization=`${t?"Basic":"Bearer"} ${e}`),r};var w=(e,t={})=>y(t.token||e.token,t.isPAT||e.isPAT);var Ae="https://app.vssps.visualstudio.com/_apis",A="https://dev.azure.com",Ee={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},Ge={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},X=e=>({id:e.id,name:e.displayName,username:e.uniqueName||e.displayName,email:null,avatarUrl:e.imageUrl}),M=e=>e.startsWith("refs/heads/")?e.replace("refs/heads/",""):e,ue=e=>({id:e.pullRequestId.toString(),title:e.title,number:e.codeReviewId,state:Ee[e.status],isDraft:e.isDraft,commentCount:null,upvoteCount:null,author:X(e.createdBy),createdDate:new Date(e.creationDate),updatedDate:new Date(e.closedDate||e.creationDate),closedDate:e.closedDate?new Date(e.closedDate):null,repository:{name:e.repository.name,owner:{login:void 0}},headCommit:{buildStatus:null},baseRef:{name:M(e.targetRefName)},headRef:{name:M(e.sourceRefName)},url:null,assignees:e.reviewers.map(X),reviews:e.reviewers.filter(t=>t.vote!==0).map(t=>({reviewer:X(t),state:Ge[t.vote]||"REVIEW_REQUESTED"})),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null}),le=(e,t)=>({id:t.id,name:t.name,namespace:e,project:t.project.name,webUrl:t.webUrl,httpsUrl:t.remoteUrl,sshUrl:t.sshUrl,defaultBranch:t.defaultBranch?{name:M(t.defaultBranch)}:null,permission:null}),Te=e=>{let t=e.fields,r=t["System.AssignedTo"];return{id:e.id.toString(),number:e.id.toString(),title:t["System.Title"],commentCount:t["System.CommentCount"],author:{avatarUrl:t["System.CreatedBy"]._links.avatar.href,email:null,id:t["System.CreatedBy"].id,name:t["System.CreatedBy"].uniqueName,username:t["System.CreatedBy"].displayName},createdDate:new Date(t["System.CreatedDate"]),updatedDate:new Date(t["System.ChangedDate"]),url:e._links.html.href,assignees:r?[{avatarUrl:r._links.avatar.href,email:null,id:r.id,name:r.uniqueName,username:r.displayName}]:[],description:null,state:null,repository:null,upvoteCount:0}},O=class extends G{async getCurrentUser(t={}){if(t.isPAT||this.config.isPAT)throw new Error("Azure DevOps does not support PATs for this function.");let r=await this.config.request({url:`${Ae}/profile/profiles/me`,headers:w(this.config,t)});return{data:{id:r.body.id,name:r.body.displayName,username:r.body.displayName,email:r.body.emailAddress,avatarUrl:null}}}async getCurrentUserForInstance(t,r={}){let n=(await this.config.request({url:`${A}/${encodeURIComponent(t.namespace)}/_apis/ConnectionData`,headers:w(this.config,r)})).body.authorizedUser;if(n.providerDisplayName==="Anonymous")throw new Error("Current user not found.");return{data:{id:n.id,name:n.providerDisplayName,username:n.providerDisplayName,email:n.properties.Account.$value,avatarUrl:null}}}async getUserForCommit(t,r={}){if(!t.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=(await this.config.request({url:`${A}/${encodeURIComponent(t.repo.namespace)}/${encodeURIComponent(t.repo.project)}/_apis/git/repositories/${encodeURIComponent(t.repo.name)}/commits/${t.oid}`,headers:w(this.config,r)})).body.author;return{data:{name:n.name,email:n.email,avatarUrl:n.imageUrl}}}async getRepo(t,r={}){if(!t.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let s=await this.config.request({url:`${A}/${encodeURIComponent(t.namespace)}/${encodeURIComponent(t.project)}/_apis/git/repositories/${encodeURIComponent(t.name)}`,headers:w(this.config,r)});return{data:le(t.namespace,s.body)}}async getRepos(t,r={}){return{data:(await Promise.all(t.map(n=>this.getRepo(n,r)))).map(n=>n.data)}}async getReposForAzureProject(t,r={}){if(!t.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');return{data:(await this.config.request({url:`${A}/${encodeURIComponent(t.namespace)}/${encodeURIComponent(t.project)}/_apis/git/repositories`,headers:w(this.config,r)})).body.value.map(n=>le(t.namespace,n))}}async getRefs(t,r,s={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=new URL(`${A}/${encodeURIComponent(r.repo.namespace)}/${encodeURIComponent(r.repo.project)}/_apis/git/repositories/${encodeURIComponent(r.repo.name)}/refs`);n.searchParams.set("filter",t),n.searchParams.set("$top",$.toString()),r.cursor&&n.searchParams.set("continuationToken",r.cursor);let o=await this.config.request({url:n.toString(),headers:w(this.config,s)}),a=o.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!a,endCursor:a||null},data:o.body.value.map(i=>({name:M(i.name),commit:{oid:i.objectId,authoredDate:null,committedDate:null}}))}}async getBranches(t,r={}){return this.getRefs("heads",t,r)}async getTags(t,r={}){return this.getRefs("tags",t,r)}async getPullRequestsForRepoBase(t,r={},s=100){let{page:n,repo:o,assigneeLogins:a,authorLogin:i}=t||{},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:`${r.baseUrl||A}/${encodeURIComponent(o.namespace)}/${encodeURIComponent(o.project||"")}/_apis/git/repositories/${encodeURIComponent(o.name)}/pullRequests?${l}&%24top=${s}&%24skip=${(u-1)*s}`,headers:w(this.config,r)})}async getPullRequestsForRepo(t,r={}){let n=t.page||1,o=await this.getPullRequestsForRepoBase(t,r,100);return{pageInfo:{hasNextPage:o.body.value.length===100,nextPage:n+1},data:o.body.value.map(ue)}}async getPullRequestsForRepos(t,r={}){if(!t.repos.every(o=>o.project))throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repos:s}=t||{},n=[];return await Promise.all(s.map(async o=>{try{(await this.getPullRequestsForRepoBase({repo:o,...t},r)).body.value.forEach(i=>{n.push(ue(i))})}catch(a){if(a.statusCode!==404&&a.statusCode!==401)throw a}})),{data:n}}async getIssuesForAzureProject(t,r={}){let{page:s,assigneeLogins:n,authorLogin:o,mentionLogin:a}=t||{},i=s||1,u=200,l=["[Microsoft.VSTS.Common.ClosedDate] = ''","[System.TeamProject] = @project","[Microsoft.VSTS.Common.ResolvedDate] = ''"];o&&l.push(`[System.CreatedBy] = '${o.replace("'","''")}'`),n&&n[0]&&l.push(`[System.AssignedTo] = '${n[0].replace("'","''")}'`),a&&l.push("[System.Id] IN (@recentMentions)");let d=`Select [Microsoft.VSTS.Common.ClosedDate], [Microsoft.VSTS.Common.ResolvedDate] From WorkItems Where ${l.join(" AND ")} order by [System.CreatedDate] desc`,m=await this.config.request({url:`${r.baseUrl||A}/${encodeURIComponent(t.namespace)}/${encodeURIComponent(t.project)}/_apis/wit/wiql?api-version=6.0`,body:JSON.stringify({query:d}),method:"POST",headers:{...w(this.config,r),"Content-Type":"application/json"}}),c=m.body.workItems.slice((i-1)*u,u*i).map(g=>g.id),p=await this.config.request({url:`${r.baseUrl||A}/${encodeURIComponent(t.namespace)}/${encodeURIComponent(t.project)}/_apis/wit/workitemsbatch?api-version=6.0`,body:JSON.stringify({ids:c,$expand:"Links"}),method:"POST",headers:{...w(this.config,r),"Content-Type":"application/json"}});return{pageInfo:{hasNextPage:m.body.workItems.length>u*i,nextPage:i+1},data:p.body.value.map(Te)}}};var T=(e,t={})=>y(t.token||e.token,t.isPAT||e.isPAT);var q="https://api.bitbucket.org/2.0",xe={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},me=e=>({id:e.uuid,name:e.display_name||e.nickname,username:e.nickname||e.display_name,email:null,avatarUrl:e.links.avatar.href}),pe=e=>{let t=e.id;return{id:t.toString(),title:e.title,number:t,state:xe[e.state],isDraft:!1,commentCount:e.comment_count,upvoteCount:null,author:me(e.author),createdDate:new Date(e.created_on),updatedDate:new Date(e.updated_on),closedDate:null,repository:{name:e.source.repository.name,owner:{login:void 0}},headCommit:{buildStatus:null},baseRef:{name:e.destination.branch.name},headRef:{name:e.source.branch.name},url:e.links.html.href,assignees:null,reviews:null,additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null}},k=class extends G{async refreshToken(t){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 ${t.base64ClientIDColonClientSecret}`},body:`grant_type=refresh_token&refresh_token=${t.refreshToken}`})).body}}async getCurrentUser(t={}){let r=await this.config.request({url:`${q}/user`,headers:T(this.config,t)});return{data:me(r.body)}}async getUserForCommit(t,r={}){var a;let n=(await this.config.request({url:`${q}/repositories/${t.repo.namespace}/${t.repo.name}/commit/${t.oid}`,headers:T(this.config,r)})).body.author,o=n.raw.match(/([^<]+)<(.+)>/);return{data:{name:o?o[1].trim():null,email:o?o[2]:null,avatarUrl:((a=n.user)==null?void 0:a.links.avatar.href)||null}}}async getRepo(t,r={}){var n,o;let s=await this.config.request({url:`${q}/repositories/${t.namespace}/${t.name}`,headers:T(this.config,r)});return{data:{id:s.body.uuid,namespace:s.body.workspace.slug,name:s.body.slug,webUrl:s.body.links.html.href,httpsUrl:((n=s.body.links.clone.find(a=>a.name==="https"))==null?void 0:n.href)??null,sshUrl:((o=s.body.links.clone.find(a=>a.name==="ssh"))==null?void 0:o.href)??null,defaultBranch:{name:s.body.mainbranch.name},permission:null}}}async getRepos(t,r={}){return{data:(await Promise.all(t.map(n=>this.getRepo(n,r)))).map(n=>n.data)}}async getBranches(t,r={}){var a;let s=new URL(`${q}/repositories/${t.repo.namespace}/${t.repo.name}/refs/branches`);s.searchParams.set("page",((a=t.page)==null?void 0:a.toString())||"1"),s.searchParams.set("pagelen",$.toString());let n=await this.config.request({url:s.toString(),headers:T(this.config,r)}),o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:n.body.values.map(i=>{let u=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:u,committedDate:u}}})}}async getTags(t,r={}){let s=new URL(`${q}/repositories/${t.repo.namespace}/${t.repo.name}/refs/tags`);s.searchParams.set("pagelen",$.toString()),t.cursor&&s.searchParams.set("page",t.cursor);let n=await this.config.request({url:s.toString(),headers:T(this.config,r)}),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 getPullRequestsForRepoBase(t,r={}){var n;let s=new URL(`${r.baseUrl||q}/repositories/${encodeURI(t.repo.namespace)}/${encodeURI(t.repo.name)}/pullrequests?state=OPEN`);return s.searchParams.set("page",((n=t.page)==null?void 0:n.toString())||"1"),s.searchParams.set("pagelen","50"),await this.config.request({url:s.toString(),headers:T(this.config,r)})}async getPullRequestsForRepo(t,r={}){let s=[],n=await this.getPullRequestsForRepoBase(t,r);n.body.values.forEach(a=>{if(t.authorLogin&&a.author.uuid!==t.authorLogin)return null;s.push(pe(a))});let o=!!n.body.next;return{pageInfo:{hasNextPage:o,nextPage:o?n.body.page+1:null},data:s}}async getPullRequestsForRepos(t,r={}){let s=[];return await Promise.all(t.repos.map(async n=>{try{(await this.getPullRequestsForRepoBase({repo:n,...t},r)).body.values.forEach(a=>{if(t.authorLogin&&a.author.uuid!==t.authorLogin)return null;s.push(pe(a))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:s}}};var Z="https://api.github.com",qe=`${Z}/graphql`,_e=/\/api\/v3\/?$/,Be=e=>e?e.replace(_e,"/api/graphql"):qe,P=(e,t,r)=>{let s=y(r.token||e.token);return s["X-Github-Next-Global-ID"]="1",s["Content-Type"]="application/json",e.request({url:Be(r.baseUrl||e.baseUrl),method:"POST",headers:s,body:JSON.stringify(t)})},Oe={user:!0,"user:email":!0,"read:user":!0},_=e=>e.some(t=>Oe[t]),C=(e=!1,t=!1)=>`
|
|
1
|
+
"use strict";var Ce=Object.create;var Q=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var ve=Object.getOwnPropertyNames;var we=Object.getPrototypeOf,Ue=Object.prototype.hasOwnProperty;var De=(e,t)=>{for(var r in t)Q(e,r,{get:t[r],enumerable:!0})},oe=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ve(t))!Ue.call(e,s)&&s!==r&&Q(e,s,{get:()=>t[s],enumerable:!(n=Se(t,s))||n.enumerable});return e};var Ee=(e,t,r)=>(r=e!=null?Ce(we(e)):{},oe(t||!e||!e.__esModule?Q(r,"default",{value:e,enumerable:!0}):r,e)),$e=e=>oe(Q({},"__esModule",{value:!0}),e);var ut={};De(ut,{AzureDevOps:()=>k,Bitbucket:()=>O,GitHub:()=>j,GitLab:()=>F,default:()=>it});module.exports=$e(ut);var ae=Ee(require("node-fetch")),ie=globalThis.fetch||ae.default;var ue=e=>e.name==="fetch";var Ae=async e=>{let t=e.headers.get("content-type")||"",r=null;if(t.startsWith("application/json"))r=await e.json();else if(t.startsWith("text/"))r=await e.text();else throw new Error(`Unsupported content-type: ${t}`);let n={body:r,headers:Object.fromEntries(e.headers.entries()),status:e.status,statusText:e.statusText};if(!e.ok){let s=new Error(e.statusText);throw Object.assign(s,{response:n}),s}return n},V=e=>ue(e)?async({url:t,...r})=>{let n=await e(t,r);return Ae(n)}:e;var S=class{constructor(t){this.config={...t,request:V((t==null?void 0:t.request)||ie)}}updateConfig(t){this.config={...this.config,...t,request:t.request?V(t.request):this.config.request}}};var G=class extends S{},z=class extends G{},E=100;var y=(e,t)=>{let r={};return e&&(r.Authorization=`${t?"Basic":"Bearer"} ${e}`),r};var v=(e,t={})=>y(t.token||e.token,t.isPAT||e.isPAT);var Le="https://app.vssps.visualstudio.com/_apis",A="https://dev.azure.com",Ge={active:"OPEN",completed:"MERGED",abandoned:"CLOSED"},Te={10:"APPROVED",5:"APPROVED",0:"REVIEW_REQUESTED",[-5]:"CHANGES_REQUESTED",[-10]:"CHANGES_REQUESTED"},X=e=>({id:e.id,name:e.displayName,username:e.uniqueName||e.displayName,email:null,avatarUrl:e.imageUrl}),M=e=>e.startsWith("refs/heads/")?e.replace("refs/heads/",""):e,le=e=>({id:e.pullRequestId.toString(),title:e.title,number:e.codeReviewId,state:Ge[e.status],isDraft:e.isDraft,commentCount:null,upvoteCount:null,author:X(e.createdBy),createdDate:new Date(e.creationDate),updatedDate:new Date(e.closedDate||e.creationDate),closedDate:e.closedDate?new Date(e.closedDate):null,repository:{name:e.repository.name,owner:{login:void 0}},headCommit:{buildStatus:null},baseRef:{name:M(e.targetRefName)},headRef:{name:M(e.sourceRefName)},url:null,assignees:e.reviewers.map(X),reviews:e.reviewers.filter(t=>t.vote!==0).map(t=>({reviewer:X(t),state:Te[t.vote]||"REVIEW_REQUESTED"})),additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN"}),de=(e,t)=>({id:t.id,name:t.name,namespace:e,project:t.project.name,webUrl:t.webUrl,httpsUrl:t.remoteUrl,sshUrl:t.sshUrl,defaultBranch:t.defaultBranch?{name:M(t.defaultBranch)}:null,permission:null}),_e=e=>{let t=e.fields,r=t["System.AssignedTo"];return{id:e.id.toString(),number:e.id.toString(),title:t["System.Title"],commentCount:t["System.CommentCount"],author:{avatarUrl:t["System.CreatedBy"]._links.avatar.href,email:null,id:t["System.CreatedBy"].id,name:t["System.CreatedBy"].uniqueName,username:t["System.CreatedBy"].displayName},createdDate:new Date(t["System.CreatedDate"]),updatedDate:new Date(t["System.ChangedDate"]),url:e._links.html.href,assignees:r?[{avatarUrl:r._links.avatar.href,email:null,id:r.id,name:r.uniqueName,username:r.displayName}]:[],description:null,state:null,repository:null,upvoteCount:0}},k=class extends G{async getCurrentUser(t={}){if(t.isPAT||this.config.isPAT)throw new Error("Azure DevOps does not support PATs for this function.");let r=await this.config.request({url:`${Le}/profile/profiles/me`,headers:v(this.config,t)});return{data:{id:r.body.id,name:r.body.displayName,username:r.body.displayName,email:r.body.emailAddress,avatarUrl:null}}}async getCurrentUserForInstance(t,r={}){let s=(await this.config.request({url:`${A}/${encodeURIComponent(t.namespace)}/_apis/ConnectionData`,headers:v(this.config,r)})).body.authorizedUser;if(s.providerDisplayName==="Anonymous")throw new Error("Current user not found.");return{data:{id:s.id,name:s.providerDisplayName,username:s.providerDisplayName,email:s.properties.Account.$value,avatarUrl:null}}}async getUserForCommit(t,r={}){if(!t.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let s=(await this.config.request({url:`${A}/${encodeURIComponent(t.repo.namespace)}/${encodeURIComponent(t.repo.project)}/_apis/git/repositories/${encodeURIComponent(t.repo.name)}/commits/${t.oid}`,headers:v(this.config,r)})).body.author;return{data:{name:s.name,email:s.email,avatarUrl:s.imageUrl}}}async getRepo(t,r={}){if(!t.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let n=await this.config.request({url:`${A}/${encodeURIComponent(t.namespace)}/${encodeURIComponent(t.project)}/_apis/git/repositories/${encodeURIComponent(t.name)}`,headers:v(this.config,r)});return{data:de(t.namespace,n.body)}}async getRepos(t,r={}){return{data:(await Promise.all(t.map(s=>this.getRepo(s,r)))).map(s=>s.data)}}async getReposForAzureProject(t,r={}){if(!t.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');return{data:(await this.config.request({url:`${A}/${encodeURIComponent(t.namespace)}/${encodeURIComponent(t.project)}/_apis/git/repositories`,headers:v(this.config,r)})).body.value.map(s=>de(t.namespace,s))}}async getRefs(t,r,n={}){if(!r.repo.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let s=new URL(`${A}/${encodeURIComponent(r.repo.namespace)}/${encodeURIComponent(r.repo.project)}/_apis/git/repositories/${encodeURIComponent(r.repo.name)}/refs`);s.searchParams.set("filter",t),s.searchParams.set("$top",E.toString()),r.cursor&&s.searchParams.set("continuationToken",r.cursor);let a=await this.config.request({url:s.toString(),headers:v(this.config,n)}),o=a.headers["x-ms-continuationtoken"];return{pageInfo:{hasNextPage:!!o,endCursor:o||null},data:a.body.value.map(i=>({name:M(i.name),commit:{oid:i.objectId,authoredDate:null,committedDate:null}}))}}async getBranches(t,r={}){return this.getRefs("heads",t,r)}async getTags(t,r={}){return this.getRefs("tags",t,r)}async getPullRequestsForRepoBase(t,r={},n=100){let{page:s,repo:a,assigneeLogins:o,authorLogin:i}=t||{},u=s||1;if(!a.project)throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let l="searchCriteria.status=1";return o&&o.length&&(l+=`&searchCriteria.reviewerId=${o[0]}`),i&&(l+=`&searchCriteria.creatorId=${i}`),await this.config.request({url:`${r.baseUrl||A}/${encodeURIComponent(a.namespace)}/${encodeURIComponent(a.project||"")}/_apis/git/repositories/${encodeURIComponent(a.name)}/pullRequests?${l}&%24top=${n}&%24skip=${(u-1)*n}`,headers:v(this.config,r)})}async getPullRequestsForRepo(t,r={}){let s=t.page||1,a=await this.getPullRequestsForRepoBase(t,r,100);return{pageInfo:{hasNextPage:a.body.value.length===100,nextPage:s+1},data:a.body.value.map(le)}}async getPullRequestsForRepos(t,r={}){if(!t.repos.every(a=>a.project))throw new Error('Azure DevOps requires a "project" (name or ID) for this function.');let{repos:n}=t||{},s=[];return await Promise.all(n.map(async a=>{try{(await this.getPullRequestsForRepoBase({repo:a,...t},r)).body.value.forEach(i=>{s.push(le(i))})}catch(o){if(o.statusCode!==404&&o.statusCode!==401)throw o}})),{data:s}}async getIssuesForAzureProject(t,r={}){let{page:n,assigneeLogins:s,authorLogin:a,mentionLogin:o}=t||{},i=n||1,u=200,l=["[Microsoft.VSTS.Common.ClosedDate] = ''","[System.TeamProject] = @project","[Microsoft.VSTS.Common.ResolvedDate] = ''"];a&&l.push(`[System.CreatedBy] = '${a.replace("'","''")}'`),s&&s[0]&&l.push(`[System.AssignedTo] = '${s[0].replace("'","''")}'`),o&&l.push("[System.Id] IN (@recentMentions)");let d=`Select [Microsoft.VSTS.Common.ClosedDate], [Microsoft.VSTS.Common.ResolvedDate] From WorkItems Where ${l.join(" AND ")} order by [System.CreatedDate] desc`,m=await this.config.request({url:`${r.baseUrl||A}/${encodeURIComponent(t.namespace)}/${encodeURIComponent(t.project)}/_apis/wit/wiql?api-version=6.0`,body:JSON.stringify({query:d}),method:"POST",headers:{...v(this.config,r),"Content-Type":"application/json"}}),c=m.body.workItems.slice((i-1)*u,u*i).map(g=>g.id),p=await this.config.request({url:`${r.baseUrl||A}/${encodeURIComponent(t.namespace)}/${encodeURIComponent(t.project)}/_apis/wit/workitemsbatch?api-version=6.0`,body:JSON.stringify({ids:c,$expand:"Links"}),method:"POST",headers:{...v(this.config,r),"Content-Type":"application/json"}});return{pageInfo:{hasNextPage:m.body.workItems.length>u*i,nextPage:i+1},data:p.body.value.map(_e)}}};var T=(e,t={})=>y(t.token||e.token,t.isPAT||e.isPAT);var x="https://api.bitbucket.org/2.0",xe={OPEN:"OPEN",MERGED:"MERGED",DECLINED:"CLOSED"},ce=e=>({id:e.uuid,name:e.display_name||e.nickname,username:e.nickname||e.display_name,email:null,avatarUrl:e.links.avatar.href}),me=e=>{let t=e.id;return{id:t.toString(),title:e.title,number:t,state:xe[e.state],isDraft:!1,commentCount:e.comment_count,upvoteCount:null,author:ce(e.author),createdDate:new Date(e.created_on),updatedDate:new Date(e.updated_on),closedDate:null,repository:{name:e.source.repository.name,owner:{login:void 0}},headCommit:{buildStatus:null},baseRef:{name:e.destination.branch.name},headRef:{name:e.source.branch.name},url:e.links.html.href,assignees:null,reviews:null,additions:null,deletions:null,fileCount:null,commitCount:null,headRepository:null,mergeableState:"UNKNOWN"}},O=class extends G{async refreshToken(t){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 ${t.base64ClientIDColonClientSecret}`},body:`grant_type=refresh_token&refresh_token=${t.refreshToken}`})).body}}async getCurrentUser(t={}){let r=await this.config.request({url:`${x}/user`,headers:T(this.config,t)});return{data:ce(r.body)}}async getUserForCommit(t,r={}){var o;let s=(await this.config.request({url:`${x}/repositories/${t.repo.namespace}/${t.repo.name}/commit/${t.oid}`,headers:T(this.config,r)})).body.author,a=s.raw.match(/([^<]+)<(.+)>/);return{data:{name:a?a[1].trim():null,email:a?a[2]:null,avatarUrl:((o=s.user)==null?void 0:o.links.avatar.href)||null}}}async getRepo(t,r={}){var s,a;let n=await this.config.request({url:`${x}/repositories/${t.namespace}/${t.name}`,headers:T(this.config,r)});return{data:{id:n.body.uuid,namespace:n.body.workspace.slug,name:n.body.slug,webUrl:n.body.links.html.href,httpsUrl:((s=n.body.links.clone.find(o=>o.name==="https"))==null?void 0:s.href)??null,sshUrl:((a=n.body.links.clone.find(o=>o.name==="ssh"))==null?void 0:a.href)??null,defaultBranch:{name:n.body.mainbranch.name},permission:null}}}async getRepos(t,r={}){return{data:(await Promise.all(t.map(s=>this.getRepo(s,r)))).map(s=>s.data)}}async getBranches(t,r={}){var o;let n=new URL(`${x}/repositories/${t.repo.namespace}/${t.repo.name}/refs/branches`);n.searchParams.set("page",((o=t.page)==null?void 0:o.toString())||"1"),n.searchParams.set("pagelen",E.toString());let s=await this.config.request({url:n.toString(),headers:T(this.config,r)}),a=!!s.body.next;return{pageInfo:{hasNextPage:a,nextPage:a?s.body.page+1:null},data:s.body.values.map(i=>{let u=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:u,committedDate:u}}})}}async getTags(t,r={}){let n=new URL(`${x}/repositories/${t.repo.namespace}/${t.repo.name}/refs/tags`);n.searchParams.set("pagelen",E.toString()),t.cursor&&n.searchParams.set("page",t.cursor);let s=await this.config.request({url:n.toString(),headers:T(this.config,r)}),a=!!s.body.next,o=null;return s.body.next&&(o=new URL(s.body.next).searchParams.get("page")),{pageInfo:{hasNextPage:a,endCursor:o},data:s.body.values.map(i=>{let u=new Date(i.target.date);return{name:i.name,commit:{oid:i.target.hash,authoredDate:u,committedDate:u}}})}}async getPullRequestsForRepoBase(t,r={}){var s;let n=new URL(`${r.baseUrl||x}/repositories/${encodeURI(t.repo.namespace)}/${encodeURI(t.repo.name)}/pullrequests?state=OPEN`);return n.searchParams.set("page",((s=t.page)==null?void 0:s.toString())||"1"),n.searchParams.set("pagelen","50"),await this.config.request({url:n.toString(),headers:T(this.config,r)})}async getPullRequestsForRepo(t,r={}){let n=[],s=await this.getPullRequestsForRepoBase(t,r);s.body.values.forEach(o=>{if(t.authorLogin&&o.author.uuid!==t.authorLogin)return null;n.push(me(o))});let a=!!s.body.next;return{pageInfo:{hasNextPage:a,nextPage:a?s.body.page+1:null},data:n}}async getPullRequestsForRepos(t,r={}){let n=[];return await Promise.all(t.repos.map(async s=>{try{(await this.getPullRequestsForRepoBase({repo:s,...t},r)).body.values.forEach(o=>{if(t.authorLogin&&o.author.uuid!==t.authorLogin)return null;n.push(me(o))})}catch(a){if(a.statusCode!==404&&a.statusCode!==401)throw a}})),{data:n}}};var Z="https://api.github.com",qe=`${Z}/graphql`,Be=/\/api\/v3\/?$/,ke=e=>e?e.replace(Be,"/api/graphql"):qe,P=(e,t,r)=>{let n=y(r.token||e.token);return n["X-Github-Next-Global-ID"]="1",n["Content-Type"]="application/json",e.request({url:ke(r.baseUrl||e.baseUrl),method:"POST",headers:n,body:JSON.stringify(t)})},Oe={user:!0,"user:email":!0,"read:user":!0},q=e=>e.some(t=>Oe[t]),w=(e=!1,t=!1)=>`
|
|
2
2
|
id
|
|
3
3
|
databaseId
|
|
4
4
|
name
|
|
5
5
|
login
|
|
6
6
|
${t?"email":""}
|
|
7
7
|
avatarUrl${e?"(size: $avatarSize)":""}
|
|
8
|
-
`,
|
|
8
|
+
`,je=(e,t=!1)=>`
|
|
9
9
|
id
|
|
10
10
|
databaseId
|
|
11
11
|
number
|
|
@@ -13,7 +13,7 @@ title
|
|
|
13
13
|
state
|
|
14
14
|
author {
|
|
15
15
|
... on User {
|
|
16
|
-
${
|
|
16
|
+
${w(!1,t)}
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
commits(last: 1) {
|
|
@@ -73,7 +73,7 @@ updatedAt
|
|
|
73
73
|
closedAt
|
|
74
74
|
assignees(first: 100) {
|
|
75
75
|
nodes {
|
|
76
|
-
${
|
|
76
|
+
${w(!1,t)}
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
reviewRequests(first: 100) {
|
|
@@ -81,7 +81,7 @@ reviewRequests(first: 100) {
|
|
|
81
81
|
asCodeOwner
|
|
82
82
|
requestedReviewer {
|
|
83
83
|
... on User {
|
|
84
|
-
${
|
|
84
|
+
${w(!1,t)}
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
}
|
|
@@ -90,7 +90,7 @@ latestReviews(first: 100) {
|
|
|
90
90
|
nodes {
|
|
91
91
|
author {
|
|
92
92
|
... on User {
|
|
93
|
-
${
|
|
93
|
+
${w(!1,t)}
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
state
|
|
@@ -99,7 +99,8 @@ latestReviews(first: 100) {
|
|
|
99
99
|
additions
|
|
100
100
|
deletions
|
|
101
101
|
changedFiles
|
|
102
|
-
|
|
102
|
+
mergeable
|
|
103
|
+
`,Ne={"-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"},Fe=new RegExp('(([^\\s]+:)?\\"(?:[^\\"\\\\]|\\\\.)*\\"?)|([^\\"\\s]+)',"g"),Y=e=>{let t=[];return(e.match(Fe)??[]).forEach(n=>{if(n.includes(":")&&n!="is:closed"){let s=n.split(":")[0];Ne[s]&&t.push(n)}}),t},ee=async(e,t,r,n=!0,s=!1)=>{let{cursor:a,assigneeLogins:o,updatedBefore:i,isDraft:u,authorLogin:l,repos:d,reviewRequestedLogin:m,startQuery:c,mentionLogin:p}=t||{},g=Y(c||"");d.forEach(f=>{g.push(`repo:${f.namespace}/${f.name}`)}),o&&o.forEach(f=>{g.push(`assignee:${f}`)}),i&&g.push(`updated:<${i}`),n&&u!=null&&u!=null&&g.push(`draft:${String(u)}`),l&&g.push(`author:${l}`),m&&g.push(`review-requested:${m}`),p&&g.push(`mentions:${p}`);let b=`
|
|
103
104
|
query (
|
|
104
105
|
$after: String
|
|
105
106
|
$search: String!
|
|
@@ -112,7 +113,7 @@ query (
|
|
|
112
113
|
) {
|
|
113
114
|
nodes {
|
|
114
115
|
... on PullRequest {
|
|
115
|
-
${
|
|
116
|
+
${je(n,s)}
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
119
|
pageInfo {
|
|
@@ -122,7 +123,7 @@ query (
|
|
|
122
123
|
}
|
|
123
124
|
}
|
|
124
125
|
}
|
|
125
|
-
`;return P(e,{query:`${b}`,variables:{after:
|
|
126
|
+
`;return P(e,{query:`${b}`,variables:{after:a??null,search:`sort:updated type:pr state:open ${g.join(" ")}`}},r)};var ge=`
|
|
126
127
|
id
|
|
127
128
|
databaseId
|
|
128
129
|
owner {
|
|
@@ -135,13 +136,13 @@ defaultBranchRef {
|
|
|
135
136
|
name
|
|
136
137
|
}
|
|
137
138
|
viewerPermission
|
|
138
|
-
`,
|
|
139
|
+
`,te={id:"U_kgDNJ5k",databaseId:10137,name:"Deleted user",login:"ghost",email:"",avatarUrl:"https://avatars.githubusercontent.com/u/10137?v=4"},Qe={APPROVED:"APPROVED",CHANGES_REQUESTED:"CHANGES_REQUESTED",COMMENTED:"COMMENTED",REVIEW_REQUESTED:"REVIEW_REQUESTED"},ze={MERGEABLE:"MERGEABLE",CONFLICTING:"CONFLICTS",UNKNOWN:"UNKNOWN"},he=e=>({id:e.databaseId.toString(),graphQLId:e.id,namespace:e.owner.login,name:e.name,webUrl:e.url,httpsUrl:e.url.endsWith(".git")?e.url:`${e.url}.git`,sshUrl:e.sshUrl,defaultBranch:e.defaultBranchRef,permission:e.viewerPermission}),Me={OPEN:"OPEN",CLOSED:"CLOSED",MERGED:"MERGED"},$=e=>({id:e.databaseId.toString(),graphQLId:e.id,name:e.name,username:e.login,email:e.email??null,avatarUrl:e.avatarUrl}),He=e=>{var l,d,m,c,p,g,b,f;let t=e.author?e.author.id?e.author:null:te,r=(d=(l=e.commits.nodes)==null?void 0:l[0])==null?void 0:d.commit,n=((m=e.headRef)==null?void 0:m.target)||r,s=n==null?void 0:n.oid,a=r==null?void 0:r.oid,o=s===a?(p=(c=r==null?void 0:r.status)==null?void 0:c.contexts)==null?void 0:p[0]:null,i=(((g=e.reviewRequests)==null?void 0:g.nodes)||[]).filter(h=>!h.asCodeOwner),u=(b=e.headRepository)==null?void 0:b.url;return u&&!u.endsWith(".git")&&(u=`${u}.git`),{id:e.databaseId.toString(),graphQLId:e.id,title:e.title,number:e.number,state:Me[e.state],commentCount:e.comments.totalCount,upvoteCount:e.reactions.totalCount,author:t?$(t):null,createdDate:new Date(e.createdAt),isDraft:e.isDraft,repository:{name:e.repository.name,owner:{login:e.repository.owner.login}},headRepository:e.headRepository?{name:e.headRepository.name,owner:{login:e.headRepository.owner.login},remoteInfo:{cloneUrlHTTPS:u,cloneUrlSSH:e.headRepository.sshUrl}}:null,headCommit:{buildStatus:o||null},headRef:e.headRef?{name:e.headRef.name}:null,baseRef:e.baseRef?{name:e.baseRef.name}:null,url:e.url,updatedDate:new Date(e.updatedAt),closedDate:e.closedAt?new Date(e.closedAt):null,assignees:e.assignees.nodes?e.assignees.nodes.map($):null,reviews:i.map(h=>({reviewer:$(h.requestedReviewer),state:"REVIEW_REQUESTED"})).concat((((f=e.latestReviews)==null?void 0:f.nodes)||[]).map(h=>{let R=h.author||te;return{reviewer:$(R),state:Qe[h.state]}})),additions:e.additions,deletions:e.deletions,fileCount:e.changedFiles,commitCount:e.commits.totalCount,mergeableState:ze[e.mergeable]}},We=e=>{var r;let t=(r=e.author)!=null&&r.id?e.author:te;return{id:e.databaseId.toString(),graphQLId:e.id,number:e.number,title:e.title,author:$(t),commentCount:e.comments.totalCount,createdDate:new Date(e.createdAt),description:null,state:null,repository:{name:e.repository.name,owner:{login:e.repository.owner.login}},url:e.url,updatedDate:new Date(e.updatedAt),assignees:e.assignees.nodes?e.assignees.nodes.map($):[],upvoteCount:e.reactions.totalCount}},j=class extends z{constructor(){super(...arguments);this._scopesCache={}}async getScopes(r){let n=r.token||this.config.token;if(!n)return[];let s=this._scopesCache[n];if(!s){let o=(await P(this.config,{query:"query { rateLimit(dryRun: true) { __typename } }"},r)).headers["x-oauth-scopes"];s=o?o.split(", "):[],this._scopesCache[n]=s}return s}getEnterpriseAvatarUrlIfNeeded(r,n,s){let a=s.baseUrl||this.config.baseUrl;return!a||a.startsWith(Z)?r:n?`https://avatars.githubusercontent.com/u/e?email=${encodeURIComponent(n)}`:""}async getCurrentUser(r={}){var o;let n=await this.getScopes(r),a=(o=(await P(this.config,{query:`
|
|
139
140
|
query getCurrentUser {
|
|
140
141
|
viewer {
|
|
141
|
-
${
|
|
142
|
+
${w(!1,q(n))}
|
|
142
143
|
}
|
|
143
144
|
}
|
|
144
|
-
`},r)).body.data)==null?void 0:
|
|
145
|
+
`},r)).body.data)==null?void 0:o.viewer;if(!a)throw new Error("Current user not found.");return{data:$(a)}}async getUserForCommit(r,n={}){var i,u;let a=(i=(await P(this.config,{query:`
|
|
145
146
|
query getUserForCommit(
|
|
146
147
|
$owner: String!
|
|
147
148
|
$name: String!
|
|
@@ -160,38 +161,38 @@ query getUserForCommit(
|
|
|
160
161
|
}
|
|
161
162
|
}
|
|
162
163
|
}
|
|
163
|
-
`,variables:{owner:r.repo.namespace,name:r.repo.name,oid:r.oid,avatarSize:r.avatarSize}},
|
|
164
|
+
`,variables:{owner:r.repo.namespace,name:r.repo.name,oid:r.oid,avatarSize:r.avatarSize}},n)).body.data)==null?void 0:i.repository;if(!a)throw new Error("Repository not found.");let o=(u=a.object)==null?void 0:u.author;if(!o)throw new Error("Commit not found.");return{data:{name:o.name,email:o.email,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(o.avatarUrl,o.email,n)}}}async getAccountForEmail(r,n={}){var i,u,l;let s=await this.getScopes(n),o=(l=(u=(i=(await P(this.config,{query:`
|
|
164
165
|
query getAccountForEmail($query: String! $avatarSize: Int) {
|
|
165
166
|
search(query: $query, type: USER, first: 1) {
|
|
166
167
|
nodes {
|
|
167
168
|
... on User {
|
|
168
|
-
${
|
|
169
|
+
${w(!0,q(s))}
|
|
169
170
|
}
|
|
170
171
|
}
|
|
171
172
|
}
|
|
172
173
|
}
|
|
173
|
-
`,variables:{query:`in:email ${r.email}`,avatarSize:r.avatarSize}},
|
|
174
|
+
`,variables:{query:`in:email ${r.email}`,avatarSize:r.avatarSize}},n)).body.data)==null?void 0:i.search)==null?void 0:u.nodes)==null?void 0:l[0];if(!o)throw new Error("User not found.");return{data:$({...o,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(o.avatarUrl,o.email,n)})}}async getAccountForUsername(r,n={}){var i;let s=await this.getScopes(n),o=(i=(await P(this.config,{query:`
|
|
174
175
|
query getUserForUsername($login: String! $avatarSize: Int) {
|
|
175
176
|
user(login: $login) {
|
|
176
|
-
${
|
|
177
|
+
${w(!0,q(s))}
|
|
177
178
|
}
|
|
178
179
|
}
|
|
179
|
-
`,variables:{login:r.username,avatarSize:r.avatarSize}},
|
|
180
|
+
`,variables:{login:r.username,avatarSize:r.avatarSize}},n)).body.data)==null?void 0:i.user;if(!o)throw new Error("User not found.");return{data:$({...o,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(o.avatarUrl,o.email,n)})}}async getRepo(r,n={}){var a;let s=await P(this.config,{query:`
|
|
180
181
|
query getRepo($owner: String!, $name: String!) {
|
|
181
182
|
repository(owner: $owner, name: $name) {
|
|
182
|
-
${
|
|
183
|
+
${ge}
|
|
183
184
|
}
|
|
184
185
|
}
|
|
185
|
-
`,variables:{owner:r.namespace,name:r.name}},
|
|
186
|
-
getRepo_${u}: repository(owner: "${
|
|
187
|
-
${
|
|
186
|
+
`,variables:{owner:r.namespace,name:r.name}},n);if(!((a=s.body.data)!=null&&a.repository))throw new Error(`Repository ${r.namespace}/${r.name} not found`);return{data:he(s.body.data.repository)}}async getRepos(r,n={}){let s=r.map(({namespace:o,name:i},u)=>`
|
|
187
|
+
getRepo_${u}: repository(owner: "${o}", name: "${i}") {
|
|
188
|
+
${ge}
|
|
188
189
|
}
|
|
189
190
|
`).join(`
|
|
190
|
-
`),
|
|
191
|
+
`),a=await P(this.config,{query:`
|
|
191
192
|
query batchGetRepos {
|
|
192
|
-
${
|
|
193
|
+
${s}
|
|
193
194
|
}
|
|
194
|
-
`},
|
|
195
|
+
`},n);if(!a.body.data)throw new Error(a.statusText||"Unknown error");return{data:r.map(({namespace:o,name:i},u)=>{let l=a.body.data[`getRepo_${u}`];if(!l)throw new Error(`Repository ${o}/${i} not found`);return he(l)})}}async getRefs(r,n,s={}){var u;let o=(u=(await P(this.config,{query:`
|
|
195
196
|
query getRefs($owner: String!, $name: String!, $refPrefix: String!, $cursor: String, $first: Int!) {
|
|
196
197
|
repository(owner: $owner, name: $name) {
|
|
197
198
|
refs(refPrefix: $refPrefix first: $first after: $cursor) {
|
|
@@ -212,7 +213,7 @@ query getRefs($owner: String!, $name: String!, $refPrefix: String!, $cursor: Str
|
|
|
212
213
|
}
|
|
213
214
|
}
|
|
214
215
|
}
|
|
215
|
-
`,variables:{owner:
|
|
216
|
+
`,variables:{owner:n.repo.namespace,name:n.repo.name,refPrefix:r,cursor:n.cursor,first:E}},s)).body.data)==null?void 0:u.repository;if(!o)throw new Error("Repository not found.");let i=o.refs;return i?{pageInfo:i.pageInfo,data:(i.nodes||[]).map(l=>{var m;let d=(m=l.target)!=null&&m.oid?l.target:null;return{name:l.name,commit:d?{oid:d.oid,authoredDate:new Date(d.authoredDate),committedDate:new Date(d.committedDate)}:null}})}:{pageInfo:{endCursor:null,hasNextPage:!1},data:[]}}async getBranches(r,n={}){return this.getRefs("refs/heads/",r,n)}async getTags(r,n={}){return this.getRefs("refs/tags/",r,n)}async getBlame(r,n={}){var i;let a=(i=(await P(this.config,{query:`
|
|
216
217
|
query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
|
|
217
218
|
repository(owner: $owner, name: $name) {
|
|
218
219
|
object(expression: $ref) {
|
|
@@ -251,7 +252,7 @@ query getBlame($owner: String!, $name: String!, $ref: String!, $path: String!) {
|
|
|
251
252
|
}
|
|
252
253
|
}
|
|
253
254
|
}
|
|
254
|
-
`,variables:{owner:r.repo.namespace,name:r.repo.name,ref:r.ref,path:r.path}},
|
|
255
|
+
`,variables:{owner:r.repo.namespace,name:r.repo.name,ref:r.ref,path:r.path}},n)).body.data)==null?void 0:i.repository;if(!a)throw new Error("Repository not found.");let o=a.object;if(!o||!("blame"in o))throw new Error("Ref not found.");if(o.blame.ranges.length===0)throw new Error("File not found.");return{data:{ranges:o.blame.ranges.map(u=>{var l;return{startingLine:u.startingLine,endingLine:u.endingLine,commit:{oid:u.commit.oid,parentOids:((l=u.commit.parents.nodes)==null?void 0:l.map(d=>d.oid))||[],authoredDate:new Date(u.commit.authoredDate),author:u.commit.author?{name:u.commit.author.name,email:u.commit.author.email,avatarUrl:u.commit.author.avatarUrl}:null,committedDate:new Date(u.commit.committedDate),committer:u.commit.committer?{name:u.commit.committer.name,email:u.commit.committer.email,avatarUrl:u.commit.committer.avatarUrl}:null,message:u.commit.message,fileCount:u.commit.changedFilesIfAvailable,additions:u.commit.additions,deletions:u.commit.deletions}}})}}}async getPullRequestsForRepos(r,n={}){var l,d,m,c,p,g,b,f;let s=await this.getScopes(n),a=q(s),o="Field 'isDraft' doesn't exist on type 'PullRequest'",i=await ee(this.config,r,n,!0,a);if(i.body.errors){let R=((d=(l=i==null?void 0:i.body.errors)==null?void 0:l[0])==null?void 0:d.message)===o;n.baseUrl&&R&&(i=await ee(this.config,r,n,!1,a))}let u=((p=(c=(m=i.body)==null?void 0:m.data)==null?void 0:c.search)==null?void 0:p.nodes)||[];return{pageInfo:(f=(b=(g=i.body)==null?void 0:g.data)==null?void 0:b.search)==null?void 0:f.pageInfo,data:u.map(He)}}async getIssuesForRepos(r,n={}){var b,f,h,R,I,U;let s=await this.getScopes(n),a=q(s),o=Y(r.startQuery||""),{cursor:i,assigneeLogins:u,updatedBefore:l,authorLogin:d,mentionLogin:m}=r||{};r.repos.forEach(D=>{o.push(`repo:${D.namespace}/${D.name}`)}),u&&u.forEach(D=>{o.push(`assignee:${D}`)}),l&&o.push(`updated:<${l}`),d&&o.push(`author:${d}`),m&&o.push(`mentions:${m}`);let c=`
|
|
255
256
|
query (
|
|
256
257
|
$after: String
|
|
257
258
|
$search: String!
|
|
@@ -269,7 +270,7 @@ query (
|
|
|
269
270
|
title
|
|
270
271
|
author {
|
|
271
272
|
... on User {
|
|
272
|
-
${
|
|
273
|
+
${w(!1,a)}
|
|
273
274
|
}
|
|
274
275
|
}
|
|
275
276
|
createdAt
|
|
@@ -290,7 +291,7 @@ query (
|
|
|
290
291
|
}
|
|
291
292
|
assignees(first: 100) {
|
|
292
293
|
nodes {
|
|
293
|
-
${
|
|
294
|
+
${w(!1,a)}
|
|
294
295
|
}
|
|
295
296
|
}
|
|
296
297
|
}
|
|
@@ -302,31 +303,29 @@ query (
|
|
|
302
303
|
}
|
|
303
304
|
}
|
|
304
305
|
}
|
|
305
|
-
`,p=await P(this.config,{query:`${c}`,variables:{after:i??null,search:`sort:updated type:issue state:open ${
|
|
306
|
+
`,p=await P(this.config,{query:`${c}`,variables:{after:i??null,search:`sort:updated type:issue state:open ${o.join(" ")}`}},n);if(!p.body.data)throw new Error(p.statusText||"Unknown error");let g=((h=(f=(b=p.body)==null?void 0:b.data)==null?void 0:f.search)==null?void 0:h.nodes)||[];return{pageInfo:(U=(I=(R=p.body)==null?void 0:R.data)==null?void 0:I.search)==null?void 0:U.pageInfo,data:g.map(We)}}};var Ve="https://gitlab.com/api/graphql",C=(e,t,r)=>{let n=y(r.token||e.token);return e.request({url:Ve,method:"POST",headers:{...n,"Content-Type":"application/json"},body:JSON.stringify(t)})};var Xe={CAN_BE_MERGED:"MERGEABLE",CANNOT_BE_MERGED:"CONFLICTS",CANNOT_BE_MERGED_RECHECK:"UNKNOWN",UNCHECKED:"UNKNOWN",CHECKING:"UNKNOWN"},fe="https://gitlab.com/api/v4",se="gid://gitlab/User/",N="gid://gitlab/Project/",Je="gid://gitlab/MergeRequest/",Ke="gid://gitlab/Issue/",Re=`
|
|
306
307
|
id
|
|
307
|
-
namespace {
|
|
308
|
-
fullPath
|
|
309
|
-
}
|
|
310
308
|
path
|
|
309
|
+
fullPath
|
|
311
310
|
webUrl
|
|
312
311
|
httpUrlToRepo
|
|
313
312
|
sshUrlToRepo
|
|
314
313
|
repository {
|
|
315
314
|
rootRef
|
|
316
315
|
}
|
|
317
|
-
`,
|
|
316
|
+
`,L=`
|
|
318
317
|
id
|
|
319
318
|
name
|
|
320
319
|
username
|
|
321
320
|
publicEmail
|
|
322
321
|
avatarUrl
|
|
323
|
-
`,
|
|
322
|
+
`,re=`
|
|
324
323
|
author {
|
|
325
|
-
${
|
|
324
|
+
${L}
|
|
326
325
|
}
|
|
327
326
|
assignees {
|
|
328
327
|
nodes {
|
|
329
|
-
${
|
|
328
|
+
${L}
|
|
330
329
|
}
|
|
331
330
|
}
|
|
332
331
|
createdAt
|
|
@@ -340,11 +339,11 @@ updatedAt
|
|
|
340
339
|
upvotes
|
|
341
340
|
userNotesCount
|
|
342
341
|
webUrl
|
|
343
|
-
`,
|
|
342
|
+
`,be=`
|
|
344
343
|
id
|
|
345
344
|
state
|
|
346
345
|
author {
|
|
347
|
-
${
|
|
346
|
+
${L}
|
|
348
347
|
}
|
|
349
348
|
diffStatsSummary {
|
|
350
349
|
additions
|
|
@@ -365,24 +364,25 @@ targetBranch
|
|
|
365
364
|
sourceBranch
|
|
366
365
|
assignees {
|
|
367
366
|
nodes {
|
|
368
|
-
${
|
|
367
|
+
${L}
|
|
369
368
|
}
|
|
370
369
|
}
|
|
371
370
|
reviewers {
|
|
372
371
|
nodes {
|
|
373
|
-
${
|
|
372
|
+
${L}
|
|
374
373
|
mergeRequestInteraction {
|
|
375
374
|
approved
|
|
376
375
|
reviewState
|
|
377
376
|
}
|
|
378
377
|
}
|
|
379
|
-
}
|
|
378
|
+
}
|
|
379
|
+
mergeStatusEnum`,_=e=>`${e.namespace}/${e.name}`,Ze=e=>`${e.namespace}/${e.name}`,ye=e=>{var t;return{id:e.id.replace(N,""),graphQLId:e.id,namespace:e.fullPath.split("/").slice(0,-1).join("/"),name:e.path,webUrl:e.webUrl,httpsUrl:e.httpUrlToRepo,sshUrl:e.sshUrlToRepo,defaultBranch:(t=e.repository)!=null&&t.rootRef?{name:e.repository.rootRef}:null,permission:null}},Ye={opened:"OPEN",merged:"MERGED",closed:"CLOSED"},B=e=>({id:e.id.replace(se,""),graphQLId:e.id,name:e.name,username:e.username,email:e.publicEmail,avatarUrl:e.avatarUrl}),Ie=(e,t)=>{var r,n,s,a,o;return{id:e.id.replace(Je,""),graphQLId:e.id,title:e.title,number:parseInt(e.iid,10),state:Ye[e.state],commentCount:e.userNotesCount||0,upvoteCount:e.upvotes,author:e.author?B(e.author):null,createdDate:new Date(e.createdAt),isDraft:e.draft,repository:{name:t.name,owner:{login:t.owner}},headRepository:null,headCommit:{buildStatus:null},baseRef:{name:e.targetBranch},headRef:{name:e.sourceBranch},url:e.webUrl,updatedDate:new Date(e.updatedAt),closedDate:e.mergedAt?new Date(e.mergedAt):null,assignees:(r=e.assignees)!=null&&r.nodes?e.assignees.nodes.map(B):null,reviews:(n=e.reviewers)!=null&&n.nodes?e.reviewers.nodes.map(i=>{var u,l;return{reviewer:B(i),state:(u=i.mergeRequestInteraction)!=null&&u.approved?"APPROVED":((l=i.mergeRequestInteraction)==null?void 0:l.reviewState)==="REVIEWED"?"CHANGES_REQUESTED":"CHANGES_REQUESTED"}}):null,additions:((s=e.diffStatsSummary)==null?void 0:s.additions)||0,deletions:((a=e.diffStatsSummary)==null?void 0:a.deletions)||0,fileCount:((o=e.diffStatsSummary)==null?void 0:o.fileCount)||0,commitCount:e.commitCount||0,mergeableState:Xe[e.mergeStatusEnum]}},ne=(e,t)=>({author:{avatarUrl:e.author.avatarUrl,email:null,graphQLId:e.author.id,id:e.author.id.replace(se,""),name:e.author.name,username:e.author.username},assignees:e.assignees.nodes.map(r=>({avatarUrl:r.avatarUrl,email:null,graphQLId:r.id,id:r.id.replace(se,""),name:r.name,username:r.username})),commentCount:e.userNotesCount,createdDate:new Date(e.createdAt),description:e.description,graphQLId:e.id,id:e.id.replace(Ke,""),number:e.iid,repository:{name:t.name,owner:{login:t.owner}},updatedDate:new Date(e.updatedAt),upvoteCount:e.upvotes,state:e.state,title:e.title,url:e.webUrl}),F=class extends S{async getCurrentUser(t={}){var s;let n=(s=(await C(this.config,{query:`
|
|
380
380
|
query getCurrentUser {
|
|
381
381
|
currentUser {
|
|
382
|
-
${
|
|
382
|
+
${L}
|
|
383
383
|
}
|
|
384
384
|
}
|
|
385
|
-
`},t)).body.data)==null?void 0:
|
|
385
|
+
`},t)).body.data)==null?void 0:s.currentUser;if(!n)throw new Error("Current user not found.");return{data:B(n)}}async getUserForCommit(t,r={}){var o,i,u,l;let n=_(t.repo),a=(l=(u=(i=(o=(await C(this.config,{query:`
|
|
386
386
|
query getUserForCommit($fullPath: ID!, $oid: String!) {
|
|
387
387
|
project(fullPath: $fullPath) {
|
|
388
388
|
repository {
|
|
@@ -396,36 +396,36 @@ query getUserForCommit($fullPath: ID!, $oid: String!) {
|
|
|
396
396
|
}
|
|
397
397
|
}
|
|
398
398
|
}
|
|
399
|
-
`,variables:{fullPath:
|
|
399
|
+
`,variables:{fullPath:n,oid:t.oid}},r)).body.data)==null?void 0:o.project)==null?void 0:i.repository)==null?void 0:u.tree)==null?void 0:l.lastCommit;if(!a)throw new Error("Commit not found.");return{data:{name:a.authorName,email:a.authorEmail,avatarUrl:a.authorGravatar}}}async getAccountForEmail(t,r={}){var a,o,i;let s=(i=(o=(a=(await C(this.config,{query:`
|
|
400
400
|
query getAccountForEmail($email: String!) {
|
|
401
401
|
users(search: $email) {
|
|
402
402
|
nodes {
|
|
403
|
-
${
|
|
403
|
+
${L}
|
|
404
404
|
}
|
|
405
405
|
}
|
|
406
406
|
}
|
|
407
|
-
`,variables:{email:t.email}},r)).body.data)==null?void 0:
|
|
407
|
+
`,variables:{email:t.email}},r)).body.data)==null?void 0:a.users)==null?void 0:o.nodes)==null?void 0:i[0];if(!s)throw new Error("User not found.");return{data:B(s)}}async getAccountForUsername(t,r={}){var a;let s=(a=(await C(this.config,{query:`
|
|
408
408
|
query getAccountForUsername($username: String!) {
|
|
409
409
|
user(username: $username) {
|
|
410
|
-
${
|
|
410
|
+
${L}
|
|
411
411
|
}
|
|
412
412
|
}
|
|
413
|
-
`,variables:{username:t.username}},r)).body.data)==null?void 0:
|
|
413
|
+
`,variables:{username:t.username}},r)).body.data)==null?void 0:a.user;if(!s)throw new Error("User not found.");return{data:B(s)}}async getRepo(t,r={}){var a;let n=_(t),s=await C(this.config,{query:`
|
|
414
414
|
query getRepo($fullPath: ID!) {
|
|
415
415
|
project(fullPath: $fullPath) {
|
|
416
|
-
${
|
|
416
|
+
${Re}
|
|
417
417
|
}
|
|
418
418
|
}
|
|
419
|
-
`,variables:{fullPath:
|
|
420
|
-
getRepo_${i}: project(fullPath: "${
|
|
421
|
-
${
|
|
419
|
+
`,variables:{fullPath:n}},r);if(!((a=s.body.data)!=null&&a.project))throw new Error(`Repository ${n} not found`);return{data:ye(s.body.data.project)}}async getRepos(t,r={}){let n=t.map(_),s=n.map((o,i)=>`
|
|
420
|
+
getRepo_${i}: project(fullPath: "${o}") {
|
|
421
|
+
${Re}
|
|
422
422
|
}
|
|
423
423
|
`).join(`
|
|
424
|
-
`),
|
|
424
|
+
`),a=await C(this.config,{query:`
|
|
425
425
|
query batchGetRepos {
|
|
426
|
-
${
|
|
426
|
+
${s}
|
|
427
427
|
}
|
|
428
|
-
`},r);if(!
|
|
428
|
+
`},r);if(!a.body.data)throw new Error(a.statusText||"Unknown error");return{data:n.map((o,i)=>{let u=a.body.data[`getRepo_${i}`];if(!u)throw new Error(`Repository ${o} not found`);return ye(u)})}}async getRefs(t,r,n={}){var u;let s=_(r.repo),a=new URL(`${fe}/projects/${encodeURIComponent(s)}/repository/${t}`);a.searchParams.set("page",((u=r.page)==null?void 0:u.toString())||"1"),a.searchParams.set("per_page",E.toString());let o=await this.config.request({url:a.toString(),headers:y(n.token||this.config.token)}),i=o.headers["x-next-page"];return{pageInfo:{hasNextPage:!!i,nextPage:i?parseInt(i,10):null},data:o.body.map(l=>({name:l.name,commit:{oid:l.commit.id,authoredDate:new Date(l.commit.authored_date),committedDate:new Date(l.commit.committed_date)}}))}}async getBranches(t,r={}){return this.getRefs("branches",t,r)}async getTags(t,r={}){return this.getRefs("tags",t,r)}async getBlame(t,r={}){let n=_(t.repo),s=new URL(`${fe}/projects/${encodeURIComponent(n)}/repository/files/${encodeURIComponent(t.path)}/blame`);s.searchParams.set("ref",t.ref);let a=await this.config.request({url:s.toString(),headers:y(r.token||this.config.token)}),o=0;return{data:{ranges:a.body.map(i=>{let u=o+1;return o+=i.lines.length,{startingLine:u,endingLine:o,commit:{oid:i.commit.id,parentOids:i.commit.parent_ids,authoredDate:new Date(i.commit.authored_date),author:{name:i.commit.author_name,email:i.commit.author_email,avatarUrl:null},committedDate:new Date(i.commit.committed_date),committer:{name:i.commit.committer_name,email:i.commit.committer_email,avatarUrl:null},message:i.commit.message,fileCount:null,additions:null,deletions:null}}})}}}getVariablesForPullRequests(t){let{updatedBefore:r,isDraft:n,authorLogin:s,assigneeLogins:a,reviewRequestedLogin:o}=t||{},i={},u=[],l=[],d=(m,c,p)=>{u.push(`$${m}: ${p}`),l.push(`${m}: $${m}`),i[m]=c};return r&&d("updatedBefore",r,"Time"),s&&d("authorUsername",s,"String"),a&&d("assigneeUsername",a[0],"String"),n!=null&&d("draft",n,"Boolean"),o&&d("reviewerUsername",o,"String"),{variables:i,variableTypes:u,mergeRequestArguments:l}}async getPullRequestsForRepo(t,r={}){var b,f,h;let{cursor:n,repo:s}=t||{},a=_(s),{variables:o,variableTypes:i,mergeRequestArguments:u}=this.getVariablesForPullRequests(t),l={fullPath:a,...o},d=await C(this.config,{query:`
|
|
429
429
|
query getPullRequestsForRepo(
|
|
430
430
|
$fullPath: ID!
|
|
431
431
|
$after: String
|
|
@@ -448,16 +448,16 @@ query getPullRequestsForRepo(
|
|
|
448
448
|
hasNextPage
|
|
449
449
|
}
|
|
450
450
|
nodes {
|
|
451
|
-
${
|
|
451
|
+
${be}
|
|
452
452
|
}
|
|
453
453
|
}
|
|
454
454
|
}
|
|
455
455
|
}
|
|
456
|
-
`,variables:{...l,after:
|
|
456
|
+
`,variables:{...l,after:n}},r),m=[],c=(b=d.body.data)==null?void 0:b.project,p={name:(c==null?void 0:c.name)||"",owner:((c==null?void 0:c.fullPath)||"").split("/").slice(0,-1).join("/")};return(((f=c==null?void 0:c.mergeRequests)==null?void 0:f.nodes)||[]).forEach(R=>{m.push(Ie(R,p))}),{pageInfo:(h=c==null?void 0:c.mergeRequests)==null?void 0:h.pageInfo,data:m}}async getPullRequestsForRepos(t,r={}){var c,p,g,b,f;let{cursor:n}=t||{},s=t.repoIds.map(h=>h.toString().startsWith(N)?h:`${N}${h}`),{variables:a,variableTypes:o,mergeRequestArguments:i}=this.getVariablesForPullRequests(t),u={projectIds:s,...a},l=await C(this.config,{query:`
|
|
457
457
|
query getPullRequests(
|
|
458
458
|
$projectIds: [ID!]
|
|
459
459
|
$after: String
|
|
460
|
-
${
|
|
460
|
+
${o.length?o.join(" "):""}
|
|
461
461
|
) {
|
|
462
462
|
projects(
|
|
463
463
|
ids: $projectIds
|
|
@@ -477,23 +477,23 @@ query getPullRequests(
|
|
|
477
477
|
${i.length?i.join(" "):""}
|
|
478
478
|
) {
|
|
479
479
|
nodes {
|
|
480
|
-
${
|
|
480
|
+
${be}
|
|
481
481
|
}
|
|
482
482
|
}
|
|
483
483
|
}
|
|
484
484
|
}
|
|
485
485
|
}
|
|
486
|
-
`,variables:{...u,after:
|
|
486
|
+
`,variables:{...u,after:n}},r),d=[];return(((p=(c=l.body.data)==null?void 0:c.projects)==null?void 0:p.nodes)||[]).forEach(h=>{var U;let R={name:h.name,owner:h.fullPath.split("/").slice(0,-1).join("/")};(((U=h.mergeRequests)==null?void 0:U.nodes)||[]).forEach(D=>{d.push(Ie(D,R))})}),{pageInfo:(f=(b=(g=l.body)==null?void 0:g.data)==null?void 0:b.projects)==null?void 0:f.pageInfo,data:d}}async getIssue(t,r={}){var a,o,i,u,l,d,m;let n=Ze(t),s=await C(this.config,{query:`
|
|
487
487
|
query GetSingleIssue($projectId: ID!, $issueId: String!) {
|
|
488
488
|
project(fullPath: $projectId) {
|
|
489
489
|
name
|
|
490
490
|
fullPath
|
|
491
491
|
issue(iid: $issueId) {
|
|
492
|
-
${
|
|
492
|
+
${re}
|
|
493
493
|
}
|
|
494
494
|
}
|
|
495
495
|
}
|
|
496
|
-
`,variables:{issueId:t.id,projectId:
|
|
496
|
+
`,variables:{issueId:t.id,projectId:n}},r);if(!((a=s.body.data)!=null&&a.project))throw new Error(`Repository ${n} not found`);if(!((i=(o=s.body.data)==null?void 0:o.project)!=null&&i.issue))throw new Error(`Issue ${t.id} not found`);return{data:ne((l=(u=s.body.data)==null?void 0:u.project)==null?void 0:l.issue,{name:(d=s.body.data)==null?void 0:d.project.name,owner:(m=s.body.data)==null?void 0:m.project.fullPath.split("/").slice(0,-1).join("/")})}}getVariablesForIssues(t){let{updatedBefore:r,authorLogin:n,assigneeLogins:s}=t||{},a={},o=[],i=[],u=(l,d,m)=>{o.push(`$${l}: ${m}`),i.push(`${l}: $${l}`),a[l]=d};return r&&u("updatedBefore",r,"Time"),n&&u("authorUsername",n,"String"),s&&u("assigneeUsername",s[0],"String"),{variables:a,variableTypes:o,issueArguments:i}}async getIssuesForRepo(t,r={}){var f,h,R;let{cursor:n,repo:s}=t||{},a=_(s),{variables:o,variableTypes:i,issueArguments:u}=this.getVariablesForIssues(t),l={fullPath:a,...o},d=`
|
|
497
497
|
query GetIssuesFromProject(
|
|
498
498
|
$fullPath: ID!
|
|
499
499
|
$after: String
|
|
@@ -512,7 +512,7 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
|
|
|
512
512
|
${u.length?u.join(" "):""}
|
|
513
513
|
) {
|
|
514
514
|
nodes {
|
|
515
|
-
${
|
|
515
|
+
${re}
|
|
516
516
|
}
|
|
517
517
|
pageInfo {
|
|
518
518
|
endCursor
|
|
@@ -520,11 +520,11 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
|
|
|
520
520
|
}
|
|
521
521
|
}
|
|
522
522
|
}
|
|
523
|
-
}`,m=await
|
|
523
|
+
}`,m=await C(this.config,{query:d,variables:{...l,after:n}},r),c=[],p=(f=m.body.data)==null?void 0:f.project,g={name:(p==null?void 0:p.name)||"",owner:((p==null?void 0:p.fullPath)||"").split("/").slice(0,-1).join("/")};return(((h=p==null?void 0:p.issues)==null?void 0:h.nodes)||[]).forEach(I=>{c.push(ne(I,g))}),{pageInfo:(R=p==null?void 0:p.issues)==null?void 0:R.pageInfo,data:c.sort((I,U)=>(I.updatedDate||I.createdDate).getTime()-(U.updatedDate||U.createdDate).getTime())}}async getIssuesForRepos(t,r={}){var p,g,b,f,h;let{cursor:n}=t||{},s=t.repoIds.map(R=>R.toString().startsWith(N)?R:`${N}${R}`),{variables:a,variableTypes:o,mergeRequestArguments:i}=this.getVariablesForPullRequests(t),u={projectIds:s,...a},l=`
|
|
524
524
|
query GetIssuesFromProject(
|
|
525
525
|
$projectIds: [ID!]
|
|
526
526
|
$after: String
|
|
527
|
-
${
|
|
527
|
+
${o.length?o.join(" "):""}
|
|
528
528
|
) {
|
|
529
529
|
projects(
|
|
530
530
|
ids: $projectIds
|
|
@@ -544,9 +544,9 @@ query GetSingleIssue($projectId: ID!, $issueId: String!) {
|
|
|
544
544
|
${i.length?i.join(" "):""}
|
|
545
545
|
) {
|
|
546
546
|
nodes {
|
|
547
|
-
${
|
|
547
|
+
${re}
|
|
548
548
|
}
|
|
549
549
|
}
|
|
550
550
|
}
|
|
551
551
|
}
|
|
552
|
-
}`,d=await
|
|
552
|
+
}`,d=await C(this.config,{query:l,variables:{...u,after:n}},r),m=[];return(((g=(p=d.body.data)==null?void 0:p.projects)==null?void 0:g.nodes)||[]).forEach(R=>{var D;let I={name:R.name,owner:R.fullPath.split("/").slice(0,-1).join("/")};(((D=R.issues)==null?void 0:D.nodes)||[]).forEach(Pe=>m.push(ne(Pe,I)))}),{pageInfo:(h=(f=(b=d.body)==null?void 0:b.data)==null?void 0:f.projects)==null?void 0:h.pageInfo,data:m.sort((R,I)=>(R.updatedDate||R.createdDate).getTime()-(I.updatedDate||I.createdDate).getTime())}}};var et="https://api.atlassian.com/ex/jira",tt=100,rt=e=>{var r;let t=e.fields.assignee;return{id:e.id,commentCount:e.fields.comment.comments.length,number:e.key,title:e.fields.summary,url:e.self,createdDate:new Date(e.fields.created),author:{id:e.fields.creator.accountId,name:e.fields.creator.displayName,email:e.fields.creator.emailAddress,avatarUrl:e.fields.creator.avatarUrls["32x32"],username:e.fields.creator.displayName},updatedDate:new Date(e.fields.updated),assignees:t?[{id:t.accountId,name:t.displayName,email:t.emailAddress,avatarUrl:t.avatarUrls["32x32"],username:t.displayName}]:[],description:null,repository:null,state:null,upvoteCount:((r=e.fields.votes)==null?void 0:r.votes)||0}},H=class extends S{async getIssuesForProject(t,r={}){let{assigneeLogins:n,authorLogin:s,mentionLogin:a,project:o}=t||{},i=[`project = "${o}"`];return s&&i.push(`creator in (${s})`),n&&i.push(`assignee in (${n.join(", ")})`),a&&i.push(`comment ~ ${a}`),{data:(await this.config.request({url:`${r.baseUrl||et}/${t.resourceId}/rest/api/2/search?jql=${i.join(" AND ")}&startAt=0&maxResults=${tt}&fields=${["assignee","comment","summary","created","creator","updated","votes"].join(",")}`,headers:y(r.token||this.config.token)})).body.issues.map(rt)}}};var nt="https://api.trello.com",st=1e3,ot=e=>{let t=new Date(1e3*parseInt(e.id.substring(0,8),16));return{id:e.id,commentCount:e.badges.comments,number:e.idShort.toString(),title:e.name,url:e.url,createdDate:new Date(t.toISOString()),author:null,updatedDate:new Date(e.dateLastActivity),assignees:e.idMembers.map(r=>({id:r,username:null,name:null,email:null,avatarUrl:null})),description:null,state:null,repository:null,upvoteCount:e.badges.votes}},W=class extends S{async getIssuesForBoard(t,r={}){let n=["-is:archived","sort:edited"],{appKey:s,boardId:a,filterText:o,assigneeLogins:i}=t||{};i&&n.push("@me");let u=`${o?`${o}`:""}${n.join(" ")} board:${a}`;return{data:(await this.config.request({url:`${r.baseUrl||nt}/1/search?key=${s}&query=${u}&cards_limit=${st}&token=${r.token||this.config.token}`,headers:y(r.token||this.config.token)})).body.cards.map(ot)}}};var at=e=>{let t={request:e==null?void 0:e.request};return{azureDevOps:new k({...t,...e==null?void 0:e.azureDevOps}),bitbucket:new O({...t,...e==null?void 0:e.bitbucket}),github:new j({...t,...e==null?void 0:e.github}),gitlab:new F({...t,...e==null?void 0:e.gitlab}),jira:new H({...t,...e==null?void 0:e.jira}),trello:new W({...t,...e==null?void 0:e.trello})}},it=at;
|
|
@@ -66,6 +66,11 @@ export declare enum GitPullRequestReviewState {
|
|
|
66
66
|
Commented = "COMMENTED",
|
|
67
67
|
ReviewRequested = "REVIEW_REQUESTED"
|
|
68
68
|
}
|
|
69
|
+
export declare enum GitPullRequestMergeableState {
|
|
70
|
+
Mergeable = "MERGEABLE",
|
|
71
|
+
Conflicts = "CONFLICTS",
|
|
72
|
+
Unknown = "UNKNOWN"
|
|
73
|
+
}
|
|
69
74
|
export interface GitPullRequest {
|
|
70
75
|
id: string;
|
|
71
76
|
graphQLId?: string;
|
|
@@ -115,6 +120,7 @@ export interface GitPullRequest {
|
|
|
115
120
|
targetUrl?: string;
|
|
116
121
|
} | null;
|
|
117
122
|
} | null;
|
|
123
|
+
mergeableState: GitPullRequestMergeableState;
|
|
118
124
|
}
|
|
119
125
|
export interface GetRepoInput {
|
|
120
126
|
namespace: string;
|
|
@@ -26,6 +26,11 @@ export declare enum GitHubPullRequestReviewState {
|
|
|
26
26
|
Commented = "COMMENTED",
|
|
27
27
|
ReviewRequested = "REVIEW_REQUESTED"
|
|
28
28
|
}
|
|
29
|
+
export declare enum GitHubPullRequestMergeableState {
|
|
30
|
+
Mergeable = "MERGEABLE",
|
|
31
|
+
Conflicting = "CONFLICTING",
|
|
32
|
+
Unknown = "UNKNOWN"
|
|
33
|
+
}
|
|
29
34
|
export interface GraphQLUser {
|
|
30
35
|
id: string;
|
|
31
36
|
databaseId: number;
|
|
@@ -113,6 +118,7 @@ export interface GraphQLPullRequest {
|
|
|
113
118
|
} | null;
|
|
114
119
|
url: string;
|
|
115
120
|
updatedAt: string;
|
|
121
|
+
mergeable: GitHubPullRequestMergeableState;
|
|
116
122
|
}
|
|
117
123
|
export interface GraphQLIssue {
|
|
118
124
|
id: string;
|
|
@@ -31,3 +31,10 @@ export interface RESTTag extends RESTRef {
|
|
|
31
31
|
target: string;
|
|
32
32
|
release: unknown;
|
|
33
33
|
}
|
|
34
|
+
export declare enum GitLabPullRequestMergeableState {
|
|
35
|
+
CanBeMerged = "CAN_BE_MERGED",
|
|
36
|
+
CannotBeMerged = "CANNOT_BE_MERGED",
|
|
37
|
+
CannotBeMergedRecheck = "CANNOT_BE_MERGED_RECHECK",
|
|
38
|
+
Unchecked = "UNCHECKED",
|
|
39
|
+
Checking = "CHECKING"
|
|
40
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gitkraken/provider-apis",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.3",
|
|
4
4
|
"description": "An SDK around different third-party APIs that accepts and returns data in a common format.",
|
|
5
5
|
"author": "Axosoft, LLC dba GitKraken",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|