From cc33d34ca827f2acc5a00d69f38328b26ab06939 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Mon, 20 Feb 2023 15:58:49 +0100
Subject: [PATCH] refactor: PackageFile types (#20498)

Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
---
 lib/modules/manager/batect/extract.spec.ts    |  2 +-
 lib/modules/manager/batect/extract.ts         | 10 +--
 lib/modules/manager/flux/extract.ts           |  5 +-
 lib/modules/manager/gitlabci/extract.ts       |  5 +-
 lib/modules/manager/gradle/extract.ts         | 12 ++--
 lib/modules/manager/index.ts                  |  3 +-
 .../maven/__snapshots__/extract.spec.ts.snap  |  9 +--
 lib/modules/manager/maven/extract.spec.ts     | 22 +++---
 lib/modules/manager/maven/extract.ts          | 26 +++----
 lib/modules/manager/maven/index.spec.ts       | 29 +++++---
 lib/modules/manager/npm/extract/index.ts      |  9 +--
 .../npm/extract/locked-versions.spec.ts       | 44 +++++++-----
 .../manager/npm/extract/locked-versions.ts    |  6 +-
 .../manager/npm/extract/monorepo.spec.ts      | 16 ++---
 lib/modules/manager/npm/extract/monorepo.ts   |  4 +-
 lib/modules/manager/npm/extract/pnpm.ts       |  4 +-
 lib/modules/manager/npm/post-update/index.ts  |  8 +--
 lib/modules/manager/npm/post-update/lerna.ts  |  8 ++-
 lib/modules/manager/npm/post-update/types.ts  |  4 +-
 lib/modules/manager/pub/extract.spec.ts       |  1 -
 lib/modules/manager/pub/extract.ts            |  1 -
 .../swift/__snapshots__/index.spec.ts.snap    |  1 -
 lib/modules/manager/swift/extract.ts          |  6 +-
 lib/modules/manager/types.ts                  |  8 ++-
 lib/util/cache/repository/types.ts            |  4 +-
 .../repository/dependency-dashboard.spec.ts   |  6 +-
 .../repository/dependency-dashboard.ts        |  4 +-
 .../repository/errors-warnings.spec.ts        | 14 ++--
 lib/workers/repository/errors-warnings.ts     | 10 +--
 .../repository/extract/manager-files.ts       |  8 +--
 .../onboarding/pr/config-description.spec.ts  |  4 +-
 .../onboarding/pr/config-description.ts       |  4 +-
 .../repository/onboarding/pr/index.spec.ts    |  4 +-
 lib/workers/repository/onboarding/pr/index.ts |  7 +-
 lib/workers/repository/package-files.ts       | 16 ++---
 lib/workers/repository/process/deprecated.ts  |  6 +-
 .../repository/process/extract-update.spec.ts |  4 +-
 .../repository/process/extract-update.ts      | 14 ++--
 lib/workers/repository/process/fetch.spec.ts  | 10 +--
 lib/workers/repository/process/fetch.ts       | 10 +--
 lib/workers/repository/process/index.ts       |  4 +-
 .../process/vulnerabilities.spec.ts           | 71 +++++++++++++------
 .../repository/process/vulnerabilities.ts     | 12 ++--
 .../repository/update/pr/body/index.spec.ts   |  4 +-
 lib/workers/types.ts                          |  6 +-
 45 files changed, 245 insertions(+), 220 deletions(-)

diff --git a/lib/modules/manager/batect/extract.spec.ts b/lib/modules/manager/batect/extract.spec.ts
index e36c85ece5..91f1aff458 100644
--- a/lib/modules/manager/batect/extract.spec.ts
+++ b/lib/modules/manager/batect/extract.spec.ts
@@ -78,7 +78,7 @@ describe('modules/manager/batect/extract', () => {
 
       // TODO: #7154
       expect(
-        result?.sort((a, b) => a.packageFile!.localeCompare(b.packageFile!))
+        result?.sort((a, b) => a.packageFile.localeCompare(b.packageFile))
       ).toEqual([
         {
           packageFile: `${fixturesDir}/valid/another-include.yml`,
diff --git a/lib/modules/manager/batect/extract.ts b/lib/modules/manager/batect/extract.ts
index 0aaf155894..81d668729f 100644
--- a/lib/modules/manager/batect/extract.ts
+++ b/lib/modules/manager/batect/extract.ts
@@ -7,11 +7,7 @@ import { GitTagsDatasource } from '../../datasource/git-tags';
 import { id as dockerVersioning } from '../../versioning/docker';
 import { id as semverVersioning } from '../../versioning/semver';
 import { getDep } from '../dockerfile/extract';
-import type {
-  ExtractConfig,
-  PackageDependency,
-  PackageFileContent,
-} from '../types';
+import type { ExtractConfig, PackageDependency, PackageFile } from '../types';
 import type {
   BatectConfig,
   BatectFileInclude,
@@ -153,10 +149,10 @@ export function extractPackageFile(
 export async function extractAllPackageFiles(
   config: ExtractConfig,
   packageFiles: string[]
-): Promise<PackageFileContent[] | null> {
+): Promise<PackageFile[] | null> {
   const filesToExamine = new Set<string>(packageFiles);
   const filesAlreadyExamined = new Set<string>();
-  const results: PackageFileContent[] = [];
+  const results: PackageFile[] = [];
 
   while (filesToExamine.size > 0) {
     const packageFile = filesToExamine.values().next().value;
diff --git a/lib/modules/manager/flux/extract.ts b/lib/modules/manager/flux/extract.ts
index 974920b9a5..91db3749a9 100644
--- a/lib/modules/manager/flux/extract.ts
+++ b/lib/modules/manager/flux/extract.ts
@@ -13,6 +13,7 @@ import { getDep } from '../dockerfile/extract';
 import type {
   ExtractConfig,
   PackageDependency,
+  PackageFile,
   PackageFileContent,
 } from '../types';
 import { isSystemManifest } from './common';
@@ -268,9 +269,9 @@ export function extractPackageFile(
 export async function extractAllPackageFiles(
   _config: ExtractConfig,
   packageFiles: string[]
-): Promise<PackageFileContent<FluxManagerData>[] | null> {
+): Promise<PackageFile<FluxManagerData>[] | null> {
   const manifests: FluxManifest[] = [];
-  const results: PackageFileContent<FluxManagerData>[] = [];
+  const results: PackageFile<FluxManagerData>[] = [];
 
   for (const file of packageFiles) {
     const content = await readLocalFile(file, 'utf8');
diff --git a/lib/modules/manager/gitlabci/extract.ts b/lib/modules/manager/gitlabci/extract.ts
index f108472d06..6601e91580 100644
--- a/lib/modules/manager/gitlabci/extract.ts
+++ b/lib/modules/manager/gitlabci/extract.ts
@@ -6,6 +6,7 @@ import { trimLeadingSlash } from '../../../util/url';
 import type {
   ExtractConfig,
   PackageDependency,
+  PackageFile,
   PackageFileContent,
 } from '../types';
 import { isGitlabIncludeLocal } from './common';
@@ -123,10 +124,10 @@ export function extractPackageFile(
 export async function extractAllPackageFiles(
   config: ExtractConfig,
   packageFiles: string[]
-): Promise<PackageFileContent[] | null> {
+): Promise<PackageFile[] | null> {
   const filesToExamine = [...packageFiles];
   const seen = new Set<string>(packageFiles);
-  const results: PackageFileContent[] = [];
+  const results: PackageFile[] = [];
 
   // extract all includes from the files
   while (filesToExamine.length > 0) {
diff --git a/lib/modules/manager/gradle/extract.ts b/lib/modules/manager/gradle/extract.ts
index 68937dad0c..31d3355426 100644
--- a/lib/modules/manager/gradle/extract.ts
+++ b/lib/modules/manager/gradle/extract.ts
@@ -2,11 +2,7 @@ import upath from 'upath';
 import { logger } from '../../../logger';
 import { getLocalFiles } from '../../../util/fs';
 import { MavenDatasource } from '../../datasource/maven';
-import type {
-  ExtractConfig,
-  PackageDependency,
-  PackageFileContent,
-} from '../types';
+import type { ExtractConfig, PackageDependency, PackageFile } from '../types';
 import { parseCatalog } from './extract/catalog';
 import {
   isGcvPropsFile,
@@ -52,10 +48,10 @@ function getRegistryUrlsForDep(
 export async function extractAllPackageFiles(
   config: ExtractConfig,
   packageFiles: string[]
-): Promise<PackageFileContent[] | null> {
+): Promise<PackageFile[] | null> {
   const extractedDeps: PackageDependency<GradleManagerData>[] = [];
   const varRegistry: VariableRegistry = {};
-  const packageFilesByName: Record<string, PackageFileContent> = {};
+  const packageFilesByName: Record<string, PackageFile> = {};
   const packageRegistries: PackageRegistry[] = [];
   const reorderedFiles = reorderFiles(packageFiles);
   const fileContents = await getLocalFiles(packageFiles);
@@ -131,7 +127,7 @@ export async function extractAllPackageFiles(
     const key = dep.managerData?.packageFile;
     // istanbul ignore else
     if (key) {
-      let pkgFile: PackageFileContent = packageFilesByName[key];
+      let pkgFile: PackageFile = packageFilesByName[key];
       // istanbul ignore if: won't happen if "apply from" processes only initially known files
       if (!pkgFile) {
         pkgFile = {
diff --git a/lib/modules/manager/index.ts b/lib/modules/manager/index.ts
index f51df899c3..4d7500b883 100644
--- a/lib/modules/manager/index.ts
+++ b/lib/modules/manager/index.ts
@@ -5,6 +5,7 @@ import type {
   ExtractConfig,
   GlobalManagerConfig,
   ManagerApi,
+  PackageFile,
   PackageFileContent,
   RangeConfig,
   Result,
@@ -40,7 +41,7 @@ export async function extractAllPackageFiles(
   manager: string,
   config: ExtractConfig,
   files: string[]
-): Promise<PackageFileContent[] | null> {
+): Promise<PackageFile[] | null> {
   if (!managers.has(manager)) {
     return null;
   }
diff --git a/lib/modules/manager/maven/__snapshots__/extract.spec.ts.snap b/lib/modules/manager/maven/__snapshots__/extract.spec.ts.snap
index f65c5d6a5a..2475744fd6 100644
--- a/lib/modules/manager/maven/__snapshots__/extract.spec.ts.snap
+++ b/lib/modules/manager/maven/__snapshots__/extract.spec.ts.snap
@@ -205,21 +205,22 @@ exports[`modules/manager/maven/extract extractDependencies extract dependencies
   "mavenProps": {
     "quuxGroup": {
       "fileReplacePosition": 631,
-      "packageFile": null,
+      "packageFile": "some-file",
       "val": "org.example",
     },
     "quuxId": {
       "fileReplacePosition": 667,
-      "packageFile": null,
+      "packageFile": "some-file",
       "val": "quux",
     },
     "quuxVersion": {
       "fileReplacePosition": 698,
-      "packageFile": null,
+      "packageFile": "some-file",
       "val": "1.2.3.4",
     },
   },
-  "packageFile": null,
+  "packageFile": "some-file",
   "packageFileVersion": "0.0.1",
+  "parent": "../pom.xml",
 }
 `;
diff --git a/lib/modules/manager/maven/extract.spec.ts b/lib/modules/manager/maven/extract.spec.ts
index 28b22bd0ad..84d256cf64 100644
--- a/lib/modules/manager/maven/extract.spec.ts
+++ b/lib/modules/manager/maven/extract.spec.ts
@@ -11,14 +11,14 @@ const complexSettingsContent = Fixtures.get(`complex.settings.xml`);
 describe('modules/manager/maven/extract', () => {
   describe('extractDependencies', () => {
     it('returns null for invalid XML', () => {
-      expect(extractPackage('')).toBeNull();
-      expect(extractPackage('invalid xml content')).toBeNull();
-      expect(extractPackage('<foobar></foobar>')).toBeNull();
-      expect(extractPackage('<project></project>')).toBeNull();
+      expect(extractPackage('', 'some-file')).toBeNull();
+      expect(extractPackage('invalid xml content', 'some-file')).toBeNull();
+      expect(extractPackage('<foobar></foobar>', 'some-file')).toBeNull();
+      expect(extractPackage('<project></project>', 'some-file')).toBeNull();
     });
 
     it('extract dependencies from any XML position', () => {
-      const res = extractPackage(simpleContent);
+      const res = extractPackage(simpleContent, 'some-file');
       expect(res).toMatchSnapshot({
         deps: [
           {
@@ -113,29 +113,29 @@ describe('modules/manager/maven/extract', () => {
         ],
         mavenProps: {
           quuxGroup: {
-            packageFile: null,
+            packageFile: 'some-file',
             val: 'org.example',
           },
           quuxId: {
-            packageFile: null,
+            packageFile: 'some-file',
             val: 'quux',
           },
           quuxVersion: {
-            packageFile: null,
+            packageFile: 'some-file',
             val: '1.2.3.4',
           },
         },
-        packageFile: null,
+        packageFile: 'some-file',
       });
     });
 
     it('tries minimum manifests', () => {
-      const res = extractPackage(minimumContent);
+      const res = extractPackage(minimumContent, 'some-file');
       expect(res).toEqual({
         datasource: 'maven',
         deps: [],
         mavenProps: {},
-        packageFile: null,
+        packageFile: 'some-file',
         packageFileVersion: '1',
       });
     });
diff --git a/lib/modules/manager/maven/extract.ts b/lib/modules/manager/maven/extract.ts
index 54d7427ff1..2bdcc0f350 100644
--- a/lib/modules/manager/maven/extract.ts
+++ b/lib/modules/manager/maven/extract.ts
@@ -6,11 +6,7 @@ import { readLocalFile } from '../../../util/fs';
 import { regEx } from '../../../util/regex';
 import { MavenDatasource } from '../../datasource/maven';
 import { MAVEN_REPO } from '../../datasource/maven/common';
-import type {
-  ExtractConfig,
-  PackageDependency,
-  PackageFileContent,
-} from '../types';
+import type { ExtractConfig, PackageDependency, PackageFile } from '../types';
 import type { MavenProp } from './types';
 
 export function parsePom(raw: string): XmlDocument | null {
@@ -249,15 +245,15 @@ function resolveParentFile(packageFile: string, parentPath: string): string {
   return upath.normalize(upath.join(dir, parentDir, parentFile));
 }
 
-interface MavenInterimPackageFile extends PackageFileContent {
+interface MavenInterimPackageFile extends PackageFile {
   mavenProps?: Record<string, any>;
   parent?: string;
 }
 
 export function extractPackage(
   rawContent: string,
-  packageFile: string | null = null
-): PackageFileContent<Record<string, any>> | null {
+  packageFile: string
+): PackageFile | null {
   if (!rawContent) {
     return null;
   }
@@ -373,16 +369,14 @@ export function parseSettings(raw: string): XmlDocument | null {
   return null;
 }
 
-export function resolveParents(
-  packages: PackageFileContent[]
-): PackageFileContent[] {
+export function resolveParents(packages: PackageFile[]): PackageFile[] {
   const packageFileNames: string[] = [];
   const extractedPackages: Record<string, MavenInterimPackageFile> = {};
   const extractedDeps: Record<string, PackageDependency[]> = {};
   const extractedProps: Record<string, MavenProp> = {};
   const registryUrls: Record<string, Set<string>> = {};
   packages.forEach((pkg) => {
-    const name = pkg.packageFile!;
+    const name = pkg.packageFile;
     packageFileNames.push(name);
     extractedPackages[name] = pkg;
     extractedDeps[name] = [];
@@ -460,9 +454,7 @@ export function resolveParents(
   return packageFiles;
 }
 
-function cleanResult(
-  packageFiles: MavenInterimPackageFile[]
-): PackageFileContent<Record<string, any>>[] {
+function cleanResult(packageFiles: MavenInterimPackageFile[]): PackageFile[] {
   packageFiles.forEach((packageFile) => {
     delete packageFile.mavenProps;
     delete packageFile.parent;
@@ -476,8 +468,8 @@ function cleanResult(
 export async function extractAllPackageFiles(
   _config: ExtractConfig,
   packageFiles: string[]
-): Promise<PackageFileContent[]> {
-  const packages: PackageFileContent[] = [];
+): Promise<PackageFile[]> {
+  const packages: PackageFile[] = [];
   const additionalRegistryUrls: string[] = [];
 
   for (const packageFile of packageFiles) {
diff --git a/lib/modules/manager/maven/index.spec.ts b/lib/modules/manager/maven/index.spec.ts
index f515099c90..91fd88621e 100644
--- a/lib/modules/manager/maven/index.spec.ts
+++ b/lib/modules/manager/maven/index.spec.ts
@@ -212,14 +212,16 @@ describe('modules/manager/maven/index', () => {
     it('should update an existing dependency', () => {
       const newValue = '9.9.9.9-final';
 
-      const { deps } = extractPackage(pomContent)!;
+      const { deps } = extractPackage(pomContent, 'some-file')!;
       const dep = selectDep(deps);
       const upgrade = { ...dep, newValue };
       const updatedContent = updateDependency({
         fileContent: pomContent,
         upgrade,
       })!;
-      const updatedDep = selectDep(extractPackage(updatedContent)!.deps);
+      const updatedDep = selectDep(
+        extractPackage(updatedContent, 'some-file')!.deps
+      );
 
       expect(updatedDep?.currentValue).toEqual(newValue);
     });
@@ -252,7 +254,7 @@ describe('modules/manager/maven/index', () => {
 
     it('should apply props recursively', () => {
       const [{ deps }] = resolveParents([
-        extractPackage(Fixtures.get('recursive_props.pom.xml'))!,
+        extractPackage(Fixtures.get('recursive_props.pom.xml'), 'some-file')!,
       ]);
       expect(deps).toMatchObject([
         {
@@ -264,7 +266,10 @@ describe('modules/manager/maven/index', () => {
 
     it('should apply props multiple times', () => {
       const [{ deps }] = resolveParents([
-        extractPackage(Fixtures.get('multiple_usages_props.pom.xml'))!,
+        extractPackage(
+          Fixtures.get('multiple_usages_props.pom.xml'),
+          'some-file'
+        )!,
       ]);
       expect(deps).toMatchObject([
         {
@@ -276,7 +281,10 @@ describe('modules/manager/maven/index', () => {
 
     it('should detect props infinitely recursing props', () => {
       const [{ deps }] = resolveParents([
-        extractPackage(Fixtures.get('infinite_recursive_props.pom.xml'))!,
+        extractPackage(
+          Fixtures.get('infinite_recursive_props.pom.xml'),
+          'some-file'
+        )!,
       ]);
       expect(deps).toMatchObject([
         {
@@ -317,7 +325,7 @@ describe('modules/manager/maven/index', () => {
     it('should not touch content if new and old versions are equal', () => {
       const newValue = '1.2.3';
 
-      const { deps } = extractPackage(pomContent)!;
+      const { deps } = extractPackage(pomContent, 'some-file')!;
       const dep = selectDep(deps);
       const upgrade = { ...dep, newValue };
       const updatedContent = updateDependency({
@@ -388,7 +396,7 @@ describe('modules/manager/maven/index', () => {
       const currentValue = '1.2.2';
       const newValue = '1.2.4';
 
-      const { deps } = extractPackage(pomContent)!;
+      const { deps } = extractPackage(pomContent, 'some-file')!;
       const dep = selectDep(deps);
       const upgrade = { ...dep, currentValue, newValue };
       const updatedContent = updateDependency({
@@ -403,11 +411,12 @@ describe('modules/manager/maven/index', () => {
       const newValue = '[1.2.3]';
       const select = (depSet: PackageFileContent) =>
         selectDep(depSet.deps, 'org.example:hard-range');
-      const oldContent = extractPackage(pomContent);
+      const oldContent = extractPackage(pomContent, 'some-file');
       const dep = select(oldContent!);
       const upgrade = { ...dep, newValue };
       const newContent = extractPackage(
-        updateDependency({ fileContent: pomContent, upgrade })!
+        updateDependency({ fileContent: pomContent, upgrade })!,
+        'some-file'
       );
       const newDep = select(newContent!);
       expect(newDep?.currentValue).toEqual(newValue);
@@ -417,7 +426,7 @@ describe('modules/manager/maven/index', () => {
       const newValue = '[1.0.0]';
       const select = (depSet: PackageFileContent) =>
         depSet?.deps ? selectDep(depSet.deps, 'org.example:hard-range') : null;
-      const oldContent = extractPackage(pomContent);
+      const oldContent = extractPackage(pomContent, 'some-file');
       const dep = select(oldContent!);
       expect(dep).not.toBeNull();
       const upgrade = { ...dep, newValue };
diff --git a/lib/modules/manager/npm/extract/index.ts b/lib/modules/manager/npm/extract/index.ts
index 25c8f3317b..05803936be 100644
--- a/lib/modules/manager/npm/extract/index.ts
+++ b/lib/modules/manager/npm/extract/index.ts
@@ -12,6 +12,7 @@ import { api, isValid, isVersion } from '../../../versioning/npm';
 import type {
   ExtractConfig,
   PackageDependency,
+  PackageFile,
   PackageFileContent,
 } from '../../types';
 import type { NpmLockFiles, NpmManagerData } from '../types';
@@ -502,7 +503,7 @@ export async function extractPackageFile(
 }
 
 export async function postExtract(
-  packageFiles: PackageFileContent<NpmManagerData>[]
+  packageFiles: PackageFile<NpmManagerData>[]
 ): Promise<void> {
   await detectMonorepos(packageFiles);
   await getLockedVersions(packageFiles);
@@ -511,8 +512,8 @@ export async function postExtract(
 export async function extractAllPackageFiles(
   config: ExtractConfig,
   packageFiles: string[]
-): Promise<PackageFileContent<NpmManagerData>[]> {
-  const npmFiles: PackageFileContent<NpmManagerData>[] = [];
+): Promise<PackageFile<NpmManagerData>[]> {
+  const npmFiles: PackageFile<NpmManagerData>[] = [];
   for (const packageFile of packageFiles) {
     const content = await readLocalFile(packageFile, 'utf8');
     // istanbul ignore else
@@ -520,8 +521,8 @@ export async function extractAllPackageFiles(
       const deps = await extractPackageFile(content, packageFile, config);
       if (deps) {
         npmFiles.push({
-          packageFile,
           ...deps,
+          packageFile,
         });
       }
     } else {
diff --git a/lib/modules/manager/npm/extract/locked-versions.spec.ts b/lib/modules/manager/npm/extract/locked-versions.spec.ts
index d812d13b5b..8a9ff6b1f6 100644
--- a/lib/modules/manager/npm/extract/locked-versions.spec.ts
+++ b/lib/modules/manager/npm/extract/locked-versions.spec.ts
@@ -1,4 +1,4 @@
-import type { PackageFileContent } from '../../types';
+import type { PackageFile } from '../../types';
 import type { NpmManagerData } from '../types';
 import { getLockedVersions } from './locked-versions';
 
@@ -14,7 +14,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
   describe('.getLockedVersions()', () => {
     function getPackageFiles(
       yarnVersion: string
-    ): PackageFileContent<NpmManagerData>[] {
+    ): PackageFile<NpmManagerData>[] {
       return [
         {
           managerData: { npmLock: 'package-lock.json', yarnLock: 'yarn.lock' },
@@ -33,6 +33,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
               currentValue: `${yarnVersion}`,
             },
           ],
+          packageFile: 'some-file',
         },
       ];
     }
@@ -74,6 +75,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             },
           ],
           lockFiles: ['yarn.lock'],
+          packageFile: 'some-file',
           managerData: { npmLock: 'package-lock.json', yarnLock: 'yarn.lock' },
         },
       ]);
@@ -120,6 +122,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             },
           ],
           lockFiles: ['yarn.lock'],
+          packageFile: 'some-file',
           managerData: { npmLock: 'package-lock.json', yarnLock: 'yarn.lock' },
         },
       ]);
@@ -166,6 +169,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             },
           ],
           lockFiles: ['yarn.lock'],
+          packageFile: 'some-file',
           managerData: { npmLock: 'package-lock.json', yarnLock: 'yarn.lock' },
         },
       ]);
@@ -204,6 +208,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             },
           ],
           lockFiles: ['yarn.lock'],
+          packageFile: 'some-file',
           managerData: { npmLock: 'package-lock.json', yarnLock: 'yarn.lock' },
         },
       ]);
@@ -243,6 +248,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             },
           ],
           lockFiles: ['yarn.lock'],
+          packageFile: 'some-file',
           managerData: { npmLock: 'package-lock.json', yarnLock: 'yarn.lock' },
         },
       ]);
@@ -261,6 +267,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             { depName: 'a', currentValue: '1.0.0' },
             { depName: 'b', currentValue: '2.0.0' },
           ],
+          packageFile: 'some-file',
         },
       ];
       await getLockedVersions(packageFiles);
@@ -273,6 +280,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
           ],
           lockFiles: ['package-lock.json'],
           managerData: { npmLock: 'package-lock.json' },
+          packageFile: 'some-file',
         },
       ]);
     });
@@ -292,6 +300,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             { depName: 'a', currentValue: '1.0.0' },
             { depName: 'b', currentValue: '2.0.0' },
           ],
+          packageFile: 'some-file',
         },
       ];
       await getLockedVersions(packageFiles);
@@ -304,6 +313,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             { currentValue: '1.0.0', depName: 'a', lockedVersion: '1.0.0' },
             { currentValue: '2.0.0', depName: 'b', lockedVersion: '2.0.0' },
           ],
+          packageFile: 'some-file',
           lockFiles: ['package-lock.json'],
           managerData: {
             npmLock: 'package-lock.json',
@@ -329,6 +339,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             { depName: 'a', currentValue: '1.0.0' },
             { depName: 'b', currentValue: '2.0.0' },
           ],
+          packageFile: 'some-file',
         },
       ];
       await getLockedVersions(packageFiles);
@@ -342,9 +353,8 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             { currentValue: '2.0.0', depName: 'b', lockedVersion: '2.0.0' },
           ],
           lockFiles: ['package-lock.json'],
-          managerData: {
-            npmLock: 'package-lock.json',
-          },
+          managerData: { npmLock: 'package-lock.json' },
+          packageFile: 'some-file',
         },
       ]);
     });
@@ -366,6 +376,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             { depName: 'a', currentValue: '1.0.0' },
             { depName: 'b', currentValue: '2.0.0' },
           ],
+          packageFile: 'some-file',
         },
       ];
       await getLockedVersions(packageFiles);
@@ -379,9 +390,8 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             { currentValue: '2.0.0', depName: 'b', lockedVersion: '2.0.0' },
           ],
           lockFiles: ['package-lock.json'],
-          managerData: {
-            npmLock: 'package-lock.json',
-          },
+          managerData: { npmLock: 'package-lock.json' },
+          packageFile: 'some-file',
         },
       ]);
     });
@@ -413,6 +423,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
               currentValue: '2.0.0',
             },
           ],
+          packageFile: 'some-file',
         },
       ];
       await getLockedVersions(packageFiles);
@@ -424,9 +435,8 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             { currentValue: '2.0.0', depName: 'b', lockedVersion: '2.0.0' },
           ],
           lockFiles: ['package-lock.json'],
-          managerData: {
-            npmLock: 'package-lock.json',
-          },
+          managerData: { npmLock: 'package-lock.json' },
+          packageFile: 'some-file',
         },
       ]);
     });
@@ -458,6 +468,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
               currentValue: '2.0.0',
             },
           ],
+          packageFile: 'some-file',
         },
       ];
       await getLockedVersions(packageFiles);
@@ -469,9 +480,8 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             { currentValue: '2.0.0', depName: 'b', lockedVersion: '2.0.0' },
           ],
           lockFiles: ['package-lock.json'],
-          managerData: {
-            npmLock: 'package-lock.json',
-          },
+          managerData: { npmLock: 'package-lock.json' },
+          packageFile: 'some-file',
         },
       ]);
     });
@@ -486,6 +496,7 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             { depName: 'a', currentValue: '1.0.0' },
             { depName: 'b', currentValue: '2.0.0' },
           ],
+          packageFile: 'some-file',
         },
       ];
       await getLockedVersions(packageFiles);
@@ -496,9 +507,8 @@ describe('modules/manager/npm/extract/locked-versions', () => {
             { currentValue: '2.0.0', depName: 'b' },
           ],
           lockFiles: ['pnpm-lock.yaml'],
-          managerData: {
-            pnpmShrinkwrap: 'pnpm-lock.yaml',
-          },
+          managerData: { pnpmShrinkwrap: 'pnpm-lock.yaml' },
+          packageFile: 'some-file',
         },
       ]);
     });
diff --git a/lib/modules/manager/npm/extract/locked-versions.ts b/lib/modules/manager/npm/extract/locked-versions.ts
index ea79021ac4..6c3fa3e7a4 100644
--- a/lib/modules/manager/npm/extract/locked-versions.ts
+++ b/lib/modules/manager/npm/extract/locked-versions.ts
@@ -1,13 +1,13 @@
 import semver from 'semver';
 import { logger } from '../../../../logger';
-import type { PackageFileContent } from '../../types';
+import type { PackageFile } from '../../types';
 import type { NpmManagerData } from '../types';
 import { getNpmLock } from './npm';
 import type { LockFile } from './types';
 import { getYarnLock } from './yarn';
 
 export async function getLockedVersions(
-  packageFiles: PackageFileContent<NpmManagerData>[]
+  packageFiles: PackageFile<NpmManagerData>[]
 ): Promise<void> {
   const lockFileCache: Record<string, LockFile> = {};
   logger.debug('Finding locked versions');
@@ -50,8 +50,6 @@ export async function getLockedVersions(
         }
       }
     } else if (npmLock) {
-      // TODO: types (#7154)
-      // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
       logger.debug(`Found ${npmLock} for ${packageFile.packageFile}`);
       lockFiles.push(npmLock);
       if (!lockFileCache[npmLock]) {
diff --git a/lib/modules/manager/npm/extract/monorepo.spec.ts b/lib/modules/manager/npm/extract/monorepo.spec.ts
index 8ee61557e2..974906f52c 100644
--- a/lib/modules/manager/npm/extract/monorepo.spec.ts
+++ b/lib/modules/manager/npm/extract/monorepo.spec.ts
@@ -1,4 +1,4 @@
-import type { PackageFileContent } from '../../types';
+import type { PackageFile } from '../../types';
 import { detectMonorepos } from './monorepo';
 
 jest.mock('./pnpm');
@@ -6,7 +6,7 @@ jest.mock('./pnpm');
 describe('modules/manager/npm/extract/monorepo', () => {
   describe('.extractPackageFile()', () => {
     it('handles no monorepo', async () => {
-      const packageFiles: Partial<PackageFileContent>[] = [
+      const packageFiles: Partial<PackageFile>[] = [
         {
           packageFile: 'package.json',
           deps: [],
@@ -17,7 +17,7 @@ describe('modules/manager/npm/extract/monorepo', () => {
     });
 
     it('uses lerna package settings', async () => {
-      const packageFiles: Partial<PackageFileContent>[] = [
+      const packageFiles: Partial<PackageFile>[] = [
         {
           packageFile: 'package.json',
           managerData: {
@@ -70,7 +70,7 @@ describe('modules/manager/npm/extract/monorepo', () => {
     });
 
     it('updates internal packages', async () => {
-      const packageFiles: Partial<PackageFileContent>[] = [
+      const packageFiles: Partial<PackageFile>[] = [
         {
           packageFile: 'package.json',
           managerData: {
@@ -123,7 +123,7 @@ describe('modules/manager/npm/extract/monorepo', () => {
     });
 
     it('uses yarn workspaces package settings with lerna', async () => {
-      const packageFiles: Partial<PackageFileContent>[] = [
+      const packageFiles: Partial<PackageFile>[] = [
         {
           packageFile: 'package.json',
           managerData: {
@@ -148,7 +148,7 @@ describe('modules/manager/npm/extract/monorepo', () => {
     });
 
     it('uses yarn workspaces package settings without lerna', async () => {
-      const packageFiles: Partial<PackageFileContent>[] = [
+      const packageFiles: Partial<PackageFile>[] = [
         {
           packageFile: 'package.json',
           npmrc: '@org:registry=//registry.some.org\n',
@@ -172,7 +172,7 @@ describe('modules/manager/npm/extract/monorepo', () => {
     });
 
     it('uses yarn workspaces package settings with extractedConstraints', async () => {
-      const packageFiles: Partial<PackageFileContent>[] = [
+      const packageFiles: Partial<PackageFile>[] = [
         {
           packageFile: 'package.json',
           skipInstalls: true, // coverage
@@ -216,7 +216,7 @@ describe('modules/manager/npm/extract/monorepo', () => {
     });
 
     it('uses yarnZeroInstall and skipInstalls from yarn workspaces package settings', async () => {
-      const packageFiles: Partial<PackageFileContent>[] = [
+      const packageFiles: Partial<PackageFile>[] = [
         {
           packageFile: 'package.json',
           managerData: {
diff --git a/lib/modules/manager/npm/extract/monorepo.ts b/lib/modules/manager/npm/extract/monorepo.ts
index e30e65096b..ea5db558a1 100644
--- a/lib/modules/manager/npm/extract/monorepo.ts
+++ b/lib/modules/manager/npm/extract/monorepo.ts
@@ -1,13 +1,13 @@
 import is from '@sindresorhus/is';
 import { logger } from '../../../../logger';
 import { getParentDir, getSiblingFileName } from '../../../../util/fs';
-import type { PackageFileContent } from '../../types';
+import type { PackageFile } from '../../types';
 import type { NpmManagerData } from '../types';
 import { detectPnpmWorkspaces } from './pnpm';
 import { matchesAnyPattern } from './utils';
 
 export async function detectMonorepos(
-  packageFiles: Partial<PackageFileContent<NpmManagerData>>[]
+  packageFiles: Partial<PackageFile<NpmManagerData>>[]
 ): Promise<void> {
   await detectPnpmWorkspaces(packageFiles);
   logger.debug('Detecting Lerna and Yarn Workspaces');
diff --git a/lib/modules/manager/npm/extract/pnpm.ts b/lib/modules/manager/npm/extract/pnpm.ts
index fb681e4977..1f566d1e8b 100644
--- a/lib/modules/manager/npm/extract/pnpm.ts
+++ b/lib/modules/manager/npm/extract/pnpm.ts
@@ -10,7 +10,7 @@ import {
   localPathExists,
   readLocalFile,
 } from '../../../../util/fs';
-import type { PackageFileContent } from '../../types';
+import type { PackageFile } from '../../types';
 import type { NpmManagerData } from '../types';
 import type { PnpmWorkspaceFile } from './types';
 
@@ -75,7 +75,7 @@ export async function findPnpmWorkspace(
 }
 
 export async function detectPnpmWorkspaces(
-  packageFiles: Partial<PackageFileContent<NpmManagerData>>[]
+  packageFiles: Partial<PackageFile<NpmManagerData>>[]
 ): Promise<void> {
   logger.debug(`Detecting pnpm Workspaces`);
   const packagePathCache = new Map<string, string[] | null>();
diff --git a/lib/modules/manager/npm/post-update/index.ts b/lib/modules/manager/npm/post-update/index.ts
index 868caca398..0e065f7b16 100644
--- a/lib/modules/manager/npm/post-update/index.ts
+++ b/lib/modules/manager/npm/post-update/index.ts
@@ -23,11 +23,7 @@ import * as hostRules from '../../../../util/host-rules';
 import { newlineRegex, regEx } from '../../../../util/regex';
 import { ensureTrailingSlash } from '../../../../util/url';
 import { NpmDatasource } from '../../../datasource/npm';
-import type {
-  PackageFileContent,
-  PostUpdateConfig,
-  Upgrade,
-} from '../../types';
+import type { PackageFile, PostUpdateConfig, Upgrade } from '../../types';
 import { getZeroInstallPaths } from '../extract/yarn';
 import type { NpmDepType, NpmManagerData } from '../types';
 import { composeLockFile, parseLockFile } from '../utils';
@@ -91,7 +87,7 @@ export function determineLockFileDirs(
 
   function getPackageFile(
     fileName: string
-  ): Partial<PackageFileContent<NpmManagerData>> {
+  ): Partial<PackageFile<NpmManagerData>> {
     logger.trace('Looking for packageFile: ' + fileName);
 
     for (const packageFile of packageFiles.npm!) {
diff --git a/lib/modules/manager/npm/post-update/lerna.ts b/lib/modules/manager/npm/post-update/lerna.ts
index 35ea5cfbf0..72db5a57ad 100644
--- a/lib/modules/manager/npm/post-update/lerna.ts
+++ b/lib/modules/manager/npm/post-update/lerna.ts
@@ -10,14 +10,18 @@ import type {
   ExtraEnv,
   ToolConstraint,
 } from '../../../../util/exec/types';
-import type { PackageFileContent, PostUpdateConfig } from '../../types';
+import type {
+  PackageFile,
+  PackageFileContent,
+  PostUpdateConfig,
+} from '../../types';
 import type { NpmManagerData } from '../types';
 import { getNodeToolConstraint } from './node-version';
 import type { GenerateLockFileResult } from './types';
 
 // Exported for testability
 export function getLernaVersion(
-  lernaPackageFile: Partial<PackageFileContent<NpmManagerData>>
+  lernaPackageFile: Partial<PackageFile<NpmManagerData>>
 ): string | null {
   const lernaDep = lernaPackageFile.deps?.find((d) => d.depName === 'lerna');
   if (!lernaDep?.currentValue || !semver.validRange(lernaDep.currentValue)) {
diff --git a/lib/modules/manager/npm/post-update/types.ts b/lib/modules/manager/npm/post-update/types.ts
index e988fd0708..56b50b78cc 100644
--- a/lib/modules/manager/npm/post-update/types.ts
+++ b/lib/modules/manager/npm/post-update/types.ts
@@ -1,5 +1,5 @@
 import type { FileChange } from '../../../../util/git/types';
-import type { PackageFileContent } from '../../types';
+import type { PackageFile } from '../../types';
 import type { NpmManagerData } from '../types';
 
 export interface DetermineLockFileDirsResult {
@@ -10,7 +10,7 @@ export interface DetermineLockFileDirsResult {
 }
 
 export interface AdditionalPackageFiles {
-  npm?: Partial<PackageFileContent<NpmManagerData>>[];
+  npm?: Partial<PackageFile<NpmManagerData>>[];
 }
 
 export interface ArtifactError {
diff --git a/lib/modules/manager/pub/extract.spec.ts b/lib/modules/manager/pub/extract.spec.ts
index 4d0b5eec6b..47e76e4d68 100644
--- a/lib/modules/manager/pub/extract.spec.ts
+++ b/lib/modules/manager/pub/extract.spec.ts
@@ -39,7 +39,6 @@ describe('modules/manager/pub/extract', () => {
             depType: 'dev_dependencies',
           },
         ],
-        packageFile: 'pubspec.yaml',
       });
     });
   });
diff --git a/lib/modules/manager/pub/extract.ts b/lib/modules/manager/pub/extract.ts
index 108704a755..6926ae578f 100644
--- a/lib/modules/manager/pub/extract.ts
+++ b/lib/modules/manager/pub/extract.ts
@@ -53,7 +53,6 @@ export function extractPackageFile(
 
     if (deps.length) {
       return {
-        packageFile,
         datasource: DartDatasource.id,
         deps,
       };
diff --git a/lib/modules/manager/swift/__snapshots__/index.spec.ts.snap b/lib/modules/manager/swift/__snapshots__/index.spec.ts.snap
index 45441e342e..0df2720a70 100644
--- a/lib/modules/manager/swift/__snapshots__/index.spec.ts.snap
+++ b/lib/modules/manager/swift/__snapshots__/index.spec.ts.snap
@@ -61,6 +61,5 @@ exports[`modules/manager/swift/index extractPackageFile() parses multiple packag
       "packageName": "https://github.com/apple/swift-package-manager.git",
     },
   ],
-  "packageFile": null,
 }
 `;
diff --git a/lib/modules/manager/swift/extract.ts b/lib/modules/manager/swift/extract.ts
index d6bb1c2384..a969fd99f9 100644
--- a/lib/modules/manager/swift/extract.ts
+++ b/lib/modules/manager/swift/extract.ts
@@ -136,17 +136,13 @@ function getDepName(url: string | null): string | null {
   }
 }
 
-export function extractPackageFile(
-  content: string,
-  packageFile: string | null = null
-): PackageFileContent | null {
+export function extractPackageFile(content: string): PackageFileContent | null {
   if (!content) {
     return null;
   }
 
   const deps: PackageDependency[] = [];
   const result: PackageFileContent = {
-    packageFile,
     deps,
   };
 
diff --git a/lib/modules/manager/types.ts b/lib/modules/manager/types.ts
index 27186b7cd4..98ea62bedb 100644
--- a/lib/modules/manager/types.ts
+++ b/lib/modules/manager/types.ts
@@ -62,13 +62,17 @@ export interface PackageFileContent<T = Record<string, any>>
   deps: PackageDependency[];
   lockFiles?: string[];
   npmrc?: string;
-  packageFile?: string | null;
   packageFileVersion?: string;
   skipInstalls?: boolean;
   matchStrings?: string[];
   matchStringsStrategy?: MatchStringsStrategy;
 }
 
+export interface PackageFile<T = Record<string, any>>
+  extends PackageFileContent<T> {
+  packageFile: string;
+}
+
 export interface Package<T> extends ManagerData<T> {
   currentValue?: string | null;
   currentDigest?: string;
@@ -241,7 +245,7 @@ export interface ManagerApi extends ModuleApi {
   extractAllPackageFiles?(
     config: ExtractConfig,
     files: string[]
-  ): Result<PackageFileContent[] | null>;
+  ): Result<PackageFile[] | null>;
 
   extractPackageFile?(
     content: string,
diff --git a/lib/util/cache/repository/types.ts b/lib/util/cache/repository/types.ts
index 221b9bc9ab..de6af74256 100644
--- a/lib/util/cache/repository/types.ts
+++ b/lib/util/cache/repository/types.ts
@@ -2,14 +2,14 @@ import type {
   RepositoryCacheConfig,
   RepositoryCacheType,
 } from '../../../config/types';
-import type { PackageFileContent } from '../../../modules/manager/types';
+import type { PackageFile } from '../../../modules/manager/types';
 import type { RepoInitConfig } from '../../../workers/repository/init/types';
 
 export interface BaseBranchCache {
   sha: string; // branch commit sha
   configHash: string; // object hash of config
   extractionFingerprints: Record<string, string | undefined>; // matching manager fingerprints
-  packageFiles: Record<string, PackageFileContent[]>; // extract result
+  packageFiles: Record<string, PackageFile[]>; // extract result
 }
 
 export interface BranchUpgradeCache {
diff --git a/lib/workers/repository/dependency-dashboard.spec.ts b/lib/workers/repository/dependency-dashboard.spec.ts
index 8d4aa86989..6170c3dcdc 100644
--- a/lib/workers/repository/dependency-dashboard.spec.ts
+++ b/lib/workers/repository/dependency-dashboard.spec.ts
@@ -11,7 +11,7 @@ import {
 import { GlobalConfig } from '../../config/global';
 import type {
   PackageDependency,
-  PackageFileContent,
+  PackageFile,
 } from '../../modules/manager/types';
 import type { Platform } from '../../modules/platform';
 import {
@@ -51,7 +51,7 @@ function genRandString(length: number): string {
 function genRandPackageFile(
   depsNum: number,
   depNameLen: number
-): Record<string, PackageFileContent[]> {
+): Record<string, PackageFile[]> {
   const deps: PackageDependency[] = [];
   for (let i = 0; i < depsNum; i++) {
     deps.push({
@@ -906,7 +906,7 @@ describe('workers/repository/dependency-dashboard', () => {
               warnings: [{ message: 'dependency-2', topic: '' }],
             },
           ];
-          const packageFiles: Record<string, PackageFileContent[]> = {
+          const packageFiles: Record<string, PackageFile[]> = {
             npm: [{ packageFile: 'package.json', deps: dep }],
           };
           await dependencyDashboard.ensureDependencyDashboard(
diff --git a/lib/workers/repository/dependency-dashboard.ts b/lib/workers/repository/dependency-dashboard.ts
index 910dfc8b80..ac00cdd0fe 100644
--- a/lib/workers/repository/dependency-dashboard.ts
+++ b/lib/workers/repository/dependency-dashboard.ts
@@ -3,7 +3,7 @@ import { nameFromLevel } from 'bunyan';
 import { GlobalConfig } from '../../config/global';
 import type { RenovateConfig } from '../../config/types';
 import { getProblems, logger } from '../../logger';
-import type { PackageFileContent } from '../../modules/manager/types';
+import type { PackageFile } from '../../modules/manager/types';
 import { platform } from '../../modules/platform';
 import { GitHubMaxPrBodyLen } from '../../modules/platform/github';
 import { regEx } from '../../util/regex';
@@ -165,7 +165,7 @@ function appendRepoProblems(config: RenovateConfig, issueBody: string): string {
 export async function ensureDependencyDashboard(
   config: SelectAllConfig,
   allBranches: BranchConfig[],
-  packageFiles: Record<string, PackageFileContent[]> = {}
+  packageFiles: Record<string, PackageFile[]> = {}
 ): Promise<void> {
   // legacy/migrated issue
   const reuseTitle = 'Update Dependencies (Renovate Bot)';
diff --git a/lib/workers/repository/errors-warnings.spec.ts b/lib/workers/repository/errors-warnings.spec.ts
index a342baa805..8fbb5ba784 100644
--- a/lib/workers/repository/errors-warnings.spec.ts
+++ b/lib/workers/repository/errors-warnings.spec.ts
@@ -1,5 +1,5 @@
 import { RenovateConfig, getConfig } from '../../../test/util';
-import type { PackageFileContent } from '../../modules/manager/types';
+import type { PackageFile } from '../../modules/manager/types';
 import {
   getDepWarningsDashboard,
   getDepWarningsOnboardingPR,
@@ -52,7 +52,7 @@ describe('workers/repository/errors-warnings', () => {
 
     it('returns 2 pr warnings text dependencyDashboard true', () => {
       const dependencyDashboard = true;
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             packageFile: 'package.json',
@@ -99,7 +99,7 @@ describe('workers/repository/errors-warnings', () => {
 
     it('returns 2 pr warnings text dependencyDashboard false', () => {
       const dependencyDashboard = false;
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             packageFile: 'package.json',
@@ -145,7 +145,7 @@ describe('workers/repository/errors-warnings', () => {
     });
 
     it('PR warning returns empty string', () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {};
+      const packageFiles: Record<string, PackageFile[]> = {};
       const res = getDepWarningsPR(packageFiles);
       expect(res).toBe('');
     });
@@ -157,7 +157,7 @@ describe('workers/repository/errors-warnings', () => {
     });
 
     it('returns dependency dashboard warning text', () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             packageFile: 'package.json',
@@ -206,7 +206,7 @@ describe('workers/repository/errors-warnings', () => {
     });
 
     it('dependency dashboard warning returns empty string', () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {};
+      const packageFiles: Record<string, PackageFile[]> = {};
       const res = getDepWarningsDashboard(packageFiles);
       expect(res).toBe('');
     });
@@ -250,7 +250,7 @@ describe('workers/repository/errors-warnings', () => {
 
   describe('getDepWarningsOnboardingPR()', () => {
     it('returns onboarding warning text', () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             packageFile: 'package.json',
diff --git a/lib/workers/repository/errors-warnings.ts b/lib/workers/repository/errors-warnings.ts
index 2c8a6c1ff5..306cf9a939 100644
--- a/lib/workers/repository/errors-warnings.ts
+++ b/lib/workers/repository/errors-warnings.ts
@@ -1,7 +1,7 @@
 // TODO #7154
 import type { RenovateConfig } from '../../config/types';
 import { logger } from '../../logger';
-import type { PackageFileContent } from '../../modules/manager/types';
+import type { PackageFile } from '../../modules/manager/types';
 import { emojify } from '../../util/emoji';
 import { regEx } from '../../util/regex';
 import type { DepWarnings } from '../types';
@@ -33,7 +33,7 @@ export function getErrors(config: RenovateConfig): string {
 }
 
 function getDepWarnings(
-  packageFiles: Record<string, PackageFileContent[]>
+  packageFiles: Record<string, PackageFile[]>
 ): DepWarnings {
   const warnings: string[] = [];
   const warningFiles: string[] = [];
@@ -59,7 +59,7 @@ function getDepWarnings(
 }
 
 export function getDepWarningsOnboardingPR(
-  packageFiles: Record<string, PackageFileContent[]>
+  packageFiles: Record<string, PackageFile[]>
 ): string {
   const { warnings, warningFiles } = getDepWarnings(packageFiles);
   let warningText = '';
@@ -82,7 +82,7 @@ export function getDepWarningsOnboardingPR(
 }
 
 export function getDepWarningsPR(
-  packageFiles: Record<string, PackageFileContent[]>,
+  packageFiles: Record<string, PackageFile[]>,
   dependencyDashboard?: boolean
 ): string {
   const { warnings, warningFiles } = getDepWarnings(packageFiles);
@@ -104,7 +104,7 @@ export function getDepWarningsPR(
 }
 
 export function getDepWarningsDashboard(
-  packageFiles: Record<string, PackageFileContent[]>
+  packageFiles: Record<string, PackageFile[]>
 ): string {
   const { warnings, warningFiles } = getDepWarnings(packageFiles);
   if (!warnings.length) {
diff --git a/lib/workers/repository/extract/manager-files.ts b/lib/workers/repository/extract/manager-files.ts
index 01ec48f4d6..561456a27b 100644
--- a/lib/workers/repository/extract/manager-files.ts
+++ b/lib/workers/repository/extract/manager-files.ts
@@ -5,13 +5,13 @@ import {
   extractPackageFile,
   get,
 } from '../../../modules/manager';
-import type { PackageFileContent } from '../../../modules/manager/types';
+import type { PackageFile } from '../../../modules/manager/types';
 import { readLocalFile } from '../../../util/fs';
 import type { WorkerExtractConfig } from '../../types';
 
 export async function getManagerPackageFiles(
   config: WorkerExtractConfig
-): Promise<PackageFileContent[] | null> {
+): Promise<PackageFile[] | null> {
   const { enabled, manager, fileList } = config;
   logger.trace(`getPackageFiles(${manager})`);
   if (!enabled) {
@@ -44,7 +44,7 @@ export async function getManagerPackageFiles(
     }
     return allPackageFiles;
   }
-  const packageFiles: PackageFileContent[] = [];
+  const packageFiles: PackageFile[] = [];
   for (const packageFile of fileList) {
     const content = await readLocalFile(packageFile, 'utf8');
     // istanbul ignore else
@@ -60,8 +60,8 @@ export async function getManagerPackageFiles(
           res.deps[index].depIndex = index;
         }
         packageFiles.push({
-          packageFile,
           ...res,
+          packageFile,
         });
       }
     } else {
diff --git a/lib/workers/repository/onboarding/pr/config-description.spec.ts b/lib/workers/repository/onboarding/pr/config-description.spec.ts
index e5efd76035..39c3a4f8b1 100644
--- a/lib/workers/repository/onboarding/pr/config-description.spec.ts
+++ b/lib/workers/repository/onboarding/pr/config-description.spec.ts
@@ -1,5 +1,5 @@
 import { RenovateConfig, getConfig } from '../../../../../test/util';
-import type { PackageFileContent } from '../../../../modules/manager/types';
+import type { PackageFile } from '../../../../modules/manager/types';
 import { getConfigDesc } from './config-description';
 
 describe('workers/repository/onboarding/pr/config-description', () => {
@@ -18,7 +18,7 @@ describe('workers/repository/onboarding/pr/config-description', () => {
     });
 
     it('returns a full list', () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [],
         dockerfile: [],
       };
diff --git a/lib/workers/repository/onboarding/pr/config-description.ts b/lib/workers/repository/onboarding/pr/config-description.ts
index 48f6ece51b..6babae29a9 100644
--- a/lib/workers/repository/onboarding/pr/config-description.ts
+++ b/lib/workers/repository/onboarding/pr/config-description.ts
@@ -2,7 +2,7 @@ import is from '@sindresorhus/is';
 import { configFileNames } from '../../../../config/app-strings';
 import type { RenovateConfig } from '../../../../config/types';
 import { logger } from '../../../../logger';
-import type { PackageFileContent } from '../../../../modules/manager/types';
+import type { PackageFile } from '../../../../modules/manager/types';
 import { emojify } from '../../../../util/emoji';
 
 const defaultConfigFile = configFileNames[0];
@@ -31,7 +31,7 @@ function getDescriptionArray(config: RenovateConfig): string[] {
 
 export function getConfigDesc(
   config: RenovateConfig,
-  packageFiles?: Record<string, PackageFileContent[]>
+  packageFiles?: Record<string, PackageFile[]>
 ): string {
   // TODO: type (#7154)
   const configFile = configFileNames.includes(config.onboardingConfigFileName!)
diff --git a/lib/workers/repository/onboarding/pr/index.spec.ts b/lib/workers/repository/onboarding/pr/index.spec.ts
index ff91b18dd8..8ba376a880 100644
--- a/lib/workers/repository/onboarding/pr/index.spec.ts
+++ b/lib/workers/repository/onboarding/pr/index.spec.ts
@@ -8,7 +8,7 @@ import {
 } from '../../../../../test/util';
 import { GlobalConfig } from '../../../../config/global';
 import { logger } from '../../../../logger';
-import type { PackageFileContent } from '../../../../modules/manager/types';
+import type { PackageFile } from '../../../../modules/manager/types';
 import type { Pr } from '../../../../modules/platform';
 import * as memCache from '../../../../util/cache/memory';
 import type { BranchConfig } from '../../../types';
@@ -20,7 +20,7 @@ jest.mock('../../../../util/git');
 describe('workers/repository/onboarding/pr/index', () => {
   describe('ensureOnboardingPr()', () => {
     let config: RenovateConfig;
-    let packageFiles: Record<string, PackageFileContent[]>;
+    let packageFiles: Record<string, PackageFile[]>;
     let branches: BranchConfig[];
 
     const bodyStruct = {
diff --git a/lib/workers/repository/onboarding/pr/index.ts b/lib/workers/repository/onboarding/pr/index.ts
index d380166de1..5c765ad054 100644
--- a/lib/workers/repository/onboarding/pr/index.ts
+++ b/lib/workers/repository/onboarding/pr/index.ts
@@ -2,7 +2,7 @@ import is from '@sindresorhus/is';
 import { GlobalConfig } from '../../../../config/global';
 import type { RenovateConfig } from '../../../../config/types';
 import { logger } from '../../../../logger';
-import type { PackageFileContent } from '../../../../modules/manager/types';
+import type { PackageFile } from '../../../../modules/manager/types';
 import { platform } from '../../../../modules/platform';
 import { hashBody } from '../../../../modules/platform/pr-body';
 import { emojify } from '../../../../util/emoji';
@@ -30,7 +30,7 @@ import { getPrList } from './pr-list';
 
 export async function ensureOnboardingPr(
   config: RenovateConfig,
-  packageFiles: Record<string, PackageFileContent[]> | null,
+  packageFiles: Record<string, PackageFile[]> | null,
   branches: BranchConfig[]
 ): Promise<void> {
   if (
@@ -85,8 +85,7 @@ If you need any further assistance then you can also [request help here](${
     let files: string[] = [];
     for (const [manager, managerFiles] of Object.entries(packageFiles)) {
       files = files.concat(
-        // TODO: types (#7154)
-        managerFiles.map((file) => ` * \`${file.packageFile!}\` (${manager})`)
+        managerFiles.map((file) => ` * \`${file.packageFile}\` (${manager})`)
       );
     }
     prBody =
diff --git a/lib/workers/repository/package-files.ts b/lib/workers/repository/package-files.ts
index 0761be3b63..02887c20c9 100644
--- a/lib/workers/repository/package-files.ts
+++ b/lib/workers/repository/package-files.ts
@@ -1,17 +1,14 @@
 import is from '@sindresorhus/is';
 import { logger } from '../../logger';
-import type { PackageFileContent } from '../../modules/manager/types';
+import type { PackageFile } from '../../modules/manager/types';
 import { clone } from '../../util/clone';
 
 export class PackageFiles {
-  private static data = new Map<
-    string,
-    Record<string, PackageFileContent[]> | null
-  >();
+  private static data = new Map<string, Record<string, PackageFile[]> | null>();
 
   static add(
     baseBranch: string,
-    packageFiles: Record<string, PackageFileContent[]> | null
+    packageFiles: Record<string, PackageFile[]> | null
   ): void {
     logger.debug(
       { baseBranch },
@@ -82,7 +79,7 @@ export class PackageFiles {
    * @param data
    */
   private static getDashboardMarkdownInternal(
-    data: Map<string, Record<string, PackageFileContent[]> | null>
+    data: Map<string, Record<string, PackageFile[]> | null>
   ): string {
     const none = 'None detected\n\n';
     const pad = data.size > 1; // padding condition for a multi base branch repo
@@ -108,8 +105,7 @@ export class PackageFiles {
       for (const manager of managers) {
         deps += `<details><summary>${manager}</summary>\n<blockquote>\n\n`;
         for (const packageFile of packageFiles[manager]) {
-          // TODO: types (#7154)
-          deps += `<details><summary>${packageFile.packageFile!}</summary>\n\n`;
+          deps += `<details><summary>${packageFile.packageFile}</summary>\n\n`;
           for (const dep of packageFile.deps) {
             const ver = dep.currentValue;
             const digest = dep.currentDigest;
@@ -136,7 +132,7 @@ export class PackageFiles {
    *          otherwise false is returned
    */
   private static pop(
-    data: Map<string, Record<string, PackageFileContent[]> | null>
+    data: Map<string, Record<string, PackageFile[]> | null>
   ): boolean {
     // get detected managers list of the last listed base branch
     const [branch, managers] = Array.from(data).pop() ?? [];
diff --git a/lib/workers/repository/process/deprecated.ts b/lib/workers/repository/process/deprecated.ts
index 40283a9b8b..4849f721e3 100644
--- a/lib/workers/repository/process/deprecated.ts
+++ b/lib/workers/repository/process/deprecated.ts
@@ -2,12 +2,12 @@
 import { GlobalConfig } from '../../../config/global';
 import type { RenovateConfig } from '../../../config/types';
 import { logger } from '../../../logger';
-import type { PackageFileContent } from '../../../modules/manager/types';
+import type { PackageFile } from '../../../modules/manager/types';
 import { platform } from '../../../modules/platform';
 
 export async function raiseDeprecationWarnings(
   config: RenovateConfig,
-  packageFiles: Record<string, PackageFileContent[]>
+  packageFiles: Record<string, PackageFile[]>
 ): Promise<void> {
   if (!config.repoIsOnboarded) {
     return;
@@ -31,7 +31,7 @@ export async function raiseDeprecationWarnings(
             depPackageFiles: [],
           };
           deprecatedPackages[dep.depName!].depPackageFiles.push(
-            packageFile.packageFile!
+            packageFile.packageFile
           );
         }
       }
diff --git a/lib/workers/repository/process/extract-update.spec.ts b/lib/workers/repository/process/extract-update.spec.ts
index d8c9e013ee..08f8d09343 100644
--- a/lib/workers/repository/process/extract-update.spec.ts
+++ b/lib/workers/repository/process/extract-update.spec.ts
@@ -1,5 +1,5 @@
 import { git, logger, mocked } from '../../../../test/util';
-import type { PackageFileContent } from '../../../modules/manager/types';
+import type { PackageFile } from '../../../modules/manager/types';
 import * as _repositoryCache from '../../../util/cache/repository';
 import type { BaseBranchCache } from '../../../util/cache/repository/types';
 import { fingerprint } from '../../../util/fingerprint';
@@ -88,7 +88,7 @@ describe('workers/repository/process/extract-update', () => {
     });
 
     it('uses repository cache', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {};
+      const packageFiles: Record<string, PackageFile[]> = {};
       const config = {
         repoIsOnboarded: true,
         suppressNotifications: ['deprecationWarningIssues'],
diff --git a/lib/workers/repository/process/extract-update.ts b/lib/workers/repository/process/extract-update.ts
index 9805cdcc6f..e806b54528 100644
--- a/lib/workers/repository/process/extract-update.ts
+++ b/lib/workers/repository/process/extract-update.ts
@@ -2,7 +2,7 @@ import is from '@sindresorhus/is';
 import type { RenovateConfig } from '../../../config/types';
 import { logger } from '../../../logger';
 import { hashMap } from '../../../modules/manager';
-import type { PackageFileContent } from '../../../modules/manager/types';
+import type { PackageFile } from '../../../modules/manager/types';
 import { getCache } from '../../../util/cache/repository';
 import type { BaseBranchCache } from '../../../util/cache/repository/types';
 import { checkGithubToken as ensureGithubToken } from '../../../util/check-token';
@@ -21,7 +21,7 @@ import { WriteUpdateResult, writeUpdates } from './write';
 export interface ExtractResult {
   branches: BranchConfig[];
   branchList: string[];
-  packageFiles: Record<string, PackageFileContent[]>;
+  packageFiles: Record<string, PackageFile[]>;
 }
 
 export interface StatsResult {
@@ -36,7 +36,7 @@ export interface Stats {
 
 // istanbul ignore next
 function extractStats(
-  packageFiles: Record<string, PackageFileContent[]>
+  packageFiles: Record<string, PackageFile[]>
 ): Stats | null {
   if (!packageFiles) {
     return null;
@@ -111,11 +111,11 @@ export function isCacheExtractValid(
 
 export async function extract(
   config: RenovateConfig
-): Promise<Record<string, PackageFileContent[]>> {
+): Promise<Record<string, PackageFile[]>> {
   logger.debug('extract()');
   const { baseBranch } = config;
   const baseBranchSha = getBranchCommit(baseBranch!);
-  let packageFiles: Record<string, PackageFileContent[]>;
+  let packageFiles: Record<string, PackageFile[]>;
   const cache = getCache();
   cache.scan ||= {};
   const cachedExtract = cache.scan[baseBranch!];
@@ -169,7 +169,7 @@ export async function extract(
 
 async function fetchVulnerabilities(
   config: RenovateConfig,
-  packageFiles: Record<string, PackageFileContent[]>
+  packageFiles: Record<string, PackageFile[]>
 ): Promise<void> {
   if (config.osvVulnerabilityAlerts) {
     try {
@@ -183,7 +183,7 @@ async function fetchVulnerabilities(
 
 export async function lookup(
   config: RenovateConfig,
-  packageFiles: Record<string, PackageFileContent[]>
+  packageFiles: Record<string, PackageFile[]>
 ): Promise<ExtractResult> {
   await fetchVulnerabilities(config, packageFiles);
   await fetchUpdates(config, packageFiles);
diff --git a/lib/workers/repository/process/fetch.spec.ts b/lib/workers/repository/process/fetch.spec.ts
index 450f0cf597..6b033fd1ba 100644
--- a/lib/workers/repository/process/fetch.spec.ts
+++ b/lib/workers/repository/process/fetch.spec.ts
@@ -1,6 +1,6 @@
 import { RenovateConfig, getConfig, mocked } from '../../../../test/util';
 import { MavenDatasource } from '../../../modules/datasource/maven';
-import type { PackageFileContent } from '../../../modules/manager/types';
+import type { PackageFile } from '../../../modules/manager/types';
 import { ExternalHostError } from '../../../types/errors/external-host-error';
 import { fetchUpdates } from './fetch';
 import * as lookup from './lookup';
@@ -19,7 +19,7 @@ describe('workers/repository/process/fetch', () => {
     });
 
     it('handles empty deps', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [{ packageFile: 'package.json', deps: [] }],
       };
       await fetchUpdates(config, packageFiles);
@@ -36,7 +36,7 @@ describe('workers/repository/process/fetch', () => {
           enabled: false,
         },
       ];
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             packageFile: 'package.json',
@@ -73,7 +73,7 @@ describe('workers/repository/process/fetch', () => {
     });
 
     it('skips deps with empty names', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         docker: [
           {
             packageFile: 'values.yaml',
@@ -100,7 +100,7 @@ describe('workers/repository/process/fetch', () => {
     });
 
     it('skips internal deps by default', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         docker: [
           {
             packageFile: 'values.yaml',
diff --git a/lib/workers/repository/process/fetch.ts b/lib/workers/repository/process/fetch.ts
index 8aedd3832a..6d46cb4402 100644
--- a/lib/workers/repository/process/fetch.ts
+++ b/lib/workers/repository/process/fetch.ts
@@ -9,7 +9,7 @@ import {
 } from '../../../modules/datasource';
 import type {
   PackageDependency,
-  PackageFileContent,
+  PackageFile,
 } from '../../../modules/manager/types';
 import { ExternalHostError } from '../../../types/errors/external-host-error';
 import { clone } from '../../../util/clone';
@@ -20,7 +20,7 @@ import { lookupUpdates } from './lookup';
 import type { LookupUpdateConfig } from './lookup/types';
 
 async function fetchDepUpdates(
-  packageFileConfig: RenovateConfig & PackageFileContent,
+  packageFileConfig: RenovateConfig & PackageFile,
   indep: PackageDependency
 ): Promise<PackageDependency> {
   let dep = clone(indep);
@@ -83,7 +83,7 @@ async function fetchDepUpdates(
 async function fetchManagerPackagerFileUpdates(
   config: RenovateConfig,
   managerConfig: RenovateConfig,
-  pFile: PackageFileContent
+  pFile: PackageFile
 ): Promise<void> {
   const { packageFile } = pFile;
   if (pFile.extractedConstraints) {
@@ -110,7 +110,7 @@ async function fetchManagerPackagerFileUpdates(
 
 async function fetchManagerUpdates(
   config: RenovateConfig,
-  packageFiles: Record<string, PackageFileContent[]>,
+  packageFiles: Record<string, PackageFile[]>,
   manager: string
 ): Promise<void> {
   const managerConfig = getManagerConfig(config, manager);
@@ -128,7 +128,7 @@ async function fetchManagerUpdates(
 
 export async function fetchUpdates(
   config: RenovateConfig,
-  packageFiles: Record<string, PackageFileContent[]>
+  packageFiles: Record<string, PackageFile[]>
 ): Promise<void> {
   const managers = Object.keys(packageFiles);
   const allManagerJobs = managers.map((manager) =>
diff --git a/lib/workers/repository/process/index.ts b/lib/workers/repository/process/index.ts
index b65a2d6646..b1cd6d8ae4 100644
--- a/lib/workers/repository/process/index.ts
+++ b/lib/workers/repository/process/index.ts
@@ -4,7 +4,7 @@ import { GlobalConfig } from '../../../config/global';
 import type { RenovateConfig } from '../../../config/types';
 import { CONFIG_VALIDATION } from '../../../constants/error-messages';
 import { addMeta, logger, removeMeta } from '../../../logger';
-import type { PackageFileContent } from '../../../modules/manager/types';
+import type { PackageFile } from '../../../modules/manager/types';
 import { platform } from '../../../modules/platform';
 import { getCache } from '../../../util/cache/repository';
 import { clone } from '../../../util/clone';
@@ -92,7 +92,7 @@ export async function extractDependencies(
   };
   if (config.baseBranches?.length) {
     logger.debug({ baseBranches: config.baseBranches }, 'baseBranches');
-    const extracted: Record<string, Record<string, PackageFileContent[]>> = {};
+    const extracted: Record<string, Record<string, PackageFile[]>> = {};
     for (const baseBranch of config.baseBranches) {
       addMeta({ baseBranch });
       if (branchExists(baseBranch)) {
diff --git a/lib/workers/repository/process/vulnerabilities.spec.ts b/lib/workers/repository/process/vulnerabilities.spec.ts
index c5e1da3c67..2c0d9f74f1 100644
--- a/lib/workers/repository/process/vulnerabilities.spec.ts
+++ b/lib/workers/repository/process/vulnerabilities.spec.ts
@@ -2,7 +2,7 @@ import type { Osv, OsvOffline } from '@renovatebot/osv-offline';
 import { codeBlock } from 'common-tags';
 import { mockFn } from 'jest-mock-extended';
 import { RenovateConfig, getConfig, logger } from '../../../../test/util';
-import type { PackageFileContent } from '../../../modules/manager/types';
+import type { PackageFile } from '../../../modules/manager/types';
 import { Vulnerabilities } from './vulnerabilities';
 
 const getVulnerabilitiesMock =
@@ -71,8 +71,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('unsupported datasource', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
-        dockerfile: [{ deps: [{ depName: 'node', datasource: 'docker' }] }],
+      const packageFiles: Record<string, PackageFile[]> = {
+        dockerfile: [
+          {
+            deps: [{ depName: 'node', datasource: 'docker' }],
+            packageFile: 'some-file',
+          },
+        ],
       };
 
       await vulnerabilities.fetchVulnerabilities(config, packageFiles);
@@ -82,8 +87,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('package found but no vulnerabilities', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
-        npm: [{ deps: [{ depName: 'lodash', datasource: 'npm' }] }],
+      const packageFiles: Record<string, PackageFile[]> = {
+        npm: [
+          {
+            deps: [{ depName: 'lodash', datasource: 'npm' }],
+            packageFile: 'some-file',
+          },
+        ],
       };
       getVulnerabilitiesMock.mockResolvedValueOnce([]);
 
@@ -94,12 +104,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('vulnerability without affected field', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             deps: [
               { depName: 'lodash', currentValue: '4.17.11', datasource: 'npm' },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -115,7 +126,7 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('invalid dep version', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             deps: [
@@ -125,6 +136,7 @@ describe('workers/repository/process/vulnerabilities', () => {
                 datasource: 'npm',
               },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -138,9 +150,10 @@ describe('workers/repository/process/vulnerabilities', () => {
 
     it('exception while fetching vulnerabilities', async () => {
       const err = new Error('unknown');
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
+            packageFile: 'some-file',
             deps: [
               {
                 depName: 'lodash',
@@ -162,7 +175,7 @@ describe('workers/repository/process/vulnerabilities', () => {
 
     it('log event with invalid version', async () => {
       const event = { fixed: '^6.0' };
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             deps: [
@@ -172,6 +185,7 @@ describe('workers/repository/process/vulnerabilities', () => {
                 datasource: 'npm',
               },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -205,12 +219,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('no version or range affected', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             deps: [
               { depName: 'fake', currentValue: '4.17.11', datasource: 'npm' },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -231,12 +246,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('no fixed version available', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             deps: [
               { depName: 'fake', currentValue: '4.17.11', datasource: 'npm' },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -260,12 +276,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('does not accidentally downgrade versions due to fixed version for other range', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             deps: [
               { depName: 'fake', currentValue: '1.5.1', datasource: 'npm' },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -298,12 +315,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('vulnerability with multiple unsorted events', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         gomod: [
           {
             deps: [
               { depName: 'stdlib', currentValue: '1.7.5', datasource: 'go' },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -356,12 +374,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('vulnerability with multiple affected entries and version ranges', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         poetry: [
           {
             deps: [
               { depName: 'django', currentValue: '3.2', datasource: 'pypi' },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -424,12 +443,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('filters not applicable vulnerability', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             deps: [
               { depName: 'lodash', currentValue: '4.17.11', datasource: 'npm' },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -440,7 +460,7 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('returns a single packageRule for regex manager', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         regex: [
           {
             deps: [
@@ -450,6 +470,7 @@ describe('workers/repository/process/vulnerabilities', () => {
                 datasource: 'crate',
               },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -539,12 +560,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('returns multiple packageRules for different vulnerabilities', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             deps: [
               { depName: 'lodash', currentValue: '4.17.10', datasource: 'npm' },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -595,12 +617,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('filters not applicable vulnerability based on last_affected version', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         poetry: [
           {
             deps: [
               { depName: 'quokka', currentValue: '1.2.3', datasource: 'pypi' },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -634,12 +657,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('returns packageRule based on last_affected version', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             deps: [
               { depName: 'lodash', currentValue: '0.5.0', datasource: 'npm' },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -706,7 +730,7 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('handles invalid CVSS scores gracefully', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         poetry: [
           {
             deps: [
@@ -716,6 +740,7 @@ describe('workers/repository/process/vulnerabilities', () => {
                 datasource: 'pypi',
               },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -785,12 +810,13 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('show severity text in GHSA advisories without CVSS score', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             deps: [
               { depName: 'lodash', currentValue: '4.17.10', datasource: 'npm' },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
@@ -842,7 +868,7 @@ describe('workers/repository/process/vulnerabilities', () => {
     });
 
     it('formats headings of vulnerability details', async () => {
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         regex: [
           {
             deps: [
@@ -852,6 +878,7 @@ describe('workers/repository/process/vulnerabilities', () => {
                 datasource: 'crate',
               },
             ],
+            packageFile: 'some-file',
           },
         ],
       };
diff --git a/lib/workers/repository/process/vulnerabilities.ts b/lib/workers/repository/process/vulnerabilities.ts
index 8c0375e7a2..0e903e0a81 100644
--- a/lib/workers/repository/process/vulnerabilities.ts
+++ b/lib/workers/repository/process/vulnerabilities.ts
@@ -9,7 +9,7 @@ import { logger } from '../../../logger';
 import { getDefaultVersioning } from '../../../modules/datasource';
 import type {
   PackageDependency,
-  PackageFileContent,
+  PackageFile,
 } from '../../../modules/manager/types';
 import {
   VersioningApi,
@@ -52,7 +52,7 @@ export class Vulnerabilities {
 
   async fetchVulnerabilities(
     config: RenovateConfig,
-    packageFiles: Record<string, PackageFileContent[]>
+    packageFiles: Record<string, PackageFile[]>
   ): Promise<void> {
     const managers = Object.keys(packageFiles);
     const allManagerJobs = managers.map((manager) =>
@@ -63,7 +63,7 @@ export class Vulnerabilities {
 
   private async fetchManagerVulnerabilities(
     config: RenovateConfig,
-    packageFiles: Record<string, PackageFileContent[]>,
+    packageFiles: Record<string, PackageFile[]>,
     manager: string
   ): Promise<void> {
     const managerConfig = getManagerConfig(config, manager);
@@ -86,7 +86,7 @@ export class Vulnerabilities {
   private async fetchManagerPackageFileVulnerabilities(
     config: RenovateConfig,
     managerConfig: RenovateConfig,
-    pFile: PackageFileContent
+    pFile: PackageFile
   ): Promise<void> {
     const { packageFile } = pFile;
     const packageFileConfig = mergeChildConfig(managerConfig, pFile);
@@ -108,7 +108,7 @@ export class Vulnerabilities {
   }
 
   private async fetchDependencyVulnerabilities(
-    packageFileConfig: RenovateConfig & PackageFileContent,
+    packageFileConfig: RenovateConfig & PackageFile,
     dep: PackageDependency
   ): Promise<PackageRule[]> {
     const ecosystem = Vulnerabilities.datasourceEcosystemMap[dep.datasource!];
@@ -403,7 +403,7 @@ export class Vulnerabilities {
   }
 
   private convertToPackageRule(
-    packageFileConfig: RenovateConfig & PackageFileContent,
+    packageFileConfig: RenovateConfig & PackageFile,
     dep: PackageDependency,
     packageName: string,
     depVersion: string,
diff --git a/lib/workers/repository/update/pr/body/index.spec.ts b/lib/workers/repository/update/pr/body/index.spec.ts
index 35d316c3b0..46004205fe 100644
--- a/lib/workers/repository/update/pr/body/index.spec.ts
+++ b/lib/workers/repository/update/pr/body/index.spec.ts
@@ -1,5 +1,5 @@
 import { mocked, platform } from '../../../../../../test/util';
-import type { PackageFileContent } from '../../../../../modules/manager/types';
+import type { PackageFile } from '../../../../../modules/manager/types';
 import { prDebugDataRe } from '../../../../../modules/platform/pr-body';
 import * as _template from '../../../../../util/template';
 import * as _changelogs from './changelogs';
@@ -220,7 +220,7 @@ describe('workers/repository/update/pr/body/index', () => {
 
       platform.massageMarkdown.mockImplementation((x) => massagedMarkDown);
       template.compile.mockImplementation((x) => compiledContent);
-      const packageFiles: Record<string, PackageFileContent[]> = {
+      const packageFiles: Record<string, PackageFile[]> = {
         npm: [
           {
             packageFile: 'package.json',
diff --git a/lib/workers/types.ts b/lib/workers/types.ts
index 9f898a603b..8236081cb5 100644
--- a/lib/workers/types.ts
+++ b/lib/workers/types.ts
@@ -12,7 +12,7 @@ import type {
   ExtractConfig,
   LookupUpdate,
   PackageDependency,
-  PackageFileContent,
+  PackageFile,
 } from '../modules/manager/types';
 import type { PlatformPrOptions } from '../modules/platform/types';
 import type { FileChange } from '../util/git/types';
@@ -118,7 +118,7 @@ export interface BranchConfig
   rebaseRequested?: boolean;
   result?: BranchResult;
   upgrades: BranchUpgradeConfig[];
-  packageFiles?: Record<string, PackageFileContent[]>;
+  packageFiles?: Record<string, PackageFile[]>;
   prBlockedBy?: PrBlockedBy;
   prNo?: number;
   stopUpdating?: boolean;
@@ -189,5 +189,5 @@ export interface UpgradeFingerprintConfig {
 
 export interface ExtractResult {
   extractionFingerprints: Record<string, string | undefined>;
-  packageFiles: Record<string, PackageFileContent[]>;
+  packageFiles: Record<string, PackageFile[]>;
 }
-- 
GitLab