@gitkraken/provider-apis 0.6.1 → 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
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.6.3
4
+
5
+ - fixed GitLab `GitRepository` objects having an empty `namespace` field
6
+
7
+ ## 0.6.2
8
+
9
+ - package.json and README.md changes
10
+
3
11
  ## 0.6.1
4
12
 
5
13
  - fixed filtering by `authorLogin` in `getPullRequestsForRepo` and `getPullRequestsForRepos` (Bitbucket)
package/README.md CHANGED
@@ -1,78 +1 @@
1
- # provider-apis
2
-
3
- [View documenation](/docs/modules.md#default)
4
-
5
- ## Installation
6
-
7
- ```
8
- npm install @@gitkraken/provider-apis
9
- or
10
- yarn add @@gitkraken/provider-apis
11
- ```
12
-
13
- ## Quick Usage
14
-
15
- Creating an instance of every provider
16
-
17
- ```ts
18
- import ProviderAPIs from '@@gitkraken/provider-apis';
19
-
20
- const providerAPIs = ProviderAPIs(config); // returns an object containing an instance of each provider
21
-
22
- const repo = await providerAPIs.github.getRepo({ namespace: 'gitkraken', name: 'vscode-gitlens' }, { token: TOKEN });
23
- ```
24
-
25
- Creating an instance of a specific provider
26
-
27
- ```ts
28
- import { GitHub } from 'provider-apis';
29
-
30
- const github = new GitHub(config);
31
- const repo = await github.getRepo({ namespace: 'gitkraken', name: 'vscode-gitlens' }, { token: TOKEN });
32
- ```
33
-
34
- ### Authentication
35
-
36
- Tokens can be supplied either at construction time or when calling a function. (A token supplied to a function will take priority over one supplied at construction time).
37
-
38
- ```ts
39
- const providerAPIs = ProviderAPIS({
40
- github: { token: GITHUB_TOKEN },
41
- gitlab: { token: GITLAB_TOKEN },
42
- });
43
-
44
- // OR
45
-
46
- const github = new GitHub({ token: GITHUB_TOKEN });
47
-
48
- // OR
49
-
50
- const repo = await github.getRepo({ namespace: 'gitkraken', name: 'vscode-gitlens' }, { token: TOKEN });
51
- ```
52
-
53
- ## Overwriting the request function
54
-
55
- This package allows you to overwrite the function used to make network requests. The function should must either implement `fetch` OR have the following signature:
56
-
57
- ```ts
58
- (options: { url: string; method?: string; body?: string; headers?: object }) =>
59
- Promise<{
60
- status: number;
61
- statusText: string;
62
- headers: object;
63
- body: any;
64
- }>;
65
- ```
66
-
67
- ```ts
68
- const github = new GitHub({ request: customRequestFn });
69
- ```
70
-
71
- ## Configuration
72
-
73
- All configuration options are optional. All options can be provided either at object creation time or when calling a function as the function's last parameter, with the exception of `request`, which can only be provided at object creation time.
74
-
75
- - `request`: The function to use to make network requests
76
- - `[provider].baseUrl`: The base API endpoint to use (meant for Enterprise support)
77
- - `[provider].token`: The authentication token to be sent with the request
78
- - `[provider].isPAT`: Whether or not the provided token is a PAT (as opposed to an OAuth token)
1
+ # @gitkraken/provider-apis
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
- `,ke=(e,t=!1)=>`
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
- ${C(!1,t)}
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
- ${C(!1,t)}
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
- ${C(!1,t)}
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
- ${C(!1,t)}
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
- `,je={"-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"),K=e=>{let t=[];return(e.match(Fe)??[]).forEach(s=>{if(s.includes(":")&&s!="is:closed"){let n=s.split(":")[0];je[n]&&t.push(s)}}),t},Y=async(e,t,r,s=!0,n=!1)=>{let{cursor:o,assigneeLogins:a,updatedBefore:i,isDraft:u,authorLogin:l,repos:d,reviewRequestedLogin:m,startQuery:c,mentionLogin:p}=t||{},g=K(c||"");d.forEach(f=>{g.push(`repo:${f.namespace}/${f.name}`)}),a&&a.forEach(f=>{g.push(`assignee:${f}`)}),i&&g.push(`updated:<${i}`),s&&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=`
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
- ${ke(s,n)}
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:o??null,search:`sort:updated type:pr state:open ${g.join(" ")}`}},r)};var ce=`
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
- `,ee={id:"U_kgDNJ5k",databaseId:10137,name:"Deleted user",login:"ghost",email:"",avatarUrl:"https://avatars.githubusercontent.com/u/10137?v=4"},Ne={APPROVED:"APPROVED",CHANGES_REQUESTED:"CHANGES_REQUESTED",COMMENTED:"COMMENTED",REVIEW_REQUESTED:"REVIEW_REQUESTED"},ge=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}),Qe={OPEN:"OPEN",CLOSED:"CLOSED",MERGED:"MERGED"},L=e=>({id:e.databaseId.toString(),graphQLId:e.id,name:e.name,username:e.login,email:e.email??null,avatarUrl:e.avatarUrl}),ze=e=>{var l,d,m,c,p,g,b,f;let t=e.author?e.author.id?e.author:null:ee,r=(d=(l=e.commits.nodes)==null?void 0:l[0])==null?void 0:d.commit,s=((m=e.headRef)==null?void 0:m.target)||r,n=s==null?void 0:s.oid,o=r==null?void 0:r.oid,a=n===o?(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:Qe[e.state],commentCount:e.comments.totalCount,upvoteCount:e.reactions.totalCount,author:t?L(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:a||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(L):null,reviews:i.map(h=>({reviewer:L(h.requestedReviewer),state:"REVIEW_REQUESTED"})).concat((((f=e.latestReviews)==null?void 0:f.nodes)||[]).map(h=>{let R=h.author||ee;return{reviewer:L(R),state:Ne[h.state]}})),additions:e.additions,deletions:e.deletions,fileCount:e.changedFiles,commitCount:e.commits.totalCount}},Me=e=>{var r;let t=(r=e.author)!=null&&r.id?e.author:ee;return{id:e.databaseId.toString(),graphQLId:e.id,number:e.number,title:e.title,author:L(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(L):[],upvoteCount:e.reactions.totalCount}},j=class extends z{constructor(){super(...arguments);this._scopesCache={}}async getScopes(r){let s=r.token||this.config.token;if(!s)return[];let n=this._scopesCache[s];if(!n){let a=(await P(this.config,{query:"query { rateLimit(dryRun: true) { __typename } }"},r)).headers["x-oauth-scopes"];n=a?a.split(", "):[],this._scopesCache[s]=n}return n}getEnterpriseAvatarUrlIfNeeded(r,s,n){let o=n.baseUrl||this.config.baseUrl;return!o||o.startsWith(Z)?r:s?`https://avatars.githubusercontent.com/u/e?email=${encodeURIComponent(s)}`:""}async getCurrentUser(r={}){var a;let s=await this.getScopes(r),o=(a=(await P(this.config,{query:`
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
- ${C(!1,_(s))}
142
+ ${w(!1,q(n))}
142
143
  }
143
144
  }
144
- `},r)).body.data)==null?void 0:a.viewer;if(!o)throw new Error("Current user not found.");return{data:L(o)}}async getUserForCommit(r,s={}){var i,u;let o=(i=(await P(this.config,{query:`
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}},s)).body.data)==null?void 0:i.repository;if(!o)throw new Error("Repository not found.");let a=(u=o.object)==null?void 0:u.author;if(!a)throw new Error("Commit not found.");return{data:{name:a.name,email:a.email,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,s)}}}async getAccountForEmail(r,s={}){var i,u,l;let n=await this.getScopes(s),a=(l=(u=(i=(await P(this.config,{query:`
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
- ${C(!0,_(n))}
169
+ ${w(!0,q(s))}
169
170
  }
170
171
  }
171
172
  }
172
173
  }
173
- `,variables:{query:`in:email ${r.email}`,avatarSize:r.avatarSize}},s)).body.data)==null?void 0:i.search)==null?void 0:u.nodes)==null?void 0:l[0];if(!a)throw new Error("User not found.");return{data:L({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,s)})}}async getAccountForUsername(r,s={}){var i;let n=await this.getScopes(s),a=(i=(await P(this.config,{query:`
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
- ${C(!0,_(n))}
177
+ ${w(!0,q(s))}
177
178
  }
178
179
  }
179
- `,variables:{login:r.username,avatarSize:r.avatarSize}},s)).body.data)==null?void 0:i.user;if(!a)throw new Error("User not found.");return{data:L({...a,avatarUrl:this.getEnterpriseAvatarUrlIfNeeded(a.avatarUrl,a.email,s)})}}async getRepo(r,s={}){var o;let n=await P(this.config,{query:`
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
- ${ce}
183
+ ${ge}
183
184
  }
184
185
  }
