From 427fb1ce67cf05330ff071b20969709fe1211d42 Mon Sep 17 00:00:00 2001 From: Jamie Magee <JamieMagee@users.noreply.github.com> Date: Wed, 11 Dec 2019 19:38:40 -0800 Subject: [PATCH] fix(ts): convert workers/repository/extract to typescript (#4956) --- .../extract/{file-match.js => file-match.ts} | 32 +++++++++++-------- .../repository/extract/{index.js => index.ts} | 19 ++++++----- .../{manager-files.js => manager-files.ts} | 23 ++++++------- ...h.spec.js.snap => file-match.spec.ts.snap} | 0 ...{index.spec.js.snap => index.spec.ts.snap} | 0 ...pec.js.snap => manager-files.spec.ts.snap} | 0 ...{file-match.spec.js => file-match.spec.ts} | 2 +- .../extract/{index.spec.js => index.spec.ts} | 19 +++++------ ...er-files.spec.js => manager-files.spec.ts} | 30 ++++++++--------- 9 files changed, 61 insertions(+), 64 deletions(-) rename lib/workers/repository/extract/{file-match.js => file-match.ts} (53%) rename lib/workers/repository/extract/{index.js => index.ts} (62%) rename lib/workers/repository/extract/{manager-files.js => manager-files.ts} (83%) rename test/workers/repository/extract/__snapshots__/{file-match.spec.js.snap => file-match.spec.ts.snap} (100%) rename test/workers/repository/extract/__snapshots__/{index.spec.js.snap => index.spec.ts.snap} (100%) rename test/workers/repository/extract/__snapshots__/{manager-files.spec.js.snap => manager-files.spec.ts.snap} (100%) rename test/workers/repository/extract/{file-match.spec.js => file-match.spec.ts} (96%) rename test/workers/repository/extract/{index.spec.js => index.spec.ts} (50%) rename test/workers/repository/extract/{manager-files.spec.js => manager-files.spec.ts} (71%) 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 3939b61f33..cd5db719a5 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 92b42dd674..ef50bab647 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 cf63c850f7..20630fd9ea 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 65822da662..d219e329df 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 3c14e3c1e6..66082da9e7 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 2387cc50d6..766d1a979c 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(); }); -- GitLab