@decaf-ts/logging 0.3.6 → 0.3.8
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 +223 -307
- package/dist/logging.cjs +164 -37
- package/dist/logging.esm.cjs +163 -38
- package/lib/LoggedClass.cjs +39 -1
- package/lib/LoggedClass.d.ts +38 -0
- package/lib/constants.cjs +13 -3
- package/lib/constants.d.ts +1 -0
- package/lib/decorators.cjs +19 -9
- package/lib/decorators.d.ts +25 -11
- package/lib/esm/LoggedClass.d.ts +38 -0
- package/lib/esm/LoggedClass.js +39 -1
- package/lib/esm/constants.d.ts +1 -0
- package/lib/esm/constants.js +13 -3
- package/lib/esm/decorators.d.ts +25 -11
- package/lib/esm/decorators.js +19 -9
- package/lib/esm/index.d.ts +9 -2
- package/lib/esm/index.js +10 -3
- package/lib/esm/logging.d.ts +9 -17
- package/lib/esm/logging.js +50 -25
- package/lib/esm/types.d.ts +17 -0
- package/lib/esm/types.js +1 -1
- package/lib/esm/utils.d.ts +12 -0
- package/lib/esm/utils.js +31 -0
- package/lib/index.cjs +10 -3
- package/lib/index.d.ts +9 -2
- package/lib/logging.cjs +50 -25
- package/lib/logging.d.ts +9 -17
- package/lib/types.cjs +1 -1
- package/lib/types.d.ts +17 -0
- package/lib/utils.cjs +34 -0
- package/lib/utils.d.ts +12 -0
- package/package.json +2 -1
package/lib/LoggedClass.cjs
CHANGED
|
@@ -2,11 +2,49 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LoggedClass = void 0;
|
|
4
4
|
const logging_1 = require("./logging.cjs");
|
|
5
|
+
/**
|
|
6
|
+
* @description Base class that provides a ready-to-use logger instance
|
|
7
|
+
* @summary LoggedClass is a convenience abstract class that injects a type-safe logger
|
|
8
|
+
* into derived classes through a protected getter. Subclasses can directly access
|
|
9
|
+
* this.log to emit messages without manually creating a logger. This promotes
|
|
10
|
+
* consistent, context-aware logging across the codebase.
|
|
11
|
+
* @param {void} [constructor] - No constructor arguments; subclasses may define their own
|
|
12
|
+
* @class LoggedClass
|
|
13
|
+
* @example
|
|
14
|
+
* class UserService extends LoggedClass {
|
|
15
|
+
* create(user: User) {
|
|
16
|
+
* this.log.info(`Creating user ${user.id}`);
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* const svc = new UserService();
|
|
21
|
+
* svc.create({ id: "42" });
|
|
22
|
+
* @mermaid
|
|
23
|
+
* sequenceDiagram
|
|
24
|
+
* participant Client
|
|
25
|
+
* participant Instance as Subclass Instance
|
|
26
|
+
* participant Getter as LoggedClass.log
|
|
27
|
+
* participant Logging as Logging
|
|
28
|
+
* participant Logger as Logger
|
|
29
|
+
*
|
|
30
|
+
* Client->>Instance: call someMethod()
|
|
31
|
+
* Instance->>Getter: access this.log
|
|
32
|
+
* Getter->>Logging: Logging.for(this)
|
|
33
|
+
* Logging-->>Getter: return Logger
|
|
34
|
+
* Getter-->>Instance: return Logger
|
|
35
|
+
* Instance->>Logger: info/debug/error(...)
|
|
36
|
+
*/
|
|
5
37
|
class LoggedClass {
|
|
38
|
+
/**
|
|
39
|
+
* @description Lazily provides a context-aware logger for the current instance
|
|
40
|
+
* @summary Uses Logging.for(this) to create a logger whose context is the
|
|
41
|
+
* subclass name, allowing uniform and structured logs from any inheriting class.
|
|
42
|
+
* @return {Logger} A logger bound to the subclass context
|
|
43
|
+
*/
|
|
6
44
|
get log() {
|
|
7
45
|
return logging_1.Logging.for(this);
|
|
8
46
|
}
|
|
9
47
|
constructor() { }
|
|
10
48
|
}
|
|
11
49
|
exports.LoggedClass = LoggedClass;
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2VkQ2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvTG9nZ2VkQ2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQW9DO0FBR3BDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBQ0gsTUFBc0IsV0FBVztJQUMvQjs7Ozs7T0FLRztJQUNILElBQWMsR0FBRztRQUNmLE9BQU8saUJBQU8sQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGdCQUF5QixDQUFDO0NBQzNCO0FBWkQsa0NBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBjbGFzcyB0aGF0IHByb3ZpZGVzIGEgcmVhZHktdG8tdXNlIGxvZ2dlciBpbnN0YW5jZVxuICogQHN1bW1hcnkgTG9nZ2VkQ2xhc3MgaXMgYSBjb252ZW5pZW5jZSBhYnN0cmFjdCBjbGFzcyB0aGF0IGluamVjdHMgYSB0eXBlLXNhZmUgbG9nZ2VyXG4gKiBpbnRvIGRlcml2ZWQgY2xhc3NlcyB0aHJvdWdoIGEgcHJvdGVjdGVkIGdldHRlci4gU3ViY2xhc3NlcyBjYW4gZGlyZWN0bHkgYWNjZXNzXG4gKiB0aGlzLmxvZyB0byBlbWl0IG1lc3NhZ2VzIHdpdGhvdXQgbWFudWFsbHkgY3JlYXRpbmcgYSBsb2dnZXIuIFRoaXMgcHJvbW90ZXNcbiAqIGNvbnNpc3RlbnQsIGNvbnRleHQtYXdhcmUgbG9nZ2luZyBhY3Jvc3MgdGhlIGNvZGViYXNlLlxuICogQHBhcmFtIHt2b2lkfSBbY29uc3RydWN0b3JdIC0gTm8gY29uc3RydWN0b3IgYXJndW1lbnRzOyBzdWJjbGFzc2VzIG1heSBkZWZpbmUgdGhlaXIgb3duXG4gKiBAY2xhc3MgTG9nZ2VkQ2xhc3NcbiAqIEBleGFtcGxlXG4gKiBjbGFzcyBVc2VyU2VydmljZSBleHRlbmRzIExvZ2dlZENsYXNzIHtcbiAqICAgY3JlYXRlKHVzZXI6IFVzZXIpIHtcbiAqICAgICB0aGlzLmxvZy5pbmZvKGBDcmVhdGluZyB1c2VyICR7dXNlci5pZH1gKTtcbiAqICAgfVxuICogfVxuICpcbiAqIGNvbnN0IHN2YyA9IG5ldyBVc2VyU2VydmljZSgpO1xuICogc3ZjLmNyZWF0ZSh7IGlkOiBcIjQyXCIgfSk7XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICBwYXJ0aWNpcGFudCBJbnN0YW5jZSBhcyBTdWJjbGFzcyBJbnN0YW5jZVxuICogICBwYXJ0aWNpcGFudCBHZXR0ZXIgYXMgTG9nZ2VkQ2xhc3MubG9nXG4gKiAgIHBhcnRpY2lwYW50IExvZ2dpbmcgYXMgTG9nZ2luZ1xuICogICBwYXJ0aWNpcGFudCBMb2dnZXIgYXMgTG9nZ2VyXG4gKlxuICogICBDbGllbnQtPj5JbnN0YW5jZTogY2FsbCBzb21lTWV0aG9kKClcbiAqICAgSW5zdGFuY2UtPj5HZXR0ZXI6IGFjY2VzcyB0aGlzLmxvZ1xuICogICBHZXR0ZXItPj5Mb2dnaW5nOiBMb2dnaW5nLmZvcih0aGlzKVxuICogICBMb2dnaW5nLS0+PkdldHRlcjogcmV0dXJuIExvZ2dlclxuICogICBHZXR0ZXItLT4+SW5zdGFuY2U6IHJldHVybiBMb2dnZXJcbiAqICAgSW5zdGFuY2UtPj5Mb2dnZXI6IGluZm8vZGVidWcvZXJyb3IoLi4uKVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTG9nZ2VkQ2xhc3Mge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExhemlseSBwcm92aWRlcyBhIGNvbnRleHQtYXdhcmUgbG9nZ2VyIGZvciB0aGUgY3VycmVudCBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBVc2VzIExvZ2dpbmcuZm9yKHRoaXMpIHRvIGNyZWF0ZSBhIGxvZ2dlciB3aG9zZSBjb250ZXh0IGlzIHRoZVxuICAgKiBzdWJjbGFzcyBuYW1lLCBhbGxvd2luZyB1bmlmb3JtIGFuZCBzdHJ1Y3R1cmVkIGxvZ3MgZnJvbSBhbnkgaW5oZXJpdGluZyBjbGFzcy5cbiAgICogQHJldHVybiB7TG9nZ2VyfSBBIGxvZ2dlciBib3VuZCB0byB0aGUgc3ViY2xhc3MgY29udGV4dFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBsb2coKTogTG9nZ2VyIHtcbiAgICByZXR1cm4gTG9nZ2luZy5mb3IodGhpcyBhcyBhbnkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge31cbn1cbiJdfQ==
|
package/lib/LoggedClass.d.ts
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
import { Logger } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* @description Base class that provides a ready-to-use logger instance
|
|
4
|
+
* @summary LoggedClass is a convenience abstract class that injects a type-safe logger
|
|
5
|
+
* into derived classes through a protected getter. Subclasses can directly access
|
|
6
|
+
* this.log to emit messages without manually creating a logger. This promotes
|
|
7
|
+
* consistent, context-aware logging across the codebase.
|
|
8
|
+
* @param {void} [constructor] - No constructor arguments; subclasses may define their own
|
|
9
|
+
* @class LoggedClass
|
|
10
|
+
* @example
|
|
11
|
+
* class UserService extends LoggedClass {
|
|
12
|
+
* create(user: User) {
|
|
13
|
+
* this.log.info(`Creating user ${user.id}`);
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* const svc = new UserService();
|
|
18
|
+
* svc.create({ id: "42" });
|
|
19
|
+
* @mermaid
|
|
20
|
+
* sequenceDiagram
|
|
21
|
+
* participant Client
|
|
22
|
+
* participant Instance as Subclass Instance
|
|
23
|
+
* participant Getter as LoggedClass.log
|
|
24
|
+
* participant Logging as Logging
|
|
25
|
+
* participant Logger as Logger
|
|
26
|
+
*
|
|
27
|
+
* Client->>Instance: call someMethod()
|
|
28
|
+
* Instance->>Getter: access this.log
|
|
29
|
+
* Getter->>Logging: Logging.for(this)
|
|
30
|
+
* Logging-->>Getter: return Logger
|
|
31
|
+
* Getter-->>Instance: return Logger
|
|
32
|
+
* Instance->>Logger: info/debug/error(...)
|
|
33
|
+
*/
|
|
2
34
|
export declare abstract class LoggedClass {
|
|
35
|
+
/**
|
|
36
|
+
* @description Lazily provides a context-aware logger for the current instance
|
|
37
|
+
* @summary Uses Logging.for(this) to create a logger whose context is the
|
|
38
|
+
* subclass name, allowing uniform and structured logs from any inheriting class.
|
|
39
|
+
* @return {Logger} A logger bound to the subclass context
|
|
40
|
+
*/
|
|
3
41
|
protected get log(): Logger;
|
|
4
42
|
protected constructor();
|
|
5
43
|
}
|
package/lib/constants.cjs
CHANGED
|
@@ -5,6 +5,7 @@ exports.DefaultLoggingConfig = exports.DefaultTheme = exports.LoggingMode = expo
|
|
|
5
5
|
* @description Enum for log levels.
|
|
6
6
|
* @summary Defines different levels of logging for the application.
|
|
7
7
|
* @enum {string}
|
|
8
|
+
* @readonly
|
|
8
9
|
* @memberOf module:Logging
|
|
9
10
|
*/
|
|
10
11
|
var LogLevel;
|
|
@@ -96,10 +97,17 @@ exports.DefaultTheme = {
|
|
|
96
97
|
fg: 31,
|
|
97
98
|
style: ["bold"],
|
|
98
99
|
},
|
|
99
|
-
info: {
|
|
100
|
-
|
|
100
|
+
info: {
|
|
101
|
+
fg: 34,
|
|
102
|
+
style: ["bold"],
|
|
103
|
+
},
|
|
104
|
+
verbose: {
|
|
105
|
+
fg: 34,
|
|
106
|
+
style: ["bold"],
|
|
107
|
+
},
|
|
101
108
|
debug: {
|
|
102
109
|
fg: 33,
|
|
110
|
+
style: ["bold"],
|
|
103
111
|
},
|
|
104
112
|
},
|
|
105
113
|
};
|
|
@@ -131,6 +139,8 @@ exports.DefaultLoggingConfig = {
|
|
|
131
139
|
timestamp: true,
|
|
132
140
|
timestampFormat: "HH:mm:ss.SSS",
|
|
133
141
|
context: true,
|
|
142
|
+
format: "raw",
|
|
143
|
+
pattern: "{level} [{timestamp}] {context} - {message} {stack}",
|
|
134
144
|
theme: exports.DefaultTheme,
|
|
135
145
|
};
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7O0dBTUc7QUFDSCxJQUFZLFFBV1g7QUFYRCxXQUFZLFFBQVE7SUFDbEIsc0RBQXNEO0lBQ3RELDJCQUFlLENBQUE7SUFDZixrRUFBa0U7SUFDbEUseUJBQWEsQ0FBQTtJQUNiLHVDQUF1QztJQUN2QywrQkFBbUIsQ0FBQTtJQUNuQixrQ0FBa0M7SUFDbEMsMkJBQWUsQ0FBQTtJQUNmLDRDQUE0QztJQUM1QywyQkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFYVyxRQUFRLHdCQUFSLFFBQVEsUUFXbkI7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ1UsUUFBQSxnQkFBZ0IsR0FBRztJQUM5QixLQUFLLEVBQUUsQ0FBQztJQUNSLElBQUksRUFBRSxDQUFDO0lBQ1AsT0FBTyxFQUFFLENBQUM7SUFDVixLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxDQUFDO0NBQ1QsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsSUFBWSxXQUtYO0FBTEQsV0FBWSxXQUFXO0lBQ3JCLDRDQUE0QztJQUM1QywwQkFBVyxDQUFBO0lBQ1gsc0NBQXNDO0lBQ3RDLDRCQUFhLENBQUE7QUFDZixDQUFDLEVBTFcsV0FBVywyQkFBWCxXQUFXLFFBS3RCO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUNVLFFBQUEsWUFBWSxHQUFVO0lBQ2pDLEtBQUssRUFBRTtRQUNMLEVBQUUsRUFBRSxFQUFFO0tBQ1A7SUFDRCxFQUFFLEVBQUU7UUFDRixFQUFFLEVBQUUsRUFBRTtLQUNQO0lBQ0QsS0FBSyxFQUFFLEVBQUU7SUFDVCxTQUFTLEVBQUUsRUFBRTtJQUNiLE9BQU8sRUFBRTtRQUNQLEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxFQUFFO1NBQ1A7S0FDRjtJQUNELE1BQU0sRUFBRSxFQUFFO0lBQ1YsUUFBUSxFQUFFO1FBQ1IsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUU7WUFDTixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUM7U0FDaEI7UUFDRCxJQUFJLEVBQUU7WUFDSixFQUFFLEVBQUUsRUFBRTtZQUNOLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQztTQUNoQjtRQUNELE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxFQUFFO1lBQ04sS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDO1NBQ2hCO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUU7WUFDTixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUM7U0FDaEI7S0FDRjtDQUNGLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNVLFFBQUEsb0JBQW9CLEdBQWtCO0lBQ2pELE9BQU8sRUFBRSxDQUFDO0lBQ1YsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJO0lBQ3BCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsSUFBSSxFQUFFLFdBQVcsQ0FBQyxHQUFHO0lBQ3JCLEtBQUssRUFBRSxLQUFLO0lBQ1osZ0JBQWdCLEVBQUUsR0FBRztJQUNyQixTQUFTLEVBQUUsS0FBSztJQUNoQixTQUFTLEVBQUUsSUFBSTtJQUNmLGVBQWUsRUFBRSxjQUFjO0lBQy9CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsTUFBTSxFQUFFLEtBQUs7SUFDYixPQUFPLEVBQUUscURBQXFEO0lBQzlELEtBQUssRUFBRSxvQkFBWTtDQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nZ2luZ0NvbmZpZywgVGhlbWUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFbnVtIGZvciBsb2cgbGV2ZWxzLlxuICogQHN1bW1hcnkgRGVmaW5lcyBkaWZmZXJlbnQgbGV2ZWxzIG9mIGxvZ2dpbmcgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6TG9nZ2luZ1xuICovXG5leHBvcnQgZW51bSBMb2dMZXZlbCB7XG4gIC8qKiBFcnJvciBldmVudHMgdGhhdCBhcmUgbGlrZWx5IHRvIGNhdXNlIHByb2JsZW1zLiAqL1xuICBlcnJvciA9IFwiZXJyb3JcIixcbiAgLyoqIFJvdXRpbmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgb25nb2luZyBzdGF0dXMgb3IgcGVyZm9ybWFuY2UuICovXG4gIGluZm8gPSBcImluZm9cIixcbiAgLyoqIEFkZGl0aW9uYWwgcmVsZXZhbnQgaW5mb3JtYXRpb24uICovXG4gIHZlcmJvc2UgPSBcInZlcmJvc2VcIixcbiAgLyoqIERlYnVnIG9yIHRyYWNlIGluZm9ybWF0aW9uLiAqL1xuICBkZWJ1ZyA9IFwiZGVidWdcIixcbiAgLyoqIHdheSB0b28gdmVyYm9zZSBvciBzaWxseSBpbmZvcm1hdGlvbi4gKi9cbiAgc2lsbHkgPSBcInNpbGx5XCIsXG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE51bWVyaWMgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCBsb2cgbGV2ZWxzLlxuICogQHN1bW1hcnkgUHJvdmlkZXMgYSBudW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIGxvZyBsZXZlbHMgZm9yIGNvbXBhcmlzb24gYW5kIGZpbHRlcmluZy5cbiAqIEBjb25zdCBOdW1lcmljTG9nTGV2ZWxzXG4gKiBAcHJvcGVydHkge251bWJlcn0gZXJyb3IgLSBOdW1lcmljIHZhbHVlIGZvciBlcnJvciBsZXZlbCAoMikuXG4gKiBAcHJvcGVydHkge251bWJlcn0gaW5mbyAtIE51bWVyaWMgdmFsdWUgZm9yIGluZm8gbGV2ZWwgKDQpLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHZlcmJvc2UgLSBOdW1lcmljIHZhbHVlIGZvciB2ZXJib3NlIGxldmVsICg2KS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBkZWJ1ZyAtIE51bWVyaWMgdmFsdWUgZm9yIGRlYnVnIGxldmVsICg3KS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzaWxseSAtIE51bWVyaWMgdmFsdWUgZm9yIHNpbGx5IGxldmVsICg5KS5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6TG9nZ2luZ1xuICovXG5leHBvcnQgY29uc3QgTnVtZXJpY0xvZ0xldmVscyA9IHtcbiAgZXJyb3I6IDIsXG4gIGluZm86IDQsXG4gIHZlcmJvc2U6IDYsXG4gIGRlYnVnOiA3LFxuICBzaWxseTogOSxcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVudW0gZm9yIGxvZ2dpbmcgb3V0cHV0IG1vZGVzLlxuICogQHN1bW1hcnkgRGVmaW5lcyBkaWZmZXJlbnQgb3V0cHV0IGZvcm1hdHMgZm9yIGxvZyBtZXNzYWdlcy5cbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IGVudW0gTG9nZ2luZ01vZGUge1xuICAvKiogUmF3IHRleHQgZm9ybWF0IGZvciBodW1hbiByZWFkYWJpbGl0eSAqL1xuICBSQVcgPSBcInJhd1wiLFxuICAvKiogSlNPTiBmb3JtYXQgZm9yIG1hY2hpbmUgcGFyc2luZyAqL1xuICBKU09OID0gXCJqc29uXCIsXG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlZmF1bHQgdGhlbWUgZm9yIHN0eWxpbmcgbG9nIG91dHB1dC5cbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGRlZmF1bHQgY29sb3IgYW5kIHN0eWxlIHNldHRpbmdzIGZvciB2YXJpb3VzIGNvbXBvbmVudHMgb2YgbG9nIG1lc3NhZ2VzLlxuICogQGNvbnN0IERlZmF1bHRUaGVtZVxuICogQHR5cGVkZWYge1RoZW1lfSBEZWZhdWx0VGhlbWVcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBjbGFzcyAtIFN0eWxpbmcgZm9yIGNsYXNzIG5hbWVzLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNsYXNzLmZnIC0gRm9yZWdyb3VuZCBjb2xvciBjb2RlIGZvciBjbGFzcyBuYW1lcyAoMzQpLlxuICogQHByb3BlcnR5IHtPYmplY3R9IGlkIC0gU3R5bGluZyBmb3IgaWRlbnRpZmllcnMuXG4gKiBAcHJvcGVydHkge251bWJlcn0gaWQuZmcgLSBGb3JlZ3JvdW5kIGNvbG9yIGNvZGUgZm9yIGlkZW50aWZpZXJzICgzNikuXG4gKiBAcHJvcGVydHkge09iamVjdH0gc3RhY2sgLSBTdHlsaW5nIGZvciBzdGFjayB0cmFjZXMgKGVtcHR5IG9iamVjdCkuXG4gKiBAcHJvcGVydHkge09iamVjdH0gdGltZXN0YW1wIC0gU3R5bGluZyBmb3IgdGltZXN0YW1wcyAoZW1wdHkgb2JqZWN0KS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBtZXNzYWdlIC0gU3R5bGluZyBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIG1lc3NhZ2VzLlxuICogQHByb3BlcnR5IHtPYmplY3R9IG1lc3NhZ2UuZXJyb3IgLSBTdHlsaW5nIGZvciBlcnJvciBtZXNzYWdlcy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtZXNzYWdlLmVycm9yLmZnIC0gRm9yZWdyb3VuZCBjb2xvciBjb2RlIGZvciBlcnJvciBtZXNzYWdlcyAoMzEpLlxuICogQHByb3BlcnR5IHtPYmplY3R9IG1ldGhvZCAtIFN0eWxpbmcgZm9yIG1ldGhvZCBuYW1lcyAoZW1wdHkgb2JqZWN0KS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBsb2dMZXZlbCAtIFN0eWxpbmcgZm9yIGRpZmZlcmVudCBsb2cgbGV2ZWxzLlxuICogQHByb3BlcnR5IHtPYmplY3R9IGxvZ0xldmVsLmVycm9yIC0gU3R5bGluZyBmb3IgZXJyb3IgbGV2ZWwgbG9ncy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsb2dMZXZlbC5lcnJvci5mZyAtIEZvcmVncm91bmQgY29sb3IgY29kZSBmb3IgZXJyb3IgbGV2ZWwgbG9ncyAoMzEpLlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gbG9nTGV2ZWwuZXJyb3Iuc3R5bGUgLSBTdHlsZSBhdHRyaWJ1dGVzIGZvciBlcnJvciBsZXZlbCBsb2dzIChbXCJib2xkXCJdKS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBsb2dMZXZlbC5pbmZvIC0gU3R5bGluZyBmb3IgaW5mbyBsZXZlbCBsb2dzIChlbXB0eSBvYmplY3QpLlxuICogQHByb3BlcnR5IHtPYmplY3R9IGxvZ0xldmVsLnZlcmJvc2UgLSBTdHlsaW5nIGZvciB2ZXJib3NlIGxldmVsIGxvZ3MgKGVtcHR5IG9iamVjdCkuXG4gKiBAcHJvcGVydHkge09iamVjdH0gbG9nTGV2ZWwuZGVidWcgLSBTdHlsaW5nIGZvciBkZWJ1ZyBsZXZlbCBsb2dzLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxvZ0xldmVsLmRlYnVnLmZnIC0gRm9yZWdyb3VuZCBjb2xvciBjb2RlIGZvciBkZWJ1ZyBsZXZlbCBsb2dzICgzMykuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRUaGVtZTogVGhlbWUgPSB7XG4gIGNsYXNzOiB7XG4gICAgZmc6IDM0LFxuICB9LFxuICBpZDoge1xuICAgIGZnOiAzNixcbiAgfSxcbiAgc3RhY2s6IHt9LFxuICB0aW1lc3RhbXA6IHt9LFxuICBtZXNzYWdlOiB7XG4gICAgZXJyb3I6IHtcbiAgICAgIGZnOiAzMSxcbiAgICB9LFxuICB9LFxuICBtZXRob2Q6IHt9LFxuICBsb2dMZXZlbDoge1xuICAgIGVycm9yOiB7XG4gICAgICBmZzogMzEsXG4gICAgICBzdHlsZTogW1wiYm9sZFwiXSxcbiAgICB9LFxuICAgIGluZm86IHtcbiAgICAgIGZnOiAzNCxcbiAgICAgIHN0eWxlOiBbXCJib2xkXCJdLFxuICAgIH0sXG4gICAgdmVyYm9zZToge1xuICAgICAgZmc6IDM0LFxuICAgICAgc3R5bGU6IFtcImJvbGRcIl0sXG4gICAgfSxcbiAgICBkZWJ1Zzoge1xuICAgICAgZmc6IDMzLFxuICAgICAgc3R5bGU6IFtcImJvbGRcIl0sXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgbG9nZ2luZy5cbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBsb2dnaW5nIHN5c3RlbSwgaW5jbHVkaW5nIHZlcmJvc2l0eSwgbG9nIGxldmVsLCBzdHlsaW5nLCBhbmQgdGltZXN0YW1wIGZvcm1hdC5cbiAqIEBjb25zdCBEZWZhdWx0TG9nZ2luZ0NvbmZpZ1xuICogQHR5cGVkZWYge0xvZ2dpbmdDb25maWd9IERlZmF1bHRMb2dnaW5nQ29uZmlnXG4gKiBAcHJvcGVydHkge251bWJlcn0gdmVyYm9zZSAtIFZlcmJvc2l0eSBsZXZlbCAoMCkuXG4gKiBAcHJvcGVydHkge0xvZ0xldmVsfSBsZXZlbCAtIERlZmF1bHQgbG9nIGxldmVsIChMb2dMZXZlbC5pbmZvKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbG9nTGV2ZWwgLSBXaGV0aGVyIHRvIGRpc3BsYXkgbG9nIGxldmVsIGluIG91dHB1dCAodHJ1ZSkuXG4gKiBAcHJvcGVydHkge0xvZ2dpbmdNb2RlfSBtb2RlIC0gT3V0cHV0IGZvcm1hdCBtb2RlIChMb2dnaW5nTW9kZS5SQVcpLlxuICogQHByb3BlcnR5IHtib29sZWFufSBzdHlsZSAtIFdoZXRoZXIgdG8gYXBwbHkgc3R5bGluZyB0byBsb2cgb3V0cHV0IChmYWxzZSkuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc2VwYXJhdG9yIC0gU2VwYXJhdG9yIGJldHdlZW4gbG9nIGNvbXBvbmVudHMgKFwiIC0gXCIpLlxuICogQHByb3BlcnR5IHtib29sZWFufSB0aW1lc3RhbXAgLSBXaGV0aGVyIHRvIGluY2x1ZGUgdGltZXN0YW1wcyBpbiBsb2cgbWVzc2FnZXMgKHRydWUpLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRpbWVzdGFtcEZvcm1hdCAtIEZvcm1hdCBmb3IgdGltZXN0YW1wcyAoXCJISDptbTpzcy5TU1NcIikuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGNvbnRleHQgLSBXaGV0aGVyIHRvIGluY2x1ZGUgY29udGV4dCBpbmZvcm1hdGlvbiBpbiBsb2cgbWVzc2FnZXMgKHRydWUpLlxuICogQHByb3BlcnR5IHtUaGVtZX0gdGhlbWUgLSBUaGUgdGhlbWUgdG8gdXNlIGZvciBzdHlsaW5nIGxvZyBtZXNzYWdlcyAoRGVmYXVsdFRoZW1lKS5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6TG9nZ2luZ1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdExvZ2dpbmdDb25maWc6IExvZ2dpbmdDb25maWcgPSB7XG4gIHZlcmJvc2U6IDAsXG4gIGxldmVsOiBMb2dMZXZlbC5pbmZvLFxuICBsb2dMZXZlbDogdHJ1ZSxcbiAgbW9kZTogTG9nZ2luZ01vZGUuUkFXLFxuICBzdHlsZTogZmFsc2UsXG4gIGNvbnRleHRTZXBhcmF0b3I6IFwiLlwiLFxuICBzZXBhcmF0b3I6IFwiIC0gXCIsXG4gIHRpbWVzdGFtcDogdHJ1ZSxcbiAgdGltZXN0YW1wRm9ybWF0OiBcIkhIOm1tOnNzLlNTU1wiLFxuICBjb250ZXh0OiB0cnVlLFxuICBmb3JtYXQ6IFwicmF3XCIsXG4gIHBhdHRlcm46IFwie2xldmVsfSBbe3RpbWVzdGFtcH1dIHtjb250ZXh0fSAtIHttZXNzYWdlfSB7c3RhY2t9XCIsXG4gIHRoZW1lOiBEZWZhdWx0VGhlbWUsXG59O1xuIl19
|
package/lib/constants.d.ts
CHANGED
package/lib/decorators.cjs
CHANGED
|
@@ -15,7 +15,6 @@ const logging_1 = require("./logging.cjs");
|
|
|
15
15
|
* @param {number} [verbosity=0] - The verbosity level for the log messages (default: 0)
|
|
16
16
|
* @return {Function} A method decorator that wraps the original method with logging
|
|
17
17
|
* @function log
|
|
18
|
-
* @category Decorators
|
|
19
18
|
* @mermaid
|
|
20
19
|
* sequenceDiagram
|
|
21
20
|
* participant Client
|
|
@@ -37,13 +36,16 @@ const logging_1 = require("./logging.cjs");
|
|
|
37
36
|
* Decorator->>Logger: log benchmark (if enabled)
|
|
38
37
|
* Decorator-->>Client: return result
|
|
39
38
|
* end
|
|
39
|
+
* @category Method Decorators
|
|
40
40
|
*/
|
|
41
41
|
function log(level = constants_1.LogLevel.info, benchmark = false, verbosity = 0) {
|
|
42
42
|
return function (target, propertyKey, descriptor) {
|
|
43
|
+
if (!descriptor)
|
|
44
|
+
throw new Error(`Logging decoration only applies to methods`);
|
|
43
45
|
const log = logging_1.Logging.for(target).for(target[propertyKey]);
|
|
44
46
|
const method = log[level].bind(log);
|
|
45
47
|
const originalMethod = descriptor.value;
|
|
46
|
-
|
|
48
|
+
const func = function (...args) {
|
|
47
49
|
method(`called with ${args}`, verbosity);
|
|
48
50
|
const start = Date.now();
|
|
49
51
|
let end;
|
|
@@ -64,7 +66,11 @@ function log(level = constants_1.LogLevel.info, benchmark = false, verbosity = 0
|
|
|
64
66
|
method(`completed in ${end - start}ms`, verbosity);
|
|
65
67
|
}
|
|
66
68
|
return result;
|
|
67
|
-
};
|
|
69
|
+
}.bind(target);
|
|
70
|
+
Object.assign(func, "name", {
|
|
71
|
+
value: descriptor.value.name,
|
|
72
|
+
});
|
|
73
|
+
descriptor.value = func;
|
|
68
74
|
};
|
|
69
75
|
}
|
|
70
76
|
/**
|
|
@@ -73,7 +79,7 @@ function log(level = constants_1.LogLevel.info, benchmark = false, verbosity = 0
|
|
|
73
79
|
* @param {boolean} [benchmark=false] - Whether to log execution time (default: false)
|
|
74
80
|
* @return {Function} A method decorator that wraps the original method with debug logging
|
|
75
81
|
* @function debug
|
|
76
|
-
* @category Decorators
|
|
82
|
+
* @category Method Decorators
|
|
77
83
|
*/
|
|
78
84
|
function debug(benchmark = false) {
|
|
79
85
|
return log(constants_1.LogLevel.debug, benchmark);
|
|
@@ -84,7 +90,7 @@ function debug(benchmark = false) {
|
|
|
84
90
|
* @param {boolean} [benchmark=false] - Whether to log execution time (default: false)
|
|
85
91
|
* @return {Function} A method decorator that wraps the original method with info logging
|
|
86
92
|
* @function info
|
|
87
|
-
* @category Decorators
|
|
93
|
+
* @category Method Decorators
|
|
88
94
|
*/
|
|
89
95
|
function info(benchmark = false) {
|
|
90
96
|
return log(constants_1.LogLevel.info, benchmark);
|
|
@@ -95,7 +101,7 @@ function info(benchmark = false) {
|
|
|
95
101
|
* @param {boolean} [benchmark=false] - Whether to log execution time (default: false)
|
|
96
102
|
* @return {Function} A method decorator that wraps the original method with silly logging
|
|
97
103
|
* @function silly
|
|
98
|
-
* @category Decorators
|
|
104
|
+
* @category Method Decorators
|
|
99
105
|
*/
|
|
100
106
|
function silly(benchmark = false) {
|
|
101
107
|
return log(constants_1.LogLevel.silly, benchmark);
|
|
@@ -107,9 +113,13 @@ function silly(benchmark = false) {
|
|
|
107
113
|
* @param {boolean} [benchmark=false] - Whether to log execution time (default: false)
|
|
108
114
|
* @return {Function} A method decorator that wraps the original method with verbose logging
|
|
109
115
|
* @function verbose
|
|
110
|
-
* @category Decorators
|
|
116
|
+
* @category Method Decorators
|
|
111
117
|
*/
|
|
112
|
-
function verbose(verbosity = 0, benchmark
|
|
118
|
+
function verbose(verbosity = 0, benchmark) {
|
|
119
|
+
if (typeof verbosity === "boolean") {
|
|
120
|
+
benchmark = verbosity;
|
|
121
|
+
verbosity = 0;
|
|
122
|
+
}
|
|
113
123
|
return log(constants_1.LogLevel.verbose, benchmark, verbosity);
|
|
114
124
|
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0NBLGtCQW1DQztBQVVELHNCQUVDO0FBVUQsb0JBRUM7QUFVRCxzQkFFQztBQVdELDBCQUVDO0FBdEhELCtDQUF1QztBQUN2QywyQ0FBb0M7QUFFcEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUNILFNBQWdCLEdBQUcsQ0FDakIsUUFBa0Isb0JBQVEsQ0FBQyxJQUFJLEVBQy9CLFlBQXFCLEtBQUssRUFDMUIsU0FBUyxHQUFHLENBQUM7SUFFYixPQUFPLFVBQ0wsTUFBVyxFQUNYLFdBQW1CLEVBQ25CLFVBQThCO1FBRTlCLE1BQU0sR0FBRyxHQUFHLGlCQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN6RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDeEMsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBVztZQUN6QyxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN6QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDekIsSUFBSSxHQUFXLENBQUM7WUFDaEIsTUFBTSxNQUFNLEdBQVEsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckQsSUFBSSxNQUFNLFlBQVksT0FBTyxFQUFFLENBQUM7Z0JBQzlCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN2QixJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNkLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2pCLElBQUksU0FBUzs0QkFBRSxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxLQUFLLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDcEUsQ0FBQztvQkFDRCxPQUFPLENBQUMsQ0FBQztnQkFDWCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksU0FBUztvQkFBRSxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxLQUFLLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNwRSxDQUFDO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixLQUFLLENBQUMsWUFBcUIsS0FBSztJQUM5QyxPQUFPLEdBQUcsQ0FBQyxvQkFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLElBQUksQ0FBQyxZQUFxQixLQUFLO0lBQzdDLE9BQU8sR0FBRyxDQUFDLG9CQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLFlBQXFCLEtBQUs7SUFDOUMsT0FBTyxHQUFHLENBQUMsb0JBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsWUFBcUIsS0FBSztJQUMvRCxPQUFPLEdBQUcsQ0FBQyxvQkFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ0xldmVsIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNZXRob2QgZGVjb3JhdG9yIGZvciBsb2dnaW5nIGZ1bmN0aW9uIGNhbGxzXG4gKiBAc3VtbWFyeSBDcmVhdGVzIGEgZGVjb3JhdG9yIHRoYXQgbG9ncyBtZXRob2QgY2FsbHMgd2l0aCBzcGVjaWZpZWQgbGV2ZWwsIGJlbmNobWFya2luZywgYW5kIHZlcmJvc2l0eVxuICogQHBhcmFtIHtMb2dMZXZlbH0gbGV2ZWwgLSBUaGUgbG9nIGxldmVsIHRvIHVzZSAoZGVmYXVsdDogTG9nTGV2ZWwuaW5mbylcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2JlbmNobWFyaz1mYWxzZV0gLSBXaGV0aGVyIHRvIGxvZyBleGVjdXRpb24gdGltZSAoZGVmYXVsdDogZmFsc2UpXG4gKiBAcGFyYW0ge251bWJlcn0gW3ZlcmJvc2l0eT0wXSAtIFRoZSB2ZXJib3NpdHkgbGV2ZWwgZm9yIHRoZSBsb2cgbWVzc2FnZXMgKGRlZmF1bHQ6IDApXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gQSBtZXRob2QgZGVjb3JhdG9yIHRoYXQgd3JhcHMgdGhlIG9yaWdpbmFsIG1ldGhvZCB3aXRoIGxvZ2dpbmdcbiAqIEBmdW5jdGlvbiBsb2dcbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICBwYXJ0aWNpcGFudCBEZWNvcmF0b3IgYXMgbG9nIGRlY29yYXRvclxuICogICBwYXJ0aWNpcGFudCBNZXRob2QgYXMgT3JpZ2luYWwgTWV0aG9kXG4gKiAgIHBhcnRpY2lwYW50IExvZ2dlciBhcyBMb2dnaW5nIGluc3RhbmNlXG4gKlxuICogICBDbGllbnQtPj5EZWNvcmF0b3I6IGNhbGwgZGVjb3JhdGVkIG1ldGhvZFxuICogICBEZWNvcmF0b3ItPj5Mb2dnZXI6IGxvZyBtZXRob2QgY2FsbFxuICogICBEZWNvcmF0b3ItPj5NZXRob2Q6IGNhbGwgb3JpZ2luYWwgbWV0aG9kXG4gKiAgIGFsdCByZXN1bHQgaXMgUHJvbWlzZVxuICogICAgIE1ldGhvZC0tPj5EZWNvcmF0b3I6IHJldHVybiBQcm9taXNlXG4gKiAgICAgRGVjb3JhdG9yLT4+RGVjb3JhdG9yOiBhdHRhY2ggdGhlbiBoYW5kbGVyXG4gKiAgICAgTm90ZSBvdmVyIERlY29yYXRvcjogUHJvbWlzZSByZXNvbHZlc1xuICogICAgIERlY29yYXRvci0+PkxvZ2dlcjogbG9nIGJlbmNobWFyayAoaWYgZW5hYmxlZClcbiAqICAgICBEZWNvcmF0b3ItLT4+Q2xpZW50OiByZXR1cm4gcmVzdWx0XG4gKiAgIGVsc2UgcmVzdWx0IGlzIG5vdCBQcm9taXNlXG4gKiAgICAgTWV0aG9kLS0+PkRlY29yYXRvcjogcmV0dXJuIHJlc3VsdFxuICogICAgIERlY29yYXRvci0+PkxvZ2dlcjogbG9nIGJlbmNobWFyayAoaWYgZW5hYmxlZClcbiAqICAgICBEZWNvcmF0b3ItLT4+Q2xpZW50OiByZXR1cm4gcmVzdWx0XG4gKiAgIGVuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nKFxuICBsZXZlbDogTG9nTGV2ZWwgPSBMb2dMZXZlbC5pbmZvLFxuICBiZW5jaG1hcms6IGJvb2xlYW4gPSBmYWxzZSxcbiAgdmVyYm9zaXR5ID0gMFxuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoXG4gICAgdGFyZ2V0OiBhbnksXG4gICAgcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgICBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3JcbiAgKSB7XG4gICAgY29uc3QgbG9nID0gTG9nZ2luZy5mb3IodGFyZ2V0KS5mb3IodGFyZ2V0W3Byb3BlcnR5S2V5XSk7XG4gICAgY29uc3QgbWV0aG9kID0gbG9nW2xldmVsXS5iaW5kKGxvZyk7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICAgIG1ldGhvZChgY2FsbGVkIHdpdGggJHthcmdzfWAsIHZlcmJvc2l0eSk7XG4gICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICBsZXQgZW5kOiBudW1iZXI7XG4gICAgICBjb25zdCByZXN1bHQ6IGFueSA9IG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgaWYgKGJlbmNobWFyaykge1xuICAgICAgICAgICAgZW5kID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIGlmIChiZW5jaG1hcmspIG1ldGhvZChgY29tcGxldGVkIGluICR7ZW5kIC0gc3RhcnR9bXNgLCB2ZXJib3NpdHkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoYmVuY2htYXJrKSB7XG4gICAgICAgIGVuZCA9IERhdGUubm93KCk7XG4gICAgICAgIGlmIChiZW5jaG1hcmspIG1ldGhvZChgY29tcGxldGVkIGluICR7ZW5kIC0gc3RhcnR9bXNgLCB2ZXJib3NpdHkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1ldGhvZCBkZWNvcmF0b3IgZm9yIGxvZ2dpbmcgZnVuY3Rpb24gY2FsbHMgd2l0aCBkZWJ1ZyBsZXZlbFxuICogQHN1bW1hcnkgQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgdGhlIGxvZyBkZWNvcmF0b3IgdGhhdCB1c2VzIExvZ0xldmVsLmRlYnVnXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtiZW5jaG1hcms9ZmFsc2VdIC0gV2hldGhlciB0byBsb2cgZXhlY3V0aW9uIHRpbWUgKGRlZmF1bHQ6IGZhbHNlKVxuICogQHJldHVybiB7RnVuY3Rpb259IEEgbWV0aG9kIGRlY29yYXRvciB0aGF0IHdyYXBzIHRoZSBvcmlnaW5hbCBtZXRob2Qgd2l0aCBkZWJ1ZyBsb2dnaW5nXG4gKiBAZnVuY3Rpb24gZGVidWdcbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWJ1ZyhiZW5jaG1hcms6IGJvb2xlYW4gPSBmYWxzZSkge1xuICByZXR1cm4gbG9nKExvZ0xldmVsLmRlYnVnLCBiZW5jaG1hcmspO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNZXRob2QgZGVjb3JhdG9yIGZvciBsb2dnaW5nIGZ1bmN0aW9uIGNhbGxzIHdpdGggaW5mbyBsZXZlbFxuICogQHN1bW1hcnkgQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgdGhlIGxvZyBkZWNvcmF0b3IgdGhhdCB1c2VzIExvZ0xldmVsLmluZm9cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2JlbmNobWFyaz1mYWxzZV0gLSBXaGV0aGVyIHRvIGxvZyBleGVjdXRpb24gdGltZSAoZGVmYXVsdDogZmFsc2UpXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gQSBtZXRob2QgZGVjb3JhdG9yIHRoYXQgd3JhcHMgdGhlIG9yaWdpbmFsIG1ldGhvZCB3aXRoIGluZm8gbG9nZ2luZ1xuICogQGZ1bmN0aW9uIGluZm9cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmZvKGJlbmNobWFyazogYm9vbGVhbiA9IGZhbHNlKSB7XG4gIHJldHVybiBsb2coTG9nTGV2ZWwuaW5mbywgYmVuY2htYXJrKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWV0aG9kIGRlY29yYXRvciBmb3IgbG9nZ2luZyBmdW5jdGlvbiBjYWxscyB3aXRoIHNpbGx5IGxldmVsXG4gKiBAc3VtbWFyeSBDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUgbG9nIGRlY29yYXRvciB0aGF0IHVzZXMgTG9nTGV2ZWwuc2lsbHlcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2JlbmNobWFyaz1mYWxzZV0gLSBXaGV0aGVyIHRvIGxvZyBleGVjdXRpb24gdGltZSAoZGVmYXVsdDogZmFsc2UpXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gQSBtZXRob2QgZGVjb3JhdG9yIHRoYXQgd3JhcHMgdGhlIG9yaWdpbmFsIG1ldGhvZCB3aXRoIHNpbGx5IGxvZ2dpbmdcbiAqIEBmdW5jdGlvbiBzaWxseVxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpbGx5KGJlbmNobWFyazogYm9vbGVhbiA9IGZhbHNlKSB7XG4gIHJldHVybiBsb2coTG9nTGV2ZWwuc2lsbHksIGJlbmNobWFyayk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1ldGhvZCBkZWNvcmF0b3IgZm9yIGxvZ2dpbmcgZnVuY3Rpb24gY2FsbHMgd2l0aCB2ZXJib3NlIGxldmVsXG4gKiBAc3VtbWFyeSBDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUgbG9nIGRlY29yYXRvciB0aGF0IHVzZXMgTG9nTGV2ZWwudmVyYm9zZSB3aXRoIGNvbmZpZ3VyYWJsZSB2ZXJib3NpdHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB2ZXJib3NpdHkgLSBUaGUgdmVyYm9zaXR5IGxldmVsIGZvciB0aGUgbG9nIG1lc3NhZ2VzIChkZWZhdWx0OiAwKVxuICogQHBhcmFtIHtib29sZWFufSBbYmVuY2htYXJrPWZhbHNlXSAtIFdoZXRoZXIgdG8gbG9nIGV4ZWN1dGlvbiB0aW1lIChkZWZhdWx0OiBmYWxzZSlcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBBIG1ldGhvZCBkZWNvcmF0b3IgdGhhdCB3cmFwcyB0aGUgb3JpZ2luYWwgbWV0aG9kIHdpdGggdmVyYm9zZSBsb2dnaW5nXG4gKiBAZnVuY3Rpb24gdmVyYm9zZVxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmJvc2UodmVyYm9zaXR5ID0gMCwgYmVuY2htYXJrOiBib29sZWFuID0gZmFsc2UpIHtcbiAgcmV0dXJuIGxvZyhMb2dMZXZlbC52ZXJib3NlLCBiZW5jaG1hcmssIHZlcmJvc2l0eSk7XG59XG4iXX0=
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0NBLGtCQTRDQztBQVVELHNCQUVDO0FBVUQsb0JBRUM7QUFVRCxzQkFFQztBQTZDRCwwQkFNQztBQXJLRCwrQ0FBdUM7QUFDdkMsMkNBQW9DO0FBRXBDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxTQUFnQixHQUFHLENBQ2pCLFFBQWtCLG9CQUFRLENBQUMsSUFBSSxFQUMvQixZQUFxQixLQUFLLEVBQzFCLFNBQVMsR0FBRyxDQUFDO0lBRWIsT0FBTyxVQUNMLE1BQVcsRUFDWCxXQUFpQixFQUNqQixVQUErQjtRQUUvQixJQUFJLENBQUMsVUFBVTtZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNoRSxNQUFNLEdBQUcsR0FBRyxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDekQsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRXhDLE1BQU0sSUFBSSxHQUFHLFVBQStCLEdBQUcsSUFBVztZQUN4RCxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN6QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDekIsSUFBSSxHQUFXLENBQUM7WUFDaEIsTUFBTSxNQUFNLEdBQVEsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckQsSUFBSSxNQUFNLFlBQVksT0FBTyxFQUFFLENBQUM7Z0JBQzlCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN2QixJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNkLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2pCLElBQUksU0FBUzs0QkFBRSxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxLQUFLLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDcEUsQ0FBQztvQkFDRCxPQUFPLENBQUMsQ0FBQztnQkFDWCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksU0FBUztvQkFBRSxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxLQUFLLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNwRSxDQUFDO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQVEsQ0FBQztRQUV0QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDMUIsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSTtTQUM3QixDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLEtBQUssQ0FBQyxZQUFxQixLQUFLO0lBQzlDLE9BQU8sR0FBRyxDQUFDLG9CQUFRLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsSUFBSSxDQUFDLFlBQXFCLEtBQUs7SUFDN0MsT0FBTyxHQUFHLENBQUMsb0JBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixLQUFLLENBQUMsWUFBcUIsS0FBSztJQUM5QyxPQUFPLEdBQUcsQ0FBQyxvQkFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBb0NEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLFlBQThCLENBQUMsRUFBRSxTQUFtQjtJQUMxRSxJQUFJLE9BQU8sU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ25DLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDdEIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsb0JBQVEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3JELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dMZXZlbCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWV0aG9kIGRlY29yYXRvciBmb3IgbG9nZ2luZyBmdW5jdGlvbiBjYWxsc1xuICogQHN1bW1hcnkgQ3JlYXRlcyBhIGRlY29yYXRvciB0aGF0IGxvZ3MgbWV0aG9kIGNhbGxzIHdpdGggc3BlY2lmaWVkIGxldmVsLCBiZW5jaG1hcmtpbmcsIGFuZCB2ZXJib3NpdHlcbiAqIEBwYXJhbSB7TG9nTGV2ZWx9IGxldmVsIC0gVGhlIGxvZyBsZXZlbCB0byB1c2UgKGRlZmF1bHQ6IExvZ0xldmVsLmluZm8pXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtiZW5jaG1hcms9ZmFsc2VdIC0gV2hldGhlciB0byBsb2cgZXhlY3V0aW9uIHRpbWUgKGRlZmF1bHQ6IGZhbHNlKVxuICogQHBhcmFtIHtudW1iZXJ9IFt2ZXJib3NpdHk9MF0gLSBUaGUgdmVyYm9zaXR5IGxldmVsIGZvciB0aGUgbG9nIG1lc3NhZ2VzIChkZWZhdWx0OiAwKVxuICogQHJldHVybiB7RnVuY3Rpb259IEEgbWV0aG9kIGRlY29yYXRvciB0aGF0IHdyYXBzIHRoZSBvcmlnaW5hbCBtZXRob2Qgd2l0aCBsb2dnaW5nXG4gKiBAZnVuY3Rpb24gbG9nXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICBwYXJ0aWNpcGFudCBEZWNvcmF0b3IgYXMgbG9nIGRlY29yYXRvclxuICogICBwYXJ0aWNpcGFudCBNZXRob2QgYXMgT3JpZ2luYWwgTWV0aG9kXG4gKiAgIHBhcnRpY2lwYW50IExvZ2dlciBhcyBMb2dnaW5nIGluc3RhbmNlXG4gKlxuICogICBDbGllbnQtPj5EZWNvcmF0b3I6IGNhbGwgZGVjb3JhdGVkIG1ldGhvZFxuICogICBEZWNvcmF0b3ItPj5Mb2dnZXI6IGxvZyBtZXRob2QgY2FsbFxuICogICBEZWNvcmF0b3ItPj5NZXRob2Q6IGNhbGwgb3JpZ2luYWwgbWV0aG9kXG4gKiAgIGFsdCByZXN1bHQgaXMgUHJvbWlzZVxuICogICAgIE1ldGhvZC0tPj5EZWNvcmF0b3I6IHJldHVybiBQcm9taXNlXG4gKiAgICAgRGVjb3JhdG9yLT4+RGVjb3JhdG9yOiBhdHRhY2ggdGhlbiBoYW5kbGVyXG4gKiAgICAgTm90ZSBvdmVyIERlY29yYXRvcjogUHJvbWlzZSByZXNvbHZlc1xuICogICAgIERlY29yYXRvci0+PkxvZ2dlcjogbG9nIGJlbmNobWFyayAoaWYgZW5hYmxlZClcbiAqICAgICBEZWNvcmF0b3ItLT4+Q2xpZW50OiByZXR1cm4gcmVzdWx0XG4gKiAgIGVsc2UgcmVzdWx0IGlzIG5vdCBQcm9taXNlXG4gKiAgICAgTWV0aG9kLS0+PkRlY29yYXRvcjogcmV0dXJuIHJlc3VsdFxuICogICAgIERlY29yYXRvci0+PkxvZ2dlcjogbG9nIGJlbmNobWFyayAoaWYgZW5hYmxlZClcbiAqICAgICBEZWNvcmF0b3ItLT4+Q2xpZW50OiByZXR1cm4gcmVzdWx0XG4gKiAgIGVuZFxuICogQGNhdGVnb3J5IE1ldGhvZCBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2coXG4gIGxldmVsOiBMb2dMZXZlbCA9IExvZ0xldmVsLmluZm8sXG4gIGJlbmNobWFyazogYm9vbGVhbiA9IGZhbHNlLFxuICB2ZXJib3NpdHkgPSAwXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChcbiAgICB0YXJnZXQ6IGFueSxcbiAgICBwcm9wZXJ0eUtleT86IGFueSxcbiAgICBkZXNjcmlwdG9yPzogUHJvcGVydHlEZXNjcmlwdG9yXG4gICkge1xuICAgIGlmICghZGVzY3JpcHRvcilcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTG9nZ2luZyBkZWNvcmF0aW9uIG9ubHkgYXBwbGllcyB0byBtZXRob2RzYCk7XG4gICAgY29uc3QgbG9nID0gTG9nZ2luZy5mb3IodGFyZ2V0KS5mb3IodGFyZ2V0W3Byb3BlcnR5S2V5XSk7XG4gICAgY29uc3QgbWV0aG9kID0gbG9nW2xldmVsXS5iaW5kKGxvZyk7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuXG4gICAgY29uc3QgZnVuYyA9IGZ1bmN0aW9uICh0aGlzOiB0eXBlb2YgdGFyZ2V0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgICAgbWV0aG9kKGBjYWxsZWQgd2l0aCAke2FyZ3N9YCwgdmVyYm9zaXR5KTtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgIGxldCBlbmQ6IG51bWJlcjtcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHIpID0+IHtcbiAgICAgICAgICBpZiAoYmVuY2htYXJrKSB7XG4gICAgICAgICAgICBlbmQgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgaWYgKGJlbmNobWFyaykgbWV0aG9kKGBjb21wbGV0ZWQgaW4gJHtlbmQgLSBzdGFydH1tc2AsIHZlcmJvc2l0eSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChiZW5jaG1hcmspIHtcbiAgICAgICAgZW5kID0gRGF0ZS5ub3coKTtcbiAgICAgICAgaWYgKGJlbmNobWFyaykgbWV0aG9kKGBjb21wbGV0ZWQgaW4gJHtlbmQgLSBzdGFydH1tc2AsIHZlcmJvc2l0eSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfS5iaW5kKHRhcmdldCkgYXMgYW55O1xuXG4gICAgT2JqZWN0LmFzc2lnbihmdW5jLCBcIm5hbWVcIiwge1xuICAgICAgdmFsdWU6IGRlc2NyaXB0b3IudmFsdWUubmFtZSxcbiAgICB9KTtcblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jO1xuICB9O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNZXRob2QgZGVjb3JhdG9yIGZvciBsb2dnaW5nIGZ1bmN0aW9uIGNhbGxzIHdpdGggZGVidWcgbGV2ZWxcbiAqIEBzdW1tYXJ5IENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIHRoZSBsb2cgZGVjb3JhdG9yIHRoYXQgdXNlcyBMb2dMZXZlbC5kZWJ1Z1xuICogQHBhcmFtIHtib29sZWFufSBbYmVuY2htYXJrPWZhbHNlXSAtIFdoZXRoZXIgdG8gbG9nIGV4ZWN1dGlvbiB0aW1lIChkZWZhdWx0OiBmYWxzZSlcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBBIG1ldGhvZCBkZWNvcmF0b3IgdGhhdCB3cmFwcyB0aGUgb3JpZ2luYWwgbWV0aG9kIHdpdGggZGVidWcgbG9nZ2luZ1xuICogQGZ1bmN0aW9uIGRlYnVnXG4gKiBAY2F0ZWdvcnkgTWV0aG9kIERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnKGJlbmNobWFyazogYm9vbGVhbiA9IGZhbHNlKSB7XG4gIHJldHVybiBsb2coTG9nTGV2ZWwuZGVidWcsIGJlbmNobWFyayk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1ldGhvZCBkZWNvcmF0b3IgZm9yIGxvZ2dpbmcgZnVuY3Rpb24gY2FsbHMgd2l0aCBpbmZvIGxldmVsXG4gKiBAc3VtbWFyeSBDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUgbG9nIGRlY29yYXRvciB0aGF0IHVzZXMgTG9nTGV2ZWwuaW5mb1xuICogQHBhcmFtIHtib29sZWFufSBbYmVuY2htYXJrPWZhbHNlXSAtIFdoZXRoZXIgdG8gbG9nIGV4ZWN1dGlvbiB0aW1lIChkZWZhdWx0OiBmYWxzZSlcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBBIG1ldGhvZCBkZWNvcmF0b3IgdGhhdCB3cmFwcyB0aGUgb3JpZ2luYWwgbWV0aG9kIHdpdGggaW5mbyBsb2dnaW5nXG4gKiBAZnVuY3Rpb24gaW5mb1xuICogQGNhdGVnb3J5IE1ldGhvZCBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmZvKGJlbmNobWFyazogYm9vbGVhbiA9IGZhbHNlKSB7XG4gIHJldHVybiBsb2coTG9nTGV2ZWwuaW5mbywgYmVuY2htYXJrKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWV0aG9kIGRlY29yYXRvciBmb3IgbG9nZ2luZyBmdW5jdGlvbiBjYWxscyB3aXRoIHNpbGx5IGxldmVsXG4gKiBAc3VtbWFyeSBDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUgbG9nIGRlY29yYXRvciB0aGF0IHVzZXMgTG9nTGV2ZWwuc2lsbHlcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2JlbmNobWFyaz1mYWxzZV0gLSBXaGV0aGVyIHRvIGxvZyBleGVjdXRpb24gdGltZSAoZGVmYXVsdDogZmFsc2UpXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gQSBtZXRob2QgZGVjb3JhdG9yIHRoYXQgd3JhcHMgdGhlIG9yaWdpbmFsIG1ldGhvZCB3aXRoIHNpbGx5IGxvZ2dpbmdcbiAqIEBmdW5jdGlvbiBzaWxseVxuICogQGNhdGVnb3J5IE1ldGhvZCBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWxseShiZW5jaG1hcms6IGJvb2xlYW4gPSBmYWxzZSkge1xuICByZXR1cm4gbG9nKExvZ0xldmVsLnNpbGx5LCBiZW5jaG1hcmspO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNZXRob2QgZGVjb3JhdG9yIGZvciBsb2dnaW5nIGZ1bmN0aW9uIGNhbGxzIHdpdGggdmVyYm9zZSBsZXZlbFxuICogQHN1bW1hcnkgQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgdGhlIGxvZyBkZWNvcmF0b3IgdGhhdCB1c2VzIExvZ0xldmVsLnZlcmJvc2Ugd2l0aCBjb25maWd1cmFibGUgdmVyYm9zaXR5XG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gQSBtZXRob2QgZGVjb3JhdG9yIHRoYXQgd3JhcHMgdGhlIG9yaWdpbmFsIG1ldGhvZCB3aXRoIHZlcmJvc2UgbG9nZ2luZ1xuICogQGZ1bmN0aW9uIHZlcmJvc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmJvc2UoKTogKFxuICB0YXJnZXQ6IGFueSxcbiAgcHJvcGVydHlLZXk/OiBhbnksXG4gIGRlc2NyaXB0b3I/OiBhbnlcbikgPT4gdm9pZDtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWV0aG9kIGRlY29yYXRvciBmb3IgbG9nZ2luZyBmdW5jdGlvbiBjYWxscyB3aXRoIHZlcmJvc2UgbGV2ZWxcbiAqIEBzdW1tYXJ5IENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIHRoZSBsb2cgZGVjb3JhdG9yIHRoYXQgdXNlcyBMb2dMZXZlbC52ZXJib3NlIHdpdGggY29uZmlndXJhYmxlIHZlcmJvc2l0eVxuICogQHBhcmFtIHtib29sZWFufSBiZW5jaG1hcmsgLSBXaGV0aGVyIHRvIGxvZyBleGVjdXRpb24gdGltZVxuICogQHJldHVybiB7RnVuY3Rpb259IEEgbWV0aG9kIGRlY29yYXRvciB0aGF0IHdyYXBzIHRoZSBvcmlnaW5hbCBtZXRob2Qgd2l0aCB2ZXJib3NlIGxvZ2dpbmdcbiAqIEBmdW5jdGlvbiB2ZXJib3NlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJib3NlKFxuICBiZW5jaG1hcms6IGJvb2xlYW5cbik6ICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk/OiBhbnksIGRlc2NyaXB0b3I/OiBhbnkpID0+IHZvaWQ7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1ldGhvZCBkZWNvcmF0b3IgZm9yIGxvZ2dpbmcgZnVuY3Rpb24gY2FsbHMgd2l0aCB2ZXJib3NlIGxldmVsXG4gKiBAc3VtbWFyeSBDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUgbG9nIGRlY29yYXRvciB0aGF0IHVzZXMgTG9nTGV2ZWwudmVyYm9zZSB3aXRoIGNvbmZpZ3VyYWJsZSB2ZXJib3NpdHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB2ZXJib3NpdHkgLSBUaGUgdmVyYm9zaXR5IGxldmVsIGZvciB0aGUgbG9nIG1lc3NhZ2VzIChkZWZhdWx0OiAwKVxuICogQHJldHVybiB7RnVuY3Rpb259IEEgbWV0aG9kIGRlY29yYXRvciB0aGF0IHdyYXBzIHRoZSBvcmlnaW5hbCBtZXRob2Qgd2l0aCB2ZXJib3NlIGxvZ2dpbmdcbiAqIEBmdW5jdGlvbiB2ZXJib3NlXG4gKiBAY2F0ZWdvcnkgTWV0aG9kIERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmJvc2UoXG4gIHZlcmJvc2l0eTogbnVtYmVyIHwgYm9vbGVhblxuKTogKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleT86IGFueSwgZGVzY3JpcHRvcj86IGFueSkgPT4gdm9pZDtcbi8qKlxuICogQGRlc2NyaXB0aW9uIE1ldGhvZCBkZWNvcmF0b3IgZm9yIGxvZ2dpbmcgZnVuY3Rpb24gY2FsbHMgd2l0aCB2ZXJib3NlIGxldmVsXG4gKiBAc3VtbWFyeSBDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUgbG9nIGRlY29yYXRvciB0aGF0IHVzZXMgTG9nTGV2ZWwudmVyYm9zZSB3aXRoIGNvbmZpZ3VyYWJsZSB2ZXJib3NpdHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB2ZXJib3NpdHkgLSBUaGUgdmVyYm9zaXR5IGxldmVsIGZvciB0aGUgbG9nIG1lc3NhZ2VzIChkZWZhdWx0OiAwKVxuICogQHBhcmFtIHtib29sZWFufSBbYmVuY2htYXJrPWZhbHNlXSAtIFdoZXRoZXIgdG8gbG9nIGV4ZWN1dGlvbiB0aW1lIChkZWZhdWx0OiBmYWxzZSlcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBBIG1ldGhvZCBkZWNvcmF0b3IgdGhhdCB3cmFwcyB0aGUgb3JpZ2luYWwgbWV0aG9kIHdpdGggdmVyYm9zZSBsb2dnaW5nXG4gKiBAZnVuY3Rpb24gdmVyYm9zZVxuICogQGNhdGVnb3J5IE1ldGhvZCBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJib3NlKHZlcmJvc2l0eTogbnVtYmVyIHwgYm9vbGVhbiA9IDAsIGJlbmNobWFyaz86IGJvb2xlYW4pIHtcbiAgaWYgKHR5cGVvZiB2ZXJib3NpdHkgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgYmVuY2htYXJrID0gdmVyYm9zaXR5O1xuICAgIHZlcmJvc2l0eSA9IDA7XG4gIH1cbiAgcmV0dXJuIGxvZyhMb2dMZXZlbC52ZXJib3NlLCBiZW5jaG1hcmssIHZlcmJvc2l0eSk7XG59XG4iXX0=
|
package/lib/decorators.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ import { LogLevel } from "./constants";
|
|
|
7
7
|
* @param {number} [verbosity=0] - The verbosity level for the log messages (default: 0)
|
|
8
8
|
* @return {Function} A method decorator that wraps the original method with logging
|
|
9
9
|
* @function log
|
|
10
|
-
* @category Decorators
|
|
11
10
|
* @mermaid
|
|
12
11
|
* sequenceDiagram
|
|
13
12
|
* participant Client
|
|
@@ -29,42 +28,57 @@ import { LogLevel } from "./constants";
|
|
|
29
28
|
* Decorator->>Logger: log benchmark (if enabled)
|
|
30
29
|
* Decorator-->>Client: return result
|
|
31
30
|
* end
|
|
31
|
+
* @category Method Decorators
|
|
32
32
|
*/
|
|
33
|
-
export declare function log(level?: LogLevel, benchmark?: boolean, verbosity?: number): (target: any, propertyKey
|
|
33
|
+
export declare function log(level?: LogLevel, benchmark?: boolean, verbosity?: number): (target: any, propertyKey?: any, descriptor?: PropertyDescriptor) => void;
|
|
34
34
|
/**
|
|
35
35
|
* @description Method decorator for logging function calls with debug level
|
|
36
36
|
* @summary Convenience wrapper around the log decorator that uses LogLevel.debug
|
|
37
37
|
* @param {boolean} [benchmark=false] - Whether to log execution time (default: false)
|
|
38
38
|
* @return {Function} A method decorator that wraps the original method with debug logging
|
|
39
39
|
* @function debug
|
|
40
|
-
* @category Decorators
|
|
40
|
+
* @category Method Decorators
|
|
41
41
|
*/
|
|
42
|
-
export declare function debug(benchmark?: boolean): (target: any, propertyKey
|
|
42
|
+
export declare function debug(benchmark?: boolean): (target: any, propertyKey?: any, descriptor?: PropertyDescriptor) => void;
|
|
43
43
|
/**
|
|
44
44
|
* @description Method decorator for logging function calls with info level
|
|
45
45
|
* @summary Convenience wrapper around the log decorator that uses LogLevel.info
|
|
46
46
|
* @param {boolean} [benchmark=false] - Whether to log execution time (default: false)
|
|
47
47
|
* @return {Function} A method decorator that wraps the original method with info logging
|
|
48
48
|
* @function info
|
|
49
|
-
* @category Decorators
|
|
49
|
+
* @category Method Decorators
|
|
50
50
|
*/
|
|
51
|
-
export declare function info(benchmark?: boolean): (target: any, propertyKey
|
|
51
|
+
export declare function info(benchmark?: boolean): (target: any, propertyKey?: any, descriptor?: PropertyDescriptor) => void;
|
|
52
52
|
/**
|
|
53
53
|
* @description Method decorator for logging function calls with silly level
|
|
54
54
|
* @summary Convenience wrapper around the log decorator that uses LogLevel.silly
|
|
55
55
|
* @param {boolean} [benchmark=false] - Whether to log execution time (default: false)
|
|
56
56
|
* @return {Function} A method decorator that wraps the original method with silly logging
|
|
57
57
|
* @function silly
|
|
58
|
-
* @category Decorators
|
|
58
|
+
* @category Method Decorators
|
|
59
59
|
*/
|
|
60
|
-
export declare function silly(benchmark?: boolean): (target: any, propertyKey
|
|
60
|
+
export declare function silly(benchmark?: boolean): (target: any, propertyKey?: any, descriptor?: PropertyDescriptor) => void;
|
|
61
|
+
/**
|
|
62
|
+
* @description Method decorator for logging function calls with verbose level
|
|
63
|
+
* @summary Convenience wrapper around the log decorator that uses LogLevel.verbose with configurable verbosity
|
|
64
|
+
* @return {Function} A method decorator that wraps the original method with verbose logging
|
|
65
|
+
* @function verbose
|
|
66
|
+
*/
|
|
67
|
+
export declare function verbose(): (target: any, propertyKey?: any, descriptor?: any) => void;
|
|
68
|
+
/**
|
|
69
|
+
* @description Method decorator for logging function calls with verbose level
|
|
70
|
+
* @summary Convenience wrapper around the log decorator that uses LogLevel.verbose with configurable verbosity
|
|
71
|
+
* @param {boolean} benchmark - Whether to log execution time
|
|
72
|
+
* @return {Function} A method decorator that wraps the original method with verbose logging
|
|
73
|
+
* @function verbose
|
|
74
|
+
*/
|
|
75
|
+
export declare function verbose(benchmark: boolean): (target: any, propertyKey?: any, descriptor?: any) => void;
|
|
61
76
|
/**
|
|
62
77
|
* @description Method decorator for logging function calls with verbose level
|
|
63
78
|
* @summary Convenience wrapper around the log decorator that uses LogLevel.verbose with configurable verbosity
|
|
64
79
|
* @param {number} verbosity - The verbosity level for the log messages (default: 0)
|
|
65
|
-
* @param {boolean} [benchmark=false] - Whether to log execution time (default: false)
|
|
66
80
|
* @return {Function} A method decorator that wraps the original method with verbose logging
|
|
67
81
|
* @function verbose
|
|
68
|
-
* @category Decorators
|
|
82
|
+
* @category Method Decorators
|
|
69
83
|
*/
|
|
70
|
-
export declare function verbose(verbosity
|
|
84
|
+
export declare function verbose(verbosity: number | boolean): (target: any, propertyKey?: any, descriptor?: any) => void;
|
package/lib/esm/LoggedClass.d.ts
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
import { Logger } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* @description Base class that provides a ready-to-use logger instance
|
|
4
|
+
* @summary LoggedClass is a convenience abstract class that injects a type-safe logger
|
|
5
|
+
* into derived classes through a protected getter. Subclasses can directly access
|
|
6
|
+
* this.log to emit messages without manually creating a logger. This promotes
|
|
7
|
+
* consistent, context-aware logging across the codebase.
|
|
8
|
+
* @param {void} [constructor] - No constructor arguments; subclasses may define their own
|
|
9
|
+
* @class LoggedClass
|
|
10
|
+
* @example
|
|
11
|
+
* class UserService extends LoggedClass {
|
|
12
|
+
* create(user: User) {
|
|
13
|
+
* this.log.info(`Creating user ${user.id}`);
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* const svc = new UserService();
|
|
18
|
+
* svc.create({ id: "42" });
|
|
19
|
+
* @mermaid
|
|
20
|
+
* sequenceDiagram
|
|
21
|
+
* participant Client
|
|
22
|
+
* participant Instance as Subclass Instance
|
|
23
|
+
* participant Getter as LoggedClass.log
|
|
24
|
+
* participant Logging as Logging
|
|
25
|
+
* participant Logger as Logger
|
|
26
|
+
*
|
|
27
|
+
* Client->>Instance: call someMethod()
|
|
28
|
+
* Instance->>Getter: access this.log
|
|
29
|
+
* Getter->>Logging: Logging.for(this)
|
|
30
|
+
* Logging-->>Getter: return Logger
|
|
31
|
+
* Getter-->>Instance: return Logger
|
|
32
|
+
* Instance->>Logger: info/debug/error(...)
|
|
33
|
+
*/
|
|
2
34
|
export declare abstract class LoggedClass {
|
|
35
|
+
/**
|
|
36
|
+
* @description Lazily provides a context-aware logger for the current instance
|
|
37
|
+
* @summary Uses Logging.for(this) to create a logger whose context is the
|
|
38
|
+
* subclass name, allowing uniform and structured logs from any inheriting class.
|
|
39
|
+
* @return {Logger} A logger bound to the subclass context
|
|
40
|
+
*/
|
|
3
41
|
protected get log(): Logger;
|
|
4
42
|
protected constructor();
|
|
5
43
|
}
|
package/lib/esm/LoggedClass.js
CHANGED
|
@@ -1,8 +1,46 @@
|
|
|
1
1
|
import { Logging } from "./logging.js";
|
|
2
|
+
/**
|
|
3
|
+
* @description Base class that provides a ready-to-use logger instance
|
|
4
|
+
* @summary LoggedClass is a convenience abstract class that injects a type-safe logger
|
|
5
|
+
* into derived classes through a protected getter. Subclasses can directly access
|
|
6
|
+
* this.log to emit messages without manually creating a logger. This promotes
|
|
7
|
+
* consistent, context-aware logging across the codebase.
|
|
8
|
+
* @param {void} [constructor] - No constructor arguments; subclasses may define their own
|
|
9
|
+
* @class LoggedClass
|
|
10
|
+
* @example
|
|
11
|
+
* class UserService extends LoggedClass {
|
|
12
|
+
* create(user: User) {
|
|
13
|
+
* this.log.info(`Creating user ${user.id}`);
|
|
14
|
+
* }
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* const svc = new UserService();
|
|
18
|
+
* svc.create({ id: "42" });
|
|
19
|
+
* @mermaid
|
|
20
|
+
* sequenceDiagram
|
|
21
|
+
* participant Client
|
|
22
|
+
* participant Instance as Subclass Instance
|
|
23
|
+
* participant Getter as LoggedClass.log
|
|
24
|
+
* participant Logging as Logging
|
|
25
|
+
* participant Logger as Logger
|
|
26
|
+
*
|
|
27
|
+
* Client->>Instance: call someMethod()
|
|
28
|
+
* Instance->>Getter: access this.log
|
|
29
|
+
* Getter->>Logging: Logging.for(this)
|
|
30
|
+
* Logging-->>Getter: return Logger
|
|
31
|
+
* Getter-->>Instance: return Logger
|
|
32
|
+
* Instance->>Logger: info/debug/error(...)
|
|
33
|
+
*/
|
|
2
34
|
export class LoggedClass {
|
|
35
|
+
/**
|
|
36
|
+
* @description Lazily provides a context-aware logger for the current instance
|
|
37
|
+
* @summary Uses Logging.for(this) to create a logger whose context is the
|
|
38
|
+
* subclass name, allowing uniform and structured logs from any inheriting class.
|
|
39
|
+
* @return {Logger} A logger bound to the subclass context
|
|
40
|
+
*/
|
|
3
41
|
get log() {
|
|
4
42
|
return Logging.for(this);
|
|
5
43
|
}
|
|
6
44
|
constructor() { }
|
|
7
45
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2VkQ2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvTG9nZ2VkQ2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxxQkFBa0I7QUFHcEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7QUFDSCxNQUFNLE9BQWdCLFdBQVc7SUFDL0I7Ozs7O09BS0c7SUFDSCxJQUFjLEdBQUc7UUFDZixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGdCQUF5QixDQUFDO0NBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2UgY2xhc3MgdGhhdCBwcm92aWRlcyBhIHJlYWR5LXRvLXVzZSBsb2dnZXIgaW5zdGFuY2VcbiAqIEBzdW1tYXJ5IExvZ2dlZENsYXNzIGlzIGEgY29udmVuaWVuY2UgYWJzdHJhY3QgY2xhc3MgdGhhdCBpbmplY3RzIGEgdHlwZS1zYWZlIGxvZ2dlclxuICogaW50byBkZXJpdmVkIGNsYXNzZXMgdGhyb3VnaCBhIHByb3RlY3RlZCBnZXR0ZXIuIFN1YmNsYXNzZXMgY2FuIGRpcmVjdGx5IGFjY2Vzc1xuICogdGhpcy5sb2cgdG8gZW1pdCBtZXNzYWdlcyB3aXRob3V0IG1hbnVhbGx5IGNyZWF0aW5nIGEgbG9nZ2VyLiBUaGlzIHByb21vdGVzXG4gKiBjb25zaXN0ZW50LCBjb250ZXh0LWF3YXJlIGxvZ2dpbmcgYWNyb3NzIHRoZSBjb2RlYmFzZS5cbiAqIEBwYXJhbSB7dm9pZH0gW2NvbnN0cnVjdG9yXSAtIE5vIGNvbnN0cnVjdG9yIGFyZ3VtZW50czsgc3ViY2xhc3NlcyBtYXkgZGVmaW5lIHRoZWlyIG93blxuICogQGNsYXNzIExvZ2dlZENsYXNzXG4gKiBAZXhhbXBsZVxuICogY2xhc3MgVXNlclNlcnZpY2UgZXh0ZW5kcyBMb2dnZWRDbGFzcyB7XG4gKiAgIGNyZWF0ZSh1c2VyOiBVc2VyKSB7XG4gKiAgICAgdGhpcy5sb2cuaW5mbyhgQ3JlYXRpbmcgdXNlciAke3VzZXIuaWR9YCk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBjb25zdCBzdmMgPSBuZXcgVXNlclNlcnZpY2UoKTtcbiAqIHN2Yy5jcmVhdGUoeyBpZDogXCI0MlwiIH0pO1xuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAqICAgcGFydGljaXBhbnQgSW5zdGFuY2UgYXMgU3ViY2xhc3MgSW5zdGFuY2VcbiAqICAgcGFydGljaXBhbnQgR2V0dGVyIGFzIExvZ2dlZENsYXNzLmxvZ1xuICogICBwYXJ0aWNpcGFudCBMb2dnaW5nIGFzIExvZ2dpbmdcbiAqICAgcGFydGljaXBhbnQgTG9nZ2VyIGFzIExvZ2dlclxuICpcbiAqICAgQ2xpZW50LT4+SW5zdGFuY2U6IGNhbGwgc29tZU1ldGhvZCgpXG4gKiAgIEluc3RhbmNlLT4+R2V0dGVyOiBhY2Nlc3MgdGhpcy5sb2dcbiAqICAgR2V0dGVyLT4+TG9nZ2luZzogTG9nZ2luZy5mb3IodGhpcylcbiAqICAgTG9nZ2luZy0tPj5HZXR0ZXI6IHJldHVybiBMb2dnZXJcbiAqICAgR2V0dGVyLS0+Pkluc3RhbmNlOiByZXR1cm4gTG9nZ2VyXG4gKiAgIEluc3RhbmNlLT4+TG9nZ2VyOiBpbmZvL2RlYnVnL2Vycm9yKC4uLilcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExvZ2dlZENsYXNzIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYXppbHkgcHJvdmlkZXMgYSBjb250ZXh0LWF3YXJlIGxvZ2dlciBmb3IgdGhlIGN1cnJlbnQgaW5zdGFuY2VcbiAgICogQHN1bW1hcnkgVXNlcyBMb2dnaW5nLmZvcih0aGlzKSB0byBjcmVhdGUgYSBsb2dnZXIgd2hvc2UgY29udGV4dCBpcyB0aGVcbiAgICogc3ViY2xhc3MgbmFtZSwgYWxsb3dpbmcgdW5pZm9ybSBhbmQgc3RydWN0dXJlZCBsb2dzIGZyb20gYW55IGluaGVyaXRpbmcgY2xhc3MuXG4gICAqIEByZXR1cm4ge0xvZ2dlcn0gQSBsb2dnZXIgYm91bmQgdG8gdGhlIHN1YmNsYXNzIGNvbnRleHRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgbG9nKCk6IExvZ2dlciB7XG4gICAgcmV0dXJuIExvZ2dpbmcuZm9yKHRoaXMgYXMgYW55KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHt9XG59XG4iXX0=
|
package/lib/esm/constants.d.ts
CHANGED
package/lib/esm/constants.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* @description Enum for log levels.
|
|
3
3
|
* @summary Defines different levels of logging for the application.
|
|
4
4
|
* @enum {string}
|
|
5
|
+
* @readonly
|
|
5
6
|
* @memberOf module:Logging
|
|
6
7
|
*/
|
|
7
8
|
export var LogLevel;
|
|
@@ -93,10 +94,17 @@ export const DefaultTheme = {
|
|
|
93
94
|
fg: 31,
|
|
94
95
|
style: ["bold"],
|
|
95
96
|
},
|
|
96
|
-
info: {
|
|
97
|
-
|
|
97
|
+
info: {
|
|
98
|
+
fg: 34,
|
|
99
|
+
style: ["bold"],
|
|
100
|
+
},
|
|
101
|
+
verbose: {
|
|
102
|
+
fg: 34,
|
|
103
|
+
style: ["bold"],
|
|
104
|
+
},
|
|
98
105
|
debug: {
|
|
99
106
|
fg: 33,
|
|
107
|
+
style: ["bold"],
|
|
100
108
|
},
|
|
101
109
|
},
|
|
102
110
|
};
|
|
@@ -128,6 +136,8 @@ export const DefaultLoggingConfig = {
|
|
|
128
136
|
timestamp: true,
|
|
129
137
|
timestampFormat: "HH:mm:ss.SSS",
|
|
130
138
|
context: true,
|
|
139
|
+
format: "raw",
|
|
140
|
+
pattern: "{level} [{timestamp}] {context} - {message} {stack}",
|
|
131
141
|
theme: DefaultTheme,
|
|
132
142
|
};
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQU4sSUFBWSxRQVdYO0FBWEQsV0FBWSxRQUFRO0lBQ2xCLHNEQUFzRDtJQUN0RCwyQkFBZSxDQUFBO0lBQ2Ysa0VBQWtFO0lBQ2xFLHlCQUFhLENBQUE7SUFDYix1Q0FBdUM7SUFDdkMsK0JBQW1CLENBQUE7SUFDbkIsa0NBQWtDO0lBQ2xDLDJCQUFlLENBQUE7SUFDZiw0Q0FBNEM7SUFDNUMsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBWFcsUUFBUSxLQUFSLFFBQVEsUUFXbkI7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsS0FBSyxFQUFFLENBQUM7SUFDUixJQUFJLEVBQUUsQ0FBQztJQUNQLE9BQU8sRUFBRSxDQUFDO0lBQ1YsS0FBSyxFQUFFLENBQUM7SUFDUixLQUFLLEVBQUUsQ0FBQztDQUNULENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBTixJQUFZLFdBS1g7QUFMRCxXQUFZLFdBQVc7SUFDckIsNENBQTRDO0lBQzVDLDBCQUFXLENBQUE7SUFDWCxzQ0FBc0M7SUFDdEMsNEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFMVyxXQUFXLEtBQVgsV0FBVyxRQUt0QjtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQVU7SUFDakMsS0FBSyxFQUFFO1FBQ0wsRUFBRSxFQUFFLEVBQUU7S0FDUDtJQUNELEVBQUUsRUFBRTtRQUNGLEVBQUUsRUFBRSxFQUFFO0tBQ1A7SUFDRCxLQUFLLEVBQUUsRUFBRTtJQUNULFNBQVMsRUFBRSxFQUFFO0lBQ2IsT0FBTyxFQUFFO1FBQ1AsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUU7U0FDUDtLQUNGO0lBQ0QsTUFBTSxFQUFFLEVBQUU7SUFDVixRQUFRLEVBQUU7UUFDUixLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUsRUFBRTtZQUNOLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQztTQUNoQjtRQUNELElBQUksRUFBRTtZQUNKLEVBQUUsRUFBRSxFQUFFO1lBQ04sS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsRUFBRSxFQUFFLEVBQUU7WUFDTixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUM7U0FDaEI7UUFDRCxLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUsRUFBRTtZQUNOLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQztTQUNoQjtLQUNGO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWtCO0lBQ2pELE9BQU8sRUFBRSxDQUFDO0lBQ1YsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJO0lBQ3BCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsSUFBSSxFQUFFLFdBQVcsQ0FBQyxHQUFHO0lBQ3JCLEtBQUssRUFBRSxLQUFLO0lBQ1osZ0JBQWdCLEVBQUUsR0FBRztJQUNyQixTQUFTLEVBQUUsS0FBSztJQUNoQixTQUFTLEVBQUUsSUFBSTtJQUNmLGVBQWUsRUFBRSxjQUFjO0lBQy9CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsTUFBTSxFQUFFLEtBQUs7SUFDYixPQUFPLEVBQUUscURBQXFEO0lBQzlELEtBQUssRUFBRSxZQUFZO0NBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnaW5nQ29uZmlnLCBUaGVtZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVudW0gZm9yIGxvZyBsZXZlbHMuXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGRpZmZlcmVudCBsZXZlbHMgb2YgbG9nZ2luZyBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgLyoqIEVycm9yIGV2ZW50cyB0aGF0IGFyZSBsaWtlbHkgdG8gY2F1c2UgcHJvYmxlbXMuICovXG4gIGVycm9yID0gXCJlcnJvclwiLFxuICAvKiogUm91dGluZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyBvbmdvaW5nIHN0YXR1cyBvciBwZXJmb3JtYW5jZS4gKi9cbiAgaW5mbyA9IFwiaW5mb1wiLFxuICAvKiogQWRkaXRpb25hbCByZWxldmFudCBpbmZvcm1hdGlvbi4gKi9cbiAgdmVyYm9zZSA9IFwidmVyYm9zZVwiLFxuICAvKiogRGVidWcgb3IgdHJhY2UgaW5mb3JtYXRpb24uICovXG4gIGRlYnVnID0gXCJkZWJ1Z1wiLFxuICAvKiogd2F5IHRvbyB2ZXJib3NlIG9yIHNpbGx5IGluZm9ybWF0aW9uLiAqL1xuICBzaWxseSA9IFwic2lsbHlcIixcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTnVtZXJpYyB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIGxvZyBsZXZlbHMuXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBhIG51bWVyaWMgcmVwcmVzZW50YXRpb24gb2YgbG9nIGxldmVscyBmb3IgY29tcGFyaXNvbiBhbmQgZmlsdGVyaW5nLlxuICogQGNvbnN0IE51bWVyaWNMb2dMZXZlbHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBlcnJvciAtIE51bWVyaWMgdmFsdWUgZm9yIGVycm9yIGxldmVsICgyKS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBpbmZvIC0gTnVtZXJpYyB2YWx1ZSBmb3IgaW5mbyBsZXZlbCAoNCkuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdmVyYm9zZSAtIE51bWVyaWMgdmFsdWUgZm9yIHZlcmJvc2UgbGV2ZWwgKDYpLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGRlYnVnIC0gTnVtZXJpYyB2YWx1ZSBmb3IgZGVidWcgbGV2ZWwgKDcpLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHNpbGx5IC0gTnVtZXJpYyB2YWx1ZSBmb3Igc2lsbHkgbGV2ZWwgKDkpLlxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBOdW1lcmljTG9nTGV2ZWxzID0ge1xuICBlcnJvcjogMixcbiAgaW5mbzogNCxcbiAgdmVyYm9zZTogNixcbiAgZGVidWc6IDcsXG4gIHNpbGx5OiA5LFxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRW51bSBmb3IgbG9nZ2luZyBvdXRwdXQgbW9kZXMuXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGRpZmZlcmVudCBvdXRwdXQgZm9ybWF0cyBmb3IgbG9nIG1lc3NhZ2VzLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEBtZW1iZXJPZiBtb2R1bGU6TG9nZ2luZ1xuICovXG5leHBvcnQgZW51bSBMb2dnaW5nTW9kZSB7XG4gIC8qKiBSYXcgdGV4dCBmb3JtYXQgZm9yIGh1bWFuIHJlYWRhYmlsaXR5ICovXG4gIFJBVyA9IFwicmF3XCIsXG4gIC8qKiBKU09OIGZvcm1hdCBmb3IgbWFjaGluZSBwYXJzaW5nICovXG4gIEpTT04gPSBcImpzb25cIixcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVmYXVsdCB0aGVtZSBmb3Igc3R5bGluZyBsb2cgb3V0cHV0LlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgZGVmYXVsdCBjb2xvciBhbmQgc3R5bGUgc2V0dGluZ3MgZm9yIHZhcmlvdXMgY29tcG9uZW50cyBvZiBsb2cgbWVzc2FnZXMuXG4gKiBAY29uc3QgRGVmYXVsdFRoZW1lXG4gKiBAdHlwZWRlZiB7VGhlbWV9IERlZmF1bHRUaGVtZVxuICogQHByb3BlcnR5IHtPYmplY3R9IGNsYXNzIC0gU3R5bGluZyBmb3IgY2xhc3MgbmFtZXMuXG4gKiBAcHJvcGVydHkge251bWJlcn0gY2xhc3MuZmcgLSBGb3JlZ3JvdW5kIGNvbG9yIGNvZGUgZm9yIGNsYXNzIG5hbWVzICgzNCkuXG4gKiBAcHJvcGVydHkge09iamVjdH0gaWQgLSBTdHlsaW5nIGZvciBpZGVudGlmaWVycy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBpZC5mZyAtIEZvcmVncm91bmQgY29sb3IgY29kZSBmb3IgaWRlbnRpZmllcnMgKDM2KS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBzdGFjayAtIFN0eWxpbmcgZm9yIHN0YWNrIHRyYWNlcyAoZW1wdHkgb2JqZWN0KS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSB0aW1lc3RhbXAgLSBTdHlsaW5nIGZvciB0aW1lc3RhbXBzIChlbXB0eSBvYmplY3QpLlxuICogQHByb3BlcnR5IHtPYmplY3R9IG1lc3NhZ2UgLSBTdHlsaW5nIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgbWVzc2FnZXMuXG4gKiBAcHJvcGVydHkge09iamVjdH0gbWVzc2FnZS5lcnJvciAtIFN0eWxpbmcgZm9yIGVycm9yIG1lc3NhZ2VzLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IG1lc3NhZ2UuZXJyb3IuZmcgLSBGb3JlZ3JvdW5kIGNvbG9yIGNvZGUgZm9yIGVycm9yIG1lc3NhZ2VzICgzMSkuXG4gKiBAcHJvcGVydHkge09iamVjdH0gbWV0aG9kIC0gU3R5bGluZyBmb3IgbWV0aG9kIG5hbWVzIChlbXB0eSBvYmplY3QpLlxuICogQHByb3BlcnR5IHtPYmplY3R9IGxvZ0xldmVsIC0gU3R5bGluZyBmb3IgZGlmZmVyZW50IGxvZyBsZXZlbHMuXG4gKiBAcHJvcGVydHkge09iamVjdH0gbG9nTGV2ZWwuZXJyb3IgLSBTdHlsaW5nIGZvciBlcnJvciBsZXZlbCBsb2dzLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxvZ0xldmVsLmVycm9yLmZnIC0gRm9yZWdyb3VuZCBjb2xvciBjb2RlIGZvciBlcnJvciBsZXZlbCBsb2dzICgzMSkuXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBsb2dMZXZlbC5lcnJvci5zdHlsZSAtIFN0eWxlIGF0dHJpYnV0ZXMgZm9yIGVycm9yIGxldmVsIGxvZ3MgKFtcImJvbGRcIl0pLlxuICogQHByb3BlcnR5IHtPYmplY3R9IGxvZ0xldmVsLmluZm8gLSBTdHlsaW5nIGZvciBpbmZvIGxldmVsIGxvZ3MgKGVtcHR5IG9iamVjdCkuXG4gKiBAcHJvcGVydHkge09iamVjdH0gbG9nTGV2ZWwudmVyYm9zZSAtIFN0eWxpbmcgZm9yIHZlcmJvc2UgbGV2ZWwgbG9ncyAoZW1wdHkgb2JqZWN0KS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBsb2dMZXZlbC5kZWJ1ZyAtIFN0eWxpbmcgZm9yIGRlYnVnIGxldmVsIGxvZ3MuXG4gKiBAcHJvcGVydHkge251bWJlcn0gbG9nTGV2ZWwuZGVidWcuZmcgLSBGb3JlZ3JvdW5kIGNvbG9yIGNvZGUgZm9yIGRlYnVnIGxldmVsIGxvZ3MgKDMzKS5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6TG9nZ2luZ1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdFRoZW1lOiBUaGVtZSA9IHtcbiAgY2xhc3M6IHtcbiAgICBmZzogMzQsXG4gIH0sXG4gIGlkOiB7XG4gICAgZmc6IDM2LFxuICB9LFxuICBzdGFjazoge30sXG4gIHRpbWVzdGFtcDoge30sXG4gIG1lc3NhZ2U6IHtcbiAgICBlcnJvcjoge1xuICAgICAgZmc6IDMxLFxuICAgIH0sXG4gIH0sXG4gIG1ldGhvZDoge30sXG4gIGxvZ0xldmVsOiB7XG4gICAgZXJyb3I6IHtcbiAgICAgIGZnOiAzMSxcbiAgICAgIHN0eWxlOiBbXCJib2xkXCJdLFxuICAgIH0sXG4gICAgaW5mbzoge1xuICAgICAgZmc6IDM0LFxuICAgICAgc3R5bGU6IFtcImJvbGRcIl0sXG4gICAgfSxcbiAgICB2ZXJib3NlOiB7XG4gICAgICBmZzogMzQsXG4gICAgICBzdHlsZTogW1wiYm9sZFwiXSxcbiAgICB9LFxuICAgIGRlYnVnOiB7XG4gICAgICBmZzogMzMsXG4gICAgICBzdHlsZTogW1wiYm9sZFwiXSxcbiAgICB9LFxuICB9LFxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVmYXVsdCBjb25maWd1cmF0aW9uIGZvciBsb2dnaW5nLlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgdGhlIGxvZ2dpbmcgc3lzdGVtLCBpbmNsdWRpbmcgdmVyYm9zaXR5LCBsb2cgbGV2ZWwsIHN0eWxpbmcsIGFuZCB0aW1lc3RhbXAgZm9ybWF0LlxuICogQGNvbnN0IERlZmF1bHRMb2dnaW5nQ29uZmlnXG4gKiBAdHlwZWRlZiB7TG9nZ2luZ0NvbmZpZ30gRGVmYXVsdExvZ2dpbmdDb25maWdcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB2ZXJib3NlIC0gVmVyYm9zaXR5IGxldmVsICgwKS5cbiAqIEBwcm9wZXJ0eSB7TG9nTGV2ZWx9IGxldmVsIC0gRGVmYXVsdCBsb2cgbGV2ZWwgKExvZ0xldmVsLmluZm8pLlxuICogQHByb3BlcnR5IHtib29sZWFufSBsb2dMZXZlbCAtIFdoZXRoZXIgdG8gZGlzcGxheSBsb2cgbGV2ZWwgaW4gb3V0cHV0ICh0cnVlKS5cbiAqIEBwcm9wZXJ0eSB7TG9nZ2luZ01vZGV9IG1vZGUgLSBPdXRwdXQgZm9ybWF0IG1vZGUgKExvZ2dpbmdNb2RlLlJBVykuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHN0eWxlIC0gV2hldGhlciB0byBhcHBseSBzdHlsaW5nIHRvIGxvZyBvdXRwdXQgKGZhbHNlKS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZXBhcmF0b3IgLSBTZXBhcmF0b3IgYmV0d2VlbiBsb2cgY29tcG9uZW50cyAoXCIgLSBcIikuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHRpbWVzdGFtcCAtIFdoZXRoZXIgdG8gaW5jbHVkZSB0aW1lc3RhbXBzIGluIGxvZyBtZXNzYWdlcyAodHJ1ZSkuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGltZXN0YW1wRm9ybWF0IC0gRm9ybWF0IGZvciB0aW1lc3RhbXBzIChcIkhIOm1tOnNzLlNTU1wiKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gY29udGV4dCAtIFdoZXRoZXIgdG8gaW5jbHVkZSBjb250ZXh0IGluZm9ybWF0aW9uIGluIGxvZyBtZXNzYWdlcyAodHJ1ZSkuXG4gKiBAcHJvcGVydHkge1RoZW1lfSB0aGVtZSAtIFRoZSB0aGVtZSB0byB1c2UgZm9yIHN0eWxpbmcgbG9nIG1lc3NhZ2VzIChEZWZhdWx0VGhlbWUpLlxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0TG9nZ2luZ0NvbmZpZzogTG9nZ2luZ0NvbmZpZyA9IHtcbiAgdmVyYm9zZTogMCxcbiAgbGV2ZWw6IExvZ0xldmVsLmluZm8sXG4gIGxvZ0xldmVsOiB0cnVlLFxuICBtb2RlOiBMb2dnaW5nTW9kZS5SQVcsXG4gIHN0eWxlOiBmYWxzZSxcbiAgY29udGV4dFNlcGFyYXRvcjogXCIuXCIsXG4gIHNlcGFyYXRvcjogXCIgLSBcIixcbiAgdGltZXN0YW1wOiB0cnVlLFxuICB0aW1lc3RhbXBGb3JtYXQ6IFwiSEg6bW06c3MuU1NTXCIsXG4gIGNvbnRleHQ6IHRydWUsXG4gIGZvcm1hdDogXCJyYXdcIixcbiAgcGF0dGVybjogXCJ7bGV2ZWx9IFt7dGltZXN0YW1wfV0ge2NvbnRleHR9IC0ge21lc3NhZ2V9IHtzdGFja31cIixcbiAgdGhlbWU6IERlZmF1bHRUaGVtZSxcbn07XG4iXX0=
|