diff --git a/lib/workers/repository/extract/file-match.js b/lib/workers/repository/extract/file-match.ts
similarity index 53%
rename from lib/workers/repository/extract/file-match.js
rename to lib/workers/repository/extract/file-match.ts
index 3939b61f339f0e5daaa815f22835319a3457b431..cd5db719a5057884016d8a96ea2c50354bb98001 100644
--- a/lib/workers/repository/extract/file-match.js
+++ b/lib/workers/repository/extract/file-match.ts
@@ -1,13 +1,10 @@
-const minimatch = require('minimatch');
-const { logger } = require('../../../logger');
+import minimatch from 'minimatch';
+import { logger } from '../../../logger';
 
-module.exports = {
-  getIncludedFiles,
-  filterIgnoredFiles,
-  getMatchingFiles,
-};
-
-function getIncludedFiles(fileList, includePaths) {
+export function getIncludedFiles(
+  fileList: string[],
+  includePaths: string[]
+): string[] {
   if (!(includePaths && includePaths.length)) {
     return fileList;
   }
@@ -19,7 +16,10 @@ function getIncludedFiles(fileList, includePaths) {
   );
 }
 
-function filterIgnoredFiles(fileList, ignorePaths) {
+export function filterIgnoredFiles(
+  fileList: string[],
+  ignorePaths: string[]
+): string[] {
   if (!(ignorePaths && ignorePaths.length)) {
     return fileList;
   }
@@ -33,12 +33,16 @@ function filterIgnoredFiles(fileList, ignorePaths) {
   );
 }
 
-function getMatchingFiles(fileList, manager, fileMatch) {
+export function getMatchingFiles(
+  fileList: string[],
+  manager: string,
+  fileMatchList: string[]
+): string[] {
   let matchedFiles = [];
-  for (const match of fileMatch) {
-    logger.debug(`Using file match: ${match} for manager ${manager}`);
+  for (const fileMatch of fileMatchList) {
+    logger.debug(`Using file match: ${fileMatch} for manager ${manager}`);
     matchedFiles = matchedFiles.concat(
-      fileList.filter(file => file.match(new RegExp(match)))
+      fileList.filter(file => file.match(new RegExp(fileMatch)))
     );
   }
   // filter out duplicates
diff --git a/lib/workers/repository/extract/index.js b/lib/workers/repository/extract/index.ts
similarity index 62%
rename from lib/workers/repository/extract/index.js
rename to lib/workers/repository/extract/index.ts
index 92b42dd674bcd1f1bc001bf9da3fae098be65de2..ef50bab647515775de923cab7305d5f684a8b298 100644
--- a/lib/workers/repository/extract/index.js
+++ b/lib/workers/repository/extract/index.ts
@@ -1,14 +1,13 @@
-const { logger } = require('../../../logger');
-const { getManagerList } = require('../../../manager');
-const { getManagerConfig } = require('../../../config');
-const { getManagerPackageFiles } = require('./manager-files');
+import { logger } from '../../../logger';
+import { getManagerList } from '../../../manager';
+import { getManagerConfig, RenovateConfig } from '../../../config';
+import { getManagerPackageFiles } from './manager-files';
+import { PackageFile } from '../../../manager/common';
 
-module.exports = {
-  extractAllDependencies,
-};
-
-async function extractAllDependencies(config) {
-  const extractions = {};
+export async function extractAllDependencies(
+  config: RenovateConfig
+): Promise<Record<string, PackageFile[]>> {
+  const extractions: Record<string, PackageFile[]> = {};
   let fileCount = 0;
   for (const manager of getManagerList()) {
     if (
diff --git a/lib/workers/repository/extract/manager-files.js b/lib/workers/repository/extract/manager-files.ts
similarity index 83%
rename from lib/workers/repository/extract/manager-files.js
rename to lib/workers/repository/extract/manager-files.ts
index cf63c850f7b4b14ace0e670d6c5bf2a54e4b5dd7..20630fd9ea8fad445993fbc23a6b786b5f516314 100644
--- a/lib/workers/repository/extract/manager-files.js
+++ b/lib/workers/repository/extract/manager-files.ts
@@ -1,23 +1,18 @@
-const { logger } = require('../../../logger');
-const { platform } = require('../../../platform');
-
-module.exports = {
-  getManagerPackageFiles,
-};
-
-const {
+import {
   extractAllPackageFiles,
   extractPackageFile,
   get,
-} = require('../../../manager');
-
-const {
-  getIncludedFiles,
+} from '../../../manager';
+import { platform } from '../../../platform';
+import { logger } from '../../../logger';
+import {
   filterIgnoredFiles,
+  getIncludedFiles,
   getMatchingFiles,
-} = require('./file-match');
+} from './file-match';
+import { PackageFile } from '../../../manager/common';
 
-async function getManagerPackageFiles(config) {
+export async function getManagerPackageFiles(config): Promise<PackageFile[]> {
   const { manager, enabled, includePaths, ignorePaths } = config;
   logger.trace(`getPackageFiles(${manager})`);
   if (!enabled) {
diff --git a/test/workers/repository/extract/__snapshots__/file-match.spec.js.snap b/test/workers/repository/extract/__snapshots__/file-match.spec.ts.snap
similarity index 100%
rename from test/workers/repository/extract/__snapshots__/file-match.spec.js.snap
rename to test/workers/repository/extract/__snapshots__/file-match.spec.ts.snap
diff --git a/test/workers/repository/extract/__snapshots__/index.spec.js.snap b/test/workers/repository/extract/__snapshots__/index.spec.ts.snap
similarity index 100%
rename from test/workers/repository/extract/__snapshots__/index.spec.js.snap
rename to test/workers/repository/extract/__snapshots__/index.spec.ts.snap
diff --git a/test/workers/repository/extract/__snapshots__/manager-files.spec.js.snap b/test/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap
similarity index 100%
rename from test/workers/repository/extract/__snapshots__/manager-files.spec.js.snap
rename to test/workers/repository/extract/__snapshots__/manager-files.spec.ts.snap
diff --git a/test/workers/repository/extract/file-match.spec.js b/test/workers/repository/extract/file-match.spec.ts
similarity index 96%
rename from test/workers/repository/extract/file-match.spec.js
rename to test/workers/repository/extract/file-match.spec.ts
index 65822da6622a7ddbe92ff71a43a9082100e19036..d219e329dfa5e6a6145e7a071ab6e21a852a09d2 100644
--- a/test/workers/repository/extract/file-match.spec.js
+++ b/test/workers/repository/extract/file-match.spec.ts
@@ -1,4 +1,4 @@
-const fileMatch = require('../../../../lib/workers/repository/extract/file-match');
+import * as fileMatch from '../../../../lib/workers/repository/extract/file-match';
 
 describe('workers/repository/extract/file-match', () => {
   const fileList = ['package.json', 'frontend/package.json'];
diff --git a/test/workers/repository/extract/index.spec.js b/test/workers/repository/extract/index.spec.ts
similarity index 50%
rename from test/workers/repository/extract/index.spec.js
rename to test/workers/repository/extract/index.spec.ts
index 3c14e3c1e65882682aff005f4f9d58601a017b81..66082da9e7fc67a51ff69c6521ab68e72c88523e 100644
--- a/test/workers/repository/extract/index.spec.js
+++ b/test/workers/repository/extract/index.spec.ts
@@ -1,26 +1,27 @@
-/** @type any */
-const managerFiles = require('../../../../lib/workers/repository/extract/manager-files');
-const {
-  extractAllDependencies,
-} = require('../../../../lib/workers/repository/extract');
+import * as _managerFiles from '../../../../lib/workers/repository/extract/manager-files';
+import { extractAllDependencies } from '../../../../lib/workers/repository/extract';
+import { mocked, defaultConfig } from '../../../util';
+import { RenovateConfig } from '../../../../lib/config';
 
 jest.mock('../../../../lib/workers/repository/extract/manager-files');
 
+const managerFiles = mocked(_managerFiles);
+
 describe('workers/repository/extract/index', () => {
   describe('extractAllDependencies()', () => {
-    let config;
+    let config: RenovateConfig;
     beforeEach(() => {
       jest.resetAllMocks();
-      config = { ...require('../../../config/config/_fixtures') };
+      config = { ...defaultConfig };
     });
     it('runs', async () => {
-      managerFiles.getManagerPackageFiles.mockReturnValue([{}]);
+      managerFiles.getManagerPackageFiles.mockResolvedValue([{} as never]);
       const res = await extractAllDependencies(config);
       expect(res).toMatchSnapshot();
     });
     it('skips non-enabled maangers', async () => {
       config.enabledManagers = ['npm'];
-      managerFiles.getManagerPackageFiles.mockReturnValue([{}]);
+      managerFiles.getManagerPackageFiles.mockResolvedValue([{} as never]);
       const res = await extractAllDependencies(config);
       expect(res).toMatchSnapshot();
     });
diff --git a/test/workers/repository/extract/manager-files.spec.js b/test/workers/repository/extract/manager-files.spec.ts
similarity index 71%
rename from test/workers/repository/extract/manager-files.spec.js
rename to test/workers/repository/extract/manager-files.spec.ts
index 2387cc50d66b01ac947180531a75931bd3437ee5..766d1a979cd4da215a3450841ba3c02a63594a9b 100644
--- a/test/workers/repository/extract/manager-files.spec.js
+++ b/test/workers/repository/extract/manager-files.spec.ts
@@ -1,21 +1,18 @@
-const {
-  getManagerPackageFiles,
-} = require('../../../../lib/workers/repository/extract/manager-files');
-/** @type any */
-const fileMatch = require('../../../../lib/workers/repository/extract/file-match');
-/** @type any */
-const npm = require('../../../../lib/manager/npm');
-/** @type any */
-const dockerfile = require('../../../../lib/manager/dockerfile');
-/** @type any */
-const { platform } = require('../../../../lib/platform');
+import { getManagerPackageFiles } from '../../../../lib/workers/repository/extract/manager-files';
+import * as _fileMatch from '../../../../lib/workers/repository/extract/file-match';
+import * as _dockerfile from '../../../../lib/manager/dockerfile';
+import { mocked, platform } from '../../../util';
+import { RenovateConfig } from '../../../../lib/config';
 
 jest.mock('../../../../lib/workers/repository/extract/file-match');
 jest.mock('../../../../lib/manager/dockerfile');
 
+const fileMatch = mocked(_fileMatch);
+const dockerfile = mocked(_dockerfile);
+
 describe('workers/repository/extract/manager-files', () => {
   describe('getManagerPackageFiles()', () => {
-    let config;
+    let config: RenovateConfig;
     beforeEach(() => {
       jest.resetAllMocks();
       config = { ...require('../../../config/config/_fixtures') };
@@ -40,16 +37,17 @@ describe('workers/repository/extract/manager-files', () => {
     it('returns files with extractPackageFile', async () => {
       const managerConfig = { manager: 'dockerfile', enabled: true };
       fileMatch.getMatchingFiles.mockReturnValue(['Dockerfile']);
-      platform.getFile.mockReturnValue('some content');
-      dockerfile.extractPackageFile = jest.fn(() => ({ some: 'result' }));
+      platform.getFile.mockResolvedValue('some content');
+      dockerfile.extractPackageFile = jest.fn(() => ({
+        some: 'result',
+      })) as never;
       const res = await getManagerPackageFiles(managerConfig);
       expect(res).toMatchSnapshot();
     });
     it('returns files with extractAllPackageFiles', async () => {
       const managerConfig = { manager: 'npm', enabled: true };
       fileMatch.getMatchingFiles.mockReturnValue(['package.json']);
-      platform.getFile.mockReturnValue('{}');
-      npm.extractPackageFile = jest.fn(() => ({ some: 'result' }));
+      platform.getFile.mockResolvedValue('{}');
       const res = await getManagerPackageFiles(managerConfig);
       expect(res).toMatchSnapshot();
     });