alm
Version:
The best IDE for TypeScript
30 lines (25 loc) • 710 B
text/typescript
/**
* There are cases when we have to exit the server
* but don't want to leave a client hanging
* so we tell them about it. e.g.
* - ctrl + c
* - globbing failure
*/
import {TypedEvent} from "../common/events";
const serverExit = new TypedEvent();
/**
* We want subscribers first
* and then exit process
* always in that order
*/
export const onServerExit = (cb: () => void) => serverExit.on(cb);
export const emitServerExit = () => {
serverExit.emit({});
process.exit();
}
/**
* http://stackoverflow.com/a/14032965/390330
* However the network stack only works if user does ctrl+c. In other cases we cannot even cast.
*/
// catches ctrl+c event
process.on('SIGINT', emitServerExit);