80 lines
10 KiB
JavaScript
80 lines
10 KiB
JavaScript
|
"use strict";
|
||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const chalk_1 = __importDefault(require("chalk"));
|
||
|
const lodash_1 = require("lodash");
|
||
|
const log_update_async_hook_1 = __importDefault(require("log-update-async-hook"));
|
||
|
const render_callsite_sync_1 = __importDefault(require("../utils/render-callsite-sync"));
|
||
|
const create_stack_filter_1 = __importDefault(require("../errors/create-stack-filter"));
|
||
|
exports.default = {
|
||
|
messages: [],
|
||
|
debugLogging: false,
|
||
|
streamsOverridden: false,
|
||
|
_overrideStream(stream) {
|
||
|
const initialWrite = stream.write;
|
||
|
stream.write = (chunk, encoding, cb) => {
|
||
|
if (this.debugLogging)
|
||
|
initialWrite.call(stream, chunk, encoding, cb);
|
||
|
else {
|
||
|
this.debugLogging = true;
|
||
|
log_update_async_hook_1.default.clear();
|
||
|
log_update_async_hook_1.default.done();
|
||
|
initialWrite.call(stream, chunk, encoding, cb);
|
||
|
setTimeout(() => this._showAllBreakpoints(), 0);
|
||
|
this.debugLogging = false;
|
||
|
}
|
||
|
};
|
||
|
},
|
||
|
_overrideStreams() {
|
||
|
this._overrideStream(process.stdout);
|
||
|
this._overrideStream(process.stderr);
|
||
|
this.streamsOverridden = true;
|
||
|
},
|
||
|
_getMessageAsString() {
|
||
|
let string = '';
|
||
|
for (const message of this.messages)
|
||
|
string += message.frame;
|
||
|
return string;
|
||
|
},
|
||
|
_showAllBreakpoints() {
|
||
|
if (!this.messages.length)
|
||
|
return;
|
||
|
this.debugLogging = true;
|
||
|
(0, log_update_async_hook_1.default)(this._getMessageAsString());
|
||
|
this.debugLogging = false;
|
||
|
},
|
||
|
showBreakpoint(testRunId, userAgent, callsite, testError) {
|
||
|
if (!this.streamsOverridden)
|
||
|
this._overrideStreams();
|
||
|
const callsiteStr = (0, render_callsite_sync_1.default)(callsite, {
|
||
|
frameSize: 1,
|
||
|
stackFilter: (0, create_stack_filter_1.default)(Error.stackTraceLimit),
|
||
|
stack: false,
|
||
|
});
|
||
|
const frame = `\n` +
|
||
|
`----\n` +
|
||
|
`${userAgent}\n` +
|
||
|
chalk_1.default.yellow(testError ? 'DEBUGGER PAUSE ON FAILED TEST:' : 'DEBUGGER PAUSE:') +
|
||
|
`${testError ? `\n${testError}` : ''}` +
|
||
|
`${!testError && callsiteStr ? `\n${callsiteStr}` : ''}` +
|
||
|
'\n' +
|
||
|
`----\n`;
|
||
|
const message = { testRunId, frame };
|
||
|
const index = (0, lodash_1.findIndex)(this.messages, { testRunId });
|
||
|
if (index === -1)
|
||
|
this.messages.push(message);
|
||
|
else
|
||
|
this.messages[index] = message;
|
||
|
this._showAllBreakpoints();
|
||
|
},
|
||
|
hideBreakpoint(testRunId) {
|
||
|
const index = (0, lodash_1.findIndex)(this.messages, { testRunId });
|
||
|
if (index !== -1)
|
||
|
this.messages.splice(index, 1);
|
||
|
this._showAllBreakpoints();
|
||
|
},
|
||
|
};
|
||
|
module.exports = exports.default;
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctbG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25vdGlmaWNhdGlvbnMvZGVidWctbG9nZ2VyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLG1DQUFtQztBQUNuQyxrRkFBOEM7QUFDOUMseUZBQStEO0FBQy9ELHdGQUE4RDtBQUU5RCxrQkFBZTtJQUNYLFFBQVEsRUFBRSxFQUFFO0lBRVosWUFBWSxFQUFFLEtBQUs7SUFFbkIsaUJBQWlCLEVBQUUsS0FBSztJQUV4QixlQUFlLENBQUUsTUFBTTtRQUNuQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBRWxDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQ25DLElBQUksSUFBSSxDQUFDLFlBQVk7Z0JBQ2pCLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQzlDO2dCQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUV6QiwrQkFBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNsQiwrQkFBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUVqQixZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUUvQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRWhELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2FBQzdCO1FBQ0wsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELG1CQUFtQjtRQUNmLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUVoQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQy9CLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRTVCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQ3JCLE9BQU87UUFFWCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFBLCtCQUFTLEVBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYyxDQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFNUIsTUFBTSxXQUFXLEdBQUcsSUFBQSw4QkFBa0IsRUFBQyxRQUFRLEVBQUU7WUFDN0MsU0FBUyxFQUFJLENBQUM7WUFDZCxXQUFXLEVBQUUsSUFBQSw2QkFBaUIsRUFBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1lBQ3JELEtBQUssRUFBUSxLQUFLO1NBQ3JCLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxHQUFHLElBQUk7WUFDSixRQUFRO1lBQ1IsR0FBRyxTQUFTLElBQUk7WUFDaEIsZUFBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztZQUM5RSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3RDLEdBQUcsQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSTtZQUNKLFFBQVEsQ0FBQztRQUV2QixNQUFNLE9BQU8sR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEtBQUssR0FBSyxJQUFBLGtCQUFTLEVBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFeEQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7O1lBRTVCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBRW5DLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjLENBQUUsU0FBUztRQUNyQixNQUFNLEtBQUssR0FBRyxJQUFBLGtCQUFTLEVBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFdEQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IGZpbmRJbmRleCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nVXBkYXRlIGZyb20gJ2xvZy11cGRhdGUtYXN5bmMtaG9vayc7XG5pbXBvcnQgcmVuZGVyQ2FsbHNpdGVTeW5jIGZyb20gJy4uL3V0aWxzL3JlbmRlci1jYWxsc2l0ZS1zeW5jJztcbmltcG9ydCBjcmVhdGVTdGFja0ZpbHRlciBmcm9tICcuLi9lcnJvcnMvY3JlYXRlLXN0YWNrLWZpbHRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBtZXNzYWdlczogW10sXG5cbiAgICBkZWJ1Z0xvZ2dpbmc6IGZhbHNlLFxuXG4gICAgc3RyZWFtc092ZXJyaWRkZW46IGZhbHNlLFxuXG4gICAgX292ZXJyaWRlU3RyZWFtIChzdHJlYW0pIHtcbiAgICAgICAgY29uc3QgaW5pdGlhbFdyaXRlID0gc3RyZWFtLndyaXRlO1xuXG4gICAgICAgIHN0cmVhbS53cml0ZSA9IChjaHVuaywgZW5jb2RpbmcsIGNiKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZWJ1Z0xvZ2dpbmcpXG4gICAgICAgICAgICAgICAgaW5pd
|