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==