diff --git a/dev-infra/build-worker.js b/dev-infra/build-worker.js index b67a0c4746..5d8477e5e0 100644 --- a/dev-infra/build-worker.js +++ b/dev-infra/build-worker.js @@ -64,8 +64,11 @@ var GithubClient = /** @class */ (function () { this.repos = this._octokit.repos; this.issues = this._octokit.issues; this.git = this._octokit.git; - this.paginate = this._octokit.paginate; 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; }()); diff --git a/dev-infra/ng-dev.js b/dev-infra/ng-dev.js index 76e8ae90bc..c7a0b9f07c 100755 --- a/dev-infra/ng-dev.js +++ b/dev-infra/ng-dev.js @@ -227,8 +227,11 @@ var GithubClient = /** @class */ (function () { this.repos = this._octokit.repos; this.issues = this._octokit.issues; this.git = this._octokit.git; - this.paginate = this._octokit.paginate; 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; }()); @@ -672,6 +675,13 @@ function printToLogFile(logLevel) { 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 * authenticated Git client instances. @@ -737,8 +747,7 @@ var AuthenticatedGitClient = /** @class */ (function (_super) { } // OAuth scopes are loaded via the /rate_limit endpoint to prevent // usage of a request against that rate_limit for this lookup. - return this._cachedOauthScopes = this.github.rateLimit.get().then(function (_response) { - var response = _response; + return this._cachedOauthScopes = this.github.rateLimit.get().then(function (response) { var scopes = response.headers['x-oauth-scopes']; // 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 @@ -855,8 +864,13 @@ const versionBranchNameRegex = /^(\d+)\.(\d+)\.x$/; /** Gets the version of a given branch by reading the `package.json` upstream. */ function getVersionOfBranch(repo, branchName) { 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 content = Array.isArray(data) ? '' : data.content || ''; + const { data } = yield repo.api.repos.getContent({ owner: repo.owner, repo: repo.name, path: '/package.json', ref: branchName }); + // 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 parsedVersion = semver.parse(version); if (parsedVersion === null) { @@ -950,7 +964,7 @@ function fetchActiveReleaseTrains(repo) { } // Collect all version-branches that should be considered for the latest version-branch, // 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); if (latest === null) { 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. */ const prData = (yield git.github.pulls.get({ owner, repo, pull_number: prNumber })).data; /** 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); /** The branch targetted via the Github UI. */ const githubTargetBranch = prData.base.ref; @@ -4055,12 +4073,10 @@ var GithubApiMergeStrategy = /** @class */ (function (_super) { GithubApiMergeStrategy.prototype._getPullRequestCommitMessages = function (_a) { var prNumber = _a.prNumber; return tslib.__awaiter(this, void 0, void 0, function () { - var request, allCommits; + var allCommits; return tslib.__generator(this, function (_b) { switch (_b.label) { - case 0: - 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 0: return [4 /*yield*/, this.git.github.paginate(this.git.github.pulls.listCommits, tslib.__assign(tslib.__assign({}, this.git.remoteParams), { pull_number: prNumber }))]; case 1: allCommits = _b.sent(); return [2 /*return*/, allCommits.map(function (_a) { @@ -6174,8 +6190,7 @@ function getPullRequestState(api, id) { */ function isPullRequestClosedWithAssociatedCommit(api, id) { 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(request); + const events = yield api.github.paginate(api.github.issues.listEvents, Object.assign(Object.assign({}, api.remoteParams), { issue_number: id })); // 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. // If the PR has been closed through a commit, we assume that the PR has been merged diff --git a/dev-infra/pr/check-target-branches/check-target-branches.ts b/dev-infra/pr/check-target-branches/check-target-branches.ts index ae6b0283ab..8b151c5b6d 100644 --- a/dev-infra/pr/check-target-branches/check-target-branches.ts +++ b/dev-infra/pr/check-target-branches/check-target-branches.ts @@ -27,7 +27,11 @@ export async function getTargetBranchesForPr(prNumber: number) { /** The current state of the pull request from Github. */ const prData = (await git.github.pulls.get({owner, repo, pull_number: prNumber})).data; /** 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. */ const githubTargetBranch = prData.base.ref; /** The active label which is being used for targetting the PR. */ diff --git a/dev-infra/pr/merge/BUILD.bazel b/dev-infra/pr/merge/BUILD.bazel index db52d4b195..5781497c84 100644 --- a/dev-infra/pr/merge/BUILD.bazel +++ b/dev-infra/pr/merge/BUILD.bazel @@ -17,6 +17,7 @@ ts_library( "//dev-infra/release/config", "//dev-infra/release/versioning", "//dev-infra/utils", + "@npm//@octokit/plugin-rest-endpoint-methods", "@npm//@octokit/rest", "@npm//@types/inquirer", "@npm//@types/node", diff --git a/dev-infra/pr/merge/strategies/api-merge.ts b/dev-infra/pr/merge/strategies/api-merge.ts index 2141e6d343..8ff3c7143a 100644 --- a/dev-infra/pr/merge/strategies/api-merge.ts +++ b/dev-infra/pr/merge/strategies/api-merge.ts @@ -6,12 +6,11 @@ * 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 {parseCommitMessage} from '../../../commit-message/parse'; import {AuthenticatedGitClient} from '../../../utils/git/authenticated-git-client'; -import {GitClient} from '../../../utils/git/git-client'; import {GithubApiMergeMethod} from '../config'; import {PullRequestFailure} from '../failures'; import {PullRequest} from '../pull-request'; @@ -19,6 +18,9 @@ import {matchesPattern} from '../string-pattern'; 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. */ export interface GithubApiMergeStrategyConfig { /** Default method used for merging pull requests */ @@ -75,7 +77,7 @@ export class GithubApiMergeStrategy extends MergeStrategy { return failure; } - const mergeOptions: Octokit.PullsMergeParams = { + const mergeOptions: OctokitMergeParams = { pull_number: prNumber, merge_method: method, ...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. */ private async _promptCommitMessageEdit( - pullRequest: PullRequest, mergeOptions: Octokit.PullsMergeParams) { + pullRequest: PullRequest, mergeOptions: OctokitMergeParams) { const commitMessage = await this._getDefaultSquashCommitMessage(pullRequest); const {result} = await prompt<{result: string}>({ type: 'editor', @@ -197,9 +199,8 @@ export class GithubApiMergeStrategy extends MergeStrategy { /** Gets all commit messages of commits in the pull request. */ private async _getPullRequestCommitMessages({prNumber}: PullRequest) { - const request = this.git.github.pulls.listCommits.endpoint.merge( - {...this.git.remoteParams, pull_number: prNumber}); - const allCommits: Octokit.PullsListCommitsResponse = await this.git.github.paginate(request); + const allCommits = await this.git.github.paginate( + this.git.github.pulls.listCommits, {...this.git.remoteParams, pull_number: prNumber}); return allCommits.map(({commit}) => commit.message); } diff --git a/dev-infra/release/publish/pull-request-state.ts b/dev-infra/release/publish/pull-request-state.ts index 85f423124d..d74eb21806 100644 --- a/dev-infra/release/publish/pull-request-state.ts +++ b/dev-infra/release/publish/pull-request-state.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {Octokit} from '@octokit/rest'; import {GitClient} from '../../utils/git/git-client'; /** Thirty seconds in milliseconds. */ @@ -39,9 +38,8 @@ export async function getPullRequestState(api: GitClient, id: number): Promise

{ - 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}); - 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 {version: string, [key: string]: any}; const parsedVersion = semver.parse(version); diff --git a/dev-infra/utils/BUILD.bazel b/dev-infra/utils/BUILD.bazel index 2be6504dc0..d998538530 100644 --- a/dev-infra/utils/BUILD.bazel +++ b/dev-infra/utils/BUILD.bazel @@ -12,7 +12,10 @@ ts_library( prodmode_target = "es5", visibility = ["//dev-infra:__subpackages__"], deps = [ + "@npm//@octokit/core", "@npm//@octokit/graphql", + "@npm//@octokit/plugin-paginate-rest", + "@npm//@octokit/plugin-rest-endpoint-methods", "@npm//@octokit/rest", "@npm//@octokit/types", "@npm//@types/inquirer", diff --git a/dev-infra/utils/git/authenticated-git-client.ts b/dev-infra/utils/git/authenticated-git-client.ts index f9bcfbe688..24d5744cbe 100644 --- a/dev-infra/utils/git/authenticated-git-client.ts +++ b/dev-infra/utils/git/authenticated-git-client.ts @@ -5,7 +5,6 @@ * 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 */ -import {Octokit} from '@octokit/rest'; import {NgDevConfig} from '../config'; import {yellow} from '../console'; @@ -14,11 +13,6 @@ import {GitClient} from './git-client'; import {AuthenticatedGithubClient} from './github'; 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&{ - headers: {'x-oauth-scopes': string|undefined}; -}; - /** Describes a function that can be used to test for given Github OAuth scopes. */ 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 // usage of a request against that rate_limit for this lookup. - return this._cachedOauthScopes = this.github.rateLimit.get().then(_response => { - const response = _response as RateLimitResponseWithOAuthScopeHeader; + return this._cachedOauthScopes = this.github.rateLimit.get().then(response => { const scopes = response.headers['x-oauth-scopes']; // If no token is provided, or if the Github client is authenticated incorrectly, diff --git a/dev-infra/utils/git/github.ts b/dev-infra/utils/git/github.ts index fdbc4351be..87f001a4d6 100644 --- a/dev-infra/utils/git/github.ts +++ b/dev-infra/utils/git/github.ts @@ -6,7 +6,10 @@ * found in the LICENSE file at https://angular.io/license */ +import {OctokitOptions} from '@octokit/core/dist-types/types'; 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 {RequestParameters} from '@octokit/types'; import {query} from 'typed-graphqlify'; @@ -41,10 +44,14 @@ export class GithubClient { readonly repos = this._octokit.repos; readonly issues = this._octokit.issues; readonly git = this._octokit.git; - readonly paginate = this._octokit.paginate; 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) {} } /** diff --git a/package.json b/package.json index 8471a03967..e484c07120 100644 --- a/package.json +++ b/package.json @@ -62,8 +62,11 @@ "@bazel/terser": "3.6.0", "@bazel/typescript": "3.6.0", "@microsoft/api-extractor": "7.7.11", - "@octokit/rest": "16.43.2", - "@octokit/types": "^6.0.0", + "@octokit/rest": "^18.6.2", + "@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", "@types/angular": "^1.6.47", "@types/babel__core": "7.1.6", diff --git a/yarn.lock b/yarn.lock index 45d7cf7f80..ef7487fc84 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1293,13 +1293,26 @@ node-gyp "^7.1.0" read-package-json-fast "^2.0.1" -"@octokit/auth-token@^2.4.0": +"@octokit/auth-token@^2.4.4": version "2.4.5" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3" integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA== dependencies: "@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": version "6.0.12" resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" @@ -1309,7 +1322,7 @@ is-plain-object "^5.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" resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.6.4.tgz#0c3f5bed440822182e972317122acb65d311a5ed" integrity sha512-SWTdXsVheRmlotWNjKzPOb6Js6tjSqA2a8z9+glDJng0Aqjzti8MEWOtuT8ZSu6wHnci7LZNuarE87+WJBG4vg== @@ -1323,36 +1336,32 @@ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-7.3.2.tgz#065ce49b338043ec7f741316ce06afd4d459d944" integrity sha512-oJhK/yhl9Gt430OrZOzAl2wJqR0No9445vmZ9Ey8GjUZUpwuu/vmEFP0TDhDXdpGDoxD6/EIFHJEcY8nHXpDTA== -"@octokit/plugin-paginate-rest@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" - integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q== - dependencies: - "@octokit/types" "^2.0.1" +"@octokit/openapi-types@^7.3.4": + version "7.3.4" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-7.3.4.tgz#9f075e263d1d3c1ba7a789e0085a5ed75d6daad1" + integrity sha512-binmLrMQWBG0CvUE/jS3/XXrZbX3oN/6gF7ocSsb/ZJ0xfox2isJN4ZhGeL91SDJVzFK7XuUYBm2mlIDedkxsg== -"@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" resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@octokit/plugin-rest-endpoint-methods@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" - integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ== +"@octokit/plugin-rest-endpoint-methods@5.3.3", "@octokit/plugin-rest-endpoint-methods@^5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.3.3.tgz#b447ed80126d36a9cf99daabb055bf0c157c8d89" + integrity sha512-xHlZK9gxVFP2YQYXOmR1ItCwl9k+0Z3cA40oGMQfpPbWIYY32FTM15Qj+V0V6oLJZr0E26Sz3VX6qYlM/ytfig== dependencies: - "@octokit/types" "^2.0.1" + "@octokit/types" "^6.16.6" deprecation "^2.3.1" -"@octokit/request-error@^1.0.2": - 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": +"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== @@ -1361,7 +1370,7 @@ deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.2.0", "@octokit/request@^5.6.0": +"@octokit/request@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.0.tgz#6084861b6e4fa21dc40c8e2a739ec5eff597e672" integrity sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA== @@ -1373,42 +1382,30 @@ node-fetch "^2.6.1" universal-user-agent "^6.0.0" -"@octokit/rest@16.43.2": - version "16.43.2" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.2.tgz#c53426f1e1d1044dee967023e3279c50993dd91b" - integrity sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ== +"@octokit/rest@^18.6.2": + version "18.6.2" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.6.2.tgz#181ef6a23f1e5977569f439bd256041dc9d5a696" + integrity sha512-q6nrxhM+oXzPmbZlykNaBP1vG0+mU6URLBy9cl4XXrWcD0k0ShYiaXDaPewbllTxoMevqv+OABb+Q7ycUWkE2A== dependencies: - "@octokit/auth-token" "^2.4.0" - "@octokit/plugin-paginate-rest" "^1.1.1" - "@octokit/plugin-request-log" "^1.0.0" - "@octokit/plugin-rest-endpoint-methods" "2.4.0" - "@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/core" "^3.5.0" + "@octokit/plugin-paginate-rest" "^2.6.2" + "@octokit/plugin-request-log" "^1.0.2" + "@octokit/plugin-rest-endpoint-methods" "5.3.3" -"@octokit/types@^2.0.0", "@octokit/types@^2.0.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": +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1": version "6.16.4" resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.16.4.tgz#d24f5e1bacd2fe96d61854b5bda0e88cf8288dfe" integrity sha512-UxhWCdSzloULfUyamfOg4dJxV9B+XjgrIZscI0VCbp4eNrjmorGEw+4qdwcpTsu6DIrm9tQsFQS2pK5QkqQ04A== dependencies: "@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": version "0.20.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.20.0.tgz#d4e26d30dc0c5da697d1ff51434ad8f0cf30e565" @@ -1798,7 +1795,7 @@ "@types/node" "*" 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" resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.4.tgz#e1cf817d70a1e118e81922c4ff6683ce9d422e26" 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" 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: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -2868,7 +2860,7 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -before-after-hook@^2.0.0: +before-after-hook@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== @@ -3098,11 +3090,6 @@ browserstacktunnel-wrapper@^2.0.4: https-proxy-agent "^2.2.1" 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: version "1.1.0" 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" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= -lodash.get@^4.0.0, lodash.get@^4.4.2: +lodash.get@^4.0.0: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= @@ -8676,11 +8663,6 @@ lru-queue@^0.1.0: dependencies: 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: version "5.0.1" 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" 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: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -9873,14 +9850,6 @@ os-locale@^1.4.0: dependencies: 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: version "1.0.2" 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": version "0.0.0" - uid "7b7f35433af9c3380758e048894d7b9aecf3754e" resolved "https://saucelabs.com/downloads/sc-4.6.2-linux.tar.gz#7b7f35433af9c3380758e048894d7b9aecf3754e" saucelabs@^1.5.0: @@ -13728,13 +13696,6 @@ universal-analytics@^0.4.16: request "^2.88.2" 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: version "6.0.0" 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" 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: version "4.4.0" resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59"