@decaf-ts/logging 0.3.8 → 0.3.9
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/dist/logging.cjs +587 -105
- package/dist/logging.esm.cjs +567 -102
- package/lib/constants.cjs +15 -6
- package/lib/constants.d.ts +7 -0
- package/lib/decorators.cjs +44 -27
- package/lib/decorators.d.ts +9 -0
- package/lib/environment.cjs +204 -0
- package/lib/environment.d.ts +86 -0
- package/lib/esm/constants.d.ts +7 -0
- package/lib/esm/constants.js +14 -5
- package/lib/esm/decorators.d.ts +9 -0
- package/lib/esm/decorators.js +43 -27
- package/lib/esm/environment.d.ts +86 -0
- package/lib/esm/environment.js +200 -0
- package/lib/esm/filters/LogFilter.d.ts +6 -0
- package/lib/esm/filters/LogFilter.js +7 -0
- package/lib/esm/filters/PatternFilter.d.ts +10 -0
- package/lib/esm/filters/PatternFilter.js +43 -0
- package/lib/esm/filters/index.d.ts +2 -0
- package/lib/esm/filters/index.js +3 -0
- package/lib/esm/index.d.ts +5 -2
- package/lib/esm/index.js +6 -3
- package/lib/esm/logging.d.ts +10 -11
- package/lib/esm/logging.js +38 -27
- package/lib/esm/text.d.ts +156 -0
- package/lib/esm/text.js +214 -0
- package/lib/esm/types.d.ts +31 -5
- package/lib/esm/types.js +1 -1
- package/lib/esm/web.d.ts +8 -0
- package/lib/esm/web.js +12 -0
- package/lib/esm/winston/winston.d.ts +2 -2
- package/lib/esm/winston/winston.js +4 -4
- package/lib/filters/LogFilter.cjs +11 -0
- package/lib/filters/LogFilter.d.ts +6 -0
- package/lib/filters/PatternFilter.cjs +47 -0
- package/lib/filters/PatternFilter.d.ts +10 -0
- package/lib/filters/index.cjs +19 -0
- package/lib/filters/index.d.ts +2 -0
- package/lib/index.cjs +6 -3
- package/lib/index.d.ts +5 -2
- package/lib/logging.cjs +37 -26
- package/lib/logging.d.ts +10 -11
- package/lib/text.cjs +227 -0
- package/lib/text.d.ts +156 -0
- package/lib/types.cjs +1 -1
- package/lib/types.d.ts +31 -5
- package/lib/web.cjs +15 -0
- package/lib/web.d.ts +8 -0
- package/lib/winston/winston.cjs +4 -4
- package/lib/winston/winston.d.ts +2 -2
- package/package.json +12 -3
- package/lib/esm/utils.d.ts +0 -12
- package/lib/esm/utils.js +0 -31
- package/lib/utils.cjs +0 -34
- package/lib/utils.d.ts +0 -12
package/lib/text.cjs
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stringFormat = void 0;
|
|
4
|
+
exports.padEnd = padEnd;
|
|
5
|
+
exports.patchPlaceholders = patchPlaceholders;
|
|
6
|
+
exports.patchString = patchString;
|
|
7
|
+
exports.toCamelCase = toCamelCase;
|
|
8
|
+
exports.toENVFormat = toENVFormat;
|
|
9
|
+
exports.toSnakeCase = toSnakeCase;
|
|
10
|
+
exports.toKebabCase = toKebabCase;
|
|
11
|
+
exports.toPascalCase = toPascalCase;
|
|
12
|
+
exports.escapeRegExp = escapeRegExp;
|
|
13
|
+
exports.sf = sf;
|
|
14
|
+
const constants_1 = require("./constants.cjs");
|
|
15
|
+
/**
|
|
16
|
+
* @description Pads the end of a string with a specified character.
|
|
17
|
+
* @summary Extends the input string to a specified length by adding a padding character to the end.
|
|
18
|
+
* If the input string is already longer than the specified length, it is returned unchanged.
|
|
19
|
+
*
|
|
20
|
+
* @param {string} str - The input string to be padded.
|
|
21
|
+
* @param {number} length - The desired total length of the resulting string.
|
|
22
|
+
* @param {string} [char=" "] - The character to use for padding. Defaults to a space.
|
|
23
|
+
* @return {string} The padded string.
|
|
24
|
+
* @throws {Error} If the padding character is not exactly one character long.
|
|
25
|
+
*
|
|
26
|
+
* @function padEnd
|
|
27
|
+
*
|
|
28
|
+
* @memberOf module:Logging
|
|
29
|
+
*/
|
|
30
|
+
function padEnd(str, length, char = " ") {
|
|
31
|
+
if (char.length !== 1)
|
|
32
|
+
throw new Error("Invalid character length for padding. must be one!");
|
|
33
|
+
return str.padEnd(length, char);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @description Replaces placeholders in a string with provided values.
|
|
37
|
+
* @summary Interpolates a string by replacing placeholders of the form ${variableName}
|
|
38
|
+
* with corresponding values from the provided object. If a placeholder doesn't have
|
|
39
|
+
* a corresponding value, it is left unchanged in the string.
|
|
40
|
+
*
|
|
41
|
+
* @param {string} input - The input string containing placeholders to be replaced.
|
|
42
|
+
* @param {Record<string, number | string>} values - An object containing key-value pairs for replacement.
|
|
43
|
+
* @param prefix
|
|
44
|
+
* @param suffix
|
|
45
|
+
* @param flags
|
|
46
|
+
* @return {string} The interpolated string with placeholders replaced by their corresponding values.
|
|
47
|
+
*
|
|
48
|
+
* @function patchPlaceholders
|
|
49
|
+
*
|
|
50
|
+
* @mermaid
|
|
51
|
+
* sequenceDiagram
|
|
52
|
+
* participant Caller
|
|
53
|
+
* participant patchString
|
|
54
|
+
* participant String.replace
|
|
55
|
+
* Caller->>patchString: Call with input and values
|
|
56
|
+
* patchString->>String.replace: Call with regex and replacement function
|
|
57
|
+
* String.replace->>patchString: Return replaced string
|
|
58
|
+
* patchString-->>Caller: Return patched string
|
|
59
|
+
*
|
|
60
|
+
* @memberOf module:Logging
|
|
61
|
+
*/
|
|
62
|
+
function patchPlaceholders(input, values, prefix = constants_1.DefaultPlaceholderWrappers[0], suffix = constants_1.DefaultPlaceholderWrappers[1], flags = "g") {
|
|
63
|
+
const placeholders = Object.entries(values).reduce((acc, [key, val]) => {
|
|
64
|
+
acc[`${prefix}${key}${suffix}`] = val;
|
|
65
|
+
return acc;
|
|
66
|
+
}, {});
|
|
67
|
+
return patchString(input, placeholders, flags);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* @description Replaces occurrences of keys with their corresponding values in a string.
|
|
71
|
+
* @summary Iterates through a set of key-value pairs and replaces all occurrences of each key
|
|
72
|
+
* in the input string with its corresponding value. Supports regular expression flags for customized replacement.
|
|
73
|
+
*
|
|
74
|
+
* @param {string} input - The input string in which replacements will be made.
|
|
75
|
+
* @param {Record<string, number | string>} values - An object containing key-value pairs for replacement.
|
|
76
|
+
* @param {string} [flags="g"] - Regular expression flags to control the replacement behavior.
|
|
77
|
+
* @return {string} The string with all specified replacements applied.
|
|
78
|
+
*
|
|
79
|
+
* @function patchString
|
|
80
|
+
*
|
|
81
|
+
* @memberOf module:Logging
|
|
82
|
+
*/
|
|
83
|
+
function patchString(input, values, flags = "g") {
|
|
84
|
+
Object.entries(values).forEach(([key, val]) => {
|
|
85
|
+
const regexp = new RegExp(escapeRegExp(key), flags);
|
|
86
|
+
input = input.replace(regexp, val);
|
|
87
|
+
});
|
|
88
|
+
return input;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @description Converts a string to camelCase.
|
|
92
|
+
* @summary Transforms the input string into camelCase format, where words are joined without spaces
|
|
93
|
+
* and each word after the first starts with a capital letter.
|
|
94
|
+
*
|
|
95
|
+
* @param {string} text - The input string to be converted.
|
|
96
|
+
* @return {string} The input string converted to camelCase.
|
|
97
|
+
*
|
|
98
|
+
* @function toCamelCase
|
|
99
|
+
*
|
|
100
|
+
* @memberOf module:Logging
|
|
101
|
+
*/
|
|
102
|
+
function toCamelCase(text) {
|
|
103
|
+
return text
|
|
104
|
+
.replace(/(?:^\w|[A-Z]|\b\w)/g, (word, index) => index === 0 ? word.toLowerCase() : word.toUpperCase())
|
|
105
|
+
.replace(/\s+/g, "");
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* @description Converts a string to ENVIRONMENT_VARIABLE format.
|
|
109
|
+
* @summary Transforms the input string into uppercase with words separated by underscores,
|
|
110
|
+
* typically used for environment variable names.
|
|
111
|
+
*
|
|
112
|
+
* @param {string} text - The input string to be converted.
|
|
113
|
+
* @return {string} The input string converted to ENVIRONMENT_VARIABLE format.
|
|
114
|
+
*
|
|
115
|
+
* @function toENVFormat
|
|
116
|
+
*
|
|
117
|
+
* @memberOf module:Logging
|
|
118
|
+
*/
|
|
119
|
+
function toENVFormat(text) {
|
|
120
|
+
return toSnakeCase(text).toUpperCase();
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* @description Converts a string to snake_case.
|
|
124
|
+
* @summary Transforms the input string into lowercase with words separated by underscores.
|
|
125
|
+
*
|
|
126
|
+
* @param {string} text - The input string to be converted.
|
|
127
|
+
* @return {string} The input string converted to snake_case.
|
|
128
|
+
*
|
|
129
|
+
* @function toSnakeCase
|
|
130
|
+
*
|
|
131
|
+
* @memberOf module:Logging
|
|
132
|
+
*/
|
|
133
|
+
function toSnakeCase(text) {
|
|
134
|
+
return text
|
|
135
|
+
.replace(/([a-z])([A-Z])/g, "$1_$2")
|
|
136
|
+
.replace(/[\s-]+/g, "_")
|
|
137
|
+
.toLowerCase();
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* @description Converts a string to kebab-case.
|
|
141
|
+
* @summary Transforms the input string into lowercase with words separated by hyphens.
|
|
142
|
+
*
|
|
143
|
+
* @param {string} text - The input string to be converted.
|
|
144
|
+
* @return {string} The input string converted to kebab-case.
|
|
145
|
+
*
|
|
146
|
+
* @function toKebabCase
|
|
147
|
+
*
|
|
148
|
+
* @memberOf module:Logging
|
|
149
|
+
*/
|
|
150
|
+
function toKebabCase(text) {
|
|
151
|
+
return text
|
|
152
|
+
.replace(/([a-z])([A-Z])/g, "$1-$2")
|
|
153
|
+
.replace(/[\s_]+/g, "-")
|
|
154
|
+
.toLowerCase();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* @description Converts a string to PascalCase.
|
|
158
|
+
* @summary Transforms the input string into PascalCase format, where words are joined without spaces
|
|
159
|
+
* and each word starts with a capital letter.
|
|
160
|
+
*
|
|
161
|
+
* @param {string} text - The input string to be converted.
|
|
162
|
+
* @return {string} The input string converted to PascalCase.
|
|
163
|
+
*
|
|
164
|
+
* @function toPascalCase
|
|
165
|
+
*
|
|
166
|
+
* @memberOf module:Logging
|
|
167
|
+
*/
|
|
168
|
+
function toPascalCase(text) {
|
|
169
|
+
return text
|
|
170
|
+
.replace(/(?:^\w|[A-Z]|\b\w)/g, (word) => word.toUpperCase())
|
|
171
|
+
.replace(/\s+/g, "");
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* @description Escapes special characters in a string for use in a regular expression.
|
|
175
|
+
* @summary Adds backslashes before characters that have special meaning in regular expressions,
|
|
176
|
+
* allowing the string to be used as a literal match in a RegExp.
|
|
177
|
+
*
|
|
178
|
+
* @param {string} string - The string to escape for regular expression use.
|
|
179
|
+
* @return {string} The escaped string safe for use in regular expressions.
|
|
180
|
+
*
|
|
181
|
+
* @function escapeRegExp
|
|
182
|
+
*
|
|
183
|
+
* @memberOf module:Logging
|
|
184
|
+
*/
|
|
185
|
+
function escapeRegExp(string) {
|
|
186
|
+
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* @summary Util function to provide string format functionality similar to C#'s string.format
|
|
190
|
+
*
|
|
191
|
+
* @param {string} string
|
|
192
|
+
* @param {Array<string | number> | Record<string, any>} [args] replacements made by order of appearance (replacement0 wil replace {0} and so on)
|
|
193
|
+
* @return {string} formatted string
|
|
194
|
+
*
|
|
195
|
+
* @function sf
|
|
196
|
+
* @memberOf module:Logging
|
|
197
|
+
*/
|
|
198
|
+
function sf(string, ...args) {
|
|
199
|
+
if (args.length > 1) {
|
|
200
|
+
if (!args.every((arg) => typeof arg === "string" || typeof arg === "number"))
|
|
201
|
+
throw new Error(`Only string and number arguments are supported for multiple replacements.`);
|
|
202
|
+
}
|
|
203
|
+
if (args.length === 1 && typeof args[0] === "object") {
|
|
204
|
+
const obj = args[0];
|
|
205
|
+
return Object.entries(obj).reduce((acc, [key, val]) => {
|
|
206
|
+
return acc.replace(new RegExp(`\\{${key}\\}`, "g"), function () {
|
|
207
|
+
return val;
|
|
208
|
+
});
|
|
209
|
+
}, string);
|
|
210
|
+
}
|
|
211
|
+
return string.replace(/{(\d+)}/g, function (match, number) {
|
|
212
|
+
return typeof args[number] !== "undefined"
|
|
213
|
+
? args[number].toString()
|
|
214
|
+
: "undefined";
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* @summary Util function to provide string format functionality similar to C#'s string.format
|
|
219
|
+
*
|
|
220
|
+
* @see sf
|
|
221
|
+
*
|
|
222
|
+
* @deprecated
|
|
223
|
+
* @function stringFormat
|
|
224
|
+
* @memberOf module:Logging
|
|
225
|
+
*/
|
|
226
|
+
exports.stringFormat = sf;
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlCQSx3QkFRQztBQTZCRCw4Q0FlQztBQWdCRCxrQ0FVQztBQWNELGtDQU1DO0FBY0Qsa0NBRUM7QUFhRCxrQ0FLQztBQWFELGtDQUtDO0FBY0Qsb0NBSUM7QUFjRCxvQ0FFQztBQVlELGdCQTJCQztBQWhQRCwrQ0FBeUQ7QUFFekQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxTQUFnQixNQUFNLENBQ3BCLEdBQVcsRUFDWCxNQUFjLEVBQ2QsT0FBZSxHQUFHO0lBRWxCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztJQUN4RSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFDSCxTQUFnQixpQkFBaUIsQ0FDL0IsS0FBYSxFQUNiLE1BQXVDLEVBQ3ZDLFNBQWlCLHNDQUEwQixDQUFDLENBQUMsQ0FBQyxFQUM5QyxTQUFpQixzQ0FBMEIsQ0FBQyxDQUFDLENBQUMsRUFDOUMsUUFBZ0IsR0FBRztJQUVuQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FDaEQsQ0FBQyxHQUF3QixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDdkMsR0FBRyxDQUFDLEdBQUcsTUFBTSxHQUFHLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN0QyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQztJQUNGLE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxTQUFnQixXQUFXLENBQ3pCLEtBQWEsRUFDYixNQUF1QyxFQUN2QyxRQUFnQixHQUFHO0lBRW5CLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEQsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQWEsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixXQUFXLENBQUMsSUFBWTtJQUN0QyxPQUFPLElBQUk7U0FDUixPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDOUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQ3REO1NBQ0EsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixXQUFXLENBQUMsSUFBWTtJQUN0QyxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN6QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxJQUFZO0lBQ3RDLE9BQU8sSUFBSTtTQUNSLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUM7U0FDbkMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUM7U0FDdkIsV0FBVyxFQUFFLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixXQUFXLENBQUMsSUFBWTtJQUN0QyxPQUFPLElBQUk7U0FDUixPQUFPLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDO1NBQ25DLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO1NBQ3ZCLFdBQVcsRUFBRSxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLE9BQU8sSUFBSTtTQUNSLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzVELE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLE1BQWM7SUFDekMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0NBQW9DO0FBQzVGLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixFQUFFLENBQ2hCLE1BQWMsRUFDZCxHQUFHLElBQStDO0lBRWxELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQixJQUNFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQztZQUV4RSxNQUFNLElBQUksS0FBSyxDQUNiLDJFQUEyRSxDQUM1RSxDQUFDO0lBQ04sQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBd0IsQ0FBQztRQUMzQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDcEQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ2xELE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLEtBQUssRUFBRSxNQUFNO1FBQ3ZELE9BQU8sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssV0FBVztZQUN4QyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN6QixDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ1UsUUFBQSxZQUFZLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdFBsYWNlaG9sZGVyV3JhcHBlcnMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUGFkcyB0aGUgZW5kIG9mIGEgc3RyaW5nIHdpdGggYSBzcGVjaWZpZWQgY2hhcmFjdGVyLlxuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgaW5wdXQgc3RyaW5nIHRvIGEgc3BlY2lmaWVkIGxlbmd0aCBieSBhZGRpbmcgYSBwYWRkaW5nIGNoYXJhY3RlciB0byB0aGUgZW5kLlxuICogSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhbHJlYWR5IGxvbmdlciB0aGFuIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIFRoZSBpbnB1dCBzdHJpbmcgdG8gYmUgcGFkZGVkLlxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCAtIFRoZSBkZXNpcmVkIHRvdGFsIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcj1cIiBcIl0gLSBUaGUgY2hhcmFjdGVyIHRvIHVzZSBmb3IgcGFkZGluZy4gRGVmYXVsdHMgdG8gYSBzcGFjZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHBhZGRlZCBzdHJpbmcuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHBhZGRpbmcgY2hhcmFjdGVyIGlzIG5vdCBleGFjdGx5IG9uZSBjaGFyYWN0ZXIgbG9uZy5cbiAqXG4gKiBAZnVuY3Rpb24gcGFkRW5kXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYWRFbmQoXG4gIHN0cjogc3RyaW5nLFxuICBsZW5ndGg6IG51bWJlcixcbiAgY2hhcjogc3RyaW5nID0gXCIgXCJcbik6IHN0cmluZyB7XG4gIGlmIChjaGFyLmxlbmd0aCAhPT0gMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNoYXJhY3RlciBsZW5ndGggZm9yIHBhZGRpbmcuIG11c3QgYmUgb25lIVwiKTtcbiAgcmV0dXJuIHN0ci5wYWRFbmQobGVuZ3RoLCBjaGFyKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVwbGFjZXMgcGxhY2Vob2xkZXJzIGluIGEgc3RyaW5nIHdpdGggcHJvdmlkZWQgdmFsdWVzLlxuICogQHN1bW1hcnkgSW50ZXJwb2xhdGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBwbGFjZWhvbGRlcnMgb2YgdGhlIGZvcm0gJHt2YXJpYWJsZU5hbWV9XG4gKiB3aXRoIGNvcnJlc3BvbmRpbmcgdmFsdWVzIGZyb20gdGhlIHByb3ZpZGVkIG9iamVjdC4gSWYgYSBwbGFjZWhvbGRlciBkb2Vzbid0IGhhdmVcbiAqIGEgY29ycmVzcG9uZGluZyB2YWx1ZSwgaXQgaXMgbGVmdCB1bmNoYW5nZWQgaW4gdGhlIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQgLSBUaGUgaW5wdXQgc3RyaW5nIGNvbnRhaW5pbmcgcGxhY2Vob2xkZXJzIHRvIGJlIHJlcGxhY2VkLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+fSB2YWx1ZXMgLSBBbiBvYmplY3QgY29udGFpbmluZyBrZXktdmFsdWUgcGFpcnMgZm9yIHJlcGxhY2VtZW50LlxuICogQHBhcmFtIHByZWZpeFxuICogQHBhcmFtIHN1ZmZpeFxuICogQHBhcmFtIGZsYWdzXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBpbnRlcnBvbGF0ZWQgc3RyaW5nIHdpdGggcGxhY2Vob2xkZXJzIHJlcGxhY2VkIGJ5IHRoZWlyIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICpcbiAqIEBmdW5jdGlvbiBwYXRjaFBsYWNlaG9sZGVyc1xuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gKiAgIHBhcnRpY2lwYW50IHBhdGNoU3RyaW5nXG4gKiAgIHBhcnRpY2lwYW50IFN0cmluZy5yZXBsYWNlXG4gKiAgIENhbGxlci0+PnBhdGNoU3RyaW5nOiBDYWxsIHdpdGggaW5wdXQgYW5kIHZhbHVlc1xuICogICBwYXRjaFN0cmluZy0+PlN0cmluZy5yZXBsYWNlOiBDYWxsIHdpdGggcmVnZXggYW5kIHJlcGxhY2VtZW50IGZ1bmN0aW9uXG4gKiAgIFN0cmluZy5yZXBsYWNlLT4+cGF0Y2hTdHJpbmc6IFJldHVybiByZXBsYWNlZCBzdHJpbmdcbiAqICAgcGF0Y2hTdHJpbmctLT4+Q2FsbGVyOiBSZXR1cm4gcGF0Y2hlZCBzdHJpbmdcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGNoUGxhY2Vob2xkZXJzKFxuICBpbnB1dDogc3RyaW5nLFxuICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlciB8IHN0cmluZz4sXG4gIHByZWZpeDogc3RyaW5nID0gRGVmYXVsdFBsYWNlaG9sZGVyV3JhcHBlcnNbMF0sXG4gIHN1ZmZpeDogc3RyaW5nID0gRGVmYXVsdFBsYWNlaG9sZGVyV3JhcHBlcnNbMV0sXG4gIGZsYWdzOiBzdHJpbmcgPSBcImdcIlxuKTogc3RyaW5nIHtcbiAgY29uc3QgcGxhY2Vob2xkZXJzID0gT2JqZWN0LmVudHJpZXModmFsdWVzKS5yZWR1Y2UoXG4gICAgKGFjYzogUmVjb3JkPHN0cmluZywgYW55PiwgW2tleSwgdmFsXSkgPT4ge1xuICAgICAgYWNjW2Ake3ByZWZpeH0ke2tleX0ke3N1ZmZpeH1gXSA9IHZhbDtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fVxuICApO1xuICByZXR1cm4gcGF0Y2hTdHJpbmcoaW5wdXQsIHBsYWNlaG9sZGVycywgZmxhZ3MpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXBsYWNlcyBvY2N1cnJlbmNlcyBvZiBrZXlzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyB2YWx1ZXMgaW4gYSBzdHJpbmcuXG4gKiBAc3VtbWFyeSBJdGVyYXRlcyB0aHJvdWdoIGEgc2V0IG9mIGtleS12YWx1ZSBwYWlycyBhbmQgcmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGVhY2gga2V5XG4gKiBpbiB0aGUgaW5wdXQgc3RyaW5nIHdpdGggaXRzIGNvcnJlc3BvbmRpbmcgdmFsdWUuIFN1cHBvcnRzIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncyBmb3IgY3VzdG9taXplZCByZXBsYWNlbWVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQgLSBUaGUgaW5wdXQgc3RyaW5nIGluIHdoaWNoIHJlcGxhY2VtZW50cyB3aWxsIGJlIG1hZGUuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIG51bWJlciB8IHN0cmluZz59IHZhbHVlcyAtIEFuIG9iamVjdCBjb250YWluaW5nIGtleS12YWx1ZSBwYWlycyBmb3IgcmVwbGFjZW1lbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2ZsYWdzPVwiZ1wiXSAtIFJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncyB0byBjb250cm9sIHRoZSByZXBsYWNlbWVudCBiZWhhdmlvci5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHN0cmluZyB3aXRoIGFsbCBzcGVjaWZpZWQgcmVwbGFjZW1lbnRzIGFwcGxpZWQuXG4gKlxuICogQGZ1bmN0aW9uIHBhdGNoU3RyaW5nXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaFN0cmluZyhcbiAgaW5wdXQ6IHN0cmluZyxcbiAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+LFxuICBmbGFnczogc3RyaW5nID0gXCJnXCJcbik6IHN0cmluZyB7XG4gIE9iamVjdC5lbnRyaWVzKHZhbHVlcykuZm9yRWFjaCgoW2tleSwgdmFsXSkgPT4ge1xuICAgIGNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoZXNjYXBlUmVnRXhwKGtleSksIGZsYWdzKTtcbiAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UocmVnZXhwLCB2YWwgYXMgc3RyaW5nKTtcbiAgfSk7XG4gIHJldHVybiBpbnB1dDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBzdHJpbmcgdG8gY2FtZWxDYXNlLlxuICogQHN1bW1hcnkgVHJhbnNmb3JtcyB0aGUgaW5wdXQgc3RyaW5nIGludG8gY2FtZWxDYXNlIGZvcm1hdCwgd2hlcmUgd29yZHMgYXJlIGpvaW5lZCB3aXRob3V0IHNwYWNlc1xuICogYW5kIGVhY2ggd29yZCBhZnRlciB0aGUgZmlyc3Qgc3RhcnRzIHdpdGggYSBjYXBpdGFsIGxldHRlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSBpbnB1dCBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgaW5wdXQgc3RyaW5nIGNvbnZlcnRlZCB0byBjYW1lbENhc2UuXG4gKlxuICogQGZ1bmN0aW9uIHRvQ2FtZWxDYXNlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NhbWVsQ2FzZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC8oPzpeXFx3fFtBLVpdfFxcYlxcdykvZywgKHdvcmQsIGluZGV4KSA9PlxuICAgICAgaW5kZXggPT09IDAgPyB3b3JkLnRvTG93ZXJDYXNlKCkgOiB3b3JkLnRvVXBwZXJDYXNlKClcbiAgICApXG4gICAgLnJlcGxhY2UoL1xccysvZywgXCJcIik7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgc3RyaW5nIHRvIEVOVklST05NRU5UX1ZBUklBQkxFIGZvcm1hdC5cbiAqIEBzdW1tYXJ5IFRyYW5zZm9ybXMgdGhlIGlucHV0IHN0cmluZyBpbnRvIHVwcGVyY2FzZSB3aXRoIHdvcmRzIHNlcGFyYXRlZCBieSB1bmRlcnNjb3JlcyxcbiAqIHR5cGljYWxseSB1c2VkIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSBpbnB1dCBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgaW5wdXQgc3RyaW5nIGNvbnZlcnRlZCB0byBFTlZJUk9OTUVOVF9WQVJJQUJMRSBmb3JtYXQuXG4gKlxuICogQGZ1bmN0aW9uIHRvRU5WRm9ybWF0XG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0VOVkZvcm1hdCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdG9TbmFrZUNhc2UodGV4dCkudG9VcHBlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBzdHJpbmcgdG8gc25ha2VfY2FzZS5cbiAqIEBzdW1tYXJ5IFRyYW5zZm9ybXMgdGhlIGlucHV0IHN0cmluZyBpbnRvIGxvd2VyY2FzZSB3aXRoIHdvcmRzIHNlcGFyYXRlZCBieSB1bmRlcnNjb3Jlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSBpbnB1dCBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgaW5wdXQgc3RyaW5nIGNvbnZlcnRlZCB0byBzbmFrZV9jYXNlLlxuICpcbiAqIEBmdW5jdGlvbiB0b1NuYWtlQ2FzZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6TG9nZ2luZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gdG9TbmFrZUNhc2UodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHRcbiAgICAucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgXCIkMV8kMlwiKVxuICAgIC5yZXBsYWNlKC9bXFxzLV0rL2csIFwiX1wiKVxuICAgIC50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHN0cmluZyB0byBrZWJhYi1jYXNlLlxuICogQHN1bW1hcnkgVHJhbnNmb3JtcyB0aGUgaW5wdXQgc3RyaW5nIGludG8gbG93ZXJjYXNlIHdpdGggd29yZHMgc2VwYXJhdGVkIGJ5IGh5cGhlbnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUaGUgaW5wdXQgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGlucHV0IHN0cmluZyBjb252ZXJ0ZWQgdG8ga2ViYWItY2FzZS5cbiAqXG4gKiBAZnVuY3Rpb24gdG9LZWJhYkNhc2VcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvS2ViYWJDYXNlKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIFwiJDEtJDJcIilcbiAgICAucmVwbGFjZSgvW1xcc19dKy9nLCBcIi1cIilcbiAgICAudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBzdHJpbmcgdG8gUGFzY2FsQ2FzZS5cbiAqIEBzdW1tYXJ5IFRyYW5zZm9ybXMgdGhlIGlucHV0IHN0cmluZyBpbnRvIFBhc2NhbENhc2UgZm9ybWF0LCB3aGVyZSB3b3JkcyBhcmUgam9pbmVkIHdpdGhvdXQgc3BhY2VzXG4gKiBhbmQgZWFjaCB3b3JkIHN0YXJ0cyB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUaGUgaW5wdXQgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGlucHV0IHN0cmluZyBjb252ZXJ0ZWQgdG8gUGFzY2FsQ2FzZS5cbiAqXG4gKiBAZnVuY3Rpb24gdG9QYXNjYWxDYXNlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1Bhc2NhbENhc2UodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHRcbiAgICAucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHcpL2csICh3b3JkKSA9PiB3b3JkLnRvVXBwZXJDYXNlKCkpXG4gICAgLnJlcGxhY2UoL1xccysvZywgXCJcIik7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVzY2FwZXMgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nIGZvciB1c2UgaW4gYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKiBAc3VtbWFyeSBBZGRzIGJhY2tzbGFzaGVzIGJlZm9yZSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBzcGVjaWFsIG1lYW5pbmcgaW4gcmVndWxhciBleHByZXNzaW9ucyxcbiAqIGFsbG93aW5nIHRoZSBzdHJpbmcgdG8gYmUgdXNlZCBhcyBhIGxpdGVyYWwgbWF0Y2ggaW4gYSBSZWdFeHAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gZXNjYXBlIGZvciByZWd1bGFyIGV4cHJlc3Npb24gdXNlLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgZXNjYXBlZCBzdHJpbmcgc2FmZSBmb3IgdXNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gKlxuICogQGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6TG9nZ2luZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cmluZzogc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFwiXFxcXCQmXCIpOyAvLyAkJiBtZWFucyB0aGUgd2hvbGUgbWF0Y2hlZCBzdHJpbmdcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBVdGlsIGZ1bmN0aW9uIHRvIHByb3ZpZGUgc3RyaW5nIGZvcm1hdCBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gQyMncyBzdHJpbmcuZm9ybWF0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHBhcmFtIHtBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgUmVjb3JkPHN0cmluZywgYW55Pn0gW2FyZ3NdIHJlcGxhY2VtZW50cyBtYWRlIGJ5IG9yZGVyIG9mIGFwcGVhcmFuY2UgKHJlcGxhY2VtZW50MCB3aWwgcmVwbGFjZSB7MH0gYW5kIHNvIG9uKVxuICogQHJldHVybiB7c3RyaW5nfSBmb3JtYXR0ZWQgc3RyaW5nXG4gKlxuICogQGZ1bmN0aW9uIHNmXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNmKFxuICBzdHJpbmc6IHN0cmluZyxcbiAgLi4uYXJnczogKHN0cmluZyB8IG51bWJlciB8IFJlY29yZDxzdHJpbmcsIGFueT4pW11cbikge1xuICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgaWYgKFxuICAgICAgIWFyZ3MuZXZlcnkoKGFyZykgPT4gdHlwZW9mIGFyZyA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKVxuICAgIClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE9ubHkgc3RyaW5nIGFuZCBudW1iZXIgYXJndW1lbnRzIGFyZSBzdXBwb3J0ZWQgZm9yIG11bHRpcGxlIHJlcGxhY2VtZW50cy5gXG4gICAgICApO1xuICB9XG5cbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIHR5cGVvZiBhcmdzWzBdID09PSBcIm9iamVjdFwiKSB7XG4gICAgY29uc3Qgb2JqID0gYXJnc1swXSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhvYmopLnJlZHVjZSgoYWNjLCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICByZXR1cm4gYWNjLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXHske2tleX1cXFxcfWAsIFwiZ1wiKSwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgfSk7XG4gICAgfSwgc3RyaW5nKTtcbiAgfVxuXG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgveyhcXGQrKX0vZywgZnVuY3Rpb24gKG1hdGNoLCBudW1iZXIpIHtcbiAgICByZXR1cm4gdHlwZW9mIGFyZ3NbbnVtYmVyXSAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgPyBhcmdzW251bWJlcl0udG9TdHJpbmcoKVxuICAgICAgOiBcInVuZGVmaW5lZFwiO1xuICB9KTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBVdGlsIGZ1bmN0aW9uIHRvIHByb3ZpZGUgc3RyaW5nIGZvcm1hdCBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gQyMncyBzdHJpbmcuZm9ybWF0XG4gKlxuICogQHNlZSBzZlxuICpcbiAqIEBkZXByZWNhdGVkXG4gKiBAZnVuY3Rpb24gc3RyaW5nRm9ybWF0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHN0cmluZ0Zvcm1hdCA9IHNmO1xuIl19
|
package/lib/text.d.ts
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Pads the end of a string with a specified character.
|
|
3
|
+
* @summary Extends the input string to a specified length by adding a padding character to the end.
|
|
4
|
+
* If the input string is already longer than the specified length, it is returned unchanged.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} str - The input string to be padded.
|
|
7
|
+
* @param {number} length - The desired total length of the resulting string.
|
|
8
|
+
* @param {string} [char=" "] - The character to use for padding. Defaults to a space.
|
|
9
|
+
* @return {string} The padded string.
|
|
10
|
+
* @throws {Error} If the padding character is not exactly one character long.
|
|
11
|
+
*
|
|
12
|
+
* @function padEnd
|
|
13
|
+
*
|
|
14
|
+
* @memberOf module:Logging
|
|
15
|
+
*/
|
|
16
|
+
export declare function padEnd(str: string, length: number, char?: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* @description Replaces placeholders in a string with provided values.
|
|
19
|
+
* @summary Interpolates a string by replacing placeholders of the form ${variableName}
|
|
20
|
+
* with corresponding values from the provided object. If a placeholder doesn't have
|
|
21
|
+
* a corresponding value, it is left unchanged in the string.
|
|
22
|
+
*
|
|
23
|
+
* @param {string} input - The input string containing placeholders to be replaced.
|
|
24
|
+
* @param {Record<string, number | string>} values - An object containing key-value pairs for replacement.
|
|
25
|
+
* @param prefix
|
|
26
|
+
* @param suffix
|
|
27
|
+
* @param flags
|
|
28
|
+
* @return {string} The interpolated string with placeholders replaced by their corresponding values.
|
|
29
|
+
*
|
|
30
|
+
* @function patchPlaceholders
|
|
31
|
+
*
|
|
32
|
+
* @mermaid
|
|
33
|
+
* sequenceDiagram
|
|
34
|
+
* participant Caller
|
|
35
|
+
* participant patchString
|
|
36
|
+
* participant String.replace
|
|
37
|
+
* Caller->>patchString: Call with input and values
|
|
38
|
+
* patchString->>String.replace: Call with regex and replacement function
|
|
39
|
+
* String.replace->>patchString: Return replaced string
|
|
40
|
+
* patchString-->>Caller: Return patched string
|
|
41
|
+
*
|
|
42
|
+
* @memberOf module:Logging
|
|
43
|
+
*/
|
|
44
|
+
export declare function patchPlaceholders(input: string, values: Record<string, number | string>, prefix?: string, suffix?: string, flags?: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* @description Replaces occurrences of keys with their corresponding values in a string.
|
|
47
|
+
* @summary Iterates through a set of key-value pairs and replaces all occurrences of each key
|
|
48
|
+
* in the input string with its corresponding value. Supports regular expression flags for customized replacement.
|
|
49
|
+
*
|
|
50
|
+
* @param {string} input - The input string in which replacements will be made.
|
|
51
|
+
* @param {Record<string, number | string>} values - An object containing key-value pairs for replacement.
|
|
52
|
+
* @param {string} [flags="g"] - Regular expression flags to control the replacement behavior.
|
|
53
|
+
* @return {string} The string with all specified replacements applied.
|
|
54
|
+
*
|
|
55
|
+
* @function patchString
|
|
56
|
+
*
|
|
57
|
+
* @memberOf module:Logging
|
|
58
|
+
*/
|
|
59
|
+
export declare function patchString(input: string, values: Record<string, number | string>, flags?: string): string;
|
|
60
|
+
/**
|
|
61
|
+
* @description Converts a string to camelCase.
|
|
62
|
+
* @summary Transforms the input string into camelCase format, where words are joined without spaces
|
|
63
|
+
* and each word after the first starts with a capital letter.
|
|
64
|
+
*
|
|
65
|
+
* @param {string} text - The input string to be converted.
|
|
66
|
+
* @return {string} The input string converted to camelCase.
|
|
67
|
+
*
|
|
68
|
+
* @function toCamelCase
|
|
69
|
+
*
|
|
70
|
+
* @memberOf module:Logging
|
|
71
|
+
*/
|
|
72
|
+
export declare function toCamelCase(text: string): string;
|
|
73
|
+
/**
|
|
74
|
+
* @description Converts a string to ENVIRONMENT_VARIABLE format.
|
|
75
|
+
* @summary Transforms the input string into uppercase with words separated by underscores,
|
|
76
|
+
* typically used for environment variable names.
|
|
77
|
+
*
|
|
78
|
+
* @param {string} text - The input string to be converted.
|
|
79
|
+
* @return {string} The input string converted to ENVIRONMENT_VARIABLE format.
|
|
80
|
+
*
|
|
81
|
+
* @function toENVFormat
|
|
82
|
+
*
|
|
83
|
+
* @memberOf module:Logging
|
|
84
|
+
*/
|
|
85
|
+
export declare function toENVFormat(text: string): string;
|
|
86
|
+
/**
|
|
87
|
+
* @description Converts a string to snake_case.
|
|
88
|
+
* @summary Transforms the input string into lowercase with words separated by underscores.
|
|
89
|
+
*
|
|
90
|
+
* @param {string} text - The input string to be converted.
|
|
91
|
+
* @return {string} The input string converted to snake_case.
|
|
92
|
+
*
|
|
93
|
+
* @function toSnakeCase
|
|
94
|
+
*
|
|
95
|
+
* @memberOf module:Logging
|
|
96
|
+
*/
|
|
97
|
+
export declare function toSnakeCase(text: string): string;
|
|
98
|
+
/**
|
|
99
|
+
* @description Converts a string to kebab-case.
|
|
100
|
+
* @summary Transforms the input string into lowercase with words separated by hyphens.
|
|
101
|
+
*
|
|
102
|
+
* @param {string} text - The input string to be converted.
|
|
103
|
+
* @return {string} The input string converted to kebab-case.
|
|
104
|
+
*
|
|
105
|
+
* @function toKebabCase
|
|
106
|
+
*
|
|
107
|
+
* @memberOf module:Logging
|
|
108
|
+
*/
|
|
109
|
+
export declare function toKebabCase(text: string): string;
|
|
110
|
+
/**
|
|
111
|
+
* @description Converts a string to PascalCase.
|
|
112
|
+
* @summary Transforms the input string into PascalCase format, where words are joined without spaces
|
|
113
|
+
* and each word starts with a capital letter.
|
|
114
|
+
*
|
|
115
|
+
* @param {string} text - The input string to be converted.
|
|
116
|
+
* @return {string} The input string converted to PascalCase.
|
|
117
|
+
*
|
|
118
|
+
* @function toPascalCase
|
|
119
|
+
*
|
|
120
|
+
* @memberOf module:Logging
|
|
121
|
+
*/
|
|
122
|
+
export declare function toPascalCase(text: string): string;
|
|
123
|
+
/**
|
|
124
|
+
* @description Escapes special characters in a string for use in a regular expression.
|
|
125
|
+
* @summary Adds backslashes before characters that have special meaning in regular expressions,
|
|
126
|
+
* allowing the string to be used as a literal match in a RegExp.
|
|
127
|
+
*
|
|
128
|
+
* @param {string} string - The string to escape for regular expression use.
|
|
129
|
+
* @return {string} The escaped string safe for use in regular expressions.
|
|
130
|
+
*
|
|
131
|
+
* @function escapeRegExp
|
|
132
|
+
*
|
|
133
|
+
* @memberOf module:Logging
|
|
134
|
+
*/
|
|
135
|
+
export declare function escapeRegExp(string: string): string;
|
|
136
|
+
/**
|
|
137
|
+
* @summary Util function to provide string format functionality similar to C#'s string.format
|
|
138
|
+
*
|
|
139
|
+
* @param {string} string
|
|
140
|
+
* @param {Array<string | number> | Record<string, any>} [args] replacements made by order of appearance (replacement0 wil replace {0} and so on)
|
|
141
|
+
* @return {string} formatted string
|
|
142
|
+
*
|
|
143
|
+
* @function sf
|
|
144
|
+
* @memberOf module:Logging
|
|
145
|
+
*/
|
|
146
|
+
export declare function sf(string: string, ...args: (string | number | Record<string, any>)[]): string;
|
|
147
|
+
/**
|
|
148
|
+
* @summary Util function to provide string format functionality similar to C#'s string.format
|
|
149
|
+
*
|
|
150
|
+
* @see sf
|
|
151
|
+
*
|
|
152
|
+
* @deprecated
|
|
153
|
+
* @function stringFormat
|
|
154
|
+
* @memberOf module:Logging
|
|
155
|
+
*/
|
|
156
|
+
export declare const stringFormat: typeof sf;
|
package/lib/types.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0eWxlcyB9IGZyb20gXCJzdHlsZWQtc3RyaW5nLWJ1aWxkZXJcIjtcbmltcG9ydCB7IExvZ2dpbmdNb2RlLCBMb2dMZXZlbCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIHR5cGUgcmVwcmVzZW50aW5nIHN0cmluZy1saWtlIHZhbHVlc1xuICogQHN1bW1hcnkgUmVwcmVzZW50cyBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb2JqZWN0IHdpdGggYSB0b1N0cmluZyBtZXRob2QgdGhhdCByZXR1cm5zIGEgc3RyaW5nXG4gKiBAdHlwZWRlZiB7KHN0cmluZ3xPYmplY3QpfSBTdHJpbmdMaWtlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IHR5cGUgU3RyaW5nTGlrZSA9IHN0cmluZyB8IHsgdG9TdHJpbmc6ICgpID0+IHN0cmluZyB9O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIGdlbmVyaWMgZnVuY3Rpb24gdHlwZSB3aXRoIGFueSBhcmd1bWVudHMgYW5kIHJldHVyblxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhbnkgY2FsbGFibGUgc2lnbmF0dXJlLCB1c2VmdWwgZm9yIGFubm90YXRpbmcgaGlnaGVyLW9yZGVyIHV0aWxpdGllc1xuICogYW5kIGR5bmFtaWMgbWV0aG9kIHJlZmVyZW5jZXMgd2hlcmUgYXJndW1lbnQgYW5kIHJldHVybiB0eXBlcyBhcmUgbm90IGNvbnN0cmFpbmVkLlxuICogQHR5cGVkZWYge0Z1bmN0aW9ufSBBbnlGdW5jdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCB0eXBlIEFueUZ1bmN0aW9uID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEEgY29uc3RydWN0YWJsZSBjbGFzcyB0eXBlXG4gKiBAc3VtbWFyeSBEZXNjcmliZXMgYSBjbGFzcyBjb25zdHJ1Y3RvciB0aGF0IHByb2R1Y2VzIGluc3RhbmNlcyBvZiB0eXBlIFQuIFVzZWZ1bCB3aGVuXG4gKiBwYXNzaW5nIGNsYXNzIHJlZmVyZW5jZXMgYXJvdW5kIChlLmcuLCBmb3IgY29udGV4dCBvciBkZXBlbmRlbmN5IGluamVjdGlvbikuXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2Z1bmN0aW9uKGFueVtdKTogVH0gQ2xhc3NcbiAqIEBtZW1iZXJPZiBtb2R1bGU6TG9nZ2luZ1xuICovXG5leHBvcnQgdHlwZSBDbGFzczxUPiA9IHtcbiAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQ7XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIHR5cGUgcmVwcmVzZW50aW5nIGxvZ2dpbmcgY29udGV4dFxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIGNvbnRleHQgZm9yIGxvZ2dpbmcsIHdoaWNoIGNhbiBiZSBhIHN0cmluZywgYSBjbGFzcyBjb25zdHJ1Y3Rvciwgb3IgYSBmdW5jdGlvblxuICogQHR5cGVkZWYgeyhzdHJpbmd8RnVuY3Rpb258T2JqZWN0KX0gTG9nZ2luZ0NvbnRleHRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6TG9nZ2luZ1xuICovXG5leHBvcnQgdHlwZSBMb2dnaW5nQ29udGV4dCA9IHN0cmluZyB8IENsYXNzPGFueT4gfCBBbnlGdW5jdGlvbjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBhIGxvZ2dlciB3aXRoIHZlcmJvc2l0eSBsZXZlbHMuXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG1ldGhvZHMgZm9yIGxvZ2dpbmcgYXQgZGlmZmVyZW50IHZlcmJvc2l0eSBsZXZlbHMuXG4gKiBAaW50ZXJmYWNlIExvZ2dlclxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dzIGEgYHdheSB0b28gdmVyYm9zZWAgb3IgYSBzaWxseSBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge1N0cmluZ0xpa2V9IG1zZyAtIFRoZSBtZXNzYWdlIHRvIGxvZy5cbiAgICovXG4gIHNpbGx5KG1zZzogU3RyaW5nTGlrZSk6IHZvaWQ7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTG9ncyBhIHZlcmJvc2UgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtTdHJpbmdMaWtlfSBtc2cgLSBUaGUgbWVzc2FnZSB0byBsb2cuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB2ZXJib3NpdHkgLSBUaGUgdmVyYm9zaXR5IGxldmVsIG9mIHRoZSBtZXNzYWdlLlxuICAgKi9cbiAgdmVyYm9zZShtc2c6IFN0cmluZ0xpa2UsIHZlcmJvc2l0eT86IG51bWJlcik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dzIGFuIGluZm8gbWVzc2FnZS5cbiAgICogQHBhcmFtIHtTdHJpbmdMaWtlfSBtc2cgLSBUaGUgbWVzc2FnZSB0byBsb2cuXG4gICAqL1xuICBpbmZvKG1zZzogU3RyaW5nTGlrZSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dzIGFuIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7U3RyaW5nTGlrZSB8IEVycm9yfSBtc2cgLSBUaGUgbWVzc2FnZSB0byBsb2cuXG4gICAqL1xuICBlcnJvcihtc2c6IFN0cmluZ0xpa2UgfCBFcnJvcik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dzIGEgZGVidWcgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1zZyAtIFRoZSBtZXNzYWdlIHRvIGxvZy5cbiAgICovXG4gIGRlYnVnKG1zZzogU3RyaW5nTGlrZSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IGxvZ2dlciBmb3IgYSBzcGVjaWZpYyBtZXRob2Qgb3IgY29udGV4dFxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgbmV3IGxvZ2dlciBpbnN0YW5jZSB0aGF0IGluY2x1ZGVzIHRoZSBzcGVjaWZpZWQgbWV0aG9kIG9yIGNvbnRleHQgaW4gaXRzIGxvZ3NcbiAgICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb259IFttZXRob2RdIC0gVGhlIG1ldGhvZCBuYW1lIG9yIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIGxvZ2dlciBmb3JcbiAgICogQHBhcmFtIHtQYXJ0aWFsPExvZ2dpbmdDb25maWc+fSBbY29uZmlnXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBuZXcgbG9nZ2VyXG4gICAqIEByZXR1cm4ge0xvZ2dlcn0gQSBuZXcgbG9nZ2VyIGluc3RhbmNlXG4gICAqL1xuICBmb3IoXG4gICAgbWV0aG9kPzogc3RyaW5nIHwgKCguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSxcbiAgICBjb25maWc/OiBQYXJ0aWFsPExvZ2dpbmdDb25maWc+XG4gICk6IExvZ2dlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgdGhlIGxvZ2dlciBjb25maWd1cmF0aW9uXG4gICAqIEBzdW1tYXJ5IFNldHMgb3IgdXBkYXRlcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIGxvZ2dlciBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge1BhcnRpYWw8TG9nZ2luZ0NvbmZpZz59IGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gYXBwbHlcbiAgICovXG4gIHNldENvbmZpZyhjb25maWc6IFBhcnRpYWw8TG9nZ2luZ0NvbmZpZz4pOiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciBsb2dnaW5nLlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgbG9nIGxldmVsIGFuZCB2ZXJib3NpdHkgZm9yIGxvZ2dpbmcuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBMb2dnaW5nQ29uZmlnXG4gKiBAcHJvcGVydHkge0xvZ0xldmVsfSBsZXZlbCAtIFRoZSBsb2dnaW5nIGxldmVsLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbbG9nTGV2ZWxdIC0gV2hldGhlciB0byBkaXNwbGF5IGxvZyBsZXZlbCBpbiBvdXRwdXQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdmVyYm9zZSAtIFRoZSB2ZXJib3NpdHkgbGV2ZWwuXG4gKiBAcHJvcGVydHkge0xvZ2dpbmdNb2RlfSBbbW9kZV0gLSBPdXRwdXQgZm9ybWF0IG1vZGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29udGV4dFNlcGFyYXRvciAtIFNlcGFyYXRvciBiZXR3ZWVuIGNvbnRleHQgZW50cmllcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZXBhcmF0b3IgLSBTZXBhcmF0b3IgYmV0d2VlbiBsb2cgY29tcG9uZW50cy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3N0eWxlXSAtIFdoZXRoZXIgdG8gYXBwbHkgc3R5bGluZyB0byBsb2cgb3V0cHV0LlxuICogQHByb3BlcnR5IHtib29sZWFufSBbdGltZXN0YW1wXSAtIFdoZXRoZXIgdG8gaW5jbHVkZSB0aW1lc3RhbXBzIGluIGxvZyBtZXNzYWdlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdGltZXN0YW1wRm9ybWF0XSAtIEZvcm1hdCBmb3IgdGltZXN0YW1wcy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2NvbnRleHRdIC0gV2hldGhlciB0byBpbmNsdWRlIGNvbnRleHQgaW5mb3JtYXRpb24gaW4gbG9nIG1lc3NhZ2VzLlxuICogQHByb3BlcnR5IHtUaGVtZX0gW3RoZW1lXSAtIFRoZSB0aGVtZSB0byB1c2UgZm9yIHN0eWxpbmcgbG9nIG1lc3NhZ2VzLlxuICogQHByb3BlcnR5IHtzdHJpbmd8bnVtYmVyfSBbY29ycmVsYXRpb25JZF0gLSBDb3JyZWxhdGlvbiBJRCBmb3IgdHJhY2tpbmcgcmVsYXRlZCBsb2cgbWVzc2FnZXMuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IHR5cGUgTG9nZ2luZ0NvbmZpZyA9IHtcbiAgbGV2ZWw6IExvZ0xldmVsO1xuICBsb2dMZXZlbD86IGJvb2xlYW47XG4gIHZlcmJvc2U6IG51bWJlcjtcbiAgbW9kZT86IExvZ2dpbmdNb2RlO1xuICBjb250ZXh0U2VwYXJhdG9yOiBzdHJpbmc7XG4gIHNlcGFyYXRvcjogc3RyaW5nO1xuICBzdHlsZT86IGJvb2xlYW47XG4gIHRpbWVzdGFtcD86IGJvb2xlYW47XG4gIHRpbWVzdGFtcEZvcm1hdD86IHN0cmluZztcbiAgY29udGV4dD86IGJvb2xlYW47XG4gIHRoZW1lPzogVGhlbWU7XG4gIGZvcm1hdDogXCJyYXdcIiB8IFwianNvblwiO1xuICBwYXR0ZXJuOiBzdHJpbmc7XG4gIGNvcnJlbGF0aW9uSWQ/OiBzdHJpbmcgfCBudW1iZXI7XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIGZhY3RvcnkgZnVuY3Rpb24gdHlwZSBmb3IgY3JlYXRpbmcgbG9nZ2Vyc1xuICogQHN1bW1hcnkgRGVmaW5lcyBhIGZ1bmN0aW9uIHR5cGUgdGhhdCBjcmVhdGVzIGFuZCByZXR1cm5zIGEgbG9nZ2VyIGluc3RhbmNlIGZvciBhIGdpdmVuIG9iamVjdFxuICogQHRlbXBsYXRlIEwgLSBUaGUgbG9nZ2VyIHR5cGUsIGV4dGVuZGluZyB0aGUgYmFzZSBMb2dnZXIgaW50ZXJmYWNlXG4gKiBAdHlwZWRlZiB7RnVuY3Rpb259IExvZ2dlckZhY3RvcnlcbiAqIEBwYXJhbSB7c3RyaW5nfSBvYmplY3QgLSBUaGUgb2JqZWN0IG9yIGNvbnRleHQgbmFtZSBmb3IgdGhlIGxvZ2dlclxuICogQHBhcmFtIHtQYXJ0aWFsPExvZ2dpbmdDb25maWc+fSBbY29uZmlnXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBsb2dnZXJcbiAqIEByZXR1cm4ge0x9IEEgbG9nZ2VyIGluc3RhbmNlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IHR5cGUgTG9nZ2VyRmFjdG9yeTxMIGV4dGVuZHMgTG9nZ2VyID0gTG9nZ2VyPiA9IChcbiAgb2JqZWN0OiBzdHJpbmcsXG4gIGNvbmZpZz86IFBhcnRpYWw8TG9nZ2luZ0NvbmZpZz4sXG4gIC4uLmFyZ3M6IGFueVtdXG4pID0+IEw7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgYSB0aGVtZSBvcHRpb24gZm9yIGNvbnNvbGUgb3V0cHV0IHN0eWxpbmcuXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgZm9yIHN0eWxpbmcgYSBzcGVjaWZpYyBlbGVtZW50IGluIHRoZSBjb25zb2xlIG91dHB1dC5cbiAqIEl0IGFsbG93cyBmb3IgY3VzdG9taXphdGlvbiBvZiBmb3JlZ3JvdW5kIGNvbG9yLCBiYWNrZ3JvdW5kIGNvbG9yLCBhbmQgYWRkaXRpb25hbCBzdHlsZXMuXG4gKiBDb2xvcnMgY2FuIGJlIHNwZWNpZmllZCBhcyBhIHNpbmdsZSBudW1iZXIsIGFuIFJHQiBhcnJheSwgb3IgbGVmdCB1bmRlZmluZWQgZm9yIGRlZmF1bHQuXG4gKiBAaW50ZXJmYWNlIFRoZW1lT3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaGVtZU9wdGlvbiB7XG4gIGZnPzogbnVtYmVyIHwgW251bWJlcl0gfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbiAgYmc/OiBudW1iZXIgfCBbbnVtYmVyXSB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblxuICBzdHlsZT86IG51bWJlcltdIHwgW2tleW9mIHR5cGVvZiBzdHlsZXNdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIHR5cGUgZm9yIHRoZW1lIG9wdGlvbnMgb3JnYW5pemVkIGJ5IGxvZyBsZXZlbFxuICogQHN1bW1hcnkgRGVmaW5lcyBhIHBhcnRpYWwgcmVjb3JkIG1hcHBpbmcgbG9nIGxldmVscyB0byB0aGVtZSBvcHRpb25zLCBhbGxvd2luZyBkaWZmZXJlbnQgc3R5bGluZyBmb3IgZGlmZmVyZW50IGxvZyBsZXZlbHNcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFRoZW1lT3B0aW9uQnlMb2dMZXZlbFxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCB0eXBlIFRoZW1lT3B0aW9uQnlMb2dMZXZlbCA9IFBhcnRpYWw8UmVjb3JkPExvZ0xldmVsLCBUaGVtZU9wdGlvbj4+O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIHRoZSBjb2xvciB0aGVtZSBmb3IgY29uc29sZSBvdXRwdXQuXG4gKiBAc3VtbWFyeSBUaGlzIGludGVyZmFjZSBzcGVjaWZpZXMgdGhlIGNvbG9yIHNjaGVtZSBmb3IgdmFyaW91cyBlbGVtZW50cyBvZiBjb25zb2xlIG91dHB1dCxcbiAqIGluY2x1ZGluZyBzdHlsaW5nIGZvciBkaWZmZXJlbnQgbG9nIGxldmVscyBhbmQgY29tcG9uZW50cy4gSXQgdXNlcyBUaGVtZU9wdGlvbiB0b1xuICogZGVmaW5lIHRoZSBzdHlsaW5nIGZvciBlYWNoIGVsZW1lbnQsIGFsbG93aW5nIGZvciBjdXN0b21pemF0aW9uIG9mIGNvbG9ycyBhbmQgc3R5bGVzXG4gKiBmb3IgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBsb2cgb3V0cHV0LlxuICogQGludGVyZmFjZSBUaGVtZVxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGhlbWUge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFN0eWxpbmcgZm9yIGNsYXNzIG5hbWVzIGluIHRoZSBvdXRwdXQuXG4gICAqL1xuICBjbGFzczogVGhlbWVPcHRpb24gfCBUaGVtZU9wdGlvbkJ5TG9nTGV2ZWw7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTdHlsaW5nIGZvciB0aW1lc3RhbXBzIGluIHRoZSBvdXRwdXQuXG4gICAqL1xuICB0aW1lc3RhbXA6IFRoZW1lT3B0aW9uIHwgVGhlbWVPcHRpb25CeUxvZ0xldmVsO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3R5bGluZyBmb3IgdGhlIG1haW4gbWVzc2FnZSB0ZXh0IGluIHRoZSBvdXRwdXQuXG4gICAqL1xuICBtZXNzYWdlOiBUaGVtZU9wdGlvbiB8IFRoZW1lT3B0aW9uQnlMb2dMZXZlbDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFN0eWxpbmcgZm9yIG1ldGhvZCBuYW1lcyBpbiB0aGUgb3V0cHV0LlxuICAgKi9cbiAgbWV0aG9kOiBUaGVtZU9wdGlvbiB8IFRoZW1lT3B0aW9uQnlMb2dMZXZlbDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFN0eWxpbmcgZm9yIGlkZW50aWZpZXIgZWxlbWVudHMgaW4gdGhlIG91dHB1dC5cbiAgICovXG4gIGlkOiBUaGVtZU9wdGlvbiB8IFRoZW1lT3B0aW9uQnlMb2dMZXZlbDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFN0eWxpbmcgZm9yIGlkZW50aWZpZXIgZWxlbWVudHMgaW4gdGhlIG91dHB1dC5cbiAgICovXG4gIHN0YWNrOiBUaGVtZU9wdGlvbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFN0eWxpbmcgZm9yIGRpZmZlcmVudCBsb2cgbGV2ZWxzIGluIHRoZSBvdXRwdXQuXG4gICAqL1xuICBsb2dMZXZlbDogVGhlbWVPcHRpb25CeUxvZ0xldmVsO1xufVxuIl19
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0eWxlcyB9IGZyb20gXCJzdHlsZWQtc3RyaW5nLWJ1aWxkZXJcIjtcbmltcG9ydCB7IExvZ2dpbmdNb2RlLCBMb2dMZXZlbCB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuLyoqXG4gKiBAZGVzY3JpcHRpb24gQSB0eXBlIHJlcHJlc2VudGluZyBzdHJpbmctbGlrZSB2YWx1ZXNcbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9iamVjdCB3aXRoIGEgdG9TdHJpbmcgbWV0aG9kIHRoYXQgcmV0dXJucyBhIHN0cmluZ1xuICogQHR5cGVkZWYgeyhzdHJpbmd8T2JqZWN0KX0gU3RyaW5nTGlrZVxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCB0eXBlIFN0cmluZ0xpa2UgPSBzdHJpbmcgfCB7IHRvU3RyaW5nOiAoKSA9PiBzdHJpbmcgfTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQSBnZW5lcmljIGZ1bmN0aW9uIHR5cGUgd2l0aCBhbnkgYXJndW1lbnRzIGFuZCByZXR1cm5cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYW55IGNhbGxhYmxlIHNpZ25hdHVyZSwgdXNlZnVsIGZvciBhbm5vdGF0aW5nIGhpZ2hlci1vcmRlciB1dGlsaXRpZXNcbiAqIGFuZCBkeW5hbWljIG1ldGhvZCByZWZlcmVuY2VzIHdoZXJlIGFyZ3VtZW50IGFuZCByZXR1cm4gdHlwZXMgYXJlIG5vdCBjb25zdHJhaW5lZC5cbiAqIEB0eXBlZGVmIHtGdW5jdGlvbn0gQW55RnVuY3Rpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6TG9nZ2luZ1xuICovXG5leHBvcnQgdHlwZSBBbnlGdW5jdGlvbiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIGNvbnN0cnVjdGFibGUgY2xhc3MgdHlwZVxuICogQHN1bW1hcnkgRGVzY3JpYmVzIGEgY2xhc3MgY29uc3RydWN0b3IgdGhhdCBwcm9kdWNlcyBpbnN0YW5jZXMgb2YgdHlwZSBULiBVc2VmdWwgd2hlblxuICogcGFzc2luZyBjbGFzcyByZWZlcmVuY2VzIGFyb3VuZCAoZS5nLiwgZm9yIGNvbnRleHQgb3IgZGVwZW5kZW5jeSBpbmplY3Rpb24pLlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtmdW5jdGlvbihhbnlbXSk6IFR9IENsYXNzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IHR5cGUgQ2xhc3M8VD4gPSB7XG4gIG5ldyAoLi4uYXJnczogYW55W10pOiBUO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQSB0eXBlIHJlcHJlc2VudGluZyBsb2dnaW5nIGNvbnRleHRcbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYSBjb250ZXh0IGZvciBsb2dnaW5nLCB3aGljaCBjYW4gYmUgYSBzdHJpbmcsIGEgY2xhc3MgY29uc3RydWN0b3IsIG9yIGEgZnVuY3Rpb25cbiAqIEB0eXBlZGVmIHsoc3RyaW5nfEZ1bmN0aW9ufE9iamVjdCl9IExvZ2dpbmdDb250ZXh0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IHR5cGUgTG9nZ2luZ0NvbnRleHQgPSBzdHJpbmcgfCBDbGFzczxhbnk+IHwgQW55RnVuY3Rpb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wZXJzb25hdGFibGU8VEhJUywgQVJHUyBleHRlbmRzIGFueVtdID0gYW55W10+IHtcbiAgZm9yKC4uLmFyZ3M6IEFSR1MpOiBUSElTO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGEgbG9nZ2VyIHdpdGggdmVyYm9zaXR5IGxldmVscy5cbiAqIEBzdW1tYXJ5IERlZmluZXMgbWV0aG9kcyBmb3IgbG9nZ2luZyBhdCBkaWZmZXJlbnQgdmVyYm9zaXR5IGxldmVscy5cbiAqIEBpbnRlcmZhY2UgTG9nZ2VyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dnZXJcbiAgZXh0ZW5kcyBJbXBlcnNvbmF0YWJsZTxcbiAgICBMb2dnZXIsXG4gICAgW1xuICAgICAgKFxuICAgICAgICB8IHN0cmluZ1xuICAgICAgICB8IHsgbmV3ICguLi5hcmdzOiBhbnlbXSk6IGFueSB9XG4gICAgICAgIHwgQW55RnVuY3Rpb25cbiAgICAgICAgfCBQYXJ0aWFsPExvZ2dpbmdDb25maWc+XG4gICAgICApLFxuICAgICAgUGFydGlhbDxMb2dnaW5nQ29uZmlnPixcbiAgICAgIC4uLmFueVtdLFxuICAgIF1cbiAgPiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTG9ncyBhIGB3YXkgdG9vIHZlcmJvc2VgIG9yIGEgc2lsbHkgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtTdHJpbmdMaWtlfSBtc2cgLSBUaGUgbWVzc2FnZSB0byBsb2cuXG4gICAqL1xuICBzaWxseShtc2c6IFN0cmluZ0xpa2UpOiB2b2lkO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExvZ3MgYSB2ZXJib3NlIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7U3RyaW5nTGlrZX0gbXNnIC0gVGhlIG1lc3NhZ2UgdG8gbG9nLlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmVyYm9zaXR5IC0gVGhlIHZlcmJvc2l0eSBsZXZlbCBvZiB0aGUgbWVzc2FnZS5cbiAgICovXG4gIHZlcmJvc2UobXNnOiBTdHJpbmdMaWtlLCB2ZXJib3NpdHk/OiBudW1iZXIpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTG9ncyBhbiBpbmZvIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7U3RyaW5nTGlrZX0gbXNnIC0gVGhlIG1lc3NhZ2UgdG8gbG9nLlxuICAgKi9cbiAgaW5mbyhtc2c6IFN0cmluZ0xpa2UpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTG9ncyBhbiBlcnJvciBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge1N0cmluZ0xpa2UgfCBFcnJvcn0gbXNnIC0gVGhlIG1lc3NhZ2UgdG8gbG9nLlxuICAgKiBAcGFyYW0gZVxuICAgKi9cbiAgZXJyb3IobXNnOiBTdHJpbmdMaWtlIHwgRXJyb3IsIGU/OiBFcnJvcik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dzIGEgZGVidWcgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1zZyAtIFRoZSBtZXNzYWdlIHRvIGxvZy5cbiAgICovXG4gIGRlYnVnKG1zZzogU3RyaW5nTGlrZSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IGxvZ2dlciBmb3IgYSBzcGVjaWZpYyBtZXRob2Qgb3IgY29udGV4dFxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgbmV3IGxvZ2dlciBpbnN0YW5jZSB0aGF0IGluY2x1ZGVzIHRoZSBzcGVjaWZpZWQgbWV0aG9kIG9yIGNvbnRleHQgaW4gaXRzIGxvZ3NcbiAgICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb259IFttZXRob2RdIC0gVGhlIG1ldGhvZCBuYW1lIG9yIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIGxvZ2dlciBmb3JcbiAgICogQHBhcmFtIHtQYXJ0aWFsPExvZ2dpbmdDb25maWc+fSBbY29uZmlnXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBuZXcgbG9nZ2VyXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqIEByZXR1cm4ge0xvZ2dlcn0gQSBuZXcgbG9nZ2VyIGluc3RhbmNlXG4gICAqL1xuICBmb3IoXG4gICAgbWV0aG9kOlxuICAgICAgfCBzdHJpbmdcbiAgICAgIHwgeyBuZXcgKC4uLmFyZ3M6IGFueVtdKTogYW55IH1cbiAgICAgIHwgQW55RnVuY3Rpb25cbiAgICAgIHwgUGFydGlhbDxMb2dnaW5nQ29uZmlnPixcbiAgICBjb25maWc/OiBQYXJ0aWFsPExvZ2dpbmdDb25maWc+LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IExvZ2dlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgdGhlIGxvZ2dlciBjb25maWd1cmF0aW9uXG4gICAqIEBzdW1tYXJ5IFNldHMgb3IgdXBkYXRlcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIGxvZ2dlciBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge1BhcnRpYWw8TG9nZ2luZ0NvbmZpZz59IGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gYXBwbHlcbiAgICovXG4gIHNldENvbmZpZyhjb25maWc6IFBhcnRpYWw8TG9nZ2luZ0NvbmZpZz4pOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dpbmdGaWx0ZXIge1xuICBmaWx0ZXIoY29uZmlnOiBMb2dnaW5nQ29uZmlnLCBtZXNzYWdlOiBzdHJpbmcsIGNvbnRleHQ6IHN0cmluZ1tdKTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciBsb2dnaW5nLlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgbG9nIGxldmVsIGFuZCB2ZXJib3NpdHkgZm9yIGxvZ2dpbmcuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBMb2dnaW5nQ29uZmlnXG4gKiBAcHJvcGVydHkge0xvZ0xldmVsfSBsZXZlbCAtIFRoZSBsb2dnaW5nIGxldmVsLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbbG9nTGV2ZWxdIC0gV2hldGhlciB0byBkaXNwbGF5IGxvZyBsZXZlbCBpbiBvdXRwdXQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdmVyYm9zZSAtIFRoZSB2ZXJib3NpdHkgbGV2ZWwuXG4gKiBAcHJvcGVydHkge0xvZ2dpbmdNb2RlfSBbbW9kZV0gLSBPdXRwdXQgZm9ybWF0IG1vZGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29udGV4dFNlcGFyYXRvciAtIFNlcGFyYXRvciBiZXR3ZWVuIGNvbnRleHQgZW50cmllcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZXBhcmF0b3IgLSBTZXBhcmF0b3IgYmV0d2VlbiBsb2cgY29tcG9uZW50cy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3N0eWxlXSAtIFdoZXRoZXIgdG8gYXBwbHkgc3R5bGluZyB0byBsb2cgb3V0cHV0LlxuICogQHByb3BlcnR5IHtib29sZWFufSBbdGltZXN0YW1wXSAtIFdoZXRoZXIgdG8gaW5jbHVkZSB0aW1lc3RhbXBzIGluIGxvZyBtZXNzYWdlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdGltZXN0YW1wRm9ybWF0XSAtIEZvcm1hdCBmb3IgdGltZXN0YW1wcy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2NvbnRleHRdIC0gV2hldGhlciB0byBpbmNsdWRlIGNvbnRleHQgaW5mb3JtYXRpb24gaW4gbG9nIG1lc3NhZ2VzLlxuICogQHByb3BlcnR5IHtUaGVtZX0gW3RoZW1lXSAtIFRoZSB0aGVtZSB0byB1c2UgZm9yIHN0eWxpbmcgbG9nIG1lc3NhZ2VzLlxuICogQHByb3BlcnR5IHtzdHJpbmd8bnVtYmVyfSBbY29ycmVsYXRpb25JZF0gLSBDb3JyZWxhdGlvbiBJRCBmb3IgdHJhY2tpbmcgcmVsYXRlZCBsb2cgbWVzc2FnZXMuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IHR5cGUgTG9nZ2luZ0NvbmZpZyA9IHtcbiAgYXBwPzogc3RyaW5nO1xuICBlbnY6IFwiZGV2ZWxvcG1lbnRcIiB8IFwicHJvZHVjdGlvblwiIHwgXCJ0ZXN0XCIgfCBcInN0YWdpbmdcIiB8IHN0cmluZztcbiAgbGV2ZWw6IExvZ0xldmVsO1xuICBsb2dMZXZlbD86IGJvb2xlYW47XG4gIHZlcmJvc2U6IG51bWJlcjtcbiAgY29udGV4dFNlcGFyYXRvcjogc3RyaW5nO1xuICBzZXBhcmF0b3I6IHN0cmluZztcbiAgc3R5bGU/OiBib29sZWFuO1xuICB0aW1lc3RhbXA/OiBib29sZWFuO1xuICB0aW1lc3RhbXBGb3JtYXQ/OiBzdHJpbmc7XG4gIGNvbnRleHQ/OiBib29sZWFuO1xuICB0aGVtZT86IFRoZW1lO1xuICBmb3JtYXQ6IExvZ2dpbmdNb2RlO1xuICBwYXR0ZXJuOiBzdHJpbmc7XG4gIGNvcnJlbGF0aW9uSWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIGZpbHRlcnM/OiBzdHJpbmdbXSB8IExvZ2dpbmdGaWx0ZXJbXTtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEEgZmFjdG9yeSBmdW5jdGlvbiB0eXBlIGZvciBjcmVhdGluZyBsb2dnZXJzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgZnVuY3Rpb24gdHlwZSB0aGF0IGNyZWF0ZXMgYW5kIHJldHVybnMgYSBsb2dnZXIgaW5zdGFuY2UgZm9yIGEgZ2l2ZW4gb2JqZWN0XG4gKiBAdGVtcGxhdGUgTCAtIFRoZSBsb2dnZXIgdHlwZSwgZXh0ZW5kaW5nIHRoZSBiYXNlIExvZ2dlciBpbnRlcmZhY2VcbiAqIEB0eXBlZGVmIHtGdW5jdGlvbn0gTG9nZ2VyRmFjdG9yeVxuICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdCAtIFRoZSBvYmplY3Qgb3IgY29udGV4dCBuYW1lIGZvciB0aGUgbG9nZ2VyXG4gKiBAcGFyYW0ge1BhcnRpYWw8TG9nZ2luZ0NvbmZpZz59IFtjb25maWddIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIGxvZ2dlclxuICogQHJldHVybiB7TH0gQSBsb2dnZXIgaW5zdGFuY2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6TG9nZ2luZ1xuICovXG5leHBvcnQgdHlwZSBMb2dnZXJGYWN0b3J5PEwgZXh0ZW5kcyBMb2dnZXIgPSBMb2dnZXI+ID0gKFxuICBvYmplY3Q6IHN0cmluZyxcbiAgY29uZmlnPzogUGFydGlhbDxMb2dnaW5nQ29uZmlnPixcbiAgLi4uYXJnczogYW55W11cbikgPT4gTDtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyBhIHRoZW1lIG9wdGlvbiBmb3IgY29uc29sZSBvdXRwdXQgc3R5bGluZy5cbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3Igc3R5bGluZyBhIHNwZWNpZmljIGVsZW1lbnQgaW4gdGhlIGNvbnNvbGUgb3V0cHV0LlxuICogSXQgYWxsb3dzIGZvciBjdXN0b21pemF0aW9uIG9mIGZvcmVncm91bmQgY29sb3IsIGJhY2tncm91bmQgY29sb3IsIGFuZCBhZGRpdGlvbmFsIHN0eWxlcy5cbiAqIENvbG9ycyBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgc2luZ2xlIG51bWJlciwgYW4gUkdCIGFycmF5LCBvciBsZWZ0IHVuZGVmaW5lZCBmb3IgZGVmYXVsdC5cbiAqIEBpbnRlcmZhY2UgVGhlbWVPcHRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6TG9nZ2luZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRoZW1lT3B0aW9uIHtcbiAgZmc/OiBudW1iZXIgfCBbbnVtYmVyXSB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblxuICBiZz86IG51bWJlciB8IFtudW1iZXJdIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXG4gIHN0eWxlPzogbnVtYmVyW10gfCBba2V5b2YgdHlwZW9mIHN0eWxlc107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEEgdHlwZSBmb3IgdGhlbWUgb3B0aW9ucyBvcmdhbml6ZWQgYnkgbG9nIGxldmVsXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgcGFydGlhbCByZWNvcmQgbWFwcGluZyBsb2cgbGV2ZWxzIHRvIHRoZW1lIG9wdGlvbnMsIGFsbG93aW5nIGRpZmZlcmVudCBzdHlsaW5nIGZvciBkaWZmZXJlbnQgbG9nIGxldmVsc1xuICogQHR5cGVkZWYge09iamVjdH0gVGhlbWVPcHRpb25CeUxvZ0xldmVsXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IHR5cGUgVGhlbWVPcHRpb25CeUxvZ0xldmVsID0gUGFydGlhbDxSZWNvcmQ8TG9nTGV2ZWwsIFRoZW1lT3B0aW9uPj47XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIGNvbG9yIHRoZW1lIGZvciBjb25zb2xlIG91dHB1dC5cbiAqIEBzdW1tYXJ5IFRoaXMgaW50ZXJmYWNlIHNwZWNpZmllcyB0aGUgY29sb3Igc2NoZW1lIGZvciB2YXJpb3VzIGVsZW1lbnRzIG9mIGNvbnNvbGUgb3V0cHV0LFxuICogaW5jbHVkaW5nIHN0eWxpbmcgZm9yIGRpZmZlcmVudCBsb2cgbGV2ZWxzIGFuZCBjb21wb25lbnRzLiBJdCB1c2VzIFRoZW1lT3B0aW9uIHRvXG4gKiBkZWZpbmUgdGhlIHN0eWxpbmcgZm9yIGVhY2ggZWxlbWVudCwgYWxsb3dpbmcgZm9yIGN1c3RvbWl6YXRpb24gb2YgY29sb3JzIGFuZCBzdHlsZXNcbiAqIGZvciBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIGxvZyBvdXRwdXQuXG4gKiBAaW50ZXJmYWNlIFRoZW1lXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaGVtZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3R5bGluZyBmb3IgY2xhc3MgbmFtZXMgaW4gdGhlIG91dHB1dC5cbiAgICovXG4gIGFwcDogVGhlbWVPcHRpb24gfCBUaGVtZU9wdGlvbkJ5TG9nTGV2ZWw7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3R5bGluZyBmb3IgY2xhc3MgbmFtZXMgaW4gdGhlIG91dHB1dC5cbiAgICovXG4gIHNlcGFyYXRvcjogVGhlbWVPcHRpb24gfCBUaGVtZU9wdGlvbkJ5TG9nTGV2ZWw7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3R5bGluZyBmb3IgY2xhc3MgbmFtZXMgaW4gdGhlIG91dHB1dC5cbiAgICovXG4gIGNsYXNzOiBUaGVtZU9wdGlvbiB8IFRoZW1lT3B0aW9uQnlMb2dMZXZlbDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFN0eWxpbmcgZm9yIHRpbWVzdGFtcHMgaW4gdGhlIG91dHB1dC5cbiAgICovXG4gIHRpbWVzdGFtcDogVGhlbWVPcHRpb24gfCBUaGVtZU9wdGlvbkJ5TG9nTGV2ZWw7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTdHlsaW5nIGZvciB0aGUgbWFpbiBtZXNzYWdlIHRleHQgaW4gdGhlIG91dHB1dC5cbiAgICovXG4gIG1lc3NhZ2U6IFRoZW1lT3B0aW9uIHwgVGhlbWVPcHRpb25CeUxvZ0xldmVsO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3R5bGluZyBmb3IgbWV0aG9kIG5hbWVzIGluIHRoZSBvdXRwdXQuXG4gICAqL1xuICBtZXRob2Q6IFRoZW1lT3B0aW9uIHwgVGhlbWVPcHRpb25CeUxvZ0xldmVsO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3R5bGluZyBmb3IgaWRlbnRpZmllciBlbGVtZW50cyBpbiB0aGUgb3V0cHV0LlxuICAgKi9cbiAgaWQ6IFRoZW1lT3B0aW9uIHwgVGhlbWVPcHRpb25CeUxvZ0xldmVsO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3R5bGluZyBmb3IgaWRlbnRpZmllciBlbGVtZW50cyBpbiB0aGUgb3V0cHV0LlxuICAgKi9cbiAgc3RhY2s6IFRoZW1lT3B0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3R5bGluZyBmb3IgZGlmZmVyZW50IGxvZyBsZXZlbHMgaW4gdGhlIG91dHB1dC5cbiAgICovXG4gIGxvZ0xldmVsOiBUaGVtZU9wdGlvbkJ5TG9nTGV2ZWw7XG59XG4iXX0=
|
package/lib/types.d.ts
CHANGED
|
@@ -35,13 +35,22 @@ export type Class<T> = {
|
|
|
35
35
|
* @memberOf module:Logging
|
|
36
36
|
*/
|
|
37
37
|
export type LoggingContext = string | Class<any> | AnyFunction;
|
|
38
|
+
export interface Impersonatable<THIS, ARGS extends any[] = any[]> {
|
|
39
|
+
for(...args: ARGS): THIS;
|
|
40
|
+
}
|
|
38
41
|
/**
|
|
39
42
|
* @description Interface for a logger with verbosity levels.
|
|
40
43
|
* @summary Defines methods for logging at different verbosity levels.
|
|
41
44
|
* @interface Logger
|
|
42
45
|
* @memberOf module:Logging
|
|
43
46
|
*/
|
|
44
|
-
export interface Logger
|
|
47
|
+
export interface Logger extends Impersonatable<Logger, [
|
|
48
|
+
(string | {
|
|
49
|
+
new (...args: any[]): any;
|
|
50
|
+
} | AnyFunction | Partial<LoggingConfig>),
|
|
51
|
+
Partial<LoggingConfig>,
|
|
52
|
+
...any[]
|
|
53
|
+
]> {
|
|
45
54
|
/**
|
|
46
55
|
* @description Logs a `way too verbose` or a silly message.
|
|
47
56
|
* @param {StringLike} msg - The message to log.
|
|
@@ -61,8 +70,9 @@ export interface Logger {
|
|
|
61
70
|
/**
|
|
62
71
|
* @description Logs an error message.
|
|
63
72
|
* @param {StringLike | Error} msg - The message to log.
|
|
73
|
+
* @param e
|
|
64
74
|
*/
|
|
65
|
-
error(msg: StringLike | Error): void;
|
|
75
|
+
error(msg: StringLike | Error, e?: Error): void;
|
|
66
76
|
/**
|
|
67
77
|
* @description Logs a debug message.
|
|
68
78
|
* @param {string} msg - The message to log.
|
|
@@ -73,9 +83,12 @@ export interface Logger {
|
|
|
73
83
|
* @summary Returns a new logger instance that includes the specified method or context in its logs
|
|
74
84
|
* @param {string|Function} [method] - The method name or function to create a logger for
|
|
75
85
|
* @param {Partial<LoggingConfig>} [config] - Optional configuration for the new logger
|
|
86
|
+
* @param args
|
|
76
87
|
* @return {Logger} A new logger instance
|
|
77
88
|
*/
|
|
78
|
-
for(method
|
|
89
|
+
for(method: string | {
|
|
90
|
+
new (...args: any[]): any;
|
|
91
|
+
} | AnyFunction | Partial<LoggingConfig>, config?: Partial<LoggingConfig>, ...args: any[]): Logger;
|
|
79
92
|
/**
|
|
80
93
|
* @description Updates the logger configuration
|
|
81
94
|
* @summary Sets or updates the configuration options for this logger instance
|
|
@@ -83,6 +96,9 @@ export interface Logger {
|
|
|
83
96
|
*/
|
|
84
97
|
setConfig(config: Partial<LoggingConfig>): void;
|
|
85
98
|
}
|
|
99
|
+
export interface LoggingFilter {
|
|
100
|
+
filter(config: LoggingConfig, message: string, context: string[]): string;
|
|
101
|
+
}
|
|
86
102
|
/**
|
|
87
103
|
* @description Configuration for logging.
|
|
88
104
|
* @summary Defines the log level and verbosity for logging.
|
|
@@ -102,10 +118,11 @@ export interface Logger {
|
|
|
102
118
|
* @memberOf module:Logging
|
|
103
119
|
*/
|
|
104
120
|
export type LoggingConfig = {
|
|
121
|
+
app?: string;
|
|
122
|
+
env: "development" | "production" | "test" | "staging" | string;
|
|
105
123
|
level: LogLevel;
|
|
106
124
|
logLevel?: boolean;
|
|
107
125
|
verbose: number;
|
|
108
|
-
mode?: LoggingMode;
|
|
109
126
|
contextSeparator: string;
|
|
110
127
|
separator: string;
|
|
111
128
|
style?: boolean;
|
|
@@ -113,9 +130,10 @@ export type LoggingConfig = {
|
|
|
113
130
|
timestampFormat?: string;
|
|
114
131
|
context?: boolean;
|
|
115
132
|
theme?: Theme;
|
|
116
|
-
format:
|
|
133
|
+
format: LoggingMode;
|
|
117
134
|
pattern: string;
|
|
118
135
|
correlationId?: string | number;
|
|
136
|
+
filters?: string[] | LoggingFilter[];
|
|
119
137
|
};
|
|
120
138
|
/**
|
|
121
139
|
* @description A factory function type for creating loggers
|
|
@@ -158,6 +176,14 @@ export type ThemeOptionByLogLevel = Partial<Record<LogLevel, ThemeOption>>;
|
|
|
158
176
|
* @memberOf module:Logging
|
|
159
177
|
*/
|
|
160
178
|
export interface Theme {
|
|
179
|
+
/**
|
|
180
|
+
* @description Styling for class names in the output.
|
|
181
|
+
*/
|
|
182
|
+
app: ThemeOption | ThemeOptionByLogLevel;
|
|
183
|
+
/**
|
|
184
|
+
* @description Styling for class names in the output.
|
|
185
|
+
*/
|
|
186
|
+
separator: ThemeOption | ThemeOptionByLogLevel;
|
|
161
187
|
/**
|
|
162
188
|
* @description Styling for class names in the output.
|
|
163
189
|
*/
|
package/lib/web.cjs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isBrowser = isBrowser;
|
|
4
|
+
/**
|
|
5
|
+
* @description Determines if the current environment is a browser by checking the prototype chain of the global object.
|
|
6
|
+
* @summary Checks if the code is running in a browser environment.
|
|
7
|
+
* @return {boolean} True if the environment is a browser, false otherwise.
|
|
8
|
+
* @function isBrowser
|
|
9
|
+
* @memberOf module:Logging
|
|
10
|
+
*/
|
|
11
|
+
function isBrowser() {
|
|
12
|
+
return (Object.getPrototypeOf(Object.getPrototypeOf(globalThis)) !==
|
|
13
|
+
Object.prototype);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dlYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9BLDhCQUtDO0FBWkQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsU0FBUztJQUN2QixPQUFPLENBQ0wsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxTQUFTLENBQ2pCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gRGV0ZXJtaW5lcyBpZiB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBhIGJyb3dzZXIgYnkgY2hlY2tpbmcgdGhlIHByb3RvdHlwZSBjaGFpbiBvZiB0aGUgZ2xvYmFsIG9iamVjdC5cbiAqIEBzdW1tYXJ5IENoZWNrcyBpZiB0aGUgY29kZSBpcyBydW5uaW5nIGluIGEgYnJvd3NlciBlbnZpcm9ubWVudC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGVudmlyb25tZW50IGlzIGEgYnJvd3NlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQGZ1bmN0aW9uIGlzQnJvd3NlclxuICogQG1lbWJlck9mIG1vZHVsZTpMb2dnaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Jyb3dzZXIoKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihnbG9iYWxUaGlzKSkgIT09XG4gICAgT2JqZWN0LnByb3RvdHlwZVxuICApO1xufVxuIl19
|
package/lib/web.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Determines if the current environment is a browser by checking the prototype chain of the global object.
|
|
3
|
+
* @summary Checks if the code is running in a browser environment.
|
|
4
|
+
* @return {boolean} True if the environment is a browser, false otherwise.
|
|
5
|
+
* @function isBrowser
|
|
6
|
+
* @memberOf module:Logging
|
|
7
|
+
*/
|
|
8
|
+
export declare function isBrowser(): boolean;
|
package/lib/winston/winston.cjs
CHANGED
|
@@ -61,13 +61,13 @@ class WinstonLogger extends logging_1.MiniLogger {
|
|
|
61
61
|
* @summary Overrides the base log method to use Winston for logging
|
|
62
62
|
* @param {LogLevel} level - The log level of the message
|
|
63
63
|
* @param {StringLike | Error} msg - The message to be logged or an Error object
|
|
64
|
-
* @param {
|
|
64
|
+
* @param {Error} [error] - Optional stack trace to include in the log
|
|
65
65
|
* @return {void}
|
|
66
66
|
*/
|
|
67
|
-
log(level, msg,
|
|
67
|
+
log(level, msg, error) {
|
|
68
68
|
const logData = {
|
|
69
69
|
level: level,
|
|
70
|
-
message: this.createLog(level, msg,
|
|
70
|
+
message: this.createLog(level, msg, error),
|
|
71
71
|
};
|
|
72
72
|
if (this.config("correlationId"))
|
|
73
73
|
logData["correlationId"] = this.config("correlationId");
|
|
@@ -88,4 +88,4 @@ exports.WinstonLogger = WinstonLogger;
|
|
|
88
88
|
*/
|
|
89
89
|
const WinstonFactory = (context, conf, ...args) => new WinstonLogger(context, conf, ...args);
|
|
90
90
|
exports.WinstonFactory = WinstonFactory;
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luc3Rvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93aW5zdG9uL3dpbnN0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsc0RBQTJEO0FBRzNELDhDQUFpRDtBQUdqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQWEsYUFBYyxTQUFRLG9CQUFVO0lBRzNDLFlBQ0UsSUFBWSxFQUNaLElBQTZCLEVBQ25CLFVBQW9DO1FBRTlDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFGUixlQUFVLEdBQVYsVUFBVSxDQUEwQjtRQUc5QyxNQUFNLE1BQU0sR0FBa0IsTUFBTSxDQUFDLE1BQU0sQ0FDekMsRUFBRSxFQUNGLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUNmLGlCQUFPLENBQUMsU0FBUyxFQUFFLENBQ3BCLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFO1lBQzdDLEtBQUssRUFBRSxLQUFLO1lBQ1osUUFBUSxFQUFFLEtBQUs7WUFDZixTQUFTLEVBQUUsS0FBSztZQUNoQixPQUFPLEVBQUUsS0FBSztTQUNmLENBQUMsQ0FBQztRQUNILE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBRXJFLE1BQU0sT0FBTyxHQUFHLENBQUMsaUJBQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsaUJBQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNsRSxJQUFJLFNBQVM7WUFDWCxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekUsSUFBSSxLQUFLO1lBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSTtZQUNuQyxJQUFJLGlCQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDN0IsTUFBTSxFQUFFLGlCQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQzthQUMzQyxDQUFDO1NBQ0gsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFrQjtZQUNuQyxLQUFLLEVBQUUsS0FBSztZQUNaLFdBQVcsRUFBRSxPQUFPO1lBQ3BCLE1BQU0sRUFBRSxpQkFBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDN0IsVUFBVSxFQUFFLFVBQVU7U0FDdkIsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsaUJBQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDZ0IsR0FBRyxDQUNwQixLQUFlLEVBQ2YsR0FBdUIsRUFDdkIsS0FBYTtRQUViLE1BQU0sT0FBTyxHQUFhO1lBQ3hCLEtBQUssRUFBRSxLQUFLO1lBQ1osT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUM7U0FDM0MsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7WUFDOUIsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBL0RELHNDQStEQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSSxNQUFNLGNBQWMsR0FBa0IsQ0FDM0MsT0FBZSxFQUNmLElBQTZCLEVBQzdCLEdBQUcsSUFBVyxFQUNkLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFKbEMsUUFBQSxjQUFjLGtCQUlvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB3aW5zdG9uLCB7IExvZ0VudHJ5LCBMb2dnZXJPcHRpb25zIH0gZnJvbSBcIndpbnN0b25cIjtcbmltcG9ydCBUcmFuc3BvcnQgZnJvbSBcIndpbnN0b24tdHJhbnNwb3J0XCI7XG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dlckZhY3RvcnksIExvZ2dpbmdDb25maWcsIFN0cmluZ0xpa2UgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IExvZ2dpbmcsIE1pbmlMb2dnZXIgfSBmcm9tIFwiLi4vbG9nZ2luZ1wiO1xuaW1wb3J0IHsgTG9nTGV2ZWwgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEEgbG9nZ2VyIGltcGxlbWVudGF0aW9uIHVzaW5nIFdpbnN0b25cbiAqIEBzdW1tYXJ5IFdpbnN0b25Mb2dnZXIgZXh0ZW5kcyBNaW5pTG9nZ2VyIHRvIHByb3ZpZGUgbG9nZ2luZyBmdW5jdGlvbmFsaXR5IHVzaW5nIHRoZSBXaW5zdG9uIGxpYnJhcnkuXG4gKiBJdCBjb25maWd1cmVzIFdpbnN0b24gd2l0aCBhcHByb3ByaWF0ZSB0cmFuc3BvcnRzIGFuZCBmb3JtYXRzIGJhc2VkIG9uIHRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udCAtIFRoZSBjb250ZXh0ICh0eXBpY2FsbHkgY2xhc3MgbmFtZSkgdGhpcyBsb2dnZXIgaXMgYXNzb2NpYXRlZCB3aXRoXG4gKiBAcGFyYW0ge1BhcnRpYWw8TG9nZ2luZ0NvbmZpZz59IFtjb25mXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gdG8gb3ZlcnJpZGUgZ2xvYmFsIHNldHRpbmdzXG4gKiBAcGFyYW0ge1RyYW5zcG9ydFtdfFRyYW5zcG9ydH0gW3RyYW5zcG9ydHNdIC0gV2luc3RvbiB0cmFuc3BvcnRzIHRvIHVzZSBmb3IgbG9nZ2luZ1xuICogQGNsYXNzIFdpbnN0b25Mb2dnZXJcbiAqIEBleGFtcGxlXG4gKiAvLyBDcmVhdGUgYSBXaW5zdG9uIGxvZ2dlciBmb3IgYSBjbGFzc1xuICogY29uc3QgbG9nZ2VyID0gbmV3IFdpbnN0b25Mb2dnZXIoJ015Q2xhc3MnKTtcbiAqXG4gKiAvLyBMb2cgbWVzc2FnZXMgYXQgZGlmZmVyZW50IGxldmVsc1xuICogbG9nZ2VyLmluZm8oJ0FwcGxpY2F0aW9uIHN0YXJ0ZWQnKTtcbiAqIGxvZ2dlci5lcnJvcihuZXcgRXJyb3IoJ1NvbWV0aGluZyB3ZW50IHdyb25nJykpO1xuICpcbiAqIC8vIENyZWF0ZSBhIGNoaWxkIGxvZ2dlciBmb3IgYSBzcGVjaWZpYyBtZXRob2RcbiAqIGNvbnN0IG1ldGhvZExvZ2dlciA9IGxvZ2dlci5mb3IoJ215TWV0aG9kJyk7XG4gKiBtZXRob2RMb2dnZXIuZGVidWcoJ1Byb2Nlc3NpbmcgZGF0YS4uLicpO1xuICovXG5leHBvcnQgY2xhc3MgV2luc3RvbkxvZ2dlciBleHRlbmRzIE1pbmlMb2dnZXIgaW1wbGVtZW50cyBMb2dnZXIge1xuICBwcm90ZWN0ZWQgd2luc3Rvbjogd2luc3Rvbi5Mb2dnZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29udDogc3RyaW5nLFxuICAgIGNvbmY/OiBQYXJ0aWFsPExvZ2dpbmdDb25maWc+LFxuICAgIHByb3RlY3RlZCB0cmFuc3BvcnRzPzogVHJhbnNwb3J0W10gfCBUcmFuc3BvcnRcbiAgKSB7XG4gICAgc3VwZXIoY29udCwgY29uZik7XG4gICAgY29uc3QgY29uZmlnOiBMb2dnaW5nQ29uZmlnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAgdGhpcy5jb25mIHx8IHt9LFxuICAgICAgTG9nZ2luZy5nZXRDb25maWcoKVxuICAgICk7XG4gICAgdGhpcy5jb25mID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25mIHx8IHt9LCB7XG4gICAgICBzdHlsZTogZmFsc2UsXG4gICAgICBsb2dMZXZlbDogZmFsc2UsXG4gICAgICB0aW1lc3RhbXA6IGZhbHNlLFxuICAgICAgY29udGV4dDogZmFsc2UsXG4gICAgfSk7XG4gICAgY29uc3QgeyBsZXZlbCwgY29udGV4dCwgc3R5bGUsIHRpbWVzdGFtcCwgdGltZXN0YW1wRm9ybWF0IH0gPSBjb25maWc7XG5cbiAgICBjb25zdCBmb3JtYXRzID0gW3dpbnN0b24uZm9ybWF0LnNwbGF0KCksIHdpbnN0b24uZm9ybWF0LnNpbXBsZSgpXTtcbiAgICBpZiAodGltZXN0YW1wKVxuICAgICAgZm9ybWF0cy51bnNoaWZ0KHdpbnN0b24uZm9ybWF0LnRpbWVzdGFtcCh7IGZvcm1hdDogdGltZXN0YW1wRm9ybWF0IH0pKTtcbiAgICBpZiAoc3R5bGUpIGZvcm1hdHMudW5zaGlmdCh3aW5zdG9uLmZvcm1hdC5jb2xvcml6ZSgpKTtcblxuICAgIHRoaXMudHJhbnNwb3J0cyA9IHRoaXMudHJhbnNwb3J0cyB8fCBbXG4gICAgICBuZXcgd2luc3Rvbi50cmFuc3BvcnRzLkNvbnNvbGUoe1xuICAgICAgICBmb3JtYXQ6IHdpbnN0b24uZm9ybWF0LmNvbWJpbmUoLi4uZm9ybWF0cyksXG4gICAgICB9KSxcbiAgICBdO1xuXG4gICAgY29uc3Qgd2luc3RvbkNvbmZpZzogTG9nZ2VyT3B0aW9ucyA9IHtcbiAgICAgIGxldmVsOiBsZXZlbCxcbiAgICAgIGRlZmF1bHRNZXRhOiBjb250ZXh0LFxuICAgICAgZm9ybWF0OiB3aW5zdG9uLmZvcm1hdC5qc29uKCksXG4gICAgICB0cmFuc3BvcnRzOiB0cmFuc3BvcnRzLFxuICAgIH07XG4gICAgdGhpcy53aW5zdG9uID0gd2luc3Rvbi5jcmVhdGVMb2dnZXIod2luc3RvbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExvZ3MgYSBtZXNzYWdlIHdpdGggdGhlIHNwZWNpZmllZCBsb2cgbGV2ZWwgdXNpbmcgV2luc3RvblxuICAgKiBAc3VtbWFyeSBPdmVycmlkZXMgdGhlIGJhc2UgbG9nIG1ldGhvZCB0byB1c2UgV2luc3RvbiBmb3IgbG9nZ2luZ1xuICAgKiBAcGFyYW0ge0xvZ0xldmVsfSBsZXZlbCAtIFRoZSBsb2cgbGV2ZWwgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtTdHJpbmdMaWtlIHwgRXJyb3J9IG1zZyAtIFRoZSBtZXNzYWdlIHRvIGJlIGxvZ2dlZCBvciBhbiBFcnJvciBvYmplY3RcbiAgICogQHBhcmFtIHtFcnJvcn0gW2Vycm9yXSAtIE9wdGlvbmFsIHN0YWNrIHRyYWNlIHRvIGluY2x1ZGUgaW4gdGhlIGxvZ1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGxvZyhcbiAgICBsZXZlbDogTG9nTGV2ZWwsXG4gICAgbXNnOiBTdHJpbmdMaWtlIHwgRXJyb3IsXG4gICAgZXJyb3I/OiBFcnJvclxuICApIHtcbiAgICBjb25zdCBsb2dEYXRhOiBMb2dFbnRyeSA9IHtcbiAgICAgIGxldmVsOiBsZXZlbCxcbiAgICAgIG1lc3NhZ2U6IHRoaXMuY3JlYXRlTG9nKGxldmVsLCBtc2csIGVycm9yKSxcbiAgICB9O1xuICAgIGlmICh0aGlzLmNvbmZpZyhcImNvcnJlbGF0aW9uSWRcIikpXG4gICAgICBsb2dEYXRhW1wiY29ycmVsYXRpb25JZFwiXSA9IHRoaXMuY29uZmlnKFwiY29ycmVsYXRpb25JZFwiKTtcbiAgICB0aGlzLndpbnN0b24ubG9nKGxvZ0RhdGEpO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIFdpbnN0b24gbG9nZ2Vyc1xuICogQHN1bW1hcnkgQSBMb2dnZXJGYWN0b3J5IGltcGxlbWVudGF0aW9uIHRoYXQgY3JlYXRlcyBXaW5zdG9uTG9nZ2VyIGluc3RhbmNlc1xuICogQGNvbnN0IFdpbnN0b25GYWN0b3J5XG4gKiBAdHlwZSB7TG9nZ2VyRmFjdG9yeX1cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZXh0IC0gVGhlIGNvbnRleHQgKHR5cGljYWxseSBjbGFzcyBuYW1lKSBmb3IgdGhlIGxvZ2dlclxuICogQHBhcmFtIHtQYXJ0aWFsPExvZ2dpbmdDb25maWc+fSBbY29uZl0gLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIHRvIG92ZXJyaWRlIGdsb2JhbCBzZXR0aW5nc1xuICogQHBhcmFtIHsuLi5hbnl9IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBXaW5zdG9uTG9nZ2VyIGNvbnN0cnVjdG9yXG4gKiBAcmV0dXJuIHtXaW5zdG9uTG9nZ2VyfSBBIG5ldyBXaW5zdG9uTG9nZ2VyIGluc3RhbmNlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkxvZ2dpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IFdpbnN0b25GYWN0b3J5OiBMb2dnZXJGYWN0b3J5ID0gKFxuICBjb250ZXh0OiBzdHJpbmcsXG4gIGNvbmY/OiBQYXJ0aWFsPExvZ2dpbmdDb25maWc+LFxuICAuLi5hcmdzOiBhbnlbXVxuKSA9PiBuZXcgV2luc3RvbkxvZ2dlcihjb250ZXh0LCBjb25mLCAuLi5hcmdzKTtcbiJdfQ==
|