From ee751bf2162d04ddfb3eaafa198d7c86ad59141c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Norte?= Date: Thu, 20 Sep 2018 18:12:14 +0100 Subject: [PATCH] Added method to get an iterator for all files in HasteFS (#7010) * Added method to get an iterator for all files in HasteFS * Used hasteFS.getFileIterator() in jest-resolve-dependencies * Update changelog --- CHANGELOG.md | 1 + packages/jest-haste-map/src/haste_fs.js | 4 ++++ packages/jest-resolve-dependencies/src/index.js | 11 +++++++---- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cea8853285a3..ac023720d4e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### Features - `[pretty-format]` Option to not escape strings in diff messages ([#5661](https://github.com/facebook/jest/pull/5661)) +- `[jest-haste-map]` Add `getFileIterator` to `HasteFS` for faster file iteration ([#7010](https://github.com/facebook/jest/pull/7010)). ### Fixes diff --git a/packages/jest-haste-map/src/haste_fs.js b/packages/jest-haste-map/src/haste_fs.js index f62d84ab19c1..af38d68ea700 100644 --- a/packages/jest-haste-map/src/haste_fs.js +++ b/packages/jest-haste-map/src/haste_fs.js @@ -44,6 +44,10 @@ export default class HasteFS { return Array.from(this._files.keys()); } + getFileIterator(): Iterator { + return this._files.keys(); + } + matchFiles(pattern: RegExp | string): Array { if (!(pattern instanceof RegExp)) { pattern = new RegExp(pattern); diff --git a/packages/jest-resolve-dependencies/src/index.js b/packages/jest-resolve-dependencies/src/index.js index d36c59d69688..19c98f001a84 100644 --- a/packages/jest-resolve-dependencies/src/index.js +++ b/packages/jest-resolve-dependencies/src/index.js @@ -100,10 +100,13 @@ class DependencyResolver { } } } - const modules = this._hasteFS.getAllFiles().map(file => ({ - dependencies: this.resolve(file, options), - file, - })); + const modules = []; + for (const file of this._hasteFS.getFileIterator()) { + modules.push({ + dependencies: this.resolve(file, options), + file, + }); + } return Array.from(collectModules(relatedPaths, modules, changed)); } }