@ngxs/logger-plugin 3.7.4 → 3.7.5

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.
@@ -1,34 +1,34 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { InjectionToken } from '@angular/core';
6
- /**
7
- * @record
8
- */
9
- export function NgxsLoggerPluginOptions() { }
10
- if (false) {
11
- /**
12
- * Auto expand logged actions
13
- * @type {?|undefined}
14
- */
15
- NgxsLoggerPluginOptions.prototype.collapsed;
16
- /**
17
- * Provide alternate console.log implementation
18
- * @type {?|undefined}
19
- */
20
- NgxsLoggerPluginOptions.prototype.logger;
21
- /**
22
- * Disable the logger. Useful for prod mode.
23
- * @type {?|undefined}
24
- */
25
- NgxsLoggerPluginOptions.prototype.disabled;
26
- /**
27
- * Predicate for actions to be the logged. Takes action and state snapshot as parameters
28
- * @type {?|undefined}
29
- */
30
- NgxsLoggerPluginOptions.prototype.filter;
31
- }
32
- /** @type {?} */
33
- export const NGXS_LOGGER_PLUGIN_OPTIONS = new InjectionToken('NGXS_LOGGER_PLUGIN_OPTIONS');
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL2xvZ2dlci1wbHVnaW4vIiwic291cmNlcyI6WyJzcmMvc3ltYm9scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUUvQyw2Q0FZQzs7Ozs7O0lBVkMsNENBQW9COzs7OztJQUdwQix5Q0FBYTs7Ozs7SUFHYiwyQ0FBbUI7Ozs7O0lBR25CLHlDQUE4Qzs7O0FBR2hELE1BQU0sT0FBTywwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5neHNMb2dnZXJQbHVnaW5PcHRpb25zIHtcclxuICAvKiogQXV0byBleHBhbmQgbG9nZ2VkIGFjdGlvbnMgICovXHJcbiAgY29sbGFwc2VkPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqIFByb3ZpZGUgYWx0ZXJuYXRlIGNvbnNvbGUubG9nIGltcGxlbWVudGF0aW9uICovXHJcbiAgbG9nZ2VyPzogYW55O1xyXG5cclxuICAvKiogRGlzYWJsZSB0aGUgbG9nZ2VyLiBVc2VmdWwgZm9yIHByb2QgbW9kZS4gKi9cclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcblxyXG4gIC8qKiBQcmVkaWNhdGUgZm9yIGFjdGlvbnMgdG8gYmUgdGhlIGxvZ2dlZC4gVGFrZXMgYWN0aW9uIGFuZCBzdGF0ZSBzbmFwc2hvdCBhcyBwYXJhbWV0ZXJzICovXHJcbiAgZmlsdGVyPzogKGFjdGlvbjogYW55LCBzdGF0ZTogYW55KSA9PiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgTkdYU19MT0dHRVJfUExVR0lOX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ05HWFNfTE9HR0VSX1BMVUdJTl9PUFRJT05TJyk7XHJcbiJdfQ==
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { InjectionToken } from '@angular/core';
6
+ /**
7
+ * @record
8
+ */
9
+ export function NgxsLoggerPluginOptions() { }
10
+ if (false) {
11
+ /**
12
+ * Auto expand logged actions
13
+ * @type {?|undefined}
14
+ */
15
+ NgxsLoggerPluginOptions.prototype.collapsed;
16
+ /**
17
+ * Provide alternate console.log implementation
18
+ * @type {?|undefined}
19
+ */
20
+ NgxsLoggerPluginOptions.prototype.logger;
21
+ /**
22
+ * Disable the logger. Useful for prod mode.
23
+ * @type {?|undefined}
24
+ */
25
+ NgxsLoggerPluginOptions.prototype.disabled;
26
+ /**
27
+ * Predicate for actions to be the logged. Takes action and state snapshot as parameters
28
+ * @type {?|undefined}
29
+ */
30
+ NgxsLoggerPluginOptions.prototype.filter;
31
+ }
32
+ /** @type {?} */
33
+ export const NGXS_LOGGER_PLUGIN_OPTIONS = new InjectionToken('NGXS_LOGGER_PLUGIN_OPTIONS');
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL2xvZ2dlci1wbHVnaW4vIiwic291cmNlcyI6WyJzcmMvc3ltYm9scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUUvQyw2Q0FZQzs7Ozs7O0lBVkMsNENBQW9COzs7OztJQUdwQix5Q0FBYTs7Ozs7SUFHYiwyQ0FBbUI7Ozs7O0lBR25CLHlDQUE4Qzs7O0FBR2hELE1BQU0sT0FBTywwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd4c0xvZ2dlclBsdWdpbk9wdGlvbnMge1xuICAvKiogQXV0byBleHBhbmQgbG9nZ2VkIGFjdGlvbnMgICovXG4gIGNvbGxhcHNlZD86IGJvb2xlYW47XG5cbiAgLyoqIFByb3ZpZGUgYWx0ZXJuYXRlIGNvbnNvbGUubG9nIGltcGxlbWVudGF0aW9uICovXG4gIGxvZ2dlcj86IGFueTtcblxuICAvKiogRGlzYWJsZSB0aGUgbG9nZ2VyLiBVc2VmdWwgZm9yIHByb2QgbW9kZS4gKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKiBQcmVkaWNhdGUgZm9yIGFjdGlvbnMgdG8gYmUgdGhlIGxvZ2dlZC4gVGFrZXMgYWN0aW9uIGFuZCBzdGF0ZSBzbmFwc2hvdCBhcyBwYXJhbWV0ZXJzICovXG4gIGZpbHRlcj86IChhY3Rpb246IGFueSwgc3RhdGU6IGFueSkgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE5HWFNfTE9HR0VSX1BMVUdJTl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuKCdOR1hTX0xPR0dFUl9QTFVHSU5fT1BUSU9OUycpO1xuIl19
package/esm5/index.js CHANGED
@@ -1,9 +1,9 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /**
6
- * The public api for consumers of @ngxs/logger-plugin
7
- */
8
- export { NgxsLoggerPluginModule, NgxsLoggerPlugin, NGXS_LOGGER_PLUGIN_OPTIONS } from './src/public_api';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9sb2dnZXItcGx1Z2luLyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLHFGQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFRoZSBwdWJsaWMgYXBpIGZvciBjb25zdW1lcnMgb2YgQG5neHMvbG9nZ2VyLXBsdWdpblxyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvcHVibGljX2FwaSc7XHJcbiJdfQ==
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ /**
6
+ * The public api for consumers of @ngxs/logger-plugin
7
+ */
8
+ export { NgxsLoggerPluginModule, NgxsLoggerPlugin, NGXS_LOGGER_PLUGIN_OPTIONS } from './src/public_api';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9sb2dnZXItcGx1Z2luLyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLHFGQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgcHVibGljIGFwaSBmb3IgY29uc3VtZXJzIG9mIEBuZ3hzL2xvZ2dlci1wbHVnaW5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvcHVibGljX2FwaSc7XG4iXX0=
@@ -1,10 +1,10 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /**
6
- * Generated bundle index. Do not edit.
7
- */
8
- export { NgxsLoggerPluginModule, NgxsLoggerPlugin, NGXS_LOGGER_PLUGIN_OPTIONS } from './index';
9
- export { USER_OPTIONS as ɵa, loggerOptionsFactory as ɵb } from './src/logger.module';
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ /**
6
+ * Generated bundle index. Do not edit.
7
+ */
8
+ export { NgxsLoggerPluginModule, NgxsLoggerPlugin, NGXS_LOGGER_PLUGIN_OPTIONS } from './index';
9
+ export { USER_OPTIONS as ɵa, loggerOptionsFactory as ɵb } from './src/logger.module';
10
10
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1sb2dnZXItcGx1Z2luLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvbG9nZ2VyLXBsdWdpbi8iLCJzb3VyY2VzIjpbIm5neHMtbG9nZ2VyLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEscUZBQWMsU0FBUyxDQUFDO0FBRXhCLE9BQU8sRUFBQyxZQUFZLElBQUksRUFBRSxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcblxuZXhwb3J0IHtVU0VSX09QVElPTlMgYXMgybVhLGxvZ2dlck9wdGlvbnNGYWN0b3J5IGFzIMm1Yn0gZnJvbSAnLi9zcmMvbG9nZ2VyLm1vZHVsZSc7Il19
@@ -1,121 +1,121 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import * as tslib_1 from "tslib";
6
- import { getActionTypeFromInstance } from '@ngxs/store';
7
- import { formatTime } from './internals';
8
- var ActionLogger = /** @class */ (function () {
9
- function ActionLogger(action, store, logWriter) {
10
- this.action = action;
11
- this.store = store;
12
- this.logWriter = logWriter;
13
- }
14
- /**
15
- * @param {?} state
16
- * @return {?}
17
- */
18
- ActionLogger.prototype.dispatched = /**
19
- * @param {?} state
20
- * @return {?}
21
- */
22
- function (state) {
23
- /** @type {?} */
24
- var actionName = getActionTypeFromInstance(this.action);
25
- /** @type {?} */
26
- var formattedTime = formatTime(new Date());
27
- /** @type {?} */
28
- var message = "action " + actionName + " @ " + formattedTime;
29
- this.logWriter.startGroup(message);
30
- // print payload only if at least one property is supplied
31
- if (this._hasPayload(this.action)) {
32
- this.logWriter.logGrey('payload', tslib_1.__assign({}, this.action));
33
- }
34
- this.logWriter.logGrey('prev state', state);
35
- };
36
- /**
37
- * @param {?} nextState
38
- * @return {?}
39
- */
40
- ActionLogger.prototype.completed = /**
41
- * @param {?} nextState
42
- * @return {?}
43
- */
44
- function (nextState) {
45
- this.logWriter.logGreen('next state', nextState);
46
- this.logWriter.endGroup();
47
- };
48
- /**
49
- * @param {?} error
50
- * @return {?}
51
- */
52
- ActionLogger.prototype.errored = /**
53
- * @param {?} error
54
- * @return {?}
55
- */
56
- function (error) {
57
- this.logWriter.logRedish('next state after error', this.store.snapshot());
58
- this.logWriter.logRedish('error', error);
59
- this.logWriter.endGroup();
60
- };
61
- /**
62
- * @private
63
- * @param {?} event
64
- * @return {?}
65
- */
66
- ActionLogger.prototype._hasPayload = /**
67
- * @private
68
- * @param {?} event
69
- * @return {?}
70
- */
71
- function (event) {
72
- /** @type {?} */
73
- var nonEmptyProperties = this._getNonEmptyProperties(event);
74
- return nonEmptyProperties.length > 0;
75
- };
76
- /**
77
- * @private
78
- * @param {?} event
79
- * @return {?}
80
- */
81
- ActionLogger.prototype._getNonEmptyProperties = /**
82
- * @private
83
- * @param {?} event
84
- * @return {?}
85
- */
86
- function (event) {
87
- /** @type {?} */
88
- var keys = Object.keys(event);
89
- /** @type {?} */
90
- var values = keys.map((/**
91
- * @param {?} key
92
- * @return {?}
93
- */
94
- function (key) { return event[key]; }));
95
- return values.filter((/**
96
- * @param {?} value
97
- * @return {?}
98
- */
99
- function (value) { return value !== undefined; }));
100
- };
101
- return ActionLogger;
102
- }());
103
- export { ActionLogger };
104
- if (false) {
105
- /**
106
- * @type {?}
107
- * @private
108
- */
109
- ActionLogger.prototype.action;
110
- /**
111
- * @type {?}
112
- * @private
113
- */
114
- ActionLogger.prototype.store;
115
- /**
116
- * @type {?}
117
- * @private
118
- */
119
- ActionLogger.prototype.logWriter;
120
- }
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL2xvZ2dlci1wbHVnaW4vIiwic291cmNlcyI6WyJzcmMvYWN0aW9uLWxvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSx5QkFBeUIsRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUUvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3pDO0lBQ0Usc0JBQW9CLE1BQVcsRUFBVSxLQUFZLEVBQVUsU0FBb0I7UUFBL0QsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQUFVLFVBQUssR0FBTCxLQUFLLENBQU87UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQUcsQ0FBQzs7Ozs7SUFFdkYsaUNBQVU7Ozs7SUFBVixVQUFXLEtBQVU7O1lBQ2IsVUFBVSxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7O1lBQ25ELGFBQWEsR0FBRyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQzs7WUFFdEMsT0FBTyxHQUFHLFlBQVUsVUFBVSxXQUFNLGFBQWU7UUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsMERBQTBEO1FBQzFELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyx1QkFBTyxJQUFJLENBQUMsTUFBTSxFQUFHLENBQUM7U0FDdkQ7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7Ozs7SUFFRCxnQ0FBUzs7OztJQUFULFVBQVUsU0FBYztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7OztJQUVELDhCQUFPOzs7O0lBQVAsVUFBUSxLQUFVO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7Ozs7SUFFTyxrQ0FBVzs7Ozs7SUFBbkIsVUFBb0IsS0FBVTs7WUFDdEIsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQztRQUM3RCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7Ozs7O0lBRU8sNkNBQXNCOzs7OztJQUE5QixVQUErQixLQUFVOztZQUNqQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7O1lBQ3pCLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRzs7OztRQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFWLENBQVUsRUFBQztRQUMxQyxPQUFPLE1BQU0sQ0FBQyxNQUFNOzs7O1FBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLEtBQUssU0FBUyxFQUFuQixDQUFtQixFQUFDLENBQUM7SUFDckQsQ0FBQztJQUNILG1CQUFDO0FBQUQsQ0FBQyxBQXZDRCxJQXVDQzs7Ozs7OztJQXRDYSw4QkFBbUI7Ozs7O0lBQUUsNkJBQW9COzs7OztJQUFFLGlDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xyXG5cclxuaW1wb3J0IHsgZm9ybWF0VGltZSB9IGZyb20gJy4vaW50ZXJuYWxzJztcclxuaW1wb3J0IHsgTG9nV3JpdGVyIH0gZnJvbSAnLi9sb2ctd3JpdGVyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25Mb2dnZXIge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBhbnksIHByaXZhdGUgc3RvcmU6IFN0b3JlLCBwcml2YXRlIGxvZ1dyaXRlcjogTG9nV3JpdGVyKSB7fVxyXG5cclxuICBkaXNwYXRjaGVkKHN0YXRlOiBhbnkpIHtcclxuICAgIGNvbnN0IGFjdGlvbk5hbWUgPSBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKHRoaXMuYWN0aW9uKTtcclxuICAgIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSBmb3JtYXRUaW1lKG5ldyBEYXRlKCkpO1xyXG5cclxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgYWN0aW9uICR7YWN0aW9uTmFtZX0gQCAke2Zvcm1hdHRlZFRpbWV9YDtcclxuICAgIHRoaXMubG9nV3JpdGVyLnN0YXJ0R3JvdXAobWVzc2FnZSk7XHJcblxyXG4gICAgLy8gcHJpbnQgcGF5bG9hZCBvbmx5IGlmIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSBpcyBzdXBwbGllZFxyXG4gICAgaWYgKHRoaXMuX2hhc1BheWxvYWQodGhpcy5hY3Rpb24pKSB7XHJcbiAgICAgIHRoaXMubG9nV3JpdGVyLmxvZ0dyZXkoJ3BheWxvYWQnLCB7IC4uLnRoaXMuYWN0aW9uIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9nV3JpdGVyLmxvZ0dyZXkoJ3ByZXYgc3RhdGUnLCBzdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBjb21wbGV0ZWQobmV4dFN0YXRlOiBhbnkpIHtcclxuICAgIHRoaXMubG9nV3JpdGVyLmxvZ0dyZWVuKCduZXh0IHN0YXRlJywgbmV4dFN0YXRlKTtcclxuICAgIHRoaXMubG9nV3JpdGVyLmVuZEdyb3VwKCk7XHJcbiAgfVxyXG5cclxuICBlcnJvcmVkKGVycm9yOiBhbnkpIHtcclxuICAgIHRoaXMubG9nV3JpdGVyLmxvZ1JlZGlzaCgnbmV4dCBzdGF0ZSBhZnRlciBlcnJvcicsIHRoaXMuc3RvcmUuc25hcHNob3QoKSk7XHJcbiAgICB0aGlzLmxvZ1dyaXRlci5sb2dSZWRpc2goJ2Vycm9yJywgZXJyb3IpO1xyXG4gICAgdGhpcy5sb2dXcml0ZXIuZW5kR3JvdXAoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hhc1BheWxvYWQoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3Qgbm9uRW1wdHlQcm9wZXJ0aWVzID0gdGhpcy5fZ2V0Tm9uRW1wdHlQcm9wZXJ0aWVzKGV2ZW50KTtcclxuICAgIHJldHVybiBub25FbXB0eVByb3BlcnRpZXMubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldE5vbkVtcHR5UHJvcGVydGllcyhldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZXZlbnQpO1xyXG4gICAgY29uc3QgdmFsdWVzID0ga2V5cy5tYXAoa2V5ID0+IGV2ZW50W2tleV0pO1xyXG4gICAgcmV0dXJuIHZhbHVlcy5maWx0ZXIodmFsdWUgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { getActionTypeFromInstance } from '@ngxs/store';
7
+ import { formatTime } from './internals';
8
+ var ActionLogger = /** @class */ (function () {
9
+ function ActionLogger(action, store, logWriter) {
10
+ this.action = action;
11
+ this.store = store;
12
+ this.logWriter = logWriter;
13
+ }
14
+ /**
15
+ * @param {?} state
16
+ * @return {?}
17
+ */
18
+ ActionLogger.prototype.dispatched = /**
19
+ * @param {?} state
20
+ * @return {?}
21
+ */
22
+ function (state) {
23
+ /** @type {?} */
24
+ var actionName = getActionTypeFromInstance(this.action);
25
+ /** @type {?} */
26
+ var formattedTime = formatTime(new Date());
27
+ /** @type {?} */
28
+ var message = "action " + actionName + " @ " + formattedTime;
29
+ this.logWriter.startGroup(message);
30
+ // print payload only if at least one property is supplied
31
+ if (this._hasPayload(this.action)) {
32
+ this.logWriter.logGrey('payload', tslib_1.__assign({}, this.action));
33
+ }
34
+ this.logWriter.logGrey('prev state', state);
35
+ };
36
+ /**
37
+ * @param {?} nextState
38
+ * @return {?}
39
+ */
40
+ ActionLogger.prototype.completed = /**
41
+ * @param {?} nextState
42
+ * @return {?}
43
+ */
44
+ function (nextState) {
45
+ this.logWriter.logGreen('next state', nextState);
46
+ this.logWriter.endGroup();
47
+ };
48
+ /**
49
+ * @param {?} error
50
+ * @return {?}
51
+ */
52
+ ActionLogger.prototype.errored = /**
53
+ * @param {?} error
54
+ * @return {?}
55
+ */
56
+ function (error) {
57
+ this.logWriter.logRedish('next state after error', this.store.snapshot());
58
+ this.logWriter.logRedish('error', error);
59
+ this.logWriter.endGroup();
60
+ };
61
+ /**
62
+ * @private
63
+ * @param {?} event
64
+ * @return {?}
65
+ */
66
+ ActionLogger.prototype._hasPayload = /**
67
+ * @private
68
+ * @param {?} event
69
+ * @return {?}
70
+ */
71
+ function (event) {
72
+ /** @type {?} */
73
+ var nonEmptyProperties = this._getNonEmptyProperties(event);
74
+ return nonEmptyProperties.length > 0;
75
+ };
76
+ /**
77
+ * @private
78
+ * @param {?} event
79
+ * @return {?}
80
+ */
81
+ ActionLogger.prototype._getNonEmptyProperties = /**
82
+ * @private
83
+ * @param {?} event
84
+ * @return {?}
85
+ */
86
+ function (event) {
87
+ /** @type {?} */
88
+ var keys = Object.keys(event);
89
+ /** @type {?} */
90
+ var values = keys.map((/**
91
+ * @param {?} key
92
+ * @return {?}
93
+ */
94
+ function (key) { return event[key]; }));
95
+ return values.filter((/**
96
+ * @param {?} value
97
+ * @return {?}
98
+ */
99
+ function (value) { return value !== undefined; }));
100
+ };
101
+ return ActionLogger;
102
+ }());
103
+ export { ActionLogger };
104
+ if (false) {
105
+ /**
106
+ * @type {?}
107
+ * @private
108
+ */
109
+ ActionLogger.prototype.action;
110
+ /**
111
+ * @type {?}
112
+ * @private
113
+ */
114
+ ActionLogger.prototype.store;
115
+ /**
116
+ * @type {?}
117
+ * @private
118
+ */
119
+ ActionLogger.prototype.logWriter;
120
+ }
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL2xvZ2dlci1wbHVnaW4vIiwic291cmNlcyI6WyJzcmMvYWN0aW9uLWxvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSx5QkFBeUIsRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUUvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3pDO0lBQ0Usc0JBQW9CLE1BQVcsRUFBVSxLQUFZLEVBQVUsU0FBb0I7UUFBL0QsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQUFVLFVBQUssR0FBTCxLQUFLLENBQU87UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQUcsQ0FBQzs7Ozs7SUFFdkYsaUNBQVU7Ozs7SUFBVixVQUFXLEtBQVU7O1lBQ2IsVUFBVSxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7O1lBQ25ELGFBQWEsR0FBRyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQzs7WUFFdEMsT0FBTyxHQUFHLFlBQVUsVUFBVSxXQUFNLGFBQWU7UUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsMERBQTBEO1FBQzFELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyx1QkFBTyxJQUFJLENBQUMsTUFBTSxFQUFHLENBQUM7U0FDdkQ7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7Ozs7SUFFRCxnQ0FBUzs7OztJQUFULFVBQVUsU0FBYztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7OztJQUVELDhCQUFPOzs7O0lBQVAsVUFBUSxLQUFVO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7Ozs7SUFFTyxrQ0FBVzs7Ozs7SUFBbkIsVUFBb0IsS0FBVTs7WUFDdEIsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQztRQUM3RCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7Ozs7O0lBRU8sNkNBQXNCOzs7OztJQUE5QixVQUErQixLQUFVOztZQUNqQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7O1lBQ3pCLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRzs7OztRQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFWLENBQVUsRUFBQztRQUMxQyxPQUFPLE1BQU0sQ0FBQyxNQUFNOzs7O1FBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLEtBQUssU0FBUyxFQUFuQixDQUFtQixFQUFDLENBQUM7SUFDckQsQ0FBQztJQUNILG1CQUFDO0FBQUQsQ0FBQyxBQXZDRCxJQXVDQzs7Ozs7OztJQXRDYSw4QkFBbUI7Ozs7O0lBQUUsNkJBQW9COzs7OztJQUFFLGlDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuXG5pbXBvcnQgeyBmb3JtYXRUaW1lIH0gZnJvbSAnLi9pbnRlcm5hbHMnO1xuaW1wb3J0IHsgTG9nV3JpdGVyIH0gZnJvbSAnLi9sb2ctd3JpdGVyJztcblxuZXhwb3J0IGNsYXNzIEFjdGlvbkxvZ2dlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBhbnksIHByaXZhdGUgc3RvcmU6IFN0b3JlLCBwcml2YXRlIGxvZ1dyaXRlcjogTG9nV3JpdGVyKSB7fVxuXG4gIGRpc3BhdGNoZWQoc3RhdGU6IGFueSkge1xuICAgIGNvbnN0IGFjdGlvbk5hbWUgPSBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKHRoaXMuYWN0aW9uKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRUaW1lID0gZm9ybWF0VGltZShuZXcgRGF0ZSgpKTtcblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgYWN0aW9uICR7YWN0aW9uTmFtZX0gQCAke2Zvcm1hdHRlZFRpbWV9YDtcbiAgICB0aGlzLmxvZ1dyaXRlci5zdGFydEdyb3VwKG1lc3NhZ2UpO1xuXG4gICAgLy8gcHJpbnQgcGF5bG9hZCBvbmx5IGlmIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSBpcyBzdXBwbGllZFxuICAgIGlmICh0aGlzLl9oYXNQYXlsb2FkKHRoaXMuYWN0aW9uKSkge1xuICAgICAgdGhpcy5sb2dXcml0ZXIubG9nR3JleSgncGF5bG9hZCcsIHsgLi4udGhpcy5hY3Rpb24gfSk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2dXcml0ZXIubG9nR3JleSgncHJldiBzdGF0ZScsIHN0YXRlKTtcbiAgfVxuXG4gIGNvbXBsZXRlZChuZXh0U3RhdGU6IGFueSkge1xuICAgIHRoaXMubG9nV3JpdGVyLmxvZ0dyZWVuKCduZXh0IHN0YXRlJywgbmV4dFN0YXRlKTtcbiAgICB0aGlzLmxvZ1dyaXRlci5lbmRHcm91cCgpO1xuICB9XG5cbiAgZXJyb3JlZChlcnJvcjogYW55KSB7XG4gICAgdGhpcy5sb2dXcml0ZXIubG9nUmVkaXNoKCduZXh0IHN0YXRlIGFmdGVyIGVycm9yJywgdGhpcy5zdG9yZS5zbmFwc2hvdCgpKTtcbiAgICB0aGlzLmxvZ1dyaXRlci5sb2dSZWRpc2goJ2Vycm9yJywgZXJyb3IpO1xuICAgIHRoaXMubG9nV3JpdGVyLmVuZEdyb3VwKCk7XG4gIH1cblxuICBwcml2YXRlIF9oYXNQYXlsb2FkKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBub25FbXB0eVByb3BlcnRpZXMgPSB0aGlzLl9nZXROb25FbXB0eVByb3BlcnRpZXMoZXZlbnQpO1xuICAgIHJldHVybiBub25FbXB0eVByb3BlcnRpZXMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5vbkVtcHR5UHJvcGVydGllcyhldmVudDogYW55KSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGV2ZW50KTtcbiAgICBjb25zdCB2YWx1ZXMgPSBrZXlzLm1hcChrZXkgPT4gZXZlbnRba2V5XSk7XG4gICAgcmV0dXJuIHZhbHVlcy5maWx0ZXIodmFsdWUgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,34 +1,34 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /** @type {?} */
6
- export var repeat = (/**
7
- * @param {?} str
8
- * @param {?} times
9
- * @return {?}
10
- */
11
- function (str, times) { return new Array(times + 1).join(str); });
12
- /** @type {?} */
13
- export var pad = (/**
14
- * @param {?} num
15
- * @param {?} maxLength
16
- * @return {?}
17
- */
18
- function (num, maxLength) {
19
- return repeat('0', maxLength - num.toString().length) + num;
20
- });
21
- /**
22
- * @param {?} time
23
- * @return {?}
24
- */
25
- export function formatTime(time) {
26
- return (pad(time.getHours(), 2) +
27
- ":" +
28
- pad(time.getMinutes(), 2) +
29
- ":" +
30
- pad(time.getSeconds(), 2) +
31
- "." +
32
- pad(time.getMilliseconds(), 3));
33
- }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvbG9nZ2VyLXBsdWdpbi8iLCJzb3VyY2VzIjpbInNyYy9pbnRlcm5hbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxNQUFNLEtBQU8sTUFBTTs7Ozs7QUFBRyxVQUFDLEdBQVcsRUFBRSxLQUFhLElBQUssT0FBQSxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUE5QixDQUE4QixDQUFBOztBQUVwRixNQUFNLEtBQU8sR0FBRzs7Ozs7QUFBRyxVQUFDLEdBQVcsRUFBRSxTQUFpQjtJQUNoRCxPQUFBLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHO0FBQXBELENBQW9ELENBQUE7Ozs7O0FBRXRELE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBVTtJQUNuQyxPQUFPLENBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkIsR0FBRztRQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6QixHQUFHO1FBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDL0IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcmVwZWF0ID0gKHN0cjogc3RyaW5nLCB0aW1lczogbnVtYmVyKSA9PiBuZXcgQXJyYXkodGltZXMgKyAxKS5qb2luKHN0cik7XHJcblxyXG5leHBvcnQgY29uc3QgcGFkID0gKG51bTogbnVtYmVyLCBtYXhMZW5ndGg6IG51bWJlcikgPT5cclxuICByZXBlYXQoJzAnLCBtYXhMZW5ndGggLSBudW0udG9TdHJpbmcoKS5sZW5ndGgpICsgbnVtO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRpbWUodGltZTogRGF0ZSkge1xyXG4gIHJldHVybiAoXHJcbiAgICBwYWQodGltZS5nZXRIb3VycygpLCAyKSArXHJcbiAgICBgOmAgK1xyXG4gICAgcGFkKHRpbWUuZ2V0TWludXRlcygpLCAyKSArXHJcbiAgICBgOmAgK1xyXG4gICAgcGFkKHRpbWUuZ2V0U2Vjb25kcygpLCAyKSArXHJcbiAgICBgLmAgK1xyXG4gICAgcGFkKHRpbWUuZ2V0TWlsbGlzZWNvbmRzKCksIDMpXHJcbiAgKTtcclxufVxyXG4iXX0=
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ /** @type {?} */
6
+ export var repeat = (/**
7
+ * @param {?} str
8
+ * @param {?} times
9
+ * @return {?}
10
+ */
11
+ function (str, times) { return new Array(times + 1).join(str); });
12
+ /** @type {?} */
13
+ export var pad = (/**
14
+ * @param {?} num
15
+ * @param {?} maxLength
16
+ * @return {?}
17
+ */
18
+ function (num, maxLength) {
19
+ return repeat('0', maxLength - num.toString().length) + num;
20
+ });
21
+ /**
22
+ * @param {?} time
23
+ * @return {?}
24
+ */
25
+ export function formatTime(time) {
26
+ return (pad(time.getHours(), 2) +
27
+ ":" +
28
+ pad(time.getMinutes(), 2) +
29
+ ":" +
30
+ pad(time.getSeconds(), 2) +
31
+ "." +
32
+ pad(time.getMilliseconds(), 3));
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvbG9nZ2VyLXBsdWdpbi8iLCJzb3VyY2VzIjpbInNyYy9pbnRlcm5hbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxNQUFNLEtBQU8sTUFBTTs7Ozs7QUFBRyxVQUFDLEdBQVcsRUFBRSxLQUFhLElBQUssT0FBQSxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUE5QixDQUE4QixDQUFBOztBQUVwRixNQUFNLEtBQU8sR0FBRzs7Ozs7QUFBRyxVQUFDLEdBQVcsRUFBRSxTQUFpQjtJQUNoRCxPQUFBLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHO0FBQXBELENBQW9ELENBQUE7Ozs7O0FBRXRELE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBVTtJQUNuQyxPQUFPLENBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkIsR0FBRztRQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLEdBQUc7UUFDSCxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6QixHQUFHO1FBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDL0IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcmVwZWF0ID0gKHN0cjogc3RyaW5nLCB0aW1lczogbnVtYmVyKSA9PiBuZXcgQXJyYXkodGltZXMgKyAxKS5qb2luKHN0cik7XG5cbmV4cG9ydCBjb25zdCBwYWQgPSAobnVtOiBudW1iZXIsIG1heExlbmd0aDogbnVtYmVyKSA9PlxuICByZXBlYXQoJzAnLCBtYXhMZW5ndGggLSBudW0udG9TdHJpbmcoKS5sZW5ndGgpICsgbnVtO1xuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VGltZSh0aW1lOiBEYXRlKSB7XG4gIHJldHVybiAoXG4gICAgcGFkKHRpbWUuZ2V0SG91cnMoKSwgMikgK1xuICAgIGA6YCArXG4gICAgcGFkKHRpbWUuZ2V0TWludXRlcygpLCAyKSArXG4gICAgYDpgICtcbiAgICBwYWQodGltZS5nZXRTZWNvbmRzKCksIDIpICtcbiAgICBgLmAgK1xuICAgIHBhZCh0aW1lLmdldE1pbGxpc2Vjb25kcygpLCAzKVxuICApO1xufVxuIl19