@shelf/gh-sdk
Advanced tools
Comparing version 0.5.0 to 0.6.0
@@ -1,19 +0,3 @@ | ||
import { PullsCreateReviewResponseData, PullsMergeResponseData } from '@octokit/types'; | ||
import { PullsMergeResponse405Data, PullsMergeResponse409Data } from '@octokit/types/dist-types/generated/Endpoints'; | ||
export { listPrs, listClosedPRs } from './prs/list-prs'; | ||
export { listOrgRepos } from './repos/list-org-repos'; | ||
export { getRepoBranch, getRepoBranches, getRepoBranchesNames } from './repos/get-repo-branches'; | ||
export { deleteBranch } from './repos/delete-branch'; | ||
export { createReleasePR } from './prs/create-release-pr'; | ||
export { getPR } from './prs/get-pr'; | ||
export { createReleaseBranch } from './repos/create-release-branch'; | ||
export { getLatestBranchCommit, getLatestDevelopCommit, getLatestDevelopCommitSHA } from './repos/get-latest-branch-commit'; | ||
export { getRepoLabels, createReleaseLabel, assignReleaseLabelToPR } from './repos/labels'; | ||
interface ApprovePRParams { | ||
owner: string; | ||
repo: string; | ||
pr: number; | ||
} | ||
export declare function approvePR(params: ApprovePRParams): Promise<PullsCreateReviewResponseData>; | ||
export declare function mergePR(params: ApprovePRParams): Promise<PullsMergeResponseData | PullsMergeResponse405Data | PullsMergeResponse409Data>; | ||
export declare function getUserOrgs(): Promise<string[]>; | ||
export * from './prs'; | ||
export * from './repos'; | ||
export * from './misc'; |
179
lib/index.js
@@ -6,155 +6,40 @@ "use strict"; | ||
}); | ||
exports.approvePR = approvePR; | ||
exports.mergePR = mergePR; | ||
exports.getUserOrgs = getUserOrgs; | ||
Object.defineProperty(exports, "listPrs", { | ||
enumerable: true, | ||
get: function () { | ||
return _listPrs.listPrs; | ||
} | ||
}); | ||
Object.defineProperty(exports, "listClosedPRs", { | ||
enumerable: true, | ||
get: function () { | ||
return _listPrs.listClosedPRs; | ||
} | ||
}); | ||
Object.defineProperty(exports, "listOrgRepos", { | ||
enumerable: true, | ||
get: function () { | ||
return _listOrgRepos.listOrgRepos; | ||
} | ||
}); | ||
Object.defineProperty(exports, "getRepoBranch", { | ||
enumerable: true, | ||
get: function () { | ||
return _getRepoBranches.getRepoBranch; | ||
} | ||
}); | ||
Object.defineProperty(exports, "getRepoBranches", { | ||
enumerable: true, | ||
get: function () { | ||
return _getRepoBranches.getRepoBranches; | ||
} | ||
}); | ||
Object.defineProperty(exports, "getRepoBranchesNames", { | ||
enumerable: true, | ||
get: function () { | ||
return _getRepoBranches.getRepoBranchesNames; | ||
} | ||
}); | ||
Object.defineProperty(exports, "deleteBranch", { | ||
enumerable: true, | ||
get: function () { | ||
return _deleteBranch.deleteBranch; | ||
} | ||
}); | ||
Object.defineProperty(exports, "createReleasePR", { | ||
enumerable: true, | ||
get: function () { | ||
return _createReleasePr.createReleasePR; | ||
} | ||
}); | ||
Object.defineProperty(exports, "getPR", { | ||
enumerable: true, | ||
get: function () { | ||
return _getPr.getPR; | ||
} | ||
}); | ||
Object.defineProperty(exports, "createReleaseBranch", { | ||
enumerable: true, | ||
get: function () { | ||
return _createReleaseBranch.createReleaseBranch; | ||
} | ||
}); | ||
Object.defineProperty(exports, "getLatestBranchCommit", { | ||
enumerable: true, | ||
get: function () { | ||
return _getLatestBranchCommit.getLatestBranchCommit; | ||
} | ||
}); | ||
Object.defineProperty(exports, "getLatestDevelopCommit", { | ||
enumerable: true, | ||
get: function () { | ||
return _getLatestBranchCommit.getLatestDevelopCommit; | ||
} | ||
}); | ||
Object.defineProperty(exports, "getLatestDevelopCommitSHA", { | ||
enumerable: true, | ||
get: function () { | ||
return _getLatestBranchCommit.getLatestDevelopCommitSHA; | ||
} | ||
}); | ||
Object.defineProperty(exports, "getRepoLabels", { | ||
enumerable: true, | ||
get: function () { | ||
return _labels.getRepoLabels; | ||
} | ||
}); | ||
Object.defineProperty(exports, "createReleaseLabel", { | ||
enumerable: true, | ||
get: function () { | ||
return _labels.createReleaseLabel; | ||
} | ||
}); | ||
Object.defineProperty(exports, "assignReleaseLabelToPR", { | ||
enumerable: true, | ||
get: function () { | ||
return _labels.assignReleaseLabelToPR; | ||
} | ||
}); | ||
var _restClient = require("./rest-client"); | ||
var _prs = require("./prs"); | ||
var _listPrs = require("./prs/list-prs"); | ||
Object.keys(_prs).forEach(function (key) { | ||
if (key === "default" || key === "__esModule") return; | ||
if (key in exports && exports[key] === _prs[key]) return; | ||
Object.defineProperty(exports, key, { | ||
enumerable: true, | ||
get: function () { | ||
return _prs[key]; | ||
} | ||
}); | ||
}); | ||
var _listOrgRepos = require("./repos/list-org-repos"); | ||
var _repos = require("./repos"); | ||
var _getRepoBranches = require("./repos/get-repo-branches"); | ||
Object.keys(_repos).forEach(function (key) { | ||
if (key === "default" || key === "__esModule") return; | ||
if (key in exports && exports[key] === _repos[key]) return; | ||
Object.defineProperty(exports, key, { | ||
enumerable: true, | ||
get: function () { | ||
return _repos[key]; | ||
} | ||
}); | ||
}); | ||
var _deleteBranch = require("./repos/delete-branch"); | ||
var _misc = require("./misc"); | ||
var _createReleasePr = require("./prs/create-release-pr"); | ||
var _getPr = require("./prs/get-pr"); | ||
var _createReleaseBranch = require("./repos/create-release-branch"); | ||
var _getLatestBranchCommit = require("./repos/get-latest-branch-commit"); | ||
var _labels = require("./repos/labels"); | ||
async function approvePR(params) { | ||
const gh = (0, _restClient.getClient)(); | ||
const { | ||
data | ||
} = await gh.pulls.createReview({ | ||
owner: params.owner, | ||
repo: params.repo, | ||
event: 'APPROVE', | ||
pull_number: params.pr | ||
Object.keys(_misc).forEach(function (key) { | ||
if (key === "default" || key === "__esModule") return; | ||
if (key in exports && exports[key] === _misc[key]) return; | ||
Object.defineProperty(exports, key, { | ||
enumerable: true, | ||
get: function () { | ||
return _misc[key]; | ||
} | ||
}); | ||
return data; | ||
} | ||
async function mergePR(params) { | ||
const gh = (0, _restClient.getClient)(); | ||
const { | ||
data | ||
} = await gh.pulls.merge({ | ||
repo: params.repo, | ||
pull_number: params.pr, | ||
owner: params.owner, | ||
merge_method: 'merge' | ||
}); | ||
return data; | ||
} | ||
async function getUserOrgs() { | ||
const gh = (0, _restClient.getClient)(); | ||
const { | ||
data | ||
} = await gh.orgs.listForAuthenticatedUser(); | ||
const orgNames = data.map(item => item.login); | ||
return orgNames.sort(); | ||
} | ||
}); |
@@ -1,3 +0,3 @@ | ||
import { PullsCreateResponseData } from '@octokit/types'; | ||
export declare function createReleasePR({ owner, repo, version, releaseTitle }: { | ||
import { RestEndpointMethodTypes } from '@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types'; | ||
export declare function createReleasePR({ owner, repo, version, releaseTitle, }: { | ||
owner: string; | ||
@@ -7,2 +7,2 @@ repo: string; | ||
releaseTitle: string; | ||
}): Promise<PullsCreateResponseData>; | ||
}): Promise<RestEndpointMethodTypes['pulls']['create']['response']['data']>; |
@@ -1,6 +0,6 @@ | ||
import { PullsGetResponseData } from '@octokit/types'; | ||
export declare function getPR({ repo, owner, pr }: { | ||
import { RestEndpointMethodTypes } from '@octokit/plugin-rest-endpoint-methods'; | ||
export declare function getPR({ repo, owner, pr, }: { | ||
repo: string; | ||
owner: string; | ||
pr: number; | ||
}): Promise<PullsGetResponseData>; | ||
}): Promise<RestEndpointMethodTypes['pulls']['get']['response']['data']>; |
@@ -1,2 +0,2 @@ | ||
import { SearchIssuesAndPullRequestsResponseData } from '@octokit/types'; | ||
import { RestEndpointMethodTypes } from '@octokit/plugin-rest-endpoint-methods'; | ||
interface ListOpenPRsParams { | ||
@@ -13,3 +13,3 @@ owner: string; | ||
export declare function listClosedPRs(params: ListOpenPRsParams): ReturnType<typeof listPRs>; | ||
declare function listPRs(params: ListPRsParams): Promise<SearchIssuesAndPullRequestsResponseData['items']>; | ||
declare function listPRs(params: ListPRsParams): Promise<RestEndpointMethodTypes['search']['issuesAndPullRequests']['response']['data']['items']>; | ||
export {}; |
@@ -9,2 +9,4 @@ "use strict"; | ||
var _paginateGenerator = require("paginate-generator"); | ||
var _restClient = require("../rest-client"); | ||
@@ -25,41 +27,23 @@ | ||
async function listPRs(params) { | ||
const prs = []; | ||
let page = 1; | ||
let totalCount = 0; | ||
const prs = await (0, _paginateGenerator.all)((0, _paginateGenerator.paginate)(async token => { | ||
if ((token || 1) >= 11) { | ||
return { | ||
page: [] | ||
}; | ||
} | ||
do { | ||
const data = await search({ | ||
page, | ||
q: `is:${params.prStatus} is:pr archived:false user:${params.owner} ${params.searchText || ''}`.trim() | ||
const gh = (0, _restClient.getClient)(); | ||
const { | ||
data | ||
} = await gh.search.issuesAndPullRequests({ | ||
per_page: 100, | ||
page: token || 1, | ||
q: `is:${params.prStatus} is:pr archived:false user:${params.owner} ${params.searchText || ''}` | ||
}); | ||
totalCount = data.total_count; | ||
prs.push(...data.items); | ||
page++; | ||
} while (prs.length < totalCount); | ||
return prs; | ||
} | ||
async function search({ | ||
q, | ||
page | ||
}) { | ||
// Because HttpError: Only the first 1000 search results are available | ||
if (page >= 11) { | ||
return { | ||
incomplete_results: false, | ||
items: [], | ||
total_count: 0 | ||
next: data.items.length >= 100 ? (token || 1) + 1 : undefined, | ||
page: data.items | ||
}; | ||
} | ||
const gh = (0, _restClient.getClient)(); | ||
const { | ||
data | ||
} = await gh.search.issuesAndPullRequests({ | ||
per_page: 100, | ||
page, | ||
q | ||
}); | ||
return data; | ||
})); | ||
return prs; | ||
} |
@@ -1,3 +0,3 @@ | ||
import { GitCreateRefResponseData } from '@octokit/types'; | ||
export declare function createReleaseBranch({ owner, repo, version, sha }: { | ||
import { RestEndpointMethodTypes } from '@octokit/plugin-rest-endpoint-methods'; | ||
export declare function createReleaseBranch({ owner, repo, version, sha, }: { | ||
owner: string; | ||
@@ -7,2 +7,2 @@ repo: string; | ||
sha: string; | ||
}): Promise<GitCreateRefResponseData>; | ||
}): Promise<RestEndpointMethodTypes['git']['createRef']['response']['data']>; |
import { RestEndpointMethodTypes } from '@octokit/plugin-rest-endpoint-methods'; | ||
import { OctokitResponse } from '@octokit/types'; | ||
export declare function deleteBranch({ owner, repo, ref }: RestEndpointMethodTypes['git']['deleteRef']['parameters']): Promise<OctokitResponse<any>>; | ||
export declare function deleteBranch({ owner, repo, ref, }: RestEndpointMethodTypes['git']['deleteRef']['parameters']): Promise<RestEndpointMethodTypes['git']['deleteRef']['response']['data'] | undefined>; |
@@ -0,32 +1,10 @@ | ||
import { RestEndpointMethodTypes } from '@octokit/plugin-rest-endpoint-methods'; | ||
import { getRepoBranch } from './get-repo-branches'; | ||
declare type LatestBranchCommit = { | ||
author: { | ||
avatar_url: string; | ||
gravatar_id: string; | ||
id: number; | ||
login: string; | ||
url: string; | ||
}; | ||
committer: { | ||
avatar_url: string; | ||
gravatar_id: string; | ||
id: number; | ||
login: string; | ||
url: string; | ||
}; | ||
parents: Array<{ | ||
sha: string; | ||
url: string; | ||
}>; | ||
node_id: string; | ||
sha: string; | ||
url: string; | ||
commit?: Record<string, unknown>; | ||
}; | ||
export declare function getLatestBranchCommit({ owner, repo, branch }: Parameters<typeof getRepoBranch>[0]): Promise<LatestBranchCommit>; | ||
export declare function getLatestDevelopCommit({ owner, repo }: { | ||
declare type LatestBranchCommit = RestEndpointMethodTypes['repos']['getBranch']['response']['data']['commit'] | undefined; | ||
export declare function getLatestBranchCommit({ owner, repo, branch, }: Parameters<typeof getRepoBranch>[0]): Promise<LatestBranchCommit>; | ||
export declare function getLatestDevelopCommit({ owner, repo, }: { | ||
owner: string; | ||
repo: string; | ||
}): Promise<LatestBranchCommit>; | ||
export declare function getLatestDevelopCommitSHA({ owner, repo }: { | ||
export declare function getLatestDevelopCommitSHA({ owner, repo, }: { | ||
owner: string; | ||
@@ -33,0 +11,0 @@ repo: string; |
@@ -10,4 +10,2 @@ "use strict"; | ||
var _lodash = require("lodash"); | ||
var _getRepoBranches = require("./get-repo-branches"); | ||
@@ -25,3 +23,3 @@ | ||
}); | ||
return (0, _lodash.get)(branchResponse, 'commit', ''); | ||
return branchResponse === null || branchResponse === void 0 ? void 0 : branchResponse.commit; | ||
} | ||
@@ -48,3 +46,3 @@ | ||
}); | ||
return (0, _lodash.get)(commit, 'sha', ''); | ||
return (commit === null || commit === void 0 ? void 0 : commit.sha) || ''; | ||
} |
import { RestEndpointMethodTypes } from '@octokit/plugin-rest-endpoint-methods'; | ||
import { ReposGetBranchResponseData, ReposListBranchesResponseData } from '@octokit/types'; | ||
export declare function getRepoBranch({ owner, repo, branch }: RestEndpointMethodTypes['repos']['getBranch']['parameters']): Promise<ReposGetBranchResponseData>; | ||
export declare function getRepoBranches({ owner, repo }: RestEndpointMethodTypes['repos']['listBranches']['parameters']): Promise<ReposListBranchesResponseData>; | ||
export declare function getRepoBranchesNames({ owner, repo }: { | ||
export declare function getRepoBranch({ owner, repo, branch, }: RestEndpointMethodTypes['repos']['getBranch']['parameters']): Promise<RestEndpointMethodTypes['repos']['getBranch']['response']['data']>; | ||
export declare function getRepoBranches({ owner, repo, }: RestEndpointMethodTypes['repos']['listBranches']['parameters']): Promise<RestEndpointMethodTypes['repos']['listBranches']['response']['data']>; | ||
export declare function getRepoBranchesNames({ owner, repo, }: { | ||
owner: string; | ||
repo: string; | ||
}): Promise<string[]>; |
@@ -1,2 +0,2 @@ | ||
import { ReposListForOrgResponseData } from '@octokit/types'; | ||
export declare function listOrgRepos(org: string): Promise<ReposListForOrgResponseData>; | ||
import { RestEndpointMethodTypes } from '@octokit/plugin-rest-endpoint-methods'; | ||
export declare function listOrgRepos(org: string): Promise<RestEndpointMethodTypes['repos']['listForOrg']['response']['data']>; |
{ | ||
"name": "@shelf/gh-sdk", | ||
"version": "0.5.0", | ||
"version": "0.6.0", | ||
"description": "Convenient wrapper for GitHub API for automation tasks", | ||
@@ -43,29 +43,30 @@ "license": "MIT", | ||
}, | ||
"babel": { | ||
"extends": "@shelf/babel-config/backend" | ||
}, | ||
"prettier": "@shelf/prettier-config", | ||
"jest": { | ||
"testEnvironment": "node" | ||
}, | ||
"dependencies": { | ||
"@octokit/rest": "18.0.6", | ||
"lodash": "4.17.20" | ||
"@octokit/rest": "18.6.0", | ||
"lodash": "4.17.21", | ||
"paginate-generator": "1.2.7" | ||
}, | ||
"devDependencies": { | ||
"@babel/cli": "7.12.1", | ||
"@babel/core": "7.12.3", | ||
"@babel/preset-env": "7.12.1", | ||
"@babel/preset-typescript": "7.12.1", | ||
"@shelf/eslint-config": "0.23.1", | ||
"@shelf/prettier-config": "0.0.7", | ||
"@types/jest": "26.0.15", | ||
"@types/node": "12.12.31", | ||
"babel-jest": "26.6.0", | ||
"eslint": "7.11.0", | ||
"@babel/cli": "7.14.5", | ||
"@babel/core": "7.14.6", | ||
"@shelf/babel-config": "0.1.4", | ||
"@shelf/eslint-config": "1.3.0", | ||
"@shelf/prettier-config": "1.0.0", | ||
"@shelf/tsconfig": "0.0.6", | ||
"@types/jest": "26.0.23", | ||
"@types/lodash": "4.14.170", | ||
"@types/node": "14", | ||
"eslint": "7.29.0", | ||
"husky": "4.3.0", | ||
"jest": "26.6.0", | ||
"lint-staged": "10.4.2", | ||
"prettier": "2.1.2", | ||
"typescript": "4.0.3" | ||
"jest": "27.0.4", | ||
"lint-staged": "11.0.0", | ||
"prettier": "2.3.1", | ||
"typescript": "4.3.4" | ||
}, | ||
"engines": { | ||
"node": ">=12" | ||
"node": ">=14" | ||
}, | ||
@@ -72,0 +73,0 @@ "publishConfig": { |
@@ -35,2 +35,3 @@ # gh-sdk [![CircleCI](https://circleci.com/gh/shelfio/gh-sdk/tree/master.svg?style=svg)](https://circleci.com/gh/shelfio/gh-sdk/tree/master)![](https://img.shields.io/badge/code_style-prettier-ff69b4.svg) | ||
assignReleaseLabelToPR('shelf', 'api', 134); | ||
extractRepoNameFromURL('https://github.com/shelfio/gh-sdk/pulls/5'); // => gh-sdk | ||
``` | ||
@@ -44,3 +45,3 @@ | ||
$ yarn publish | ||
$ git push origin master | ||
$ git push origin master --tags | ||
``` | ||
@@ -47,0 +48,0 @@ |
23562
39
620
50
3
+ Addedpaginate-generator@1.2.7
+ Added@octokit/plugin-rest-endpoint-methods@5.3.1(transitive)
+ Added@octokit/rest@18.6.0(transitive)
+ Addedlodash@4.17.21(transitive)
+ Addedpaginate-generator@1.2.7(transitive)
- Removed@octokit/plugin-rest-endpoint-methods@4.2.0(transitive)
- Removed@octokit/rest@18.0.6(transitive)
- Removed@octokit/types@5.5.0(transitive)
- Removed@types/node@20.12.12(transitive)
- Removedlodash@4.17.20(transitive)
- Removedundici-types@5.26.5(transitive)
Updated@octokit/rest@18.6.0
Updatedlodash@4.17.21