diff --git a/packages/jest-haste-map/src/index.js b/packages/jest-haste-map/src/index.js index 1dddb1e0f537..445e7ff0c879 100644 --- a/packages/jest-haste-map/src/index.js +++ b/packages/jest-haste-map/src/index.js @@ -37,7 +37,6 @@ import type {Mapper} from './types'; import type {Path} from 'types/Config'; import type { HasteMap as HasteMapObject, - FileData as HasteMapFileData, InternalHasteMap, ModuleMetaData, ModuleMapData, @@ -361,7 +360,7 @@ class HasteMap extends EventEmitter { * 2. crawl the file system. */ _buildFileMap(): Promise<{ - deprecatedFiles: HasteMapFileData, + deprecatedFiles: Array<{moduleName: string, path: string}>, hasteMap: InternalHasteMap, }> { const read = this._options.resetCache ? this._createEmptyMap : this.read; @@ -370,14 +369,15 @@ class HasteMap extends EventEmitter { .then(() => read.call(this)) .catch(() => this._createEmptyMap()) .then(cachedHasteMap => { - const cachedFiles = new Map(cachedHasteMap.files); + const cachedFiles = []; + for (const [relativeFilePath, fileMetadata] of cachedHasteMap.files) { + const moduleName = fileMetadata[H.ID]; + cachedFiles.push({moduleName, path: relativeFilePath}); + } return this._crawl(cachedHasteMap).then(hasteMap => { - const deprecatedFiles = new Map(); - for (const [fileName, fileData] of cachedFiles) { - if (!hasteMap.files.has(fileName)) { - deprecatedFiles.set(fileName, fileData); - } - } + const deprecatedFiles = cachedFiles.filter( + file => !hasteMap.files.has(file.path), + ); return {deprecatedFiles, hasteMap}; }); }); @@ -579,7 +579,7 @@ class HasteMap extends EventEmitter { } _buildHasteMap(data: { - deprecatedFiles: HasteMapFileData, + deprecatedFiles: Array<{moduleName: string, path: string}>, hasteMap: InternalHasteMap, }): Promise { const {deprecatedFiles, hasteMap} = data; @@ -587,9 +587,9 @@ class HasteMap extends EventEmitter { const mocks = new Map(); const promises = []; - for (const [filePath, fileData] of deprecatedFiles) { - const moduleName = fileData[H.ID]; - this._recoverDuplicates(hasteMap, filePath, moduleName); + for (let i = 0; i < deprecatedFiles.length; ++i) { + const file = deprecatedFiles[i]; + this._recoverDuplicates(hasteMap, file.path, file.moduleName); } for (const relativeFilePath of hasteMap.files.keys()) {