$limit, author: $author, path: $path, after: $after, before: $before, since: $since, until: $until) { pageInfo { startCursor endCursor hasNextPage hasPreviousPage } nodes { ... on Commit { oid message parents(first: 3) { nodes { oid } } additions changedFiles deletions author { avatarUrl date email name } committer { date email name } } } } } } } }`;if(s?.authors!=null){if(1===s.authors.length){let[e]=s.authors;o={id:e.id,emails:e.email?[e.email]:void 0}}else{let e=s.authors.filter(e=>e.email).map(e=>e.email);o=e.length?{emails:e}:void 0}}let l=await this.graphql(void 0,e,a,{owner:t,repo:i,ref:r,after:s?.after,before:s?.before,path:s?.path,author:o,limit:Math.min(100,s?.limit??100),since:"string"==typeof s?.since?s?.since:s?.since?.toISOString(),until:"string"==typeof s?.until?s?.until:s?.until?.toISOString()},n),c=l?.repository?.object?.history;if(null==c)return Q;return{paging:null!=c.pageInfo.endCursor?{cursor:c.pageInfo.endCursor??void 0,more:c.pageInfo.hasNextPage}:void 0,values:c.nodes,viewer:l?.viewer.name}}catch(e){if(e instanceof _.LN)return Q;throw this.handleException(e,void 0,n)}}async getCommitsCoreRange(e,t,i,r){let s=(0,U.dQ)();try{let s=await this.getComparison(e,t,i,r);if(null==s)return Q;return{values:s.commits?.map(e=>({oid:e.sha,parents:{nodes:e.parents.map(e=>({oid:e.sha}))},message:e.commit.message,author:{avatarUrl:e.author?.avatar_url??void 0,date:e.commit.author?.date??e.commit.author?.date??new Date().toString(),email:e.author?.email??e.commit.author?.email??void 0,name:e.author?.name??e.commit.author?.name??""},committer:{date:e.commit.committer?.date??new Date().toString(),email:e.committer?.email??e.commit.committer?.email??void 0,name:e.committer?.name??e.commit.committer?.name??""}})).reverse()}}catch(e){if(e instanceof _.LN)return Q;throw this.handleException(e,void 0,s)}}async getCommitsCoreSingle(e,t,i,r){let s=(0,U.dQ)();try{let n=`query getCommit( $owner: String! $repo: String! $ref: String! ) { viewer { name } repository(name: $repo owner: $owner) { object(expression: $ref) { ...on Commit { oid parents(first: 3) { nodes { oid } } message additions changedFiles deletions author { avatarUrl date email name } committer { date email name } } } } }`,o=await this.graphql(void 0,e,n,{owner:t,repo:i,ref:r},s);if(null==o)return Q;let a=o.repository?.object;return null!=a?{values:[a],viewer:o.viewer.name}:Q}catch(e){if(e instanceof _.LN)return Q;throw this.handleException(e,void 0,s)}}async getCommitRefs(e,t,i,r,s){let n=(0,U.dQ)();try{let o=`query getCommitRefs( $owner: String! $repo: String! $ref: String! $after: String $before: String $first: Int $last: Int $path: String $since: GitTimestamp $until: GitTimestamp ) { repository(name: $repo, owner: $owner) { object(expression: $ref) { ... on Commit { history(first: $first, last: $last, path: $path, since: $since, until: $until, after: $after, before: $before) { pageInfo { startCursor, endCursor, hasNextPage, hasPreviousPage } totalCount nodes { oid } } } } } }`,a=await this.graphql(void 0,e,o,{owner:t,repo:i,ref:r,path:s?.path,first:s?.first,last:s?.last,after:s?.after,before:s?.before,since:s?.since,until:s?.until},n),l=a?.repository?.object?.history;if(null==l)return;return{pageInfo:l.pageInfo,totalCount:l.totalCount,values:l.nodes}}catch(e){if(e instanceof _.LN)return;throw this.handleException(e,void 0,n)}}async getCommitTags(e,t,i,r,s){let n=(0,U.dQ)();try{let o=`query getCommitTags( $owner: String! $repo: String! $since: GitTimestamp! $until: GitTimestamp! ) { repository(owner: $owner, name: $repo) { refs(first: 20, refPrefix: "refs/tags/") { nodes { name target { ... on Commit { history(first: 3, since: $since until: $until) { nodes { oid } } } } } } } }`,a=await this.graphql(void 0,e,o,{owner:t,repo:i,since:s.toISOString(),until:s.toISOString()},n),l=a?.repository?.refs?.nodes;if(null==l)return[];let c=[];for(let e of l)for(let t of e.target.history.nodes)if(t.oid===r){c.push(e.name);break}return c}catch(e){if(e instanceof _.LN)return[];throw this.handleException(e,void 0,n)}}async getNextCommitRefs(e,t,i,r,s,n){let o;let a=await this.getCommitDate(e,t,i,n);if(null==a)return[];let l=await this.getCommitRefs(e,t,i,r,{path:s,first:1,since:a});if(null==l)return[];let c=`${l.pageInfo.startCursor.split(" ",1)[0]} ${l.totalCount}`;if([,o]=c.split(" ",2),o=Math.min(parseInt(o,10),5),null==(l=await this.getCommitRefs(e,t,i,r,{path:s,last:o,before:c})))return[];let h=[];for(let{oid:e}of l.values){if(e===n)break;h.push(e)}return h.reverse()}async getCommitDate(e,t,i,r){let s=(0,U.dQ)();try{let n=`query getCommitDate( $owner: String! $repo: String! $sha: GitObjectID! ) { repository(name: $repo, owner: $owner) { object(oid: $sha) { ... on Commit { committer { date } } } } }`,o=await this.graphql(void 0,e,n,{owner:t,repo:i,sha:r},s);return o?.repository?.object?.committer.date}catch(e){if(e instanceof _.LN)return;throw this.handleException(e,void 0,s)}}async getContributors(e,t,i){let r=(0,U.dQ)();try{let s=await this.request(void 0,e,"GET /repos/{owner}/{repo}/contributors",{owner:t,repo:i,per_page:100},r),n=s?.data;if(null==n)return[];return s.data}catch(e){if(e instanceof _.LN)return[];throw this.handleException(e,void 0,r)}}async getDefaultBranchName(e,t,i){let r=(0,U.dQ)();try{let s=`query getDefaultBranch( $owner: String! $repo: String! ) { repository(owner: $owner, name: $repo) { defaultBranchRef { name } } }`,n=await this.graphql(void 0,e,s,{owner:t,repo:i},r);if(null==n)return;return n.repository?.defaultBranchRef?.name??void 0}catch(e){if(e instanceof _.LN)return;throw this.handleException(e,void 0,r)}}async getCurrentUser(e,t,i){let r=(0,U.dQ)();try{let s=`query getCurrentUser( $owner: String! $repo: String! ) { viewer { name, email, login, id } repository(owner: $owner, name: $repo) { viewerPermission } }`,n=await this.graphql(void 0,e,s,{owner:t,repo:i},r);if(null==n)return;return{name:n.viewer?.name,email:n.viewer?.email,username:n.viewer?.login,id:n.viewer?.id}}catch(e){if(e instanceof _.LN)return;throw this.handleException(e,void 0,r)}}async getComparison(e,t,i,r){let s=(0,U.dQ)();if(!(0,E.p8)(r,"qualified-triple-dot")){let e=(0,E.jY)(r);r=(0,E.Xn)(e?.left||"HEAD",e?.right||"HEAD","...")}try{let n=await this.request(void 0,e,"GET /repos/{owner}/{repo}/compare/{basehead}",{owner:t,repo:i,basehead:r},s),o=n?.data;if(null==o)return;return o}catch(e){if(e instanceof _.LN)return;throw this.handleException(e,void 0,s)}}async getRepositoryVisibility(e,t,i){let r=(0,U.dQ)();try{let s=`query getRepositoryVisibility( $owner: String! $repo: String! ) { repository(owner: $owner, name: $repo) { visibility } }`,n=await this.graphql(void 0,e,s,{owner:t,repo:i},r);if(n?.repository?.visibility==null)return;return"PUBLIC"===n.repository.visibility?"public":"private"}catch(e){if(e instanceof _.LN)return;throw this.handleException(e,void 0,r)}}async getTags(e,t,i,r){let s=(0,U.dQ)();try{let n=`query getTags( $owner: String! $repo: String! $tagQuery: String $cursor: String $limit: Int = 100 ) { repository(owner: $owner, name: $repo) { refs(query: $tagQuery, refPrefix: "refs/tags/", first: $limit, after: $cursor, orderBy: { field: TAG_COMMIT_DATE, direction: DESC }) { pageInfo { endCursor hasNextPage } nodes { name target { oid ...on Tag { message tagger { date } target { ...on Commit { oid authoredDate committedDate message } } } } } } } }`,o=await this.graphql(void 0,e,n,{owner:t,repo:i,tagQuery:r?.query,cursor:r?.cursor,limit:Math.min(100,r?.limit??100)},s);if(null==o)return Q;let a=o.repository?.refs;if(null==a)return Q;return{paging:{cursor:a.pageInfo.endCursor,more:a.pageInfo.hasNextPage},values:a.nodes}}catch(e){if(e instanceof _.LN)return Q;throw this.handleException(e,void 0,s)}}async resolveReference(e,t,i,r,s){let n=(0,U.dQ)();try{if(!s){let s=`query resolveReference( $owner: String! $repo: String! $ref: String! ) { repository(owner: $owner, name: $repo) { object(expression: $ref) { oid } } }`,o=await this.graphql(void 0,e,s,{owner:t,repo:i,ref:r},n);return o?.repository?.object?.oid??void 0}let o=`query resolveReference( $owner: String! $repo: String! $ref: String! $path: String! ) { repository(owner: $owner, name: $repo) { object(expression: $ref) { ... on Commit { history(first: 1, path: $path) { nodes { oid } } } } } }`,a=await this.graphql(void 0,e,o,{owner:t,repo:i,ref:r,path:s},n);return a?.repository?.object?.history.nodes?.[0]?.oid??void 0}catch(e){if(e instanceof _.LN)return;throw this.handleException(e,void 0,n)}}async searchCommits(e,t,i){let r,s,n;let o=(0,U.dQ)(),a=Math.min(100,i?.limit??100);i?.cursor!=null?([r,s,n]=i.cursor.split(" ",3),r=parseInt(r,10),s=parseInt(s,10),n=parseInt(n,10)):(r=1,s=a,n=0);try{let a=await this.request(void 0,e,"GET /search/commits",{q:t,sort:i?.sort,order:i?.order,per_page:s,page:r},o),l=a?.data;if(null==l||0===l.items.length)return;let c=l.items.map(e=>({oid:e.sha,parents:{nodes:e.parents.map(e=>({oid:e.sha}))},message:e.commit.message,author:{avatarUrl:e.author?.avatar_url??void 0,date:e.commit.author?.date??e.commit.author?.date??new Date().toString(),email:e.author?.email??e.commit.author?.email??void 0,name:e.author?.name??e.commit.author?.name??""},committer:{date:e.commit.committer?.date??e.committer?.date??new Date().toString(),email:e.committer?.email??e.commit.committer?.email??void 0,name:e.committer?.name??e.commit.committer?.name??""}})),h=n+l.items.length,u=l.incomplete_results||l.total_count>h;return{pageInfo:{startCursor:`${r} ${s} ${n}`,endCursor:u?`${r+1} ${s} ${h}`:void 0,hasPreviousPage:l.total_count>0&&r>1,hasNextPage:u},totalCount:l.total_count,values:c}}catch(e){if(e instanceof _.LN)return;throw this.handleException(e,void 0,o)}}async searchCommitShas(e,t,i){let r,s,n;let o=(0,U.dQ)(),a=Math.min(100,i?.limit??100);i?.cursor!=null?([r,s,n]=i.cursor.split(" ",3),r=parseInt(r,10),s=parseInt(s,10),n=parseInt(n,10)):(r=1,s=a,n=0);try{let a=await this.request(void 0,e,"GET /search/commits",{q:t,sort:i?.sort,order:i?.order,per_page:s,page:r},o),l=a?.data;if(null==l||0===l.items.length)return;let c=n+l.items.length,h=l.incomplete_results||l.total_count>c;return{pageInfo:{startCursor:`${r} ${s} ${n}`,endCursor:h?`${r+1} ${s} ${c}`:void 0,hasPreviousPage:l.total_count>0&&r>1,hasNextPage:h},totalCount:l.total_count,values:l.items.map(e=>({sha:e.sha,authorDate:new Date(e.commit.author.date).getTime(),committerDate:new Date(e.commit.committer?.date??e.commit.author.date).getTime()}))}}catch(e){if(e instanceof _.LN)return;throw this.handleException(e,void 0,o)}}_enterpriseVersions=new Map;async getEnterpriseVersion(e,t,i){let r=this._enterpriseVersions.get(t);if(null!=r)return r;if(null===r)return;let s=(0,U.dQ)();try{let n=await this.request(e,t,"GET /meta",i,s),o=n?.data?.installed_version;r=o?(0,M.sH)(o):null}catch(e){r=null}return this._enterpriseVersions.set(t,r),r??void 0}async graphql(e,t,i,s,n,o){try{let n;if(null!=o){if(o.isCancellationRequested)throw new _.AL;n=new AbortController,o.onCancellationRequested(()=>n.abort()),s={...s,request:{...s?.request,signal:n.signal}}}return await (0,r.Ff)(e?.getIgnoreSSLErrors()??!1,()=>this.getDefaults(t,T)(i,s))}catch(i){if(i instanceof P){switch(i.errors?.[0]?.type){case"NOT_FOUND":throw new _.LN(i);case"FORBIDDEN":throw new _.v3("github",_.R.Forbidden,i);case"RATE_LIMITED":{let e;let r=i.headers?.["x-ratelimit-reset"];throw null!=r&&Number.isNaN(e=parseInt(r,10))&&(e=void 0),new _.HG(i,t,e)}}B.Vy.isDebugging&&I.window.showErrorMessage(`GitHub request failed: ${i.errors?.[0]?.message??i.message}`)}else i instanceof RequestError||"AbortError"===i.name?this.handleRequestError(e,t,i,n):B.Vy.isDebugging&&I.window.showErrorMessage(`GitHub request failed: ${i.message}`);throw i}}async request(e,t,i,s,n,o){try{