UNPKG

@browserstack/testcafe

Version:

Automated browser testing for the modern web development stack.

40 lines 5.29 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const events_1 = __importDefault(require("events")); const TERMINATION_TYPES = { sigint: 'sigint', sigbreak: 'sigbreak', shutdown: 'shutdown' }; const TERMINATION_LEVEL_INCREASED_EVENT = 'termination-level-increased'; class TerminationHandler extends events_1.default { constructor() { super(); this.handledSignalsCount = { [TERMINATION_TYPES.sigint]: 0, [TERMINATION_TYPES.sigbreak]: 0, [TERMINATION_TYPES.shutdown]: 0 }; this.terminationLevel = 0; this._setupHandlers(); } _exitEventHandler(terminationType) { this.handledSignalsCount[terminationType]++; if (this.handledSignalsCount[terminationType] > this.terminationLevel) { this.terminationLevel = this.handledSignalsCount[terminationType]; this.emit(TERMINATION_LEVEL_INCREASED_EVENT, this.terminationLevel); } } _setupHandlers() { process.on('SIGINT', () => this._exitEventHandler(TERMINATION_TYPES.sigint)); process.on('SIGBREAK', () => this._exitEventHandler(TERMINATION_TYPES.sigbreak)); process.on('message', message => message === 'shutdown' && this._exitEventHandler(TERMINATION_TYPES.shutdown)); } } exports.default = TerminationHandler; TerminationHandler.TERMINATION_LEVEL_INCREASED_EVENT = TERMINATION_LEVEL_INCREASED_EVENT; module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYXRpb24taGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGkvdGVybWluYXRpb24taGFuZGxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUFrQztBQUdsQyxNQUFNLGlCQUFpQixHQUFHO0lBQ3RCLE1BQU0sRUFBSSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFFBQVEsRUFBRSxVQUFVO0NBQ3ZCLENBQUM7QUFFRixNQUFNLGlDQUFpQyxHQUFHLDZCQUE2QixDQUFDO0FBRXhFLE1BQXFCLGtCQUFtQixTQUFRLGdCQUFZO0lBQ3hEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLENBQUMsbUJBQW1CLEdBQUc7WUFDdkIsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBSSxDQUFDO1lBQy9CLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMvQixDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7U0FDbEMsQ0FBQztRQUVGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFFMUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxpQkFBaUIsQ0FBRSxlQUFlO1FBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBRTVDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRWxFLElBQUksQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDdkU7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRWpGLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuSCxDQUFDO0NBQ0o7QUEvQkQscUNBK0JDO0FBRUQsa0JBQWtCLENBQUMsaUNBQWlDLEdBQUcsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gJ2V2ZW50cyc7XG5cblxuY29uc3QgVEVSTUlOQVRJT05fVFlQRVMgPSB7XG4gICAgc2lnaW50OiAgICdzaWdpbnQnLFxuICAgIHNpZ2JyZWFrOiAnc2lnYnJlYWsnLFxuICAgIHNodXRkb3duOiAnc2h1dGRvd24nXG59O1xuXG5jb25zdCBURVJNSU5BVElPTl9MRVZFTF9JTkNSRUFTRURfRVZFTlQgPSAndGVybWluYXRpb24tbGV2ZWwtaW5jcmVhc2VkJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVybWluYXRpb25IYW5kbGVyIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5oYW5kbGVkU2lnbmFsc0NvdW50ID0ge1xuICAgICAgICAgICAgW1RFUk1JTkFUSU9OX1RZUEVTLnNpZ2ludF06ICAgMCxcbiAgICAgICAgICAgIFtURVJNSU5BVElPTl9UWVBFUy5zaWdicmVha106IDAsXG4gICAgICAgICAgICBbVEVSTUlOQVRJT05fVFlQRVMuc2h1dGRvd25dOiAwXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy50ZXJtaW5hdGlvbkxldmVsID0gMDtcblxuICAgICAgICB0aGlzLl9zZXR1cEhhbmRsZXJzKCk7XG4gICAgfVxuXG4gICAgX2V4aXRFdmVudEhhbmRsZXIgKHRlcm1pbmF0aW9uVHlwZSkge1xuICAgICAgICB0aGlzLmhhbmRsZWRTaWduYWxzQ291bnRbdGVybWluYXRpb25UeXBlXSsrO1xuXG4gICAgICAgIGlmICh0aGlzLmhhbmRsZWRTaWduYWxzQ291bnRbdGVybWluYXRpb25UeXBlXSA+IHRoaXMudGVybWluYXRpb25MZXZlbCkge1xuICAgICAgICAgICAgdGhpcy50ZXJtaW5hdGlvbkxldmVsID0gdGhpcy5oYW5kbGVkU2lnbmFsc0NvdW50W3Rlcm1pbmF0aW9uVHlwZV07XG5cbiAgICAgICAgICAgIHRoaXMuZW1pdChURVJNSU5BVElPTl9MRVZFTF9JTkNSRUFTRURfRVZFTlQsIHRoaXMudGVybWluYXRpb25MZXZlbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfc2V0dXBIYW5kbGVycyAoKSB7XG4gICAgICAgIHByb2Nlc3Mub24oJ1NJR0lOVCcsICgpID0+IHRoaXMuX2V4aXRFdmVudEhhbmRsZXIoVEVSTUlOQVRJT05fVFlQRVMuc2lnaW50KSk7XG4gICAgICAgIHByb2Nlc3Mub24oJ1NJR0JSRUFLJywgKCkgPT4gdGhpcy5fZXhpdEV2ZW50SGFuZGxlcihURVJNSU5BVElPTl9UWVBFUy5zaWdicmVhaykpO1xuXG4gICAgICAgIHByb2Nlc3Mub24oJ21lc3NhZ2UnLCBtZXNzYWdlID0+IG1lc3NhZ2UgPT09ICdzaHV0ZG93bicgJiYgdGhpcy5fZXhpdEV2ZW50SGFuZGxlcihURVJNSU5BVElPTl9UWVBFUy5zaHV0ZG93bikpO1xuICAgIH1cbn1cblxuVGVybWluYXRpb25IYW5kbGVyLlRFUk1JTkFUSU9OX0xFVkVMX0lOQ1JFQVNFRF9FVkVOVCA9IFRFUk1JTkFUSU9OX0xFVkVMX0lOQ1JFQVNFRF9FVkVOVDtcbiJdfQ==