From 6a57b819c5e607c85768934c658f9cef9d48c23c Mon Sep 17 00:00:00 2001 From: chentsulin Date: Wed, 23 Feb 2022 23:45:03 +0800 Subject: [PATCH] feat(jest-haste-map): add DependencyExtractor type --- e2e/__tests__/findRelatedFiles.test.ts | 3 +-- packages/jest-haste-map/src/index.ts | 10 ++++++---- packages/jest-haste-map/src/types.ts | 9 +++++++++ packages/jest-haste-map/src/worker.ts | 12 ++++++++++-- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/e2e/__tests__/findRelatedFiles.test.ts b/e2e/__tests__/findRelatedFiles.test.ts index f84b88bc56c0..a5999d5d4536 100644 --- a/e2e/__tests__/findRelatedFiles.test.ts +++ b/e2e/__tests__/findRelatedFiles.test.ts @@ -162,8 +162,7 @@ describe('--findRelatedTests flag', () => { expect(stderr).toMatch('PASS __tests__/test.test.js'); expect(stderr).not.toMatch('PASS __tests__/test-skip-deps.test.js'); - const summaryMsg = - 'Ran all test suites related to files matching /a.js/i.'; + const summaryMsg = 'Ran all test suites related to files matching /a.js/i.'; expect(stderr).toMatch(summaryMsg); }); diff --git a/packages/jest-haste-map/src/index.ts b/packages/jest-haste-map/src/index.ts index 244e37eb80cc..00f83247d93c 100644 --- a/packages/jest-haste-map/src/index.ts +++ b/packages/jest-haste-map/src/index.ts @@ -30,6 +30,7 @@ import normalizePathSep from './lib/normalizePathSep'; import type { ChangeEvent, CrawlerOptions, + DependencyExtractor, EventsQueue, FileData, FileMetaData, @@ -316,10 +317,11 @@ export default class HasteMap extends EventEmitter { } if (options.dependencyExtractor) { - const dependencyExtractor = await requireOrImportModule( - options.dependencyExtractor, - false, - ); + const dependencyExtractor = + await requireOrImportModule( + options.dependencyExtractor, + false, + ); if (dependencyExtractor.getCacheKey) { dependencyExtractorHash = String(dependencyExtractor.getCacheKey()); } diff --git a/packages/jest-haste-map/src/types.ts b/packages/jest-haste-map/src/types.ts index 314348955655..62d0c2e64d0b 100644 --- a/packages/jest-haste-map/src/types.ts +++ b/packages/jest-haste-map/src/types.ts @@ -154,3 +154,12 @@ export type ChangeEvent = { hasteFS: HasteFS; moduleMap: ModuleMap; }; + +export type DependencyExtractor = { + extract: ( + code: string, + filePath: string, + defaultExtract: DependencyExtractor['extract'], + ) => Iterable; + getCacheKey?: () => string; +}; diff --git a/packages/jest-haste-map/src/worker.ts b/packages/jest-haste-map/src/worker.ts index 3f584ca18eab..fb1d38b77a5a 100644 --- a/packages/jest-haste-map/src/worker.ts +++ b/packages/jest-haste-map/src/worker.ts @@ -12,7 +12,12 @@ import {requireOrImportModule} from 'jest-util'; import blacklist from './blacklist'; import H from './constants'; import * as dependencyExtractor from './lib/dependencyExtractor'; -import type {HasteImpl, WorkerMessage, WorkerMetadata} from './types'; +import type { + DependencyExtractor, + HasteImpl, + WorkerMessage, + WorkerMetadata, +} from './types'; const PACKAGE_JSON = path.sep + 'package.json'; @@ -75,7 +80,10 @@ export async function worker(data: WorkerMessage): Promise { dependencies = Array.from( data.dependencyExtractor ? ( - await requireOrImportModule(data.dependencyExtractor, false) + await requireOrImportModule( + data.dependencyExtractor, + false, + ) ).extract(content, filePath, dependencyExtractor.extract) : dependencyExtractor.extract(content), );