intern
Version:
Intern. A next-generation code testing stack for JavaScript.
134 lines • 4.7 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "@theintern/common"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.eventHandler = exports.createEventHandler = void 0;
var common_1 = require("@theintern/common");
var Reporter = (function () {
function Reporter(executor, options) {
if (options === void 0) { options = {}; }
if (options.output) {
this.output = options.output;
}
if (options.console) {
this.console = options.console;
}
this.executor = executor;
this._registerEventHandlers();
}
Object.defineProperty(Reporter.prototype, "console", {
get: function () {
if (!this._console) {
this._console = getConsole();
}
return this._console;
},
set: function (value) {
this._console = value;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Reporter.prototype, "output", {
get: function () {
if (!this._output) {
if (common_1.global.process != null) {
return common_1.global.process.stdout;
}
else {
var _console_1 = this.console;
this._output = {
write: function (chunk, _encoding, callback) {
_console_1.log(chunk);
callback();
},
end: function (chunk, _encoding, callback) {
_console_1.log(chunk);
callback();
}
};
}
}
return this._output;
},
set: function (value) {
this._output = value;
},
enumerable: false,
configurable: true
});
Reporter.prototype.formatError = function (error, options) {
return this.executor.formatError(error, options);
};
Reporter.prototype._registerEventHandlers = function () {
var _this = this;
if (!this._eventHandlers) {
return;
}
var _loop_1 = function (name_1) {
this_1.executor.on(name_1, function () {
var _a;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var handler = _this._eventHandlers[name_1];
return (_a = _this)[handler].apply(_a, args);
});
};
var this_1 = this;
for (var name_1 in this._eventHandlers) {
_loop_1(name_1);
}
};
return Reporter;
}());
exports.default = Reporter;
function createEventHandler() {
return function () {
function decorate(target, propertyKey, _descriptor) {
if (!target.hasOwnProperty('_eventHandlers')) {
if (target._eventHandlers != null) {
target._eventHandlers = Object.create(target._eventHandlers);
}
else {
target._eventHandlers = {};
}
}
target._eventHandlers[propertyKey] = propertyKey;
}
return decorate;
};
}
exports.createEventHandler = createEventHandler;
exports.eventHandler = createEventHandler();
function getConsole() {
if (typeof console !== 'undefined') {
return console;
}
return {
assert: noop,
count: noop,
dir: noop,
error: noop,
exception: noop,
info: noop,
log: noop,
table: noop,
time: noop,
timeEnd: noop,
trace: noop,
warn: noop
};
}
function noop() {
}
});
//# sourceMappingURL=Reporter.js.map