ionic-logging-service 16.0.0 → 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/esm2022/lib/ajax-appender.model.mjs +149 -0
- package/esm2022/lib/local-storage-appender.model.mjs +177 -0
- package/esm2022/lib/log-level.converter.mjs +92 -0
- package/esm2022/lib/logger.model.mjs +191 -0
- package/{esm2020 → esm2022}/lib/logging-service.module.mjs +5 -5
- package/esm2022/lib/logging.service.mjs +167 -0
- package/esm2022/lib/memory-appender.model.mjs +133 -0
- package/{fesm2015 → fesm2022}/ionic-logging-service.mjs +15 -15
- package/{fesm2020 → fesm2022}/ionic-logging-service.mjs.map +1 -1
- package/package.json +7 -13
- package/esm2020/lib/ajax-appender.model.mjs +0 -149
- package/esm2020/lib/local-storage-appender.model.mjs +0 -177
- package/esm2020/lib/log-level.converter.mjs +0 -92
- package/esm2020/lib/logger.model.mjs +0 -191
- package/esm2020/lib/logging.service.mjs +0 -167
- package/esm2020/lib/memory-appender.model.mjs +0 -133
- package/fesm2015/ionic-logging-service.mjs.map +0 -1
- package/fesm2020/ionic-logging-service.mjs +0 -992
- /package/{esm2020 → esm2022}/ionic-logging-service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/ajax-appender.configuration.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/browser-console-appender.configuration.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/json-layout.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/local-storage-appender.configuration.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/log-level.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/log-message.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/logging-service.configuration.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/memory-appender.configuration.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import * as log4javascript from "log4javascript";
|
|
2
|
+
import { LogLevelConverter } from "./log-level.converter";
|
|
3
|
+
/**
|
|
4
|
+
* Logger for writing log messages.
|
|
5
|
+
*/
|
|
6
|
+
export class Logger {
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new instance of a logger.
|
|
9
|
+
*/
|
|
10
|
+
constructor(logger) {
|
|
11
|
+
if (typeof logger === "undefined") {
|
|
12
|
+
this.logger = log4javascript.getRootLogger();
|
|
13
|
+
}
|
|
14
|
+
else if (typeof logger === "string") {
|
|
15
|
+
this.logger = log4javascript.getLogger(logger);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.logger = logger;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get the log level.
|
|
23
|
+
*/
|
|
24
|
+
getLogLevel() {
|
|
25
|
+
return LogLevelConverter.levelFromLog4Javascript(this.logger.getLevel());
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Set the log level.
|
|
29
|
+
*
|
|
30
|
+
* @param level the new log level
|
|
31
|
+
*/
|
|
32
|
+
setLogLevel(level) {
|
|
33
|
+
this.logger.setLevel(LogLevelConverter.levelToLog4Javascript(level));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Logs a message at level TRACE.
|
|
37
|
+
*
|
|
38
|
+
* @param methodName name of the method
|
|
39
|
+
* @param params optional parameters to be logged; objects will be formatted as JSON
|
|
40
|
+
*/
|
|
41
|
+
trace(methodName, ...params) {
|
|
42
|
+
if (this.logger.isTraceEnabled()) {
|
|
43
|
+
const args = [methodName];
|
|
44
|
+
for (const param of params) {
|
|
45
|
+
args.push(this.formatArgument(param));
|
|
46
|
+
}
|
|
47
|
+
this.logger.trace.apply(this.logger, args);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Logs a message at level DEBUG.
|
|
52
|
+
*
|
|
53
|
+
* @param methodName name of the method
|
|
54
|
+
* @param params optional parameters to be logged; objects will be formatted as JSON
|
|
55
|
+
*/
|
|
56
|
+
debug(methodName, ...params) {
|
|
57
|
+
if (this.logger.isDebugEnabled()) {
|
|
58
|
+
const args = [methodName];
|
|
59
|
+
for (const param of params) {
|
|
60
|
+
args.push(this.formatArgument(param));
|
|
61
|
+
}
|
|
62
|
+
this.logger.debug.apply(this.logger, args);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Logs a message at level INFO.
|
|
67
|
+
*
|
|
68
|
+
* @param methodName name of the method
|
|
69
|
+
* @param params optional parameters to be logged; objects will be formatted as JSON
|
|
70
|
+
*/
|
|
71
|
+
info(methodName, ...params) {
|
|
72
|
+
if (this.logger.isInfoEnabled()) {
|
|
73
|
+
const args = [methodName];
|
|
74
|
+
for (const param of params) {
|
|
75
|
+
args.push(this.formatArgument(param));
|
|
76
|
+
}
|
|
77
|
+
this.logger.info.apply(this.logger, args);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Logs a message at level WARN.
|
|
82
|
+
*
|
|
83
|
+
* @param methodName name of the method
|
|
84
|
+
* @param params optional parameters to be logged; objects will be formatted as JSON
|
|
85
|
+
*/
|
|
86
|
+
warn(methodName, ...params) {
|
|
87
|
+
if (this.logger.isWarnEnabled()) {
|
|
88
|
+
const args = [methodName];
|
|
89
|
+
for (const param of params) {
|
|
90
|
+
args.push(this.formatArgument(param));
|
|
91
|
+
}
|
|
92
|
+
this.logger.warn.apply(this.logger, args);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Logs a message at level ERROR.
|
|
97
|
+
*
|
|
98
|
+
* @param methodName name of the method
|
|
99
|
+
* @param params optional parameters to be logged; objects will be formatted as JSON
|
|
100
|
+
*/
|
|
101
|
+
error(methodName, ...params) {
|
|
102
|
+
if (this.logger.isErrorEnabled()) {
|
|
103
|
+
const args = [methodName];
|
|
104
|
+
for (const param of params) {
|
|
105
|
+
args.push(this.formatArgument(param));
|
|
106
|
+
}
|
|
107
|
+
this.logger.error.apply(this.logger, args);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Logs a message at level FATAL.
|
|
112
|
+
*
|
|
113
|
+
* @param methodName name of the method
|
|
114
|
+
* @param params optional parameters to be logged; objects will be formatted as JSON
|
|
115
|
+
*/
|
|
116
|
+
fatal(methodName, ...params) {
|
|
117
|
+
if (this.logger.isFatalEnabled()) {
|
|
118
|
+
const args = [methodName];
|
|
119
|
+
for (const param of params) {
|
|
120
|
+
args.push(this.formatArgument(param));
|
|
121
|
+
}
|
|
122
|
+
this.logger.fatal.apply(this.logger, args);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Logs the entry into a method.
|
|
127
|
+
* The method name will be logged at level INFO, the parameters at level DEBUG.
|
|
128
|
+
*
|
|
129
|
+
* @param methodName name of the method
|
|
130
|
+
* @param params optional parameters to be logged; objects will be formatted as JSON
|
|
131
|
+
*/
|
|
132
|
+
entry(methodName, ...params) {
|
|
133
|
+
if (this.logger.isInfoEnabled()) {
|
|
134
|
+
const args = [methodName, "entry"];
|
|
135
|
+
if (this.logger.isDebugEnabled()) {
|
|
136
|
+
for (const param of params) {
|
|
137
|
+
args.push(this.formatArgument(param));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
this.logger.info.apply(this.logger, args);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Logs the exit of a method.
|
|
145
|
+
* The method name will be logged at level INFO, the parameters at level DEBUG.
|
|
146
|
+
*
|
|
147
|
+
* @param methodName name of the method
|
|
148
|
+
* @param params optional parameters to be logged; objects will be formatted as JSON
|
|
149
|
+
*/
|
|
150
|
+
exit(methodName, ...params) {
|
|
151
|
+
if (this.logger.isInfoEnabled()) {
|
|
152
|
+
const args = [methodName, "exit"];
|
|
153
|
+
if (this.logger.isDebugEnabled()) {
|
|
154
|
+
for (const param of params) {
|
|
155
|
+
args.push(this.formatArgument(param));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
this.logger.info.apply(this.logger, args);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Formats the given argument.
|
|
163
|
+
*/
|
|
164
|
+
formatArgument(arg) {
|
|
165
|
+
if (typeof arg === "string") {
|
|
166
|
+
return arg;
|
|
167
|
+
}
|
|
168
|
+
else if (typeof arg === "number") {
|
|
169
|
+
return arg.toString();
|
|
170
|
+
}
|
|
171
|
+
else if (arg instanceof Error) {
|
|
172
|
+
// JSON.stringify() returns here "{ }"
|
|
173
|
+
return arg.toString();
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
try {
|
|
177
|
+
return JSON.stringify(arg);
|
|
178
|
+
}
|
|
179
|
+
catch (e) {
|
|
180
|
+
return e.message;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Returns the internal Logger (for unit tests only).
|
|
186
|
+
*/
|
|
187
|
+
getInternalLogger() {
|
|
188
|
+
return this.logger;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW9uaWMtbG9nZ2luZy1zZXJ2aWNlL3NyYy9saWIvbG9nZ2VyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxjQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sTUFBTTtJQUlsQjs7T0FFRztJQUNILFlBQVksTUFBcUI7UUFDaEMsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QyxDQUFDO2FBQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN0QixDQUFDO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNqQixPQUFPLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxLQUFlO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLFVBQWtCLEVBQUUsR0FBRyxNQUFhO1FBQ2hELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVB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QUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxDQUFDO1lBQ0YsQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjLENBQUMsR0FBUTtRQUM3QixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzdCLE9BQU8sR0FBRyxDQUFDO1FBQ1osQ0FBQzthQUFNLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkIsQ0FBQzthQUFNLElBQUksR0FBRyxZQUFZLEtBQUssRUFBRSxDQUFDO1lBQ2pDLHNDQUFzQztZQUN0QyxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QixDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQztnQkFDSixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ2xCLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNwQixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBsb2c0amF2YXNjcmlwdCBmcm9tIFwibG9nNGphdmFzY3JpcHRcIjtcblxuaW1wb3J0IHsgTG9nTGV2ZWxDb252ZXJ0ZXIgfSBmcm9tIFwiLi9sb2ctbGV2ZWwuY29udmVydGVyXCI7XG5pbXBvcnQgeyBMb2dMZXZlbCB9IGZyb20gXCIuL2xvZy1sZXZlbC5tb2RlbFwiO1xuXG4vKipcbiAqIExvZ2dlciBmb3Igd3JpdGluZyBsb2cgbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dnZXIge1xuXG5cdHByaXZhdGUgbG9nZ2VyOiBsb2c0amF2YXNjcmlwdC5Mb2dnZXI7XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgYSBsb2dnZXIuXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihsb2dnZXI/OiBzdHJpbmcgfCBhbnkpIHtcblx0XHRpZiAodHlwZW9mIGxvZ2dlciA9PT0gXCJ1bmRlZmluZWRcIikge1xuXHRcdFx0dGhpcy5sb2dnZXIgPSBsb2c0amF2YXNjcmlwdC5nZXRSb290TG9nZ2VyKCk7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgbG9nZ2VyID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR0aGlzLmxvZ2dlciA9IGxvZzRqYXZhc2NyaXB0LmdldExvZ2dlcihsb2dnZXIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBsb2cgbGV2ZWwuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TG9nTGV2ZWwoKTogTG9nTGV2ZWwge1xuXHRcdHJldHVybiBMb2dMZXZlbENvbnZlcnRlci5sZXZlbEZyb21Mb2c0SmF2YXNjcmlwdCh0aGlzLmxvZ2dlci5nZXRMZXZlbCgpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIGxvZyBsZXZlbC5cblx0ICpcblx0ICogQHBhcmFtIGxldmVsIHRoZSBuZXcgbG9nIGxldmVsXG5cdCAqL1xuXHRwdWJsaWMgc2V0TG9nTGV2ZWwobGV2ZWw6IExvZ0xldmVsKTogdm9pZCB7XG5cdFx0dGhpcy5sb2dnZXIuc2V0TGV2ZWwoTG9nTGV2ZWxDb252ZXJ0ZXIubGV2ZWxUb0xvZzRKYXZhc2NyaXB0KGxldmVsKSk7XG5cdH1cblxuXHQvKipcblx0ICogTG9ncyBhIG1lc3NhZ2UgYXQgbGV2ZWwgVFJBQ0UuXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXRob2ROYW1lIG5hbWUgb2YgdGhlIG1ldGhvZFxuXHQgKiBAcGFyYW0gcGFyYW1zIG9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gYmUgbG9nZ2VkOyBvYmplY3RzIHdpbGwgYmUgZm9ybWF0dGVkIGFzIEpTT05cblx0ICovXG5cdHB1YmxpYyB0cmFjZShtZXRob2ROYW1lOiBzdHJpbmcsIC4uLnBhcmFtczogYW55W10pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5sb2dnZXIuaXNUcmFjZUVuYWJsZWQoKSkge1xuXHRcdFx0Y29uc3QgYXJncyA9IFttZXRob2ROYW1lXTtcblx0XHRcdGZvciAoY29uc3QgcGFyYW0gb2YgcGFyYW1zKSB7XG5cdFx0XHRcdGFyZ3MucHVzaCh0aGlzLmZvcm1hdEFyZ3VtZW50KHBhcmFtKSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmxvZ2dlci50cmFjZS5hcHBseSh0aGlzLmxvZ2dlciwgYXJncyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIExvZ3MgYSBtZXNzYWdlIGF0IGxldmVsIERFQlVHLlxuXHQgKlxuXHQgKiBAcGFyYW0gbWV0aG9kTmFtZSBuYW1lIG9mIHRoZSBtZXRob2Rcblx0ICogQHBhcmFtIHBhcmFtcyBvcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGxvZ2dlZDsgb2JqZWN0cyB3aWxsIGJlIGZvcm1hdHRlZCBhcyBKU09OXG5cdCAqL1xuXHRwdWJsaWMgZGVidWcobWV0aG9kTmFtZTogc3RyaW5nLCAuLi5wYXJhbXM6IGFueVtdKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMubG9nZ2VyLmlzRGVidWdFbmFibGVkKCkpIHtcblx0XHRcdGNvbnN0IGFyZ3MgPSBbbWV0aG9kTmFtZV07XG5cdFx0XHRmb3IgKGNvbnN0IHBhcmFtIG9mIHBhcmFtcykge1xuXHRcdFx0XHRhcmdzLnB1c2godGhpcy5mb3JtYXRBcmd1bWVudChwYXJhbSkpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5sb2dnZXIuZGVidWcuYXBwbHkodGhpcy5sb2dnZXIsIGFyZ3MpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBMb2dzIGEgbWVzc2FnZSBhdCBsZXZlbCBJTkZPLlxuXHQgKlxuXHQgKiBAcGFyYW0gbWV0aG9kTmFtZSBuYW1lIG9mIHRoZSBtZXRob2Rcblx0ICogQHBhcmFtIHBhcmFtcyBvcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGxvZ2dlZDsgb2JqZWN0cyB3aWxsIGJlIGZvcm1hdHRlZCBhcyBKU09OXG5cdCAqL1xuXHRwdWJsaWMgaW5mbyhtZXRob2ROYW1lOiBzdHJpbmcsIC4uLnBhcmFtczogYW55W10pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5sb2dnZXIuaXNJbmZvRW5hYmxlZCgpKSB7XG5cdFx0XHRjb25zdCBhcmdzID0gW21ldGhvZE5hbWVdO1xuXHRcdFx0Zm9yIChjb25zdCBwYXJhbSBvZiBwYXJhbXMpIHtcblx0XHRcdFx0YXJncy5wdXNoKHRoaXMuZm9ybWF0QXJndW1lbnQocGFyYW0pKTtcblx0XHRcdH1cblx0XHRcdHRoaXMubG9nZ2VyLmluZm8uYXBwbHkodGhpcy5sb2dnZXIsIGFyZ3MpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBMb2dzIGEgbWVzc2FnZSBhdCBsZXZlbCBXQVJOLlxuXHQgKlxuXHQgKiBAcGFyYW0gbWV0aG9kTmFtZSBuYW1lIG9mIHRoZSBtZXRob2Rcblx0ICogQHBhcmFtIHBhcmFtcyBvcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGxvZ2dlZDsgb2JqZWN0cyB3aWxsIGJlIGZvcm1hdHRlZCBhcyBKU09OXG5cdCAqL1xuXHRwdWJsaWMgd2FybihtZXRob2ROYW1lOiBzdHJpbmcsIC4uLnBhcmFtczogYW55W10pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5sb2dnZXIuaXNXYXJuRW5hYmxlZCgpKSB7XG5cdFx0XHRjb25zdCBhcmdzID0gW21ldGhvZE5hbWVdO1xuXHRcdFx0Zm9yIChjb25zdCBwYXJhbSBvZiBwYXJhbXMpIHtcblx0XHRcdFx0YXJncy5wdXNoKHRoaXMuZm9ybWF0QXJndW1lbnQocGFyYW0pKTtcblx0XHRcdH1cblx0XHRcdHRoaXMubG9nZ2VyLndhcm4uYXBwbHkodGhpcy5sb2dnZXIsIGFyZ3MpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBMb2dzIGEgbWVzc2FnZSBhdCBsZXZlbCBFUlJPUi5cblx0ICpcblx0ICogQHBhcmFtIG1ldGhvZE5hbWUgbmFtZSBvZiB0aGUgbWV0aG9kXG5cdCAqIEBwYXJhbSBwYXJhbXMgb3B0aW9uYWwgcGFyYW1ldGVycyB0byBiZSBsb2dnZWQ7IG9iamVjdHMgd2lsbCBiZSBmb3JtYXR0ZWQgYXMgSlNPTlxuXHQgKi9cblx0cHVibGljIGVycm9yKG1ldGhvZE5hbWU6IHN0cmluZywgLi4ucGFyYW1zOiBhbnlbXSk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmxvZ2dlci5pc0Vycm9yRW5hYmxlZCgpKSB7XG5cdFx0XHRjb25zdCBhcmdzID0gW21ldGhvZE5hbWVdO1xuXHRcdFx0Zm9yIChjb25zdCBwYXJhbSBvZiBwYXJhbXMpIHtcblx0XHRcdFx0YXJncy5wdXNoKHRoaXMuZm9ybWF0QXJndW1lbnQocGFyYW0pKTtcblx0XHRcdH1cblx0XHRcdHRoaXMubG9nZ2VyLmVycm9yLmFwcGx5KHRoaXMubG9nZ2VyLCBhcmdzKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTG9ncyBhIG1lc3NhZ2UgYXQgbGV2ZWwgRkFUQUwuXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXRob2ROYW1lIG5hbWUgb2YgdGhlIG1ldGhvZFxuXHQgKiBAcGFyYW0gcGFyYW1zIG9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gYmUgbG9nZ2VkOyBvYmplY3RzIHdpbGwgYmUgZm9ybWF0dGVkIGFzIEpTT05cblx0ICovXG5cdHB1YmxpYyBmYXRhbChtZXRob2ROYW1lOiBzdHJpbmcsIC4uLnBhcmFtczogYW55W10pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5sb2dnZXIuaXNGYXRhbEVuYWJsZWQoKSkge1xuXHRcdFx0Y29uc3QgYXJncyA9IFttZXRob2ROYW1lXTtcblx0XHRcdGZvciAoY29uc3QgcGFyYW0gb2YgcGFyYW1zKSB7XG5cdFx0XHRcdGFyZ3MucHVzaCh0aGlzLmZvcm1hdEFyZ3VtZW50KHBhcmFtKSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmxvZ2dlci5mYXRhbC5hcHBseSh0aGlzLmxvZ2dlciwgYXJncyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIExvZ3MgdGhlIGVudHJ5IGludG8gYSBtZXRob2QuXG5cdCAqIFRoZSBtZXRob2QgbmFtZSB3aWxsIGJlIGxvZ2dlZCBhdCBsZXZlbCBJTkZPLCB0aGUgcGFyYW1ldGVycyBhdCBsZXZlbCBERUJVRy5cblx0ICpcblx0ICogQHBhcmFtIG1ldGhvZE5hbWUgbmFtZSBvZiB0aGUgbWV0aG9kXG5cdCAqIEBwYXJhbSBwYXJhbXMgb3B0aW9uYWwgcGFyYW1ldGVycyB0byBiZSBsb2dnZWQ7IG9iamVjdHMgd2lsbCBiZSBmb3JtYXR0ZWQgYXMgSlNPTlxuXHQgKi9cblx0cHVibGljIGVudHJ5KG1ldGhvZE5hbWU6IHN0cmluZywgLi4ucGFyYW1zOiBhbnlbXSk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmxvZ2dlci5pc0luZm9FbmFibGVkKCkpIHtcblx0XHRcdGNvbnN0IGFyZ3MgPSBbbWV0aG9kTmFtZSwgXCJlbnRyeVwiXTtcblx0XHRcdGlmICh0aGlzLmxvZ2dlci5pc0RlYnVnRW5hYmxlZCgpKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgcGFyYW0gb2YgcGFyYW1zKSB7XG5cdFx0XHRcdFx0YXJncy5wdXNoKHRoaXMuZm9ybWF0QXJndW1lbnQocGFyYW0pKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5sb2dnZXIuaW5mby5hcHBseSh0aGlzLmxvZ2dlciwgYXJncyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIExvZ3MgdGhlIGV4aXQgb2YgYSBtZXRob2QuXG5cdCAqIFRoZSBtZXRob2QgbmFtZSB3aWxsIGJlIGxvZ2dlZCBhdCBsZXZlbCBJTkZPLCB0aGUgcGFyYW1ldGVycyBhdCBsZXZlbCBERUJVRy5cblx0ICpcblx0ICogQHBhcmFtIG1ldGhvZE5hbWUgbmFtZSBvZiB0aGUgbWV0aG9kXG5cdCAqIEBwYXJhbSBwYXJhbXMgb3B0aW9uYWwgcGFyYW1ldGVycyB0byBiZSBsb2dnZWQ7IG9iamVjdHMgd2lsbCBiZSBmb3JtYXR0ZWQgYXMgSlNPTlxuXHQgKi9cblx0cHVibGljIGV4aXQobWV0aG9kTmFtZTogc3RyaW5nLCAuLi5wYXJhbXM6IGFueVtdKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMubG9nZ2VyLmlzSW5mb0VuYWJsZWQoKSkge1xuXHRcdFx0Y29uc3QgYXJncyA9IFttZXRob2ROYW1lLCBcImV4aXRcIl07XG5cdFx0XHRpZiAodGhpcy5sb2dnZXIuaXNEZWJ1Z0VuYWJsZWQoKSkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IHBhcmFtIG9mIHBhcmFtcykge1xuXHRcdFx0XHRcdGFyZ3MucHVzaCh0aGlzLmZvcm1hdEFyZ3VtZW50KHBhcmFtKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMubG9nZ2VyLmluZm8uYXBwbHkodGhpcy5sb2dnZXIsIGFyZ3MpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGb3JtYXRzIHRoZSBnaXZlbiBhcmd1bWVudC5cblx0ICovXG5cdHB1YmxpYyBmb3JtYXRBcmd1bWVudChhcmc6IGFueSk6IHN0cmluZyB7XG5cdFx0aWYgKHR5cGVvZiBhcmcgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHJldHVybiBhcmc7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSB7XG5cdFx0XHRyZXR1cm4gYXJnLnRvU3RyaW5nKCk7XG5cdFx0fSBlbHNlIGlmIChhcmcgaW5zdGFuY2VvZiBFcnJvcikge1xuXHRcdFx0Ly8gSlNPTi5zdHJpbmdpZnkoKSByZXR1cm5zIGhlcmUgXCJ7IH1cIlxuXHRcdFx0cmV0dXJuIGFyZy50b1N0cmluZygpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJnKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0cmV0dXJuIGUubWVzc2FnZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgaW50ZXJuYWwgTG9nZ2VyIChmb3IgdW5pdCB0ZXN0cyBvbmx5KS5cblx0ICovXG5cdHB1YmxpYyBnZXRJbnRlcm5hbExvZ2dlcigpOiBsb2c0amF2YXNjcmlwdC5Mb2dnZXIge1xuXHRcdHJldHVybiB0aGlzLmxvZ2dlcjtcblx0fVxufVxuIl19
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { NgModule } from "@angular/core";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class LoggingServiceModule {
|
|
4
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LoggingServiceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.2", ngImport: i0, type: LoggingServiceModule }); }
|
|
6
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LoggingServiceModule }); }
|
|
4
7
|
}
|
|
5
|
-
|
|
6
|
-
LoggingServiceModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: LoggingServiceModule });
|
|
7
|
-
LoggingServiceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoggingServiceModule });
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoggingServiceModule, decorators: [{
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LoggingServiceModule, decorators: [{
|
|
9
9
|
type: NgModule,
|
|
10
10
|
args: [{
|
|
11
11
|
imports: [],
|
|
@@ -13,4 +13,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
13
13
|
exports: []
|
|
14
14
|
}]
|
|
15
15
|
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy1zZXJ2aWNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lvbmljLWxvZ2dpbmctc2VydmljZS9zcmMvbGliL2xvZ2dpbmctc2VydmljZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFVekMsTUFBTSxPQUFPLG9CQUFvQjs4R0FBcEIsb0JBQW9COytHQUFwQixvQkFBb0I7K0dBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFSaEMsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUUsRUFDUjtvQkFDRCxZQUFZLEVBQUUsRUFDYjtvQkFDRCxPQUFPLEVBQUUsRUFDUjtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuQE5nTW9kdWxlKHtcblx0aW1wb3J0czogW1xuXHRdLFxuXHRkZWNsYXJhdGlvbnM6IFtcblx0XSxcblx0ZXhwb3J0czogW1xuXHRdXG59KVxuZXhwb3J0IGNsYXNzIExvZ2dpbmdTZXJ2aWNlTW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { EventEmitter, Injectable } from "@angular/core";
|
|
2
|
+
import * as log4javascript from "log4javascript";
|
|
3
|
+
import { AjaxAppender } from "./ajax-appender.model";
|
|
4
|
+
import { LocalStorageAppender } from "./local-storage-appender.model";
|
|
5
|
+
import { LogLevelConverter } from "./log-level.converter";
|
|
6
|
+
import { Logger } from "./logger.model";
|
|
7
|
+
import { MemoryAppender } from "./memory-appender.model";
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
/**
|
|
10
|
+
* Service for logging functionality.
|
|
11
|
+
*
|
|
12
|
+
* By default, the following settings are used:
|
|
13
|
+
* - logger: root with level WARN
|
|
14
|
+
* - appender: BrowserConsoleAppender with threshold DEBUG and MemoryAppender with threshold ALL
|
|
15
|
+
*
|
|
16
|
+
* Via [configure](#configure), it is possible to amend these settings.
|
|
17
|
+
*/
|
|
18
|
+
export class LoggingService {
|
|
19
|
+
/**
|
|
20
|
+
* Creates a new instance of the service.
|
|
21
|
+
*/
|
|
22
|
+
constructor() {
|
|
23
|
+
// prevent log4javascript to show alerts on case of errors
|
|
24
|
+
log4javascript.logLog.setQuietMode(true);
|
|
25
|
+
// create event emitter
|
|
26
|
+
this.logMessagesChanged = new EventEmitter();
|
|
27
|
+
this.ajaxAppenderFailed = new EventEmitter();
|
|
28
|
+
// configure appender
|
|
29
|
+
const logger = log4javascript.getRootLogger();
|
|
30
|
+
logger.setLevel(log4javascript.Level.WARN);
|
|
31
|
+
// browser console appender for debugger
|
|
32
|
+
this.browserConsoleAppender = new log4javascript.BrowserConsoleAppender();
|
|
33
|
+
this.browserConsoleAppender.setLayout(new log4javascript.PatternLayout("%d{HH:mm:ss,SSS} %c %m"));
|
|
34
|
+
this.browserConsoleAppender.setThreshold(log4javascript.Level.ALL);
|
|
35
|
+
logger.addAppender(this.browserConsoleAppender);
|
|
36
|
+
// in-memory appender for display on log messages page
|
|
37
|
+
this.memoryAppender = new MemoryAppender();
|
|
38
|
+
this.memoryAppender.setLayout(new log4javascript.PatternLayout("%d{HH:mm:ss,SSS} %c %m"));
|
|
39
|
+
this.memoryAppender.setOnLogMessagesChangedCallback((message) => {
|
|
40
|
+
this.logMessagesChanged.emit();
|
|
41
|
+
});
|
|
42
|
+
logger.addAppender(this.memoryAppender);
|
|
43
|
+
this.configure();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Configures the logging depending on the given configuration.
|
|
47
|
+
*
|
|
48
|
+
* @param configuration configuration data.
|
|
49
|
+
*/
|
|
50
|
+
configure(configuration) {
|
|
51
|
+
if (typeof configuration === "undefined") {
|
|
52
|
+
configuration = {};
|
|
53
|
+
}
|
|
54
|
+
// set log levels
|
|
55
|
+
if (typeof configuration.logLevels !== "undefined") {
|
|
56
|
+
for (const level of configuration.logLevels) {
|
|
57
|
+
let logger;
|
|
58
|
+
if (level.loggerName === "root") {
|
|
59
|
+
logger = log4javascript.getRootLogger();
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
logger = log4javascript.getLogger(level.loggerName);
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
logger.setLevel(LogLevelConverter.levelToLog4Javascript(LogLevelConverter.levelFromString(level.logLevel)));
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
throw new Error(`invalid log level ${level.logLevel}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// configure AjaxAppender
|
|
73
|
+
if (typeof configuration.ajaxAppender !== "undefined") {
|
|
74
|
+
const ajaxAppender = new AjaxAppender(configuration.ajaxAppender);
|
|
75
|
+
ajaxAppender.appenderFailed.subscribe((message) => {
|
|
76
|
+
this.ajaxAppenderFailed.emit(message);
|
|
77
|
+
});
|
|
78
|
+
log4javascript.getRootLogger().addAppender(ajaxAppender);
|
|
79
|
+
}
|
|
80
|
+
// configure LocalStorageAppender
|
|
81
|
+
if (typeof configuration.localStorageAppender !== "undefined") {
|
|
82
|
+
const localStorageAppender = new LocalStorageAppender(configuration.localStorageAppender);
|
|
83
|
+
log4javascript.getRootLogger().addAppender(localStorageAppender);
|
|
84
|
+
// ensure that an eventual memoryAppender is behind the localStorageAppender
|
|
85
|
+
const appenders = new Logger().getInternalLogger().getEffectiveAppenders();
|
|
86
|
+
const memoryAppender = appenders.find((a) => a.toString() === "Ionic.Logging.MemoryAppender");
|
|
87
|
+
if (memoryAppender) {
|
|
88
|
+
log4javascript.getRootLogger().removeAppender(memoryAppender);
|
|
89
|
+
log4javascript.getRootLogger().addAppender(memoryAppender);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// configure MemoryAppender
|
|
93
|
+
if (configuration.memoryAppender) {
|
|
94
|
+
this.memoryAppender.configure(configuration.memoryAppender);
|
|
95
|
+
}
|
|
96
|
+
// configure BrowserConsoleAppender
|
|
97
|
+
if (configuration.browserConsoleAppender) {
|
|
98
|
+
if (configuration.browserConsoleAppender.threshold) {
|
|
99
|
+
const convertedThreshold = LogLevelConverter.levelToLog4Javascript(LogLevelConverter.levelFromString(configuration.browserConsoleAppender.threshold));
|
|
100
|
+
this.browserConsoleAppender.setThreshold(convertedThreshold);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Gets the root logger from which all other loggers derive.
|
|
106
|
+
*
|
|
107
|
+
* @return root logger
|
|
108
|
+
*/
|
|
109
|
+
getRootLogger() {
|
|
110
|
+
return new Logger();
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Gets a logger with the specified name, creating it if a logger with that name does not already exist.
|
|
114
|
+
*
|
|
115
|
+
* @param loggerName name of the logger
|
|
116
|
+
* @return logger
|
|
117
|
+
*/
|
|
118
|
+
getLogger(loggerName) {
|
|
119
|
+
return new Logger(loggerName);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Gets the last log messages.
|
|
123
|
+
*
|
|
124
|
+
* The log messages are retrieved from the internal [MemoryAppender](../memoryappender.html).
|
|
125
|
+
* That means you will get only the most current messages. The number of the messages is limited
|
|
126
|
+
* by its maxMessages value.
|
|
127
|
+
*
|
|
128
|
+
* @return log messages
|
|
129
|
+
*/
|
|
130
|
+
getLogMessages() {
|
|
131
|
+
return this.memoryAppender.getLogMessages();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Loads the log messages written by the LocalStorageAppender with the given key.
|
|
135
|
+
*
|
|
136
|
+
* @param localStorageKey key for the local storage
|
|
137
|
+
* @returns log messages
|
|
138
|
+
*/
|
|
139
|
+
getLogMessagesFromLocalStorage(localStorageKey) {
|
|
140
|
+
return LocalStorageAppender.loadLogMessages(localStorageKey);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Remove all log messages.
|
|
144
|
+
*/
|
|
145
|
+
removeLogMessages() {
|
|
146
|
+
this.memoryAppender.removeLogMessages();
|
|
147
|
+
this.logMessagesChanged.emit();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Removes the log messages written by the LocalStorageAppender with the given key.
|
|
151
|
+
*
|
|
152
|
+
* @param localStorageKey key for the local storage
|
|
153
|
+
*/
|
|
154
|
+
removeLogMessagesFromLocalStorage(localStorageKey) {
|
|
155
|
+
LocalStorageAppender.removeLogMessages(localStorageKey);
|
|
156
|
+
this.logMessagesChanged.emit();
|
|
157
|
+
}
|
|
158
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LoggingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
159
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LoggingService, providedIn: "root" }); }
|
|
160
|
+
}
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: LoggingService, decorators: [{
|
|
162
|
+
type: Injectable,
|
|
163
|
+
args: [{
|
|
164
|
+
providedIn: "root"
|
|
165
|
+
}]
|
|
166
|
+
}], ctorParameters: () => [] });
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW9uaWMtbG9nZ2luZy1zZXJ2aWNlL3NyYy9saWIvbG9nZ2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sS0FBSyxjQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRXpEOzs7Ozs7OztHQVFHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFxQjFCOztPQUVHO0lBQ0g7UUFFQywwREFBMEQ7UUFDMUQsY0FBYyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekMsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ25ELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXJELHFCQUFxQjtRQUNyQixNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNDLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMxRSxJ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O09BUUc7SUFDSSxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSw4QkFBOEIsQ0FBQyxlQUF1QjtRQUM1RCxPQUFPLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGlDQUFpQyxDQUFDLGVBQXVCO1FBQy9ELG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDOzhHQW5MVyxjQUFjO2tIQUFkLGNBQWMsY0FGZCxNQUFNOzsyRkFFTixjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgKiBhcyBsb2c0amF2YXNjcmlwdCBmcm9tIFwibG9nNGphdmFzY3JpcHRcIjtcblxuaW1wb3J0IHsgQWpheEFwcGVuZGVyIH0gZnJvbSBcIi4vYWpheC1hcHBlbmRlci5tb2RlbFwiO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlQXBwZW5kZXIgfSBmcm9tIFwiLi9sb2NhbC1zdG9yYWdlLWFwcGVuZGVyLm1vZGVsXCI7XG5pbXBvcnQgeyBMb2dMZXZlbENvbnZlcnRlciB9IGZyb20gXCIuL2xvZy1sZXZlbC5jb252ZXJ0ZXJcIjtcbmltcG9ydCB7IExvZ01lc3NhZ2UgfSBmcm9tIFwiLi9sb2ctbWVzc2FnZS5tb2RlbFwiO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2VyLm1vZGVsXCI7XG5pbXBvcnQgeyBMb2dnaW5nU2VydmljZUNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9sb2dnaW5nLXNlcnZpY2UuY29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHsgTWVtb3J5QXBwZW5kZXIgfSBmcm9tIFwiLi9tZW1vcnktYXBwZW5kZXIubW9kZWxcIjtcblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBsb2dnaW5nIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQnkgZGVmYXVsdCwgdGhlIGZvbGxvd2luZyBzZXR0aW5ncyBhcmUgdXNlZDpcbiAqICAtIGxvZ2dlcjogcm9vdCB3aXRoIGxldmVsIFdBUk5cbiAqICAtIGFwcGVuZGVyOiBCcm93c2VyQ29uc29sZUFwcGVuZGVyIHdpdGggdGhyZXNob2xkIERFQlVHIGFuZCBNZW1vcnlBcHBlbmRlciB3aXRoIHRocmVzaG9sZCBBTExcbiAqXG4gKiBWaWEgW2NvbmZpZ3VyZV0oI2NvbmZpZ3VyZSksIGl0IGlzIHBvc3NpYmxlIHRvIGFtZW5kIHRoZXNlIHNldHRpbmdzLlxuICovXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIExvZ2dpbmdTZXJ2aWNlIHtcblxuXHQvKipcblx0ICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIGxvZyBtZXNzYWdlcyBnb3QgKHBvdGVudGlhbGx5KSBjaGFuZ2UuXG5cdCAqIFRoaXMgY2FuIGhhcHBlbiB3aGVuOlxuXHQgKiAtIG5ldyBtZXNzYWdlIHdhcyBhZGRlZFxuXHQgKiAtIGFsbCBtZXNzYWdlIHdoZXJlIHJlbW92ZWQgZnJvbSBtZW1vcnlcblx0ICogLSBhbGwgbWFzc2FnZXMgd2hlcmUgcmVtb3ZlZCBmb3Igb25lIHNwY2lmaWMgTG9jYWxTdG9yYWdlQXBwZW5kZXJcblx0ICovXG5cdHB1YmxpYyBsb2dNZXNzYWdlc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcblxuXHQvKipcblx0ICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gYWpheCBhcHBlbmRlciBjb3VsZCBub3Qgc2VuZCBsb2cgbWVzc2FnZXMgdG8gdGhlIHNlcnZlci5cblx0ICpcblx0ICogQHBhcmFtIG1lc3NhZ2UgZXJyb3IgbWVzc2FnZVxuXHQgKi9cblx0cHVibGljIGFqYXhBcHBlbmRlckZhaWxlZDogRXZlbnRFbWl0dGVyPHN0cmluZz47XG5cblx0cHJpdmF0ZSBtZW1vcnlBcHBlbmRlcjogTWVtb3J5QXBwZW5kZXI7XG5cdHByaXZhdGUgYnJvd3NlckNvbnNvbGVBcHBlbmRlcjogbG9nNGphdmFzY3JpcHQuQnJvd3NlckNvbnNvbGVBcHBlbmRlcjtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgc2VydmljZS5cblx0ICovXG5cdGNvbnN0cnVjdG9yKCkge1xuXG5cdFx0Ly8gcHJldmVudCBsb2c0amF2YXNjcmlwdCB0byBzaG93IGFsZXJ0cyBvbiBjYXNlIG9mIGVycm9yc1xuXHRcdGxvZzRqYXZhc2NyaXB0LmxvZ0xvZy5zZXRRdWlldE1vZGUodHJ1ZSk7XG5cblx0XHQvLyBjcmVhdGUgZXZlbnQgZW1pdHRlclxuXHRcdHRoaXMubG9nTWVzc2FnZXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXHRcdHRoaXMuYWpheEFwcGVuZGVyRmFpbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cblx0XHQvLyBjb25maWd1cmUgYXBwZW5kZXJcblx0XHRjb25zdCBsb2dnZXIgPSBsb2c0amF2YXNjcmlwdC5nZXRSb290TG9nZ2VyKCk7XG5cdFx0bG9nZ2VyLnNldExldmVsKGxvZzRqYXZhc2NyaXB0LkxldmVsLldBUk4pO1xuXG5cdFx0Ly8gYnJvd3NlciBjb25zb2xlIGFwcGVuZGVyIGZvciBkZWJ1Z2dlclxuXHRcdHRoaXMuYnJvd3NlckNvbnNvbGVBcHBlbmRlciA9IG5ldyBsb2c0amF2YXNjcmlwdC5Ccm93c2VyQ29uc29sZUFwcGVuZGVyKCk7XG5cdFx0dGhpcy5icm93c2VyQ29uc29sZUFwcGVuZGVyLnNldExheW91dChuZXcgbG9nNGphdmFzY3JpcHQuUGF0dGVybkxheW91dChcIiVke0hIOm1tOnNzLFNTU30gJWMgJW1cIikpO1xuXHRcdHRoaXMuYnJvd3NlckNvbnNvbGVBcHBlbmRlci5zZXRUaHJlc2hvbGQobG9nNGphdmFzY3JpcHQuTGV2ZWwuQUxMKTtcblx0XHRsb2dnZXIuYWRkQXBwZW5kZXIodGhpcy5icm93c2VyQ29uc29sZUFwcGVuZGVyKTtcblxuXHRcdC8vIGluLW1lbW9yeSBhcHBlbmRlciBmb3IgZGlzcGxheSBvbiBsb2cgbWVzc2FnZXMgcGFnZVxuXHRcdHRoaXMubWVtb3J5QXBwZW5kZXIgPSBuZXcgTWVtb3J5QXBwZW5kZXIoKTtcblx0XHR0aGlzLm1lbW9yeUFwcGVuZGVyLnNldExheW91dChuZXcgbG9nNGphdmFzY3JpcHQuUGF0dGVybkxheW91dChcIiVke0hIOm1tOnNzLFNTU30gJWMgJW1cIikpO1xuXHRcdHRoaXMubWVtb3J5QXBwZW5kZXIuc2V0T25Mb2dNZXNzYWdlc0NoYW5nZWRDYWxsYmFjaygobWVzc2FnZSkgPT4ge1xuXHRcdFx0dGhpcy5sb2dNZXNzYWdlc0NoYW5nZWQuZW1pdCgpO1xuXHRcdH0pO1xuXHRcdGxvZ2dlci5hZGRBcHBlbmRlcih0aGlzLm1lbW9yeUFwcGVuZGVyKTtcblxuXHRcdHRoaXMuY29uZmlndXJlKCk7XG5cdH1cblxuXHQvKipcblx0ICogQ29uZmlndXJlcyB0aGUgbG9nZ2luZyBkZXBlbmRpbmcgb24gdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSBjb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gZGF0YS5cblx0ICovXG5cdHB1YmxpYyBjb25maWd1cmUoY29uZmlndXJhdGlvbj86IExvZ2dpbmdTZXJ2aWNlQ29uZmlndXJhdGlvbik6IHZvaWQge1xuXG5cdFx0aWYgKHR5cGVvZiBjb25maWd1cmF0aW9uID09PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0XHRjb25maWd1cmF0aW9uID0ge307XG5cdFx0fVxuXG5cdFx0Ly8gc2V0IGxvZyBsZXZlbHNcblx0XHRpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24ubG9nTGV2ZWxzICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGxldmVsIG9mIGNvbmZpZ3VyYXRpb24ubG9nTGV2ZWxzKSB7XG5cdFx0XHRcdGxldCBsb2dnZXI6IGxvZzRqYXZhc2NyaXB0LkxvZ2dlcjtcblx0XHRcdFx0aWYgKGxldmVsLmxvZ2dlck5hbWUgPT09IFwicm9vdFwiKSB7XG5cdFx0XHRcdFx0bG9nZ2VyID0gbG9nNGphdmFzY3JpcHQuZ2V0Um9vdExvZ2dlcigpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxvZ2dlciA9IGxvZzRqYXZhc2NyaXB0LmdldExvZ2dlcihsZXZlbC5sb2dnZXJOYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGxvZ2dlci5zZXRMZXZlbChMb2dMZXZlbENvbnZlcnRlci5sZXZlbFRvTG9nNEphdmFzY3JpcHQoTG9nTGV2ZWxDb252ZXJ0ZXIubGV2ZWxGcm9tU3RyaW5nKGxldmVsLmxvZ0xldmVsKSkpO1xuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGxvZyBsZXZlbCAke2xldmVsLmxvZ0xldmVsfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gY29uZmlndXJlIEFqYXhBcHBlbmRlclxuXHRcdGlmICh0eXBlb2YgY29uZmlndXJhdGlvbi5hamF4QXBwZW5kZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRcdGNvbnN0IGFqYXhBcHBlbmRlciA9IG5ldyBBamF4QXBwZW5kZXIoY29uZmlndXJhdGlvbi5hamF4QXBwZW5kZXIpO1xuXHRcdFx0YWpheEFwcGVuZGVyLmFwcGVuZGVyRmFpbGVkLnN1YnNjcmliZSgobWVzc2FnZTogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdHRoaXMuYWpheEFwcGVuZGVyRmFpbGVkLmVtaXQobWVzc2FnZSk7XG5cdFx0XHR9KTtcblx0XHRcdGxvZzRqYXZhc2NyaXB0LmdldFJvb3RMb2dnZXIoKS5hZGRBcHBlbmRlcihhamF4QXBwZW5kZXIpO1xuXHRcdH1cblxuXHRcdC8vIGNvbmZpZ3VyZSBMb2NhbFN0b3JhZ2VBcHBlbmRlclxuXHRcdGlmICh0eXBlb2YgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VBcHBlbmRlciAhPT0gXCJ1bmRlZmluZWRcIikge1xuXHRcdFx0Y29uc3QgbG9jYWxTdG9yYWdlQXBwZW5kZXIgPSBuZXcgTG9jYWxTdG9yYWdlQXBwZW5kZXIoY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VBcHBlbmRlcik7XG5cdFx0XHRsb2c0amF2YXNjcmlwdC5nZXRSb290TG9nZ2VyKCkuYWRkQXBwZW5kZXIobG9jYWxTdG9yYWdlQXBwZW5kZXIpO1xuXG5cdFx0XHQvLyBlbnN1cmUgdGhhdCBhbiBldmVudHVhbCBtZW1vcnlBcHBlbmRlciBpcyBiZWhpbmQgdGhlIGxvY2FsU3RvcmFnZUFwcGVuZGVyXG5cdFx0XHRjb25zdCBhcHBlbmRlcnMgPSBuZXcgTG9nZ2VyKCkuZ2V0SW50ZXJuYWxMb2dnZXIoKS5nZXRFZmZlY3RpdmVBcHBlbmRlcnMoKTtcblx0XHRcdGNvbnN0IG1lbW9yeUFwcGVuZGVyID0gYXBwZW5kZXJzLmZpbmQoKGEpID0+IGEudG9TdHJpbmcoKSA9PT0gXCJJb25pYy5Mb2dnaW5nLk1lbW9yeUFwcGVuZGVyXCIpIGFzIE1lbW9yeUFwcGVuZGVyO1xuXHRcdFx0aWYgKG1lbW9yeUFwcGVuZGVyKSB7XG5cdFx0XHRcdGxvZzRqYXZhc2NyaXB0LmdldFJvb3RMb2dnZXIoKS5yZW1vdmVBcHBlbmRlcihtZW1vcnlBcHBlbmRlcik7XG5cdFx0XHRcdGxvZzRqYXZhc2NyaXB0LmdldFJvb3RMb2dnZXIoKS5hZGRBcHBlbmRlcihtZW1vcnlBcHBlbmRlcik7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gY29uZmlndXJlIE1lbW9yeUFwcGVuZGVyXG5cdFx0aWYgKGNvbmZpZ3VyYXRpb24ubWVtb3J5QXBwZW5kZXIpIHtcblx0XHRcdHRoaXMubWVtb3J5QXBwZW5kZXIuY29uZmlndXJlKGNvbmZpZ3VyYXRpb24ubWVtb3J5QXBwZW5kZXIpO1xuXHRcdH1cblxuXHRcdC8vIGNvbmZpZ3VyZSBCcm93c2VyQ29uc29sZUFwcGVuZGVyXG5cdFx0aWYgKGNvbmZpZ3VyYXRpb24uYnJvd3NlckNvbnNvbGVBcHBlbmRlcikge1xuXHRcdFx0aWYgKGNvbmZpZ3VyYXRpb24uYnJvd3NlckNvbnNvbGVBcHBlbmRlci50aHJlc2hvbGQpIHtcblx0XHRcdFx0Y29uc3QgY29udmVydGVkVGhyZXNob2xkID0gTG9nTGV2ZWxDb252ZXJ0ZXIubGV2ZWxUb0xvZzRKYXZhc2NyaXB0KFxuXHRcdFx0XHRcdExvZ0xldmVsQ29udmVydGVyLmxldmVsRnJvbVN0cmluZyhjb25maWd1cmF0aW9uLmJyb3dzZXJDb25zb2xlQXBwZW5kZXIudGhyZXNob2xkKSk7XG5cdFx0XHRcdHRoaXMuYnJvd3NlckNvbnNvbGVBcHBlbmRlci5zZXRUaHJlc2hvbGQoY29udmVydGVkVGhyZXNob2xkKTtcblx0XHRcdH1cblx0XHR9XG5cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSByb290IGxvZ2dlciBmcm9tIHdoaWNoIGFsbCBvdGhlciBsb2dnZXJzIGRlcml2ZS5cblx0ICpcblx0ICogQHJldHVybiByb290IGxvZ2dlclxuXHQgKi9cblx0cHVibGljIGdldFJvb3RMb2dnZXIoKTogTG9nZ2VyIHtcblx0XHRyZXR1cm4gbmV3IExvZ2dlcigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgYSBsb2dnZXIgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUsIGNyZWF0aW5nIGl0IGlmIGEgbG9nZ2VyIHdpdGggdGhhdCBuYW1lIGRvZXMgbm90IGFscmVhZHkgZXhpc3QuXG5cdCAqXG5cdCAqIEBwYXJhbSBsb2dnZXJOYW1lIG5hbWUgb2YgdGhlIGxvZ2dlclxuXHQgKiBAcmV0dXJuIGxvZ2dlclxuXHQgKi9cblx0cHVibGljIGdldExvZ2dlcihsb2dnZXJOYW1lOiBzdHJpbmcpOiBMb2dnZXIge1xuXHRcdHJldHVybiBuZXcgTG9nZ2VyKGxvZ2dlck5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGxhc3QgbG9nIG1lc3NhZ2VzLlxuXHQgKlxuXHQgKiBUaGUgbG9nIG1lc3NhZ2VzIGFyZSByZXRyaWV2ZWQgZnJvbSB0aGUgaW50ZXJuYWwgW01lbW9yeUFwcGVuZGVyXSguLi9tZW1vcnlhcHBlbmRlci5odG1sKS5cblx0ICogVGhhdCBtZWFucyB5b3Ugd2lsbCBnZXQgb25seSB0aGUgbW9zdCBjdXJyZW50IG1lc3NhZ2VzLiBUaGUgbnVtYmVyIG9mIHRoZSBtZXNzYWdlcyBpcyBsaW1pdGVkXG5cdCAqIGJ5IGl0cyBtYXhNZXNzYWdlcyB2YWx1ZS5cblx0ICpcblx0ICogQHJldHVybiBsb2cgbWVzc2FnZXNcblx0ICovXG5cdHB1YmxpYyBnZXRMb2dNZXNzYWdlcygpOiBMb2dNZXNzYWdlW10ge1xuXHRcdHJldHVybiB0aGlzLm1lbW9yeUFwcGVuZGVyLmdldExvZ01lc3NhZ2VzKCk7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZHMgdGhlIGxvZyBtZXNzYWdlcyB3cml0dGVuIGJ5IHRoZSBMb2NhbFN0b3JhZ2VBcHBlbmRlciB3aXRoIHRoZSBnaXZlbiBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSBsb2NhbFN0b3JhZ2VLZXkga2V5IGZvciB0aGUgbG9jYWwgc3RvcmFnZVxuXHQgKiBAcmV0dXJucyBsb2cgbWVzc2FnZXNcblx0ICovXG5cdHB1YmxpYyBnZXRMb2dNZXNzYWdlc0Zyb21Mb2NhbFN0b3JhZ2UobG9jYWxTdG9yYWdlS2V5OiBzdHJpbmcpOiBMb2dNZXNzYWdlW10ge1xuXHRcdHJldHVybiBMb2NhbFN0b3JhZ2VBcHBlbmRlci5sb2FkTG9nTWVzc2FnZXMobG9jYWxTdG9yYWdlS2V5KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmUgYWxsIGxvZyBtZXNzYWdlcy5cblx0ICovXG5cdHB1YmxpYyByZW1vdmVMb2dNZXNzYWdlcygpOiB2b2lkIHtcblx0XHR0aGlzLm1lbW9yeUFwcGVuZGVyLnJlbW92ZUxvZ01lc3NhZ2VzKCk7XG5cdFx0dGhpcy5sb2dNZXNzYWdlc0NoYW5nZWQuZW1pdCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgdGhlIGxvZyBtZXNzYWdlcyB3cml0dGVuIGJ5IHRoZSBMb2NhbFN0b3JhZ2VBcHBlbmRlciB3aXRoIHRoZSBnaXZlbiBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSBsb2NhbFN0b3JhZ2VLZXkga2V5IGZvciB0aGUgbG9jYWwgc3RvcmFnZVxuXHQgKi9cblx0cHVibGljIHJlbW92ZUxvZ01lc3NhZ2VzRnJvbUxvY2FsU3RvcmFnZShsb2NhbFN0b3JhZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xuXHRcdExvY2FsU3RvcmFnZUFwcGVuZGVyLnJlbW92ZUxvZ01lc3NhZ2VzKGxvY2FsU3RvcmFnZUtleSk7XG5cdFx0dGhpcy5sb2dNZXNzYWdlc0NoYW5nZWQuZW1pdCgpO1xuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import * as log4javascript from "log4javascript";
|
|
2
|
+
import { LogLevelConverter } from "./log-level.converter";
|
|
3
|
+
import { LogLevel } from "./log-level.model";
|
|
4
|
+
/**
|
|
5
|
+
* An appender which stores the log messages in the browser's memory.
|
|
6
|
+
*
|
|
7
|
+
* The MemoryAppender is enabled by default.
|
|
8
|
+
* If you do not specify anything else, it is using this configuration:
|
|
9
|
+
*
|
|
10
|
+
* ```JSON
|
|
11
|
+
* {
|
|
12
|
+
* "memoryAppender": [
|
|
13
|
+
* {
|
|
14
|
+
* "maxMessages": 250,
|
|
15
|
+
* "threshold": "ALL"
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export class MemoryAppender extends log4javascript.Appender {
|
|
21
|
+
static { this.maxMessagesDefault = 250; }
|
|
22
|
+
static { this.thresholdDefault = "ALL"; }
|
|
23
|
+
/**
|
|
24
|
+
* Creates a new instance of the appender.
|
|
25
|
+
*
|
|
26
|
+
* @param configuration configuration for the appender.
|
|
27
|
+
*/
|
|
28
|
+
constructor(configuration) {
|
|
29
|
+
super();
|
|
30
|
+
this.logMessages = [];
|
|
31
|
+
// process configuration
|
|
32
|
+
configuration = configuration || {};
|
|
33
|
+
this.configure({
|
|
34
|
+
maxMessages: configuration.maxMessages || MemoryAppender.maxMessagesDefault,
|
|
35
|
+
threshold: configuration.threshold || MemoryAppender.thresholdDefault,
|
|
36
|
+
});
|
|
37
|
+
this.maxMessages = MemoryAppender.maxMessagesDefault;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Configures the logging depending on the given configuration.
|
|
41
|
+
* Only the defined properties get overwritten.
|
|
42
|
+
*
|
|
43
|
+
* @param configuration configuration data.
|
|
44
|
+
*/
|
|
45
|
+
configure(configuration) {
|
|
46
|
+
if (configuration) {
|
|
47
|
+
if (configuration.maxMessages) {
|
|
48
|
+
this.setMaxMessages(configuration.maxMessages);
|
|
49
|
+
}
|
|
50
|
+
if (configuration.threshold) {
|
|
51
|
+
const convertedThreshold = LogLevelConverter.levelToLog4Javascript(LogLevelConverter.levelFromString(configuration.threshold));
|
|
52
|
+
this.setThreshold(convertedThreshold);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Appender-specific method to append a log message.
|
|
58
|
+
*
|
|
59
|
+
* @param loggingEvent event to be appended.
|
|
60
|
+
*/
|
|
61
|
+
append(loggingEvent) {
|
|
62
|
+
// if logMessages is already full, remove oldest element
|
|
63
|
+
while (this.logMessages.length >= this.maxMessages) {
|
|
64
|
+
this.logMessages.shift();
|
|
65
|
+
}
|
|
66
|
+
// add event to logMessages
|
|
67
|
+
const message = {
|
|
68
|
+
level: LogLevel[LogLevelConverter.levelFromLog4Javascript(loggingEvent.level)],
|
|
69
|
+
logger: typeof loggingEvent.logger === "object" ? loggingEvent.logger.name : undefined,
|
|
70
|
+
message: loggingEvent.messages.slice(1),
|
|
71
|
+
methodName: loggingEvent.messages[0],
|
|
72
|
+
timeStamp: loggingEvent.timeStamp,
|
|
73
|
+
};
|
|
74
|
+
this.logMessages.push(message);
|
|
75
|
+
// inform about new message
|
|
76
|
+
if (typeof this.onLogMessagesChangedCallback === "function") {
|
|
77
|
+
this.onLogMessagesChangedCallback(message);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Gets the appender's name.
|
|
82
|
+
* Mainly for unit testing purposes.
|
|
83
|
+
*
|
|
84
|
+
* @return appender's name
|
|
85
|
+
*/
|
|
86
|
+
toString() {
|
|
87
|
+
return "Ionic.Logging.MemoryAppender";
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get the maximum number of messages which will be stored in memory.
|
|
91
|
+
*/
|
|
92
|
+
getMaxMessages() {
|
|
93
|
+
return this.maxMessages;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Set the maximum number of messages which will be stored in memory.
|
|
97
|
+
*
|
|
98
|
+
* If the appender stores currently more messages than the new value allows, the oldest messages get removed.
|
|
99
|
+
*
|
|
100
|
+
* @param value new maximum number
|
|
101
|
+
*/
|
|
102
|
+
setMaxMessages(value) {
|
|
103
|
+
this.maxMessages = value;
|
|
104
|
+
// if there are too much logMessages for the new value, remove oldest messages
|
|
105
|
+
if (this.logMessages.length > this.maxMessages) {
|
|
106
|
+
this.logMessages.splice(0, this.logMessages.length - this.maxMessages);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Gets all messages stored in memory.
|
|
111
|
+
*
|
|
112
|
+
* @return stored messages
|
|
113
|
+
*/
|
|
114
|
+
getLogMessages() {
|
|
115
|
+
return this.logMessages;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Remove all messages stored in memory.
|
|
119
|
+
*/
|
|
120
|
+
removeLogMessages() {
|
|
121
|
+
this.logMessages.splice(0);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Registers a callback which will be called every time a new message is appended.
|
|
125
|
+
* This could be useful if you want to show new messages in realtime.
|
|
126
|
+
*
|
|
127
|
+
* @param callback callback to be called
|
|
128
|
+
*/
|
|
129
|
+
setOnLogMessagesChangedCallback(callback) {
|
|
130
|
+
this.onLogMessagesChangedCallback = callback;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWFwcGVuZGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW9uaWMtbG9nZ2luZy1zZXJ2aWNlL3NyYy9saWIvbWVtb3J5LWFwcGVuZGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxjQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSTdDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sT0FBTyxjQUFlLFNBQVEsY0FBYyxDQUFDLFFBQVE7YUFFM0MsdUJBQWtCLEdBQUcsR0FBRyxDQUFDO2FBQ3pCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztJQU94Qzs7OztPQUlHO0lBQ0gsWUFBWSxhQUEyQztRQUN0RCxLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXRCLHdCQUF3QjtRQUN4QixhQUFhLEdBQUcsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2QsV0FBVyxFQUFFLGFBQWEsQ0FBQyxXQUFXLElBQUksY0FBYyxDQUFDLGtCQUFrQjtZQUMzRSxTQUFTLEVBQUUsYUFBYSxDQUFDLFNBQVMsSUFBSSxjQUFjLENBQUMsZ0JBQWdCO1NBQ3JFLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLGtCQUFrQixDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFNBQVMsQ0FBQyxhQUEwQztRQUMxRCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ25CLElBQUksYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBQ0QsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sa0JBQWtCLEdBQUcsaUJBQWlCLENBQUMscUJBQXFCLENBQ2pFLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsWUFBeUM7UUFDdEQsd0RBQXdEO1FBQ3hELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUNELDJCQUEyQjtRQUMzQixNQUFNLE9BQU8sR0FBZTtZQUMzQixLQUFLLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5RSxNQUFNLEVBQUUsT0FBTyxZQUFZLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdEYsT0FBTyxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN2QyxVQUFVLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDcEMsU0FBUyxFQUFFLFlBQVksQ0FBQyxTQUFTO1NBQ2pDLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUvQiwyQkFBMkI7UUFDM0IsSUFBSSxPQUFPLElBQUksQ0FBQyw0QkFBNEIsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM3RCxJQUFJLENBQUMsNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVE7UUFDZCxPQUFPLDhCQUE4QixDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWM7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxjQUFjLENBQUMsS0FBYTtRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUV6Qiw4RUFBOEU7UUFDOUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksK0JBQStCLENBQUMsUUFBdUM7UUFDN0UsSUFBSSxDQUFDLDRCQUE0QixHQUFHLFFBQVEsQ0FBQztJQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbG9nNGphdmFzY3JpcHQgZnJvbSBcImxvZzRqYXZhc2NyaXB0XCI7XG5cbmltcG9ydCB7IExvZ0xldmVsQ29udmVydGVyIH0gZnJvbSBcIi4vbG9nLWxldmVsLmNvbnZlcnRlclwiO1xuaW1wb3J0IHsgTG9nTGV2ZWwgfSBmcm9tIFwiLi9sb2ctbGV2ZWwubW9kZWxcIjtcbmltcG9ydCB7IExvZ01lc3NhZ2UgfSBmcm9tIFwiLi9sb2ctbWVzc2FnZS5tb2RlbFwiO1xuaW1wb3J0IHsgTWVtb3J5QXBwZW5kZXJDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vbWVtb3J5LWFwcGVuZGVyLmNvbmZpZ3VyYXRpb25cIjtcblxuLyoqXG4gKiBBbiBhcHBlbmRlciB3aGljaCBzdG9yZXMgdGhlIGxvZyBtZXNzYWdlcyBpbiB0aGUgYnJvd3NlcidzIG1lbW9yeS5cbiAqXG4gKiBUaGUgTWVtb3J5QXBwZW5kZXIgaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuICogSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGFueXRoaW5nIGVsc2UsIGl0IGlzIHVzaW5nIHRoaXMgY29uZmlndXJhdGlvbjpcbiAqXG4gKiBgYGBKU09OXG4gKiB7XG4gKiAgIFwibWVtb3J5QXBwZW5kZXJcIjogW1xuICogICAgIHtcbiAqICAgICAgIFwibWF4TWVzc2FnZXNcIjogMjUwLFxuICogICAgICAgXCJ0aHJlc2hvbGRcIjogXCJBTExcIlxuICogICAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgTWVtb3J5QXBwZW5kZXIgZXh0ZW5kcyBsb2c0amF2YXNjcmlwdC5BcHBlbmRlciB7XG5cblx0cHJpdmF0ZSBzdGF0aWMgbWF4TWVzc2FnZXNEZWZhdWx0ID0gMjUwO1xuXHRwcml2YXRlIHN0YXRpYyB0aHJlc2hvbGREZWZhdWx0ID0gXCJBTExcIjtcblxuXHRwcml2YXRlIG1heE1lc3NhZ2VzOiBudW1iZXI7XG5cblx0cHJpdmF0ZSBsb2dNZXNzYWdlczogTG9nTWVzc2FnZVtdO1xuXHRwcml2YXRlIG9uTG9nTWVzc2FnZXNDaGFuZ2VkQ2FsbGJhY2s6IChtZXNzYWdlOiBMb2dNZXNzYWdlKSA9PiB2b2lkO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBhcHBlbmRlci5cblx0ICpcblx0ICogQHBhcmFtIGNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIGFwcGVuZGVyLlxuXHQgKi9cblx0Y29uc3RydWN0b3IoY29uZmlndXJhdGlvbj86IE1lbW9yeUFwcGVuZGVyQ29uZmlndXJhdGlvbikge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLmxvZ01lc3NhZ2VzID0gW107XG5cblx0XHQvLyBwcm9jZXNzIGNvbmZpZ3VyYXRpb25cblx0XHRjb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbiB8fCB7fTtcblx0XHR0aGlzLmNvbmZpZ3VyZSh7XG5cdFx0XHRtYXhNZXNzYWdlczogY29uZmlndXJhdGlvbi5tYXhNZXNzYWdlcyB8fCBNZW1vcnlBcHBlbmRlci5tYXhNZXNzYWdlc0RlZmF1bHQsXG5cdFx0XHR0aHJlc2hvbGQ6IGNvbmZpZ3VyYXRpb24udGhyZXNob2xkIHx8IE1lbW9yeUFwcGVuZGVyLnRocmVzaG9sZERlZmF1bHQsXG5cdFx0fSk7XG5cblx0XHR0aGlzLm1heE1lc3NhZ2VzID0gTWVtb3J5QXBwZW5kZXIubWF4TWVzc2FnZXNEZWZhdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbmZpZ3VyZXMgdGhlIGxvZ2dpbmcgZGVwZW5kaW5nIG9uIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLlxuXHQgKiBPbmx5IHRoZSBkZWZpbmVkIHByb3BlcnRpZXMgZ2V0IG92ZXJ3cml0dGVuLlxuXHQgKlxuXHQgKiBAcGFyYW0gY29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uIGRhdGEuXG5cdCAqL1xuXHRwdWJsaWMgY29uZmlndXJlKGNvbmZpZ3VyYXRpb246IE1lbW9yeUFwcGVuZGVyQ29uZmlndXJhdGlvbik6IHZvaWQge1xuXHRcdGlmIChjb25maWd1cmF0aW9uKSB7XG5cdFx0XHRpZiAoY29uZmlndXJhdGlvbi5tYXhNZXNzYWdlcykge1xuXHRcdFx0XHR0aGlzLnNldE1heE1lc3NhZ2VzKGNvbmZpZ3VyYXRpb24ubWF4TWVzc2FnZXMpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGNvbmZpZ3VyYXRpb24udGhyZXNob2xkKSB7XG5cdFx0XHRcdGNvbnN0IGNvbnZlcnRlZFRocmVzaG9sZCA9IExvZ0xldmVsQ29udmVydGVyLmxldmVsVG9Mb2c0SmF2YXNjcmlwdChcblx0XHRcdFx0XHRMb2dMZXZlbENvbnZlcnRlci5sZXZlbEZyb21TdHJpbmcoY29uZmlndXJhdGlvbi50aHJlc2hvbGQpKTtcblx0XHRcdFx0dGhpcy5zZXRUaHJlc2hvbGQoY29udmVydGVkVGhyZXNob2xkKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQXBwZW5kZXItc3BlY2lmaWMgbWV0aG9kIHRvIGFwcGVuZCBhIGxvZyBtZXNzYWdlLlxuXHQgKlxuXHQgKiBAcGFyYW0gbG9nZ2luZ0V2ZW50IGV2ZW50IHRvIGJlIGFwcGVuZGVkLlxuXHQgKi9cblx0cHVibGljIGFwcGVuZChsb2dnaW5nRXZlbnQ6IGxvZzRqYXZhc2NyaXB0LkxvZ2dpbmdFdmVudCk6IHZvaWQge1xuXHRcdC8vIGlmIGxvZ01lc3NhZ2VzIGlzIGFscmVhZHkgZnVsbCwgcmVtb3ZlIG9sZGVzdCBlbGVtZW50XG5cdFx0d2hpbGUgKHRoaXMubG9nTWVzc2FnZXMubGVuZ3RoID49IHRoaXMubWF4TWVzc2FnZXMpIHtcblx0XHRcdHRoaXMubG9nTWVzc2FnZXMuc2hpZnQoKTtcblx0XHR9XG5cdFx0Ly8gYWRkIGV2ZW50IHRvIGxvZ01lc3NhZ2VzXG5cdFx0Y29uc3QgbWVzc2FnZTogTG9nTWVzc2FnZSA9IHtcblx0XHRcdGxldmVsOiBMb2dMZXZlbFtMb2dMZXZlbENvbnZlcnRlci5sZXZlbEZyb21Mb2c0SmF2YXNjcmlwdChsb2dnaW5nRXZlbnQubGV2ZWwpXSxcblx0XHRcdGxvZ2dlcjogdHlwZW9mIGxvZ2dpbmdFdmVudC5sb2dnZXIgPT09IFwib2JqZWN0XCIgPyBsb2dnaW5nRXZlbnQubG9nZ2VyLm5hbWUgOiB1bmRlZmluZWQsXG5cdFx0XHRtZXNzYWdlOiBsb2dnaW5nRXZlbnQubWVzc2FnZXMuc2xpY2UoMSksXG5cdFx0XHRtZXRob2ROYW1lOiBsb2dnaW5nRXZlbnQubWVzc2FnZXNbMF0sXG5cdFx0XHR0aW1lU3RhbXA6IGxvZ2dpbmdFdmVudC50aW1lU3RhbXAsXG5cdFx0fTtcblx0XHR0aGlzLmxvZ01lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XG5cblx0XHQvLyBpbmZvcm0gYWJvdXQgbmV3IG1lc3NhZ2Vcblx0XHRpZiAodHlwZW9mIHRoaXMub25Mb2dNZXNzYWdlc0NoYW5nZWRDYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHR0aGlzLm9uTG9nTWVzc2FnZXNDaGFuZ2VkQ2FsbGJhY2sobWVzc2FnZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGFwcGVuZGVyJ3MgbmFtZS5cblx0ICogTWFpbmx5IGZvciB1bml0IHRlc3RpbmcgcHVycG9zZXMuXG5cdCAqXG5cdCAqIEByZXR1cm4gYXBwZW5kZXIncyBuYW1lXG5cdCAqL1xuXHRwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gXCJJb25pYy5Mb2dnaW5nLk1lbW9yeUFwcGVuZGVyXCI7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBtZXNzYWdlcyB3aGljaCB3aWxsIGJlIHN0b3JlZCBpbiBtZW1vcnkuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TWF4TWVzc2FnZXMoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5tYXhNZXNzYWdlcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1lc3NhZ2VzIHdoaWNoIHdpbGwgYmUgc3RvcmVkIGluIG1lbW9yeS5cblx0ICpcblx0ICogSWYgdGhlIGFwcGVuZGVyIHN0b3JlcyBjdXJyZW50bHkgbW9yZSBtZXNzYWdlcyB0aGFuIHRoZSBuZXcgdmFsdWUgYWxsb3dzLCB0aGUgb2xkZXN0IG1lc3NhZ2VzIGdldCByZW1vdmVkLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWUgbmV3IG1heGltdW0gbnVtYmVyXG5cdCAqL1xuXHRwdWJsaWMgc2V0TWF4TWVzc2FnZXModmFsdWU6IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMubWF4TWVzc2FnZXMgPSB2YWx1ZTtcblxuXHRcdC8vIGlmIHRoZXJlIGFyZSB0b28gbXVjaCBsb2dNZXNzYWdlcyBmb3IgdGhlIG5ldyB2YWx1ZSwgcmVtb3ZlIG9sZGVzdCBtZXNzYWdlc1xuXHRcdGlmICh0aGlzLmxvZ01lc3NhZ2VzLmxlbmd0aCA+IHRoaXMubWF4TWVzc2FnZXMpIHtcblx0XHRcdHRoaXMubG9nTWVzc2FnZXMuc3BsaWNlKDAsIHRoaXMubG9nTWVzc2FnZXMubGVuZ3RoIC0gdGhpcy5tYXhNZXNzYWdlcyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgYWxsIG1lc3NhZ2VzIHN0b3JlZCBpbiBtZW1vcnkuXG5cdCAqXG5cdCAqIEByZXR1cm4gc3RvcmVkIG1lc3NhZ2VzXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TG9nTWVzc2FnZXMoKTogTG9nTWVzc2FnZVtdIHtcblx0XHRyZXR1cm4gdGhpcy5sb2dNZXNzYWdlcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmUgYWxsIG1lc3NhZ2VzIHN0b3JlZCBpbiBtZW1vcnkuXG5cdCAqL1xuXHRwdWJsaWMgcmVtb3ZlTG9nTWVzc2FnZXMoKTogdm9pZCB7XG5cdFx0dGhpcy5sb2dNZXNzYWdlcy5zcGxpY2UoMCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgd2hpY2ggd2lsbCBiZSBjYWxsZWQgZXZlcnkgdGltZSBhIG5ldyBtZXNzYWdlIGlzIGFwcGVuZGVkLlxuXHQgKiBUaGlzIGNvdWxkIGJlIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzaG93IG5ldyBtZXNzYWdlcyBpbiByZWFsdGltZS5cblx0ICpcblx0ICogQHBhcmFtIGNhbGxiYWNrIGNhbGxiYWNrIHRvIGJlIGNhbGxlZFxuXHQgKi9cblx0cHVibGljIHNldE9uTG9nTWVzc2FnZXNDaGFuZ2VkQ2FsbGJhY2soY2FsbGJhY2s6IChtZXNzYWdlOiBMb2dNZXNzYWdlKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0dGhpcy5vbkxvZ01lc3NhZ2VzQ2hhbmdlZENhbGxiYWNrID0gY2FsbGJhY2s7XG5cdH1cbn1cbiJdfQ==
|