@qaflag/core
Version:
Base requirements for the QA Flag library
139 lines • 5.43 kB
JavaScript
"use strict";
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var _Logger_messages, _Logger_started, _Logger_ended;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = void 0;
const log_message_1 = require("./log-message");
class Logger {
constructor() {
_Logger_messages.set(this, []);
_Logger_started.set(this, null);
_Logger_ended.set(this, null);
}
get started() {
return __classPrivateFieldGet(this, _Logger_started, "f");
}
get ended() {
return __classPrivateFieldGet(this, _Logger_ended, "f");
}
get duration() {
this.enforceHasEnded();
return (this.ended || 0) - (this.started || 0);
}
get length() {
return __classPrivateFieldGet(this, _Logger_messages, "f").length;
}
get lastLine() {
return __classPrivateFieldGet(this, _Logger_messages, "f")[__classPrivateFieldGet(this, _Logger_messages, "f").length - 1];
}
lastLineIsBreak() {
return (this.lastLine.type == 'lineBreak' || this.lastLine.text.trim().length == 0);
}
start() {
this.enforceNotStarted();
__classPrivateFieldSet(this, _Logger_started, Date.now(), "f");
}
end() {
this.enforceStartedButNotEnded();
__classPrivateFieldSet(this, _Logger_ended, Date.now(), "f");
}
get messages() {
return __classPrivateFieldGet(this, _Logger_messages, "f");
}
count(type) {
return this.filter(type).length;
}
filter(type) {
type = Array.isArray(type) ? type : [type];
return __classPrivateFieldGet(this, _Logger_messages, "f").filter(message => type.includes(message.type));
}
get failed() {
return __classPrivateFieldGet(this, _Logger_messages, "f").some(message => message.type == 'fail');
}
enforceNotStarted() {
if (this.started)
throw 'Already started.';
if (this.ended)
throw 'Already ended.';
}
enforceStartedButNotEnded() {
if (!this.started)
throw 'Not yet started.';
if (this.ended)
throw 'Already ended.';
}
enforceHasEnded() {
if (!this.started)
throw 'Not yet started.';
if (!this.ended)
throw 'Not yet ended.';
}
messageToString(message) {
if (typeof message == 'string' ||
typeof message == 'number' ||
typeof message == 'boolean') {
return String(message);
}
return message.string.$;
}
log(type, content) {
this.enforceStartedButNotEnded();
const message = new log_message_1.LogMessage(type, typeof content == 'string' ? { text: content } : content);
__classPrivateFieldGet(this, _Logger_messages, "f").push(message);
return message;
}
debug(content) {
const messages = Array.isArray(content) ? content : [content];
messages.forEach(message => {
this.log('info', { text: this.messageToString(message) });
});
}
horizontalRule() {
this.log('horizontalRule', '-------');
}
lineBreak() {
this.log('lineBreak', '');
}
info(content) {
const messages = Array.isArray(content) ? content : [content];
messages.forEach(message => {
this.log('info', { text: this.messageToString(message) });
});
}
heading(content) {
const messages = Array.isArray(content) ? content : [content];
messages.forEach(message => {
this.log('heading', { text: this.messageToString(message) });
});
}
action(name, target, text) {
this.log('action', {
name,
target: target === null || target === void 0 ? void 0 : target.name,
text: text || '',
});
}
pass(content) {
const messages = Array.isArray(content) ? content : [content];
messages.forEach(message => this.log('pass', message));
}
fail(content, isOptional = false) {
const messages = Array.isArray(content) ? content : [content];
messages.forEach(message => {
this.log(isOptional ? 'fail' : 'optionalFail', message);
});
}
}
exports.Logger = Logger;
_Logger_messages = new WeakMap(), _Logger_started = new WeakMap(), _Logger_ended = new WeakMap();
//# sourceMappingURL=logger.js.map