Skip to content
This repository was archived by the owner on Aug 7, 2021. It is now read-only.

Commit 9782e44

Browse files
committed
fix: don't throw MaxListenersExceeded error when more than 11 proccesses are started from sidekick
1 parent c5dd7c9 commit 9782e44

File tree

3 files changed

+26
-7
lines changed

3 files changed

+26
-7
lines changed

Diff for: lib/after-watch.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
const { stopWebpackCompiler } = require('./compiler');
2+
const { removeListener } = require("./utils");
23

3-
module.exports = function($logger) {
4+
module.exports = function($logger, $liveSyncService) {
45
$logger.info("Stopping webpack watch");
56
stopWebpackCompiler();
7+
removeListener($liveSyncService, "liveSyncStopped");
8+
removeListener(process, "exit");
69
}

Diff for: lib/before-watch.js

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
const { getWebpackProcesses, runWebpackCompiler, stopWebpackCompiler } = require("./compiler");
2+
const { addListener } = require("./utils");
23

34
module.exports = function ($logger, $liveSyncService, $devicesService, hookArgs) {
45
if (hookArgs.config) {
56
const appFilesUpdaterOptions = hookArgs.config.appFilesUpdaterOptions;
67
if (appFilesUpdaterOptions.bundle) {
7-
$liveSyncService.on("liveSyncStopped", data => {
8+
addListener($liveSyncService, "liveSyncStopped", () => {
89
const webpackProcesses = getWebpackProcesses();
910
Object.keys(webpackProcesses).forEach(platform => {
1011
const devices = $devicesService.getDevicesForPlatform(platform);
@@ -13,10 +14,7 @@ module.exports = function ($logger, $liveSyncService, $devicesService, hookArgs)
1314
}
1415
});
1516
});
16-
17-
process.on("exit", () => {
18-
stopWebpackCompiler();
19-
});
17+
addListener(process, "exit", stopWebpackCompiler);
2018

2119
const platforms = hookArgs.config.platforms;
2220
return Promise.all(platforms.map(platform => {

Diff for: lib/utils.js

+19-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ const {
88
isAndroid,
99
} = require("../projectHelpers");
1010

11+
const eventHandlers = {};
12+
1113
function debuggingEnabled(liveSyncService, projectDir) {
1214
const deviceDescriptors = liveSyncService.getLiveSyncDeviceDescriptors(projectDir);
1315
return deviceDescriptors.some(device => device.debugggingEnabled);
@@ -76,10 +78,26 @@ function shouldSnapshot(config) {
7678
return config.bundle && config.release && platformSupportsSnapshot && osSupportsSnapshot;
7779
}
7880

81+
function addListener(eventEmitter, name, handler) {
82+
if (!eventHandlers[name]) {
83+
eventEmitter.on(name, handler);
84+
eventHandlers[name] = handler;
85+
}
86+
}
87+
88+
function removeListener(eventEmitter, name) {
89+
if (eventHandlers[name]) {
90+
eventEmitter.removeListener(name, eventHandlers[name]);
91+
delete eventHandlers[name];
92+
}
93+
}
94+
7995
module.exports = {
8096
buildEnvData,
8197
debuggingEnabled,
8298
shouldSnapshot,
8399
getUpdatedEmittedFiles,
84-
parseHotUpdateChunkName
100+
parseHotUpdateChunkName,
101+
addListener,
102+
removeListener
85103
};

0 commit comments

Comments
 (0)