UNPKG

4.03 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var context_1 = require("../logger/context");
4var level_1 = require("../logger/level");
5var extendArray = function (array) {
6 return Object.defineProperty(array, 'last', {
7 configurable: true,
8 get: function () {
9 return this[this.length - 1];
10 },
11 });
12};
13exports.extendArray = extendArray;
14var LogTargetMock = (function () {
15 function LogTargetMock(minLevel) {
16 if (minLevel === void 0) { minLevel = -Infinity; }
17 var _this = this;
18 this.minLevel = minLevel;
19 this.messages = Object.defineProperties(extendArray([]), {
20 trace: { get: function () { return _this.filteredMessages(level_1.LogLevels.trace); } },
21 debug: { get: function () { return _this.filteredMessages(level_1.LogLevels.debug); } },
22 info: { get: function () { return _this.filteredMessages(level_1.LogLevels.info); } },
23 warn: { get: function () { return _this.filteredMessages(level_1.LogLevels.warn); } },
24 error: { get: function () { return _this.filteredMessages(level_1.LogLevels.error); } },
25 fatal: { get: function () { return _this.filteredMessages(level_1.LogLevels.fatal); } },
26 });
27 this.lines = Object.defineProperties(extendArray([]), {
28 trace: { get: function () { return _this.filteredLines(level_1.LogLevels.trace); } },
29 debug: { get: function () { return _this.filteredLines(level_1.LogLevels.debug); } },
30 info: { get: function () { return _this.filteredLines(level_1.LogLevels.info); } },
31 warn: { get: function () { return _this.filteredLines(level_1.LogLevels.warn); } },
32 error: { get: function () { return _this.filteredLines(level_1.LogLevels.error); } },
33 fatal: { get: function () { return _this.filteredLines(level_1.LogLevels.fatal); } },
34 });
35 this.stream = {
36 write: function (msg) { return !!_this.lines.push(msg); },
37 };
38 }
39 LogTargetMock.prototype.format = function (msg) {
40 this.messages.push(msg);
41 var lvl = msg.context[context_1.LogContexts.logLevel];
42 if (lvl != null) {
43 return "[level:" + lvl + "] " + msg.message;
44 }
45 return msg.message;
46 };
47 LogTargetMock.prototype.clear = function () {
48 this.messages.splice(0, this.messages.length);
49 this.lines.splice(0, this.lines.length);
50 };
51 LogTargetMock.prototype.filteredMessages = function (level, untilLevel) {
52 var filter;
53 if (level == null) {
54 filter = function (m) { return m.context[context_1.LogContexts.logLevel] == null; };
55 }
56 else if (untilLevel != null) {
57 filter = function (m) {
58 var lvl = m.context[context_1.LogContexts.logLevel];
59 return lvl != null && lvl >= level && lvl <= untilLevel;
60 };
61 }
62 else {
63 filter = function (m) { return m.context[context_1.LogContexts.logLevel] === level; };
64 }
65 return extendArray(this.messages.filter(filter));
66 };
67 LogTargetMock.prototype.filteredLines = function (level, untilLevel) {
68 var extractLevel = function (line) {
69 var level = (line.match(/^\[level:([0-9]+)\] /) || [])[1];
70 return level == null ? undefined : parseInt(level, 10);
71 };
72 var filter;
73 if (level == null) {
74 filter = function (line) { return extractLevel(line) === undefined; };
75 }
76 else if (untilLevel != null) {
77 filter = function (line) {
78 var lvl = extractLevel(line);
79 return lvl != null && lvl >= level && lvl <= untilLevel;
80 };
81 }
82 else {
83 filter = function (line) { return extractLevel(line) === level; };
84 }
85 return extendArray(this.lines.filter(filter));
86 };
87 return LogTargetMock;
88}());
89exports.LogTargetMock = LogTargetMock;