From ae3b43c935383ef2f06ae3ad18a3e155e70a18e4 Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 28 Jul 2020 10:44:21 +0200 Subject: [PATCH] chore: make TestWatcher extend emittery --- packages/jest-core/package.json | 1 + packages/jest-core/src/TestWatcher.ts | 4 ++-- packages/jest-runner/package.json | 1 + packages/jest-runner/src/index.ts | 3 +-- packages/jest-runner/src/types.ts | 8 +++----- yarn.lock | 9 +++++++++ 6 files changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index 862d3c54995a..7fa80ffaffb5 100644 --- a/packages/jest-core/package.json +++ b/packages/jest-core/package.json @@ -13,6 +13,7 @@ "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", + "emittery": "^0.7.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-changed-files": "^26.1.0", diff --git a/packages/jest-core/src/TestWatcher.ts b/packages/jest-core/src/TestWatcher.ts index 750dcbe45efc..651c78f122eb 100644 --- a/packages/jest-core/src/TestWatcher.ts +++ b/packages/jest-core/src/TestWatcher.ts @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -import {EventEmitter} from 'events'; +import emittery = require('emittery'); type State = { interrupted: boolean; }; -export default class TestWatcher extends EventEmitter { +export default class TestWatcher extends emittery.Typed<{change: State}> { state: State; private _isWatchMode: boolean; diff --git a/packages/jest-runner/package.json b/packages/jest-runner/package.json index 9a1b9cf755dc..fe352d571939 100644 --- a/packages/jest-runner/package.json +++ b/packages/jest-runner/package.json @@ -16,6 +16,7 @@ "@jest/types": "^26.1.0", "@types/node": "*", "chalk": "^4.0.0", + "emittery": "^0.7.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-config": "^26.1.0", diff --git a/packages/jest-runner/src/index.ts b/packages/jest-runner/src/index.ts index 0f1d069c6af0..485d9fe3ebe8 100644 --- a/packages/jest-runner/src/index.ts +++ b/packages/jest-runner/src/index.ts @@ -21,7 +21,6 @@ import type { TestRunnerContext as JestTestRunnerContext, TestRunnerOptions as JestTestRunnerOptions, TestWatcher as JestTestWatcher, - WatcherState, } from './types'; const TEST_WORKER_PATH = require.resolve('./testWorker'); @@ -179,7 +178,7 @@ class TestRunner { }; const onInterrupt = new Promise((_, reject) => { - watcher.on('change', (state: WatcherState) => { + watcher.on('change', state => { if (state.interrupted) { reject(new CancelRun()); } diff --git a/packages/jest-runner/src/types.ts b/packages/jest-runner/src/types.ts index 69d9525ff73c..868d0980c2ca 100644 --- a/packages/jest-runner/src/types.ts +++ b/packages/jest-runner/src/types.ts @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import type {EventEmitter} from 'events'; +import type {Typed as EmitteryTyped} from 'emittery'; import type {Config} from '@jest/types'; import type {SerializableError, TestResult} from '@jest/test-result'; import type {JestEnvironment} from '@jest/environment'; @@ -61,10 +61,8 @@ export type TestRunnerSerializedContext = { }; // TODO: Should live in `@jest/core` or `jest-watcher` -export type WatcherState = { - interrupted: boolean; -}; -export interface TestWatcher extends EventEmitter { +type WatcherState = {interrupted: boolean}; +export interface TestWatcher extends EmitteryTyped<{change: WatcherState}> { state: WatcherState; setState(state: WatcherState): void; isInterrupted(): boolean; diff --git a/yarn.lock b/yarn.lock index 4569c6275937..4aeb2b45a6ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1708,6 +1708,7 @@ __metadata: "@types/rimraf": ^3.0.0 ansi-escapes: ^4.2.1 chalk: ^4.0.0 + emittery: ^0.7.1 exit: ^0.1.2 graceful-fs: ^4.2.4 jest-changed-files: ^26.1.0 @@ -7224,6 +7225,13 @@ __metadata: languageName: node linkType: hard +"emittery@npm:^0.7.1": + version: 0.7.1 + resolution: "emittery@npm:0.7.1" + checksum: 917b0995126e004ddf175e7d0a74ae8608083846c3f3608e964bf13caba220a003b7455ced5bf813a40e977605be48e53c74f6150fbe587a47ef6b985b8a447e + languageName: node + linkType: hard + "emoji-regex@npm:>=6.0.0 <=6.1.1": version: 6.1.1 resolution: "emoji-regex@npm:6.1.1" @@ -11453,6 +11461,7 @@ fsevents@^1.2.7: "@types/node": "*" "@types/source-map-support": ^0.5.0 chalk: ^4.0.0 + emittery: ^0.7.1 exit: ^0.1.2 graceful-fs: ^4.2.4 jest-circus: ^26.1.0