refactor(dev-infra): update octokit to latest version v18 (#42666)
We previously held off with updating Octokit to v18 due to their more noticable issues with typings. This commit updates us to the latest version in order to take advantage of the new pagination API (which is also strongly-typed), and to not fall behind too much over time (Octokit seems to change quite often..) We work around the problem with the types for `getContent` by just using a type cast with a TODO (and link to the issue). Similarly we work around a problem where the Octokit types have an incorrect type for the name of the labels array in an API response. PR Close #42666
This commit is contained in:
parent
02742552f3
commit
279e63f65f
|
@ -64,8 +64,11 @@ var GithubClient = /** @class */ (function () {
|
||||||
this.repos = this._octokit.repos;
|
this.repos = this._octokit.repos;
|
||||||
this.issues = this._octokit.issues;
|
this.issues = this._octokit.issues;
|
||||||
this.git = this._octokit.git;
|
this.git = this._octokit.git;
|
||||||
this.paginate = this._octokit.paginate;
|
|
||||||
this.rateLimit = this._octokit.rateLimit;
|
this.rateLimit = this._octokit.rateLimit;
|
||||||
|
// Note: These are properties from `Octokit` that are brought in by optional plugins.
|
||||||
|
// TypeScript requires us to provide an explicit type for these.
|
||||||
|
this.rest = this._octokit.rest;
|
||||||
|
this.paginate = this._octokit.paginate;
|
||||||
}
|
}
|
||||||
return GithubClient;
|
return GithubClient;
|
||||||
}());
|
}());
|
||||||
|
|
|
@ -227,8 +227,11 @@ var GithubClient = /** @class */ (function () {
|
||||||
this.repos = this._octokit.repos;
|
this.repos = this._octokit.repos;
|
||||||
this.issues = this._octokit.issues;
|
this.issues = this._octokit.issues;
|
||||||
this.git = this._octokit.git;
|
this.git = this._octokit.git;
|
||||||
this.paginate = this._octokit.paginate;
|
|
||||||
this.rateLimit = this._octokit.rateLimit;
|
this.rateLimit = this._octokit.rateLimit;
|
||||||
|
// Note: These are properties from `Octokit` that are brought in by optional plugins.
|
||||||
|
// TypeScript requires us to provide an explicit type for these.
|
||||||
|
this.rest = this._octokit.rest;
|
||||||
|
this.paginate = this._octokit.paginate;
|
||||||
}
|
}
|
||||||
return GithubClient;
|
return GithubClient;
|
||||||
}());
|
}());
|
||||||
|
@ -672,6 +675,13 @@ function printToLogFile(logLevel) {
|
||||||
LOGGED_TEXT += text.join(' ').split('\n').map(function (l) { return logLevelText + " " + l + "\n"; }).join('');
|
LOGGED_TEXT += text.join(' ').split('\n').map(function (l) { return logLevelText + " " + l + "\n"; }).join('');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google LLC All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
/**
|
/**
|
||||||
* Extension of the `GitClient` with additional utilities which are useful for
|
* Extension of the `GitClient` with additional utilities which are useful for
|
||||||
* authenticated Git client instances.
|
* authenticated Git client instances.
|
||||||
|
@ -737,8 +747,7 @@ var AuthenticatedGitClient = /** @class */ (function (_super) {
|
||||||
}
|
}
|
||||||
// OAuth scopes are loaded via the /rate_limit endpoint to prevent
|
// OAuth scopes are loaded via the /rate_limit endpoint to prevent
|
||||||
// usage of a request against that rate_limit for this lookup.
|
// usage of a request against that rate_limit for this lookup.
|
||||||
return this._cachedOauthScopes = this.github.rateLimit.get().then(function (_response) {
|
return this._cachedOauthScopes = this.github.rateLimit.get().then(function (response) {
|
||||||
var response = _response;
|
|
||||||
var scopes = response.headers['x-oauth-scopes'];
|
var scopes = response.headers['x-oauth-scopes'];
|
||||||
// If no token is provided, or if the Github client is authenticated incorrectly,
|
// If no token is provided, or if the Github client is authenticated incorrectly,
|
||||||
// the `x-oauth-scopes` response header is not set. We error in such cases as it
|
// the `x-oauth-scopes` response header is not set. We error in such cases as it
|
||||||
|
@ -855,8 +864,13 @@ const versionBranchNameRegex = /^(\d+)\.(\d+)\.x$/;
|
||||||
/** Gets the version of a given branch by reading the `package.json` upstream. */
|
/** Gets the version of a given branch by reading the `package.json` upstream. */
|
||||||
function getVersionOfBranch(repo, branchName) {
|
function getVersionOfBranch(repo, branchName) {
|
||||||
return tslib.__awaiter(this, void 0, void 0, function* () {
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
||||||
const { data } = yield repo.api.repos.getContents({ owner: repo.owner, repo: repo.name, path: '/package.json', ref: branchName });
|
const { data } = yield repo.api.repos.getContent({ owner: repo.owner, repo: repo.name, path: '/package.json', ref: branchName });
|
||||||
const content = Array.isArray(data) ? '' : data.content || '';
|
// Workaround for: https://github.com/octokit/rest.js/issues/32.
|
||||||
|
// TODO: Remove cast once types of Octokit `getContent` are fixed.
|
||||||
|
const content = data.content;
|
||||||
|
if (!content) {
|
||||||
|
throw Error(`Unable to read "package.json" file from repository.`);
|
||||||
|
}
|
||||||
const { version } = JSON.parse(Buffer.from(content, 'base64').toString());
|
const { version } = JSON.parse(Buffer.from(content, 'base64').toString());
|
||||||
const parsedVersion = semver.parse(version);
|
const parsedVersion = semver.parse(version);
|
||||||
if (parsedVersion === null) {
|
if (parsedVersion === null) {
|
||||||
|
@ -950,7 +964,7 @@ function fetchActiveReleaseTrains(repo) {
|
||||||
}
|
}
|
||||||
// Collect all version-branches that should be considered for the latest version-branch,
|
// Collect all version-branches that should be considered for the latest version-branch,
|
||||||
// or the feature-freeze/release-candidate.
|
// or the feature-freeze/release-candidate.
|
||||||
const branches = (yield getBranchesForMajorVersions(repo, majorVersionsToConsider));
|
const branches = yield getBranchesForMajorVersions(repo, majorVersionsToConsider);
|
||||||
const { latest, releaseCandidate } = yield findActiveReleaseTrainsFromVersionBranches(repo, nextVersion, branches, expectedReleaseCandidateMajor);
|
const { latest, releaseCandidate } = yield findActiveReleaseTrainsFromVersionBranches(repo, nextVersion, branches, expectedReleaseCandidateMajor);
|
||||||
if (latest === null) {
|
if (latest === null) {
|
||||||
throw Error(`Unable to determine the latest release-train. The following branches ` +
|
throw Error(`Unable to determine the latest release-train. The following branches ` +
|
||||||
|
@ -2926,6 +2940,10 @@ function getTargetBranchesForPr(prNumber) {
|
||||||
/** The current state of the pull request from Github. */
|
/** The current state of the pull request from Github. */
|
||||||
const prData = (yield git.github.pulls.get({ owner, repo, pull_number: prNumber })).data;
|
const prData = (yield git.github.pulls.get({ owner, repo, pull_number: prNumber })).data;
|
||||||
/** The list of labels on the PR as strings. */
|
/** The list of labels on the PR as strings. */
|
||||||
|
// Note: The `name` property of labels is always set but the Github OpenAPI spec is incorrect
|
||||||
|
// here.
|
||||||
|
// TODO(devversion): Remove the non-null cast once
|
||||||
|
// https://github.com/github/rest-api-description/issues/169 is fixed.
|
||||||
const labels = prData.labels.map(l => l.name);
|
const labels = prData.labels.map(l => l.name);
|
||||||
/** The branch targetted via the Github UI. */
|
/** The branch targetted via the Github UI. */
|
||||||
const githubTargetBranch = prData.base.ref;
|
const githubTargetBranch = prData.base.ref;
|
||||||
|
@ -4055,12 +4073,10 @@ var GithubApiMergeStrategy = /** @class */ (function (_super) {
|
||||||
GithubApiMergeStrategy.prototype._getPullRequestCommitMessages = function (_a) {
|
GithubApiMergeStrategy.prototype._getPullRequestCommitMessages = function (_a) {
|
||||||
var prNumber = _a.prNumber;
|
var prNumber = _a.prNumber;
|
||||||
return tslib.__awaiter(this, void 0, void 0, function () {
|
return tslib.__awaiter(this, void 0, void 0, function () {
|
||||||
var request, allCommits;
|
var allCommits;
|
||||||
return tslib.__generator(this, function (_b) {
|
return tslib.__generator(this, function (_b) {
|
||||||
switch (_b.label) {
|
switch (_b.label) {
|
||||||
case 0:
|
case 0: return [4 /*yield*/, this.git.github.paginate(this.git.github.pulls.listCommits, tslib.__assign(tslib.__assign({}, this.git.remoteParams), { pull_number: prNumber }))];
|
||||||
request = this.git.github.pulls.listCommits.endpoint.merge(tslib.__assign(tslib.__assign({}, this.git.remoteParams), { pull_number: prNumber }));
|
|
||||||
return [4 /*yield*/, this.git.github.paginate(request)];
|
|
||||||
case 1:
|
case 1:
|
||||||
allCommits = _b.sent();
|
allCommits = _b.sent();
|
||||||
return [2 /*return*/, allCommits.map(function (_a) {
|
return [2 /*return*/, allCommits.map(function (_a) {
|
||||||
|
@ -6174,8 +6190,7 @@ function getPullRequestState(api, id) {
|
||||||
*/
|
*/
|
||||||
function isPullRequestClosedWithAssociatedCommit(api, id) {
|
function isPullRequestClosedWithAssociatedCommit(api, id) {
|
||||||
return tslib.__awaiter(this, void 0, void 0, function* () {
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
||||||
const request = api.github.issues.listEvents.endpoint.merge(Object.assign(Object.assign({}, api.remoteParams), { issue_number: id }));
|
const events = yield api.github.paginate(api.github.issues.listEvents, Object.assign(Object.assign({}, api.remoteParams), { issue_number: id }));
|
||||||
const events = yield api.github.paginate(request);
|
|
||||||
// Iterate through the events of the pull request in reverse. We want to find the most
|
// Iterate through the events of the pull request in reverse. We want to find the most
|
||||||
// recent events and check if the PR has been closed with a commit associated with it.
|
// recent events and check if the PR has been closed with a commit associated with it.
|
||||||
// If the PR has been closed through a commit, we assume that the PR has been merged
|
// If the PR has been closed through a commit, we assume that the PR has been merged
|
||||||
|
|
|
@ -27,7 +27,11 @@ export async function getTargetBranchesForPr(prNumber: number) {
|
||||||
/** The current state of the pull request from Github. */
|
/** The current state of the pull request from Github. */
|
||||||
const prData = (await git.github.pulls.get({owner, repo, pull_number: prNumber})).data;
|
const prData = (await git.github.pulls.get({owner, repo, pull_number: prNumber})).data;
|
||||||
/** The list of labels on the PR as strings. */
|
/** The list of labels on the PR as strings. */
|
||||||
const labels = prData.labels.map(l => l.name);
|
// Note: The `name` property of labels is always set but the Github OpenAPI spec is incorrect
|
||||||
|
// here.
|
||||||
|
// TODO(devversion): Remove the non-null cast once
|
||||||
|
// https://github.com/github/rest-api-description/issues/169 is fixed.
|
||||||
|
const labels = prData.labels.map(l => l.name!);
|
||||||
/** The branch targetted via the Github UI. */
|
/** The branch targetted via the Github UI. */
|
||||||
const githubTargetBranch = prData.base.ref;
|
const githubTargetBranch = prData.base.ref;
|
||||||
/** The active label which is being used for targetting the PR. */
|
/** The active label which is being used for targetting the PR. */
|
||||||
|
|
|
@ -17,6 +17,7 @@ ts_library(
|
||||||
"//dev-infra/release/config",
|
"//dev-infra/release/config",
|
||||||
"//dev-infra/release/versioning",
|
"//dev-infra/release/versioning",
|
||||||
"//dev-infra/utils",
|
"//dev-infra/utils",
|
||||||
|
"@npm//@octokit/plugin-rest-endpoint-methods",
|
||||||
"@npm//@octokit/rest",
|
"@npm//@octokit/rest",
|
||||||
"@npm//@types/inquirer",
|
"@npm//@types/inquirer",
|
||||||
"@npm//@types/node",
|
"@npm//@types/node",
|
||||||
|
|
|
@ -6,12 +6,11 @@
|
||||||
* found in the LICENSE file at https://angular.io/license
|
* found in the LICENSE file at https://angular.io/license
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {Octokit} from '@octokit/rest';
|
import {RestEndpointMethodTypes} from '@octokit/plugin-rest-endpoint-methods';
|
||||||
import {prompt} from 'inquirer';
|
import {prompt} from 'inquirer';
|
||||||
|
|
||||||
import {parseCommitMessage} from '../../../commit-message/parse';
|
import {parseCommitMessage} from '../../../commit-message/parse';
|
||||||
import {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client';
|
import {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client';
|
||||||
import {GitClient} from '../../../utils/git/git-client';
|
|
||||||
import {GithubApiMergeMethod} from '../config';
|
import {GithubApiMergeMethod} from '../config';
|
||||||
import {PullRequestFailure} from '../failures';
|
import {PullRequestFailure} from '../failures';
|
||||||
import {PullRequest} from '../pull-request';
|
import {PullRequest} from '../pull-request';
|
||||||
|
@ -19,6 +18,9 @@ import {matchesPattern} from '../string-pattern';
|
||||||
|
|
||||||
import {MergeStrategy, TEMP_PR_HEAD_BRANCH} from './strategy';
|
import {MergeStrategy, TEMP_PR_HEAD_BRANCH} from './strategy';
|
||||||
|
|
||||||
|
/** Type describing the parameters for the Octokit `merge` API endpoint. */
|
||||||
|
type OctokitMergeParams = RestEndpointMethodTypes['pulls']['merge']['parameters'];
|
||||||
|
|
||||||
/** Configuration for the Github API merge strategy. */
|
/** Configuration for the Github API merge strategy. */
|
||||||
export interface GithubApiMergeStrategyConfig {
|
export interface GithubApiMergeStrategyConfig {
|
||||||
/** Default method used for merging pull requests */
|
/** Default method used for merging pull requests */
|
||||||
|
@ -75,7 +77,7 @@ export class GithubApiMergeStrategy extends MergeStrategy {
|
||||||
return failure;
|
return failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
const mergeOptions: Octokit.PullsMergeParams = {
|
const mergeOptions: OctokitMergeParams = {
|
||||||
pull_number: prNumber,
|
pull_number: prNumber,
|
||||||
merge_method: method,
|
merge_method: method,
|
||||||
...this.git.remoteParams,
|
...this.git.remoteParams,
|
||||||
|
@ -161,7 +163,7 @@ export class GithubApiMergeStrategy extends MergeStrategy {
|
||||||
* The Github API only allows modifications to PR title and body for squash merges.
|
* The Github API only allows modifications to PR title and body for squash merges.
|
||||||
*/
|
*/
|
||||||
private async _promptCommitMessageEdit(
|
private async _promptCommitMessageEdit(
|
||||||
pullRequest: PullRequest, mergeOptions: Octokit.PullsMergeParams) {
|
pullRequest: PullRequest, mergeOptions: OctokitMergeParams) {
|
||||||
const commitMessage = await this._getDefaultSquashCommitMessage(pullRequest);
|
const commitMessage = await this._getDefaultSquashCommitMessage(pullRequest);
|
||||||
const {result} = await prompt<{result: string}>({
|
const {result} = await prompt<{result: string}>({
|
||||||
type: 'editor',
|
type: 'editor',
|
||||||
|
@ -197,9 +199,8 @@ export class GithubApiMergeStrategy extends MergeStrategy {
|
||||||
|
|
||||||
/** Gets all commit messages of commits in the pull request. */
|
/** Gets all commit messages of commits in the pull request. */
|
||||||
private async _getPullRequestCommitMessages({prNumber}: PullRequest) {
|
private async _getPullRequestCommitMessages({prNumber}: PullRequest) {
|
||||||
const request = this.git.github.pulls.listCommits.endpoint.merge(
|
const allCommits = await this.git.github.paginate(
|
||||||
{...this.git.remoteParams, pull_number: prNumber});
|
this.git.github.pulls.listCommits, {...this.git.remoteParams, pull_number: prNumber});
|
||||||
const allCommits: Octokit.PullsListCommitsResponse = await this.git.github.paginate(request);
|
|
||||||
return allCommits.map(({commit}) => commit.message);
|
return allCommits.map(({commit}) => commit.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
* found in the LICENSE file at https://angular.io/license
|
* found in the LICENSE file at https://angular.io/license
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {Octokit} from '@octokit/rest';
|
|
||||||
import {GitClient} from '../../utils/git/git-client';
|
import {GitClient} from '../../utils/git/git-client';
|
||||||
|
|
||||||
/** Thirty seconds in milliseconds. */
|
/** Thirty seconds in milliseconds. */
|
||||||
|
@ -39,9 +38,8 @@ export async function getPullRequestState(api: GitClient, id: number): Promise<P
|
||||||
* shows the PR as closed. See for example: https://github.com/angular/angular/pull/37918.
|
* shows the PR as closed. See for example: https://github.com/angular/angular/pull/37918.
|
||||||
*/
|
*/
|
||||||
async function isPullRequestClosedWithAssociatedCommit(api: GitClient, id: number) {
|
async function isPullRequestClosedWithAssociatedCommit(api: GitClient, id: number) {
|
||||||
const request =
|
const events = await api.github.paginate(
|
||||||
api.github.issues.listEvents.endpoint.merge({...api.remoteParams, issue_number: id});
|
api.github.issues.listEvents, {...api.remoteParams, issue_number: id});
|
||||||
const events: Octokit.IssuesListEventsResponse = await api.github.paginate(request);
|
|
||||||
// Iterate through the events of the pull request in reverse. We want to find the most
|
// Iterate through the events of the pull request in reverse. We want to find the most
|
||||||
// recent events and check if the PR has been closed with a commit associated with it.
|
// recent events and check if the PR has been closed with a commit associated with it.
|
||||||
// If the PR has been closed through a commit, we assume that the PR has been merged
|
// If the PR has been closed through a commit, we assume that the PR has been merged
|
||||||
|
|
|
@ -59,7 +59,7 @@ export async function fetchActiveReleaseTrains(repo: GithubRepoWithApi):
|
||||||
|
|
||||||
// Collect all version-branches that should be considered for the latest version-branch,
|
// Collect all version-branches that should be considered for the latest version-branch,
|
||||||
// or the feature-freeze/release-candidate.
|
// or the feature-freeze/release-candidate.
|
||||||
const branches = (await getBranchesForMajorVersions(repo, majorVersionsToConsider));
|
const branches = await getBranchesForMajorVersions(repo, majorVersionsToConsider);
|
||||||
const {latest, releaseCandidate} = await findActiveReleaseTrainsFromVersionBranches(
|
const {latest, releaseCandidate} = await findActiveReleaseTrainsFromVersionBranches(
|
||||||
repo, nextVersion, branches, expectedReleaseCandidateMajor);
|
repo, nextVersion, branches, expectedReleaseCandidateMajor);
|
||||||
|
|
||||||
|
|
|
@ -33,9 +33,14 @@ const versionBranchNameRegex = /^(\d+)\.(\d+)\.x$/;
|
||||||
/** Gets the version of a given branch by reading the `package.json` upstream. */
|
/** Gets the version of a given branch by reading the `package.json` upstream. */
|
||||||
export async function getVersionOfBranch(
|
export async function getVersionOfBranch(
|
||||||
repo: GithubRepoWithApi, branchName: string): Promise<semver.SemVer> {
|
repo: GithubRepoWithApi, branchName: string): Promise<semver.SemVer> {
|
||||||
const {data} = await repo.api.repos.getContents(
|
const {data} = await repo.api.repos.getContent(
|
||||||
{owner: repo.owner, repo: repo.name, path: '/package.json', ref: branchName});
|
{owner: repo.owner, repo: repo.name, path: '/package.json', ref: branchName});
|
||||||
const content = Array.isArray(data) ? '' : data.content || '';
|
// Workaround for: https://github.com/octokit/rest.js/issues/32.
|
||||||
|
// TODO: Remove cast once types of Octokit `getContent` are fixed.
|
||||||
|
const content = (data as {content?: string}).content;
|
||||||
|
if (!content) {
|
||||||
|
throw Error(`Unable to read "package.json" file from repository.`);
|
||||||
|
}
|
||||||
const {version} = JSON.parse(Buffer.from(content, 'base64').toString()) as
|
const {version} = JSON.parse(Buffer.from(content, 'base64').toString()) as
|
||||||
{version: string, [key: string]: any};
|
{version: string, [key: string]: any};
|
||||||
const parsedVersion = semver.parse(version);
|
const parsedVersion = semver.parse(version);
|
||||||
|
|
|
@ -12,7 +12,10 @@ ts_library(
|
||||||
prodmode_target = "es5",
|
prodmode_target = "es5",
|
||||||
visibility = ["//dev-infra:__subpackages__"],
|
visibility = ["//dev-infra:__subpackages__"],
|
||||||
deps = [
|
deps = [
|
||||||
|
"@npm//@octokit/core",
|
||||||
"@npm//@octokit/graphql",
|
"@npm//@octokit/graphql",
|
||||||
|
"@npm//@octokit/plugin-paginate-rest",
|
||||||
|
"@npm//@octokit/plugin-rest-endpoint-methods",
|
||||||
"@npm//@octokit/rest",
|
"@npm//@octokit/rest",
|
||||||
"@npm//@octokit/types",
|
"@npm//@octokit/types",
|
||||||
"@npm//@types/inquirer",
|
"@npm//@types/inquirer",
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
* Use of this source code is governed by an MIT-style license that can be
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
* found in the LICENSE file at https://angular.io/license
|
* found in the LICENSE file at https://angular.io/license
|
||||||
*/
|
*/
|
||||||
import {Octokit} from '@octokit/rest';
|
|
||||||
|
|
||||||
import {NgDevConfig} from '../config';
|
import {NgDevConfig} from '../config';
|
||||||
import {yellow} from '../console';
|
import {yellow} from '../console';
|
||||||
|
@ -14,11 +13,6 @@ import {GitClient} from './git-client';
|
||||||
import {AuthenticatedGithubClient} from './github';
|
import {AuthenticatedGithubClient} from './github';
|
||||||
import {getRepositoryGitUrl, GITHUB_TOKEN_GENERATE_URL, GITHUB_TOKEN_SETTINGS_URL} from './github-urls';
|
import {getRepositoryGitUrl, GITHUB_TOKEN_GENERATE_URL, GITHUB_TOKEN_SETTINGS_URL} from './github-urls';
|
||||||
|
|
||||||
/** Github response type extended to include the `x-oauth-scopes` headers presence. */
|
|
||||||
type RateLimitResponseWithOAuthScopeHeader = Octokit.Response<Octokit.RateLimitGetResponse>&{
|
|
||||||
headers: {'x-oauth-scopes': string|undefined};
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Describes a function that can be used to test for given Github OAuth scopes. */
|
/** Describes a function that can be used to test for given Github OAuth scopes. */
|
||||||
export type OAuthScopeTestFunction = (scopes: string[], missing: string[]) => void;
|
export type OAuthScopeTestFunction = (scopes: string[], missing: string[]) => void;
|
||||||
|
|
||||||
|
@ -87,8 +81,7 @@ export class AuthenticatedGitClient extends GitClient {
|
||||||
}
|
}
|
||||||
// OAuth scopes are loaded via the /rate_limit endpoint to prevent
|
// OAuth scopes are loaded via the /rate_limit endpoint to prevent
|
||||||
// usage of a request against that rate_limit for this lookup.
|
// usage of a request against that rate_limit for this lookup.
|
||||||
return this._cachedOauthScopes = this.github.rateLimit.get().then(_response => {
|
return this._cachedOauthScopes = this.github.rateLimit.get().then(response => {
|
||||||
const response = _response as RateLimitResponseWithOAuthScopeHeader;
|
|
||||||
const scopes = response.headers['x-oauth-scopes'];
|
const scopes = response.headers['x-oauth-scopes'];
|
||||||
|
|
||||||
// If no token is provided, or if the Github client is authenticated incorrectly,
|
// If no token is provided, or if the Github client is authenticated incorrectly,
|
||||||
|
|
|
@ -6,7 +6,10 @@
|
||||||
* found in the LICENSE file at https://angular.io/license
|
* found in the LICENSE file at https://angular.io/license
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import {OctokitOptions} from '@octokit/core/dist-types/types';
|
||||||
import {graphql} from '@octokit/graphql';
|
import {graphql} from '@octokit/graphql';
|
||||||
|
import {PaginateInterface} from '@octokit/plugin-paginate-rest';
|
||||||
|
import {RestEndpointMethods} from '@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types';
|
||||||
import {Octokit} from '@octokit/rest';
|
import {Octokit} from '@octokit/rest';
|
||||||
import {RequestParameters} from '@octokit/types';
|
import {RequestParameters} from '@octokit/types';
|
||||||
import {query} from 'typed-graphqlify';
|
import {query} from 'typed-graphqlify';
|
||||||
|
@ -41,10 +44,14 @@ export class GithubClient {
|
||||||
readonly repos = this._octokit.repos;
|
readonly repos = this._octokit.repos;
|
||||||
readonly issues = this._octokit.issues;
|
readonly issues = this._octokit.issues;
|
||||||
readonly git = this._octokit.git;
|
readonly git = this._octokit.git;
|
||||||
readonly paginate = this._octokit.paginate;
|
|
||||||
readonly rateLimit = this._octokit.rateLimit;
|
readonly rateLimit = this._octokit.rateLimit;
|
||||||
|
|
||||||
constructor(private _octokitOptions?: Octokit.Options) {}
|
// Note: These are properties from `Octokit` that are brought in by optional plugins.
|
||||||
|
// TypeScript requires us to provide an explicit type for these.
|
||||||
|
readonly rest: RestEndpointMethods = this._octokit.rest;
|
||||||
|
readonly paginate: PaginateInterface = this._octokit.paginate;
|
||||||
|
|
||||||
|
constructor(private _octokitOptions?: OctokitOptions) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -62,8 +62,11 @@
|
||||||
"@bazel/terser": "3.6.0",
|
"@bazel/terser": "3.6.0",
|
||||||
"@bazel/typescript": "3.6.0",
|
"@bazel/typescript": "3.6.0",
|
||||||
"@microsoft/api-extractor": "7.7.11",
|
"@microsoft/api-extractor": "7.7.11",
|
||||||
"@octokit/rest": "16.43.2",
|
"@octokit/rest": "^18.6.2",
|
||||||
"@octokit/types": "^6.0.0",
|
"@octokit/core": "^3.5.1",
|
||||||
|
"@octokit/plugin-rest-endpoint-methods": "^5.3.3",
|
||||||
|
"@octokit/plugin-paginate-rest": "^2.13.5",
|
||||||
|
"@octokit/types": "^6.16.6",
|
||||||
"@schematics/angular": "12.0.4",
|
"@schematics/angular": "12.0.4",
|
||||||
"@types/angular": "^1.6.47",
|
"@types/angular": "^1.6.47",
|
||||||
"@types/babel__core": "7.1.6",
|
"@types/babel__core": "7.1.6",
|
||||||
|
|
152
yarn.lock
152
yarn.lock
|
@ -1293,13 +1293,26 @@
|
||||||
node-gyp "^7.1.0"
|
node-gyp "^7.1.0"
|
||||||
read-package-json-fast "^2.0.1"
|
read-package-json-fast "^2.0.1"
|
||||||
|
|
||||||
"@octokit/auth-token@^2.4.0":
|
"@octokit/auth-token@^2.4.4":
|
||||||
version "2.4.5"
|
version "2.4.5"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3"
|
resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3"
|
||||||
integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==
|
integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@octokit/types" "^6.0.3"
|
"@octokit/types" "^6.0.3"
|
||||||
|
|
||||||
|
"@octokit/core@^3.5.0", "@octokit/core@^3.5.1":
|
||||||
|
version "3.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b"
|
||||||
|
integrity sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/auth-token" "^2.4.4"
|
||||||
|
"@octokit/graphql" "^4.5.8"
|
||||||
|
"@octokit/request" "^5.6.0"
|
||||||
|
"@octokit/request-error" "^2.0.5"
|
||||||
|
"@octokit/types" "^6.0.3"
|
||||||
|
before-after-hook "^2.2.0"
|
||||||
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
"@octokit/endpoint@^6.0.1":
|
"@octokit/endpoint@^6.0.1":
|
||||||
version "6.0.12"
|
version "6.0.12"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658"
|
resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658"
|
||||||
|
@ -1309,7 +1322,7 @@
|
||||||
is-plain-object "^5.0.0"
|
is-plain-object "^5.0.0"
|
||||||
universal-user-agent "^6.0.0"
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
"@octokit/graphql@^4.6.1":
|
"@octokit/graphql@^4.5.8", "@octokit/graphql@^4.6.1":
|
||||||
version "4.6.4"
|
version "4.6.4"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.6.4.tgz#0c3f5bed440822182e972317122acb65d311a5ed"
|
resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.6.4.tgz#0c3f5bed440822182e972317122acb65d311a5ed"
|
||||||
integrity sha512-SWTdXsVheRmlotWNjKzPOb6Js6tjSqA2a8z9+glDJng0Aqjzti8MEWOtuT8ZSu6wHnci7LZNuarE87+WJBG4vg==
|
integrity sha512-SWTdXsVheRmlotWNjKzPOb6Js6tjSqA2a8z9+glDJng0Aqjzti8MEWOtuT8ZSu6wHnci7LZNuarE87+WJBG4vg==
|
||||||
|
@ -1323,36 +1336,32 @@
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-7.3.2.tgz#065ce49b338043ec7f741316ce06afd4d459d944"
|
resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-7.3.2.tgz#065ce49b338043ec7f741316ce06afd4d459d944"
|
||||||
integrity sha512-oJhK/yhl9Gt430OrZOzAl2wJqR0No9445vmZ9Ey8GjUZUpwuu/vmEFP0TDhDXdpGDoxD6/EIFHJEcY8nHXpDTA==
|
integrity sha512-oJhK/yhl9Gt430OrZOzAl2wJqR0No9445vmZ9Ey8GjUZUpwuu/vmEFP0TDhDXdpGDoxD6/EIFHJEcY8nHXpDTA==
|
||||||
|
|
||||||
"@octokit/plugin-paginate-rest@^1.1.1":
|
"@octokit/openapi-types@^7.3.4":
|
||||||
version "1.1.2"
|
version "7.3.4"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc"
|
resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-7.3.4.tgz#9f075e263d1d3c1ba7a789e0085a5ed75d6daad1"
|
||||||
integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==
|
integrity sha512-binmLrMQWBG0CvUE/jS3/XXrZbX3oN/6gF7ocSsb/ZJ0xfox2isJN4ZhGeL91SDJVzFK7XuUYBm2mlIDedkxsg==
|
||||||
dependencies:
|
|
||||||
"@octokit/types" "^2.0.1"
|
|
||||||
|
|
||||||
"@octokit/plugin-request-log@^1.0.0":
|
"@octokit/plugin-paginate-rest@^2.13.5", "@octokit/plugin-paginate-rest@^2.6.2":
|
||||||
|
version "2.13.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.13.5.tgz#e459f9b5dccbe0a53f039a355d5b80c0a2b0dc57"
|
||||||
|
integrity sha512-3WSAKBLa1RaR/7GG+LQR/tAZ9fp9H9waE9aPXallidyci9oZsfgsLn5M836d3LuDC6Fcym+2idRTBpssHZePVg==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^6.13.0"
|
||||||
|
|
||||||
|
"@octokit/plugin-request-log@^1.0.2":
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85"
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85"
|
||||||
integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==
|
integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==
|
||||||
|
|
||||||
"@octokit/plugin-rest-endpoint-methods@2.4.0":
|
"@octokit/plugin-rest-endpoint-methods@5.3.3", "@octokit/plugin-rest-endpoint-methods@^5.3.3":
|
||||||
version "2.4.0"
|
version "5.3.3"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e"
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.3.3.tgz#b447ed80126d36a9cf99daabb055bf0c157c8d89"
|
||||||
integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==
|
integrity sha512-xHlZK9gxVFP2YQYXOmR1ItCwl9k+0Z3cA40oGMQfpPbWIYY32FTM15Qj+V0V6oLJZr0E26Sz3VX6qYlM/ytfig==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@octokit/types" "^2.0.1"
|
"@octokit/types" "^6.16.6"
|
||||||
deprecation "^2.3.1"
|
deprecation "^2.3.1"
|
||||||
|
|
||||||
"@octokit/request-error@^1.0.2":
|
"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0":
|
||||||
version "1.2.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801"
|
|
||||||
integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==
|
|
||||||
dependencies:
|
|
||||||
"@octokit/types" "^2.0.0"
|
|
||||||
deprecation "^2.0.0"
|
|
||||||
once "^1.4.0"
|
|
||||||
|
|
||||||
"@octokit/request-error@^2.1.0":
|
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677"
|
resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677"
|
||||||
integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==
|
integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==
|
||||||
|
@ -1361,7 +1370,7 @@
|
||||||
deprecation "^2.0.0"
|
deprecation "^2.0.0"
|
||||||
once "^1.4.0"
|
once "^1.4.0"
|
||||||
|
|
||||||
"@octokit/request@^5.2.0", "@octokit/request@^5.6.0":
|
"@octokit/request@^5.6.0":
|
||||||
version "5.6.0"
|
version "5.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.0.tgz#6084861b6e4fa21dc40c8e2a739ec5eff597e672"
|
resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.0.tgz#6084861b6e4fa21dc40c8e2a739ec5eff597e672"
|
||||||
integrity sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA==
|
integrity sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA==
|
||||||
|
@ -1373,42 +1382,30 @@
|
||||||
node-fetch "^2.6.1"
|
node-fetch "^2.6.1"
|
||||||
universal-user-agent "^6.0.0"
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
"@octokit/rest@16.43.2":
|
"@octokit/rest@^18.6.2":
|
||||||
version "16.43.2"
|
version "18.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.2.tgz#c53426f1e1d1044dee967023e3279c50993dd91b"
|
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.6.2.tgz#181ef6a23f1e5977569f439bd256041dc9d5a696"
|
||||||
integrity sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==
|
integrity sha512-q6nrxhM+oXzPmbZlykNaBP1vG0+mU6URLBy9cl4XXrWcD0k0ShYiaXDaPewbllTxoMevqv+OABb+Q7ycUWkE2A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@octokit/auth-token" "^2.4.0"
|
"@octokit/core" "^3.5.0"
|
||||||
"@octokit/plugin-paginate-rest" "^1.1.1"
|
"@octokit/plugin-paginate-rest" "^2.6.2"
|
||||||
"@octokit/plugin-request-log" "^1.0.0"
|
"@octokit/plugin-request-log" "^1.0.2"
|
||||||
"@octokit/plugin-rest-endpoint-methods" "2.4.0"
|
"@octokit/plugin-rest-endpoint-methods" "5.3.3"
|
||||||
"@octokit/request" "^5.2.0"
|
|
||||||
"@octokit/request-error" "^1.0.2"
|
|
||||||
atob-lite "^2.0.0"
|
|
||||||
before-after-hook "^2.0.0"
|
|
||||||
btoa-lite "^1.0.0"
|
|
||||||
deprecation "^2.0.0"
|
|
||||||
lodash.get "^4.4.2"
|
|
||||||
lodash.set "^4.3.2"
|
|
||||||
lodash.uniq "^4.5.0"
|
|
||||||
octokit-pagination-methods "^1.1.0"
|
|
||||||
once "^1.4.0"
|
|
||||||
universal-user-agent "^4.0.0"
|
|
||||||
|
|
||||||
"@octokit/types@^2.0.0", "@octokit/types@^2.0.1":
|
"@octokit/types@^6.0.3", "@octokit/types@^6.16.1":
|
||||||
version "2.16.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2"
|
|
||||||
integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==
|
|
||||||
dependencies:
|
|
||||||
"@types/node" ">= 8"
|
|
||||||
|
|
||||||
"@octokit/types@^6.0.0", "@octokit/types@^6.0.3", "@octokit/types@^6.16.1":
|
|
||||||
version "6.16.4"
|
version "6.16.4"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.16.4.tgz#d24f5e1bacd2fe96d61854b5bda0e88cf8288dfe"
|
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.16.4.tgz#d24f5e1bacd2fe96d61854b5bda0e88cf8288dfe"
|
||||||
integrity sha512-UxhWCdSzloULfUyamfOg4dJxV9B+XjgrIZscI0VCbp4eNrjmorGEw+4qdwcpTsu6DIrm9tQsFQS2pK5QkqQ04A==
|
integrity sha512-UxhWCdSzloULfUyamfOg4dJxV9B+XjgrIZscI0VCbp4eNrjmorGEw+4qdwcpTsu6DIrm9tQsFQS2pK5QkqQ04A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@octokit/openapi-types" "^7.3.2"
|
"@octokit/openapi-types" "^7.3.2"
|
||||||
|
|
||||||
|
"@octokit/types@^6.13.0", "@octokit/types@^6.16.6":
|
||||||
|
version "6.16.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.16.6.tgz#c113a0408a799ccb93c8749806733ad5d3edd142"
|
||||||
|
integrity sha512-PrEGjMnEhLlNttsuLadEWqXdMYJX3icHHaRs/ChJebRT79VDh/cNkk8bURx05BEEwr7QvaLsRzjt3hNxUJZfXA==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/openapi-types" "^7.3.4"
|
||||||
|
|
||||||
"@opentelemetry/api@^0.20.0":
|
"@opentelemetry/api@^0.20.0":
|
||||||
version "0.20.0"
|
version "0.20.0"
|
||||||
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.20.0.tgz#d4e26d30dc0c5da697d1ff51434ad8f0cf30e565"
|
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.20.0.tgz#d4e26d30dc0c5da697d1ff51434ad8f0cf30e565"
|
||||||
|
@ -1798,7 +1795,7 @@
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
form-data "^3.0.0"
|
form-data "^3.0.0"
|
||||||
|
|
||||||
"@types/node@*", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0":
|
"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0":
|
||||||
version "15.12.4"
|
version "15.12.4"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.4.tgz#e1cf817d70a1e118e81922c4ff6683ce9d422e26"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.4.tgz#e1cf817d70a1e118e81922c4ff6683ce9d422e26"
|
||||||
integrity sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA==
|
integrity sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA==
|
||||||
|
@ -2712,11 +2709,6 @@ asynckit@^0.4.0:
|
||||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||||
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
|
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
|
||||||
|
|
||||||
atob-lite@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696"
|
|
||||||
integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=
|
|
||||||
|
|
||||||
atob@^2.1.2:
|
atob@^2.1.2:
|
||||||
version "2.1.2"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
||||||
|
@ -2868,7 +2860,7 @@ bcrypt-pbkdf@^1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
tweetnacl "^0.14.3"
|
tweetnacl "^0.14.3"
|
||||||
|
|
||||||
before-after-hook@^2.0.0:
|
before-after-hook@^2.2.0:
|
||||||
version "2.2.2"
|
version "2.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e"
|
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e"
|
||||||
integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==
|
integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==
|
||||||
|
@ -3098,11 +3090,6 @@ browserstacktunnel-wrapper@^2.0.4:
|
||||||
https-proxy-agent "^2.2.1"
|
https-proxy-agent "^2.2.1"
|
||||||
unzipper "^0.9.3"
|
unzipper "^0.9.3"
|
||||||
|
|
||||||
btoa-lite@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337"
|
|
||||||
integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc=
|
|
||||||
|
|
||||||
buffer-alloc-unsafe@^1.1.0:
|
buffer-alloc-unsafe@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
|
resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
|
||||||
|
@ -8447,7 +8434,7 @@ lodash.flatten@^4.4.0:
|
||||||
resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
|
resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
|
||||||
integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
|
integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
|
||||||
|
|
||||||
lodash.get@^4.0.0, lodash.get@^4.4.2:
|
lodash.get@^4.0.0:
|
||||||
version "4.4.2"
|
version "4.4.2"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
|
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
|
||||||
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
|
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
|
||||||
|
@ -8676,11 +8663,6 @@ lru-queue@^0.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
es5-ext "~0.10.2"
|
es5-ext "~0.10.2"
|
||||||
|
|
||||||
macos-release@^2.2.0:
|
|
||||||
version "2.5.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.0.tgz#067c2c88b5f3fb3c56a375b2ec93826220fa1ff2"
|
|
||||||
integrity sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==
|
|
||||||
|
|
||||||
madge@^5.0.0:
|
madge@^5.0.0:
|
||||||
version "5.0.1"
|
version "5.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/madge/-/madge-5.0.1.tgz#2096d9006558ea0669b3ade89c2cda708a24e22b"
|
resolved "https://registry.yarnpkg.com/madge/-/madge-5.0.1.tgz#2096d9006558ea0669b3ade89c2cda708a24e22b"
|
||||||
|
@ -9710,11 +9692,6 @@ obuf@^1.0.0, obuf@^1.1.2:
|
||||||
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
|
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
|
||||||
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
|
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
|
||||||
|
|
||||||
octokit-pagination-methods@^1.1.0:
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4"
|
|
||||||
integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==
|
|
||||||
|
|
||||||
on-finished@^2.2.0, on-finished@~2.3.0:
|
on-finished@^2.2.0, on-finished@~2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
|
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
|
||||||
|
@ -9873,14 +9850,6 @@ os-locale@^1.4.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
lcid "^1.0.0"
|
lcid "^1.0.0"
|
||||||
|
|
||||||
os-name@^3.1.0:
|
|
||||||
version "3.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801"
|
|
||||||
integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==
|
|
||||||
dependencies:
|
|
||||||
macos-release "^2.2.0"
|
|
||||||
windows-release "^3.1.0"
|
|
||||||
|
|
||||||
os-tmpdir@~1.0.1, os-tmpdir@~1.0.2:
|
os-tmpdir@~1.0.1, os-tmpdir@~1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
||||||
|
@ -12060,7 +12029,6 @@ sauce-connect-launcher@^1.2.4:
|
||||||
|
|
||||||
"sauce-connect@https://saucelabs.com/downloads/sc-4.6.2-linux.tar.gz":
|
"sauce-connect@https://saucelabs.com/downloads/sc-4.6.2-linux.tar.gz":
|
||||||
version "0.0.0"
|
version "0.0.0"
|
||||||
uid "7b7f35433af9c3380758e048894d7b9aecf3754e"
|
|
||||||
resolved "https://saucelabs.com/downloads/sc-4.6.2-linux.tar.gz#7b7f35433af9c3380758e048894d7b9aecf3754e"
|
resolved "https://saucelabs.com/downloads/sc-4.6.2-linux.tar.gz#7b7f35433af9c3380758e048894d7b9aecf3754e"
|
||||||
|
|
||||||
saucelabs@^1.5.0:
|
saucelabs@^1.5.0:
|
||||||
|
@ -13728,13 +13696,6 @@ universal-analytics@^0.4.16:
|
||||||
request "^2.88.2"
|
request "^2.88.2"
|
||||||
uuid "^3.0.0"
|
uuid "^3.0.0"
|
||||||
|
|
||||||
universal-user-agent@^4.0.0:
|
|
||||||
version "4.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557"
|
|
||||||
integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==
|
|
||||||
dependencies:
|
|
||||||
os-name "^3.1.0"
|
|
||||||
|
|
||||||
universal-user-agent@^6.0.0:
|
universal-user-agent@^6.0.0:
|
||||||
version "6.0.0"
|
version "6.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
|
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
|
||||||
|
@ -14303,13 +14264,6 @@ wildcard@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
|
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
|
||||||
integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
|
integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
|
||||||
|
|
||||||
windows-release@^3.1.0:
|
|
||||||
version "3.3.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999"
|
|
||||||
integrity sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==
|
|
||||||
dependencies:
|
|
||||||
execa "^1.0.0"
|
|
||||||
|
|
||||||
winston-transport@^4.4.0:
|
winston-transport@^4.4.0:
|
||||||
version "4.4.0"
|
version "4.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59"
|
resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59"
|
||||||
|
|
Loading…
Reference in New Issue