UNPKG

@qaflag/core

Version:

Base requirements for the QA Flag library

139 lines 5.43 kB
"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