@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.
@@ -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
@@ -7,7 +7,7 @@ export interface ILogDNALogOptions {
7
7
  env: string;
8
8
  app: string;
9
9
  hostname: string;
10
- index_meta: boolean;
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
  /**
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(resolve) {
176
- debug("Flushing all logs...");
177
- LogDNALogger.flushAll(function() {
178
- debug("Completed flushing all log messages");
179
- if (timeout) {
180
- clearTimeout(timeout);
181
- }
182
- resolve();
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()) flushAll();
322
+ if (!suppressFlushAll()) flushAllCallback();
286
323
  };
287
324
  lambdaHandler(event, context, thisCallback);
288
325
  };
289
326
  };
290
327
 
291
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhbWJkYUhhbmRsZXJXaXRoQXN5bmNGdW5jdGlvbiwgTGFtYmRhSGFuZGxlcldpdGhDYWxsYmFja0Z1bmN0aW9uLCBDYWxsYmFja0Z1bmN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IExvZ0ROQUxvZ2dlciA9IHJlcXVpcmUoJ2xvZ2RuYScpO1xuY29uc3QgZGVidWcgPSByZXF1aXJlKCd1dGlsJykuZGVidWdsb2coJ2xvZ2dlci1hZGFwdGVyJyk7XG5jb25zdCB7IEZBTExCQUNLX1RJTUVPVVRfQUZURVJfRkxVU0hJTkcgfSA9IHJlcXVpcmUoJy4vY29uc3RzJyk7XG5jb25zdCB7IGdldExvZ1BhcmFtcyB9ID0gcmVxdWlyZSgnLi9wYXJhbXMnKTtcblxuLy8gdGltZW91dFxubGV0IHRpbWVvdXQ6IE5vZGVKUy5UaW1lb3V0O1xuXG4vKipcbiAqIEhhbmR5IGZ1bmN0aW9uIHRvIGNoZWNrIGlmIHdlIGFyZSBzZW5kaW5nIHRvIExvZ0ROQVxuICogQHBhcmFtIGxvZ0ROQUtleVxuICogQHBhcmFtIHNlbmRUb1JlbW90ZVxuICovXG5jb25zdCBpc0xvZ0ROQUVuYWJsZWQgPSAobG9nRE5BS2V5OiBzdHJpbmcsIHNlbmRUb1JlbW90ZTogYm9vbGVhbik6IGJvb2xlYW4gPT4gISFsb2dETkFLZXkgJiYgc2VuZFRvUmVtb3RlO1xuXG4vKipcbiAqIFJFdHVybiBpZiB3ZSBuZWVkIHRvIHN1cHByZXNzIGZsdXNoQWxsIG9uIGEgbG9jYWwgbWFjaGluZVxuICovXG5jb25zdCBzdXBwcmVzc0ZsdXNoQWxsID0gKCk6IGJvb2xlYW4gPT4gZ2V0TG9nUGFyYW1zKCk/LmxvZ0ROQVN1cHByZXNzRmx1c2hBbGwgfHwgZmFsc2U7XG5cbi8qKlxuICogU2VuZCBhbGwgbG9nIG1lc3NhZ2VzIHRvIExvZ0ROQSBiZWZvcmUgbGFtYmRhIGlzIHRlcm1pbmF0ZWRcbiAqL1xuY29uc3QgZmx1c2hBbGwgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICBkZWJ1ZygnRmx1c2hpbmcgYWxsIGxvZ3MuLi4nKTtcbiAgICBMb2dETkFMb2dnZXIuZmx1c2hBbGwoKCkgPT4ge1xuICAgICAgZGVidWcoJ0NvbXBsZXRlZCBmbHVzaGluZyBhbGwgbG9nIG1lc3NhZ2VzJyk7XG4gICAgICBpZiAodGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB9XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBGYWxsYmFjayBwcm9taXNlIGp1c3QgaW5cbiAqL1xuY29uc3QgdGltZW91dFByb21pc2UgPSAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBkZWJ1ZygnRmx1c2hpbmcgdGltZW91dCBoYXMgcmVhY2hlZC4gSWdub3JlIGZsdXNoaW5nIG1lc3NhZ2VzLi4uJyk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSwgRkFMTEJBQ0tfVElNRU9VVF9BRlRFUl9GTFVTSElORyk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBMYW1iZGEgd3JhcHBlciB0byBlbnN1cmUgd2UgZmx1c2ggbWVzc2FnZXMgYmVmb3JlIHJldHVybmluZyB0aGUgcmVzcG9uc2VcbiAqIEBwYXJhbSBsYW1iZGFIYW5kbGVyXG4gKi9cbmNvbnN0IGVuc3VyZUZsdXNoQWxsID0gKGxhbWJkYUhhbmRsZXI6IExhbWJkYUhhbmRsZXJXaXRoQXN5bmNGdW5jdGlvbik6IExhbWJkYUhhbmRsZXJXaXRoQXN5bmNGdW5jdGlvbiA9PiB7XG4gIHJldHVybiBhc3luYyAoZXZlbnQ6IGFueSwgY29udGV4dDogYW55KTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbGFtYmRhSGFuZGxlcihldmVudCwgY29udGV4dCk7XG4gICAgICBpZiAoIXN1cHByZXNzRmx1c2hBbGwoKSkgYXdhaXQgUHJvbWlzZS5yYWNlKFtmbHVzaEFsbCgpLCB0aW1lb3V0UHJvbWlzZSgpXSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghc3VwcHJlc3NGbHVzaEFsbCgpKSBhd2FpdCBQcm9taXNlLnJhY2UoW2ZsdXNoQWxsKCksIHRpbWVvdXRQcm9taXNlKCldKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBBIExhbWJkYSB3cmFwcGVyIHRvIGVuc3VyZSB3ZSBmbHVzaCBtZXNzYWdlcyBiZWZvcmUgYSBMYW1iZGEgZnVuY3Rpb24gZ2V0IHRlcm1pbmF0ZWRcbiAqIE5PVEU6IEZvciBub24tYXN5bmMgaGFuZGxlcnMsIEFXUyBMYW1iZGEgd2lsbCB3YWl0IHVudGlsIHRoZSBldmVudCBsb29wIGlzIGNvbXBsZXRlZC5cbiAqIFRoaXMgbWVhbnMgYWZ0ZXIgYSBjYWxsYmFjayBmdW5jdGlvbiBpcyBjYWxsZWQsIGEgTGFtYmRhIGZ1bmN0aW9uIHN0aWxsIHJ1blxuICogYW5kIHdlIGNhbiBjYXRjaCB0aGUgZmluYWwgY2xlYW4gdXAuXG4gKiBSRUY6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL25vZGVqcy1oYW5kbGVyLmh0bWxcbiAqXG4gKiBAcGFyYW0gbGFtYmRhSGFuZGxlclxuICovXG5jb25zdCBlbnN1cmVGbHVzaEFsbENhbGxiYWNrID0gKFxuICBsYW1iZGFIYW5kbGVyOiBMYW1iZGFIYW5kbGVyV2l0aENhbGxiYWNrRnVuY3Rpb25cbik6IExhbWJkYUhhbmRsZXJXaXRoQ2FsbGJhY2tGdW5jdGlvbiA9PiB7XG4gIHJldHVybiAoZXZlbnQ6IGFueSwgY29udGV4dDogYW55LCBjYWxsYmFjazogQ2FsbGJhY2tGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHRoaXNDYWxsYmFjayA9IChlcnJvcjogYW55LCByZXN1bHQ6IGFueSk6IHZvaWQgPT4ge1xuICAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7XG4gICAgICBpZiAoIXN1cHByZXNzRmx1c2hBbGwoKSkgZmx1c2hBbGwoKTtcbiAgICB9O1xuICAgIGxhbWJkYUhhbmRsZXIoZXZlbnQsIGNvbnRleHQsIHRoaXNDYWxsYmFjayk7XG4gIH07XG59O1xuXG5leHBvcnQgeyBpc0xvZ0ROQUVuYWJsZWQsIGZsdXNoQWxsLCBlbnN1cmVGbHVzaEFsbCwgZW5zdXJlRmx1c2hBbGxDYWxsYmFjayB9O1xuIl0sIm5hbWVzIjpbImlzTG9nRE5BRW5hYmxlZCIsImZsdXNoQWxsIiwiZW5zdXJlRmx1c2hBbGwiLCJlbnN1cmVGbHVzaEFsbENhbGxiYWNrIiwiTG9nRE5BTG9nZ2VyIiwicmVxdWlyZSIsImRlYnVnIiwiZGVidWdsb2ciLCJGQUxMQkFDS19USU1FT1VUX0FGVEVSX0ZMVVNISU5HIiwiZ2V0TG9nUGFyYW1zIiwidGltZW91dCIsImxvZ0ROQUtleSIsInNlbmRUb1JlbW90ZSIsInN1cHByZXNzRmx1c2hBbGwiLCJsb2dETkFTdXBwcmVzc0ZsdXNoQWxsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjbGVhclRpbWVvdXQiLCJ0aW1lb3V0UHJvbWlzZSIsInNldFRpbWVvdXQiLCJsYW1iZGFIYW5kbGVyIiwiZXZlbnQiLCJjb250ZXh0IiwicmVzdWx0IiwiZSIsInJhY2UiLCJjYWxsYmFjayIsInRoaXNDYWxsYmFjayIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQXdGU0EsZUFBZTtlQUFmQTs7SUFBaUJDLFFBQVE7ZUFBUkE7O0lBQVVDLGNBQWM7ZUFBZEE7O0lBQWdCQyxzQkFBc0I7ZUFBdEJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdEZwRCxJQUFNQyxlQUFlQyxRQUFRO0FBQzdCLElBQU1DLFFBQVFELFFBQVEsUUFBUUUsUUFBUSxDQUFDO0FBQ3ZDLElBQU0sQUFBRUMsa0NBQW9DSCxRQUFRLFlBQTVDRztBQUNSLElBQU0sQUFBRUMsZUFBaUJKLFFBQVEsWUFBekJJO0FBRVIsVUFBVTtBQUNWLElBQUlDO0FBRUo7Ozs7Q0FJQyxHQUNELElBQU1WLGtCQUFrQixTQUFDVyxXQUFtQkM7V0FBbUMsQ0FBQyxDQUFDRCxhQUFhQzs7QUFFOUY7O0NBRUMsR0FDRCxJQUFNQyxtQkFBbUI7UUFBZUo7SUFBQUEsT0FBQUEsQ0FBQUEsQ0FBQUEsZ0JBQUFBLDRCQUFBQSwyQkFBQUEsS0FBQUEsSUFBQUEsY0FBZ0JLLHNCQUFzQixBQUFELEtBQUssS0FBSzs7QUFFdkY7O0NBRUMsR0FDRCxJQUFNYjtlQUFXLGtCQUFBLFdBQTJCOztZQUMxQzs7Z0JBQU8sSUFBSWMsUUFBUUMsU0FBQUEsU0FBVztvQkFDNUJWLE1BQU07b0JBQ05GLGFBQWFILFFBQVEsQ0FBQyxXQUFNO3dCQUMxQkssTUFBTTt3QkFDTixJQUFJSSxTQUFTOzRCQUNYTyxhQUFhUDt3QkFDZixDQUFDO3dCQUNETTtvQkFDRjtnQkFDRjs7O0lBQ0Y7b0JBWE1mOzs7O0FBYU47O0NBRUMsR0FDRCxJQUFNaUIsaUJBQWlCLFdBQXFCO0lBQzFDLE9BQU8sSUFBSUgsUUFBUUMsU0FBQUEsU0FBVztRQUM1Qk4sVUFBVVMsV0FBVyxXQUFNO1lBQ3pCYixNQUFNO1lBQ05VO1FBQ0YsR0FBR1I7SUFDTDtBQUNGO0FBRUE7OztDQUdDLEdBQ0QsSUFBTU4saUJBQWlCLFNBQUNrQixlQUFrRjtJQUN4RzttQkFBTyxrQkFBQSxTQUFPQyxPQUFZQyxTQUErQjtnQkFFL0NDLFFBR0NDOzs7Ozs7Ozs7O3dCQUhROzs0QkFBTUosY0FBY0MsT0FBT0M7Ozt3QkFBcENDLFNBQVM7NkJBQ1gsQ0FBQ1Ysb0JBQUQ7Ozs7d0JBQXFCOzs0QkFBTUUsUUFBUVUsSUFBSTtnQ0FBRXhCO2dDQUFZaUI7Ozs7d0JBQWhDOzs7d0JBQ3pCOzs0QkFBT0s7Ozt3QkFDQUM7NkJBQ0gsQ0FBQ1gsb0JBQUQ7Ozs7d0JBQXFCOzs0QkFBTUUsUUFBUVUsSUFBSTtnQ0FBRXhCO2dDQUFZaUI7Ozs7d0JBQWhDOzs7d0JBQ3pCLE1BQU1NLEVBQUU7Ozs7Ozs7UUFFWjt3QkFUY0gsT0FBWUM7Ozs7QUFVNUI7QUFFQTs7Ozs7Ozs7Q0FRQyxHQUNELElBQU1uQix5QkFBeUIsU0FDN0JpQixlQUNzQztJQUN0QyxPQUFPLFNBQUNDLE9BQVlDLFNBQWNJLFVBQXFDO1FBQ3JFLElBQU1DLGVBQWUsU0FBQ0MsT0FBWUwsUUFBc0I7WUFDdERHLFNBQVNFLE9BQU9MO1lBQ2hCLElBQUksQ0FBQ1Ysb0JBQW9CWjtRQUMzQjtRQUNBbUIsY0FBY0MsT0FBT0MsU0FBU0s7SUFDaEM7QUFDRiJ9
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": "1.0.12",
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": "3.5.3",
38
- "logdna-winston": "^2.3.2",
39
- "winston": "3.8.2"
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.4.2",
54
+ "jest": "^29.7.0",
55
55
  "jest-junit": "15.0.0",
56
56
  "prettier": "2.8.4",
57
57
  "rimraf": "^4.1.2",
@@ -1,4 +0,0 @@
1
- import { ILogDNAParams } from '../types';
2
- declare const getLogger: (params: ILogDNAParams) => any;
3
- declare const getDefaultConsoleLog: () => any;
4
- export { getLogger, getDefaultConsoleLog };
@@ -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