target-mock.js 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var context_1 = require("../logger/context");
  4. var level_1 = require("../logger/level");
  5. var extendArray = function (array) {
  6. return Object.defineProperty(array, 'last', {
  7. configurable: true,
  8. get: function () {
  9. return this[this.length - 1];
  10. },
  11. });
  12. };
  13. exports.extendArray = extendArray;
  14. var 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. }());
  89. exports.LogTargetMock = LogTargetMock;