diff --git a/CHANGELOG.md b/CHANGELOG.md index 51367d00c36a..3985721a9662 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,6 +49,8 @@ ### Performance +- `[jest-watcher]` Minor optimization for JestHook ([#8746](https://github.com/facebook/jest/pull/8746) + ## 24.8.0 ### Features diff --git a/packages/jest-watcher/src/JestHooks.ts b/packages/jest-watcher/src/JestHooks.ts index 5f8cad6b775c..f697192f2da4 100644 --- a/packages/jest-watcher/src/JestHooks.ts +++ b/packages/jest-watcher/src/JestHooks.ts @@ -25,20 +25,17 @@ class JestHooks { shouldRunTestSuite: Array; }; + private _subscriber: JestHookSubscriber; + private _emitter: JestHookEmitter; + constructor() { this._listeners = { onFileChange: [], onTestRunComplete: [], shouldRunTestSuite: [], }; - } - - isUsed(hook: AvailableHooks) { - return this._listeners[hook] && this._listeners[hook].length; - } - getSubscriber(): JestHookSubscriber { - return { + this._subscriber = { onFileChange: fn => { this._listeners.onFileChange.push(fn); }, @@ -49,10 +46,8 @@ class JestHooks { this._listeners.shouldRunTestSuite.push(fn); }, }; - } - getEmitter(): JestHookEmitter { - return { + this._emitter = { onFileChange: fs => this._listeners.onFileChange.forEach(listener => listener(fs)), onTestRunComplete: results => @@ -70,6 +65,18 @@ class JestHooks { }, }; } + + isUsed(hook: AvailableHooks) { + return this._listeners[hook] && this._listeners[hook].length; + } + + getSubscriber(): Readonly { + return this._subscriber; + } + + getEmitter(): Readonly { + return this._emitter; + } } export default JestHooks;