diff --git a/.eslintrc.js b/.eslintrc.js index 8ed5a54d7c5a6d34b71b2f0355cc5816ce86356b..71e038c4d7c9795d2d86b504ee4a3e28367f526c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -127,6 +127,12 @@ module.exports = { 'import/parsers': { '@typescript-eslint/parser': ['.ts'], }, + 'import/resolver': { + typescript: { + alwaysTryTypes: true, // always try to resolve types under `<root>@types` directory even it doesn't contain any source code, like `@types/unist` + project: 'tsconfig.lint.json', + }, + }, }, overrides: [ { diff --git a/lib/datasource/crate/index.spec.ts b/lib/datasource/crate/index.spec.ts index 995382b1c6f46af3c3154ab6e589c650e9e47e2f..47221e208a4f46650cf060d61b191a72599e7b8a 100644 --- a/lib/datasource/crate/index.spec.ts +++ b/lib/datasource/crate/index.spec.ts @@ -1,6 +1,6 @@ import delay from 'delay'; import fs from 'fs-extra'; -import _simpleGit from 'simple-git'; +import _simpleGit, { SimpleGit } from 'simple-git'; import { DirectoryResult, dir } from 'tmp-promise'; import { dirname, join } from 'upath'; import { getPkgReleases } from '..'; @@ -13,7 +13,7 @@ import { RegistryFlavor, RegistryInfo } from './types'; import { CrateDatasource } from '.'; jest.mock('simple-git'); -const simpleGit: any = _simpleGit; +const simpleGit: jest.Mock<Partial<SimpleGit>> = _simpleGit as never; const baseUrl = 'https://raw.githubusercontent.com/rust-lang/crates.io-index/master/'; diff --git a/lib/datasource/git-refs/index.spec.ts b/lib/datasource/git-refs/index.spec.ts index 52832e14611987d6b5c81f1248770fd1a80dd1ff..5161c17bc29a98e1d984424cde2022945c31c72d 100644 --- a/lib/datasource/git-refs/index.spec.ts +++ b/lib/datasource/git-refs/index.spec.ts @@ -1,10 +1,10 @@ -import _simpleGit from 'simple-git'; +import _simpleGit, { Response, SimpleGit } from 'simple-git'; import { getPkgReleases } from '..'; import { Fixtures } from '../../../test/fixtures'; import { GitRefsDatasource } from '.'; jest.mock('simple-git'); -const simpleGit: any = _simpleGit; +const simpleGit: jest.Mock<Partial<SimpleGit>> = _simpleGit as never; const depName = 'https://github.com/example/example.git'; @@ -17,7 +17,7 @@ describe('datasource/git-refs/index', () => { it('returns nil if response is wrong', async () => { simpleGit.mockReturnValue({ listRemote() { - return Promise.resolve(null); + return Promise.resolve(null) as Response<string>; }, }); const versions = await getPkgReleases({ @@ -29,7 +29,7 @@ describe('datasource/git-refs/index', () => { it('returns nil if response is malformed', async () => { simpleGit.mockReturnValue({ listRemote() { - return Promise.resolve('aabbccddeeff'); + return Promise.resolve('aabbccddeeff') as Response<string>; }, }); const { releases } = await getPkgReleases({ @@ -53,7 +53,7 @@ describe('datasource/git-refs/index', () => { it('returns versions filtered from tags', async () => { simpleGit.mockReturnValue({ listRemote() { - return Promise.resolve(lsRemote1); + return Promise.resolve(lsRemote1) as Response<string>; }, }); @@ -70,7 +70,7 @@ describe('datasource/git-refs/index', () => { it('returns null if not found', async () => { simpleGit.mockReturnValue({ listRemote() { - return Promise.resolve(lsRemote1); + return Promise.resolve(lsRemote1) as Response<string>; }, }); const digest = await new GitRefsDatasource().getDigest( @@ -82,7 +82,7 @@ describe('datasource/git-refs/index', () => { it('returns digest for tag', async () => { simpleGit.mockReturnValue({ listRemote() { - return Promise.resolve(lsRemote1); + return Promise.resolve(lsRemote1) as Response<string>; }, }); const digest = await new GitRefsDatasource().getDigest( @@ -94,7 +94,7 @@ describe('datasource/git-refs/index', () => { it('ignores refs/for/', async () => { simpleGit.mockReturnValue({ listRemote() { - return Promise.resolve(lsRemote1); + return Promise.resolve(lsRemote1) as Response<string>; }, }); const digest = await new GitRefsDatasource().getDigest( @@ -106,7 +106,7 @@ describe('datasource/git-refs/index', () => { it('returns digest for HEAD', async () => { simpleGit.mockReturnValue({ listRemote() { - return Promise.resolve(lsRemote1); + return Promise.resolve(lsRemote1) as Response<string>; }, }); const digest = await new GitRefsDatasource().getDigest( diff --git a/lib/datasource/git-tags/index.spec.ts b/lib/datasource/git-tags/index.spec.ts index d46b753443cdf7a887161be7ca68ee937626c9f4..0a22ca09b161f257485126e5fca790da5015d3e0 100644 --- a/lib/datasource/git-tags/index.spec.ts +++ b/lib/datasource/git-tags/index.spec.ts @@ -1,10 +1,10 @@ -import _simpleGit from 'simple-git'; +import _simpleGit, { Response, SimpleGit } from 'simple-git'; import { getPkgReleases } from '..'; import { Fixtures } from '../../../test/fixtures'; import { GitTagsDatasource } from '.'; jest.mock('simple-git'); -const simpleGit: any = _simpleGit; +const simpleGit: jest.Mock<Partial<SimpleGit>> = _simpleGit as never; const depName = 'https://github.com/example/example.git'; @@ -18,7 +18,7 @@ describe('datasource/git-tags/index', () => { it('returns nil if response is wrong', async () => { simpleGit.mockReturnValue({ listRemote() { - return Promise.resolve(null); + return Promise.resolve(null) as Response<string>; }, }); const versions = await getPkgReleases({ datasource, depName }); @@ -36,7 +36,7 @@ describe('datasource/git-tags/index', () => { it('returns versions filtered from tags', async () => { simpleGit.mockReturnValue({ listRemote() { - return Promise.resolve(lsRemote1); + return Promise.resolve(lsRemote1) as Response<string>; }, }); @@ -51,7 +51,7 @@ describe('datasource/git-tags/index', () => { it('returns null if not found', async () => { simpleGit.mockReturnValue({ listRemote() { - return Promise.resolve(lsRemote1); + return Promise.resolve(lsRemote1) as Response<string>; }, }); const digest = await datasourceInstance.getDigest( @@ -63,7 +63,7 @@ describe('datasource/git-tags/index', () => { it('returns digest for tag', async () => { simpleGit.mockReturnValue({ listRemote() { - return Promise.resolve(lsRemote1); + return Promise.resolve(lsRemote1) as Response<string>; }, }); const digest = await datasourceInstance.getDigest( @@ -75,7 +75,7 @@ describe('datasource/git-tags/index', () => { it('returns digest for HEAD', async () => { simpleGit.mockReturnValue({ listRemote() { - return Promise.resolve(lsRemote1); + return Promise.resolve(lsRemote1) as Response<string>; }, }); const digest = await datasourceInstance.getDigest( diff --git a/lib/manager/git-submodules/update.spec.ts b/lib/manager/git-submodules/update.spec.ts index 0e95061ea081d08aa031e00c51b349899daa51dd..b1d117d6c8d48e5e7ebbb6f440b4eab2da339625 100644 --- a/lib/manager/git-submodules/update.spec.ts +++ b/lib/manager/git-submodules/update.spec.ts @@ -1,4 +1,4 @@ -import _simpleGit from 'simple-git'; +import _simpleGit, { Response, SimpleGit } from 'simple-git'; import { DirectoryResult, dir } from 'tmp-promise'; import { join } from 'upath'; import { GlobalConfig } from '../../config/global'; @@ -7,7 +7,7 @@ import type { Upgrade } from '../types'; import updateDependency from './update'; jest.mock('simple-git'); -const simpleGit: any = _simpleGit; +const simpleGit: jest.Mock<Partial<SimpleGit>> = _simpleGit as never; describe('manager/git-submodules/update', () => { describe('updateDependency', () => { @@ -40,10 +40,10 @@ describe('manager/git-submodules/update', () => { it('returns content on update', async () => { simpleGit.mockReturnValue({ submoduleUpdate() { - return Promise.resolve(); + return Promise.resolve(null) as Response<string>; }, checkout() { - return Promise.resolve(); + return Promise.resolve(null) as Response<string>; }, }); const update = await updateDependency({ diff --git a/lib/manager/gradle-wrapper/artifacts-real.spec.ts b/lib/manager/gradle-wrapper/artifacts-real.spec.ts index 5d614b888be766c467ea64735743730218c76832..1a830d1ef2887b614add1d0dfa1ccc8381a1c369 100644 --- a/lib/manager/gradle-wrapper/artifacts-real.spec.ts +++ b/lib/manager/gradle-wrapper/artifacts-real.spec.ts @@ -1,4 +1,4 @@ -import { readFile, readFileSync } from 'fs-extra'; +import { readFile } from 'fs-extra'; import Git from 'simple-git'; import { resolve } from 'upath'; import * as httpMock from '../../../test/http-mock'; @@ -26,13 +26,13 @@ function readString(...paths: string[]): Promise<string> { return readFile(resolve(fixtures, ...paths), 'utf8'); } -function readBinSync(...paths: string[]): Buffer { - return readFileSync(resolve(fixtures, ...paths)); +async function readBin(...paths: string[]): Promise<Buffer> { + return await readFile(resolve(fixtures, ...paths)); } -function compareFile(file: string, path: string) { - expect(readBinSync(`./testFiles/${file}`)).toEqual( - readBinSync(`./${path}/${file}`) +async function compareFile(file: string, path: string): Promise<void> { + expect(await readBin(`./testFiles/${file}`)).toEqual( + await readBin(`./${path}/${file}`) ); } @@ -70,28 +70,30 @@ describe('manager/gradle-wrapper/artifacts-real', () => { }); expect(res).toEqual( - [ - 'gradle/wrapper/gradle-wrapper.properties', - 'gradle/wrapper/gradle-wrapper.jar', - 'gradlew', - 'gradlew.bat', - ].map((fileProjectPath) => ({ - file: { - contents: readBinSync(`./testFiles/${fileProjectPath}`), - path: fileProjectPath, - type: 'addition', - }, - })) + await Promise.all( + [ + 'gradle/wrapper/gradle-wrapper.properties', + 'gradle/wrapper/gradle-wrapper.jar', + 'gradlew', + 'gradlew.bat', + ].map(async (fileProjectPath) => ({ + file: { + contents: await readBin(`./testFiles/${fileProjectPath}`), + path: fileProjectPath, + type: 'addition', + }, + })) + ) ); - [ + for (const file of [ 'gradle/wrapper/gradle-wrapper.properties', 'gradle/wrapper/gradle-wrapper.jar', 'gradlew', 'gradlew.bat', - ].forEach((file) => { - compareFile(file, 'expectedFiles'); - }); + ]) { + await compareFile(file, 'expectedFiles'); + } }); it('updates from version', async () => { @@ -111,7 +113,10 @@ describe('manager/gradle-wrapper/artifacts-real', () => { expect(result).toHaveLength(1); expect(result[0].artifactError).toBeUndefined(); - compareFile('gradle/wrapper/gradle-wrapper.properties', 'expectedFiles'); + await compareFile( + 'gradle/wrapper/gradle-wrapper.properties', + 'expectedFiles' + ); }); it('up to date', async () => { @@ -133,9 +138,9 @@ describe('manager/gradle-wrapper/artifacts-real', () => { // 5.6.4 => 5.6.4 (updates execs) // 6.3 => (5.6.4) (downgrades execs) // looks like a bug in Gradle - ['gradle/wrapper/gradle-wrapper.properties'].forEach((file) => { - compareFile(file, 'testFiles-copy'); - }); + for (const file of ['gradle/wrapper/gradle-wrapper.properties']) { + await compareFile(file, 'testFiles-copy'); + } }); it('getRepoStatus fails', async () => { @@ -158,9 +163,9 @@ describe('manager/gradle-wrapper/artifacts-real', () => { expect(res[0].artifactError.stderr).toBe('failed'); // 5.6.4 => 5.6.4 (updates execs) - unexpected behavior (looks like a bug in Gradle) - ['gradle/wrapper/gradle-wrapper.properties'].forEach((file) => { - compareFile(file, 'testFiles-copy'); - }); + for (const file of ['gradle/wrapper/gradle-wrapper.properties']) { + await compareFile(file, 'testFiles-copy'); + } }); it('gradlew failed', async () => { @@ -186,9 +191,9 @@ describe('manager/gradle-wrapper/artifacts-real', () => { expect(res[0].artifactError.stderr).not.toBe(''); // 5.6.4 => 5.6.4 (updates execs) - unexpected behavior (looks like a bug in Gradle) - ['gradle/wrapper/gradle-wrapper.properties'].forEach((file) => { - compareFile(file, 'testFiles-copy'); - }); + for (const file of ['gradle/wrapper/gradle-wrapper.properties']) { + await compareFile(file, 'testFiles-copy'); + } }); it('gradlew not found', async () => { diff --git a/lib/util/git/config.ts b/lib/util/git/config.ts index 056189cfca23d9106e8476ab1e6206cce2bb1e45..cf13acf696b90587e00919ba75a8083da072d1d7 100644 --- a/lib/util/git/config.ts +++ b/lib/util/git/config.ts @@ -1,5 +1,5 @@ import is from '@sindresorhus/is'; -import { SimpleGitOptions } from 'simple-git'; +import type { SimpleGitOptions } from 'simple-git'; import type { GitNoVerifyOption } from './types'; let noVerify: GitNoVerifyOption[] = ['push', 'commit']; diff --git a/lib/util/git/index.spec.ts b/lib/util/git/index.spec.ts index de9da6eaa15603db410f3911bdfd68b18bee77f4..82168a7f0661bd1aef1f20f31f44c72771a20eec 100644 --- a/lib/util/git/index.spec.ts +++ b/lib/util/git/index.spec.ts @@ -1,6 +1,5 @@ import fs from 'fs-extra'; import Git from 'simple-git'; -import SimpleGit from 'simple-git/src/git'; import tmp from 'tmp-promise'; import { GlobalConfig } from '../../config/global'; import { CONFIG_VALIDATION } from '../../constants/error-messages'; @@ -8,6 +7,9 @@ import type { FileChange } from './types'; import * as git from '.'; import { setNoVerify } from '.'; +// Class is no longer exported +const SimpleGit = Git().constructor as { prototype: ReturnType<typeof Git> }; + describe('util/git/index', () => { jest.setTimeout(15000); diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index 54d8cbc62dc01f932687059919e89760330c9d56..c019a3c5b27ba286db26c8f7d566a3cf74acacef 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -1,12 +1,11 @@ import URL from 'url'; import fs from 'fs-extra'; -import type { +import simpleGit, { Options, + ResetMode, SimpleGit, TaskOptions, - ResetMode as _ResetMode, } from 'simple-git'; -import * as simpleGit from 'simple-git'; import upath from 'upath'; import { configFileNames } from '../../config/app-strings'; import { GlobalConfig } from '../../config/global'; @@ -41,9 +40,6 @@ import type { export { setNoVerify } from './config'; export { setPrivateKey } from './private-key'; -// TODO: fix upstream types https://github.com/steveukx/git-js/issues/704 -const ResetMode = (simpleGit.default as any).ResetMode as typeof _ResetMode; - function localName(branchName: string): string { return branchName.replace(regEx(/^origin\//), ''); } @@ -90,7 +86,7 @@ export const GIT_MINIMUM_VERSION = '2.33.0'; // git show-current export async function validateGitVersion(): Promise<boolean> { let version: string; - const globalGit = simpleGit.default(); + const globalGit = simpleGit(); try { const raw = await globalGit.raw(['--version']); for (const section of raw.split(/\s+/)) { @@ -153,7 +149,7 @@ export async function initRepo(args: StorageConfig): Promise<void> { config.additionalBranches = []; config.branchIsModified = {}; const { localDir } = GlobalConfig.get(); - git = simpleGit.default(localDir, simpleGitConfig()); + git = simpleGit(localDir, simpleGitConfig()); gitInitialized = false; await fetchBranchCommits(); } diff --git a/package.json b/package.json index 912c4a87d9a13fa99916fc607d4bf5865dbb06d8..fb4a6c619991504ebbc4afd8e22814e9bd6fd583 100644 --- a/package.json +++ b/package.json @@ -196,7 +196,7 @@ "semver-stable": "3.0.0", "semver-utils": "1.1.4", "shlex": "2.1.0", - "simple-git": "2.48.0", + "simple-git": "3.0.2", "slugify": "1.6.5", "traverse": "0.6.6", "tslib": "2.3.1", @@ -261,6 +261,7 @@ "eslint": "8.7.0", "eslint-config-prettier": "8.3.0", "eslint-formatter-gha": "1.4.1", + "eslint-import-resolver-typescript": "2.5.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-jest": "25.7.0", "eslint-plugin-promise": "6.0.0", diff --git a/yarn.lock b/yarn.lock index 561226da6d20b5ae8a4e869bd2103d4b33961624..461844628db0ab75654bafde125c0639a8638d6c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1889,7 +1889,6 @@ "@renovate/eslint-plugin@https://github.com/renovatebot/eslint-plugin#v0.0.4": version "0.0.4" - uid "0c444386e79d6145901212507521b8a0a48af000" resolved "https://github.com/renovatebot/eslint-plugin#0c444386e79d6145901212507521b8a0a48af000" "@renovatebot/pep440@2.0.0": @@ -3727,7 +3726,7 @@ dateformat@^3.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== @@ -4210,6 +4209,17 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" +eslint-import-resolver-typescript@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.5.0.tgz#07661966b272d14ba97f597b51e1a588f9722f0a" + integrity sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ== + dependencies: + debug "^4.3.1" + glob "^7.1.7" + is-glob "^4.0.1" + resolve "^1.20.0" + tsconfig-paths "^3.9.0" + eslint-module-utils@^2.7.2: version "2.7.2" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129" @@ -4809,7 +4819,7 @@ glob-parent@^6.0.1: dependencies: is-glob "^4.0.3" -glob@*, glob@7.2.0, glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@*, glob@7.2.0, glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -7225,77 +7235,77 @@ npm@^8.3.0: resolved "https://registry.yarnpkg.com/npm/-/npm-8.3.2.tgz#50149817779f10429959919dc7f5f85a2c85db69" integrity sha512-xZAC9GpWNOyiS1TtBqBy0HJpjIVI8zsVXEOEwcmgqYFtqOy7sXUL0ByOrkhfcGmf+akSXz3uOxLYB8aLlYivQQ== dependencies: - "@isaacs/string-locale-compare" "*" - "@npmcli/arborist" "*" - "@npmcli/ci-detect" "*" - "@npmcli/config" "*" - "@npmcli/map-workspaces" "*" - "@npmcli/package-json" "*" - "@npmcli/run-script" "*" - abbrev "*" - ansicolors "*" - ansistyles "*" - archy "*" - cacache "*" - chalk "*" - chownr "*" - cli-columns "*" - cli-table3 "*" - columnify "*" - fastest-levenshtein "*" - glob "*" - graceful-fs "*" - hosted-git-info "*" - ini "*" - init-package-json "*" - is-cidr "*" - json-parse-even-better-errors "*" - libnpmaccess "*" - libnpmdiff "*" - libnpmexec "*" - libnpmfund "*" - libnpmhook "*" - libnpmorg "*" - libnpmpack "*" - libnpmpublish "*" - libnpmsearch "*" - libnpmteam "*" - libnpmversion "*" - make-fetch-happen "*" - minipass "*" - minipass-pipeline "*" - mkdirp "*" - mkdirp-infer-owner "*" - ms "*" - node-gyp "*" - nopt "*" - npm-audit-report "*" - npm-install-checks "*" - npm-package-arg "*" - npm-pick-manifest "*" - npm-profile "*" - npm-registry-fetch "*" - npm-user-validate "*" - npmlog "*" - opener "*" - pacote "*" - parse-conflict-json "*" - proc-log "*" - qrcode-terminal "*" - read "*" - read-package-json "*" - read-package-json-fast "*" - readdir-scoped-modules "*" - rimraf "*" - semver "*" - ssri "*" - tar "*" - text-table "*" - tiny-relative-date "*" - treeverse "*" - validate-npm-package-name "*" - which "*" - write-file-atomic "*" + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/arborist" "^4.2.1" + "@npmcli/ci-detect" "^1.4.0" + "@npmcli/config" "^2.4.0" + "@npmcli/map-workspaces" "^2.0.0" + "@npmcli/package-json" "^1.0.1" + "@npmcli/run-script" "^2.0.0" + abbrev "~1.1.1" + ansicolors "~0.3.2" + ansistyles "~0.1.3" + archy "~1.0.0" + cacache "^15.3.0" + chalk "^4.1.2" + chownr "^2.0.0" + cli-columns "^4.0.0" + cli-table3 "^0.6.0" + columnify "~1.5.4" + fastest-levenshtein "^1.0.12" + glob "^7.2.0" + graceful-fs "^4.2.8" + hosted-git-info "^4.1.0" + ini "^2.0.0" + init-package-json "^2.0.5" + is-cidr "^4.0.2" + json-parse-even-better-errors "^2.3.1" + libnpmaccess "^5.0.0" + libnpmdiff "^3.0.0" + libnpmexec "^3.0.2" + libnpmfund "^2.0.2" + libnpmhook "^7.0.0" + libnpmorg "^3.0.0" + libnpmpack "^3.0.1" + libnpmpublish "^5.0.0" + libnpmsearch "^4.0.0" + libnpmteam "^3.0.0" + libnpmversion "^2.0.2" + make-fetch-happen "^9.1.0" + minipass "^3.1.6" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + mkdirp-infer-owner "^2.0.0" + ms "^2.1.2" + node-gyp "^8.4.1" + nopt "^5.0.0" + npm-audit-report "^2.1.5" + npm-install-checks "^4.0.0" + npm-package-arg "^8.1.5" + npm-pick-manifest "^6.1.1" + npm-profile "^5.0.3" + npm-registry-fetch "^11.0.0" + npm-user-validate "^1.0.1" + npmlog "^6.0.0" + opener "^1.5.2" + pacote "^12.0.2" + parse-conflict-json "^2.0.1" + proc-log "^1.0.0" + qrcode-terminal "^0.12.0" + read "~1.0.7" + read-package-json "^4.1.1" + read-package-json-fast "^2.0.3" + readdir-scoped-modules "^1.1.0" + rimraf "^3.0.2" + semver "^7.3.5" + ssri "^8.0.1" + tar "^6.1.11" + text-table "~0.2.0" + tiny-relative-date "^1.3.0" + treeverse "^1.0.4" + validate-npm-package-name "~3.0.0" + which "^2.0.2" + write-file-atomic "^4.0.0" npmlog@*, npmlog@^6.0.0: version "6.0.0" @@ -8441,14 +8451,14 @@ signale@^1.2.1: figures "^2.0.0" pkg-conf "^2.1.0" -simple-git@2.48.0: - version "2.48.0" - resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-2.48.0.tgz#87c262dba8f84d7b96bb3a713e9e34701c1f6e3b" - integrity sha512-z4qtrRuaAFJS4PUd0g+xy7aN4y+RvEt/QTJpR184lhJguBA1S/LsVlvE/CM95RsYMOFJG3NGGDjqFCzKU19S/A== +simple-git@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.0.2.tgz#717820d703ce6c6fb4ff024f35dca8f866d37cee" + integrity sha512-vKasQeuriwsY2/n8gjJyImD0vf7X690wYiDgSaWKJEtHDk6rob4s935GK9JCnq2NzuxfkstaUvRwrIXrvQbIGw== dependencies: "@kwsites/file-exists" "^1.1.1" "@kwsites/promise-deferred" "^1.1.1" - debug "^4.3.2" + debug "^4.3.3" sinon@^11.1.1: version "11.1.2" @@ -9013,7 +9023,7 @@ ts-node@10.4.0: make-error "^1.1.1" yn "3.1.1" -tsconfig-paths@^3.12.0: +tsconfig-paths@^3.12.0, tsconfig-paths@^3.9.0: version "3.12.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==