import * as childProcess from 'child_process';
import Xev from 'xev';

const ev = new Xev();

export default function () {
	const log: any[] = [];

	const p = childProcess.fork(__dirname + '/notes-stats-child.js');

	p.on('message', stats => {
		ev.emit('notesStats', stats);
		log.push(stats);
		if (log.length > 100) log.shift();
	});

	ev.on('requestNotesStatsLog', id => {
		ev.emit('notesStatsLog:' + id, log);
	});

	process.on('exit', code => {
		process.kill(p.pid);
	});

}

import * as childProcess from 'child_process';
import Xev from 'xev';

const ev = new Xev();

export default function() {
	const log: any[] = [];

	const p = childProcess.fork(__dirname + '/notes-stats-child.js');

	p.on('message', stats => {
		ev.emit('notesStats', stats);
		log.push(stats);
		if (log.length > 100) log.shift();
	});

	ev.on('requestNotesStatsLog', id => {
		ev.emit('notesStatsLog:' + id, log);
	});
}

--- 
+++ 
@@ -3,7 +3,7 @@
 
 const ev = new Xev();
 
-export default function() {
+export default function () {
 	const log: any[] = [];
 
 	const p = childProcess.fork(__dirname + '/notes-stats-child.js');
@@ -17,4 +17,9 @@
 	ev.on('requestNotesStatsLog', id => {
 		ev.emit('notesStatsLog:' + id, log);
 	});
+
+	process.on('exit', code => {
+		process.kill(p.pid);
+	});
+
 }
Kill child process on exit
