@beforeyoubid/logger-adapter 1.0.11 → 2.0.0
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/console/logWrapper.d.ts +4 -0
- package/dist/index.d.ts +2 -1
- package/dist/logger/index.d.ts +1 -1
- package/dist/logger/logdnaClient.d.ts +19 -0
- package/dist/logger/logger.d.ts +12 -2
- package/dist/logger/util.d.ts +11 -0
- package/dist/params.d.ts +1 -1
- package/dist/src/__tests__/params.spec.js +84 -0
- package/dist/src/console/__tests__/consoleLogger.spec.js +18 -0
- package/dist/src/console/index.js +44 -0
- package/dist/src/console/logWrapper.js +99 -0
- package/dist/src/consts.js +13 -0
- package/dist/src/index.js +40 -0
- package/dist/src/logger/__tests__/index.spec.js +24 -0
- package/dist/src/logger/__tests__/logger.spec.js +139 -0
- package/dist/src/logger/__tests__/util.spec.js +81 -0
- package/dist/src/logger/index.js +17 -0
- package/dist/src/logger/logdnaClient.js +47 -0
- package/dist/src/logger/logger.js +61 -0
- package/dist/src/logger/util.js +57 -0
- package/dist/src/params.js +66 -0
- package/dist/src/transports/logdnaWinston.js +267 -0
- package/dist/src/types.js +6 -0
- package/dist/src/util.js +328 -0
- package/dist/transports/logdnaWinston.d.ts +28 -0
- package/dist/types.d.ts +5 -5
- package/dist/util.d.ts +1 -0
- package/package.json +35 -24
- package/dist/console/index.js +0 -29
- package/dist/console/logger.d.ts +0 -4
- package/dist/console/logger.js +0 -51
- package/dist/consts.js +0 -5
- package/dist/flush.d.ts +0 -29
- package/dist/flush.js +0 -80
- package/dist/index.js +0 -13
- package/dist/logger/index.js +0 -8
- package/dist/logger/logger.js +0 -32
- package/dist/params.js +0 -40
- package/dist/types.js +0 -2
- package/dist/util.js +0 -96
- package/src/console/index.ts +0 -33
- package/src/console/logger.ts +0 -62
- package/src/consts.ts +0 -3
- package/src/index.ts +0 -5
- package/src/logger/index.ts +0 -7
- package/src/logger/logger.ts +0 -41
- package/src/params.ts +0 -53
- package/src/types.ts +0 -23
- package/src/util.ts +0 -89
|
@@ -0,0 +1,267 @@
|
|
|
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__*/ _interop_require_default(require("winston-transport"));
|
|
12
|
+
var _logger = require("@logdna/logger");
|
|
13
|
+
function _assert_this_initialized(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 _class_call_check(instance, Constructor) {
|
|
20
|
+
if (!(instance instanceof Constructor)) {
|
|
21
|
+
throw new TypeError("Cannot call a class as a function");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function _defineProperties(target, props) {
|
|
25
|
+
for(var i = 0; i < props.length; i++){
|
|
26
|
+
var descriptor = props[i];
|
|
27
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
28
|
+
descriptor.configurable = true;
|
|
29
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
30
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
34
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
35
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
36
|
+
return Constructor;
|
|
37
|
+
}
|
|
38
|
+
function _define_property(obj, key, value) {
|
|
39
|
+
if (key in obj) {
|
|
40
|
+
Object.defineProperty(obj, key, {
|
|
41
|
+
value: value,
|
|
42
|
+
enumerable: true,
|
|
43
|
+
configurable: true,
|
|
44
|
+
writable: true
|
|
45
|
+
});
|
|
46
|
+
} else {
|
|
47
|
+
obj[key] = value;
|
|
48
|
+
}
|
|
49
|
+
return obj;
|
|
50
|
+
}
|
|
51
|
+
function _get_prototype_of(o) {
|
|
52
|
+
_get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
|
|
53
|
+
return o.__proto__ || Object.getPrototypeOf(o);
|
|
54
|
+
};
|
|
55
|
+
return _get_prototype_of(o);
|
|
56
|
+
}
|
|
57
|
+
function _inherits(subClass, superClass) {
|
|
58
|
+
if (typeof superClass !== "function" && superClass !== null) {
|
|
59
|
+
throw new TypeError("Super expression must either be null or a function");
|
|
60
|
+
}
|
|
61
|
+
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
62
|
+
constructor: {
|
|
63
|
+
value: subClass,
|
|
64
|
+
writable: true,
|
|
65
|
+
configurable: true
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
if (superClass) _set_prototype_of(subClass, superClass);
|
|
69
|
+
}
|
|
70
|
+
function _instanceof(left, right) {
|
|
71
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
72
|
+
return !!right[Symbol.hasInstance](left);
|
|
73
|
+
} else {
|
|
74
|
+
return left instanceof right;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function _interop_require_default(obj) {
|
|
78
|
+
return obj && obj.__esModule ? obj : {
|
|
79
|
+
default: obj
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function _object_spread(target) {
|
|
83
|
+
for(var i = 1; i < arguments.length; i++){
|
|
84
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
85
|
+
var ownKeys = Object.keys(source);
|
|
86
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
87
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
88
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
ownKeys.forEach(function(key) {
|
|
92
|
+
_define_property(target, key, source[key]);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return target;
|
|
96
|
+
}
|
|
97
|
+
function ownKeys(object, enumerableOnly) {
|
|
98
|
+
var keys = Object.keys(object);
|
|
99
|
+
if (Object.getOwnPropertySymbols) {
|
|
100
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
101
|
+
if (enumerableOnly) {
|
|
102
|
+
symbols = symbols.filter(function(sym) {
|
|
103
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
keys.push.apply(keys, symbols);
|
|
107
|
+
}
|
|
108
|
+
return keys;
|
|
109
|
+
}
|
|
110
|
+
function _object_spread_props(target, source) {
|
|
111
|
+
source = source != null ? source : {};
|
|
112
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
113
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
114
|
+
} else {
|
|
115
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
116
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return target;
|
|
120
|
+
}
|
|
121
|
+
function _object_without_properties(source, excluded) {
|
|
122
|
+
if (source == null) return {};
|
|
123
|
+
var target = _object_without_properties_loose(source, excluded);
|
|
124
|
+
var key, i;
|
|
125
|
+
if (Object.getOwnPropertySymbols) {
|
|
126
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
127
|
+
for(i = 0; i < sourceSymbolKeys.length; i++){
|
|
128
|
+
key = sourceSymbolKeys[i];
|
|
129
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
130
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
131
|
+
target[key] = source[key];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return target;
|
|
135
|
+
}
|
|
136
|
+
function _object_without_properties_loose(source, excluded) {
|
|
137
|
+
if (source == null) return {};
|
|
138
|
+
var target = {};
|
|
139
|
+
var sourceKeys = Object.keys(source);
|
|
140
|
+
var key, i;
|
|
141
|
+
for(i = 0; i < sourceKeys.length; i++){
|
|
142
|
+
key = sourceKeys[i];
|
|
143
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
144
|
+
target[key] = source[key];
|
|
145
|
+
}
|
|
146
|
+
return target;
|
|
147
|
+
}
|
|
148
|
+
function _possible_constructor_return(self, call) {
|
|
149
|
+
if (call && (_type_of(call) === "object" || typeof call === "function")) {
|
|
150
|
+
return call;
|
|
151
|
+
}
|
|
152
|
+
return _assert_this_initialized(self);
|
|
153
|
+
}
|
|
154
|
+
function _set_prototype_of(o, p) {
|
|
155
|
+
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
|
|
156
|
+
o.__proto__ = p;
|
|
157
|
+
return o;
|
|
158
|
+
};
|
|
159
|
+
return _set_prototype_of(o, p);
|
|
160
|
+
}
|
|
161
|
+
function _type_of(obj) {
|
|
162
|
+
"@swc/helpers - typeof";
|
|
163
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
164
|
+
}
|
|
165
|
+
function _is_native_reflect_construct() {
|
|
166
|
+
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
|
|
167
|
+
if (Reflect.construct.sham) return false;
|
|
168
|
+
if (typeof Proxy === "function") return true;
|
|
169
|
+
try {
|
|
170
|
+
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
|
|
171
|
+
return true;
|
|
172
|
+
} catch (e) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function _create_super(Derived) {
|
|
177
|
+
var hasNativeReflectConstruct = _is_native_reflect_construct();
|
|
178
|
+
return function _createSuperInternal() {
|
|
179
|
+
var Super = _get_prototype_of(Derived), result;
|
|
180
|
+
if (hasNativeReflectConstruct) {
|
|
181
|
+
var NewTarget = _get_prototype_of(this).constructor;
|
|
182
|
+
result = Reflect.construct(Super, arguments, NewTarget);
|
|
183
|
+
} else {
|
|
184
|
+
result = Super.apply(this, arguments);
|
|
185
|
+
}
|
|
186
|
+
return _possible_constructor_return(this, result);
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
var LogDNATransport = /*#__PURE__*/ function(Transport) {
|
|
190
|
+
"use strict";
|
|
191
|
+
_inherits(LogDNATransport, Transport);
|
|
192
|
+
var _super = _create_super(LogDNATransport);
|
|
193
|
+
function LogDNATransport(options, suppliedLogdnaClient) {
|
|
194
|
+
_class_call_check(this, LogDNATransport);
|
|
195
|
+
var _this;
|
|
196
|
+
var levels = options.levels, maxLevel = options.maxLevel, key = options.key, opts = _object_without_properties(options, [
|
|
197
|
+
"levels",
|
|
198
|
+
"maxLevel",
|
|
199
|
+
"key"
|
|
200
|
+
]);
|
|
201
|
+
_this = _super.call(this, _object_spread_props(_object_spread({}, opts), {
|
|
202
|
+
levels: levels,
|
|
203
|
+
level: maxLevel
|
|
204
|
+
}));
|
|
205
|
+
_define_property(_assert_this_initialized(_this), "logger", void 0);
|
|
206
|
+
var custom_levels = levels;
|
|
207
|
+
if (!custom_levels) {
|
|
208
|
+
// Per the winston docs, their 'npm' levels will be used, and those must be
|
|
209
|
+
// set up as custom levels in LogDNA.
|
|
210
|
+
// @see https://github.com/winstonjs/winston#logging-levels
|
|
211
|
+
custom_levels = {
|
|
212
|
+
error: 0,
|
|
213
|
+
warn: 1,
|
|
214
|
+
info: 2,
|
|
215
|
+
http: 3,
|
|
216
|
+
verbose: 4,
|
|
217
|
+
debug: 5,
|
|
218
|
+
silly: 6
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
// Using the supplied logger or create an instance of @logdna/logger
|
|
222
|
+
_this.logger = suppliedLogdnaClient !== null && suppliedLogdnaClient !== void 0 ? suppliedLogdnaClient : (0, _logger.createLogger)(key, _object_spread_props(_object_spread({}, opts), {
|
|
223
|
+
levels: Object.keys(custom_levels),
|
|
224
|
+
UserAgent: 'byb-logger-adapter'
|
|
225
|
+
}));
|
|
226
|
+
return _this;
|
|
227
|
+
}
|
|
228
|
+
_create_class(LogDNATransport, [
|
|
229
|
+
{
|
|
230
|
+
/**
|
|
231
|
+
* Winston Transport will call this log function
|
|
232
|
+
* @param info
|
|
233
|
+
* @param callback
|
|
234
|
+
* @returns
|
|
235
|
+
*/ key: "log",
|
|
236
|
+
value: function log(info, callback) {
|
|
237
|
+
var level = info.level;
|
|
238
|
+
if (_instanceof(info.error, Error)) {
|
|
239
|
+
info.error = info.error.stack || info.error.toString();
|
|
240
|
+
}
|
|
241
|
+
if (!info.message) {
|
|
242
|
+
// Send the incoming object payload as the message
|
|
243
|
+
this.logger.log(info, level);
|
|
244
|
+
callback(null, true);
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
// eslint-disable-next-line no-unused-vars
|
|
248
|
+
var message = info.message, indexMeta = info.indexMeta, timestamp = info.timestamp, meta = _object_without_properties(info, [
|
|
249
|
+
"message",
|
|
250
|
+
"indexMeta",
|
|
251
|
+
"timestamp"
|
|
252
|
+
]);
|
|
253
|
+
var opts = {
|
|
254
|
+
level: level,
|
|
255
|
+
indexMeta: indexMeta,
|
|
256
|
+
timestamp: timestamp,
|
|
257
|
+
meta: meta
|
|
258
|
+
};
|
|
259
|
+
this.logger.log(message, opts);
|
|
260
|
+
callback(null, true);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
]);
|
|
264
|
+
return LogDNATransport;
|
|
265
|
+
}(_winstontransport.default);
|
|
266
|
+
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc3BvcnRzL2xvZ2RuYVdpbnN0b24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRyYW5zcG9ydCBmcm9tICd3aW5zdG9uLXRyYW5zcG9ydCc7XG5pbXBvcnQgeyBMb2dnZXIsIGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0Bsb2dkbmEvbG9nZ2VyJztcbi8vY29uc3QgcGtnID0gcmVxdWlyZSgnLi9wYWNrYWdlLmpzb24nKTtcblxuLyoqXG4gKiBTdXBwb3J0IGZvciBXaW5zdG9uIFRyYW5zcG9ydFxuICogRnVuY3Rpb25hbGl0eTpcbiAqICBUaGlzIGNvZGUgaXMgdG8gZXh0ZW5kIFdpbnN0b24gb2JqZWN0IGFuZCB0cmFuc3BvcnQgbG9ncyB0byBMb2dETkEgYXV0b21hdGljYWxseS5cbiAqICBXZSBuZWVkIHRvIGJ1aWxkIGEgY3VzdG9tIHRyYW5zcG9ydCBiZWNhdXNlIHRoZSBvcmlnaW5hbCBjb2RlIGRvZXNuJ3Qgc3VwcG9ydCBMYW1iZGEgZW52aXJvbm1lbnQuIFNlZSBiZWxvd1xuICpcbiAqIE5vdGU6XG4gKiAgVGhpcyBjb2RlIGlzIGNsb25lZCBmcm9tIHRoZSBvZmZpY2lhbCBMb2dETkEgV2luc3RvbiB0cmFuc3BvcnQgKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2dkbmEvbG9nZG5hLXdpbnN0b24pXG4gKiAgVGhpcyBtb2R1bGUgaGFzIGxpbWl0ZWQgYW5kIGRvZXNuJ3QgZnVsbHkgc3VwcG9ydCBMYW1iZGEgZW52aXJvbm1lbnQgZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlIGxvZ2dlciBvYmplY3QgaXNcbiAqICBjcmVhdGVkIGluc2lkZSBvZiB0aGUgdHJhbnNwb3J0LiBUaGlzIG1lYW5zIHRoYXQgb3VyIGVuc3VyZUZsdXNoQWxsKCkgZG9lc24ndCBoYXZlIGEgY2hhbmNlIHRvIGNsZWFyIGl0cyBidWZmZXJcbiAqXG4gKiAgU29tZW9uZSByZXBvcnRlZCB0aGUgaXNzdWUgaGVyZSAtIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2dkbmEvbG9nZG5hLXdpbnN0b24vaXNzdWVzLzM4XG4gKlxuICogRXhhbXBsZSBvZiB0cmFuc3BvcnQgKGh0dHBzOi8vZ2l0aHViLmNvbS93aW5zdG9uanMvd2luc3Rvbi10cmFuc3BvcnQpXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dETkFUcmFuc3BvcnQgZXh0ZW5kcyBUcmFuc3BvcnQge1xuICBsb2dnZXI6IExvZ2dlcjtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogYW55LCBzdXBwbGllZExvZ2RuYUNsaWVudD86IExvZ2dlcikge1xuICAgIGNvbnN0IHsgbGV2ZWxzLCBtYXhMZXZlbCwga2V5LCAuLi5vcHRzIH0gPSBvcHRpb25zO1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICBsZXZlbHMsXG4gICAgICBsZXZlbDogbWF4TGV2ZWwsXG4gICAgfSk7XG5cbiAgICBsZXQgY3VzdG9tX2xldmVscyA9IGxldmVscztcbiAgICBpZiAoIWN1c3RvbV9sZXZlbHMpIHtcbiAgICAgIC8vIFBlciB0aGUgd2luc3RvbiBkb2NzLCB0aGVpciAnbnBtJyBsZXZlbHMgd2lsbCBiZSB1c2VkLCBhbmQgdGhvc2UgbXVzdCBiZVxuICAgICAgLy8gc2V0IHVwIGFzIGN1c3RvbSBsZXZlbHMgaW4gTG9nRE5BLlxuICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2luc3RvbmpzL3dpbnN0b24jbG9nZ2luZy1sZXZlbHNcbiAgICAgIGN1c3RvbV9sZXZlbHMgPSB7XG4gICAgICAgIGVycm9yOiAwLFxuICAgICAgICB3YXJuOiAxLFxuICAgICAgICBpbmZvOiAyLFxuICAgICAgICBodHRwOiAzLFxuICAgICAgICB2ZXJib3NlOiA0LFxuICAgICAgICBkZWJ1ZzogNSxcbiAgICAgICAgc2lsbHk6IDYsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFVzaW5nIHRoZSBzdXBwbGllZCBsb2dnZXIgb3IgY3JlYXRlIGFuIGluc3RhbmNlIG9mIEBsb2dkbmEvbG9nZ2VyXG4gICAgdGhpcy5sb2dnZXIgPVxuICAgICAgc3VwcGxpZWRMb2dkbmFDbGllbnQgPz9cbiAgICAgIGNyZWF0ZUxvZ2dlcihrZXksIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgbGV2ZWxzOiBPYmplY3Qua2V5cyhjdXN0b21fbGV2ZWxzKSxcbiAgICAgICAgVXNlckFnZW50OiAnYnliLWxvZ2dlci1hZGFwdGVyJywgLy9gJHtwa2cubmFtZX0vJHtwa2cudmVyc2lvbn1gLFxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogV2luc3RvbiBUcmFuc3BvcnQgd2lsbCBjYWxsIHRoaXMgbG9nIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSBpbmZvXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgbG9nKGluZm86IGFueSwgY2FsbGJhY2s6IChhOiBhbnksIGI6IGFueSkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGxldmVsID0gaW5mby5sZXZlbDtcblxuICAgIGlmIChpbmZvLmVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGluZm8uZXJyb3IgPSBpbmZvLmVycm9yLnN0YWNrIHx8IGluZm8uZXJyb3IudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoIWluZm8ubWVzc2FnZSkge1xuICAgICAgLy8gU2VuZCB0aGUgaW5jb21pbmcgb2JqZWN0IHBheWxvYWQgYXMgdGhlIG1lc3NhZ2VcbiAgICAgIHRoaXMubG9nZ2VyLmxvZyhpbmZvLCBsZXZlbCk7XG4gICAgICBjYWxsYmFjayhudWxsLCB0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICBjb25zdCB7IG1lc3NhZ2UsIGluZGV4TWV0YSwgdGltZXN0YW1wLCAuLi5tZXRhIH0gPSBpbmZvO1xuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICBsZXZlbCxcbiAgICAgIGluZGV4TWV0YSxcbiAgICAgIHRpbWVzdGFtcCxcbiAgICAgIG1ldGEsXG4gICAgfTtcblxuICAgIHRoaXMubG9nZ2VyLmxvZyhtZXNzYWdlLCBvcHRzKTtcbiAgICBjYWxsYmFjayhudWxsLCB0cnVlKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkxvZ0ROQVRyYW5zcG9ydCIsIm9wdGlvbnMiLCJzdXBwbGllZExvZ2RuYUNsaWVudCIsImxldmVscyIsIm1heExldmVsIiwia2V5Iiwib3B0cyIsImxldmVsIiwibG9nZ2VyIiwiY3VzdG9tX2xldmVscyIsImVycm9yIiwid2FybiIsImluZm8iLCJodHRwIiwidmVyYm9zZSIsImRlYnVnIiwic2lsbHkiLCJjcmVhdGVMb2dnZXIiLCJPYmplY3QiLCJrZXlzIiwiVXNlckFnZW50IiwibG9nIiwiY2FsbGJhY2siLCJFcnJvciIsInN0YWNrIiwidG9TdHJpbmciLCJtZXNzYWdlIiwiaW5kZXhNZXRhIiwidGltZXN0YW1wIiwibWV0YSIsIlRyYW5zcG9ydCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFtQmFBOzs7ZUFBQUE7Ozt1RUFuQlM7c0JBQ2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCOUIsSUFBQSxBQUFNQSxnQ0FBRCxBQUFMOztjQUFNQTsrQkFBQUE7YUFBQUEsZ0JBRUNDLE9BQVksRUFBRUMsb0JBQTZCO2dDQUY1Q0Y7O1FBR1QsSUFBUUcsU0FBbUNGLFFBQW5DRSxRQUFRQyxXQUEyQkgsUUFBM0JHLFVBQVVDLE1BQWlCSixRQUFqQkksS0FBUUMsa0NBQVNMO1lBQW5DRTtZQUFRQztZQUFVQzs7a0NBQ3BCLHdDQUNEQztZQUNISCxRQUFBQTtZQUNBSSxPQUFPSDs7UUFOWEksa0RBQUFBLFVBQUFBLEtBQUFBO1FBU0UsSUFBSUMsZ0JBQWdCTjtRQUNwQixJQUFJLENBQUNNLGVBQWU7WUFDbEIsMkVBQTJFO1lBQzNFLHFDQUFxQztZQUNyQywyREFBMkQ7WUFDM0RBLGdCQUFnQjtnQkFDZEMsT0FBTztnQkFDUEMsTUFBTTtnQkFDTkMsTUFBTTtnQkFDTkMsTUFBTTtnQkFDTkMsU0FBUztnQkFDVEMsT0FBTztnQkFDUEMsT0FBTztZQUNUO1FBQ0Y7UUFFQSxvRUFBb0U7UUFDcEUsTUFBS1IsTUFBTSxHQUNUTixpQ0FBQUEsa0NBQUFBLHVCQUNBZSxJQUFBQSxvQkFBWSxFQUFDWixLQUFLLHdDQUNiQztZQUNISCxRQUFRZSxPQUFPQyxJQUFJLENBQUNWO1lBQ3BCVyxXQUFXOzs7O2tCQWhDTnBCOztZQW9DWDs7Ozs7R0FLQyxHQUNEcUIsS0FBQUE7bUJBQUFBLFNBQUFBLElBQUlULElBQVMsRUFBRVUsUUFBa0M7Z0JBQy9DLElBQU1mLFFBQVFLLEtBQUtMLEtBQUs7Z0JBRXhCLElBQUlLLEFBQVUsWUFBVkEsS0FBS0YsS0FBSyxFQUFZYSxRQUFPO29CQUMvQlgsS0FBS0YsS0FBSyxHQUFHRSxLQUFLRixLQUFLLENBQUNjLEtBQUssSUFBSVosS0FBS0YsS0FBSyxDQUFDZSxRQUFRO2dCQUN0RDtnQkFFQSxJQUFJLENBQUNiLEtBQUtjLE9BQU8sRUFBRTtvQkFDakIsa0RBQWtEO29CQUNsRCxJQUFJLENBQUNsQixNQUFNLENBQUNhLEdBQUcsQ0FBQ1QsTUFBTUw7b0JBQ3RCZSxTQUFTLE1BQU07b0JBQ2Y7Z0JBQ0Y7Z0JBRUEsMENBQTBDO2dCQUMxQyxJQUFRSSxVQUEyQ2QsS0FBM0NjLFNBQVNDLFlBQWtDZixLQUFsQ2UsV0FBV0MsWUFBdUJoQixLQUF2QmdCLFdBQWNDLGtDQUFTakI7b0JBQTNDYztvQkFBU0M7b0JBQVdDOztnQkFDNUIsSUFBTXRCLE9BQU87b0JBQ1hDLE9BQUFBO29CQUNBb0IsV0FBQUE7b0JBQ0FDLFdBQUFBO29CQUNBQyxNQUFBQTtnQkFDRjtnQkFFQSxJQUFJLENBQUNyQixNQUFNLENBQUNhLEdBQUcsQ0FBQ0ssU0FBU3BCO2dCQUN6QmdCLFNBQVMsTUFBTTtZQUNqQjs7O1dBbkVXdEI7RUFBd0I4Qix5QkFBUyJ9
|
package/dist/src/util.js
ADDED
|
@@ -0,0 +1,328 @@
|
|
|
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
|
+
ensureFlushAll: function() {
|
|
13
|
+
return ensureFlushAll;
|
|
14
|
+
},
|
|
15
|
+
ensureFlushAllCallback: function() {
|
|
16
|
+
return ensureFlushAllCallback;
|
|
17
|
+
},
|
|
18
|
+
flushAll: function() {
|
|
19
|
+
return flushAll;
|
|
20
|
+
},
|
|
21
|
+
isLogDNAEnabled: function() {
|
|
22
|
+
return isLogDNAEnabled;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
var _logdnaClient = require("./logger/logdnaClient");
|
|
26
|
+
var _events = require("events");
|
|
27
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
28
|
+
try {
|
|
29
|
+
var info = gen[key](arg);
|
|
30
|
+
var value = info.value;
|
|
31
|
+
} catch (error) {
|
|
32
|
+
reject(error);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (info.done) {
|
|
36
|
+
resolve(value);
|
|
37
|
+
} else {
|
|
38
|
+
Promise.resolve(value).then(_next, _throw);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function _async_to_generator(fn) {
|
|
42
|
+
return function() {
|
|
43
|
+
var self = this, args = arguments;
|
|
44
|
+
return new Promise(function(resolve, reject) {
|
|
45
|
+
var gen = fn.apply(self, args);
|
|
46
|
+
function _next(value) {
|
|
47
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
48
|
+
}
|
|
49
|
+
function _throw(err) {
|
|
50
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
51
|
+
}
|
|
52
|
+
_next(undefined);
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function _ts_generator(thisArg, body) {
|
|
57
|
+
var f, y, t, g, _ = {
|
|
58
|
+
label: 0,
|
|
59
|
+
sent: function() {
|
|
60
|
+
if (t[0] & 1) throw t[1];
|
|
61
|
+
return t[1];
|
|
62
|
+
},
|
|
63
|
+
trys: [],
|
|
64
|
+
ops: []
|
|
65
|
+
};
|
|
66
|
+
return g = {
|
|
67
|
+
next: verb(0),
|
|
68
|
+
"throw": verb(1),
|
|
69
|
+
"return": verb(2)
|
|
70
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
71
|
+
return this;
|
|
72
|
+
}), g;
|
|
73
|
+
function verb(n) {
|
|
74
|
+
return function(v) {
|
|
75
|
+
return step([
|
|
76
|
+
n,
|
|
77
|
+
v
|
|
78
|
+
]);
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function step(op) {
|
|
82
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
83
|
+
while(_)try {
|
|
84
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
85
|
+
if (y = 0, t) op = [
|
|
86
|
+
op[0] & 2,
|
|
87
|
+
t.value
|
|
88
|
+
];
|
|
89
|
+
switch(op[0]){
|
|
90
|
+
case 0:
|
|
91
|
+
case 1:
|
|
92
|
+
t = op;
|
|
93
|
+
break;
|
|
94
|
+
case 4:
|
|
95
|
+
_.label++;
|
|
96
|
+
return {
|
|
97
|
+
value: op[1],
|
|
98
|
+
done: false
|
|
99
|
+
};
|
|
100
|
+
case 5:
|
|
101
|
+
_.label++;
|
|
102
|
+
y = op[1];
|
|
103
|
+
op = [
|
|
104
|
+
0
|
|
105
|
+
];
|
|
106
|
+
continue;
|
|
107
|
+
case 7:
|
|
108
|
+
op = _.ops.pop();
|
|
109
|
+
_.trys.pop();
|
|
110
|
+
continue;
|
|
111
|
+
default:
|
|
112
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
113
|
+
_ = 0;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
117
|
+
_.label = op[1];
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
121
|
+
_.label = t[1];
|
|
122
|
+
t = op;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
if (t && _.label < t[2]) {
|
|
126
|
+
_.label = t[2];
|
|
127
|
+
_.ops.push(op);
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
if (t[2]) _.ops.pop();
|
|
131
|
+
_.trys.pop();
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
op = body.call(thisArg, _);
|
|
135
|
+
} catch (e) {
|
|
136
|
+
op = [
|
|
137
|
+
6,
|
|
138
|
+
e
|
|
139
|
+
];
|
|
140
|
+
y = 0;
|
|
141
|
+
} finally{
|
|
142
|
+
f = t = 0;
|
|
143
|
+
}
|
|
144
|
+
if (op[0] & 5) throw op[1];
|
|
145
|
+
return {
|
|
146
|
+
value: op[0] ? op[1] : void 0,
|
|
147
|
+
done: true
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
var debug = require('util').debuglog('logger-adapter');
|
|
152
|
+
var FALLBACK_TIMEOUT_AFTER_FLUSHING = require('./consts').FALLBACK_TIMEOUT_AFTER_FLUSHING;
|
|
153
|
+
var getLogParams = require('./params').getLogParams;
|
|
154
|
+
// timeout
|
|
155
|
+
var timeout = null;
|
|
156
|
+
/**
|
|
157
|
+
* Handy function to check if we are sending to LogDNA
|
|
158
|
+
* @param logDNAKey
|
|
159
|
+
* @param sendToRemote
|
|
160
|
+
*/ var isLogDNAEnabled = function(logDNAKey, sendToRemote) {
|
|
161
|
+
return !!logDNAKey && sendToRemote;
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* REturn if we need to suppress flushAll on a local machine
|
|
165
|
+
*/ var suppressFlushAll = function() {
|
|
166
|
+
var _getLogParams;
|
|
167
|
+
return ((_getLogParams = getLogParams()) === null || _getLogParams === void 0 ? void 0 : _getLogParams.logDNASuppressFlushAll) || false;
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Send all log messages to LogDNA before lambda is terminated
|
|
171
|
+
* Support an async function
|
|
172
|
+
*/ var flushAll = function() {
|
|
173
|
+
var _ref = _async_to_generator(function() {
|
|
174
|
+
return _ts_generator(this, function(_state) {
|
|
175
|
+
return [
|
|
176
|
+
2,
|
|
177
|
+
new Promise(function() {
|
|
178
|
+
var _ref = _async_to_generator(function(resolve) {
|
|
179
|
+
var logger, before;
|
|
180
|
+
return _ts_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
|
+
});
|
|
205
|
+
});
|
|
206
|
+
return function(resolve) {
|
|
207
|
+
return _ref.apply(this, arguments);
|
|
208
|
+
};
|
|
209
|
+
}())
|
|
210
|
+
];
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
return function flushAll() {
|
|
214
|
+
return _ref.apply(this, arguments);
|
|
215
|
+
};
|
|
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
|
+
};
|
|
229
|
+
/**
|
|
230
|
+
* Fallback promise just in
|
|
231
|
+
*/ var timeoutPromise = function() {
|
|
232
|
+
return new Promise(function(resolve) {
|
|
233
|
+
timeout = setTimeout(function() {
|
|
234
|
+
debug('Flushing timeout has reached. Ignore flushing messages...');
|
|
235
|
+
resolve();
|
|
236
|
+
}, FALLBACK_TIMEOUT_AFTER_FLUSHING);
|
|
237
|
+
});
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* Lambda wrapper to ensure we flush messages before returning the response
|
|
241
|
+
* @param lambdaHandler
|
|
242
|
+
*/ var ensureFlushAll = function(lambdaHandler) {
|
|
243
|
+
return function() {
|
|
244
|
+
var _ref = _async_to_generator(function(event, context) {
|
|
245
|
+
var result, e;
|
|
246
|
+
return _ts_generator(this, function(_state) {
|
|
247
|
+
switch(_state.label){
|
|
248
|
+
case 0:
|
|
249
|
+
_state.trys.push([
|
|
250
|
+
0,
|
|
251
|
+
4,
|
|
252
|
+
,
|
|
253
|
+
7
|
|
254
|
+
]);
|
|
255
|
+
return [
|
|
256
|
+
4,
|
|
257
|
+
lambdaHandler(event, context)
|
|
258
|
+
];
|
|
259
|
+
case 1:
|
|
260
|
+
result = _state.sent();
|
|
261
|
+
if (!!suppressFlushAll()) return [
|
|
262
|
+
3,
|
|
263
|
+
3
|
|
264
|
+
];
|
|
265
|
+
return [
|
|
266
|
+
4,
|
|
267
|
+
Promise.race([
|
|
268
|
+
flushAll(),
|
|
269
|
+
timeoutPromise()
|
|
270
|
+
])
|
|
271
|
+
];
|
|
272
|
+
case 2:
|
|
273
|
+
_state.sent();
|
|
274
|
+
_state.label = 3;
|
|
275
|
+
case 3:
|
|
276
|
+
return [
|
|
277
|
+
2,
|
|
278
|
+
result
|
|
279
|
+
];
|
|
280
|
+
case 4:
|
|
281
|
+
e = _state.sent();
|
|
282
|
+
if (!!suppressFlushAll()) return [
|
|
283
|
+
3,
|
|
284
|
+
6
|
|
285
|
+
];
|
|
286
|
+
return [
|
|
287
|
+
4,
|
|
288
|
+
Promise.race([
|
|
289
|
+
flushAll(),
|
|
290
|
+
timeoutPromise()
|
|
291
|
+
])
|
|
292
|
+
];
|
|
293
|
+
case 5:
|
|
294
|
+
_state.sent();
|
|
295
|
+
_state.label = 6;
|
|
296
|
+
case 6:
|
|
297
|
+
throw e;
|
|
298
|
+
case 7:
|
|
299
|
+
return [
|
|
300
|
+
2
|
|
301
|
+
];
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
});
|
|
305
|
+
return function(event, context) {
|
|
306
|
+
return _ref.apply(this, arguments);
|
|
307
|
+
};
|
|
308
|
+
}();
|
|
309
|
+
};
|
|
310
|
+
/**
|
|
311
|
+
* A Lambda wrapper to ensure we flush messages before a Lambda function get terminated
|
|
312
|
+
* NOTE: For non-async handlers, AWS Lambda will wait until the event loop is completed.
|
|
313
|
+
* This means after a callback function is called, a Lambda function still run
|
|
314
|
+
* and we can catch the final clean up.
|
|
315
|
+
* REF: https://docs.aws.amazon.com/lambda/latest/dg/nodejs-handler.html
|
|
316
|
+
*
|
|
317
|
+
* @param lambdaHandler
|
|
318
|
+
*/ var ensureFlushAllCallback = function(lambdaHandler) {
|
|
319
|
+
return function(event, context, callback) {
|
|
320
|
+
var thisCallback = function(error, result) {
|
|
321
|
+
callback(error, result);
|
|
322
|
+
if (!suppressFlushAll()) flushAllCallback();
|
|
323
|
+
};
|
|
324
|
+
lambdaHandler(event, context, thisCallback);
|
|
325
|
+
};
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhbWJkYUhhbmRsZXJXaXRoQXN5bmNGdW5jdGlvbiwgTGFtYmRhSGFuZGxlcldpdGhDYWxsYmFja0Z1bmN0aW9uLCBDYWxsYmFja0Z1bmN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vY29uc3QgTG9nRE5BTG9nZ2VyID0gcmVxdWlyZSgnQGxvZ2RuYS9sb2dnZXInKTtcbmltcG9ydCB7IGdldExvZ0ROQUNsaWVudCB9IGZyb20gJy4vbG9nZ2VyL2xvZ2RuYUNsaWVudCc7XG5jb25zdCBkZWJ1ZyA9IHJlcXVpcmUoJ3V0aWwnKS5kZWJ1Z2xvZygnbG9nZ2VyLWFkYXB0ZXInKTtcbmNvbnN0IHsgRkFMTEJBQ0tfVElNRU9VVF9BRlRFUl9GTFVTSElORyB9ID0gcmVxdWlyZSgnLi9jb25zdHMnKTtcbmNvbnN0IHsgZ2V0TG9nUGFyYW1zIH0gPSByZXF1aXJlKCcuL3BhcmFtcycpO1xuaW1wb3J0IHsgb25jZSB9IGZyb20gJ2V2ZW50cyc7XG5cbi8vIHRpbWVvdXRcbmxldCB0aW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIEhhbmR5IGZ1bmN0aW9uIHRvIGNoZWNrIGlmIHdlIGFyZSBzZW5kaW5nIHRvIExvZ0ROQVxuICogQHBhcmFtIGxvZ0ROQUtleVxuICogQHBhcmFtIHNlbmRUb1JlbW90ZVxuICovXG5jb25zdCBpc0xvZ0ROQUVuYWJsZWQgPSAobG9nRE5BS2V5OiBzdHJpbmcsIHNlbmRUb1JlbW90ZTogYm9vbGVhbik6IGJvb2xlYW4gPT4gISFsb2dETkFLZXkgJiYgc2VuZFRvUmVtb3RlO1xuXG4vKipcbiAqIFJFdHVybiBpZiB3ZSBuZWVkIHRvIHN1cHByZXNzIGZsdXNoQWxsIG9uIGEgbG9jYWwgbWFjaGluZVxuICovXG5jb25zdCBzdXBwcmVzc0ZsdXNoQWxsID0gKCk6IGJvb2xlYW4gPT4gZ2V0TG9nUGFyYW1zKCk/LmxvZ0ROQVN1cHByZXNzRmx1c2hBbGwgfHwgZmFsc2U7XG5cbi8qKlxuICogU2VuZCBhbGwgbG9nIG1lc3NhZ2VzIHRvIExvZ0ROQSBiZWZvcmUgbGFtYmRhIGlzIHRlcm1pbmF0ZWRcbiAqIFN1cHBvcnQgYW4gYXN5bmMgZnVuY3Rpb25cbiAqL1xuY29uc3QgZmx1c2hBbGwgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyByZXNvbHZlID0+IHtcbiAgICBkZWJ1ZygnRmx1c2hpbmcgYWxsIGxvZ3MuLi4nKTtcbiAgICBjb25zdCBsb2dnZXIgPSBnZXRMb2dETkFDbGllbnQoKTtcbiAgICBpZiAoIWxvZ2dlcikgcmV0dXJuO1xuXG4gICAgY29uc3QgYmVmb3JlID0gRGF0ZS5ub3coKTtcbiAgICAvLyBXYWl0IHVudGlsIExvZ0ROQSBlbWl0dGVyIGZsdXNoZXMgYWxsIGxvZ3MsIHRoZW4gcmVzb2x2ZVxuICAgIC8vIFRoZSBkZWZhdWx0IGZsdXNoaW5nIGludGVydmFsIGlzIDI1MG1zXG4gICAgYXdhaXQgb25jZShsb2dnZXIsICdjbGVhcmVkJyk7XG4gICAgZGVidWcoYEZsdXNoaW5nIGFsbCBsb2dzIGRvbmUgaW4gJHtEYXRlLm5vdygpIC0gYmVmb3JlfW1zYCk7XG4gICAgdGltZW91dCAmJiBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgcmVzb2x2ZSgpO1xuICB9KTtcbn07XG5cbi8qKlxuICogVHJ5IHRvIGNsZWFyIGFsbCBsb2dzIGJlZm9yZSB0aGUgTGFtYmRhIGZ1bmN0aW9uIGlzIHRlcm1pbmF0ZWQgKHN1cHBvcnQgY2FsbGJhY2sgcGF0dGVybilcbiAqXG4gKiBAcmV0dXJuc1xuICovXG5jb25zdCBmbHVzaEFsbENhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICBkZWJ1ZygnRmx1c2hpbmcgYWxsIGxvZ3MuLi4nKTtcbiAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nRE5BQ2xpZW50KCk7XG4gIGlmICghbG9nZ2VyKSByZXR1cm47XG5cbiAgLy8gQ2FsbGluZyBmbHVzaCgpIG1hbnVhbGx5IGhlcmUgdG8gYXZvaWQgcmVseWluZyBvbiB0aGUgYXN5bmMgZXZlbnRcbiAgLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQGxvZ2RuYS9sb2dnZXIjbG9nZ2VyZmx1c2hcbiAgbG9nZ2VyLmZsdXNoKCk7XG59O1xuXG4vKipcbiAqIEZhbGxiYWNrIHByb21pc2UganVzdCBpblxuICovXG5jb25zdCB0aW1lb3V0UHJvbWlzZSA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRlYnVnKCdGbHVzaGluZyB0aW1lb3V0IGhhcyByZWFjaGVkLiBJZ25vcmUgZmx1c2hpbmcgbWVzc2FnZXMuLi4nKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9LCBGQUxMQkFDS19USU1FT1VUX0FGVEVSX0ZMVVNISU5HKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIExhbWJkYSB3cmFwcGVyIHRvIGVuc3VyZSB3ZSBmbHVzaCBtZXNzYWdlcyBiZWZvcmUgcmV0dXJuaW5nIHRoZSByZXNwb25zZVxuICogQHBhcmFtIGxhbWJkYUhhbmRsZXJcbiAqL1xuY29uc3QgZW5zdXJlRmx1c2hBbGwgPSAobGFtYmRhSGFuZGxlcjogTGFtYmRhSGFuZGxlcldpdGhBc3luY0Z1bmN0aW9uKTogTGFtYmRhSGFuZGxlcldpdGhBc3luY0Z1bmN0aW9uID0+IHtcbiAgcmV0dXJuIGFzeW5jIChldmVudDogYW55LCBjb250ZXh0OiBhbnkpOiBQcm9taXNlPGFueT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBsYW1iZGFIYW5kbGVyKGV2ZW50LCBjb250ZXh0KTtcbiAgICAgIGlmICghc3VwcHJlc3NGbHVzaEFsbCgpKSBhd2FpdCBQcm9taXNlLnJhY2UoW2ZsdXNoQWxsKCksIHRpbWVvdXRQcm9taXNlKCldKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCFzdXBwcmVzc0ZsdXNoQWxsKCkpIGF3YWl0IFByb21pc2UucmFjZShbZmx1c2hBbGwoKSwgdGltZW91dFByb21pc2UoKV0pO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEEgTGFtYmRhIHdyYXBwZXIgdG8gZW5zdXJlIHdlIGZsdXNoIG1lc3NhZ2VzIGJlZm9yZSBhIExhbWJkYSBmdW5jdGlvbiBnZXQgdGVybWluYXRlZFxuICogTk9URTogRm9yIG5vbi1hc3luYyBoYW5kbGVycywgQVdTIExhbWJkYSB3aWxsIHdhaXQgdW50aWwgdGhlIGV2ZW50IGxvb3AgaXMgY29tcGxldGVkLlxuICogVGhpcyBtZWFucyBhZnRlciBhIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIGNhbGxlZCwgYSBMYW1iZGEgZnVuY3Rpb24gc3RpbGwgcnVuXG4gKiBhbmQgd2UgY2FuIGNhdGNoIHRoZSBmaW5hbCBjbGVhbiB1cC5cbiAqIFJFRjogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvbm9kZWpzLWhhbmRsZXIuaHRtbFxuICpcbiAqIEBwYXJhbSBsYW1iZGFIYW5kbGVyXG4gKi9cbmNvbnN0IGVuc3VyZUZsdXNoQWxsQ2FsbGJhY2sgPSAoXG4gIGxhbWJkYUhhbmRsZXI6IExhbWJkYUhhbmRsZXJXaXRoQ2FsbGJhY2tGdW5jdGlvblxuKTogTGFtYmRhSGFuZGxlcldpdGhDYWxsYmFja0Z1bmN0aW9uID0+IHtcbiAgcmV0dXJuIChldmVudDogYW55LCBjb250ZXh0OiBhbnksIGNhbGxiYWNrOiBDYWxsYmFja0Z1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgY29uc3QgdGhpc0NhbGxiYWNrID0gKGVycm9yOiBhbnksIHJlc3VsdDogYW55KTogdm9pZCA9PiB7XG4gICAgICBjYWxsYmFjayhlcnJvciwgcmVzdWx0KTtcbiAgICAgIGlmICghc3VwcHJlc3NGbHVzaEFsbCgpKSBmbHVzaEFsbENhbGxiYWNrKCk7XG4gICAgfTtcbiAgICBsYW1iZGFIYW5kbGVyKGV2ZW50LCBjb250ZXh0LCB0aGlzQ2FsbGJhY2spO1xuICB9O1xufTtcblxuZXhwb3J0IHsgaXNMb2dETkFFbmFibGVkLCBmbHVzaEFsbCwgZW5zdXJlRmx1c2hBbGwsIGVuc3VyZUZsdXNoQWxsQ2FsbGJhY2sgfTtcbiJdLCJuYW1lcyI6WyJlbnN1cmVGbHVzaEFsbCIsImVuc3VyZUZsdXNoQWxsQ2FsbGJhY2siLCJmbHVzaEFsbCIsImlzTG9nRE5BRW5hYmxlZCIsImRlYnVnIiwicmVxdWlyZSIsImRlYnVnbG9nIiwiRkFMTEJBQ0tfVElNRU9VVF9BRlRFUl9GTFVTSElORyIsImdldExvZ1BhcmFtcyIsInRpbWVvdXQiLCJsb2dETkFLZXkiLCJzZW5kVG9SZW1vdGUiLCJzdXBwcmVzc0ZsdXNoQWxsIiwibG9nRE5BU3VwcHJlc3NGbHVzaEFsbCIsIlByb21pc2UiLCJyZXNvbHZlIiwibG9nZ2VyIiwiYmVmb3JlIiwiZ2V0TG9nRE5BQ2xpZW50IiwiRGF0ZSIsIm5vdyIsIm9uY2UiLCJjbGVhclRpbWVvdXQiLCJmbHVzaEFsbENhbGxiYWNrIiwiZmx1c2giLCJ0aW1lb3V0UHJvbWlzZSIsInNldFRpbWVvdXQiLCJsYW1iZGFIYW5kbGVyIiwiZXZlbnQiLCJjb250ZXh0IiwicmVzdWx0IiwiZSIsInJhY2UiLCJjYWxsYmFjayIsInRoaXNDYWxsYmFjayIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQTZHb0NBLGNBQWM7ZUFBZEE7O0lBQWdCQyxzQkFBc0I7ZUFBdEJBOztJQUExQkMsUUFBUTtlQUFSQTs7SUFBakJDLGVBQWU7ZUFBZkE7Ozs0QkExR3VCO3NCQUlYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUhyQixJQUFNQyxRQUFRQyxRQUFRLFFBQVFDLFFBQVEsQ0FBQztBQUN2QyxJQUFNLEFBQUVDLGtDQUFvQ0YsUUFBUSxZQUE1Q0U7QUFDUixJQUFNLEFBQUVDLGVBQWlCSCxRQUFRLFlBQXpCRztBQUdSLFVBQVU7QUFDVixJQUFJQyxVQUFpQztBQUVyQzs7OztDQUlDLEdBQ0QsSUFBTU4sa0JBQWtCLFNBQUNPLFdBQW1CQztXQUFtQyxDQUFDLENBQUNELGFBQWFDOztBQUU5Rjs7Q0FFQyxHQUNELElBQU1DLG1CQUFtQjtRQUFlSjtXQUFBQSxFQUFBQSxnQkFBQUEsNEJBQUFBLG9DQUFBQSxjQUFnQkssc0JBQXNCLEtBQUk7O0FBRWxGOzs7Q0FHQyxHQUNELElBQU1YO2VBQVcsb0JBQUE7O1lBQ2Y7O2dCQUFPLElBQUlZOytCQUFRLG9CQUFBLFNBQU1DOzRCQUVqQkMsUUFHQUM7Ozs7b0NBSk5iLE1BQU07b0NBQ0FZLFNBQVNFLElBQUFBLDZCQUFlO29DQUM5QixJQUFJLENBQUNGLFFBQVE7OztvQ0FFUEMsU0FBU0UsS0FBS0MsR0FBRztvQ0FDdkIsMkRBQTJEO29DQUMzRCx5Q0FBeUM7b0NBQ3pDOzt3Q0FBTUMsSUFBQUEsWUFBSSxFQUFDTCxRQUFROzs7b0NBQW5CO29DQUNBWixNQUFNLEFBQUMsNkJBQWdELE9BQXBCZSxLQUFLQyxHQUFHLEtBQUtILFFBQU87b0NBQ3ZEUixXQUFXYSxhQUFhYjtvQ0FDeEJNOzs7Ozs7b0JBQ0Y7b0NBWnlCQTs7Ozs7O0lBYTNCO29CQWRNYjs7OztBQWdCTjs7OztDQUlDLEdBQ0QsSUFBTXFCLG1CQUFtQjtJQUN2Qm5CLE1BQU07SUFDTixJQUFNWSxTQUFTRSxJQUFBQSw2QkFBZTtJQUM5QixJQUFJLENBQUNGLFFBQVE7SUFFYixvRUFBb0U7SUFDcEUsMkRBQTJEO0lBQzNEQSxPQUFPUSxLQUFLO0FBQ2Q7QUFFQTs7Q0FFQyxHQUNELElBQU1DLGlCQUFpQjtJQUNyQixPQUFPLElBQUlYLFFBQVFDLFNBQUFBO1FBQ2pCTixVQUFVaUIsV0FBVztZQUNuQnRCLE1BQU07WUFDTlc7UUFDRixHQUFHUjtJQUNMO0FBQ0Y7QUFFQTs7O0NBR0MsR0FDRCxJQUFNUCxpQkFBaUIsU0FBQzJCO0lBQ3RCO21CQUFPLG9CQUFBLFNBQU9DLE9BQVlDO2dCQUVoQkMsUUFHQ0M7Ozs7Ozs7Ozs7d0JBSFE7OzRCQUFNSixjQUFjQyxPQUFPQzs7O3dCQUFwQ0MsU0FBUzs2QkFDWCxDQUFDbEIsb0JBQUQ7Ozs7d0JBQXFCOzs0QkFBTUUsUUFBUWtCLElBQUk7Z0NBQUU5QjtnQ0FBWXVCOzs7O3dCQUFoQzs7O3dCQUN6Qjs7NEJBQU9LOzs7d0JBQ0FDOzZCQUNILENBQUNuQixvQkFBRDs7Ozt3QkFBcUI7OzRCQUFNRSxRQUFRa0IsSUFBSTtnQ0FBRTlCO2dDQUFZdUI7Ozs7d0JBQWhDOzs7d0JBQ3pCLE1BQU1NOzs7Ozs7O1FBRVY7d0JBVGNILE9BQVlDOzs7O0FBVTVCO0FBRUE7Ozs7Ozs7O0NBUUMsR0FDRCxJQUFNNUIseUJBQXlCLFNBQzdCMEI7SUFFQSxPQUFPLFNBQUNDLE9BQVlDLFNBQWNJO1FBQ2hDLElBQU1DLGVBQWUsU0FBQ0MsT0FBWUw7WUFDaENHLFNBQVNFLE9BQU9MO1lBQ2hCLElBQUksQ0FBQ2xCLG9CQUFvQlc7UUFDM0I7UUFDQUksY0FBY0MsT0FBT0MsU0FBU0s7SUFDaEM7QUFDRiJ9
|
|
@@ -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
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
1
|
+
export type EmptyCBFunction = () => void;
|
|
2
|
+
export type CallbackFunction = (err: any, data: any) => void;
|
|
3
|
+
export type LambdaHandlerWithAsyncFunction = (event: any, context: any) => Promise<any>;
|
|
4
|
+
export type LambdaHandlerWithCallbackFunction = (event: any, context: any, fn: CallbackFunction) => void;
|
|
5
5
|
export interface ILogDNALogOptions {
|
|
6
6
|
key: string;
|
|
7
7
|
env: string;
|
|
8
8
|
app: string;
|
|
9
9
|
hostname: string;
|
|
10
|
-
|
|
10
|
+
indexMeta: boolean;
|
|
11
11
|
tags: Array<string>;
|
|
12
12
|
level: string;
|
|
13
13
|
handleExceptions: boolean;
|
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
|
/**
|