保誠-保戶業務員媒合平台
Tomas
2022-05-19 957a1f10a06fdbb76f1a0ba94fe44126c613fee3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
"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;