From 563c72cceb955000f581cdcb5df7f0148d4e7c62 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 1 Sep 2021 20:56:42 +0000 Subject: [PATCH 01/30] build(deps): update dependency semantic-release to v17.4.7 (#11529) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4fa965180f9ec6..e9852446952217 100644 --- a/package.json +++ b/package.json @@ -263,7 +263,7 @@ "prettier": "2.3.2", "pretty-quick": "3.1.1", "rimraf": "3.0.2", - "semantic-release": "17.4.6", + "semantic-release": "17.4.7", "shelljs": "0.8.4", "strip-ansi": "6.0.0", "tmp-promise": "3.0.2", diff --git a/yarn.lock b/yarn.lock index b57d76e64e74c7..a8821c123d1cb8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8463,10 +8463,10 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -semantic-release@17.4.6: - version "17.4.6" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-17.4.6.tgz#a9e53da3d43ac07250c55b6939857587be2ecaa2" - integrity sha512-0B1OGkW8gzQjLbj3H5G4fJyy73HAWsoDnzWYyfNJHyyyLi1acQd+id4O7U+12wXTk9G83pXCgSFj9oYTvocFMA== +semantic-release@17.4.7: + version "17.4.7" + resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-17.4.7.tgz#88e1dce7294cc43acc54c4e0a83f582264567206" + integrity sha512-3Ghu8mKCJgCG3QzE5xphkYWM19lGE3XjFdOXQIKBM2PBpBvgFQ/lXv31oX0+fuN/UjNFO/dqhNs8ATLBhg6zBg== dependencies: "@semantic-release/commit-analyzer" "^8.0.0" "@semantic-release/error" "^2.2.0" From 37c507a0429703ed5db61cc86f7bf899e30922a4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Sep 2021 03:46:09 +0000 Subject: [PATCH 02/30] chore(deps): update dependency @types/node to v14.17.12 (#11530) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e9852446952217..8bf529da553626 100644 --- a/package.json +++ b/package.json @@ -224,7 +224,7 @@ "@types/markdown-table": "2.0.0", "@types/moo": "0.5.5", "@types/nock": "10.0.3", - "@types/node": "14.17.11", + "@types/node": "14.17.12", "@types/node-emoji": "1.8.1", "@types/parse-link-header": "1.0.0", "@types/registry-auth-token": "4.2.1", diff --git a/yarn.lock b/yarn.lock index a8821c123d1cb8..7267dbcc6a5b44 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1958,10 +1958,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.6.tgz#8666478db8095aa66e25b7e469f3e7b53ea2855e" integrity sha512-VESVNFoa/ahYA62xnLBjo5ur6gPsgEE5cNRy8SrdnkZ2nwJSW0kJ4ufbFr2zuU9ALtHM8juY53VcRoTA7htXSg== -"@types/node@14.17.11": - version "14.17.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.11.tgz#82d266d657aec5ff01ca59f2ffaff1bb43f7bf0f" - integrity sha512-n2OQ+0Bz6WEsUjrvcHD1xZ8K+Kgo4cn9/w94s1bJS690QMUWfJPW/m7CCb7gPkA1fcYwL2UpjXP/rq/Eo41m6w== +"@types/node@14.17.12": + version "14.17.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.12.tgz#7a31f720b85a617e54e42d24c4ace136601656c7" + integrity sha512-vhUqgjJR1qxwTWV5Ps5txuy2XMdf7Fw+OrdChRboy8BmWUPkckOhphaohzFG6b8DW7CrxaBMdrdJ47SYFq1okw== "@types/node@^13.7.0": version "13.13.52" From 00b87dbfc95e6aff3577947081ad25ad8c1cdc3a Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Thu, 2 Sep 2021 12:50:53 +0200 Subject: [PATCH 03/30] refactor(git): gitAuthor writing (#11535) --- lib/platform/index.spec.ts | 27 ------------ lib/platform/index.ts | 44 +------------------ .../git/__snapshots__/author.spec.ts.snap} | 6 +-- lib/util/git/author.spec.ts | 30 +++++++++++++ lib/util/git/author.ts | 44 +++++++++++++++++++ lib/util/git/index.ts | 37 +++++++++------- 6 files changed, 100 insertions(+), 88 deletions(-) rename lib/{platform/__snapshots__/index.spec.ts.snap => util/git/__snapshots__/author.spec.ts.snap} (50%) create mode 100644 lib/util/git/author.spec.ts create mode 100644 lib/util/git/author.ts diff --git a/lib/platform/index.spec.ts b/lib/platform/index.spec.ts index 54fd78d40abe1b..1a29be4909fd66 100644 --- a/lib/platform/index.spec.ts +++ b/lib/platform/index.spec.ts @@ -70,31 +70,4 @@ describe('platform/index', () => { platform: PLATFORM_TYPE_BITBUCKET, }); }); - - it('returns null if empty email given', () => { - expect(platform.parseGitAuthor(undefined)).toBeNull(); - }); - it('parses bot email', () => { - // FIXME: explicit assert condition - expect( - platform.parseGitAuthor('some[bot]@users.noreply.github.com') - ).toMatchSnapshot(); - }); - it('parses bot name and email', () => { - // FIXME: explicit assert condition - expect( - platform.parseGitAuthor( - '"some[bot]" ' - ) - ).toMatchSnapshot(); - }); - it('escapes names', () => { - // FIXME: explicit assert condition - expect( - platform.parseGitAuthor('name [what] ').name - ).toMatchSnapshot(); - }); - it('gives up', () => { - expect(platform.parseGitAuthor('a.b.c')).toBeNull(); - }); }); diff --git a/lib/platform/index.ts b/lib/platform/index.ts index 8268aecdc7c1da..5436884fda69ed 100644 --- a/lib/platform/index.ts +++ b/lib/platform/index.ts @@ -1,10 +1,10 @@ import URL from 'url'; -import addrs from 'email-addresses'; import type { AllConfig } from '../config/types'; import { PLATFORM_NOT_FOUND } from '../constants/error-messages'; import { logger } from '../logger'; import type { HostRule } from '../types'; import { setNoVerify, setPrivateKey } from '../util/git'; +import { parseGitAuthor } from '../util/git/author'; import * as hostRules from '../util/host-rules'; import platforms from './api'; import type { Platform } from './types'; @@ -39,48 +39,6 @@ export function setPlatformApi(name: string): void { _platform = platforms.get(name); } -interface GitAuthor { - name?: string; - address?: string; -} - -export function parseGitAuthor(input: string): GitAuthor | null { - let result: GitAuthor = null; - if (!input) { - return null; - } - try { - result = addrs.parseOneAddress(input); - if (result) { - return result; - } - if (input.includes('[bot]@')) { - // invalid github app/bot addresses - const parsed = addrs.parseOneAddress( - input.replace('[bot]@', '@') - ) as addrs.ParsedMailbox; - if (parsed?.address) { - result = { - name: parsed.name || input.replace(/@.*/, ''), - address: parsed.address.replace('@', '[bot]@'), - }; - return result; - } - } - if (input.includes('<') && input.includes('>')) { - // try wrapping the name part in quotations - result = addrs.parseOneAddress('"' + input.replace(/(\s?<)/, '"$1')); - if (result) { - return result; - } - } - } catch (err) /* istanbul ignore next */ { - logger.error({ err }, 'Unknown error parsing gitAuthor'); - } - // give up - return null; -} - export async function initPlatform(config: AllConfig): Promise { setPrivateKey(config.gitPrivateKey); setNoVerify(config.gitNoVerify ?? []); diff --git a/lib/platform/__snapshots__/index.spec.ts.snap b/lib/util/git/__snapshots__/author.spec.ts.snap similarity index 50% rename from lib/platform/__snapshots__/index.spec.ts.snap rename to lib/util/git/__snapshots__/author.spec.ts.snap index 3217d7d515f0db..844b8e8eb738a1 100644 --- a/lib/platform/__snapshots__/index.spec.ts.snap +++ b/lib/util/git/__snapshots__/author.spec.ts.snap @@ -1,15 +1,15 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`platform/index escapes names 1`] = `"name [what]"`; +exports[`util/git/author parseGitAuthor escapes names 1`] = `"name [what]"`; -exports[`platform/index parses bot email 1`] = ` +exports[`util/git/author parseGitAuthor parses bot email 1`] = ` Object { "address": "some[bot]@users.noreply.github.com", "name": "some[bot]", } `; -exports[`platform/index parses bot name and email 1`] = ` +exports[`util/git/author parseGitAuthor parses bot name and email 1`] = ` Object { "address": "some[bot]@users.noreply.github.com", "name": "some[bot]", diff --git a/lib/util/git/author.spec.ts b/lib/util/git/author.spec.ts new file mode 100644 index 00000000000000..cd80f6a393fcec --- /dev/null +++ b/lib/util/git/author.spec.ts @@ -0,0 +1,30 @@ +import { parseGitAuthor } from './author'; + +describe('util/git/author', () => { + describe('parseGitAuthor', () => { + it('returns null if empty email given', () => { + expect(parseGitAuthor(undefined)).toBeNull(); + }); + it('parses bot email', () => { + // FIXME: explicit assert condition + expect( + parseGitAuthor('some[bot]@users.noreply.github.com') + ).toMatchSnapshot(); + }); + it('parses bot name and email', () => { + // FIXME: explicit assert condition + expect( + parseGitAuthor('"some[bot]" ') + ).toMatchSnapshot(); + }); + it('escapes names', () => { + // FIXME: explicit assert condition + expect( + parseGitAuthor('name [what] ').name + ).toMatchSnapshot(); + }); + it('gives up', () => { + expect(parseGitAuthor('a.b.c')).toBeNull(); + }); + }); +}); diff --git a/lib/util/git/author.ts b/lib/util/git/author.ts new file mode 100644 index 00000000000000..bb149346afc7fe --- /dev/null +++ b/lib/util/git/author.ts @@ -0,0 +1,44 @@ +import addrs from 'email-addresses'; +import { logger } from '../../logger'; + +export interface GitAuthor { + name?: string; + address?: string; +} + +export function parseGitAuthor(input: string): GitAuthor | null { + let result: GitAuthor = null; + if (!input) { + return null; + } + try { + result = addrs.parseOneAddress(input); + if (result) { + return result; + } + if (input.includes('[bot]@')) { + // invalid github app/bot addresses + const parsed = addrs.parseOneAddress( + input.replace('[bot]@', '@') + ) as addrs.ParsedMailbox; + if (parsed?.address) { + result = { + name: parsed.name || input.replace(/@.*/, ''), + address: parsed.address.replace('@', '[bot]@'), + }; + return result; + } + } + if (input.includes('<') && input.includes('>')) { + // try wrapping the name part in quotations + result = addrs.parseOneAddress('"' + input.replace(/(\s?<)/, '"$1')); + if (result) { + return result; + } + } + } catch (err) /* istanbul ignore next */ { + logger.debug({ err }, 'Unknown error parsing gitAuthor'); + } + // give up + return null; +} diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index e24c8084122bcc..5194853076ac0a 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -234,6 +234,27 @@ async function setBranchPrefix(branchPrefix: string): Promise { } } +export async function writeGitAuthor(): Promise { + const { gitAuthorName, gitAuthorEmail } = config; + try { + if (gitAuthorName) { + logger.debug({ gitAuthorName }, 'Setting git author name'); + await git.addConfig('user.name', gitAuthorName); + } + if (gitAuthorEmail) { + logger.debug({ gitAuthorEmail }, 'Setting git author email'); + await git.addConfig('user.email', gitAuthorEmail); + } + } catch (err) /* istanbul ignore next */ { + checkForPlatformFailure(err); + logger.debug( + { err, gitAuthorName, gitAuthorEmail }, + 'Error setting git author config' + ); + throw new Error(TEMPORARY_ERROR); + } +} + export async function setUserRepoConfig({ branchPrefix, gitIgnoredAuthors, @@ -344,21 +365,7 @@ export async function syncGit(): Promise { } logger.warn({ err }, 'Cannot retrieve latest commit'); } - try { - const { gitAuthorName, gitAuthorEmail } = config; - if (gitAuthorName) { - logger.debug({ gitAuthorName }, 'Setting git author name'); - await git.addConfig('user.name', gitAuthorName); - } - if (gitAuthorEmail) { - logger.debug({ gitAuthorEmail }, 'Setting git author email'); - await git.addConfig('user.email', gitAuthorEmail); - } - } catch (err) /* istanbul ignore next */ { - checkForPlatformFailure(err); - logger.debug({ err }, 'Error setting git author config'); - throw new Error(TEMPORARY_ERROR); - } + await writeGitAuthor(); config.currentBranch = config.currentBranch || (await getDefaultBranch(git)); if (config.branchPrefix) { await setBranchPrefix(config.branchPrefix); From de727153db603b1d578ad03c5ec18e5b802f36ae Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Thu, 2 Sep 2021 14:08:12 +0200 Subject: [PATCH 04/30] fix: remove global.gitAuthor (#11536) --- lib/globals.d.ts | 6 -- lib/platform/azure/index.ts | 2 - lib/platform/bitbucket-server/index.spec.ts | 13 +-- lib/platform/bitbucket-server/index.ts | 2 - lib/platform/bitbucket/index.spec.ts | 24 ++--- lib/platform/bitbucket/index.ts | 2 - lib/platform/gitea/index.spec.ts | 6 +- lib/platform/gitea/index.ts | 2 - lib/platform/github/index.spec.ts | 5 - lib/platform/github/index.ts | 2 - .../gitlab/__snapshots__/index.spec.ts.snap | 98 +++++++++---------- lib/platform/gitlab/index.ts | 2 - lib/platform/index.ts | 24 +---- lib/util/git/index.spec.ts | 9 +- lib/util/git/index.ts | 20 +++- 15 files changed, 90 insertions(+), 127 deletions(-) diff --git a/lib/globals.d.ts b/lib/globals.d.ts index eef15fbf1826df..8cd937df0d0887 100644 --- a/lib/globals.d.ts +++ b/lib/globals.d.ts @@ -9,12 +9,6 @@ declare interface Error { validationMessage?: string; } -declare namespace NodeJS { - interface Global { - gitAuthor?: { name: string; email: string }; - } -} - // can't use `resolveJsonModule` because it will copy json files and change dist path declare module '*/package.json' { diff --git a/lib/platform/azure/index.ts b/lib/platform/azure/index.ts index 27efa594855b81..d91f5aa485fe2d 100644 --- a/lib/platform/azure/index.ts +++ b/lib/platform/azure/index.ts @@ -180,8 +180,6 @@ export async function initRepo({ ...config, url, extraCloneOpts: getStorageExtraCloneOpts(opts), - gitAuthorName: global.gitAuthor?.name, - gitAuthorEmail: global.gitAuthor?.email, cloneSubmodules, }); const repoConfig: RepoResult = { diff --git a/lib/platform/bitbucket-server/index.spec.ts b/lib/platform/bitbucket-server/index.spec.ts index 1002b9aafa2719..9ca7dba1e8353c 100644 --- a/lib/platform/bitbucket-server/index.spec.ts +++ b/lib/platform/bitbucket-server/index.spec.ts @@ -1311,18 +1311,13 @@ describe('platform/bitbucket-server/index', () => { .twice() .reply(200, { conflicted: false }); - const author = global.gitAuthor; - try { - expect(await bitbucket.getPr(3)).toMatchSnapshot(); + expect(await bitbucket.getPr(3)).toMatchSnapshot(); - expect(await bitbucket.getPr(5)).toMatchSnapshot(); + expect(await bitbucket.getPr(5)).toMatchSnapshot(); - expect(await bitbucket.getPr(5)).toMatchSnapshot(); + expect(await bitbucket.getPr(5)).toMatchSnapshot(); - expect(httpMock.getTrace()).toMatchSnapshot(); - } finally { - global.gitAuthor = author; - } + expect(httpMock.getTrace()).toMatchSnapshot(); }); it('gets a closed PR', async () => { diff --git a/lib/platform/bitbucket-server/index.ts b/lib/platform/bitbucket-server/index.ts index 44bc93d61a6a4f..711be02aa8b476 100644 --- a/lib/platform/bitbucket-server/index.ts +++ b/lib/platform/bitbucket-server/index.ts @@ -214,8 +214,6 @@ export async function initRepo({ await git.initRepo({ ...config, url: gitUrl, - gitAuthorName: global.gitAuthor?.name, - gitAuthorEmail: global.gitAuthor?.email, cloneSubmodules, }); diff --git a/lib/platform/bitbucket/index.spec.ts b/lib/platform/bitbucket/index.spec.ts index 2711cf3cc7a998..2d8508446e5942 100644 --- a/lib/platform/bitbucket/index.spec.ts +++ b/lib/platform/bitbucket/index.spec.ts @@ -726,7 +726,6 @@ describe('platform/bitbucket/index', () => { it('canRebase', async () => { expect.assertions(4); - const author = global.gitAuthor; const scope = await initRepoMock(); scope .get('/2.0/repositories/some/repo/pullrequests/3') @@ -747,22 +746,13 @@ describe('platform/bitbucket/index', () => { .get('/2.0/repositories/some/repo/pullrequests/5/diff') .twice() .reply(200, diff); - try { - expect(await bitbucket.getPr(3)).toMatchSnapshot(); - - global.gitAuthor = { - email: 'renovate@whitesourcesoftware.com', - name: 'bot', - }; - expect(await bitbucket.getPr(5)).toMatchSnapshot(); - - global.gitAuthor = { email: 'jane@example.com', name: 'jane' }; - expect(await bitbucket.getPr(5)).toMatchSnapshot(); - - expect(httpMock.getTrace()).toMatchSnapshot(); - } finally { - global.gitAuthor = author; - } + expect(await bitbucket.getPr(3)).toMatchSnapshot(); + + expect(await bitbucket.getPr(5)).toMatchSnapshot(); + + expect(await bitbucket.getPr(5)).toMatchSnapshot(); + + expect(httpMock.getTrace()).toMatchSnapshot(); }); }); diff --git a/lib/platform/bitbucket/index.ts b/lib/platform/bitbucket/index.ts index 98471047aa87f7..7f2cc28fc5f219 100644 --- a/lib/platform/bitbucket/index.ts +++ b/lib/platform/bitbucket/index.ts @@ -179,8 +179,6 @@ export async function initRepo({ await git.initRepo({ ...config, url, - gitAuthorName: global.gitAuthor?.name, - gitAuthorEmail: global.gitAuthor?.email, cloneSubmodules, }); const repoConfig: RepoResult = { diff --git a/lib/platform/gitea/index.spec.ts b/lib/platform/gitea/index.spec.ts index 2c41ac96a9cd02..1cd6325da00ce1 100644 --- a/lib/platform/gitea/index.spec.ts +++ b/lib/platform/gitea/index.spec.ts @@ -176,8 +176,6 @@ describe('platform/gitea/index', () => { gitvcs.isBranchStale.mockResolvedValue(false); gitvcs.getBranchCommit.mockReturnValue(mockCommitHash); - global.gitAuthor = { name: 'Renovate', email: 'renovate@example.com' }; - setBaseUrl('https://gitea.renovatebot.com/api/v1'); }); @@ -574,7 +572,9 @@ describe('platform/gitea/index', () => { partial({ commit: { id: mockCommitHash, - author: partial({ email: global.gitAuthor.email }), + author: partial({ + email: 'renovate@whitesourcesoftware.com', + }), }, }) ); diff --git a/lib/platform/gitea/index.ts b/lib/platform/gitea/index.ts index c7d831e6b007a7..a72082431d3995 100644 --- a/lib/platform/gitea/index.ts +++ b/lib/platform/gitea/index.ts @@ -297,8 +297,6 @@ const platform: Platform = { await git.initRepo({ ...config, url: URL.format(gitEndpoint), - gitAuthorName: global.gitAuthor?.name, - gitAuthorEmail: global.gitAuthor?.email, }); // Reset cached resources diff --git a/lib/platform/github/index.spec.ts b/lib/platform/github/index.spec.ts index 3d0c716cff4a53..ff04c1f864f4d3 100644 --- a/lib/platform/github/index.spec.ts +++ b/lib/platform/github/index.spec.ts @@ -30,7 +30,6 @@ describe('platform/github/index', () => { git.getBranchCommit.mockReturnValue( '0d9c7726c3d628b7e28af234595cfd20febdbf8e' ); - delete global.gitAuthor; hostRules.find.mockReturnValue({ token: 'abc123', }); @@ -1900,10 +1899,6 @@ describe('platform/github/index', () => { const scope = httpMock.scope(githubApiHost); initRepoMock(scope, 'some/repo'); scope.post('/graphql').reply(200, graphqlOpenPullRequests); - global.gitAuthor = { - name: 'Renovate Bot', - email: 'renovate@whitesourcesoftware.com', - }; await github.initRepo({ repository: 'some/repo', } as any); diff --git a/lib/platform/github/index.ts b/lib/platform/github/index.ts index 7b3af04531fc11..f45144e82a77c8 100644 --- a/lib/platform/github/index.ts +++ b/lib/platform/github/index.ts @@ -420,8 +420,6 @@ export async function initRepo({ await git.initRepo({ ...config, url, - gitAuthorName: global.gitAuthor?.name, - gitAuthorEmail: global.gitAuthor?.email, }); const repoConfig: RepoResult = { defaultBranch: config.defaultBranch, diff --git a/lib/platform/gitlab/__snapshots__/index.spec.ts.snap b/lib/platform/gitlab/__snapshots__/index.spec.ts.snap index 2a334d52630101..9fffb450cdf82f 100644 --- a/lib/platform/gitlab/__snapshots__/index.spec.ts.snap +++ b/lib/platform/gitlab/__snapshots__/index.spec.ts.snap @@ -2653,63 +2653,12 @@ Array [ ] `; -exports[`platform/gitlab/index initRepo should use ssh_url_to_repo if gitUrl is set to ssh 1`] = ` -Array [ - Object { - "headers": Object { - "accept": "application/json", - "accept-encoding": "gzip, deflate, br", - "authorization": "Bearer abc123", - "host": "gitlab.com", - "user-agent": "RenovateBot/0.0.0-semantic-release (https://github.com/renovatebot/renovate)", - }, - "method": "GET", - "url": "https://gitlab.com/api/v4/projects/some%2Frepo%2Fproject", - }, -] -`; - -exports[`platform/gitlab/index initRepo should use ssh_url_to_repo if gitUrl is set to ssh 2`] = ` -Array [ - Array [ - Object { - "cloneSubmodules": undefined, - "defaultBranch": "master", - "gitAuthorEmail": undefined, - "gitAuthorName": undefined, - "ignorePrAuthor": undefined, - "mergeMethod": "merge", - "repository": "some%2Frepo%2Fproject", - "url": "ssh://git@gitlab.com/some%2Frepo%2Fproject.git", - }, - ], -] -`; - -exports[`platform/gitlab/index initRepo should throw if ssh_url_to_repo is not present but gitUrl is set to ssh 1`] = ` -Array [ - Object { - "headers": Object { - "accept": "application/json", - "accept-encoding": "gzip, deflate, br", - "authorization": "Bearer abc123", - "host": "gitlab.com", - "user-agent": "RenovateBot/0.0.0-semantic-release (https://github.com/renovatebot/renovate)", - }, - "method": "GET", - "url": "https://gitlab.com/api/v4/projects/some%2Frepo%2Fproject", - }, -] -`; - exports[`platform/gitlab/index initRepo should fall back respecting when GITLAB_IGNORE_REPO_URL is set 1`] = ` Array [ Array [ Object { "cloneSubmodules": undefined, "defaultBranch": "master", - "gitAuthorEmail": undefined, - "gitAuthorName": undefined, "ignorePrAuthor": undefined, "mergeMethod": "merge", "repository": "some%2Frepo%2Fproject", @@ -2869,6 +2818,53 @@ Array [ ] `; +exports[`platform/gitlab/index initRepo should throw if ssh_url_to_repo is not present but gitUrl is set to ssh 1`] = ` +Array [ + Object { + "headers": Object { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "authorization": "Bearer abc123", + "host": "gitlab.com", + "user-agent": "RenovateBot/0.0.0-semantic-release (https://github.com/renovatebot/renovate)", + }, + "method": "GET", + "url": "https://gitlab.com/api/v4/projects/some%2Frepo%2Fproject", + }, +] +`; + +exports[`platform/gitlab/index initRepo should use ssh_url_to_repo if gitUrl is set to ssh 1`] = ` +Array [ + Object { + "headers": Object { + "accept": "application/json", + "accept-encoding": "gzip, deflate, br", + "authorization": "Bearer abc123", + "host": "gitlab.com", + "user-agent": "RenovateBot/0.0.0-semantic-release (https://github.com/renovatebot/renovate)", + }, + "method": "GET", + "url": "https://gitlab.com/api/v4/projects/some%2Frepo%2Fproject", + }, +] +`; + +exports[`platform/gitlab/index initRepo should use ssh_url_to_repo if gitUrl is set to ssh 2`] = ` +Array [ + Array [ + Object { + "cloneSubmodules": undefined, + "defaultBranch": "master", + "ignorePrAuthor": undefined, + "mergeMethod": "merge", + "repository": "some%2Frepo%2Fproject", + "url": "ssh://git@gitlab.com/some%2Frepo%2Fproject.git", + }, + ], +] +`; + exports[`platform/gitlab/index massageMarkdown(input) returns updated pr body 1`] = ` "https://github.com/foo/bar/issues/5 plus also [a link](https://github.com/foo/bar/issues/5 diff --git a/lib/platform/gitlab/index.ts b/lib/platform/gitlab/index.ts index 688437f3cc6d36..6fdbccf4312394 100644 --- a/lib/platform/gitlab/index.ts +++ b/lib/platform/gitlab/index.ts @@ -286,8 +286,6 @@ export async function initRepo({ await git.initRepo({ ...config, url, - gitAuthorName: global.gitAuthor?.name, - gitAuthorEmail: global.gitAuthor?.email, }); } catch (err) /* istanbul ignore next */ { logger.debug({ err }, 'Caught initRepo error'); diff --git a/lib/platform/index.ts b/lib/platform/index.ts index 5436884fda69ed..df48461baedd08 100644 --- a/lib/platform/index.ts +++ b/lib/platform/index.ts @@ -3,8 +3,7 @@ import type { AllConfig } from '../config/types'; import { PLATFORM_NOT_FOUND } from '../constants/error-messages'; import { logger } from '../logger'; import type { HostRule } from '../types'; -import { setNoVerify, setPrivateKey } from '../util/git'; -import { parseGitAuthor } from '../util/git/author'; +import { setGitAuthor, setNoVerify, setPrivateKey } from '../util/git'; import * as hostRules from '../util/host-rules'; import platforms from './api'; import type { Platform } from './types'; @@ -46,30 +45,15 @@ export async function initPlatform(config: AllConfig): Promise { // TODO: types const platformInfo = await platform.initPlatform(config); const returnConfig: any = { ...config, ...platformInfo }; - let gitAuthor: string; // istanbul ignore else if (config?.gitAuthor) { logger.debug(`Using configured gitAuthor (${config.gitAuthor})`); - gitAuthor = config.gitAuthor; + returnConfig.gitAuthor = config.gitAuthor; } else if (platformInfo?.gitAuthor) { logger.debug(`Using platform gitAuthor: ${String(platformInfo.gitAuthor)}`); - gitAuthor = platformInfo.gitAuthor; - } else { - logger.debug( - 'Using default gitAuthor: Renovate Bot ' - ); - gitAuthor = 'Renovate Bot '; - } - const gitAuthorParsed = parseGitAuthor(gitAuthor); - // istanbul ignore if - if (!gitAuthorParsed) { - throw new Error('Init: gitAuthor is not parsed as valid RFC5322 format'); + returnConfig.gitAuthor = platformInfo.gitAuthor; } - global.gitAuthor = { - name: gitAuthorParsed.name, - email: gitAuthorParsed.address, - }; - + setGitAuthor(returnConfig.gitAuthor); const platformRule: HostRule = { hostType: returnConfig.platform, matchHost: URL.parse(returnConfig.endpoint).hostname, diff --git a/lib/util/git/index.spec.ts b/lib/util/git/index.spec.ts index c9232b60f58fa9..36a3136e7453b0 100644 --- a/lib/util/git/index.spec.ts +++ b/lib/util/git/index.spec.ts @@ -3,6 +3,7 @@ import Git from 'simple-git'; import SimpleGit from 'simple-git/src/git'; import tmp from 'tmp-promise'; import { setGlobalConfig } from '../../config/global'; +import { CONFIG_VALIDATION } from '../../constants/error-messages'; import * as git from '.'; import { GitNoVerifyOption, setNoVerify } from '.'; @@ -73,10 +74,9 @@ describe('util/git/index', () => { setGlobalConfig({ localDir: tmpDir.path }); await git.initRepo({ url: origin.path, - gitAuthorName: 'Jest', - gitAuthorEmail: 'Jest@example.com', }); await git.setUserRepoConfig({ branchPrefix: 'renovate/' }); + git.setGitAuthor('Jest '); setNoVerify([]); await git.syncGit(); // override some local git settings for better testing @@ -548,4 +548,9 @@ describe('util/git/index', () => { expect(res).toBe('test-extra-config-value'); }); }); + describe('setGitAuthor()', () => { + it('throws for invalid', () => { + expect(() => git.setGitAuthor('invalid')).toThrow(CONFIG_VALIDATION); + }); + }); }); diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index 5194853076ac0a..2bc8597d3cb089 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -24,6 +24,7 @@ import { logger } from '../../logger'; import { ExternalHostError } from '../../types/errors/external-host-error'; import { GitOptions, GitProtocol } from '../../types/git'; import { Limit, incLimitedValue } from '../../workers/global/limits'; +import { parseGitAuthor } from './author'; import { GitNoVerifyOption, getNoVerify } from './config'; import { configSigningKey, writePrivateKey } from './private-key'; @@ -44,8 +45,6 @@ interface StorageConfig { currentBranch?: string; url: string; extraCloneOpts?: GitOptions; - gitAuthorName?: string; - gitAuthorEmail?: string; cloneSubmodules?: boolean; } @@ -57,6 +56,8 @@ interface LocalConfig extends StorageConfig { branchIsModified: Record; branchPrefix: string; ignoredAuthors: string[]; + gitAuthorName?: string; + gitAuthorEmail?: string; } // istanbul ignore next @@ -234,6 +235,21 @@ async function setBranchPrefix(branchPrefix: string): Promise { } } +export function setGitAuthor(gitAuthor: string): void { + const gitAuthorParsed = parseGitAuthor( + gitAuthor || 'Renovate Bot ' + ); + if (!gitAuthorParsed) { + const error = new Error(CONFIG_VALIDATION); + error.validationSource = 'None'; + error.validationError = 'Invalid gitAuthor'; + error.validationMessage = `gitAuthor is not parsed as valid RFC5322 format: ${gitAuthor}`; + throw error; + } + config.gitAuthorName = gitAuthorParsed.name; + config.gitAuthorEmail = gitAuthorParsed.address; +} + export async function writeGitAuthor(): Promise { const { gitAuthorName, gitAuthorEmail } = config; try { From a73c107e85141df2d74901cda10cd16a825937e1 Mon Sep 17 00:00:00 2001 From: Michael Kriese Date: Thu, 2 Sep 2021 14:35:33 +0200 Subject: [PATCH 05/30] feat(core/preset): add nexpect monorepo (#11538) --- lib/config/presets/internal/monorepo.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/config/presets/internal/monorepo.ts b/lib/config/presets/internal/monorepo.ts index 0654471b4eafdb..8d8997f3816885 100644 --- a/lib/config/presets/internal/monorepo.ts +++ b/lib/config/presets/internal/monorepo.ts @@ -126,6 +126,7 @@ const repoGroups = { 'https://github.com/neutrinojs/neutrino', 'https://github.com/mozilla-neutrino/neutrino-dev', ], + nexpect: 'https://github.com/fluffynuts/NExpect', nextjs: [ 'https://github.com/zeit/next.js', // old repo 'https://github.com/vercel/next.js', From fb75b2f4dc8e72bc5457800c386310ad020da403 Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Thu, 2 Sep 2021 16:19:02 +0200 Subject: [PATCH 06/30] feat(git): make gitAuthor repo-configurable (#11539) --- docs/usage/configuration-options.md | 8 ++++++++ docs/usage/self-hosted-configuration.md | 8 -------- lib/config/options/index.ts | 1 - lib/platform/index.ts | 1 + lib/util/git/index.ts | 4 +++- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index 29ffd6dd478b3a..9b8baa781c11c4 100644 --- a/docs/usage/configuration-options.md +++ b/docs/usage/configuration-options.md @@ -719,6 +719,14 @@ If configured, Renovate bypasses its normal major/minor/patch upgrade logic and Beware that Renovate follows tags strictly. For example, if you are following a tag like `next` and then that stream is released as `stable` and `next` is no longer being updated then that means your dependencies also won't be getting updated. +## gitAuthor + +You can customize the Git author that's used whenever Renovate creates a commit. +The `gitAuthor` option accepts a RFC5322-compliant string. + +**Note** We strongly recommend that the Git author email you use is unique to Renovate. +Otherwise, if another bot or human shares the same email and pushes to one of Renovate's branches then Renovate will mistake the branch as unmodified and potentially force push over the changes. + ## gitIgnoredAuthors Specify commit authors ignored by Renovate. diff --git a/docs/usage/self-hosted-configuration.md b/docs/usage/self-hosted-configuration.md index 5da83d57cbafe2..387adb6da29c9c 100644 --- a/docs/usage/self-hosted-configuration.md +++ b/docs/usage/self-hosted-configuration.md @@ -205,14 +205,6 @@ This should be set to a Personal Access Token (GitHub only) when `forkMode` is s Renovate will use this token to fork the repository into the personal space of the person owning the Personal Access Token. Renovate will then create branches on the fork and opens Pull Requests on the parent repository. -## gitAuthor - -You can customize the Git author that's used whenever Renovate creates a commit. -The `gitAuthor` option accepts a RFC5322-compliant string. - -**Note** We strongly recommend that the Git author email you use is unique to Renovate. -Otherwise, if another bot or human shares the same email and pushes to one of Renovate's branches then Renovate will mistake the branch as unmodified and potentially force push over the changes. - ## gitNoVerify Controls when Renovate passes the `--no-verify` flag to `git`. diff --git a/lib/config/options/index.ts b/lib/config/options/index.ts index 79226b72edd4ef..c6f9eec3b9d5cf 100644 --- a/lib/config/options/index.ts +++ b/lib/config/options/index.ts @@ -634,7 +634,6 @@ const options: RenovateOptions[] = [ name: 'gitAuthor', description: 'Author to use for Git commits. Must conform to RFC5322.', type: 'string', - globalOnly: true, }, { name: 'gitPrivateKey', diff --git a/lib/platform/index.ts b/lib/platform/index.ts index df48461baedd08..8780d11ecce4e8 100644 --- a/lib/platform/index.ts +++ b/lib/platform/index.ts @@ -53,6 +53,7 @@ export async function initPlatform(config: AllConfig): Promise { logger.debug(`Using platform gitAuthor: ${String(platformInfo.gitAuthor)}`); returnConfig.gitAuthor = platformInfo.gitAuthor; } + // This is done for validation and will be overridden later once repo config is incorporated setGitAuthor(returnConfig.gitAuthor); const platformRule: HostRule = { hostType: returnConfig.platform, diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index 2bc8597d3cb089..87443a761f2a66 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -274,9 +274,11 @@ export async function writeGitAuthor(): Promise { export async function setUserRepoConfig({ branchPrefix, gitIgnoredAuthors, + gitAuthor, }: RenovateConfig): Promise { await setBranchPrefix(branchPrefix); config.ignoredAuthors = gitIgnoredAuthors ?? []; + setGitAuthor(gitAuthor); } export async function getSubmodules(): Promise { @@ -381,7 +383,6 @@ export async function syncGit(): Promise { } logger.warn({ err }, 'Cannot retrieve latest commit'); } - await writeGitAuthor(); config.currentBranch = config.currentBranch || (await getDefaultBranch(git)); if (config.branchPrefix) { await setBranchPrefix(config.branchPrefix); @@ -733,6 +734,7 @@ export async function commitFiles({ } const { localDir } = getGlobalConfig(); await configSigningKey(localDir); + await writeGitAuthor(); try { await git.reset(ResetMode.HARD); await git.raw(['clean', '-fd']); From 88de2fe3e7c3d269c43f1728a14edbab0ad3a9ee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Sep 2021 14:29:54 +0000 Subject: [PATCH 07/30] build(deps): update dependency email-addresses to v5 (#11543) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8bf529da553626..071513a003bbb1 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,7 @@ "delay": "5.0.0", "dequal": "2.0.2", "detect-indent": "6.1.0", - "email-addresses": "4.0.0", + "email-addresses": "5.0.0", "emoji-regex": "9.2.2", "emojibase": "5.2.0", "emojibase-regex": "5.1.3", diff --git a/yarn.lock b/yarn.lock index 7267dbcc6a5b44..8abbbfbca70ee3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3767,10 +3767,10 @@ electron-to-chromium@^1.3.811: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.822.tgz#7036edc7f669b0aa79e9801dc5f56866c6ddc0b2" integrity sha512-k7jG5oYYHxF4jx6PcqwHX3JVME/OjzolqOZiIogi9xtsfsmTjTdie4x88OakYFPEa8euciTgCCzvVNwvmjHb1Q== -email-addresses@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/email-addresses/-/email-addresses-4.0.0.tgz#94fa214c30f943b02eaf91da717d89ff6a19e345" - integrity sha512-Nas3sSSiD5lSIoqBos0FMjB9h4clHxXuAahHKGJ5doRWavEB7pBHzOxnI7R5f1MuGNrrSnsZFJ81HCBv0DZmnw== +email-addresses@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/email-addresses/-/email-addresses-5.0.0.tgz#7ae9e7f58eef7d5e3e2c2c2d3ea49b78dc854fa6" + integrity sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw== emittery@^0.8.1: version "0.8.1" From 0bc698da37516648f2d5acc100de4c6e70f1847d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Sep 2021 17:10:11 +0200 Subject: [PATCH 08/30] build(deps): update dependency simple-git to v2.45.0 (#11545) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 071513a003bbb1..69b72d45d15e1d 100644 --- a/package.json +++ b/package.json @@ -184,7 +184,7 @@ "semver-utils": "1.1.4", "shlex": "2.1.0", "shortid": "2.2.16", - "simple-git": "2.44.0", + "simple-git": "2.45.0", "slugify": "1.6.0", "traverse": "0.6.6", "upath": "2.0.1", diff --git a/yarn.lock b/yarn.lock index 8abbbfbca70ee3..0f9b53e8db43cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8638,10 +8638,10 @@ signale@^1.2.1: figures "^2.0.0" pkg-conf "^2.1.0" -simple-git@2.44.0: - version "2.44.0" - resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-2.44.0.tgz#94eca4162b7e21707b5a1a40b22e6f29b007d3a8" - integrity sha512-wIjcAmymhzgdaM0Y/a+XxmNGlivvHQTPZDYXVmyHMShVDwdeVqu3+OOyDbYu0DnfVzqLs2EOxRTgMNbC3YquwQ== +simple-git@2.45.0: + version "2.45.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-2.45.0.tgz#4d53b146fc23496099ebfc7af5b0d605d0e3e504" + integrity sha512-wu/Ujs9IXn0HuyYm4HyRvne+EKsjJSWKEMkB3wQa3gNHSMHt7y3oeNX9zRQ3UBPk7bRRMLLHAdIZCZfHT9ehPg== dependencies: "@kwsites/file-exists" "^1.1.1" "@kwsites/promise-deferred" "^1.1.1" From f9f4d29af943e77b57ea7754b61b41dc7845cb4e Mon Sep 17 00:00:00 2001 From: Danilo Pianini Date: Thu, 2 Sep 2021 18:55:33 +0200 Subject: [PATCH 09/30] feat(manager/gradle): Add support for Gradle's TOML version Catalogs (#11452) Co-authored-by: Michael Kriese Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com> --- docs/usage/java.md | 8 +- lib/manager/gradle/index.ts | 7 +- .../shallow/__fixtures__/1/libs.versions.toml | 17 ++ .../shallow/__fixtures__/2/libs.versions.toml | 13 ++ lib/manager/gradle/shallow/extract.spec.ts | 180 +++++++++++++++++- lib/manager/gradle/shallow/extract.ts | 9 + lib/manager/gradle/shallow/extract/catalog.ts | 83 ++++++++ lib/manager/gradle/shallow/types.ts | 29 +++ lib/manager/gradle/shallow/utils.ts | 5 + 9 files changed, 348 insertions(+), 3 deletions(-) create mode 100644 lib/manager/gradle/shallow/__fixtures__/1/libs.versions.toml create mode 100644 lib/manager/gradle/shallow/__fixtures__/2/libs.versions.toml create mode 100644 lib/manager/gradle/shallow/extract/catalog.ts diff --git a/docs/usage/java.md b/docs/usage/java.md index e58dbe408117b2..aa8c51072dc721 100644 --- a/docs/usage/java.md +++ b/docs/usage/java.md @@ -16,12 +16,18 @@ Renovate detects versions that are specified in a string `'group:artifact:versio Renovate can update `build.gradle`/`build.gradle.kts` files in the root of the repository. It also updates any `*.gradle`/`*.gradle.kts` files in a subdirectory as multi-project configurations. +Renovate also tries to find updates for dependencies whose version is defined in a `*.properties` file, and scans for `*.versions.toml` files and for `*.toml` files inside the `gradle` folder to keep [catalogs](https://docs.gradle.org/current/userguide/platforms.html) up to date. Renovate does not support: - Projects which do not have either a `build.gradle` or `build.gradle.kts` in the repository root - Android projects that require extra configuration to run (e.g. setting the Android SDK) -- Gradle versions prior to version 5.0. +- Gradle versions older than version 5.0 +- Catalogs defined inside a `build.gradle` or `build.gradle.kts` file rather than in TOML +- Catalogs with version ranges +- Catalogs using the `required`, `strictly`, `preferred`, `reject`, and `rejectAll` version declarations +- Catalogs with custom names that do not end in `.toml` +- Catalogs outside the `gradle` folder whose names do not end in `.versions.toml` ## Gradle Wrapper diff --git a/lib/manager/gradle/index.ts b/lib/manager/gradle/index.ts index 086aab095fdef3..087bf18a9a37ea 100644 --- a/lib/manager/gradle/index.ts +++ b/lib/manager/gradle/index.ts @@ -29,7 +29,12 @@ export function updateDependency( export const language = LANGUAGE_JAVA; export const defaultConfig = { - fileMatch: ['\\.gradle(\\.kts)?$', '(^|/)gradle.properties$'], + fileMatch: [ + '\\.gradle(\\.kts)?$', + '(^|/)gradle.properties$', + '(^|\\/)gradle\\/.+\\.toml$', + '\\.versions\\.toml$', + ], timeout: 600, versioning: gradleVersioning.id, }; diff --git a/lib/manager/gradle/shallow/__fixtures__/1/libs.versions.toml b/lib/manager/gradle/shallow/__fixtures__/1/libs.versions.toml new file mode 100644 index 00000000000000..60a452bda6ada9 --- /dev/null +++ b/lib/manager/gradle/shallow/__fixtures__/1/libs.versions.toml @@ -0,0 +1,17 @@ +[versions] +detekt = "1.17.0" +kotest = "4.6.0" +publish-on-central = "0.5.0" + +[libraries] +detekt-formatting = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" } +kotest-assertions-core-jvm = { module = "io.kotest:kotest-assertions-core-jvm", version.ref = "kotest" } +kotest-runner-junit5 = { module = "io.kotest:kotest-runner-junit5", version.ref = "kotest" } +mockito = { group = "org.mockito", name = "mockito-core", version = "3.10.0" } + +[bundles] +kotest = [ "kotest-runner-junit5", "kotest-assertions-core-jvm" ] + +[plugins] +detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } +publish-on-central = { id = "org.danilopianini.publish-on-central", version.ref = "publish-on-central" } diff --git a/lib/manager/gradle/shallow/__fixtures__/2/libs.versions.toml b/lib/manager/gradle/shallow/__fixtures__/2/libs.versions.toml new file mode 100644 index 00000000000000..8308a0c81674fa --- /dev/null +++ b/lib/manager/gradle/shallow/__fixtures__/2/libs.versions.toml @@ -0,0 +1,13 @@ +[versions] +kotlin = "1.5.21" +retrofit = "2.8.2" + +[libraries] +okHttp = "com.squareup.okhttp3:okhttp:4.9.0" +okio = { module = "com.squareup.okio:okio", version = "2.8.0" } +picasso = { group = "com.squareup.picasso", name = "picasso", version = "2.5.1" } +retrofit2-retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } + +[plugins] +kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version = "1.5.21" } +kotlinSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } diff --git a/lib/manager/gradle/shallow/extract.spec.ts b/lib/manager/gradle/shallow/extract.spec.ts index 1456652cd4e755..55f36525df3f7d 100644 --- a/lib/manager/gradle/shallow/extract.spec.ts +++ b/lib/manager/gradle/shallow/extract.spec.ts @@ -1,5 +1,5 @@ import { extractAllPackageFiles } from '..'; -import { fs } from '../../../../test/util'; +import { fs, loadFixture } from '../../../../test/util'; jest.mock('../../../util/fs'); @@ -136,4 +136,182 @@ describe('manager/gradle/shallow/extract', () => { }, ]); }); + + it('works with dependency catalogs', async () => { + const tomlFile = loadFixture('1/libs.versions.toml'); + const fsMock = { + 'gradle/libs.versions.toml': tomlFile, + }; + mockFs(fsMock); + const res = await extractAllPackageFiles({} as never, Object.keys(fsMock)); + expect(res).toMatchObject([ + { + packageFile: 'gradle/libs.versions.toml', + deps: [ + { + depName: 'io.gitlab.arturbosch.detekt:detekt-formatting', + groupName: 'io.gitlab.arturbosch.detekt', + currentValue: '1.17.0', + managerData: { + fileReplacePosition: 21, + packageFile: 'gradle/libs.versions.toml', + }, + }, + { + depName: 'io.kotest:kotest-assertions-core-jvm', + groupName: 'io.kotest', + currentValue: '4.6.0', + managerData: { + fileReplacePosition: 39, + packageFile: 'gradle/libs.versions.toml', + }, + }, + { + depName: 'io.kotest:kotest-runner-junit5', + groupName: 'io.kotest', + currentValue: '4.6.0', + managerData: { + fileReplacePosition: 39, + packageFile: 'gradle/libs.versions.toml', + }, + }, + { + depName: 'org.mockito:mockito-core', + groupName: 'org.mockito', + currentValue: '3.10.0', + managerData: { + fileReplacePosition: 460, + packageFile: 'gradle/libs.versions.toml', + }, + }, + { + depName: 'io.gitlab.arturbosch.detekt', + depType: 'plugin', + currentValue: '1.17.0', + commitMessageTopic: 'plugin detekt', + lookupName: + 'io.gitlab.arturbosch.detekt:io.gitlab.arturbosch.detekt.gradle.plugin', + managerData: { + fileReplacePosition: 21, + packageFile: 'gradle/libs.versions.toml', + }, + registryUrls: [ + 'https://repo.maven.apache.org/maven2', + 'https://plugins.gradle.org/m2/', + ], + }, + { + depName: 'org.danilopianini.publish-on-central', + depType: 'plugin', + currentValue: '0.5.0', + commitMessageTopic: 'plugin publish-on-central', + lookupName: + 'org.danilopianini.publish-on-central:org.danilopianini.publish-on-central.gradle.plugin', + managerData: { + fileReplacePosition: 68, + packageFile: 'gradle/libs.versions.toml', + }, + registryUrls: [ + 'https://repo.maven.apache.org/maven2', + 'https://plugins.gradle.org/m2/', + ], + }, + ], + }, + ]); + }); + + it("can run Javier's example", async () => { + const tomlFile = loadFixture('2/libs.versions.toml'); + const fsMock = { + 'gradle/libs.versions.toml': tomlFile, + }; + mockFs(fsMock); + const res = await extractAllPackageFiles({} as never, Object.keys(fsMock)); + expect(res).toMatchObject([ + { + packageFile: 'gradle/libs.versions.toml', + deps: [ + { + depName: 'com.squareup.okhttp3:okhttp', + groupName: 'com.squareup.okhttp3', + currentValue: '4.9.0', + managerData: { + fileReplacePosition: 99, + packageFile: 'gradle/libs.versions.toml', + }, + }, + { + depName: 'com.squareup.okio:okio', + groupName: 'com.squareup.okio', + currentValue: '2.8.0', + managerData: { + fileReplacePosition: 161, + packageFile: 'gradle/libs.versions.toml', + }, + }, + { + depName: 'com.squareup.picasso:picasso', + groupName: 'com.squareup.picasso', + currentValue: '2.5.1', + managerData: { + fileReplacePosition: 243, + packageFile: 'gradle/libs.versions.toml', + }, + }, + { + depName: 'com.squareup.retrofit2:retrofit', + groupName: 'com.squareup.retrofit2', + currentValue: '2.8.2', + managerData: { + fileReplacePosition: 41, + packageFile: 'gradle/libs.versions.toml', + }, + }, + { + depName: 'org.jetbrains.kotlin.jvm', + depType: 'plugin', + currentValue: '1.5.21', + commitMessageTopic: 'plugin kotlinJvm', + lookupName: + 'org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin', + managerData: { + fileReplacePosition: 415, + packageFile: 'gradle/libs.versions.toml', + }, + registryUrls: [ + 'https://repo.maven.apache.org/maven2', + 'https://plugins.gradle.org/m2/', + ], + }, + { + depName: 'org.jetbrains.kotlin.plugin.serialization', + depType: 'plugin', + currentValue: '1.5.21', + commitMessageTopic: 'plugin kotlinSerialization', + lookupName: + 'org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin', + managerData: { + fileReplacePosition: 21, + packageFile: 'gradle/libs.versions.toml', + }, + registryUrls: [ + 'https://repo.maven.apache.org/maven2', + 'https://plugins.gradle.org/m2/', + ], + }, + ], + }, + ]); + }); + + it('ignores an empty TOML', async () => { + const tomlFile = ''; + const fsMock = { + 'gradle/libs.versions.toml': tomlFile, + }; + mockFs(fsMock); + const res = await extractAllPackageFiles({} as never, Object.keys(fsMock)); + expect(res).toBeNull(); + }); }); diff --git a/lib/manager/gradle/shallow/extract.ts b/lib/manager/gradle/shallow/extract.ts index 7dabe5e1ee59d1..cd9a3161f800a5 100644 --- a/lib/manager/gradle/shallow/extract.ts +++ b/lib/manager/gradle/shallow/extract.ts @@ -11,12 +11,14 @@ import type { PackageFile, } from '../../types'; import type { GradleManagerData } from '../types'; +import { parseCatalog } from './extract/catalog'; import { parseGradle, parseProps } from './parser'; import type { PackageVariables, VariableRegistry } from './types'; import { getVars, isGradleFile, isPropsFile, + isTOMLFile, reorderFiles, toAbsolutePath, } from './utils'; @@ -64,6 +66,13 @@ export async function extractAllPackageFiles( const { vars, deps } = parseProps(content, packageFile); updateVars(vars); extractedDeps.push(...deps); + } else if (isTOMLFile(packageFile)) { + try { + const updatesFromCatalog = parseCatalog(packageFile, content); + extractedDeps.push(...updatesFromCatalog); + } catch (error) { + logger.warn({ error }, 'TOML parsing error'); + } } else if (isGradleFile(packageFile)) { const vars = getVars(registry, dir); const { diff --git a/lib/manager/gradle/shallow/extract/catalog.ts b/lib/manager/gradle/shallow/extract/catalog.ts new file mode 100644 index 00000000000000..0812932b95731c --- /dev/null +++ b/lib/manager/gradle/shallow/extract/catalog.ts @@ -0,0 +1,83 @@ +import { parse } from '@iarna/toml'; +import { PackageDependency } from '../../../types'; +import { GradleManagerData } from '../../types'; +import type { GradleCatalog, GradleCatalogPluginDescriptor } from '../types'; + +function findIndexAfter( + content: string, + sliceAfter: string, + find: string +): number { + const slicePoint = content.indexOf(sliceAfter) + sliceAfter.length; + return slicePoint + content.slice(slicePoint).indexOf(find); +} + +export function parseCatalog( + packageFile: string, + content: string +): PackageDependency[] { + const tomlContent = parse(content) as GradleCatalog; + const versions = tomlContent.versions || {}; + const libs = tomlContent.libraries || {}; + const libStartIndex = content.indexOf('libraries'); + const libSubContent = content.slice(libStartIndex); + const versionStartIndex = content.indexOf('versions'); + const versionSubContent = content.slice(versionStartIndex); + const extractedDeps: PackageDependency[] = []; + for (const libraryName of Object.keys(libs)) { + const libDescriptor = libs[libraryName]; + const group: string = + typeof libDescriptor === 'string' + ? libDescriptor.split(':')[0] + : libDescriptor.group || libDescriptor.module?.split(':')[0]; + const name: string = + typeof libDescriptor === 'string' + ? libDescriptor.split(':')[1] + : libDescriptor.name || libDescriptor.module?.split(':')[1]; + const version = libDescriptor.version || libDescriptor.split(':')[2]; + const currentVersion = + typeof version === 'string' ? version : versions[version.ref]; + const fileReplacePosition = + typeof version === 'string' + ? libStartIndex + + findIndexAfter(libSubContent, libraryName, currentVersion) + : versionStartIndex + + findIndexAfter(versionSubContent, version.ref, currentVersion); + const dependency = { + depName: `${group}:${name}`, + groupName: group, + currentValue: currentVersion, + managerData: { fileReplacePosition, packageFile }, + }; + extractedDeps.push(dependency); + } + const plugins = tomlContent.plugins || {}; + const pluginsStartIndex = content.indexOf('[plugins]'); + const pluginsSubContent = content.slice(pluginsStartIndex); + for (const pluginName of Object.keys(plugins)) { + const pluginDescriptor = plugins[ + pluginName + ] as GradleCatalogPluginDescriptor; + const pluginId = pluginDescriptor.id; + const version = pluginDescriptor.version; + const currentVersion: string = + typeof version === 'string' ? version : versions[version.ref]; + const fileReplacePosition = + typeof version === 'string' + ? pluginsStartIndex + + findIndexAfter(pluginsSubContent, pluginId, currentVersion) + : versionStartIndex + + findIndexAfter(versionSubContent, version.ref, currentVersion); + const dependency = { + depType: 'plugin', + depName: pluginId, + lookupName: `${pluginId}:${pluginId}.gradle.plugin`, + registryUrls: ['https://plugins.gradle.org/m2/'], + currentValue: currentVersion, + commitMessageTopic: `plugin ${pluginName}`, + managerData: { fileReplacePosition, packageFile }, + }; + extractedDeps.push(dependency); + } + return extractedDeps; +} diff --git a/lib/manager/gradle/shallow/types.ts b/lib/manager/gradle/shallow/types.ts index 4d71036dbbba37..a1867f968ceaf0 100644 --- a/lib/manager/gradle/shallow/types.ts +++ b/lib/manager/gradle/shallow/types.ts @@ -61,3 +61,32 @@ export interface ParseGradleResult { urls: string[]; vars: PackageVariables; } + +export interface GradleCatalog { + versions?: Map; + libraries?: Map< + string, + GradleCatalogModuleDescriptor | GradleCatalogArtifactDescriptor | string + >; + plugins?: Map; +} + +export interface GradleCatalogModuleDescriptor { + module: string; + version: string | VersionPointer; +} + +export interface GradleCatalogArtifactDescriptor { + name: string; + group: string; + version: string | VersionPointer; +} + +export interface GradleCatalogPluginDescriptor { + id: string; + version: string | VersionPointer; +} + +export interface VersionPointer { + ref: string; +} diff --git a/lib/manager/gradle/shallow/utils.ts b/lib/manager/gradle/shallow/utils.ts index 2d8080ef1a4367..75bf22405d4c56 100644 --- a/lib/manager/gradle/shallow/utils.ts +++ b/lib/manager/gradle/shallow/utils.ts @@ -81,6 +81,11 @@ export function isPropsFile(path: string): boolean { return filename === 'gradle.properties'; } +export function isTOMLFile(path: string): boolean { + const filename = upath.basename(path).toLowerCase(); + return filename.endsWith('.toml'); +} + export function toAbsolutePath(packageFile: string): string { return upath.join(packageFile.replace(/^[/\\]*/, '/')); } From 8fb9197d0cbb35aece07597f694d3bf851261fe0 Mon Sep 17 00:00:00 2001 From: David Straub Date: Thu, 2 Sep 2021 13:03:51 -0400 Subject: [PATCH 10/30] fix(host-rules): support matchHost with a dot prefix (#11523) Co-authored-by: Rhys Arkins --- docs/usage/configuration-options.md | 2 ++ lib/util/host-rules.spec.ts | 9 +++++++++ lib/util/host-rules.ts | 5 ++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index 9b8baa781c11c4..dd672c19b93316 100644 --- a/docs/usage/configuration-options.md +++ b/docs/usage/configuration-options.md @@ -1024,6 +1024,8 @@ Example: This can be a base URL (e.g. `https://api.github.com`) or a hostname like `github.com` or `api.github.com`. If the value starts with `http(s)` then it will only match against URLs which start with the full base URL. Otherwise, it will be matched by checking if the URL's hostname matches the `matchHost` directly or ends with it. +When checking the end of the hostname, a single dot is prefixed to the value of `matchHost`, if one is not +already present, to ensure it can only match against whole domain segments. ### timeout diff --git a/lib/util/host-rules.spec.ts b/lib/util/host-rules.spec.ts index 1e01f83c89c948..7bc63e902dde7d 100644 --- a/lib/util/host-rules.spec.ts +++ b/lib/util/host-rules.spec.ts @@ -208,6 +208,15 @@ describe('util/host-rules', () => { expect(find({ url: 'https://domain.com' }).token).toEqual('def'); expect(find({ url: 'httpsdomain.com' }).token).toBeUndefined(); }); + it('matches on matchHost with dot prefix', () => { + add({ + matchHost: '.domain.com', + token: 'def', + }); + expect(find({ url: 'https://api.domain.com' }).token).toEqual('def'); + expect(find({ url: 'https://domain.com' }).token).toBeUndefined(); + expect(find({ url: 'httpsdomain.com' }).token).toBeUndefined(); + }); it('matches on hostType and endpoint', () => { add({ hostType: datasourceNuget.id, diff --git a/lib/util/host-rules.ts b/lib/util/host-rules.ts index d9c18f536b3855..c6887c5a0ea62b 100644 --- a/lib/util/host-rules.ts +++ b/lib/util/host-rules.ts @@ -85,7 +85,10 @@ function matchesHost(rule: HostRule, search: HostRuleSearch): boolean { return false; } const { hostname } = parsedUrl; - return hostname === rule.matchHost || hostname.endsWith(`.${rule.matchHost}`); + const dotPrefixedMatchHost = rule.matchHost.startsWith('.') + ? rule.matchHost + : `.${rule.matchHost}`; + return hostname === rule.matchHost || hostname.endsWith(dotPrefixedMatchHost); } export function find(search: HostRuleSearch): HostRule { From 44b471fe18c4da38220c6f7e94cf87c1d54c7172 Mon Sep 17 00:00:00 2001 From: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com> Date: Thu, 2 Sep 2021 21:15:13 +0200 Subject: [PATCH 11/30] docs: one sentence per line (#11550) --- docs/usage/configuration-options.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index dd672c19b93316..41ad1ce9994144 100644 --- a/docs/usage/configuration-options.md +++ b/docs/usage/configuration-options.md @@ -1024,8 +1024,7 @@ Example: This can be a base URL (e.g. `https://api.github.com`) or a hostname like `github.com` or `api.github.com`. If the value starts with `http(s)` then it will only match against URLs which start with the full base URL. Otherwise, it will be matched by checking if the URL's hostname matches the `matchHost` directly or ends with it. -When checking the end of the hostname, a single dot is prefixed to the value of `matchHost`, if one is not -already present, to ensure it can only match against whole domain segments. +When checking the end of the hostname, a single dot is prefixed to the value of `matchHost`, if one is not already present, to ensure it can only match against whole domain segments. ### timeout From ec3b5a192cd157eceb1e4866f2a5ed8695e558d9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Sep 2021 20:53:19 +0000 Subject: [PATCH 12/30] build(deps): update dependency cacache to v15.3.0 (#11549) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 25 +------------------------ 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 69b72d45d15e1d..4d177911f974cd 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "@yarnpkg/parsers": "2.4.0", "azure-devops-node-api": "11.0.1", "bunyan": "1.8.15", - "cacache": "15.2.0", + "cacache": "15.3.0", "chalk": "4.1.2", "changelog-filename-regex": "2.0.1", "clean-git-ref": "2.0.1", diff --git a/yarn.lock b/yarn.lock index 0f9b53e8db43cc..7a45a6cd66de4d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2849,7 +2849,7 @@ bunyan@1.8.15: mv "~2" safe-json-stringify "~1" -cacache@*, cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0: +cacache@*, cacache@15.3.0, cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== @@ -2873,29 +2873,6 @@ cacache@*, cacache@^15.0.3, cacache@^15.0.5, cacache@^15.2.0: tar "^6.0.2" unique-filename "^1.1.1" -cacache@15.2.0: - version "15.2.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.2.0.tgz#73af75f77c58e72d8c630a7a2858cb18ef523389" - integrity sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw== - dependencies: - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.0.2" - unique-filename "^1.1.1" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" From 31e1e4d89e3f6d88b4a912fe0584cbef603f87e1 Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Fri, 3 Sep 2021 05:58:44 +0200 Subject: [PATCH 13/30] fix(git): set gitAuthor before onboarding --- lib/workers/repository/onboarding/branch/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/workers/repository/onboarding/branch/index.ts b/lib/workers/repository/onboarding/branch/index.ts index 5af0f6f74b7504..370e668069f38e 100644 --- a/lib/workers/repository/onboarding/branch/index.ts +++ b/lib/workers/repository/onboarding/branch/index.ts @@ -7,7 +7,7 @@ import { } from '../../../../constants/error-messages'; import { logger } from '../../../../logger'; import { platform } from '../../../../platform'; -import { checkoutBranch } from '../../../../util/git'; +import { checkoutBranch, setGitAuthor } from '../../../../util/git'; import { extractAllDependencies } from '../../extract'; import { mergeRenovateConfig } from '../../init/merge'; import { isOnboarded, onboardingPrExists } from './check'; @@ -30,6 +30,8 @@ export async function checkOnboardingBranch( throw new Error(REPOSITORY_FORKED); } logger.debug('Repo is not onboarded'); + // global gitAuthor will need to be used + setGitAuthor(config.gitAuthor); if (await onboardingPrExists(config)) { logger.debug('Onboarding PR already exists'); const commit = await rebaseOnboardingBranch(config); From 9cd9246808dd4bce9c85c38e47d429de2ee43455 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Sep 2021 06:15:53 +0200 Subject: [PATCH 14/30] build(deps): update dependency commander to v8 (#11542) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4d177911f974cd..727963c8b729c8 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "chalk": "4.1.2", "changelog-filename-regex": "2.0.1", "clean-git-ref": "2.0.1", - "commander": "7.2.0", + "commander": "8.1.0", "conventional-commits-detector": "1.0.3", "crypto-random-string": "3.3.1", "deepmerge": "4.2.2", diff --git a/yarn.lock b/yarn.lock index 7a45a6cd66de4d..915cf1a7379600 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3193,10 +3193,10 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.1.0.tgz#db36e3e66edf24ff591d639862c6ab2c52664362" + integrity sha512-mf45ldcuHSYShkplHHGKWb4TrmwQadxOn7v4WuhDJy0ZVoY5JFajaRDKD0PNe5qXzBX0rhovjTnP6Kz9LETcuA== common-ancestor-path@^1.0.1: version "1.0.1" From 6606e4117b79e9d062221ec3a27599945ccaf8c7 Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Fri, 3 Sep 2021 09:23:00 +0200 Subject: [PATCH 15/30] refactor(git): log deleted files (#11561) --- lib/util/git/index.ts | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index 87443a761f2a66..707e15b3fd5d66 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -740,11 +740,20 @@ export async function commitFiles({ await git.raw(['clean', '-fd']); await git.checkout(['-B', branchName, 'origin/' + config.currentBranch]); const fileNames: string[] = []; - const deleted: string[] = []; + const deletedFiles: string[] = []; + const ignoredFiles: string[] = []; for (const file of files) { // istanbul ignore if if (file.name === '|delete|') { - deleted.push(file.contents as string); + const fileName = file.contents as string; + try { + await git.rm([fileName]); + deletedFiles.push(fileName); + } catch (err) /* istanbul ignore next */ { + checkForPlatformFailure(err); + logger.warn({ err, fileName }, 'Cannot delete file'); + ignoredFiles.push(fileName); + } } else if (await isDirectory(join(localDir, file.name))) { fileNames.push(file.name); await gitAdd(file.name); @@ -767,16 +776,6 @@ export async function commitFiles({ if (fileNames.length) { await gitAdd(fileNames); } - if (deleted.length) { - for (const f of deleted) { - try { - await git.rm([f]); - } catch (err) /* istanbul ignore next */ { - checkForPlatformFailure(err); - logger.debug({ err }, 'Cannot delete ' + f); - } - } - } const commitOptions: Options = {}; if (getNoVerify().includes(GitNoVerifyOption.Commit)) { @@ -793,7 +792,10 @@ export async function commitFiles({ logger.warn({ commitRes }, 'Detected empty commit - aborting git push'); return null; } - logger.debug({ result: commitRes }, `git commit`); + logger.debug( + { deletedFiles, ignoredFiles, result: commitRes }, + `git commit` + ); const commit = commitRes?.commit || 'unknown'; if (!force && !(await hasDiff(`origin/${branchName}`))) { logger.debug( From 81191668663fc381731b9cf7f4cb423dfde0e2fb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Sep 2021 11:42:04 +0200 Subject: [PATCH 16/30] chore(deps): update dependency @types/luxon to v2.0.1 (#11551) Co-authored-by: Renovate Bot Co-authored-by: Michael Kriese --- lib/workers/pr/changelog/release-notes.spec.ts | 4 ++-- package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/workers/pr/changelog/release-notes.spec.ts b/lib/workers/pr/changelog/release-notes.spec.ts index 3a86c3db889fb9..622b0d618b3e37 100644 --- a/lib/workers/pr/changelog/release-notes.spec.ts +++ b/lib/workers/pr/changelog/release-notes.spec.ts @@ -68,8 +68,8 @@ describe('workers/pr/changelog/release-notes', () => { const now = DateTime.local(); it.each([ [now, 55], - [now.minus({ week: 2 }), 1435], - [now.minus({ year: 1 }), 14495], + [now.minus({ weeks: 2 }), 1435], + [now.minus({ years: 1 }), 14495], ])('works with string date (%s, %i)', (date, minutes) => { expect(releaseNotesCacheMinutes(date?.toISO())).toEqual(minutes); }); diff --git a/package.json b/package.json index 727963c8b729c8..6505290141a2d0 100644 --- a/package.json +++ b/package.json @@ -219,7 +219,7 @@ "@types/js-yaml": "4.0.3", "@types/json-dup-key-validator": "1.0.0", "@types/linkify-markdown": "1.0.1", - "@types/luxon": "2.0.0", + "@types/luxon": "2.0.1", "@types/markdown-it": "12.2.0", "@types/markdown-table": "2.0.0", "@types/moo": "0.5.5", diff --git a/yarn.lock b/yarn.lock index 915cf1a7379600..8884f44f24248b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1895,10 +1895,10 @@ resolved "https://registry.yarnpkg.com/@types/linkify-markdown/-/linkify-markdown-1.0.1.tgz#0b750a592107dd46ecf2b5be0eeb7656b1fc814d" integrity sha512-RYDOtCol7/sHGhSJvWVnl0AmOdQQWgUYys6cwn5Lt3RiYhyhTLMLv7B9wdixMgCfnNt0MQj/YSGi3qN0IQqLeQ== -"@types/luxon@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-2.0.0.tgz#3dd1d8c51b49e34585c5158ba3393e95c51fee89" - integrity sha512-L7iL3FitRSeuz8fbeLtql7qU6inHVtwEDWI1+vBXgyp0J2tmxOD7TgMBiEQjII/Y/TPcwrKasXb1BPuiCXRgxg== +"@types/luxon@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-2.0.1.tgz#4be7e91283de747ca061a071ef0c3747a710bda1" + integrity sha512-EqwKd+cuzQ6Jz/zsFYOofHzSfZSh1x3eBBj9+2IYk5vF3I1JnysPFK/I0YnkJ0artgvVY3jJYf2fGdIzoK0UIA== "@types/markdown-it@12.2.0": version "12.2.0" From cd4e27e7616db8714cc9298692cf2ab8c96056b1 Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Fri, 3 Sep 2021 11:53:57 +0200 Subject: [PATCH 17/30] fix(git): drop force push onboarding (#11562) --- lib/util/git/index.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index 707e15b3fd5d66..70459d0db36dbb 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -9,7 +9,6 @@ import Git, { TaskOptions, } from 'simple-git'; import { join } from 'upath'; -import { configFileNames } from '../../config/app-strings'; import { getGlobalConfig } from '../../config/global'; import type { RenovateConfig } from '../../config/types'; import { @@ -769,10 +768,6 @@ export async function commitFiles({ await fs.outputFile(join(localDir, file.name), contents); } } - // istanbul ignore if - if (fileNames.length === 1 && configFileNames.includes(fileNames[0])) { - fileNames.unshift('-f'); - } if (fileNames.length) { await gitAdd(fileNames); } From f1c9490722f667493cd8c9d5cf1d6c930d914aed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Sep 2021 10:19:46 +0000 Subject: [PATCH 18/30] chore(deps): update dependency typescript to v4.4.2 (#11555) Co-authored-by: Renovate Bot Co-authored-by: Michael Kriese --- package.json | 2 +- tsconfig.json | 1 + yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6505290141a2d0..0186f5415f9338 100644 --- a/package.json +++ b/package.json @@ -270,7 +270,7 @@ "ts-jest": "27.0.5", "ts-node": "10.2.1", "type-fest": "2.1.0", - "typescript": "4.3.5", + "typescript": "4.4.2", "unified": "9.2.2" }, "resolutions": { diff --git a/tsconfig.json b/tsconfig.json index 920493bcb7b5e5..409aaf9567f698 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,6 +13,7 @@ "noUnusedLocals": true, "noImplicitOverride": true, "experimentalDecorators": true, + "useUnknownInCatchVariables": false /* we aren't prepared for enabling this by default since ts 4.4*/, "lib": ["es2018"], "types": ["node", "jest", "jest-extended"], "allowJs": true, diff --git a/yarn.lock b/yarn.lock index 8884f44f24248b..02a9080af6988d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9463,10 +9463,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" - integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== +typescript@4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.2.tgz#6d618640d430e3569a1dfb44f7d7e600ced3ee86" + integrity sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" From 3d56684aa727e315e3d7e967a75594c2e217543d Mon Sep 17 00:00:00 2001 From: Gaston Festari Date: Fri, 3 Sep 2021 08:40:25 -0300 Subject: [PATCH 19/30] feat(kustomize): add components support (#11553) Co-authored-by: Michael Kriese --- lib/manager/kustomize/__fixtures__/depsInResources.yaml | 3 +++ lib/manager/kustomize/__snapshots__/extract.spec.ts.snap | 7 ++++++- lib/manager/kustomize/extract.spec.ts | 6 ++++-- lib/manager/kustomize/extract.ts | 5 ++++- lib/manager/kustomize/readme.md | 1 + 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/manager/kustomize/__fixtures__/depsInResources.yaml b/lib/manager/kustomize/__fixtures__/depsInResources.yaml index acdcb457a67de3..d8c210bd9fb523 100644 --- a/lib/manager/kustomize/__fixtures__/depsInResources.yaml +++ b/lib/manager/kustomize/__fixtures__/depsInResources.yaml @@ -10,5 +10,8 @@ resources: - deployment.yaml - github.com/fluxcd/flux/deploy?ref=1.19.0 +components: +- github.com/fluxcd/flux/memcache-dep?ref=1.18.0 + images: - name: nginx diff --git a/lib/manager/kustomize/__snapshots__/extract.spec.ts.snap b/lib/manager/kustomize/__snapshots__/extract.spec.ts.snap index ec2fc9f8161ef3..55eaee54613589 100644 --- a/lib/manager/kustomize/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/kustomize/__snapshots__/extract.spec.ts.snap @@ -67,7 +67,7 @@ Array [ ] `; -exports[`manager/kustomize/extract extractPackageFile() should extract bases from bases block and the resources block 1`] = ` +exports[`manager/kustomize/extract extractPackageFile() should extract bases resources and components from their respective blocks 1`] = ` Array [ Object { "currentValue": "v0.0.1", @@ -79,6 +79,11 @@ Array [ "datasource": "github-tags", "depName": "fluxcd/flux", }, + Object { + "currentValue": "1.18.0", + "datasource": "github-tags", + "depName": "fluxcd/flux", + }, ] `; diff --git a/lib/manager/kustomize/extract.spec.ts b/lib/manager/kustomize/extract.spec.ts index 7fe27a25229599..44c2b71ca9c099 100644 --- a/lib/manager/kustomize/extract.spec.ts +++ b/lib/manager/kustomize/extract.spec.ts @@ -242,14 +242,16 @@ describe('manager/kustomize/extract', () => { it('does nothing with kustomize empty kustomize files', () => { expect(extractPackageFile(kustomizeEmpty)).toBeNull(); }); - it('should extract bases from bases block and the resources block', () => { + it('should extract bases resources and components from their respective blocks', () => { const res = extractPackageFile(kustomizeDepsInResources); expect(res).not.toBeNull(); expect(res.deps).toMatchSnapshot(); - expect(res.deps).toHaveLength(2); + expect(res.deps).toHaveLength(3); expect(res.deps[0].currentValue).toEqual('v0.0.1'); expect(res.deps[1].currentValue).toEqual('1.19.0'); + expect(res.deps[2].currentValue).toEqual('1.18.0'); expect(res.deps[1].depName).toEqual('fluxcd/flux'); + expect(res.deps[2].depName).toEqual('fluxcd/flux'); }); it('extracts sha256 instead of tag', () => { expect(extractPackageFile(sha)).toMatchSnapshot({ diff --git a/lib/manager/kustomize/extract.ts b/lib/manager/kustomize/extract.ts index 12bfb8280c0d8e..8a06c3da71caf7 100644 --- a/lib/manager/kustomize/extract.ts +++ b/lib/manager/kustomize/extract.ts @@ -84,7 +84,10 @@ export function parseKustomize(content: string): Kustomize | null { return null; } - pkg.bases = (pkg.bases || []).concat(pkg.resources || []); + pkg.bases = (pkg.bases || []).concat( + pkg.resources || [], + pkg.components || [] + ); pkg.images = pkg.images || []; return pkg; diff --git a/lib/manager/kustomize/readme.md b/lib/manager/kustomize/readme.md index b38948bb55f8db..1a63c7718cebf2 100644 --- a/lib/manager/kustomize/readme.md +++ b/lib/manager/kustomize/readme.md @@ -2,6 +2,7 @@ This package will manage two parts of the `kustomization.yaml` file: 1. [remote bases](https://github.com/kubernetes-sigs/kustomize/blob/master/examples/remoteBuild.md) 2. [image tags](https://github.com/kubernetes-sigs/kustomize/blob/master/examples/image.md) +3. [components](https://github.com/kubernetes-sigs/kustomize/blob/master/examples/components.md) **How It Works** From 1fda19c51240004fedc75b29d4b7977e59529e49 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Sep 2021 13:27:45 +0000 Subject: [PATCH 20/30] chore(deps): update dependency @types/markdown-it to v12.2.1 (#11564) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0186f5415f9338..c5c1d7520d9c33 100644 --- a/package.json +++ b/package.json @@ -220,7 +220,7 @@ "@types/json-dup-key-validator": "1.0.0", "@types/linkify-markdown": "1.0.1", "@types/luxon": "2.0.1", - "@types/markdown-it": "12.2.0", + "@types/markdown-it": "12.2.1", "@types/markdown-table": "2.0.0", "@types/moo": "0.5.5", "@types/nock": "10.0.3", diff --git a/yarn.lock b/yarn.lock index 02a9080af6988d..082e3c55cdc4a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1900,10 +1900,10 @@ resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-2.0.1.tgz#4be7e91283de747ca061a071ef0c3747a710bda1" integrity sha512-EqwKd+cuzQ6Jz/zsFYOofHzSfZSh1x3eBBj9+2IYk5vF3I1JnysPFK/I0YnkJ0artgvVY3jJYf2fGdIzoK0UIA== -"@types/markdown-it@12.2.0": - version "12.2.0" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.0.tgz#f609929ac1e50cf0d039473fb331ebc62e313b34" - integrity sha512-YEpywby5S2wt64C2E3bcpLvtIV8BuCj+4AGtL7tU51V8Vr1qwm+cX9gFfWRyclgLC0UK/7w2heYmhymDi+snzw== +"@types/markdown-it@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.1.tgz#ca36e1edce6f15a770f3e99e68622d1d2e2f0c65" + integrity sha512-iij+ilRX/vxtUPCREjn74xzHo/RorHJDwOsJ6X+TgKw7zSvazhVXnDfwlTnyLOMdiVUjtRYU4CrcUZ7Aci4PmQ== dependencies: "@types/linkify-it" "*" "@types/mdurl" "*" From 615dd9023e3d1e4ccf7eebb3e4c635a60af4b75b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Sep 2021 14:53:04 +0000 Subject: [PATCH 21/30] chore(deps): update jest monorepo to v27.1.0 (#11569) Co-authored-by: Renovate Bot --- package.json | 8 ++--- yarn.lock | 99 +++++++++++++--------------------------------------- 2 files changed, 29 insertions(+), 78 deletions(-) diff --git a/package.json b/package.json index c5c1d7520d9c33..a899d0a30053c5 100644 --- a/package.json +++ b/package.json @@ -198,9 +198,9 @@ }, "devDependencies": { "@actions/core": "1.5.0", - "@jest/globals": "27.0.6", - "@jest/reporters": "27.0.6", - "@jest/test-result": "27.0.6", + "@jest/globals": "27.1.0", + "@jest/reporters": "27.1.0", + "@jest/test-result": "27.1.0", "@ls-lint/ls-lint": "1.10.0", "@renovate/eslint-plugin": "https://github.com/renovatebot/eslint-plugin#v0.0.3", "@semantic-release/exec": "5.0.0", @@ -250,7 +250,7 @@ "glob": "7.1.7", "graphql": "15.5.1", "husky": "7.0.2", - "jest": "27.0.6", + "jest": "27.1.0", "jest-extended": "0.11.5", "jest-github-actions-reporter": "1.0.3", "jest-junit": "12.2.0", diff --git a/yarn.lock b/yarn.lock index 082e3c55cdc4a6..7b99b0a1d87b84 100644 --- a/yarn.lock +++ b/yarn.lock @@ -983,7 +983,7 @@ chalk "^2.0.1" slash "^2.0.0" -"@jest/console@^27.0.6", "@jest/console@^27.1.0": +"@jest/console@^27.1.0": version "27.1.0" resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.1.0.tgz#de13b603cb1d389b50c0dc6296e86e112381e43c" integrity sha512-+Vl+xmLwAXLNlqT61gmHEixeRbS4L8MUzAjtpBCOPWH+izNI/dR16IeXjkXJdRtIVWVSf9DO1gdp67B1XorZhQ== @@ -995,7 +995,7 @@ jest-util "^27.1.0" slash "^3.0.0" -"@jest/core@^27.0.6", "@jest/core@^27.1.0": +"@jest/core@^27.1.0": version "27.1.0" resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.1.0.tgz#622220f18032f5869e579cecbe744527238648bf" integrity sha512-3l9qmoknrlCFKfGdrmiQiPne+pUR4ALhKwFTYyOeKw6egfDwJkO21RJ1xf41rN8ZNFLg5W+w6+P4fUqq4EMRWA== @@ -1030,7 +1030,7 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.0.6", "@jest/environment@^27.1.0": +"@jest/environment@^27.1.0": version "27.1.0" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.1.0.tgz#c7224a67004759ec203d8fa44e8bc0db93f66c44" integrity sha512-wRp50aAMY2w1U2jP1G32d6FUVBNYqmk8WaGkiIEisU48qyDV0WPtw3IBLnl7orBeggveommAkuijY+RzVnNDOQ== @@ -1052,16 +1052,7 @@ jest-mock "^27.1.0" jest-util "^27.1.0" -"@jest/globals@27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.0.6.tgz#48e3903f99a4650673d8657334d13c9caf0e8f82" - integrity sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw== - dependencies: - "@jest/environment" "^27.0.6" - "@jest/types" "^27.0.6" - expect "^27.0.6" - -"@jest/globals@^27.1.0": +"@jest/globals@27.1.0", "@jest/globals@^27.1.0": version "27.1.0" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.1.0.tgz#e093a49c718dd678a782c197757775534c88d3f2" integrity sha512-73vLV4aNHAlAgjk0/QcSIzzCZSqVIPbmFROJJv9D3QUR7BI4f517gVdJpSrCHxuRH3VZFhe0yGG/tmttlMll9g== @@ -1070,37 +1061,7 @@ "@jest/types" "^27.1.0" expect "^27.1.0" -"@jest/reporters@27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.0.6.tgz#91e7f2d98c002ad5df94d5b5167c1eb0b9fd5b00" - integrity sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^27.0.6" - jest-resolve "^27.0.6" - jest-util "^27.0.6" - jest-worker "^27.0.6" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.0.0" - -"@jest/reporters@^27.1.0": +"@jest/reporters@27.1.0", "@jest/reporters@^27.1.0": version "27.1.0" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.1.0.tgz#02ed1e6601552c2f6447378533f77aad002781d4" integrity sha512-5T/zlPkN2HnK3Sboeg64L5eC8iiaZueLpttdktWTJsvALEtP2YMkC5BQxwjRWQACG9SwDmz+XjjkoxXUDMDgdw== @@ -1148,13 +1109,13 @@ graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.0.6.tgz#3fa42015a14e4fdede6acd042ce98c7f36627051" - integrity sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w== +"@jest/test-result@27.1.0", "@jest/test-result@^27.1.0": + version "27.1.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.1.0.tgz#9345ae5f97f6a5287af9ebd54716cd84331d42e8" + integrity sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A== dependencies: - "@jest/console" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/console" "^27.1.0" + "@jest/types" "^27.1.0" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" @@ -1167,16 +1128,6 @@ "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/test-result@^27.0.6", "@jest/test-result@^27.1.0": - version "27.1.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.1.0.tgz#9345ae5f97f6a5287af9ebd54716cd84331d42e8" - integrity sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A== - dependencies: - "@jest/console" "^27.1.0" - "@jest/types" "^27.1.0" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - "@jest/test-sequencer@^27.1.0": version "27.1.0" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.1.0.tgz#04e8b3bd735570d3d48865e74977a14dc99bff2d" @@ -1187,7 +1138,7 @@ jest-haste-map "^27.1.0" jest-runtime "^27.1.0" -"@jest/transform@^27.0.6", "@jest/transform@^27.1.0": +"@jest/transform@^27.1.0": version "27.1.0" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.1.0.tgz#962e385517e3d1f62827fa39c305edcc3ca8544b" integrity sha512-ZRGCA2ZEVJ00ubrhkTG87kyLbN6n55g1Ilq0X9nJb5bX3MhMp3O6M7KG+LvYu+nZRqG5cXsQnJEdZbdpTAV8pQ== @@ -1228,7 +1179,7 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@jest/types@^27.0.6", "@jest/types@^27.1.0": +"@jest/types@^27.1.0": version "27.1.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.1.0.tgz#674a40325eab23c857ebc0689e7e191a3c5b10cc" integrity sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g== @@ -4185,7 +4136,7 @@ expect@^24.1.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" -expect@^27.0.6, expect@^27.1.0: +expect@^27.1.0: version "27.1.0" resolved "https://registry.yarnpkg.com/expect/-/expect-27.1.0.tgz#380de0abb3a8f2299c4c6c66bbe930483b5dba9b" integrity sha512-9kJngV5hOJgkFil4F/uXm3hVBubUK2nERVfvqNNwxxuW8ZOUwSTTSysgfzckYtv/LBzj/LJXbiAF7okHCXgdug== @@ -5498,7 +5449,7 @@ jest-circus@^27.1.0: stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^27.0.6: +jest-cli@^27.1.0: version "27.1.0" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.1.0.tgz#118438e4d11cf6fb66cb2b2eb5778817eab3daeb" integrity sha512-h6zPUOUu+6oLDrXz0yOWY2YXvBLk8gQinx4HbZ7SF4V3HzasQf+ncoIbKENUMwXyf54/6dBkYXvXJos+gOHYZw== @@ -5637,7 +5588,7 @@ jest-github-actions-reporter@1.0.3: dependencies: "@actions/core" "^1.2.0" -jest-haste-map@^27.0.6, jest-haste-map@^27.1.0: +jest-haste-map@^27.1.0: version "27.1.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.1.0.tgz#a39f456823bd6a74e3c86ad25f6fa870428326bf" integrity sha512-7mz6LopSe+eA6cTFMf10OfLLqRoIPvmMyz5/OnSXnHO7hB0aDP1iIeLWCXzAcYU5eIJVpHr12Bk9yyq2fTW9vg== @@ -5796,7 +5747,7 @@ jest-resolve-dependencies@^27.1.0: jest-regex-util "^27.0.6" jest-snapshot "^27.1.0" -jest-resolve@^27.0.6, jest-resolve@^27.1.0: +jest-resolve@^27.1.0: version "27.1.0" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.1.0.tgz#bb22303c9e240cccdda28562e3c6fbcc6a23ac86" integrity sha512-TXvzrLyPg0vLOwcWX38ZGYeEztSEmW+cQQKqc4HKDUwun31wsBXwotRlUz4/AYU/Fq4GhbMd/ileIWZEtcdmIA== @@ -5931,7 +5882,7 @@ jest-util@^26.0.0: is-ci "^2.0.0" micromatch "^4.0.2" -jest-util@^27.0.0, jest-util@^27.0.6, jest-util@^27.1.0: +jest-util@^27.0.0, jest-util@^27.1.0: version "27.1.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.1.0.tgz#06a53777a8cb7e4940ca8e20bf9c67dd65d9bd68" integrity sha512-edSLD2OneYDKC6gZM1yc+wY/877s/fuJNoM1k3sOEpzFyeptSmke3SLnk1dDHk9CgTA+58mnfx3ew3J11Kes/w== @@ -5968,7 +5919,7 @@ jest-watcher@^27.1.0: jest-util "^27.1.0" string-length "^4.0.1" -jest-worker@^27.0.6, jest-worker@^27.1.0: +jest-worker@^27.1.0: version "27.1.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.1.0.tgz#65f4a88e37148ed984ba8ca8492d6b376938c0aa" integrity sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg== @@ -5977,14 +5928,14 @@ jest-worker@^27.0.6, jest-worker@^27.1.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.0.6.tgz#10517b2a628f0409087fbf473db44777d7a04505" - integrity sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA== +jest@27.1.0: + version "27.1.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.1.0.tgz#eaab62dfdc02d8b7c814cd27b8d2d92bc46d3d69" + integrity sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg== dependencies: - "@jest/core" "^27.0.6" + "@jest/core" "^27.1.0" import-local "^3.0.2" - jest-cli "^27.0.6" + jest-cli "^27.1.0" js-tokens@^4.0.0: version "4.0.0" From 0dd3f60ab8d836125a807caa1a4f2cc682ce6bc0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Sep 2021 18:48:14 +0000 Subject: [PATCH 22/30] chore(deps): update node.js to 449af72 (#11579) Co-authored-by: Renovate Bot --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index e36de07977df81..82f0447930bf9f 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ -FROM containerbase/node:14.17.6@sha256:ebe928dcb70c9ec5ad36adc576218d81a3f2a598f0b8cfa14c23467957596389 +FROM containerbase/node:14.17.6@sha256:449af722795fbfec2c8ee00724fea3b1b5a4bbd7bdfecfaf783fa746be48ba19 # renovate: datasource=npm From f245820ba4666c1808fa0bcd77c807092328b8fb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 4 Sep 2021 22:18:02 +0000 Subject: [PATCH 23/30] chore(deps): update dependency markdownlint-cli2 to v0.3.0 (#11583) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 41 +++++++++++++++-------------------------- 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index a899d0a30053c5..2fc558b39db0e2 100644 --- a/package.json +++ b/package.json @@ -256,7 +256,7 @@ "jest-junit": "12.2.0", "jest-mock-extended": "1.0.18", "jest-silent-reporter": "0.5.0", - "markdownlint-cli2": "0.2.0", + "markdownlint-cli2": "0.3.0", "mockdate": "3.0.5", "nock": "13.1.3", "npm-run-all": "4.1.5", diff --git a/yarn.lock b/yarn.lock index 7b99b0a1d87b84..2b000c7a78c08f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6469,17 +6469,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -markdown-it@12.0.4: - version "12.0.4" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.0.4.tgz#eec8247d296327eac3ba9746bdeec9cfcc751e33" - integrity sha512-34RwOXZT8kyuOJy25oJNJoulO8L0bTHYWXcdZBYZqFnjIy3NgjeoM3FmPXIOFQ26/lSHYMr8oc62B6adxXcb3Q== - dependencies: - argparse "^2.0.1" - entities "~2.1.0" - linkify-it "^3.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" - markdown-it@12.2.0: version "12.2.0" resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.2.0.tgz#091f720fd5db206f80de7a8d1f1a7035fd0d38db" @@ -6503,30 +6492,30 @@ markdownlint-cli2-formatter-default@^0.0.2: resolved "https://registry.yarnpkg.com/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.2.tgz#76f1a064d70966178dfe3bb489af9423d830ca79" integrity sha512-jIz1X3SIC8sX4NDFqQFUXL+JEtfnDoN4i+xocEu+etcxGX455pHb6sx86f/yVk4mKJ2o7aNe2ydSx9an22BfBg== -markdownlint-cli2@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/markdownlint-cli2/-/markdownlint-cli2-0.2.0.tgz#cecbd8a85ab21b070668e57c3aaa7f6f3056e2fc" - integrity sha512-/MIaG2MOlm39SBApQbeHK847/bgX6FfUPZMpCzA2UMYXR8NTwzTdjQAXjjLBK6+zG52GWKyhdmBKobkhLnq8wQ== +markdownlint-cli2@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/markdownlint-cli2/-/markdownlint-cli2-0.3.0.tgz#415407003021b48343a63bd177ed76f4aedc064b" + integrity sha512-0nmB8MMqxwTolfkOaGW9RLqkBVG6DW6oBTyDKd3SP+7e8FPhihg6KBqpz1puj37C2Wd3POS98xiE1GljEVNyHw== dependencies: globby "~11.0.4" - markdownlint "~0.23.1" + markdownlint "~0.24.0" markdownlint-cli2-formatter-default "^0.0.2" - markdownlint-rule-helpers "~0.14.0" + markdownlint-rule-helpers "~0.15.0" micromatch "~4.0.4" strip-json-comments "~3.1.1" yaml "~1.10.2" -markdownlint-rule-helpers@~0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.14.0.tgz#4d0e1ae320e85559d8cbed1490934855791627bb" - integrity sha512-vRTPqSU4JK8vVXmjICHSBhwXUvbfh/VJo+j7hvxqe15tLJyomv3FLgFdFgb8kpj0Fe8SsJa/TZUAXv7/sN+N7A== +markdownlint-rule-helpers@~0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.15.0.tgz#11434c573649b9235ae70b967314f5711f7d8fa8" + integrity sha512-A+9mswc3m/kkqpJCqntmte/1VKhDJ+tjZsERLz5L4h/Qr7ht2/BkGkgY5E7/wsxIhcpl+ctIfz+oS3PQrMOB2w== -markdownlint@~0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.23.1.tgz#98292b5d340d01e9c113f3d7fb3b2ccf89628dc2" - integrity sha512-iOEwhDfNmq2IJlaA8mzEkHYUi/Hwoa6Ss+HO5jkwUR6wQ4quFr0WzSx+Z9rsWZKUaPbyirIdL1zGmJRkWawr4Q== +markdownlint@~0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.24.0.tgz#224b53f671367a237d40c8be1745c7be9a322671" + integrity sha512-OJIGsGFV/rC9irI5E1FMy6v9hdACSwaa+EN3224Y5KG8zj2EYzdHOw0pOJovIYmjNfEZ9BtxUY4P7uYHTSNnbQ== dependencies: - markdown-it "12.0.4" + markdown-it "12.2.0" marked-terminal@^4.1.1: version "4.1.1" From 97a0a32978f47f85e02d3d41e79953ebc49db427 Mon Sep 17 00:00:00 2001 From: ylemkimon Date: Sun, 5 Sep 2021 15:07:00 +0900 Subject: [PATCH 24/30] fix(npm): inherit `yarnZeroInstall` and `skipInstalls` (#11582) Co-authored-by: Michael Kriese --- .../__snapshots__/monorepo.spec.ts.snap | 58 +++++++++++++++++++ lib/manager/npm/extract/monorepo.spec.ts | 30 ++++++++++ lib/manager/npm/extract/monorepo.ts | 5 +- 3 files changed, 92 insertions(+), 1 deletion(-) diff --git a/lib/manager/npm/extract/__snapshots__/monorepo.spec.ts.snap b/lib/manager/npm/extract/__snapshots__/monorepo.spec.ts.snap index b9a7056544c978..0804bdebec848b 100644 --- a/lib/manager/npm/extract/__snapshots__/monorepo.spec.ts.snap +++ b/lib/manager/npm/extract/__snapshots__/monorepo.spec.ts.snap @@ -43,20 +43,24 @@ Array [ "lernaClient": undefined, "managerData": Object { "lernaJsonFile": "lerna.json", + "yarnZeroInstall": undefined, }, "npmLock": undefined, "packageFile": "packages/a/package.json", "packageJsonName": "@org/a", + "skipInstalls": undefined, "yarnLock": undefined, }, Object { "lernaClient": undefined, "managerData": Object { "lernaJsonFile": "lerna.json", + "yarnZeroInstall": undefined, }, "npmLock": undefined, "packageFile": "packages/b/package.json", "packageJsonName": "@org/b", + "skipInstalls": undefined, "yarnLock": undefined, }, ] @@ -108,20 +112,24 @@ Array [ "lernaClient": undefined, "managerData": Object { "lernaJsonFile": "lerna.json", + "yarnZeroInstall": undefined, }, "npmLock": undefined, "packageFile": "packages/a/package.json", "packageJsonName": "@org/a", + "skipInstalls": undefined, "yarnLock": undefined, }, Object { "lernaClient": undefined, "managerData": Object { "lernaJsonFile": "lerna.json", + "yarnZeroInstall": undefined, }, "npmLock": undefined, "packageFile": "packages/b/package.json", "packageJsonName": "@org/b", + "skipInstalls": undefined, "yarnLock": undefined, }, ] @@ -146,20 +154,24 @@ Array [ "lernaClient": "yarn", "managerData": Object { "lernaJsonFile": "lerna.json", + "yarnZeroInstall": undefined, }, "npmLock": undefined, "packageFile": "packages/a/package.json", "packageJsonName": "@org/a", + "skipInstalls": undefined, "yarnLock": undefined, }, Object { "lernaClient": "yarn", "managerData": Object { "lernaJsonFile": "lerna.json", + "yarnZeroInstall": undefined, }, "npmLock": undefined, "packageFile": "packages/b/package.json", "packageJsonName": "@org/b", + "skipInstalls": undefined, "yarnLock": undefined, }, ] @@ -178,22 +190,68 @@ Array [ "lernaClient": undefined, "managerData": Object { "lernaJsonFile": undefined, + "yarnZeroInstall": undefined, }, "npmLock": undefined, "npmrc": "@org:registry=//registry.some.org ", "packageFile": "packages/a/package.json", "packageJsonName": "@org/a", + "skipInstalls": undefined, "yarnLock": "yarn.lock", }, Object { "lernaClient": undefined, "managerData": Object { "lernaJsonFile": undefined, + "yarnZeroInstall": undefined, }, "npmLock": undefined, "packageFile": "packages/b/package.json", "packageJsonName": "@org/b", + "skipInstalls": undefined, + "yarnLock": undefined, + }, +] +`; + +exports[`manager/npm/extract/monorepo .extractPackageFile() uses yarnZeroInstall and skipInstalls from yarn workspaces package settings 1`] = ` +Array [ + Object { + "managerData": Object { + "yarnZeroInstall": true, + }, + "npmrc": "@org:registry=//registry.some.org +", + "packageFile": "package.json", + "skipInstalls": false, + "yarnWorkspacesPackages": "packages/*", + }, + Object { + "hasYarnWorkspaces": true, + "lernaClient": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + "yarnZeroInstall": true, + }, + "npmLock": undefined, + "npmrc": "@org:registry=//registry.some.org +", + "packageFile": "packages/a/package.json", + "packageJsonName": "@org/a", + "skipInstalls": false, + "yarnLock": "yarn.lock", + }, + Object { + "lernaClient": undefined, + "managerData": Object { + "lernaJsonFile": undefined, + "yarnZeroInstall": true, + }, + "npmLock": undefined, + "packageFile": "packages/b/package.json", + "packageJsonName": "@org/b", + "skipInstalls": false, "yarnLock": undefined, }, ] diff --git a/lib/manager/npm/extract/monorepo.spec.ts b/lib/manager/npm/extract/monorepo.spec.ts index 8fd569946f7719..62121992b16529 100644 --- a/lib/manager/npm/extract/monorepo.spec.ts +++ b/lib/manager/npm/extract/monorepo.spec.ts @@ -57,6 +57,7 @@ describe('manager/npm/extract/monorepo', () => { ) ).toBe(true); }); + it('updates internal packages', async () => { const packageFiles = [ { @@ -110,6 +111,7 @@ describe('manager/npm/extract/monorepo', () => { ) ).toBe(false); }); + it('uses yarn workspaces package settings with lerna', async () => { const packageFiles = [ { @@ -134,6 +136,7 @@ describe('manager/npm/extract/monorepo', () => { expect(packageFiles).toMatchSnapshot(); expect(packageFiles[1].managerData.lernaJsonFile).toEqual('lerna.json'); }); + it('uses yarn workspaces package settings without lerna', async () => { const packageFiles = [ { @@ -155,5 +158,32 @@ describe('manager/npm/extract/monorepo', () => { // FIXME: explicit assert condition expect(packageFiles).toMatchSnapshot(); }); + + it('uses yarnZeroInstall and skipInstalls from yarn workspaces package settings', async () => { + const packageFiles = [ + { + packageFile: 'package.json', + managerData: { + yarnZeroInstall: true, + }, + skipInstalls: false, + npmrc: '@org:registry=//registry.some.org\n', + yarnWorkspacesPackages: 'packages/*', + }, + { + packageFile: 'packages/a/package.json', + packageJsonName: '@org/a', + yarnLock: 'yarn.lock', + }, + { + packageFile: 'packages/b/package.json', + packageJsonName: '@org/b', + skipInstalls: true, + }, + ]; + await detectMonorepos(packageFiles, false); + // FIXME: explicit assert condition + expect(packageFiles).toMatchSnapshot(); + }); }); }); diff --git a/lib/manager/npm/extract/monorepo.ts b/lib/manager/npm/extract/monorepo.ts index 1181375a669ab5..f8128902e7fb63 100644 --- a/lib/manager/npm/extract/monorepo.ts +++ b/lib/manager/npm/extract/monorepo.ts @@ -22,8 +22,9 @@ export async function detectMonorepos( lernaClient, lernaPackages, yarnWorkspacesPackages, + skipInstalls, } = p; - const { lernaJsonFile } = managerData; + const { lernaJsonFile, yarnZeroInstall } = managerData; const packages = yarnWorkspacesPackages || lernaPackages; if (packages?.length) { const internalPackagePatterns = ( @@ -48,9 +49,11 @@ export async function detectMonorepos( for (const subPackage of internalPackageFiles) { subPackage.managerData = subPackage.managerData || {}; subPackage.managerData.lernaJsonFile = lernaJsonFile; + subPackage.managerData.yarnZeroInstall = yarnZeroInstall; subPackage.lernaClient = lernaClient; subPackage.yarnLock = subPackage.yarnLock || yarnLock; subPackage.npmLock = subPackage.npmLock || npmLock; + subPackage.skipInstalls = skipInstalls && subPackage.skipInstalls; // skip if both are true if (subPackage.yarnLock) { subPackage.hasYarnWorkspaces = !!yarnWorkspacesPackages; subPackage.npmrc = subPackage.npmrc || npmrc; From 31ec770e81ef10056493a24d965ed84fc50c4a14 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 5 Sep 2021 22:25:17 +0000 Subject: [PATCH 25/30] chore(deps): update dependency @types/luxon to v2.0.2 (#11585) Co-authored-by: Renovate Bot --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 2fc558b39db0e2..85be34c5992441 100644 --- a/package.json +++ b/package.json @@ -219,7 +219,7 @@ "@types/js-yaml": "4.0.3", "@types/json-dup-key-validator": "1.0.0", "@types/linkify-markdown": "1.0.1", - "@types/luxon": "2.0.1", + "@types/luxon": "2.0.2", "@types/markdown-it": "12.2.1", "@types/markdown-table": "2.0.0", "@types/moo": "0.5.5", diff --git a/yarn.lock b/yarn.lock index 2b000c7a78c08f..f0aa65cc9eae38 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1846,10 +1846,10 @@ resolved "https://registry.yarnpkg.com/@types/linkify-markdown/-/linkify-markdown-1.0.1.tgz#0b750a592107dd46ecf2b5be0eeb7656b1fc814d" integrity sha512-RYDOtCol7/sHGhSJvWVnl0AmOdQQWgUYys6cwn5Lt3RiYhyhTLMLv7B9wdixMgCfnNt0MQj/YSGi3qN0IQqLeQ== -"@types/luxon@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-2.0.1.tgz#4be7e91283de747ca061a071ef0c3747a710bda1" - integrity sha512-EqwKd+cuzQ6Jz/zsFYOofHzSfZSh1x3eBBj9+2IYk5vF3I1JnysPFK/I0YnkJ0artgvVY3jJYf2fGdIzoK0UIA== +"@types/luxon@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-2.0.2.tgz#89db62ab8299ed3a703e75eef525d6bdf94349bc" + integrity sha512-CUrDlIVYv7TNkdQV8YfT2WGAHyMAwFIT1PXoUcQhX2EFMVL20lxEQHWc73gdJfRtMsI6Vc22HvR7eUN0jkx6+w== "@types/markdown-it@12.2.1": version "12.2.1" From cf7b6d5c88724423c328d3e673c934022c01f4de Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Sep 2021 03:52:43 +0000 Subject: [PATCH 26/30] docs: update references to renovate/renovate to v26.19.1 (#11586) Co-authored-by: Renovate Bot --- docs/usage/docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage/docker.md b/docs/usage/docker.md index 147c7192d4bb4f..83323d0cde5828 100644 --- a/docs/usage/docker.md +++ b/docs/usage/docker.md @@ -227,7 +227,7 @@ To get access to the token a custom Renovate Docker image is needed that include The Dockerfile to create such an image can look like this: ```Dockerfile -FROM renovate/renovate:26.12.0 +FROM renovate/renovate:26.19.1 # Include the "Docker tip" which you can find here https://cloud.google.com/sdk/docs/install # under "Installation" for "Debian/Ubuntu" RUN ... From 2a09db0f23fd7b6d792ad3db168b3b260edede9e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Sep 2021 05:13:20 +0000 Subject: [PATCH 27/30] chore(deps): lock file maintenance (#11587) Co-authored-by: Renovate Bot --- yarn.lock | 499 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 290 insertions(+), 209 deletions(-) diff --git a/yarn.lock b/yarn.lock index f0aa65cc9eae38..02dab6d2efb02e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -465,11 +465,16 @@ "@aws-sdk/types" "3.25.0" tslib "^2.3.0" -"@aws-sdk/types@3.25.0", "@aws-sdk/types@^3.1.0": +"@aws-sdk/types@3.25.0": version "3.25.0" resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.25.0.tgz#981210272dae2d259130f6dca8429522d9a564bb" integrity sha512-vS0+cTKwj6CujlR07HmeEBxzWPWSrdmZMYnxn/QC9KW9dFu0lsyCGSCqWsFluI6GI0flsnYYWNkP5y4bfD9tqg== +"@aws-sdk/types@^3.1.0": + version "3.29.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.29.0.tgz#792050dfd4ff97fca448160ca9f652d5f33514b0" + integrity sha512-8ilWQU5ZTdiRfblmmjl38+6JZKKM8EqA5Sbn8djgDLShCLeVJ2TsL2guzNi+WHcL7BHdv1pI/NNmTcgRUo6yOw== + "@aws-sdk/url-parser@3.25.0": version "3.25.0" resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.25.0.tgz#668c7d9d4bc21854c10bfb8bdf762a9206776fae" @@ -532,9 +537,9 @@ tslib "^2.3.0" "@aws-sdk/util-locate-window@^3.0.0": - version "3.23.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.23.0.tgz#e9bf2a023dce2ea1d13ec2e8c7c92abb333a1442" - integrity sha512-mM8kWW7SWIxCshkNllpYqCQi5SzwJ+sv5nURhtquOB5/H3qGqZm0V5lUE3qpE1AYmqKwk6qbGUy1woFn1T5nrw== + version "3.29.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.29.0.tgz#a87bd77234864c2fffa98d33b58808e3553a9a18" + integrity sha512-gvcbl9UdTOvuCCzgbtTTsKnL1l/cnT/CFl0f6ZCQ6qubUTRCuL/aK8DvgWa1n9p/ddCiVKPLmHu/L1xtX4gc0A== dependencies: tslib "^2.3.0" @@ -563,13 +568,20 @@ "@aws-sdk/types" "3.25.0" tslib "^2.3.0" -"@aws-sdk/util-utf8-browser@3.23.0", "@aws-sdk/util-utf8-browser@^3.0.0": +"@aws-sdk/util-utf8-browser@3.23.0": version "3.23.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.23.0.tgz#dff7e891c67936de677b7d7a6c796e5c2e1b1510" integrity sha512-fSB95AKnvCnAbCd7o0xLbErfAgD9wnLCaEu23AgfGAiaG3nFF8Z2+wtjebU/9Z4RI9d/x83Ho/yguRnJdkMsPA== dependencies: tslib "^2.3.0" +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.29.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.29.0.tgz#8d04f4159763c2dccaad4eb09bf2a6118dbfea12" + integrity sha512-ZIHbBYByMq5vadQ1SZOQTHVtrkGAFiuypATYF5ST8YB3j7XKvflv+fiBX2xQ8xpqb28noEg6dNPnvqkQQ1n/aw== + dependencies: + tslib "^2.3.0" + "@aws-sdk/util-utf8-node@3.23.0": version "3.23.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.23.0.tgz#9f9fe76745c79c8a148f15d78e9a5c03d2bf0441" @@ -607,19 +619,19 @@ integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== "@babel/core@^7.1.0", "@babel/core@^7.7.2", "@babel/core@^7.7.5": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.0.tgz#749e57c68778b73ad8082775561f67f5196aafa8" - integrity sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw== + version "7.15.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" + integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== dependencies: "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.0" - "@babel/helper-module-transforms" "^7.15.0" - "@babel/helpers" "^7.14.8" - "@babel/parser" "^7.15.0" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.15.0" - "@babel/types" "^7.15.0" + "@babel/generator" "^7.15.4" + "@babel/helper-compilation-targets" "^7.15.4" + "@babel/helper-module-transforms" "^7.15.4" + "@babel/helpers" "^7.15.4" + "@babel/parser" "^7.15.5" + "@babel/template" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.4" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -627,111 +639,111 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.15.0", "@babel/generator@^7.7.2": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.0.tgz#a7d0c172e0d814974bad5aa77ace543b97917f15" - integrity sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ== +"@babel/generator@^7.15.4", "@babel/generator@^7.7.2": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" + integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== dependencies: - "@babel/types" "^7.15.0" + "@babel/types" "^7.15.4" jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-compilation-targets@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz#973df8cbd025515f3ff25db0c05efc704fa79818" - integrity sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A== +"@babel/helper-compilation-targets@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" + integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== dependencies: "@babel/compat-data" "^7.15.0" "@babel/helper-validator-option" "^7.14.5" browserslist "^4.16.6" semver "^6.3.0" -"@babel/helper-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" - integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== +"@babel/helper-function-name@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" + integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== dependencies: - "@babel/helper-get-function-arity" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/helper-get-function-arity" "^7.15.4" + "@babel/template" "^7.15.4" + "@babel/types" "^7.15.4" -"@babel/helper-get-function-arity@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" - integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== +"@babel/helper-get-function-arity@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" + integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.15.4" -"@babel/helper-hoist-variables@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" - integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== +"@babel/helper-hoist-variables@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" + integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.15.4" -"@babel/helper-member-expression-to-functions@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz#0ddaf5299c8179f27f37327936553e9bba60990b" - integrity sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg== +"@babel/helper-member-expression-to-functions@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" + integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== dependencies: - "@babel/types" "^7.15.0" + "@babel/types" "^7.15.4" -"@babel/helper-module-imports@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" - integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== +"@babel/helper-module-imports@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" + integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.15.4" -"@babel/helper-module-transforms@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz#679275581ea056373eddbe360e1419ef23783b08" - integrity sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg== +"@babel/helper-module-transforms@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz#962cc629a7f7f9a082dd62d0307fa75fe8788d7c" + integrity sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw== dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.0" - "@babel/helper-simple-access" "^7.14.8" - "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-module-imports" "^7.15.4" + "@babel/helper-replace-supers" "^7.15.4" + "@babel/helper-simple-access" "^7.15.4" + "@babel/helper-split-export-declaration" "^7.15.4" "@babel/helper-validator-identifier" "^7.14.9" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.15.0" - "@babel/types" "^7.15.0" + "@babel/template" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.4" -"@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== +"@babel/helper-optimise-call-expression@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" + integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.15.4" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== -"@babel/helper-replace-supers@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz#ace07708f5bf746bf2e6ba99572cce79b5d4e7f4" - integrity sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA== +"@babel/helper-replace-supers@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" + integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.0" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/traverse" "^7.15.0" - "@babel/types" "^7.15.0" + "@babel/helper-member-expression-to-functions" "^7.15.4" + "@babel/helper-optimise-call-expression" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.4" -"@babel/helper-simple-access@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" - integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== +"@babel/helper-simple-access@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" + integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== dependencies: - "@babel/types" "^7.14.8" + "@babel/types" "^7.15.4" -"@babel/helper-split-export-declaration@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" - integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== +"@babel/helper-split-export-declaration@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" + integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.15.4" "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": version "7.14.9" @@ -743,14 +755,14 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== -"@babel/helpers@^7.14.8": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.3.tgz#c96838b752b95dcd525b4e741ed40bb1dc2a1357" - integrity sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g== +"@babel/helpers@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" + integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== dependencies: - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.15.0" - "@babel/types" "^7.15.0" + "@babel/template" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.4" "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": version "7.14.5" @@ -761,10 +773,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.5", "@babel/parser@^7.15.0", "@babel/parser@^7.7.2": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.3.tgz#3416d9bea748052cfcb63dbcc27368105b1ed862" - integrity sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA== +"@babel/parser@^7.1.0", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.7.2": + version "7.15.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.5.tgz#d33a58ca69facc05b26adfe4abebfed56c1c2dac" + integrity sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -858,41 +870,41 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/runtime-corejs3@^7.12.1": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.15.3.tgz#28754263988198f2a928c09733ade2fb4d28089d" - integrity sha512-30A3lP+sRL6ml8uhoJSs+8jwpKzbw8CqBvDc1laeptxPm5FahumJxirigcbD2qTs71Sonvj1cyZB0OKGAmxQ+A== + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz#403139af262b9a6e8f9ba04a6fdcebf8de692bf1" + integrity sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg== dependencies: core-js-pure "^3.16.0" regenerator-runtime "^0.13.4" -"@babel/template@^7.14.5", "@babel/template@^7.3.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" - integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== +"@babel/template@^7.15.4", "@babel/template@^7.3.3": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" + integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== dependencies: "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/parser" "^7.15.4" + "@babel/types" "^7.15.4" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.15.0", "@babel/traverse@^7.7.2": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" - integrity sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.7.2": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" + integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== dependencies: "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.0" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.15.0" - "@babel/types" "^7.15.0" + "@babel/generator" "^7.15.4" + "@babel/helper-function-name" "^7.15.4" + "@babel/helper-hoist-variables" "^7.15.4" + "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/parser" "^7.15.4" + "@babel/types" "^7.15.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.15.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" - integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== +"@babel/types@^7.0.0", "@babel/types@^7.15.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.4.tgz#74eeb86dbd6748d2741396557b9860e57fce0a0d" + integrity sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw== dependencies: "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" @@ -1229,9 +1241,9 @@ fastq "^1.6.0" "@npmcli/arborist@*", "@npmcli/arborist@^2.3.0", "@npmcli/arborist@^2.5.0": - version "2.8.2" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-2.8.2.tgz#643f8c8a26ffbaa579983972f67a60cb6217e86a" - integrity sha512-6E1XJ0YXBaI9J+25gcTF110MGNx3jv6npr4Rz1U0UAqkuVV7bbDznVJvNqi6F0p8vgrE+Smf9jDTn1DR+7uBjQ== + version "2.8.3" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-2.8.3.tgz#5569e7d2038f6893abc81f9c879f497b506e6980" + integrity sha512-miFcxbZjmQqeFTeRSLLh+lc/gxIKDO5L4PVCp+dp+kmcwJmYsEJmF7YvHR2yi3jF+fxgvLf3CCFzboPIXAuabg== dependencies: "@npmcli/installed-package-contents" "^1.0.7" "@npmcli/map-workspaces" "^1.0.2" @@ -1271,9 +1283,9 @@ integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== "@npmcli/config@*": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-2.2.0.tgz#c3f6cb76e74691d1ae746cda482b7df751ed2124" - integrity sha512-y0V3F7RCWXy8kBOvKvKSRUNKRobLB6vL/UNchy/6+IUNIqu+UyrY3Z7jvj1ZA/AkYc/0WkCUtppCo+bPhMU8Aw== + version "2.3.0" + resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-2.3.0.tgz#364fbe942037e562a832a113206e14ccb651f7bc" + integrity sha512-yjiC1xv7KTmUTqfRwN2ZL7BHV160ctGF0fLXmKkkMXj40UOvBe45Apwvt5JsFRtXSoHkUYy1ouzscziuWNzklg== dependencies: ini "^2.0.0" mkdirp-infer-owner "^2.0.0" @@ -1386,7 +1398,7 @@ 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== @@ -1409,37 +1421,37 @@ universal-user-agent "^6.0.0" "@octokit/graphql@^4.5.8": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.7.0.tgz#cbe12edc2bc61e9eaa5f9e5d092644c92b6fcb74" - integrity sha512-diY0qMPyQjfu4rDu3kDhJ9qIZadIm4IISO3RJSv9ajYUWJUCO0AykbgzLcg1xclxtXgzY583u3gAv66M6zz5SA== + version "4.8.0" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" + integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== dependencies: "@octokit/request" "^5.6.0" "@octokit/types" "^6.0.3" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^9.5.0": - version "9.7.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-9.7.0.tgz#9897cdefd629cd88af67b8dbe2e5fb19c63426b2" - integrity sha512-TUJ16DJU8mekne6+KVcMV5g6g/rJlrnIKn7aALG9QrNpnEipFc1xjoarh0PKaAWf2Hf+HwthRKYt+9mCm5RsRg== +"@octokit/openapi-types@^10.1.0": + version "10.1.1" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-10.1.1.tgz#74607482d193e9c9cc7e23ecf04b1bde3eabb6d8" + integrity sha512-ygp/6r25Ezb1CJuVMnFfOsScEtPF0zosdTJDZ7mZ+I8IULl7DP1BS5ZvPRwglcarGPXOvS5sHdR0bjnVDDfQdQ== -"@octokit/plugin-paginate-rest@^2.6.2": - version "2.15.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.15.1.tgz#264189dd3ce881c6c33758824aac05a4002e056a" - integrity sha512-47r52KkhQDkmvUKZqXzA1lKvcyJEfYh3TKAIe5+EzMeyDM3d+/s5v11i2gTk8/n6No6DPi3k5Ind6wtDbo/AEg== +"@octokit/plugin-paginate-rest@^2.16.0": + version "2.16.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.16.0.tgz#09dbda2e5fbca022e3cdf76b63618f7b357c9f0c" + integrity sha512-8YYzALPMvEZ35kgy5pdYvQ22Roz+BIuEaedO575GwE2vb/ACDqQn0xQrTJR4tnZCJn7pi8+AWPVjrFDaERIyXQ== dependencies: - "@octokit/types" "^6.24.0" + "@octokit/types" "^6.26.0" -"@octokit/plugin-request-log@^1.0.2": +"@octokit/plugin-request-log@^1.0.4": 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@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.8.0.tgz#33b342fe41f2603fdf8b958e6652103bb3ea3f3b" - integrity sha512-qeLZZLotNkoq+it6F+xahydkkbnvSK0iDjlXFo3jNTB+Ss0qIbYQb9V/soKLMkgGw8Q2sHjY5YEXiA47IVPp4A== +"@octokit/plugin-rest-endpoint-methods@^5.9.0": + version "5.10.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.10.0.tgz#8058acf408d518defa2dc59a46777adbcd7ee8e8" + integrity sha512-HiUZliq5wNg15cevJlTo9zDnPXAD0BMRhLxbRNPnq9J3HELKesDTOiou56ax2jC/rECUkK/uJTugrizYKSo/jg== dependencies: - "@octokit/types" "^6.25.0" + "@octokit/types" "^6.27.0" deprecation "^2.3.1" "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": @@ -1464,21 +1476,21 @@ universal-user-agent "^6.0.0" "@octokit/rest@^18.0.0": - version "18.9.1" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.9.1.tgz#db1d7ac1d7b10e908f7d4b78fe35a392554ccb26" - integrity sha512-idZ3e5PqXVWOhtZYUa546IDHTHjkGZbj3tcJsN0uhCy984KD865e8GB2WbYDc2ZxFuJRiyd0AftpL2uPNhF+UA== + version "18.10.0" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.10.0.tgz#8a0add9611253e0e31d3ed5b4bc941a3795a7648" + integrity sha512-esHR5OKy38bccL/sajHqZudZCvmv4yjovMJzyXlphaUo7xykmtOdILGJ3aAm0mFHmMLmPFmDMJXf39cAjNJsrw== dependencies: - "@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.8.0" + "@octokit/core" "^3.5.1" + "@octokit/plugin-paginate-rest" "^2.16.0" + "@octokit/plugin-request-log" "^1.0.4" + "@octokit/plugin-rest-endpoint-methods" "^5.9.0" -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.24.0", "@octokit/types@^6.25.0": - version "6.25.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.25.0.tgz#c8e37e69dbe7ce55ed98ee63f75054e7e808bf1a" - integrity sha512-bNvyQKfngvAd/08COlYIN54nRgxskmejgywodizQNyiKoXmWRAjKup2/LYwm+T9V0gsKH6tuld1gM0PzmOiB4Q== +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.26.0", "@octokit/types@^6.27.0": + version "6.27.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.27.0.tgz#2ffcd4d1cf344285f4151978c6fd36a2edcdf922" + integrity sha512-ha27f8DToxXBPEJdzHCCuqpw7AgKfjhWGdNf3yIlBAhAsaexBXTfWw36zNSsncALXGvJq4EjLy1p3Wz45Aqb4A== dependencies: - "@octokit/openapi-types" "^9.5.0" + "@octokit/openapi-types" "^10.1.0" "@renovate/eslint-plugin@https://github.com/renovatebot/eslint-plugin#v0.0.3": version "0.0.1" @@ -1905,9 +1917,9 @@ integrity sha512-0fRfA90FWm6KJfw6P9QGyo0HDTCmthZ7cWaBQndITlaWLTZ6njRyKwrwpzpg+n6kBXBIGKeUHEQuBx7bphGJkA== "@types/node@*": - version "16.7.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.6.tgz#8666478db8095aa66e25b7e469f3e7b53ea2855e" - integrity sha512-VESVNFoa/ahYA62xnLBjo5ur6gPsgEE5cNRy8SrdnkZ2nwJSW0kJ4ufbFr2zuU9ALtHM8juY53VcRoTA7htXSg== + version "16.7.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.10.tgz#7aa732cc47341c12a16b7d562f519c2383b6d4fc" + integrity sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA== "@types/node@14.17.12": version "14.17.12" @@ -2067,7 +2079,7 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@4.29.3", "@typescript-eslint/experimental-utils@^4.0.1": +"@typescript-eslint/experimental-utils@4.29.3": version "4.29.3" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.29.3.tgz#52e437a689ccdef73e83c5106b34240a706f15e1" integrity sha512-ffIvbytTVWz+3keg+Sy94FG1QeOvmV9dP2YSdLFHw/ieLXWCa3U1TYu8IRCOpMv2/SPS8XqhM1+ou1YHsdzKrg== @@ -2079,7 +2091,19 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/parser@4.29.3", "@typescript-eslint/parser@^4.4.1": +"@typescript-eslint/experimental-utils@^4.0.1": + version "4.30.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.30.0.tgz#9e49704fef568432ae16fc0d6685c13d67db0fd5" + integrity sha512-K8RNIX9GnBsv5v4TjtwkKtqMSzYpjqAQg/oSphtxf3xxdt6T0owqnpojztjjTcatSteH3hLj3t/kklKx87NPqw== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.30.0" + "@typescript-eslint/types" "4.30.0" + "@typescript-eslint/typescript-estree" "4.30.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/parser@4.29.3": version "4.29.3" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.29.3.tgz#2ac25535f34c0e98f50c0e6b28c679c2357d45f2" integrity sha512-jrHOV5g2u8ROghmspKoW7pN8T/qUzk0+DITun0MELptvngtMrwUJ1tv5zMI04CYVEUsSrN4jV7AKSv+I0y0EfQ== @@ -2089,6 +2113,16 @@ "@typescript-eslint/typescript-estree" "4.29.3" debug "^4.3.1" +"@typescript-eslint/parser@^4.4.1": + version "4.30.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.30.0.tgz#6abd720f66bd790f3e0e80c3be77180c8fcb192d" + integrity sha512-HJ0XuluSZSxeboLU7Q2VQ6eLlCwXPBOGnA7CqgBnz2Db3JRQYyBDJgQnop6TZ+rsbSx5gEdWhw4rE4mDa1FnZg== + dependencies: + "@typescript-eslint/scope-manager" "4.30.0" + "@typescript-eslint/types" "4.30.0" + "@typescript-eslint/typescript-estree" "4.30.0" + debug "^4.3.1" + "@typescript-eslint/scope-manager@4.29.3": version "4.29.3" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.29.3.tgz#497dec66f3a22e459f6e306cf14021e40ec86e19" @@ -2097,11 +2131,24 @@ "@typescript-eslint/types" "4.29.3" "@typescript-eslint/visitor-keys" "4.29.3" +"@typescript-eslint/scope-manager@4.30.0": + version "4.30.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.30.0.tgz#1a3ffbb385b1a06be85cd5165a22324f069a85ee" + integrity sha512-VJ/jAXovxNh7rIXCQbYhkyV2Y3Ac/0cVHP/FruTJSAUUm4Oacmn/nkN5zfWmWFEanN4ggP0vJSHOeajtHq3f8A== + dependencies: + "@typescript-eslint/types" "4.30.0" + "@typescript-eslint/visitor-keys" "4.30.0" + "@typescript-eslint/types@4.29.3": version "4.29.3" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.29.3.tgz#d7980c49aef643d0af8954c9f14f656b7fd16017" integrity sha512-s1eV1lKNgoIYLAl1JUba8NhULmf+jOmmeFO1G5MN/RBCyyzg4TIOfIOICVNC06lor+Xmy4FypIIhFiJXOknhIg== +"@typescript-eslint/types@4.30.0": + version "4.30.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.30.0.tgz#fb9d9b0358426f18687fba82eb0b0f869780204f" + integrity sha512-YKldqbNU9K4WpTNwBqtAerQKLLW/X2A/j4yw92e3ZJYLx+BpKLeheyzoPfzIXHfM8BXfoleTdiYwpsvVPvHrDw== + "@typescript-eslint/typescript-estree@4.29.3": version "4.29.3" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.3.tgz#1bafad610015c4ded35c85a70b6222faad598b40" @@ -2115,6 +2162,19 @@ semver "^7.3.5" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@4.30.0": + version "4.30.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.30.0.tgz#ae57833da72a753f4846cd3053758c771670c2ac" + integrity sha512-6WN7UFYvykr/U0Qgy4kz48iGPWILvYL34xXJxvDQeiRE018B7POspNRVtAZscWntEPZpFCx4hcz/XBT+erenfg== + dependencies: + "@typescript-eslint/types" "4.30.0" + "@typescript-eslint/visitor-keys" "4.30.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + "@typescript-eslint/visitor-keys@4.29.3": version "4.29.3" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.3.tgz#c691760a00bd86bf8320d2a90a93d86d322f1abf" @@ -2123,6 +2183,14 @@ "@typescript-eslint/types" "4.29.3" eslint-visitor-keys "^2.0.0" +"@typescript-eslint/visitor-keys@4.30.0": + version "4.30.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.30.0.tgz#a47c6272fc71b0c627d1691f68eaecf4ad71445e" + integrity sha512-pNaaxDt/Ol/+JZwzP7MqWc8PJQTUhZwoee/PVlQ+iYoYhagccvoHnC9e4l+C/krQYYkENxznhVSDwClIbZVxRw== + dependencies: + "@typescript-eslint/types" "4.30.0" + eslint-visitor-keys "^2.0.0" + "@yarnpkg/core@2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@yarnpkg/core/-/core-2.4.0.tgz#b5d8cc7ee2ddb022816c7afa3f83c3ee3d317c80" @@ -2161,9 +2229,9 @@ tunnel "^0.0.6" "@yarnpkg/fslib@^2.4.0", "@yarnpkg/fslib@^2.5.0": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@yarnpkg/fslib/-/fslib-2.5.1.tgz#3e99dccf48790697d52f1b1ac133dce218424521" - integrity sha512-Y360rwoaUBCF8i9nRepyuFQFNF5OybHafO4PQ5Pf68sT3H6ulmT2t/KjdtMey8zyJkDu5qrC3IgHk0c7zWRIrg== + version "2.5.2" + resolved "https://registry.yarnpkg.com/@yarnpkg/fslib/-/fslib-2.5.2.tgz#6dcfbe12fe2d1bce14cb6e4518054abb1dd7c48d" + integrity sha512-Tonb3jXsxsGB+uTlzG6r2zcAUekIG0FfCZV/kM14fPvTE3Z1wC0cMtiD4IUzxSqyhC/zR+T1pLaTPT3xDzSvqg== dependencies: "@yarnpkg/libzip" "^2.2.2" tslib "^1.13.0" @@ -2399,10 +2467,18 @@ archy@*: resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= -are-we-there-yet@^1.1.5, are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +are-we-there-yet@~1.1.2: + version "1.1.7" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -2743,13 +2819,13 @@ browser-process-hrtime@^1.0.0: integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserslist@^4.16.6: - version "4.16.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.8.tgz#cb868b0b554f137ba6e33de0ecff2eda403c4fb0" - integrity sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ== + version "4.17.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.0.tgz#1fcd81ec75b41d6d4994fb0831b92ac18c01649c" + integrity sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g== dependencies: - caniuse-lite "^1.0.30001251" + caniuse-lite "^1.0.30001254" colorette "^1.3.0" - electron-to-chromium "^1.3.811" + electron-to-chromium "^1.3.830" escalade "^3.1.1" node-releases "^1.1.75" @@ -2889,10 +2965,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -caniuse-lite@^1.0.30001251: - version "1.0.30001252" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001252.tgz#cb16e4e3dafe948fc4a9bb3307aea054b912019a" - integrity sha512-I56jhWDGMtdILQORdusxBOH+Nl/KgQSdDmpJezYddnAkVOmnoU8zwjTV9xAjMIYxr0iPreEAVylCGcmHCjfaOw== +caniuse-lite@^1.0.30001254: + version "1.0.30001255" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001255.tgz#f3b09b59ab52e39e751a569523618f47c4298ca0" + integrity sha512-F+A3N9jTZL882f/fg/WWVnKSu6IOo3ueLz4zwaOPbPYHNmM/ZaDUyzyJwS1mZhX7Ex5jqTyW599Gdelh5PDYLQ== cardinal@^2.1.1: version "2.1.1" @@ -3259,20 +3335,25 @@ copy-descriptor@^0.1.0: integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js-pure@^3.16.0: - version "3.16.4" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.16.4.tgz#8b23122628d88c560f209812b9b2d9ebbce5e29c" - integrity sha512-bY1K3/1Jy9D8Jd12eoeVahNXHLfHFb4TXWI8SQ4y8bImR9qDPmGITBAfmcffTkgUvbJn87r8dILOTWW5kZzkgA== + version "3.17.2" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.17.2.tgz#ba6311b6aa1e2f2adeba4ac6ec51a9ff40bdc1af" + integrity sha512-2VV7DlIbooyTI7Bh+yzOOWL9tGwLnQKHno7qATE+fqZzDKYr6llVjVQOzpD/QLZFgXDPb8T71pJokHEZHEYJhQ== core-js@^3.6.5: - version "3.16.4" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.16.4.tgz#0fb1029a554fc2688c0963d7c900e188188a78e0" - integrity sha512-Tq4GVE6XCjE+hcyW6hPy0ofN3hwtLudz5ZRdrlCnsnD/xkm/PWQRudzYHiKgZKUcefV6Q57fhDHjZHJP5dpfSg== + version "3.17.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.17.2.tgz#f960eae710dc62c29cca93d5332e3660e289db10" + integrity sha512-XkbXqhcXeMHPRk2ItS+zQYliAMilea2euoMsnpRRdDad6b2VY6CQQcwz1K8AnWesfw4p165RzY0bTnr3UrbYiA== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cosmiconfig@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" @@ -3461,9 +3542,9 @@ deep-extend@^0.6.0: integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@4.2.2, deepmerge@^4.2.2: version "4.2.2" @@ -3690,10 +3771,10 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.3.811: - version "1.3.822" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.822.tgz#7036edc7f669b0aa79e9801dc5f56866c6ddc0b2" - integrity sha512-k7jG5oYYHxF4jx6PcqwHX3JVME/OjzolqOZiIogi9xtsfsmTjTdie4x88OakYFPEa8euciTgCCzvVNwvmjHb1Q== +electron-to-chromium@^1.3.830: + version "1.3.830" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.830.tgz#40e3144204f8ca11b2cebec83cf14c20d3499236" + integrity sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ== email-addresses@5.0.0: version "5.0.0" @@ -6745,9 +6826,9 @@ minipass-collect@^1.0.2: minipass "^3.0.0" minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: - version "1.3.4" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.3.4.tgz#63f5af868a38746ca7b33b03393ddf8c291244fe" - integrity sha512-TielGogIzbUEtd1LsjZFs47RWuHHfhl6TiCx1InVxApBAmQ8bL0dL5ilkLGcRvuyW/A9nE+Lvn855Ewz8S0PnQ== + version "1.4.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== dependencies: minipass "^3.1.0" minipass-sized "^1.0.3" @@ -7174,9 +7255,9 @@ npm-user-validate@*: integrity sha512-uQwcd/tY+h1jnEaze6cdX/LrhWhoBxfSknxentoqmIuStxUExxjWd3ULMLFPiFUrZKbOVMowH6Jq2FRWfmhcEw== npm@^7.0.0: - version "7.21.1" - resolved "https://registry.yarnpkg.com/npm/-/npm-7.21.1.tgz#2ab886fc8b5eb044ca5b4e2f7570340fad9934eb" - integrity sha512-k7XQNHGHAp0VowMMUMRMtntxWatNad9hhYrelUKDPvZ++DBxvofA8QTNPiuMKtx8CBOFA8iJ4aizhbx6ZYVfzQ== + version "7.22.0" + resolved "https://registry.yarnpkg.com/npm/-/npm-7.22.0.tgz#11db1860c68c569eb2e3f4d4e97934b005b585bc" + integrity sha512-HJnjTCrGGnacPMCSnrxuHGf2H4VdrY7hwTAK1RwByg0K96KIuTR4QNioFW+bnc/pW0uwpk9lLsDf4BeEQhTv2Q== dependencies: "@npmcli/arborist" "*" "@npmcli/ci-detect" "*" @@ -7248,11 +7329,11 @@ npm@^7.0.0: write-file-atomic "*" npmlog@*: - version "5.0.0" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.0.tgz#e6a41b556e9b34cb29ea132294676c07acb30efb" - integrity sha512-ftpIiLjerL2tUg3dCqN8pOSoB90gqZlzv/gaZoxHaKjeLClrfJIEQ1Pdxi6qSzflz916Bljdy8dTWQ4J7hAFSQ== + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== dependencies: - are-we-there-yet "^1.1.5" + are-we-there-yet "^2.0.0" console-control-strings "^1.1.0" gauge "^3.0.0" set-blocking "^2.0.0" @@ -8010,9 +8091,9 @@ read-package-json-fast@*, read-package-json-fast@^2.0.1, read-package-json-fast@ npm-normalize-package-bin "^1.0.1" read-package-json@*, read-package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-4.0.1.tgz#da88a38c410344fecb7d840d35f27635e848ea54" - integrity sha512-czqCcYfkEl6sIFJVOND/5/Goseu7cVw1rcDUATq6ED0jLGjMm9/HOPmFmEZMvRu9yl272YERaMUcOlvcNU9InQ== + version "4.1.1" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-4.1.1.tgz#153be72fce801578c1c86b8ef2b21188df1b9eea" + integrity sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw== dependencies: glob "^7.1.1" json-parse-even-better-errors "^2.3.0" @@ -8062,7 +8143,7 @@ read@*, read@1, read@^1.0.7, read@~1.0.1: dependencies: mute-stream "~0.0.4" -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0: +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -9388,9 +9469,9 @@ type-fest@^0.8.0, type-fest@^0.8.1: integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== typed-rest-client@^1.8.4: - version "1.8.5" - resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.5.tgz#3d331f2761c2be0103bda71a7d19ab08533f3b5a" - integrity sha512-952/Aegu3lTqUAI1anbDLbewojnF/gh8at9iy1CIrfS1h/+MtNjB1Y9z6ZF5n2kZd+97em56lZ9uu7Zz3y/pwg== + version "1.8.6" + resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.6.tgz#d8facd6abd98cbd8ad14cccf056ca5cc306919d7" + integrity sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA== dependencies: qs "^6.9.1" tunnel "0.0.6" From 27861b773322972c62a51f917021601f6f7eeaa6 Mon Sep 17 00:00:00 2001 From: Sebastian Poxhofer Date: Mon, 6 Sep 2021 11:24:21 +0200 Subject: [PATCH 28/30] feat(manager/helmv3): support helm chart dependencies in OCI images (#11584) --- .../__snapshots__/artifacts.spec.ts.snap | 6 ++- .../helmv3/__snapshots__/extract.spec.ts.snap | 23 +++++++++++ lib/manager/helmv3/artifacts.ts | 3 ++ lib/manager/helmv3/extract.spec.ts | 39 +++++++++++++++++++ lib/manager/helmv3/extract.ts | 13 ++++++- 5 files changed, 81 insertions(+), 3 deletions(-) diff --git a/lib/manager/helmv3/__snapshots__/artifacts.spec.ts.snap b/lib/manager/helmv3/__snapshots__/artifacts.spec.ts.snap index 0388f42d24794e..53bd016a64ee3c 100644 --- a/lib/manager/helmv3/__snapshots__/artifacts.spec.ts.snap +++ b/lib/manager/helmv3/__snapshots__/artifacts.spec.ts.snap @@ -19,6 +19,7 @@ Array [ "cwd": "/tmp/github/some/repo", "encoding": "utf-8", "env": Object { + "HELM_EXPERIMENTAL_OCI": "1", "HOME": "/home/user", "HTTPS_PROXY": "https://example.com", "HTTP_PROXY": "http://example.com", @@ -53,6 +54,7 @@ Array [ "cwd": "/tmp/github/some/repo", "encoding": "utf-8", "env": Object { + "HELM_EXPERIMENTAL_OCI": "1", "HOME": "/home/user", "HTTPS_PROXY": "https://example.com", "HTTP_PROXY": "http://example.com", @@ -87,6 +89,7 @@ Array [ "cwd": "/tmp/github/some/repo", "encoding": "utf-8", "env": Object { + "HELM_EXPERIMENTAL_OCI": "1", "HOME": "/home/user", "HTTPS_PROXY": "https://example.com", "HTTP_PROXY": "http://example.com", @@ -128,11 +131,12 @@ Array [ }, }, Object { - "cmd": "docker run --rm --name=renovate_helm --label=renovate_child -v \\"/tmp/github/some/repo\\":\\"/tmp/github/some/repo\\" -w \\"/tmp/github/some/repo\\" renovate/helm bash -l -c \\"helm dependency update ''\\"", + "cmd": "docker run --rm --name=renovate_helm --label=renovate_child -v \\"/tmp/github/some/repo\\":\\"/tmp/github/some/repo\\" -e HELM_EXPERIMENTAL_OCI -w \\"/tmp/github/some/repo\\" renovate/helm bash -l -c \\"helm dependency update ''\\"", "options": Object { "cwd": "/tmp/github/some/repo", "encoding": "utf-8", "env": Object { + "HELM_EXPERIMENTAL_OCI": "1", "HOME": "/home/user", "HTTPS_PROXY": "https://example.com", "HTTP_PROXY": "http://example.com", diff --git a/lib/manager/helmv3/__snapshots__/extract.spec.ts.snap b/lib/manager/helmv3/__snapshots__/extract.spec.ts.snap index 4c79e1380e1175..547524fa8d8e9d 100644 --- a/lib/manager/helmv3/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/helmv3/__snapshots__/extract.spec.ts.snap @@ -1,5 +1,28 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`manager/helmv3/extract extractPackageFile() extract correctly oci references 1`] = ` +Object { + "datasource": "helm", + "deps": Array [ + Object { + "currentValue": "0.1.0", + "datasource": "docker", + "depName": "library", + "lookupName": "ghcr.io/ankitabhopatkar13/library", + "registryUrls": Array [], + }, + Object { + "currentValue": "0.8.1", + "depName": "postgresql", + "registryUrls": Array [ + "https://charts.helm.sh/stable", + ], + }, + ], + "packageFileVersion": "0.1.0", +} +`; + exports[`manager/helmv3/extract extractPackageFile() parses simple Chart.yaml correctly 1`] = ` Object { "datasource": "helm", diff --git a/lib/manager/helmv3/artifacts.ts b/lib/manager/helmv3/artifacts.ts index 1903724d8497f5..3414afa6c3d102 100644 --- a/lib/manager/helmv3/artifacts.ts +++ b/lib/manager/helmv3/artifacts.ts @@ -17,6 +17,9 @@ async function helmUpdate(manifestPath: string): Promise { docker: { image: 'helm', }, + extraEnv: { + HELM_EXPERIMENTAL_OCI: '1', + }, }; await exec(cmd, execOptions); } diff --git a/lib/manager/helmv3/extract.spec.ts b/lib/manager/helmv3/extract.spec.ts index e9710fd4ec5800..3aa609097db193 100644 --- a/lib/manager/helmv3/extract.spec.ts +++ b/lib/manager/helmv3/extract.spec.ts @@ -1,4 +1,5 @@ import { fs } from '../../../test/util'; +import * as datasourceDocker from '../../datasource/docker'; import { extractPackageFile } from './extract'; jest.mock('../../util/fs'); @@ -66,6 +67,44 @@ describe('manager/helmv3/extract', () => { ], }); }); + + it('extract correctly oci references', async () => { + const content = ` + apiVersion: v2 + name: app2 + description: A Helm chart for Kubernetes + type: application + version: 0.1.0 + appVersion: "1.16.0" + dependencies: + - name: library + version: 0.1.0 + repository: oci://ghcr.io/ankitabhopatkar13/library + import-values: + - defaults + - name: postgresql + version: 0.8.1 + repository: https://charts.helm.sh/stable + condition: postgresql.enabled + `; + const fileName = 'Chart.yaml'; + const result = await extractPackageFile(content, fileName, { + aliases: { + stable: 'https://charts.helm.sh/stable', + }, + }); + expect(result).toMatchSnapshot({ + deps: [ + { + depName: 'library', + datasource: datasourceDocker.id, + currentValue: '0.1.0', + }, + { depName: 'postgresql', currentValue: '0.8.1' }, + ], + }); + }); + it('resolves aliased registry urls', async () => { const content = ` apiVersion: v2 diff --git a/lib/manager/helmv3/extract.ts b/lib/manager/helmv3/extract.ts index d589d3403c260b..bc0266ca3b12bb 100644 --- a/lib/manager/helmv3/extract.ts +++ b/lib/manager/helmv3/extract.ts @@ -1,5 +1,6 @@ import is from '@sindresorhus/is'; import { load } from 'js-yaml'; +import * as datasourceDocker from '../../datasource/docker'; import { HelmDatasource } from '../../datasource/helm'; import { logger } from '../../logger'; import { SkipReason } from '../../types'; @@ -75,8 +76,16 @@ export async function extractPackageFile( } else { try { const url = new URL(dep.repository); - if (url.protocol === 'file:') { - res.skipReason = SkipReason.LocalDependency; + switch (url.protocol) { + case 'oci:': + res.datasource = datasourceDocker.id; + res.lookupName = dep.repository.replace('oci://', ''); + res.registryUrls = []; + break; + case 'file:': + res.skipReason = SkipReason.LocalDependency; + break; + default: } } catch (err) { logger.debug({ err }, 'Error parsing url'); From 3ee70c73cb4d8e104d441428946a1505d1161809 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Sep 2021 12:33:57 +0000 Subject: [PATCH 29/30] chore(deps): update github/codeql-action action to v1.0.13 (#11596) Co-authored-by: Renovate Bot --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index c60b9e3f8bf6e7..f6bd8919bdbc84 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -22,7 +22,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@b0e70410b40f1a9af3bba1cecd95b4b57896af26 # renovate: tag=v1.0.12 + uses: github/codeql-action/init@89d78ba4572c7854683ec144d212bf0b52cd2a2a # renovate: tag=v1.0.13 # Override language selection by uncommenting this and choosing your languages # with: @@ -30,7 +30,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@b0e70410b40f1a9af3bba1cecd95b4b57896af26 # renovate: tag=v1.0.12 + uses: github/codeql-action/autobuild@89d78ba4572c7854683ec144d212bf0b52cd2a2a # renovate: tag=v1.0.13 # ℹī¸ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -44,4 +44,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@b0e70410b40f1a9af3bba1cecd95b4b57896af26 # renovate: tag=v1.0.12 + uses: github/codeql-action/analyze@89d78ba4572c7854683ec144d212bf0b52cd2a2a # renovate: tag=v1.0.13 From a16330642b6a0c1f726e56b90bf212e60fa1bb75 Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Mon, 6 Sep 2021 14:59:55 +0200 Subject: [PATCH 30/30] fix(git): commitFiles cleanup (#11570) --- lib/util/git/index.ts | 49 ++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index 70459d0db36dbb..0436fa6485c65b 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -705,20 +705,6 @@ export type CommitFilesConfig = { force?: boolean; }; -async function gitAdd(files: string | string[]): Promise { - try { - await git.add(files); - } catch (err) /* istanbul ignore next */ { - if ( - !err.message.includes( - 'The following paths are ignored by one of your .gitignore files' - ) - ) { - throw err; - } - } -} - export async function commitFiles({ branchName, files, @@ -738,13 +724,14 @@ export async function commitFiles({ await git.reset(ResetMode.HARD); await git.raw(['clean', '-fd']); await git.checkout(['-B', branchName, 'origin/' + config.currentBranch]); - const fileNames: string[] = []; const deletedFiles: string[] = []; + const addedModifiedFiles: string[] = []; const ignoredFiles: string[] = []; for (const file of files) { + let fileName = file.name; // istanbul ignore if - if (file.name === '|delete|') { - const fileName = file.contents as string; + if (fileName === '|delete|') { + fileName = file.contents as string; try { await git.rm([fileName]); deletedFiles.push(fileName); @@ -753,11 +740,10 @@ export async function commitFiles({ logger.warn({ err, fileName }, 'Cannot delete file'); ignoredFiles.push(fileName); } - } else if (await isDirectory(join(localDir, file.name))) { - fileNames.push(file.name); - await gitAdd(file.name); + } else if (await isDirectory(join(localDir, fileName))) { + logger.warn({ fileName }, 'Skipping directory commit'); + ignoredFiles.push(fileName); } else { - fileNames.push(file.name); let contents: Buffer; // istanbul ignore else if (typeof file.contents === 'string') { @@ -765,12 +751,23 @@ export async function commitFiles({ } else { contents = file.contents; } - await fs.outputFile(join(localDir, file.name), contents); + await fs.outputFile(join(localDir, fileName), contents); + try { + await git.add(fileName); + addedModifiedFiles.push(fileName); + } catch (err) /* istanbul ignore next */ { + if ( + !err.message.includes( + 'The following paths are ignored by one of your .gitignore files' + ) + ) { + throw err; + } + logger.debug({ fileName }, 'Cannot commit ignored file'); + ignoredFiles.push(file.name); + } } } - if (fileNames.length) { - await gitAdd(fileNames); - } const commitOptions: Options = {}; if (getNoVerify().includes(GitNoVerifyOption.Commit)) { @@ -794,7 +791,7 @@ export async function commitFiles({ const commit = commitRes?.commit || 'unknown'; if (!force && !(await hasDiff(`origin/${branchName}`))) { logger.debug( - { branchName, fileNames }, + { branchName, deletedFiles, addedModifiedFiles, ignoredFiles }, 'No file changes detected. Skipping commit' ); return null;