@beforeyoubid/logger-adapter 1.0.12 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -127
- package/dist/__tests__/params.spec.js +84 -0
- package/dist/console/__tests__/consoleLogger.spec.js +18 -0
- package/dist/console/__tests__/index.spec.js +70 -0
- package/dist/console/index.js +17 -10
- package/dist/console/logWrapper.d.ts +4 -0
- package/dist/console/logWrapper.js +99 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +9 -5
- package/dist/logger/__tests__/index.spec.js +24 -0
- package/dist/logger/__tests__/logdnaClient.spec.js +90 -0
- package/dist/logger/__tests__/logger.spec.js +139 -0
- package/dist/logger/__tests__/util.spec.js +81 -0
- package/dist/logger/index.d.ts +1 -1
- package/dist/logger/index.js +3 -2
- package/dist/logger/logdnaClient.d.ts +19 -0
- package/dist/logger/logdnaClient.js +47 -0
- package/dist/logger/logger.d.ts +12 -2
- package/dist/logger/logger.js +16 -6
- package/dist/logger/util.d.ts +11 -0
- package/dist/logger/util.js +57 -0
- package/dist/params.d.ts +1 -1
- package/dist/params.js +2 -2
- package/dist/transports/logdnaWinston.d.ts +28 -0
- package/dist/transports/logdnaWinston.js +248 -0
- package/dist/types.d.ts +1 -1
- package/dist/util.d.ts +1 -0
- package/dist/util.js +50 -13
- package/package.json +6 -6
- package/dist/console/logger.d.ts +0 -4
- package/dist/console/logger.js +0 -108
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import Transport from 'winston-transport';
|
|
2
|
+
import { Logger } from '@logdna/logger';
|
|
3
|
+
/**
|
|
4
|
+
* Support for Winston Transport
|
|
5
|
+
* Functionality:
|
|
6
|
+
* This code is to extend Winston object and transport logs to LogDNA automatically.
|
|
7
|
+
* We need to build a custom transport because the original code doesn't support Lambda environment. See below
|
|
8
|
+
*
|
|
9
|
+
* Note:
|
|
10
|
+
* This code is cloned from the official LogDNA Winston transport (https://github.com/logdna/logdna-winston)
|
|
11
|
+
* This module has limited and doesn't fully support Lambda environment due to the fact that the logger object is
|
|
12
|
+
* created inside of the transport. This means that our ensureFlushAll() doesn't have a chance to clear its buffer
|
|
13
|
+
*
|
|
14
|
+
* Someone reported the issue here - https://github.com/logdna/logdna-winston/issues/38
|
|
15
|
+
*
|
|
16
|
+
* Example of transport (https://github.com/winstonjs/winston-transport)
|
|
17
|
+
*/
|
|
18
|
+
export declare class LogDNATransport extends Transport {
|
|
19
|
+
logger: Logger;
|
|
20
|
+
constructor(options: any, suppliedLogdnaClient?: Logger);
|
|
21
|
+
/**
|
|
22
|
+
* Winston Transport will call this log function
|
|
23
|
+
* @param info
|
|
24
|
+
* @param callback
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
log(info: any, callback: (a: any, b: any) => void): void;
|
|
28
|
+
}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "LogDNATransport", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return LogDNATransport;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _winstonTransport = /*#__PURE__*/ _interopRequireDefault(require("winston-transport"));
|
|
12
|
+
var _logger = require("@logdna/logger");
|
|
13
|
+
function _assertThisInitialized(self) {
|
|
14
|
+
if (self === void 0) {
|
|
15
|
+
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
16
|
+
}
|
|
17
|
+
return self;
|
|
18
|
+
}
|
|
19
|
+
function _classCallCheck(instance, Constructor) {
|
|
20
|
+
if (!(instance instanceof Constructor)) {
|
|
21
|
+
throw new TypeError("Cannot call a class as a function");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function _defineProperty(obj, key, value) {
|
|
25
|
+
if (key in obj) {
|
|
26
|
+
Object.defineProperty(obj, key, {
|
|
27
|
+
value: value,
|
|
28
|
+
enumerable: true,
|
|
29
|
+
configurable: true,
|
|
30
|
+
writable: true
|
|
31
|
+
});
|
|
32
|
+
} else {
|
|
33
|
+
obj[key] = value;
|
|
34
|
+
}
|
|
35
|
+
return obj;
|
|
36
|
+
}
|
|
37
|
+
function _getPrototypeOf(o) {
|
|
38
|
+
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
|
|
39
|
+
return o.__proto__ || Object.getPrototypeOf(o);
|
|
40
|
+
};
|
|
41
|
+
return _getPrototypeOf(o);
|
|
42
|
+
}
|
|
43
|
+
function _inherits(subClass, superClass) {
|
|
44
|
+
if (typeof superClass !== "function" && superClass !== null) {
|
|
45
|
+
throw new TypeError("Super expression must either be null or a function");
|
|
46
|
+
}
|
|
47
|
+
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
48
|
+
constructor: {
|
|
49
|
+
value: subClass,
|
|
50
|
+
writable: true,
|
|
51
|
+
configurable: true
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
if (superClass) _setPrototypeOf(subClass, superClass);
|
|
55
|
+
}
|
|
56
|
+
function _instanceof(left, right) {
|
|
57
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
58
|
+
return !!right[Symbol.hasInstance](left);
|
|
59
|
+
} else {
|
|
60
|
+
return left instanceof right;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function _interopRequireDefault(obj) {
|
|
64
|
+
return obj && obj.__esModule ? obj : {
|
|
65
|
+
default: obj
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function _objectSpread(target) {
|
|
69
|
+
for(var i = 1; i < arguments.length; i++){
|
|
70
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
71
|
+
var ownKeys = Object.keys(source);
|
|
72
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
73
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
74
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
77
|
+
ownKeys.forEach(function(key) {
|
|
78
|
+
_defineProperty(target, key, source[key]);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return target;
|
|
82
|
+
}
|
|
83
|
+
function ownKeys(object, enumerableOnly) {
|
|
84
|
+
var keys = Object.keys(object);
|
|
85
|
+
if (Object.getOwnPropertySymbols) {
|
|
86
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
87
|
+
if (enumerableOnly) {
|
|
88
|
+
symbols = symbols.filter(function(sym) {
|
|
89
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
keys.push.apply(keys, symbols);
|
|
93
|
+
}
|
|
94
|
+
return keys;
|
|
95
|
+
}
|
|
96
|
+
function _objectSpreadProps(target, source) {
|
|
97
|
+
source = source != null ? source : {};
|
|
98
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
99
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
100
|
+
} else {
|
|
101
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
102
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return target;
|
|
106
|
+
}
|
|
107
|
+
function _objectWithoutProperties(source, excluded) {
|
|
108
|
+
if (source == null) return {};
|
|
109
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
110
|
+
var key, i;
|
|
111
|
+
if (Object.getOwnPropertySymbols) {
|
|
112
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
113
|
+
for(i = 0; i < sourceSymbolKeys.length; i++){
|
|
114
|
+
key = sourceSymbolKeys[i];
|
|
115
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
116
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
117
|
+
target[key] = source[key];
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return target;
|
|
121
|
+
}
|
|
122
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
123
|
+
if (source == null) return {};
|
|
124
|
+
var target = {};
|
|
125
|
+
var sourceKeys = Object.keys(source);
|
|
126
|
+
var key, i;
|
|
127
|
+
for(i = 0; i < sourceKeys.length; i++){
|
|
128
|
+
key = sourceKeys[i];
|
|
129
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
130
|
+
target[key] = source[key];
|
|
131
|
+
}
|
|
132
|
+
return target;
|
|
133
|
+
}
|
|
134
|
+
function _possibleConstructorReturn(self, call) {
|
|
135
|
+
if (call && (_typeof(call) === "object" || typeof call === "function")) {
|
|
136
|
+
return call;
|
|
137
|
+
}
|
|
138
|
+
return _assertThisInitialized(self);
|
|
139
|
+
}
|
|
140
|
+
function _setPrototypeOf(o, p) {
|
|
141
|
+
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
|
|
142
|
+
o.__proto__ = p;
|
|
143
|
+
return o;
|
|
144
|
+
};
|
|
145
|
+
return _setPrototypeOf(o, p);
|
|
146
|
+
}
|
|
147
|
+
var _typeof = function(obj) {
|
|
148
|
+
"@swc/helpers - typeof";
|
|
149
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
150
|
+
};
|
|
151
|
+
function _isNativeReflectConstruct() {
|
|
152
|
+
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
|
|
153
|
+
if (Reflect.construct.sham) return false;
|
|
154
|
+
if (typeof Proxy === "function") return true;
|
|
155
|
+
try {
|
|
156
|
+
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
|
|
157
|
+
return true;
|
|
158
|
+
} catch (e) {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function _createSuper(Derived) {
|
|
163
|
+
var hasNativeReflectConstruct = _isNativeReflectConstruct();
|
|
164
|
+
return function _createSuperInternal() {
|
|
165
|
+
var Super = _getPrototypeOf(Derived), result;
|
|
166
|
+
if (hasNativeReflectConstruct) {
|
|
167
|
+
var NewTarget = _getPrototypeOf(this).constructor;
|
|
168
|
+
result = Reflect.construct(Super, arguments, NewTarget);
|
|
169
|
+
} else {
|
|
170
|
+
result = Super.apply(this, arguments);
|
|
171
|
+
}
|
|
172
|
+
return _possibleConstructorReturn(this, result);
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
var LogDNATransport = /*#__PURE__*/ function(Transport) {
|
|
176
|
+
"use strict";
|
|
177
|
+
_inherits(LogDNATransport, Transport);
|
|
178
|
+
var _super = _createSuper(LogDNATransport);
|
|
179
|
+
function LogDNATransport(options, suppliedLogdnaClient) {
|
|
180
|
+
_classCallCheck(this, LogDNATransport);
|
|
181
|
+
var _this;
|
|
182
|
+
var levels = options.levels, maxLevel = options.maxLevel, key = options.key, opts = _objectWithoutProperties(options, [
|
|
183
|
+
"levels",
|
|
184
|
+
"maxLevel",
|
|
185
|
+
"key"
|
|
186
|
+
]);
|
|
187
|
+
_this = _super.call(this, _objectSpreadProps(_objectSpread({}, opts), {
|
|
188
|
+
levels: levels,
|
|
189
|
+
level: maxLevel
|
|
190
|
+
}));
|
|
191
|
+
var custom_levels = levels;
|
|
192
|
+
if (!custom_levels) {
|
|
193
|
+
// Per the winston docs, their 'npm' levels will be used, and those must be
|
|
194
|
+
// set up as custom levels in LogDNA.
|
|
195
|
+
// @see https://github.com/winstonjs/winston#logging-levels
|
|
196
|
+
custom_levels = {
|
|
197
|
+
error: 0,
|
|
198
|
+
warn: 1,
|
|
199
|
+
info: 2,
|
|
200
|
+
http: 3,
|
|
201
|
+
verbose: 4,
|
|
202
|
+
debug: 5,
|
|
203
|
+
silly: 6
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
// Using the supplied logger or create an instance of @logdna/logger
|
|
207
|
+
_this.logger = suppliedLogdnaClient !== null && suppliedLogdnaClient !== void 0 ? suppliedLogdnaClient : (0, _logger.createLogger)(key, _objectSpreadProps(_objectSpread({}, opts), {
|
|
208
|
+
levels: Object.keys(custom_levels),
|
|
209
|
+
UserAgent: "byb-logger-adapter"
|
|
210
|
+
}));
|
|
211
|
+
return _this;
|
|
212
|
+
}
|
|
213
|
+
var _proto = LogDNATransport.prototype;
|
|
214
|
+
/**
|
|
215
|
+
* Winston Transport will call this log function
|
|
216
|
+
* @param info
|
|
217
|
+
* @param callback
|
|
218
|
+
* @returns
|
|
219
|
+
*/ _proto.log = function log(info, callback) {
|
|
220
|
+
var level = info.level;
|
|
221
|
+
if (_instanceof(info.error, Error)) {
|
|
222
|
+
info.error = info.error.stack || info.error.toString();
|
|
223
|
+
}
|
|
224
|
+
if (!info.message) {
|
|
225
|
+
// Send the incoming object payload as the message
|
|
226
|
+
this.logger.log(info, level);
|
|
227
|
+
callback(null, true);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
// eslint-disable-next-line no-unused-vars
|
|
231
|
+
var message = info.message, indexMeta = info.indexMeta, timestamp = info.timestamp, meta = _objectWithoutProperties(info, [
|
|
232
|
+
"message",
|
|
233
|
+
"indexMeta",
|
|
234
|
+
"timestamp"
|
|
235
|
+
]);
|
|
236
|
+
var opts = {
|
|
237
|
+
level: level,
|
|
238
|
+
indexMeta: indexMeta,
|
|
239
|
+
timestamp: timestamp,
|
|
240
|
+
meta: meta
|
|
241
|
+
};
|
|
242
|
+
this.logger.log(message, opts);
|
|
243
|
+
callback(null, true);
|
|
244
|
+
};
|
|
245
|
+
return LogDNATransport;
|
|
246
|
+
}(_winstonTransport.default);
|
|
247
|
+
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc3BvcnRzL2xvZ2RuYVdpbnN0b24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRyYW5zcG9ydCBmcm9tICd3aW5zdG9uLXRyYW5zcG9ydCc7XG5pbXBvcnQgeyBMb2dnZXIsIGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0Bsb2dkbmEvbG9nZ2VyJztcbi8vY29uc3QgcGtnID0gcmVxdWlyZSgnLi9wYWNrYWdlLmpzb24nKTtcblxuLyoqXG4gKiBTdXBwb3J0IGZvciBXaW5zdG9uIFRyYW5zcG9ydFxuICogRnVuY3Rpb25hbGl0eTpcbiAqICBUaGlzIGNvZGUgaXMgdG8gZXh0ZW5kIFdpbnN0b24gb2JqZWN0IGFuZCB0cmFuc3BvcnQgbG9ncyB0byBMb2dETkEgYXV0b21hdGljYWxseS5cbiAqICBXZSBuZWVkIHRvIGJ1aWxkIGEgY3VzdG9tIHRyYW5zcG9ydCBiZWNhdXNlIHRoZSBvcmlnaW5hbCBjb2RlIGRvZXNuJ3Qgc3VwcG9ydCBMYW1iZGEgZW52aXJvbm1lbnQuIFNlZSBiZWxvd1xuICpcbiAqIE5vdGU6XG4gKiAgVGhpcyBjb2RlIGlzIGNsb25lZCBmcm9tIHRoZSBvZmZpY2lhbCBMb2dETkEgV2luc3RvbiB0cmFuc3BvcnQgKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2dkbmEvbG9nZG5hLXdpbnN0b24pXG4gKiAgVGhpcyBtb2R1bGUgaGFzIGxpbWl0ZWQgYW5kIGRvZXNuJ3QgZnVsbHkgc3VwcG9ydCBMYW1iZGEgZW52aXJvbm1lbnQgZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlIGxvZ2dlciBvYmplY3QgaXNcbiAqICBjcmVhdGVkIGluc2lkZSBvZiB0aGUgdHJhbnNwb3J0LiBUaGlzIG1lYW5zIHRoYXQgb3VyIGVuc3VyZUZsdXNoQWxsKCkgZG9lc24ndCBoYXZlIGEgY2hhbmNlIHRvIGNsZWFyIGl0cyBidWZmZXJcbiAqXG4gKiAgU29tZW9uZSByZXBvcnRlZCB0aGUgaXNzdWUgaGVyZSAtIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2dkbmEvbG9nZG5hLXdpbnN0b24vaXNzdWVzLzM4XG4gKlxuICogRXhhbXBsZSBvZiB0cmFuc3BvcnQgKGh0dHBzOi8vZ2l0aHViLmNvbS93aW5zdG9uanMvd2luc3Rvbi10cmFuc3BvcnQpXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dETkFUcmFuc3BvcnQgZXh0ZW5kcyBUcmFuc3BvcnQge1xuICBsb2dnZXI6IExvZ2dlcjtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogYW55LCBzdXBwbGllZExvZ2RuYUNsaWVudD86IExvZ2dlcikge1xuICAgIGNvbnN0IHsgbGV2ZWxzLCBtYXhMZXZlbCwga2V5LCAuLi5vcHRzIH0gPSBvcHRpb25zO1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICBsZXZlbHMsXG4gICAgICBsZXZlbDogbWF4TGV2ZWwsXG4gICAgfSk7XG5cbiAgICBsZXQgY3VzdG9tX2xldmVscyA9IGxldmVscztcbiAgICBpZiAoIWN1c3RvbV9sZXZlbHMpIHtcbiAgICAgIC8vIFBlciB0aGUgd2luc3RvbiBkb2NzLCB0aGVpciAnbnBtJyBsZXZlbHMgd2lsbCBiZSB1c2VkLCBhbmQgdGhvc2UgbXVzdCBiZVxuICAgICAgLy8gc2V0IHVwIGFzIGN1c3RvbSBsZXZlbHMgaW4gTG9nRE5BLlxuICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2luc3RvbmpzL3dpbnN0b24jbG9nZ2luZy1sZXZlbHNcbiAgICAgIGN1c3RvbV9sZXZlbHMgPSB7XG4gICAgICAgIGVycm9yOiAwLFxuICAgICAgICB3YXJuOiAxLFxuICAgICAgICBpbmZvOiAyLFxuICAgICAgICBodHRwOiAzLFxuICAgICAgICB2ZXJib3NlOiA0LFxuICAgICAgICBkZWJ1ZzogNSxcbiAgICAgICAgc2lsbHk6IDYsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFVzaW5nIHRoZSBzdXBwbGllZCBsb2dnZXIgb3IgY3JlYXRlIGFuIGluc3RhbmNlIG9mIEBsb2dkbmEvbG9nZ2VyXG4gICAgdGhpcy5sb2dnZXIgPVxuICAgICAgc3VwcGxpZWRMb2dkbmFDbGllbnQgPz9cbiAgICAgIGNyZWF0ZUxvZ2dlcihrZXksIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgbGV2ZWxzOiBPYmplY3Qua2V5cyhjdXN0b21fbGV2ZWxzKSxcbiAgICAgICAgVXNlckFnZW50OiAnYnliLWxvZ2dlci1hZGFwdGVyJywgLy9gJHtwa2cubmFtZX0vJHtwa2cudmVyc2lvbn1gLFxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogV2luc3RvbiBUcmFuc3BvcnQgd2lsbCBjYWxsIHRoaXMgbG9nIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSBpbmZvXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgbG9nKGluZm86IGFueSwgY2FsbGJhY2s6IChhOiBhbnksIGI6IGFueSkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGxldmVsID0gaW5mby5sZXZlbDtcblxuICAgIGlmIChpbmZvLmVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGluZm8uZXJyb3IgPSBpbmZvLmVycm9yLnN0YWNrIHx8IGluZm8uZXJyb3IudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoIWluZm8ubWVzc2FnZSkge1xuICAgICAgLy8gU2VuZCB0aGUgaW5jb21pbmcgb2JqZWN0IHBheWxvYWQgYXMgdGhlIG1lc3NhZ2VcbiAgICAgIHRoaXMubG9nZ2VyLmxvZyhpbmZvLCBsZXZlbCk7XG4gICAgICBjYWxsYmFjayhudWxsLCB0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICBjb25zdCB7IG1lc3NhZ2UsIGluZGV4TWV0YSwgdGltZXN0YW1wLCAuLi5tZXRhIH0gPSBpbmZvO1xuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICBsZXZlbCxcbiAgICAgIGluZGV4TWV0YSxcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIG1ldGEsXG4gICAgfTtcblxuICAgIHRoaXMubG9nZ2VyLmxvZyhtZXNzYWdlLCBvcHRzKTtcbiAgICBjYWxsYmFjayhudWxsLCB0cnVlKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkxvZ0ROQVRyYW5zcG9ydCIsIm9wdGlvbnMiLCJzdXBwbGllZExvZ2RuYUNsaWVudCIsImxldmVscyIsIm1heExldmVsIiwia2V5Iiwib3B0cyIsImxldmVsIiwiY3VzdG9tX2xldmVscyIsImVycm9yIiwid2FybiIsImluZm8iLCJodHRwIiwidmVyYm9zZSIsImRlYnVnIiwic2lsbHkiLCJsb2dnZXIiLCJjcmVhdGVMb2dnZXIiLCJPYmplY3QiLCJrZXlzIiwiVXNlckFnZW50IiwibG9nIiwiY2FsbGJhY2siLCJFcnJvciIsInN0YWNrIiwidG9TdHJpbmciLCJtZXNzYWdlIiwiaW5kZXhNZXRhIiwidGltZXN0YW1wIiwibWV0YSIsIlRyYW5zcG9ydCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFtQmFBOzs7ZUFBQUE7OztxRUFuQlM7c0JBQ2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQjlCLElBQUEsQUFBTUEsZ0NBbkJWLEFBbUJJOztjQUFNQTs4QkFBQUE7YUFBQUEsZ0JBRUNDLE9BQVksRUFBRUMsb0JBQTZCOzhCQUY1Q0Y7O1FBR1QsSUFBUUcsU0FBbUNGLFFBQW5DRSxRQUFRQyxXQUEyQkgsUUFBM0JHLFVBQVVDLE1BQWlCSixRQUFqQkksS0FBUUMsZ0NBQVNMO1lBQW5DRTtZQUFRQztZQUFVQzs7a0NBQ3BCLHFDQUNEQztZQUNISCxRQUFBQTtZQUNBSSxPQUFPSDs7UUFHVCxJQUFJSSxnQkFBZ0JMO1FBQ3BCLElBQUksQ0FBQ0ssZUFBZTtZQUNsQiwyRUFBMkU7WUFDM0UscUNBQXFDO1lBQ3JDLDJEQUEyRDtZQUMzREEsZ0JBQWdCO2dCQUNkQyxPQUFPO2dCQUNQQyxNQUFNO2dCQUNOQyxNQUFNO2dCQUNOQyxNQUFNO2dCQUNOQyxTQUFTO2dCQUNUQyxPQUFPO2dCQUNQQyxPQUFPO1lBQ1Q7UUFDRixDQUFDO1FBRUQsb0VBQW9FO1FBQ3BFLE1BQUtDLE1BQU0sR0FDVGQsaUNBQUFBLGtDQUFBQSx1QkFDQWUsSUFBQUEsb0JBQVksRUFBQ1osS0FBSyxxQ0FDYkM7WUFDSEgsUUFBUWUsT0FBT0MsSUFBSSxDQUFDWDtZQUNwQlksV0FBVztXQUNYOzs7aUJBakNLcEI7SUFvQ1g7Ozs7O0dBS0MsR0FDRHFCLE9BQUFBLEdBeUJDLEdBekJEQSxTQUFBQSxJQUFJVixJQUFTLEVBQUVXLFFBQWtDLEVBQUU7UUFDakQsSUFBTWYsUUFBUUksS0FBS0osS0FBSztRQUV4QixJQUFJSSxBQUFVLFlBQVZBLEtBQUtGLEtBQUssRUFBWWMsUUFBTztZQUMvQlosS0FBS0YsS0FBSyxHQUFHRSxLQUFLRixLQUFLLENBQUNlLEtBQUssSUFBSWIsS0FBS0YsS0FBSyxDQUFDZ0IsUUFBUTtRQUN0RCxDQUFDO1FBRUQsSUFBSSxDQUFDZCxLQUFLZSxPQUFPLEVBQUU7WUFDakIsa0RBQWtEO1lBQ2xELElBQUksQ0FBQ1YsTUFBTSxDQUFDSyxHQUFHLENBQUNWLE1BQU1KO1lBQ3RCZSxTQUFTLElBQUksRUFBRSxJQUFJO1lBQ25CO1FBQ0YsQ0FBQztRQUVELDBDQUEwQztRQUMxQyxJQUFRSSxVQUEyQ2YsS0FBM0NlLFNBQVNDLFlBQWtDaEIsS0FBbENnQixXQUFXQyxZQUF1QmpCLEtBQXZCaUIsV0FBY0MsZ0NBQVNsQjtZQUEzQ2U7WUFBU0M7WUFBV0M7O1FBQzVCLElBQU10QixPQUFPO1lBQ1hDLE9BQUFBO1lBQ0FvQixXQUFBQTtZQUNBQyxXQUFBQTtZQUNBQyxNQUFBQTtRQUNGO1FBRUEsSUFBSSxDQUFDYixNQUFNLENBQUNLLEdBQUcsQ0FBQ0ssU0FBU3BCO1FBQ3pCZ0IsU0FBUyxJQUFJLEVBQUUsSUFBSTtJQUNyQjtXQW5FV3RCO0VBQXdCOEIseUJBQVMifQ==
|
package/dist/types.d.ts
CHANGED
package/dist/util.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { LambdaHandlerWithAsyncFunction, LambdaHandlerWithCallbackFunction } fro
|
|
|
7
7
|
declare const isLogDNAEnabled: (logDNAKey: string, sendToRemote: boolean) => boolean;
|
|
8
8
|
/**
|
|
9
9
|
* Send all log messages to LogDNA before lambda is terminated
|
|
10
|
+
* Support an async function
|
|
10
11
|
*/
|
|
11
12
|
declare const flushAll: () => Promise<void>;
|
|
12
13
|
/**
|
package/dist/util.js
CHANGED
|
@@ -22,6 +22,8 @@ _export(exports, {
|
|
|
22
22
|
return ensureFlushAllCallback;
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
|
+
var _logdnaClient = require("./logger/logdnaClient");
|
|
26
|
+
var _events = require("events");
|
|
25
27
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
26
28
|
try {
|
|
27
29
|
var info = gen[key](arg);
|
|
@@ -146,12 +148,11 @@ var __generator = (void 0) && (void 0).__generator || function(thisArg, body) {
|
|
|
146
148
|
};
|
|
147
149
|
}
|
|
148
150
|
};
|
|
149
|
-
var LogDNALogger = require("logdna");
|
|
150
151
|
var debug = require("util").debuglog("logger-adapter");
|
|
151
152
|
var FALLBACK_TIMEOUT_AFTER_FLUSHING = require("./consts").FALLBACK_TIMEOUT_AFTER_FLUSHING;
|
|
152
153
|
var getLogParams = require("./params").getLogParams;
|
|
153
154
|
// timeout
|
|
154
|
-
var timeout;
|
|
155
|
+
var timeout = null;
|
|
155
156
|
/**
|
|
156
157
|
* Handy function to check if we are sending to LogDNA
|
|
157
158
|
* @param logDNAKey
|
|
@@ -167,21 +168,45 @@ var timeout;
|
|
|
167
168
|
};
|
|
168
169
|
/**
|
|
169
170
|
* Send all log messages to LogDNA before lambda is terminated
|
|
171
|
+
* Support an async function
|
|
170
172
|
*/ var flushAll = function() {
|
|
171
173
|
var _ref = _asyncToGenerator(function() {
|
|
172
174
|
return __generator(this, function(_state) {
|
|
173
175
|
return [
|
|
174
176
|
2,
|
|
175
|
-
new Promise(function(
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
177
|
+
new Promise(function() {
|
|
178
|
+
var _ref = _asyncToGenerator(function(resolve) {
|
|
179
|
+
var logger, before;
|
|
180
|
+
return __generator(this, function(_state) {
|
|
181
|
+
switch(_state.label){
|
|
182
|
+
case 0:
|
|
183
|
+
debug("Flushing all logs...");
|
|
184
|
+
logger = (0, _logdnaClient.getLogDNAClient)();
|
|
185
|
+
if (!logger) return [
|
|
186
|
+
2
|
|
187
|
+
];
|
|
188
|
+
before = Date.now();
|
|
189
|
+
// Wait until LogDNA emitter flushes all logs, then resolve
|
|
190
|
+
// The default flushing interval is 250ms
|
|
191
|
+
return [
|
|
192
|
+
4,
|
|
193
|
+
(0, _events.once)(logger, "cleared")
|
|
194
|
+
];
|
|
195
|
+
case 1:
|
|
196
|
+
_state.sent();
|
|
197
|
+
debug("Flushing all logs done in ".concat(Date.now() - before, "ms"));
|
|
198
|
+
timeout && clearTimeout(timeout);
|
|
199
|
+
resolve();
|
|
200
|
+
return [
|
|
201
|
+
2
|
|
202
|
+
];
|
|
203
|
+
}
|
|
204
|
+
});
|
|
183
205
|
});
|
|
184
|
-
|
|
206
|
+
return function(resolve) {
|
|
207
|
+
return _ref.apply(this, arguments);
|
|
208
|
+
};
|
|
209
|
+
}())
|
|
185
210
|
];
|
|
186
211
|
});
|
|
187
212
|
});
|
|
@@ -189,6 +214,18 @@ var timeout;
|
|
|
189
214
|
return _ref.apply(this, arguments);
|
|
190
215
|
};
|
|
191
216
|
}();
|
|
217
|
+
/**
|
|
218
|
+
* Try to clear all logs before the Lambda function is terminated (support callback pattern)
|
|
219
|
+
*
|
|
220
|
+
* @returns
|
|
221
|
+
*/ var flushAllCallback = function() {
|
|
222
|
+
debug("Flushing all logs...");
|
|
223
|
+
var logger = (0, _logdnaClient.getLogDNAClient)();
|
|
224
|
+
if (!logger) return;
|
|
225
|
+
// Calling flush() manually here to avoid relying on the async event
|
|
226
|
+
// https://www.npmjs.com/package/@logdna/logger#loggerflush
|
|
227
|
+
logger.flush();
|
|
228
|
+
};
|
|
192
229
|
/**
|
|
193
230
|
* Fallback promise just in
|
|
194
231
|
*/ var timeoutPromise = function() {
|
|
@@ -282,10 +319,10 @@ var timeout;
|
|
|
282
319
|
return function(event, context, callback) {
|
|
283
320
|
var thisCallback = function(error, result) {
|
|
284
321
|
callback(error, result);
|
|
285
|
-
if (!suppressFlushAll())
|
|
322
|
+
if (!suppressFlushAll()) flushAllCallback();
|
|
286
323
|
};
|
|
287
324
|
lambdaHandler(event, context, thisCallback);
|
|
288
325
|
};
|
|
289
326
|
};
|
|
290
327
|
|
|
291
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhbWJkYUhhbmRsZXJXaXRoQXN5bmNGdW5jdGlvbiwgTGFtYmRhSGFuZGxlcldpdGhDYWxsYmFja0Z1bmN0aW9uLCBDYWxsYmFja0Z1bmN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vY29uc3QgTG9nRE5BTG9nZ2VyID0gcmVxdWlyZSgnQGxvZ2RuYS9sb2dnZXInKTtcbmltcG9ydCB7IGdldExvZ0ROQUNsaWVudCB9IGZyb20gJy4vbG9nZ2VyL2xvZ2RuYUNsaWVudCc7XG5jb25zdCBkZWJ1ZyA9IHJlcXVpcmUoJ3V0aWwnKS5kZWJ1Z2xvZygnbG9nZ2VyLWFkYXB0ZXInKTtcbmNvbnN0IHsgRkFMTEJBQ0tfVElNRU9VVF9BRlRFUl9GTFVTSElORyB9ID0gcmVxdWlyZSgnLi9jb25zdHMnKTtcbmNvbnN0IHsgZ2V0TG9nUGFyYW1zIH0gPSByZXF1aXJlKCcuL3BhcmFtcycpO1xuaW1wb3J0IHsgb25jZSB9IGZyb20gJ2V2ZW50cyc7XG5cbi8vIHRpbWVvdXRcbmxldCB0aW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIEhhbmR5IGZ1bmN0aW9uIHRvIGNoZWNrIGlmIHdlIGFyZSBzZW5kaW5nIHRvIExvZ0ROQVxuICogQHBhcmFtIGxvZ0ROQUtleVxuICogQHBhcmFtIHNlbmRUb1JlbW90ZVxuICovXG5jb25zdCBpc0xvZ0ROQUVuYWJsZWQgPSAobG9nRE5BS2V5OiBzdHJpbmcsIHNlbmRUb1JlbW90ZTogYm9vbGVhbik6IGJvb2xlYW4gPT4gISFsb2dETkFLZXkgJiYgc2VuZFRvUmVtb3RlO1xuXG4vKipcbiAqIFJFdHVybiBpZiB3ZSBuZWVkIHRvIHN1cHByZXNzIGZsdXNoQWxsIG9uIGEgbG9jYWwgbWFjaGluZVxuICovXG5jb25zdCBzdXBwcmVzc0ZsdXNoQWxsID0gKCk6IGJvb2xlYW4gPT4gZ2V0TG9nUGFyYW1zKCk/LmxvZ0ROQVN1cHByZXNzRmx1c2hBbGwgfHwgZmFsc2U7XG5cbi8qKlxuICogU2VuZCBhbGwgbG9nIG1lc3NhZ2VzIHRvIExvZ0ROQSBiZWZvcmUgbGFtYmRhIGlzIHRlcm1pbmF0ZWRcbiAqIFN1cHBvcnQgYW4gYXN5bmMgZnVuY3Rpb25cbiAqL1xuY29uc3QgZmx1c2hBbGwgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyByZXNvbHZlID0+IHtcbiAgICBkZWJ1ZygnRmx1c2hpbmcgYWxsIGxvZ3MuLi4nKTtcbiAgICBjb25zdCBsb2dnZXIgPSBnZXRMb2dETkFDbGllbnQoKTtcbiAgICBpZiAoIWxvZ2dlcikgcmV0dXJuO1xuXG4gICAgY29uc3QgYmVmb3JlID0gRGF0ZS5ub3coKTtcbiAgICAvLyBXYWl0IHVudGlsIExvZ0ROQSBlbWl0dGVyIGZsdXNoZXMgYWxsIGxvZ3MsIHRoZW4gcmVzb2x2ZVxuICAgIC8vIFRoZSBkZWZhdWx0IGZsdXNoaW5nIGludGVydmFsIGlzIDI1MG1zXG4gICAgYXdhaXQgb25jZShsb2dnZXIsICdjbGVhcmVkJyk7XG4gICAgZGVidWcoYEZsdXNoaW5nIGFsbCBsb2dzIGRvbmUgaW4gJHtEYXRlLm5vdygpIC0gYmVmb3JlfW1zYCk7XG4gICAgdGltZW91dCAmJiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgcmVzb2x2ZSgpO1xuICB9KTtcbn07XG5cbi8qKlxuICogVHJ5IHRvIGNsZWFyIGFsbCBsb2dzIGJlZm9yZSB0aGUgTGFtYmRhIGZ1bmN0aW9uIGlzIHRlcm1pbmF0ZWQgKHN1cHBvcnQgY2FsbGJhY2sgcGF0dGVybilcbiAqXG4gKiBAcmV0dXJuc1xuICovXG5jb25zdCBmbHVzaEFsbENhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICBkZWJ1ZygnRmx1c2hpbmcgYWxsIGxvZ3MuLi4nKTtcbiAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nRE5BQ2xpZW50KCk7XG4gIGlmICghbG9nZ2VyKSByZXR1cm47XG5cbiAgLy8gQ2FsbGluZyBmbHVzaCgpIG1hbnVhbGx5IGhlcmUgdG8gYXZvaWQgcmVseWluZyBvbiB0aGUgYXN5bmMgZXZlbnRcbiAgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQGxvZ2RuYS9sb2dnZXIjbG9nZ2VyZmx1c2hcbiAgbG9nZ2VyLmZsdXNoKCk7XG59O1xuXG4vKipcbiAqIEZhbGxiYWNrIHByb21pc2UganVzdCBpblxuICovXG5jb25zdCB0aW1lb3V0UHJvbWlzZSA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRlYnVnKCdGbHVzaGluZyB0aW1lb3V0IGhhcyByZWFjaGVkLiBJZ25vcmUgZmx1c2hpbmcgbWVzc2FnZXMuLi4nKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9LCBGQUxMQkFDS19USU1FT1VUX0FGVEVSX0ZMVVNISU5HKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIExhbWJkYSB3cmFwcGVyIHRvIGVuc3VyZSB3ZSBmbHVzaCBtZXNzYWdlcyBiZWZvcmUgcmV0dXJuaW5nIHRoZSByZXNwb25zZVxuICogQHBhcmFtIGxhbWJkYUhhbmRsZXJcbiAqL1xuY29uc3QgZW5zdXJlRmx1c2hBbGwgPSAobGFtYmRhSGFuZGxlcjogTGFtYmRhSGFuZGxlcldpdGhBc3luY0Z1bmN0aW9uKTogTGFtYmRhSGFuZGxlcldpdGhBc3luY0Z1bmN0aW9uID0+IHtcbiAgcmV0dXJuIGFzeW5jIChldmVudDogYW55LCBjb250ZXh0OiBhbnkpOiBQcm9taXNlPGFueT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBsYW1iZGFIYW5kbGVyKGV2ZW50LCBjb250ZXh0KTtcbiAgICAgIGlmICghc3VwcHJlc3NGbHVzaEFsbCgpKSBhd2FpdCBQcm9taXNlLnJhY2UoW2ZsdXNoQWxsKCksIHRpbWVvdXRQcm9taXNlKCldKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCFzdXBwcmVzc0ZsdXNoQWxsKCkpIGF3YWl0IFByb21pc2UucmFjZShbZmx1c2hBbGwoKSwgdGltZW91dFByb21pc2UoKV0pO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEEgTGFtYmRhIHdyYXBwZXIgdG8gZW5zdXJlIHdlIGZsdXNoIG1lc3NhZ2VzIGJlZm9yZSBhIExhbWJkYSBmdW5jdGlvbiBnZXQgdGVybWluYXRlZFxuICogTk9URTogRm9yIG5vbi1hc3luYyBoYW5kbGVycywgQVdTIExhbWJkYSB3aWxsIHdhaXQgdW50aWwgdGhlIGV2ZW50IGxvb3AgaXMgY29tcGxldGVkLlxuICogVGhpcyBtZWFucyBhZnRlciBhIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIGNhbGxlZCwgYSBMYW1iZGEgZnVuY3Rpb24gc3RpbGwgcnVuXG4gKiBhbmQgd2UgY2FuIGNhdGNoIHRoZSBmaW5hbCBjbGVhbiB1cC5cbiAqIFJFRjogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvbm9kZWpzLWhhbmRsZXIuaHRtbFxuICpcbiAqIEBwYXJhbSBsYW1iZGFIYW5kbGVyXG4gKi9cbmNvbnN0IGVuc3VyZUZsdXNoQWxsQ2FsbGJhY2sgPSAoXG4gIGxhbWJkYUhhbmRsZXI6IExhbWJkYUhhbmRsZXJXaXRoQ2FsbGJhY2tGdW5jdGlvblxuKTogTGFtYmRhSGFuZGxlcldpdGhDYWxsYmFja0Z1bmN0aW9uID0+IHtcbiAgcmV0dXJuIChldmVudDogYW55LCBjb250ZXh0OiBhbnksIGNhbGxiYWNrOiBDYWxsYmFja0Z1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgY29uc3QgdGhpc0NhbGxiYWNrID0gKGVycm9yOiBhbnksIHJlc3VsdDogYW55KTogdm9pZCA9PiB7XG4gICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTtcbiAgICAgIGlmICghc3VwcHJlc3NGbHVzaEFsbCgpKSBmbHVzaEFsbENhbGxiYWNrKCk7XG4gICAgfTtcbiAgICBsYW1iZGFIYW5kbGVyKGV2ZW50LCBjb250ZXh0LCB0aGlzQ2FsbGJhY2spO1xuICB9O1xufTtcblxuZXhwb3J0IHsgaXNMb2dETkFFbmFibGVkLCBmbHVzaEFsbCwgZW5zdXJlRmx1c2hBbGwsIGVuc3VyZUZsdXNoQWxsQ2FsbGJhY2sgfTtcbiJdLCJuYW1lcyI6WyJpc0xvZ0ROQUVuYWJsZWQiLCJmbHVzaEFsbCIsImVuc3VyZUZsdXNoQWxsIiwiZW5zdXJlRmx1c2hBbGxDYWxsYmFjayIsImRlYnVnIiwicmVxdWlyZSIsImRlYnVnbG9nIiwiRkFMTEJBQ0tfVElNRU9VVF9BRlRFUl9GTFVTSElORyIsImdldExvZ1BhcmFtcyIsInRpbWVvdXQiLCJsb2dETkFLZXkiLCJzZW5kVG9SZW1vdGUiLCJzdXBwcmVzc0ZsdXNoQWxsIiwibG9nRE5BU3VwcHJlc3NGbHVzaEFsbCIsIlByb21pc2UiLCJyZXNvbHZlIiwibG9nZ2VyIiwiYmVmb3JlIiwiZ2V0TG9nRE5BQ2xpZW50IiwiRGF0ZSIsIm5vdyIsIm9uY2UiLCJjbGVhclRpbWVvdXQiLCJmbHVzaEFsbENhbGxiYWNrIiwiZmx1c2giLCJ0aW1lb3V0UHJvbWlzZSIsInNldFRpbWVvdXQiLCJsYW1iZGFIYW5kbGVyIiwiZXZlbnQiLCJjb250ZXh0IiwicmVzdWx0IiwiZSIsInJhY2UiLCJjYWxsYmFjayIsInRoaXNDYWxsYmFjayIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQTZHU0EsZUFBZTtlQUFmQTs7SUFBaUJDLFFBQVE7ZUFBUkE7O0lBQVVDLGNBQWM7ZUFBZEE7O0lBQWdCQyxzQkFBc0I7ZUFBdEJBOzs7NEJBMUdwQjtzQkFJWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFIckIs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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beforeyoubid/logger-adapter",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "A platform logger module to send the log messages to LogDNA.",
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "A platform logger module to send the log messages to Mezmo (formerly LogDNA).",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"files": [
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
},
|
|
35
35
|
"homepage": "https://github.com/beforeyoubid/npm-logger-adapter#readme",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"logdna": "
|
|
38
|
-
"
|
|
39
|
-
"winston": "
|
|
37
|
+
"@logdna/logger": "^2.6.9",
|
|
38
|
+
"winston": "^3.13.0",
|
|
39
|
+
"winston-transport": "^4.7.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@swc/cli": "0.1.61",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"eslint": "8.34.0",
|
|
52
52
|
"eslint-config-prettier": "8.6.0",
|
|
53
53
|
"eslint-plugin-prettier": "4.2.1",
|
|
54
|
-
"jest": "29.
|
|
54
|
+
"jest": "^29.7.0",
|
|
55
55
|
"jest-junit": "15.0.0",
|
|
56
56
|
"prettier": "2.8.4",
|
|
57
57
|
"rimraf": "^4.1.2",
|
package/dist/console/logger.d.ts
DELETED
package/dist/console/logger.js
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
getLogger: function() {
|
|
13
|
-
return getLogger;
|
|
14
|
-
},
|
|
15
|
-
getDefaultConsoleLog: function() {
|
|
16
|
-
return getDefaultConsoleLog;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
function _arrayLikeToArray(arr, len) {
|
|
20
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
21
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
22
|
-
return arr2;
|
|
23
|
-
}
|
|
24
|
-
function _arrayWithoutHoles(arr) {
|
|
25
|
-
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
|
26
|
-
}
|
|
27
|
-
function _iterableToArray(iter) {
|
|
28
|
-
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
29
|
-
}
|
|
30
|
-
function _nonIterableSpread() {
|
|
31
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
32
|
-
}
|
|
33
|
-
function _toConsumableArray(arr) {
|
|
34
|
-
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
|
35
|
-
}
|
|
36
|
-
function _unsupportedIterableToArray(o, minLen) {
|
|
37
|
-
if (!o) return;
|
|
38
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
39
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
40
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
41
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
42
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
43
|
-
}
|
|
44
|
-
var LogDNALogger = require("logdna");
|
|
45
|
-
var flushAll = require("../util").flushAll;
|
|
46
|
-
var logger;
|
|
47
|
-
// Default console
|
|
48
|
-
var _log = console.log;
|
|
49
|
-
var _info = console.info;
|
|
50
|
-
var _warn = console.warn;
|
|
51
|
-
var _error = console.error;
|
|
52
|
-
var wrapConsole = function(logger, logLevel) {
|
|
53
|
-
_log("--------------------- Wrapping Console -----------------------");
|
|
54
|
-
var log = function log() {
|
|
55
|
-
for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
|
|
56
|
-
args[_key] = arguments[_key];
|
|
57
|
-
}
|
|
58
|
-
if (logLevel === "debug") {
|
|
59
|
-
logger.debug(_toConsumableArray(args).join(" "));
|
|
60
|
-
}
|
|
61
|
-
_log.apply(void 0, _toConsumableArray(args));
|
|
62
|
-
};
|
|
63
|
-
var info = function info() {
|
|
64
|
-
for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
|
|
65
|
-
args[_key] = arguments[_key];
|
|
66
|
-
}
|
|
67
|
-
if ([
|
|
68
|
-
"debug",
|
|
69
|
-
"info"
|
|
70
|
-
].indexOf(logLevel) !== -1) {
|
|
71
|
-
logger.info(_toConsumableArray(args).join(" "));
|
|
72
|
-
}
|
|
73
|
-
_info.apply(void 0, _toConsumableArray(args));
|
|
74
|
-
};
|
|
75
|
-
var warn = function warn() {
|
|
76
|
-
for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
|
|
77
|
-
args[_key] = arguments[_key];
|
|
78
|
-
}
|
|
79
|
-
logger.warn(_toConsumableArray(args).join(" "));
|
|
80
|
-
_warn.apply(void 0, _toConsumableArray(args));
|
|
81
|
-
};
|
|
82
|
-
var error = function error() {
|
|
83
|
-
for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
|
|
84
|
-
args[_key] = arguments[_key];
|
|
85
|
-
}
|
|
86
|
-
logger.error(_toConsumableArray(args).join(" "));
|
|
87
|
-
_error.apply(void 0, _toConsumableArray(args));
|
|
88
|
-
};
|
|
89
|
-
console.log = log;
|
|
90
|
-
console.debug = log;
|
|
91
|
-
console.info = info;
|
|
92
|
-
console.warn = warn;
|
|
93
|
-
console.error = error;
|
|
94
|
-
};
|
|
95
|
-
var getLogger = function(params) {
|
|
96
|
-
var logDNAKey = params.logDNAKey, logLevel = params.logLevel, logDNAOptions = params.logDNAOptions;
|
|
97
|
-
logger = LogDNALogger.setupDefaultLogger(logDNAKey, logDNAOptions);
|
|
98
|
-
// Wrap default
|
|
99
|
-
wrapConsole(logger, logLevel);
|
|
100
|
-
// Attach flushAll
|
|
101
|
-
logger.flushAll = flushAll;
|
|
102
|
-
return logger;
|
|
103
|
-
};
|
|
104
|
-
var getDefaultConsoleLog = function() {
|
|
105
|
-
return _log;
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zb2xlL2xvZ2dlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTG9nRE5BUGFyYW1zIH0gZnJvbSAnLi4vdHlwZXMnO1xuY29uc3QgTG9nRE5BTG9nZ2VyID0gcmVxdWlyZSgnbG9nZG5hJyk7XG5jb25zdCB7IGZsdXNoQWxsIH0gPSByZXF1aXJlKCcuLi91dGlsJyk7XG5sZXQgbG9nZ2VyOiBhbnk7XG5cbi8vIERlZmF1bHQgY29uc29sZVxuY29uc3QgX2xvZyA9IGNvbnNvbGUubG9nO1xuY29uc3QgX2luZm8gPSBjb25zb2xlLmluZm87XG5jb25zdCBfd2FybiA9IGNvbnNvbGUud2FybjtcbmNvbnN0IF9lcnJvciA9IGNvbnNvbGUuZXJyb3I7XG5cbmNvbnN0IHdyYXBDb25zb2xlID0gKGxvZ2dlcjogYW55LCBsb2dMZXZlbDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIF9sb2coJy0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXcmFwcGluZyBDb25zb2xlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJyk7XG5cbiAgY29uc3QgbG9nID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKGxvZ0xldmVsID09PSAnZGVidWcnKSB7XG4gICAgICBsb2dnZXIuZGVidWcoWy4uLmFyZ3NdLmpvaW4oJyAnKSk7XG4gICAgfVxuICAgIF9sb2coLi4uYXJncyk7XG4gIH07XG5cbiAgY29uc3QgaW5mbyA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmIChbJ2RlYnVnJywgJ2luZm8nXS5pbmRleE9mKGxvZ0xldmVsKSAhPT0gLTEpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFsuLi5hcmdzXS5qb2luKCcgJykpO1xuICAgIH1cbiAgICBfaW5mbyguLi5hcmdzKTtcbiAgfTtcblxuICBjb25zdCB3YXJuID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgbG9nZ2VyLndhcm4oWy4uLmFyZ3NdLmpvaW4oJyAnKSk7XG4gICAgX3dhcm4oLi4uYXJncyk7XG4gIH07XG5cbiAgY29uc3QgZXJyb3IgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICBsb2dnZXIuZXJyb3IoWy4uLmFyZ3NdLmpvaW4oJyAnKSk7XG4gICAgX2Vycm9yKC4uLmFyZ3MpO1xuICB9O1xuXG4gIGNvbnNvbGUubG9nID0gbG9nO1xuICBjb25zb2xlLmRlYnVnID0gbG9nO1xuICBjb25zb2xlLmluZm8gPSBpbmZvO1xuICBjb25zb2xlLndhcm4gPSB3YXJuO1xuICBjb25zb2xlLmVycm9yID0gZXJyb3I7XG59O1xuXG5jb25zdCBnZXRMb2dnZXIgPSAocGFyYW1zOiBJTG9nRE5BUGFyYW1zKTogYW55ID0+IHtcbiAgY29uc3QgeyBsb2dETkFLZXksIGxvZ0xldmVsLCBsb2dETkFPcHRpb25zIH0gPSBwYXJhbXM7XG5cbiAgbG9nZ2VyID0gTG9nRE5BTG9nZ2VyLnNldHVwRGVmYXVsdExvZ2dlcihsb2dETkFLZXksIGxvZ0ROQU9wdGlvbnMpO1xuXG4gIC8vIFdyYXAgZGVmYXVsdFxuICB3cmFwQ29uc29sZShsb2dnZXIsIGxvZ0xldmVsKTtcblxuICAvLyBBdHRhY2ggZmx1c2hBbGxcbiAgbG9nZ2VyLmZsdXNoQWxsID0gZmx1c2hBbGw7XG5cbiAgcmV0dXJuIGxvZ2dlcjtcbn07XG5cbmNvbnN0IGdldERlZmF1bHRDb25zb2xlTG9nID0gKCk6IGFueSA9PiBfbG9nO1xuXG5leHBvcnQgeyBnZXRMb2dnZXIsIGdldERlZmF1bHRDb25zb2xlTG9nIH07XG4iXSwibmFtZXMiOlsiZ2V0TG9nZ2VyIiwiZ2V0RGVmYXVsdENvbnNvbGVMb2ciLCJMb2dETkFMb2dnZXIiLCJyZXF1aXJlIiwiZmx1c2hBbGwiLCJsb2dnZXIiLCJfbG9nIiwiY29uc29sZSIsImxvZyIsIl9pbmZvIiwiaW5mbyIsIl93YXJuIiwid2FybiIsIl9lcnJvciIsImVycm9yIiwid3JhcENvbnNvbGUiLCJsb2dMZXZlbCIsImFyZ3MiLCJkZWJ1ZyIsImpvaW4iLCJpbmRleE9mIiwicGFyYW1zIiwibG9nRE5BS2V5IiwibG9nRE5BT3B0aW9ucyIsInNldHVwRGVmYXVsdExvZ2dlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUE2RFNBLFNBQVM7ZUFBVEE7O0lBQVdDLG9CQUFvQjtlQUFwQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE1RHBCLElBQU1DLGVBQWVDLFFBQVE7QUFDN0IsSUFBTSxBQUFFQyxXQUFhRCxRQUFRLFdBQXJCQztBQUNSLElBQUlDO0FBRUosa0JBQWtCO0FBQ2xCLElBQU1DLE9BQU9DLFFBQVFDLEdBQUc7QUFDeEIsSUFBTUMsUUFBUUYsUUFBUUcsSUFBSTtBQUMxQixJQUFNQyxRQUFRSixRQUFRSyxJQUFJO0FBQzFCLElBQU1DLFNBQVNOLFFBQVFPLEtBQUs7QUFFNUIsSUFBTUMsY0FBYyxTQUFDVixRQUFhVyxVQUEyQjtJQUMzRFYsS0FBSztJQUVMLElBQU1FLE1BQU0sU0FBTkEsTUFBZ0M7UUFBaEIsSUFBQSxJQUFBLE9BQUEsVUFBQSxRQUFBLEFBQUdTLE9BQUgsVUFBQSxPQUFBLE9BQUEsR0FBQSxPQUFBLE1BQUEsT0FBQTtZQUFHQSxLQUFILFFBQUEsU0FBQSxDQUFBLEtBQWM7UUFBRDtRQUNqQyxJQUFJRCxhQUFhLFNBQVM7WUFDeEJYLE9BQU9hLEtBQUssQ0FBQyxBQUFDLG1CQUFHRCxNQUFNRSxJQUFJLENBQUM7UUFDOUIsQ0FBQztRQUNEYixLQUFBQSxNQUFBQSxLQUFBQSxHQUFLLG1CQUFHVztJQUNWO0lBRUEsSUFBTVAsT0FBTyxTQUFQQSxPQUFpQztRQUFoQixJQUFBLElBQUEsT0FBQSxVQUFBLFFBQUEsQUFBR08sT0FBSCxVQUFBLE9BQUEsT0FBQSxHQUFBLE9BQUEsTUFBQSxPQUFBO1lBQUdBLEtBQUgsUUFBQSxTQUFBLENBQUEsS0FBYztRQUFEO1FBQ2xDLElBQUk7WUFBQztZQUFTO1NBQU8sQ0FBQ0csT0FBTyxDQUFDSixjQUFjLENBQUMsR0FBRztZQUM5Q1gsT0FBT0ssSUFBSSxDQUFDLEFBQUMsbUJBQUdPLE1BQU1FLElBQUksQ0FBQztRQUM3QixDQUFDO1FBQ0RWLE1BQUFBLE1BQUFBLEtBQUFBLEdBQU0sbUJBQUdRO0lBQ1g7SUFFQSxJQUFNTCxPQUFPLFNBQVBBLE9BQWlDO1FBQWhCLElBQUEsSUFBQSxPQUFBLFVBQUEsUUFBQSxBQUFHSyxPQUFILFVBQUEsT0FBQSxPQUFBLEdBQUEsT0FBQSxNQUFBLE9BQUE7WUFBR0EsS0FBSCxRQUFBLFNBQUEsQ0FBQSxLQUFjO1FBQUQ7UUFDbENaLE9BQU9PLElBQUksQ0FBQyxBQUFDLG1CQUFHSyxNQUFNRSxJQUFJLENBQUM7UUFDM0JSLE1BQUFBLE1BQUFBLEtBQUFBLEdBQU0sbUJBQUdNO0lBQ1g7SUFFQSxJQUFNSCxRQUFRLFNBQVJBLFFBQWtDO1FBQWhCLElBQUEsSUFBQSxPQUFBLFVBQUEsUUFBQSxBQUFHRyxPQUFILFVBQUEsT0FBQSxPQUFBLEdBQUEsT0FBQSxNQUFBLE9BQUE7WUFBR0EsS0FBSCxRQUFBLFNBQUEsQ0FBQSxLQUFjO1FBQUQ7UUFDbkNaLE9BQU9TLEtBQUssQ0FBQyxBQUFDLG1CQUFHRyxNQUFNRSxJQUFJLENBQUM7UUFDNUJOLE9BQUFBLE1BQUFBLEtBQUFBLEdBQU8sbUJBQUdJO0lBQ1o7SUFFQVYsUUFBUUMsR0FBRyxHQUFHQTtJQUNkRCxRQUFRVyxLQUFLLEdBQUdWO0lBQ2hCRCxRQUFRRyxJQUFJLEdBQUdBO0lBQ2ZILFFBQVFLLElBQUksR0FBR0E7SUFDZkwsUUFBUU8sS0FBSyxHQUFHQTtBQUNsQjtBQUVBLElBQU1kLFlBQVksU0FBQ3FCLFFBQStCO0lBQ2hELElBQVFDLFlBQXVDRCxPQUF2Q0MsV0FBV04sV0FBNEJLLE9BQTVCTCxVQUFVTyxnQkFBa0JGLE9BQWxCRTtJQUU3QmxCLFNBQVNILGFBQWFzQixrQkFBa0IsQ0FBQ0YsV0FBV0M7SUFFcEQsZUFBZTtJQUNmUixZQUFZVixRQUFRVztJQUVwQixrQkFBa0I7SUFDbEJYLE9BQU9ELFFBQVEsR0FBR0E7SUFFbEIsT0FBT0M7QUFDVDtBQUVBLElBQU1KLHVCQUF1QjtXQUFXSyJ9
|