185
- `,variables:{owner:r.namespace,name:r.name}},s);if(!((o=n.body.data)!=null&&o.repository))throw new Error(`Repository ${r.namespace}/${r.name} not found`);return{data:ge(n.body.data.repository)}}async getRepos(r,s={}){let n=r.map(({namespace:a,name:i},u)=>`
186
- getRepo_${u}: repository(owner: "${a}", name: "${i}") {
187
- ${ce}
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
- `),o=await P(this.config,{query:`
191
+ `),a=await P(this.config,{query:`
191
192
  query batchGetRepos {
192
- ${n}
193
+ ${s}
193
194
  }
194
- `},s);if(!o.body.data)throw new Error(o.statusText||"Unknown error");return{data:r.map(({namespace:a,name:i},u)=>{let l=o.body.data[`getRepo_${u}`];if(!l)throw new Error(`Repository ${a}/${i} not found`);return ge(l)})}}async getRefs(r,s,n={}){var u;let a=(u=(await P(this.config,{query:`
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:s.repo.namespace,name:s.repo.name,refPrefix:r,cursor:s.cursor,first:$}},n)).body.data)==null?void 0:u.repository;if(!a)throw new Error("Repository not found.");let i=a.refs;return i?{pageInfo:i.pageInfo,data:(i.nodes||[]).map(l=>{var 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,s={}){return this.getRefs("refs/heads/",r,s)}async getTags(r,s={}){return this.getRefs("refs/tags/",r,s)}async getBlame(r,s={}){var i;let o=(i=(await P(this.config,{query:`
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}},s)).body.data)==null?void 0:i.repository;if(!o)throw new Error("Repository not found.");let a=o.object;if(!a||!("blame"in a))throw new Error("Ref not found.");if(a.blame.ranges.length===0)throw new Error("File not found.");return{data:{ranges:a.blame.ranges.map(u=>{var l;return{startingLine:u.startingLine,endingLine:u.endingLine,commit:{oid:u.commit.oid,parentOids:((l=u.commit.parents.nodes)==null?void 0:l.map(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,s={}){var l,d,m,c,p,g,b,f;let n=await this.getScopes(s),o=_(n),a="Field 'isDraft' doesn't exist on type 'PullRequest'",i=await Y(this.config,r,s,!0,o);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)===a;s.baseUrl&&R&&(i=await Y(this.config,r,s,!1,o))}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(ze)}}async getIssuesForRepos(r,s={}){var b,f,h,R,I,U;let n=await this.getScopes(s),o=_(n),a=K(r.startQuery||""),{cursor:i,assigneeLogins:u,updatedBefore:l,authorLogin:d,mentionLogin:m}=r||{};r.repos.forEach(D=>{a.push(`repo:${D.namespace}/${D.name}`)}),u&&u.forEach(D=>{a.push(`assignee:${D}`)}),l&&a.push(`updated:<${l}`),d&&a.push(`author:${d}`),m&&a.push(`mentions:${m}`);let c=`
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
- ${C(!1,o)}
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
- ${C(!1,o)}
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 ${a.join(" ")}`}},s);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(Me)}}};var He="https://gitlab.com/api/graphql",v=(e,t,r)=>{let s=y(r.token||e.token);return e.request({url:He,method:"POST",headers:{...s,"Content-Type":"application/json"},body:JSON.stringify(t)})};var he="https://gitlab.com/api/v4",se="gid://gitlab/User/",F="gid://gitlab/Project/",Ve="gid://gitlab/MergeRequest/",We="gid://gitlab/Issue/",fe=`
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
- `,E=`
316
+ `,L=`
318
317
  id
319
318
  name
320
319
  username
321
320
  publicEmail
322
321
  avatarUrl
323
- `,te=`
322
+ `,re=`
324
323
  author {
325
- ${E}
324
+ ${L}
326
325
  }
327
326
  assignees {
328
327
  nodes {
329
- ${E}
328
+ ${L}
330
329
  }
331
330
  }
332
331
  createdAt
@@ -340,11 +339,11 @@ updatedAt
340
339
  upvotes
341
340
  userNotesCount
342
341
  webUrl
343
- `,Re=`
342
+ `,be=`
344
343
  id
345
344
  state
346
345
  author {
347
- ${E}
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
- ${E}
367
+ ${L}
369
368
  }
370
369
  }
371
370
  reviewers {
372
371
  nodes {
373
- ${E}
372
+ ${L}
374
373
  mergeRequestInteraction {
375
374
  approved
376
375
  reviewState
377
376
  }
378
377
  }
379
- }`,x=e=>`${e.namespace}/${e.name}`,Xe=e=>`${e.namespace}/${e.name}`,be=e=>{var t;return{id:e.id.replace(F,""),graphQLId:e.id,namespace:e.namespace.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}},Je={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}),ye=(e,t)=>{var r,s,n,o,a;return{id:e.id.replace(Ve,""),graphQLId:e.id,title:e.title,number:parseInt(e.iid,10),state:Je[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:(s=e.reviewers)!=null&&s.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:((n=e.diffStatsSummary)==null?void 0:n.additions)||0,deletions:((o=e.diffStatsSummary)==null?void 0:o.deletions)||0,fileCount:((a=e.diffStatsSummary)==null?void 0:a.fileCount)||0,commitCount:e.commitCount||0}},re=(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(We,""),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}),N=class extends S{async getCurrentUser(t={}){var n;let s=(n=(await v(this.config,{query:`
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
- ${E}
382
+ ${L}
383
383
  }
384
384
  }
385
- `},t)).body.data)==null?void 0:n.currentUser;if(!s)throw new Error("Current user not found.");return{data:B(s)}}async getUserForCommit(t,r={}){var a,i,u,l;let s=x(t.repo),o=(l=(u=(i=(a=(await v(this.config,{query:`
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:s,oid:t.oid}},r)).body.data)==null?void 0:a.project)==null?void 0:i.repository)==null?void 0:u.tree)==null?void 0:l.lastCommit;if(!o)throw new Error("Commit not found.");return{data:{name:o.authorName,email:o.authorEmail,avatarUrl:o.authorGravatar}}}async getAccountForEmail(t,r={}){var o,a,i;let n=(i=(a=(o=(await v(this.config,{query:`
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
- ${E}
403
+ ${L}
404
404
  }
405
405
  }
406
406
  }
407
- `,variables:{email:t.email}},r)).body.data)==null?void 0:o.users)==null?void 0:a.nodes)==null?void 0:i[0];if(!n)throw new Error("User not found.");return{data:B(n)}}async getAccountForUsername(t,r={}){var o;let n=(o=(await v(this.config,{query:`
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
- ${E}
410
+ ${L}
411
411
  }
412
412
  }
413
- `,variables:{username:t.username}},r)).body.data)==null?void 0:o.user;if(!n)throw new Error("User not found.");return{data:B(n)}}async getRepo(t,r={}){var o;let s=x(t),n=await v(this.config,{query:`
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
- ${fe}
416
+ ${Re}
417
417
  }
418
418
  }
419
- `,variables:{fullPath:s}},r);if(!((o=n.body.data)!=null&&o.project))throw new Error(`Repository ${s} not found`);return{data:be(n.body.data.project)}}async getRepos(t,r={}){let s=t.map(x),n=s.map((a,i)=>`
420
- getRepo_${i}: project(fullPath: "${a}") {
421
- ${fe}
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
- `),o=await v(this.config,{query:`
424
+ `),a=await C(this.config,{query:`
425
425
  query batchGetRepos {
426
- ${n}
426
+ ${s}
427
427
  }
428
- `},r);if(!o.body.data)throw new Error(o.statusText||"Unknown error");return{data:s.map((a,i)=>{let u=o.body.data[`getRepo_${i}`];if(!u)throw new Error(`Repository ${a} not found`);return be(u)})}}async getRefs(t,r,s={}){var u;let n=x(r.repo),o=new URL(`${he}/projects/${encodeURIComponent(n)}/repository/${t}`);o.searchParams.set("page",((u=r.page)==null?void 0:u.toString())||"1"),o.searchParams.set("per_page",$.toString());let a=await this.config.request({url:o.toString(),headers:y(s.token||this.config.token)}),i=a.headers["x-next-page"];return{pageInfo:{hasNextPage:!!i,nextPage:i?parseInt(i,10):null},data:a.body.map(l=>({name:l.name,commit:{oid:l.commit.id,authoredDate:new Date(l.commit.authored_date),committedDate:new Date(l.commit.committed_date)}}))}}async getBranches(t,r={}){return this.getRefs("branches",t,r)}async getTags(t,r={}){return this.getRefs("tags",t,r)}async getBlame(t,r={}){let s=x(t.repo),n=new URL(`${he}/projects/${encodeURIComponent(s)}/repository/files/${encodeURIComponent(t.path)}/blame`);n.searchParams.set("ref",t.ref);let o=await this.config.request({url:n.toString(),headers:y(r.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}}})}}}getVariablesForPullRequests(t){let{updatedBefore:r,isDraft:s,authorLogin:n,assigneeLogins:o,reviewRequestedLogin:a}=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"),n&&d("authorUsername",n,"String"),o&&d("assigneeUsername",o[0],"String"),s!=null&&d("draft",s,"Boolean"),a&&d("reviewerUsername",a,"String"),{variables:i,variableTypes:u,mergeRequestArguments:l}}async getPullRequestsForRepo(t,r={}){var b,f,h;let{cursor:s,repo:n}=t||{},o=x(n),{variables:a,variableTypes:i,mergeRequestArguments:u}=this.getVariablesForPullRequests(t),l={fullPath:o,...a},d=await v(this.config,{query:`
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
- ${Re}
451
+ ${be}
452
452
  }
