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(); });