90 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| Object.defineProperty(exports, "__esModule", { value: true });
 | |
| var context_1 = require("../logger/context");
 | |
| var level_1 = require("../logger/level");
 | |
| var extendArray = function (array) {
 | |
|     return Object.defineProperty(array, 'last', {
 | |
|         configurable: true,
 | |
|         get: function () {
 | |
|             return this[this.length - 1];
 | |
|         },
 | |
|     });
 | |
| };
 | |
| exports.extendArray = extendArray;
 | |
| var LogTargetMock = (function () {
 | |
|     function LogTargetMock(minLevel) {
 | |
|         if (minLevel === void 0) { minLevel = -Infinity; }
 | |
|         var _this = this;
 | |
|         this.minLevel = minLevel;
 | |
|         this.messages = Object.defineProperties(extendArray([]), {
 | |
|             trace: { get: function () { return _this.filteredMessages(level_1.LogLevels.trace); } },
 | |
|             debug: { get: function () { return _this.filteredMessages(level_1.LogLevels.debug); } },
 | |
|             info: { get: function () { return _this.filteredMessages(level_1.LogLevels.info); } },
 | |
|             warn: { get: function () { return _this.filteredMessages(level_1.LogLevels.warn); } },
 | |
|             error: { get: function () { return _this.filteredMessages(level_1.LogLevels.error); } },
 | |
|             fatal: { get: function () { return _this.filteredMessages(level_1.LogLevels.fatal); } },
 | |
|         });
 | |
|         this.lines = Object.defineProperties(extendArray([]), {
 | |
|             trace: { get: function () { return _this.filteredLines(level_1.LogLevels.trace); } },
 | |
|             debug: { get: function () { return _this.filteredLines(level_1.LogLevels.debug); } },
 | |
|             info: { get: function () { return _this.filteredLines(level_1.LogLevels.info); } },
 | |
|             warn: { get: function () { return _this.filteredLines(level_1.LogLevels.warn); } },
 | |
|             error: { get: function () { return _this.filteredLines(level_1.LogLevels.error); } },
 | |
|             fatal: { get: function () { return _this.filteredLines(level_1.LogLevels.fatal); } },
 | |
|         });
 | |
|         this.stream = {
 | |
|             write: function (msg) { return !!_this.lines.push(msg); },
 | |
|         };
 | |
|     }
 | |
|     LogTargetMock.prototype.format = function (msg) {
 | |
|         this.messages.push(msg);
 | |
|         var lvl = msg.context[context_1.LogContexts.logLevel];
 | |
|         if (lvl != null) {
 | |
|             return "[level:" + lvl + "] " + msg.message;
 | |
|         }
 | |
|         return msg.message;
 | |
|     };
 | |
|     LogTargetMock.prototype.clear = function () {
 | |
|         this.messages.splice(0, this.messages.length);
 | |
|         this.lines.splice(0, this.lines.length);
 | |
|     };
 | |
|     LogTargetMock.prototype.filteredMessages = function (level, untilLevel) {
 | |
|         var filter;
 | |
|         if (level == null) {
 | |
|             filter = function (m) { return m.context[context_1.LogContexts.logLevel] == null; };
 | |
|         }
 | |
|         else if (untilLevel != null) {
 | |
|             filter = function (m) {
 | |
|                 var lvl = m.context[context_1.LogContexts.logLevel];
 | |
|                 return lvl != null && lvl >= level && lvl <= untilLevel;
 | |
|             };
 | |
|         }
 | |
|         else {
 | |
|             filter = function (m) { return m.context[context_1.LogContexts.logLevel] === level; };
 | |
|         }
 | |
|         return extendArray(this.messages.filter(filter));
 | |
|     };
 | |
|     LogTargetMock.prototype.filteredLines = function (level, untilLevel) {
 | |
|         var extractLevel = function (line) {
 | |
|             var level = (line.match(/^\[level:([0-9]+)\] /) || [])[1];
 | |
|             return level == null ? undefined : parseInt(level, 10);
 | |
|         };
 | |
|         var filter;
 | |
|         if (level == null) {
 | |
|             filter = function (line) { return extractLevel(line) === undefined; };
 | |
|         }
 | |
|         else if (untilLevel != null) {
 | |
|             filter = function (line) {
 | |
|                 var lvl = extractLevel(line);
 | |
|                 return lvl != null && lvl >= level && lvl <= untilLevel;
 | |
|             };
 | |
|         }
 | |
|         else {
 | |
|             filter = function (line) { return extractLevel(line) === level; };
 | |
|         }
 | |
|         return extendArray(this.lines.filter(filter));
 | |
|     };
 | |
|     return LogTargetMock;
 | |
| }());
 | |
| exports.LogTargetMock = LogTargetMock;
 |