453
453
  }
454
454
  }
455
455
  }
456
- `,variables:{...l,after:s}},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(ye(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:s}=t||{},n=t.repoIds.map(h=>h.toString().startsWith(F)?h:`${F}${h}`),{variables:o,variableTypes:a,mergeRequestArguments:i}=this.getVariablesForPullRequests(t),u={projectIds:n,...o},l=await v(this.config,{query:`
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
- ${a.length?a.join(" "):""}
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
- ${Re}
480
+ ${be}
481
481
  }
482
482
  }
483
483
  }
484
484
  }
485
485
  }
486
- `,variables:{...u,after:s}},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(ye(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 o,a,i,u,l,d,m;let s=Xe(t),n=await v(this.config,{query:`
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
- ${te}
492
+ ${re}
493
493
  }
494
494
  }
495
495
  }
496
- `,variables:{issueId:t.id,projectId:s}},r);if(!((o=n.body.data)!=null&&o.project))throw new Error(`Repository ${s} not found`);if(!((i=(a=n.body.data)==null?void 0:a.project)!=null&&i.issue))throw new Error(`Issue ${t.id} not found`);return{data:re((l=(u=n.body.data)==null?void 0:u.project)==null?void 0:l.issue,{name:(d=n.body.data)==null?void 0:d.project.name,owner:(m=n.body.data)==null?void 0:m.project.fullPath.split("/").slice(0,-1).join("/")})}}getVariablesForIssues(t){let{updatedBefore:r,authorLogin:s,assigneeLogins:n}=t||{},o={},a=[],i=[],u=(l,d,m)=>{a.push(`$${l}: ${m}`),i.push(`${l}: $${l}`),o[l]=d};return r&&u("updatedBefore",r,"Time"),s&&u("authorUsername",s,"String"),n&&u("assigneeUsername",n[0],"String"),{variables:o,variableTypes:a,issueArguments:i}}async getIssuesForRepo(t,r={}){var f,h,R;let{cursor:s,repo:n}=t||{},o=x(n),{variables:a,variableTypes:i,issueArguments:u}=this.getVariablesForIssues(t),l={fullPath:o,...a},d=`
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
- ${te}
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 v(this.config,{query:d,variables:{...l,after:s}},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(re(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:s}=t||{},n=t.repoIds.map(R=>R.toString().startsWith(F)?R:`${F}${R}`),{variables:o,variableTypes:a,mergeRequestArguments:i}=this.getVariablesForPullRequests(t),u={projectIds:n,...o},l=`
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
- ${a.length?a.join(" "):""}
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
- ${te}
547
+ ${re}
548
548
  }
549
549
  }
550
550
  }
551
551
  }
552
- }`,d=await v(this.config,{query:l,variables:{...u,after:s}},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(Ie=>m.push(re(Ie,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 Ze="https://api.atlassian.com/ex/jira",Ke=100,Ye=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:s,authorLogin:n,mentionLogin:o,project:a}=t||{},i=[`project = "${a}"`];return n&&i.push(`creator in (${n})`),s&&i.push(`assignee in (${s.join(", ")})`),o&&i.push(`comment ~ ${o}`),{data:(await this.config.request({url:`${r.baseUrl||Ze}/${t.resourceId}/rest/api/2/search?jql=${i.join(" AND ")}&startAt=0&maxResults=${Ke}&fields=${["assignee","comment","summary","created","creator","updated","votes"].join(",")}`,headers:y(r.token||this.config.token)})).body.issues.map(Ye)}}};var et="https://api.trello.com",tt=1e3,rt=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}},V=class extends S{async getIssuesForBoard(t,r={}){let s=["-is:archived","sort:edited"],{appKey:n,boardId:o,filterText:a,assigneeLogins:i}=t||{};i&&s.push("@me");let u=`${a?`${a}`:""}${s.join(" ")} board:${o}`;return{data:(await this.config.request({url:`${r.baseUrl||et}/1/search?key=${n}&query=${u}&cards_limit=${tt}&token=${r.token||this.config.token}`,headers:y(r.token||this.config.token)})).body.cards.map(rt)}}};var st=e=>{let t={request:e==null?void 0:e.request};return{azureDevOps:new O({...t,...e==null?void 0:e.azureDevOps}),bitbucket:new k({...t,...e==null?void 0:e.bitbucket}),github:new j({...t,...e==null?void 0:e.github}),gitlab:new N({...t,...e==null?void 0:e.gitlab}),jira:new H({...t,...e==null?void 0:e.jira}),trello:new V({...t,...e==null?void 0:e.trello})}},nt=st;
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,7 +1,7 @@
1
1
  {
2
2
  "name": "@gitkraken/provider-apis",
3
- "version": "0.6.1",
4
- "repository": "https://github.com/gitkraken/provider-apis-package-js",
3
+ "version": "0.6.3",
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",
7
7
  "engines": {
@@ -14,7 +14,7 @@
14
14
  ],
15
15
  "scripts": {
16
16
  "build": "yarn clean && node ./scripts/build.mjs && tsc",
17
- "build-docs": "typedoc --plugin typedoc-plugin-markdown --includeVersion --gitRevision 0.6.0 --excludePrivate --excludeProtected --out docs src/index.ts",
17
+ "build-docs": "typedoc",
18
18
  "ci": "yarn lint:ci && yarn prettier:ci && yarn build && yarn test",
19
19
  "clean": "rimraf dist",
20
20
  "lint": "eslint src test --fix",