@riddance/host 0.1.2 → 0.2.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/LICENSE +1 -1
- package/context.d.ts +1 -2
- package/context.js +1 -1
- package/event.d.ts +8 -0
- package/event.js +6 -0
- package/host/context.d.ts +6 -17
- package/host/context.js +2 -10
- package/host/event-registry.d.ts +10 -0
- package/host/event-registry.js +28 -0
- package/host/event.d.ts +11 -0
- package/host/event.js +15 -0
- package/host/git.d.ts +1 -0
- package/host/git.js +33 -0
- package/host/http-registry.d.ts +12 -0
- package/host/http-registry.js +33 -0
- package/host/http.d.ts +1 -1
- package/host/http.js +48 -6
- package/host/logging.js +79 -18
- package/host/meta.d.ts +12 -0
- package/host/meta.js +22 -0
- package/host/reflect.d.ts +15 -2
- package/host/reflect.js +33 -7
- package/host/registry.d.ts +10 -24
- package/host/registry.js +6 -56
- package/host/timer copy.d.ts +6 -0
- package/host/timer copy.js +14 -0
- package/host/timer-registry copy.d.ts +16 -0
- package/host/timer-registry copy.js +27 -0
- package/host/timer-registry.d.ts +16 -0
- package/host/timer-registry.js +27 -0
- package/host/timer.d.ts +6 -0
- package/host/timer.js +14 -0
- package/http.js +2 -2
- package/package.json +12 -5
- package/timer.d.ts +17 -0
- package/timer.js +6 -0
- package/host/events.d.ts +0 -13
- package/host/events.js +0 -68
package/host/logging.js
CHANGED
|
@@ -25,22 +25,9 @@ class LogBuffer {
|
|
|
25
25
|
}
|
|
26
26
|
collect(level, numericLogLevel, message, error, fields, reservedEnrichment, customEnrichment) {
|
|
27
27
|
const offset = performance.now();
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
message,
|
|
32
|
-
error: errorAsJson(error),
|
|
33
|
-
...reservedEnrichment,
|
|
34
|
-
...extra(fields, customEnrichment),
|
|
35
|
-
});
|
|
36
|
-
this.#entries.push({
|
|
37
|
-
timestamp: offset,
|
|
38
|
-
level,
|
|
39
|
-
message,
|
|
40
|
-
error,
|
|
41
|
-
json,
|
|
42
|
-
});
|
|
43
|
-
this.#size += json.length;
|
|
28
|
+
const entry = this.#toEntry(highPrecisionISODate(offset), offset, level, message, error, fields, reservedEnrichment, customEnrichment);
|
|
29
|
+
this.#entries.push(entry);
|
|
30
|
+
this.#size += entry.json.length;
|
|
44
31
|
if (this.#asyncTransport === false) {
|
|
45
32
|
// eslint-disable-next-line no-void
|
|
46
33
|
void this.#transport.sendEntries(this.#entries, this.#signal);
|
|
@@ -99,6 +86,41 @@ class LogBuffer {
|
|
|
99
86
|
this.#flusher = this.#transport.sendEntries(entries, this.#signal);
|
|
100
87
|
}
|
|
101
88
|
}
|
|
89
|
+
#toEntry(timestamp, offset, level, message, error, fields, reservedEnrichment, customEnrichment) {
|
|
90
|
+
try {
|
|
91
|
+
return {
|
|
92
|
+
timestamp: offset,
|
|
93
|
+
level,
|
|
94
|
+
message,
|
|
95
|
+
error,
|
|
96
|
+
json: JSON.stringify({
|
|
97
|
+
timestamp,
|
|
98
|
+
level,
|
|
99
|
+
message,
|
|
100
|
+
error: errorAsJson(error, 0),
|
|
101
|
+
...reservedEnrichment,
|
|
102
|
+
...extra(fields, customEnrichment),
|
|
103
|
+
}),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
catch (e) {
|
|
107
|
+
this.collect('warning', 2, 'Error serializing error.', e, undefined, reservedEnrichment, customEnrichment);
|
|
108
|
+
return {
|
|
109
|
+
timestamp: offset,
|
|
110
|
+
level,
|
|
111
|
+
message,
|
|
112
|
+
error,
|
|
113
|
+
json: JSON.stringify({
|
|
114
|
+
timestamp,
|
|
115
|
+
level,
|
|
116
|
+
message,
|
|
117
|
+
error: safeErrorAsJson(error, 0),
|
|
118
|
+
...reservedEnrichment,
|
|
119
|
+
...extra(fields, customEnrichment),
|
|
120
|
+
}),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
102
124
|
}
|
|
103
125
|
function extra(fields, customEnrichment) {
|
|
104
126
|
if (!fields) {
|
|
@@ -172,20 +194,59 @@ class EnrichingLogger {
|
|
|
172
194
|
this.#buffer.collect('fatal', 0, message, error, fields, this.#reservedEnrichment, this.#customEnrichment);
|
|
173
195
|
}
|
|
174
196
|
}
|
|
175
|
-
function errorAsJson(error) {
|
|
197
|
+
function errorAsJson(error, depth) {
|
|
176
198
|
if (error === undefined || error === null) {
|
|
177
199
|
return undefined;
|
|
178
200
|
}
|
|
201
|
+
if (depth > 5) {
|
|
202
|
+
return undefined;
|
|
203
|
+
}
|
|
179
204
|
if (error instanceof Error) {
|
|
180
205
|
return {
|
|
181
206
|
message: error.message,
|
|
182
207
|
name: error.name,
|
|
183
208
|
stack: error.stack,
|
|
209
|
+
cause: errorAsJson(error.cause, depth + 1),
|
|
210
|
+
errors: errorAsJson(error.errors, depth + 1),
|
|
184
211
|
...error,
|
|
185
212
|
};
|
|
186
213
|
}
|
|
187
214
|
if (error instanceof Object) {
|
|
215
|
+
if (Array.isArray(error)) {
|
|
216
|
+
return error.map(errorAsJson);
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-spread
|
|
220
|
+
...error,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
message: error?.toString(),
|
|
225
|
+
name: typeof error,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
function safeErrorAsJson(error, depth) {
|
|
229
|
+
if (error === undefined || error === null) {
|
|
230
|
+
return undefined;
|
|
231
|
+
}
|
|
232
|
+
if (depth > 5) {
|
|
233
|
+
return undefined;
|
|
234
|
+
}
|
|
235
|
+
if (error instanceof Error) {
|
|
236
|
+
return {
|
|
237
|
+
message: error.message,
|
|
238
|
+
name: error.name,
|
|
239
|
+
stack: error.stack,
|
|
240
|
+
cause: safeErrorAsJson(error.cause, depth + 1),
|
|
241
|
+
errors: safeErrorAsJson(error.errors, depth + 1),
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
if (error instanceof Object) {
|
|
245
|
+
if (Array.isArray(error)) {
|
|
246
|
+
return error.map(safeErrorAsJson);
|
|
247
|
+
}
|
|
188
248
|
return {
|
|
249
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-spread
|
|
189
250
|
...error,
|
|
190
251
|
};
|
|
191
252
|
}
|
|
@@ -194,4 +255,4 @@ function errorAsJson(error) {
|
|
|
194
255
|
name: typeof error,
|
|
195
256
|
};
|
|
196
257
|
}
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvZ2dpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBSTdDLE1BQU0sVUFBVSxVQUFVLENBQ3RCLFNBQXVCLEVBQ3ZCLGVBQXFDLEVBQ3JDLE1BQW1CO0lBRW5CLE9BQU8sSUFBSSxlQUFlLENBQ3RCLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFDaEMsZUFBZTtRQUNYLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FBQyxFQUNQLE1BQU0sQ0FDVCxDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFBO0FBRTlFLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxjQUFzQjtJQUN2RCxNQUFNLFFBQVEsR0FBRywwQkFBMEIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsQ0FBQTtJQUNqRixPQUFPLENBQ0gsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3RELENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ25ELEdBQUcsQ0FDTixDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sU0FBUztJQUNGLFVBQVUsQ0FBYztJQUNqQyxRQUFRLEdBQWUsRUFBRSxDQUFBO0lBQ3pCLEtBQUssR0FBRyxD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TSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE9BQU07UUFDVixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ2hCLE9BQU8sRUFDUCxDQUFDLEVBQ0QsT0FBTyxFQUNQLEtBQUssRUFDTCxNQUFNLEVBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQ3pCLENBQUE7SUFDTCxDQUFDO0lBQ0QsS0FBSyxDQUFDLE9BQWUsRUFBRSxLQUFjLEVBQUUsTUFBMEI7UUFDN0QsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE9BQU07UUFDVixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ2hCLE9BQU8sRUFDUCxDQUFDLEVBQ0QsT0FBTyxFQUNQLEtBQUssRUFDTCxNQUFNLEVBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQ3pCLENBQUE7SUFDTCxDQUFDO0lBQ0QsSUFBSSxDQUFDLE9BQWUsRUFBRSxLQUFjLEVBQUUsTUFBMEI7UUFDNUQsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE9BQU07UUFDVixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ2hCLE1BQU0sRUFDTixDQUFDLEVBQ0QsT0FBTyxFQUNQLEtBQUssRUFDTCxNQUFNLEVBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQ3pCLENBQUE7SUFDTCxDQUFDO0lBQ0QsSUFBSSxDQUFDLE9BQWUsRUFBRSxLQUFjLEVBQUUsTUFBMEI7UUFDNUQsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE9BQU07UUFDVixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ2hCLFNBQVMsRUFDVCxDQUFDLEVBQ0QsT0FBTyxFQUNQLEtBQUssRUFDTCxNQUFNLEVBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQ3pCLENBQUE7SUFDTCxDQUFDO0lBQ0QsS0FBSyxDQUFDLE9BQWUsRUFBRSxLQUFjLEVBQUUsTUFBMEI7UUFDN0QsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE9BQU07UUFDVixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ2hCLE9BQU8sRUFDUCxDQUFDLEVBQ0QsT0FBTyxFQUNQLEtBQUssRUFDTCxNQUFNLEVBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQ3pCLENBQUE7SUFDTCxDQUFDO0lBQ0QsS0FBSyxDQUFDLE9BQWUsRUFBRSxLQUFjLEVBQUUsTUFBMEI7UUFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ2hCLE9BQU8sRUFDUCxDQUFDLEVBQ0QsT0FBTyxFQUNQLEtBQUssRUFDTCxNQUFNLEVBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQ3pCLENBQUE7SUFDTCxDQUFDO0NBQ0o7QUFFRCxTQUFTLFdBQVcsQ0FBQyxLQUFjO0lBQy9CLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDeEMsT0FBTyxTQUFTLENBQUE7SUFDcEIsQ0FBQztJQUNELElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE9BQU87WUFDSCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQixHQUFJLEtBQStDO1NBQzlDLENBQUE7SUFDYixDQUFDO0lBQ0QsSUFBSSxLQUFLLFlBQVksTUFBTSxFQUFFLENBQUM7UUFDMUIsT0FBTztZQUNILEdBQUcsS0FBSztTQUNILENBQUE7SUFDYixDQUFDO0lBQ0QsT0FBTztRQUNILE9BQU8sRUFBRyxLQUE0QixFQUFFLFFBQVEsRUFBRTtRQUNsRCxJQUFJLEVBQUUsT0FBTyxLQUFLO0tBQ2IsQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwZXJmb3JtYW5jZSB9IGZyb20gJ25vZGU6cGVyZl9ob29rcydcbmltcG9ydCB7IEpzb24sIExvZ2dlciB9IGZyb20gJy4uL2NvbnRleHQuanMnXG5pbXBvcnQgeyBMb2dFbnRyeSwgTG9nTGV2ZWwsIExvZ1RyYW5zcG9ydCwgUm9vdExvZ2dlciB9IGZyb20gJy4vY29udGV4dC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VMb2dnZXIoXG4gICAgdHJhbnNwb3J0OiBMb2dUcmFuc3BvcnQsXG4gICAgbWluaW11bUxvZ0xldmVsOiBMb2dMZXZlbCB8IHVuZGVmaW5lZCxcbiAgICBzaWduYWw6IEFib3J0U2lnbmFsLFxuKTogUm9vdExvZ2dlciB7XG4gICAgcmV0dXJuIG5ldyBFbnJpY2hpbmdMb2dnZXIoXG4gICAgICAgIG5ldyBMb2dCdWZmZXIodHJhbnNwb3J0LCBzaWduYWwpLFxuICAgICAgICBtaW5pbXVtTG9nTGV2ZWxcbiAgICAgICAgICAgID8gWydmYXRhbCcsICdlcnJvcicsICd3YXJuaW5nJywgJ2luZm8nLCAnZGVidWcnLCAndHJhY2UnXS5pbmRleE9mKG1pbmltdW1Mb2dMZXZlbClcbiAgICAgICAgICAgIDogNSxcbiAgICAgICAgc2lnbmFsLFxuICAgIClcbn1cblxuY29uc3QgcGVyZm9ybWFuY2VUaW1lT3JpZ2luMTAwbnMgPSBNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKiAxMF8wMDApXG5cbmV4cG9ydCBmdW5jdGlvbiBoaWdoUHJlY2lzaW9uSVNPRGF0ZShwZXJmb3JtYW5jZU5vdzogbnVtYmVyKSB7XG4gICAgY29uc3Qgbm93MTAwbnMgPSBwZXJmb3JtYW5jZVRpbWVPcmlnaW4xMDBucyArIE1hdGgucm91bmQocGVyZm9ybWFuY2VOb3cgKiAxMF8wMDApXG4gICAgcmV0dXJuIChcbiAgICAgICAgbmV3IERhdGUobm93MTAwbnMgLyAxMF8wMDApLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgMjApICtcbiAgICAgICAgKG5vdzEwMG5zICUgMTBfMDAwXzAwMCkudG9TdHJpbmcoKS5wYWRTdGFydCg3LCAnMCcpICtcbiAgICAgICAgJ1onXG4gICAgKVxufVxuXG5jbGFzcyBMb2dCdWZmZXIge1xuICAgIHJlYWRvbmx5ICN0cmFuc3BvcnQ6IExvZ1RyYW5zcG9ydFxuICAgICNlbnRyaWVzOiBMb2dFbnRyeVtdID0gW11cbiAgICAjc2l6ZSA9IDBcbiAgICAjZmx1c2hlcj86IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWRcbiAgICByZWFkb25seSAjc2lnbmFsOiBBYm9ydFNpZ25hbFxuICAgICNhc3luY1RyYW5zcG9ydDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICAgICN0aW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZFxuXG4gICAgY29uc3RydWN0b3IodHJhbnNwb3J0OiBMb2dUcmFuc3BvcnQsIHNpZ25hbDogQWJvcnRTaWduYWwpIHtcbiAgICAgICAgdGhpcy4jdHJhbnNwb3J0ID0gdHJhbnNwb3J0XG4gICAgICAgIHRoaXMuI3NpZ25hbCA9IHNpZ25hbFxuICAgIH1cblxuICAgIGNvbGxlY3QoXG4gICAgICAgIGxldmVsOiBMb2dMZXZlbCxcbiAgICAgICAgbnVtZXJpY0xvZ0xldmVsOiBudW1iZXIsXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgZXJyb3I6IHVua25vd24sXG4gICAgICAgIGZpZWxkczogb2JqZWN0IHwgdW5kZWZpbmVkLFxuICAgICAgICByZXNlcnZlZEVucmljaG1lbnQ6IG9iamVjdCB8IHVuZGVmaW5lZCxcbiAgICAgICAgY3VzdG9tRW5yaWNobWVudDogb2JqZWN0IHwgdW5kZWZpbmVkLFxuICAgICkge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBwZXJmb3JtYW5jZS5ub3coKVxuICAgICAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgdGltZXN0YW1wOiBoaWdoUHJlY2lzaW9uSVNPRGF0ZShvZmZzZXQpLFxuICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgZXJyb3I6IGVycm9yQXNKc29uKGVycm9yKSxcbiAgICAgICAgICAgIC4uLnJlc2VydmVkRW5yaWNobWVudCxcbiAgICAgICAgICAgIC4uLmV4dHJhKGZpZWxkcywgY3VzdG9tRW5yaWNobWVudCksXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuI2VudHJpZXMucHVzaCh7XG4gICAgICAgICAgICB0aW1lc3RhbXA6IG9mZnNldCxcbiAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAganNvbixcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy4jc2l6ZSArPSBqc29uLmxlbmd0aFxuXG4gICAgICAgIGlmICh0aGlzLiNhc3luY1RyYW5zcG9ydCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12b2lkXG4gICAgICAgICAgICB2b2lkIHRoaXMuI3RyYW5zcG9ydC5zZW5kRW50cmllcyh0aGlzLiNlbnRyaWVzLCB0aGlzLiNzaWduYWwpXG4gICAgICAgICAgICB0aGlzLiNlbnRyaWVzID0gW11cbiAgICAgICAgICAgIHRoaXMuI3NpemUgPSAwXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy4jYXN5bmNUcmFuc3BvcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy4jYXN5bmNUcmFuc3BvcnQgPSB0cnVlXG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLiNmbHVzaGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzZW5kUmVzdWx0ID0gdGhpcy4jdHJhbnNwb3J0LnNlbmRFbnRyaWVzKHRoaXMuI2VudHJpZXMsIHRoaXMuI3NpZ25hbClcbiAgICAgICAgICAgICAgICB0aGlzLiNlbnRyaWVzID0gW11cbiAgICAgICAgICAgICAgICB0aGlzLiNzaXplID0gMFxuICAgICAgICAgICAgICAgIGlmIChzZW5kUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2ZsdXNoZXIgPSBzZW5kUmVzdWx0XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jYXN5bmNUcmFuc3BvcnQgPSBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobnVtZXJpY0xvZ0xldmVsIDwgMiB8fCB0aGlzLiNlbnRyaWVzLmxlbmd0aCA+IDggfHwgdGhpcy4jc2l6ZSA+IDY0XzAwMCkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12b2lkXG4gICAgICAgICAgICAgICAgdm9pZCB0aGlzLmZsdXNoKClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdm9pZFxuICAgICAgICAgICAgICAgICAgICB2b2lkIHRoaXMuZmx1c2goKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLiN0aW1lb3V0ID0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSwgMjAwMClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy4jZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHRoaXMuI3N0YXJ0Rmx1c2godGhpcy4jZW50cmllcylcbiAgICAgICAgdGhpcy4jZW50cmllcyA9IFtdXG4gICAgICAgIHRoaXMuI3NpemUgPSAwXG4gICAgICAgIGlmICh0aGlzLiN0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy4jdGltZW91dClcbiAgICAgICAgICAgIHRoaXMuI3RpbWVvdXQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy4jZmx1c2hlclxuICAgIH1cblxuICAgICNzdGFydEZsdXNoKGVudHJpZXM6IExvZ0VudHJ5W10pIHtcbiAgICAgICAgaWYgKHRoaXMuI2ZsdXNoZXIpIHtcbiAgICAgICAgICAgIHRoaXMuI2ZsdXNoZXIgPSB0aGlzLiNmbHVzaGVyLnRoZW4oKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLiN0cmFuc3BvcnQuc2VuZEVudHJpZXMoZW50cmllcywgdGhpcy4jc2lnbmFsKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuI2ZsdXNoZXIgPSB0aGlzLiN0cmFuc3BvcnQuc2VuZEVudHJpZXMoZW50cmllcywgdGhpcy4jc2lnbmFsKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBleHRyYShmaWVsZHM6IG9iamVjdCB8IHVuZGVmaW5lZCwgY3VzdG9tRW5yaWNobWVudDogb2JqZWN0IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFmaWVsZHMpIHtcbiAgICAgICAgaWYgKCFjdXN0b21FbnJpY2htZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGN1c3RvbUVucmljaG1lbnRcbiAgICB9XG4gICAgaWYgKCFjdXN0b21FbnJpY2htZW50KSB7XG4gICAgICAgIHJldHVybiBmaWVsZHNcbiAgICB9XG4gICAgcmV0dXJuIHsgLi4uY3VzdG9tRW5yaWNobWVudCwgLi4uZmllbGRzIH1cbn1cblxuY2xhc3MgRW5yaWNoaW5nTG9nZ2VyIGltcGxlbWVudHMgTG9nZ2VyIHtcbiAgICByZWFkb25seSAjYnVmZmVyOiBMb2dCdWZmZXJcbiAgICByZWFkb25seSAjcmVzZXJ2ZWRFbnJpY2htZW50Pzogb2JqZWN0XG4gICAgcmVhZG9ubHkgI2N1c3RvbUVucmljaG1lbnQ/OiBvYmplY3RcbiAgICByZWFkb25seSAjbGV2ZWw6IG51bWJlclxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGJ1ZmZlcjogTG9nQnVmZmVyLFxuICAgICAgICBsZXZlbDogbnVtYmVyLFxuICAgICAgICByZXNlcnZlZEVucmljaG1lbnQ/OiBvYmplY3QsXG4gICAgICAgIGN1c3RvbUVucmljaG1lbnQ/OiBvYmplY3QsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuI2J1ZmZlciA9IGJ1ZmZlclxuICAgICAgICB0aGlzLiNsZXZlbCA9IGxldmVsXG4gICAgICAgIHRoaXMuI3Jlc2VydmVkRW5yaWNobWVudCA9IHJlc2VydmVkRW5yaWNobWVudFxuICAgICAgICB0aGlzLiNjdXN0b21FbnJpY2htZW50ID0gY3VzdG9tRW5yaWNobWVudFxuICAgIH1cblxuICAgIGVucmljaChmaWVsZHM6IG9iamVjdCk6IExvZ2dlciB7XG4gICAgICAgIHJldHVybiBuZXcgRW5yaWNoaW5nTG9nZ2VyKHRoaXMuI2J1ZmZlciwgdGhpcy4jbGV2ZWwsIHRoaXMuI3Jlc2VydmVkRW5yaWNobWVudCwge1xuICAgICAgICAgICAgLi4udGhpcy4jY3VzdG9tRW5yaWNobWVudCxcbiAgICAgICAgICAgIC4uLmZpZWxkcyxcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBmbHVzaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2J1ZmZlci5mbHVzaCgpXG4gICAgfVxuXG4gICAgZW5yaWNoUmVzZXJ2ZWQoZmllbGRzOiBvYmplY3QpOiBFbnJpY2hpbmdMb2dnZXIge1xuICAgICAgICByZXR1cm4gbmV3IEVucmljaGluZ0xvZ2dlcihcbiAgICAgICAgICAgIHRoaXMuI2J1ZmZlcixcbiAgICAgICAgICAgIHRoaXMuI2xldmVsLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuI3Jlc2VydmVkRW5yaWNobWVudCxcbiAgICAgICAgICAgICAgICAuLi5maWVsZHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy4jY3VzdG9tRW5yaWNobWVudCxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHRyYWNlKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I6IHVua25vd24sIGZpZWxkczogb2JqZWN0IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLiNsZXZlbCA8IDUpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2J1ZmZlci5jb2xsZWN0KFxuICAgICAgICAgICAgJ3RyYWNlJyxcbiAgICAgICAgICAgIDUsXG4gICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICB0aGlzLiNyZXNlcnZlZEVucmljaG1lbnQsXG4gICAgICAgICAgICB0aGlzLiNjdXN0b21FbnJpY2htZW50LFxuICAgICAgICApXG4gICAgfVxuICAgIGRlYnVnKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I6IHVua25vd24sIGZpZWxkczogb2JqZWN0IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLiNsZXZlbCA8IDQpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2J1ZmZlci5jb2xsZWN0KFxuICAgICAgICAgICAgJ2RlYnVnJyxcbiAgICAgICAgICAgIDQsXG4gICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICB0aGlzLiNyZXNlcnZlZEVucmljaG1lbnQsXG4gICAgICAgICAgICB0aGlzLiNjdXN0b21FbnJpY2htZW50LFxuICAgICAgICApXG4gICAgfVxuICAgIGluZm8obWVzc2FnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93biwgZmllbGRzOiBvYmplY3QgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuI2xldmVsIDwgMykge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jYnVmZmVyLmNvbGxlY3QoXG4gICAgICAgICAgICAnaW5mbycsXG4gICAgICAgICAgICAzLFxuICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgZmllbGRzLFxuICAgICAgICAgICAgdGhpcy4jcmVzZXJ2ZWRFbnJpY2htZW50LFxuICAgICAgICAgICAgdGhpcy4jY3VzdG9tRW5yaWNobWVudCxcbiAgICAgICAgKVxuICAgIH1cbiAgICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I6IHVua25vd24sIGZpZWxkczogb2JqZWN0IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLiNsZXZlbCA8IDIpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2J1ZmZlci5jb2xsZWN0KFxuICAgICAgICAgICAgJ3dhcm5pbmcnLFxuICAgICAgICAgICAgMixcbiAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgIHRoaXMuI3Jlc2VydmVkRW5yaWNobWVudCxcbiAgICAgICAgICAgIHRoaXMuI2N1c3RvbUVucmljaG1lbnQsXG4gICAgICAgIClcbiAgICB9XG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93biwgZmllbGRzOiBvYmplY3QgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuI2xldmVsIDwgMSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jYnVmZmVyLmNvbGxlY3QoXG4gICAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgIHRoaXMuI3Jlc2VydmVkRW5yaWNobWVudCxcbiAgICAgICAgICAgIHRoaXMuI2N1c3RvbUVucmljaG1lbnQsXG4gICAgICAgIClcbiAgICB9XG4gICAgZmF0YWwobWVzc2FnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93biwgZmllbGRzOiBvYmplY3QgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy4jYnVmZmVyLmNvbGxlY3QoXG4gICAgICAgICAgICAnZmF0YWwnLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgIHRoaXMuI3Jlc2VydmVkRW5yaWNobWVudCxcbiAgICAgICAgICAgIHRoaXMuI2N1c3RvbUVucmljaG1lbnQsXG4gICAgICAgIClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVycm9yQXNKc29uKGVycm9yOiB1bmtub3duKTogSnNvbiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGVycm9yID09PSB1bmRlZmluZWQgfHwgZXJyb3IgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICAgICAgICBzdGFjazogZXJyb3Iuc3RhY2ssXG4gICAgICAgICAgICAuLi4oZXJyb3IgYXMgdW5rbm93biBhcyB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSksXG4gICAgICAgIH0gYXMgSnNvblxuICAgIH1cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmVycm9yLFxuICAgICAgICB9IGFzIEpzb25cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWVzc2FnZTogKGVycm9yIGFzIG9iamVjdCB8IHVuZGVmaW5lZCk/LnRvU3RyaW5nKCksXG4gICAgICAgIG5hbWU6IHR5cGVvZiBlcnJvcixcbiAgICB9IGFzIEpzb25cbn1cbiJdfQ==
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvZ2dpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBSTdDLE1BQU0sVUFBVSxVQUFVLENBQ3RCLFNBQXVCLEVBQ3ZCLGVBQXFDLEVBQ3JDLE1BQW1CO0lBRW5CLE9BQU8sSUFBSSxlQUFlLENBQ3RCLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFDaEMsZUFBZTtRQUNYLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FBQyxFQUNQLE1BQU0sQ0FDVCxDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFBO0FBRTlFLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxjQUFzQjtJQUN2RCxNQUFNLFFBQVEsR0FBRywwQkFBMEIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsQ0FBQTtJQUNqRixPQUFPLENBQ0gsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3RELENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ25ELEdBQUcsQ0FDTixDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sU0FBUztJQUNGLFVBQVUsQ0FBYztJQUNqQyxRQUFRLEdBQWUsRUFBRSxDQUFBO0lBQ3pCLEtBQUssR0FBRyxD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RyxLQUFpQixFQUFFLFFBQVEsRUFBRTtRQUN2QyxJQUFJLEVBQUUsT0FBTyxLQUFLO0tBQ2IsQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwZXJmb3JtYW5jZSB9IGZyb20gJ25vZGU6cGVyZl9ob29rcydcbmltcG9ydCB7IEpzb24sIExvZ2dlciB9IGZyb20gJy4uL2NvbnRleHQuanMnXG5pbXBvcnQgeyBMb2dFbnRyeSwgTG9nTGV2ZWwsIExvZ1RyYW5zcG9ydCwgUm9vdExvZ2dlciB9IGZyb20gJy4vY29udGV4dC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VMb2dnZXIoXG4gICAgdHJhbnNwb3J0OiBMb2dUcmFuc3BvcnQsXG4gICAgbWluaW11bUxvZ0xldmVsOiBMb2dMZXZlbCB8IHVuZGVmaW5lZCxcbiAgICBzaWduYWw6IEFib3J0U2lnbmFsLFxuKTogUm9vdExvZ2dlciB7XG4gICAgcmV0dXJuIG5ldyBFbnJpY2hpbmdMb2dnZXIoXG4gICAgICAgIG5ldyBMb2dCdWZmZXIodHJhbnNwb3J0LCBzaWduYWwpLFxuICAgICAgICBtaW5pbXVtTG9nTGV2ZWxcbiAgICAgICAgICAgID8gWydmYXRhbCcsICdlcnJvcicsICd3YXJuaW5nJywgJ2luZm8nLCAnZGVidWcnLCAndHJhY2UnXS5pbmRleE9mKG1pbmltdW1Mb2dMZXZlbClcbiAgICAgICAgICAgIDogNSxcbiAgICAgICAgc2lnbmFsLFxuICAgIClcbn1cblxuY29uc3QgcGVyZm9ybWFuY2VUaW1lT3JpZ2luMTAwbnMgPSBNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKiAxMF8wMDApXG5cbmV4cG9ydCBmdW5jdGlvbiBoaWdoUHJlY2lzaW9uSVNPRGF0ZShwZXJmb3JtYW5jZU5vdzogbnVtYmVyKSB7XG4gICAgY29uc3Qgbm93MTAwbnMgPSBwZXJmb3JtYW5jZVRpbWVPcmlnaW4xMDBucyArIE1hdGgucm91bmQocGVyZm9ybWFuY2VOb3cgKiAxMF8wMDApXG4gICAgcmV0dXJuIChcbiAgICAgICAgbmV3IERhdGUobm93MTAwbnMgLyAxMF8wMDApLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgMjApICtcbiAgICAgICAgKG5vdzEwMG5zICUgMTBfMDAwXzAwMCkudG9TdHJpbmcoKS5wYWRTdGFydCg3LCAnMCcpICtcbiAgICAgICAgJ1onXG4gICAgKVxufVxuXG5jbGFzcyBMb2dCdWZmZXIge1xuICAgIHJlYWRvbmx5ICN0cmFuc3BvcnQ6IExvZ1RyYW5zcG9ydFxuICAgICNlbnRyaWVzOiBMb2dFbnRyeVtdID0gW11cbiAgICAjc2l6ZSA9IDBcbiAgICAjZmx1c2hlcj86IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQgfCB2b2lkXG4gICAgcmVhZG9ubHkgI3NpZ25hbDogQWJvcnRTaWduYWxcbiAgICAjYXN5bmNUcmFuc3BvcnQ6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICAjdGltZW91dDogTm9kZUpTLlRpbWVvdXQgfCB1bmRlZmluZWRcblxuICAgIGNvbnN0cnVjdG9yKHRyYW5zcG9ydDogTG9nVHJhbnNwb3J0LCBzaWduYWw6IEFib3J0U2lnbmFsKSB7XG4gICAgICAgIHRoaXMuI3RyYW5zcG9ydCA9IHRyYW5zcG9ydFxuICAgICAgICB0aGlzLiNzaWduYWwgPSBzaWduYWxcbiAgICB9XG5cbiAgICBjb2xsZWN0KFxuICAgICAgICBsZXZlbDogTG9nTGV2ZWwsXG4gICAgICAgIG51bWVyaWNMb2dMZXZlbDogbnVtYmVyLFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGVycm9yOiB1bmtub3duLFxuICAgICAgICBmaWVsZHM6IG9iamVjdCB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmVzZXJ2ZWRFbnJpY2htZW50OiBvYmplY3QgfCB1bmRlZmluZWQsXG4gICAgICAgIGN1c3RvbUVucmljaG1lbnQ6IG9iamVjdCB8IHVuZGVmaW5lZCxcbiAgICApIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLiN0b0VudHJ5KFxuICAgICAgICAgICAgaGlnaFByZWNpc2lvbklTT0RhdGUob2Zmc2V0KSxcbiAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgZmllbGRzLFxuICAgICAgICAgICAgcmVzZXJ2ZWRFbnJpY2htZW50LFxuICAgICAgICAgICAgY3VzdG9tRW5yaWNobWVudCxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLiNlbnRyaWVzLnB1c2goZW50cnkpXG4gICAgICAgIHRoaXMuI3NpemUgKz0gZW50cnkuanNvbi5sZW5ndGhcblxuICAgICAgICBpZiAodGhpcy4jYXN5bmNUcmFuc3BvcnQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdm9pZFxuICAgICAgICAgICAgdm9pZCB0aGlzLiN0cmFuc3BvcnQuc2VuZEVudHJpZXModGhpcy4jZW50cmllcywgdGhpcy4jc2lnbmFsKVxuICAgICAgICAgICAgdGhpcy4jZW50cmllcyA9IFtdXG4gICAgICAgICAgICB0aGlzLiNzaXplID0gMFxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuI2FzeW5jVHJhbnNwb3J0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI2FzeW5jVHJhbnNwb3J0ID0gdHJ1ZVxuICAgICAgICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy4jZmx1c2hlcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VuZFJlc3VsdCA9IHRoaXMuI3RyYW5zcG9ydC5zZW5kRW50cmllcyh0aGlzLiNlbnRyaWVzLCB0aGlzLiNzaWduYWwpXG4gICAgICAgICAgICAgICAgdGhpcy4jZW50cmllcyA9IFtdXG4gICAgICAgICAgICAgICAgdGhpcy4jc2l6ZSA9IDBcbiAgICAgICAgICAgICAgICBpZiAoc2VuZFJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNmbHVzaGVyID0gc2VuZFJlc3VsdFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2FzeW5jVHJhbnNwb3J0ID0gZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG51bWVyaWNMb2dMZXZlbCA8IDIgfHwgdGhpcy4jZW50cmllcy5sZW5ndGggPiA4IHx8IHRoaXMuI3NpemUgPiA2NF8wMDApIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdm9pZFxuICAgICAgICAgICAgICAgIHZvaWQgdGhpcy5mbHVzaCgpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuI3RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgICAgICAgICAgICAgICAgdm9pZCB0aGlzLmZsdXNoKClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jdGltZW91dCA9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH0sIDIwMDApXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuI2VudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNzdGFydEZsdXNoKHRoaXMuI2VudHJpZXMpXG4gICAgICAgIHRoaXMuI2VudHJpZXMgPSBbXVxuICAgICAgICB0aGlzLiNzaXplID0gMFxuICAgICAgICBpZiAodGhpcy4jdGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuI3RpbWVvdXQpXG4gICAgICAgICAgICB0aGlzLiN0aW1lb3V0ID0gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuI2ZsdXNoZXJcbiAgICB9XG5cbiAgICAjc3RhcnRGbHVzaChlbnRyaWVzOiBMb2dFbnRyeVtdKSB7XG4gICAgICAgIGlmICh0aGlzLiNmbHVzaGVyKSB7XG4gICAgICAgICAgICB0aGlzLiNmbHVzaGVyID0gdGhpcy4jZmx1c2hlci50aGVuKCgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy4jdHJhbnNwb3J0LnNlbmRFbnRyaWVzKGVudHJpZXMsIHRoaXMuI3NpZ25hbCksXG4gICAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiNmbHVzaGVyID0gdGhpcy4jdHJhbnNwb3J0LnNlbmRFbnRyaWVzKGVudHJpZXMsIHRoaXMuI3NpZ25hbClcbiAgICAgICAgfVxuICAgIH1cblxuICAgICN0b0VudHJ5KFxuICAgICAgICB0aW1lc3RhbXA6IHN0cmluZyxcbiAgICAgICAgb2Zmc2V0OiBudW1iZXIsXG4gICAgICAgIGxldmVsOiBMb2dMZXZlbCxcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBlcnJvcjogdW5rbm93bixcbiAgICAgICAgZmllbGRzOiBvYmplY3QgfCB1bmRlZmluZWQsXG4gICAgICAgIHJlc2VydmVkRW5yaWNobWVudDogb2JqZWN0IHwgdW5kZWZpbmVkLFxuICAgICAgICBjdXN0b21FbnJpY2htZW50OiBvYmplY3QgfCB1bmRlZmluZWQsXG4gICAgKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogb2Zmc2V0LFxuICAgICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAganNvbjogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JBc0pzb24oZXJyb3IsIDApLFxuICAgICAgICAgICAgICAgICAgICAuLi5yZXNlcnZlZEVucmljaG1lbnQsXG4gICAgICAgICAgICAgICAgICAgIC4uLmV4dHJhKGZpZWxkcywgY3VzdG9tRW5yaWNobWVudCksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuY29sbGVjdChcbiAgICAgICAgICAgICAgICAnd2FybmluZycsXG4gICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAnRXJyb3Igc2VyaWFsaXppbmcgZXJyb3IuJyxcbiAgICAgICAgICAgICAgICBlLFxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICByZXNlcnZlZEVucmljaG1lbnQsXG4gICAgICAgICAgICAgICAgY3VzdG9tRW5yaWNobWVudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBvZmZzZXQsXG4gICAgICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgICBqc29uOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBzYWZlRXJyb3JBc0pzb24oZXJyb3IsIDApLFxuICAgICAgICAgICAgICAgICAgICAuLi5yZXNlcnZlZEVucmljaG1lbnQsXG4gICAgICAgICAgICAgICAgICAgIC4uLmV4dHJhKGZpZWxkcywgY3VzdG9tRW5yaWNobWVudCksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGV4dHJhKGZpZWxkczogb2JqZWN0IHwgdW5kZWZpbmVkLCBjdXN0b21FbnJpY2htZW50OiBvYmplY3QgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWZpZWxkcykge1xuICAgICAgICBpZiAoIWN1c3RvbUVucmljaG1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VzdG9tRW5yaWNobWVudFxuICAgIH1cbiAgICBpZiAoIWN1c3RvbUVucmljaG1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkc1xuICAgIH1cbiAgICByZXR1cm4geyAuLi5jdXN0b21FbnJpY2htZW50LCAuLi5maWVsZHMgfVxufVxuXG5jbGFzcyBFbnJpY2hpbmdMb2dnZXIgaW1wbGVtZW50cyBMb2dnZXIge1xuICAgIHJlYWRvbmx5ICNidWZmZXI6IExvZ0J1ZmZlclxuICAgIHJlYWRvbmx5ICNyZXNlcnZlZEVucmljaG1lbnQ/OiBvYmplY3RcbiAgICByZWFkb25seSAjY3VzdG9tRW5yaWNobWVudD86IG9iamVjdFxuICAgIHJlYWRvbmx5ICNsZXZlbDogbnVtYmVyXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgYnVmZmVyOiBMb2dCdWZmZXIsXG4gICAgICAgIGxldmVsOiBudW1iZXIsXG4gICAgICAgIHJlc2VydmVkRW5yaWNobWVudD86IG9iamVjdCxcbiAgICAgICAgY3VzdG9tRW5yaWNobWVudD86IG9iamVjdCxcbiAgICApIHtcbiAgICAgICAgdGhpcy4jYnVmZmVyID0gYnVmZmVyXG4gICAgICAgIHRoaXMuI2xldmVsID0gbGV2ZWxcbiAgICAgICAgdGhpcy4jcmVzZXJ2ZWRFbnJpY2htZW50ID0gcmVzZXJ2ZWRFbnJpY2htZW50XG4gICAgICAgIHRoaXMuI2N1c3RvbUVucmljaG1lbnQgPSBjdXN0b21FbnJpY2htZW50XG4gICAgfVxuXG4gICAgZW5yaWNoKGZpZWxkczogb2JqZWN0KTogTG9nZ2VyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFbnJpY2hpbmdMb2dnZXIodGhpcy4jYnVmZmVyLCB0aGlzLiNsZXZlbCwgdGhpcy4jcmVzZXJ2ZWRFbnJpY2htZW50LCB7XG4gICAgICAgICAgICAuLi50aGlzLiNjdXN0b21FbnJpY2htZW50LFxuICAgICAgICAgICAgLi4uZmllbGRzLFxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGZsdXNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jYnVmZmVyLmZsdXNoKClcbiAgICB9XG5cbiAgICBlbnJpY2hSZXNlcnZlZChmaWVsZHM6IG9iamVjdCk6IEVucmljaGluZ0xvZ2dlciB7XG4gICAgICAgIHJldHVybiBuZXcgRW5yaWNoaW5nTG9nZ2VyKFxuICAgICAgICAgICAgdGhpcy4jYnVmZmVyLFxuICAgICAgICAgICAgdGhpcy4jbGV2ZWwsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy4jcmVzZXJ2ZWRFbnJpY2htZW50LFxuICAgICAgICAgICAgICAgIC4uLmZpZWxkcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLiNjdXN0b21FbnJpY2htZW50LFxuICAgICAgICApXG4gICAgfVxuXG4gICAgdHJhY2UobWVzc2FnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93biwgZmllbGRzOiBvYmplY3QgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuI2xldmVsIDwgNSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jYnVmZmVyLmNvbGxlY3QoXG4gICAgICAgICAgICAndHJhY2UnLFxuICAgICAgICAgICAgNSxcbiAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgIHRoaXMuI3Jlc2VydmVkRW5yaWNobWVudCxcbiAgICAgICAgICAgIHRoaXMuI2N1c3RvbUVucmljaG1lbnQsXG4gICAgICAgIClcbiAgICB9XG4gICAgZGVidWcobWVzc2FnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93biwgZmllbGRzOiBvYmplY3QgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuI2xldmVsIDwgNCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jYnVmZmVyLmNvbGxlY3QoXG4gICAgICAgICAgICAnZGVidWcnLFxuICAgICAgICAgICAgNCxcbiAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgIHRoaXMuI3Jlc2VydmVkRW5yaWNobWVudCxcbiAgICAgICAgICAgIHRoaXMuI2N1c3RvbUVucmljaG1lbnQsXG4gICAgICAgIClcbiAgICB9XG4gICAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duLCBmaWVsZHM6IG9iamVjdCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy4jbGV2ZWwgPCAzKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNidWZmZXIuY29sbGVjdChcbiAgICAgICAgICAgICdpbmZvJyxcbiAgICAgICAgICAgIDMsXG4gICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICB0aGlzLiNyZXNlcnZlZEVucmljaG1lbnQsXG4gICAgICAgICAgICB0aGlzLiNjdXN0b21FbnJpY2htZW50LFxuICAgICAgICApXG4gICAgfVxuICAgIHdhcm4obWVzc2FnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93biwgZmllbGRzOiBvYmplY3QgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuI2xldmVsIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jYnVmZmVyLmNvbGxlY3QoXG4gICAgICAgICAgICAnd2FybmluZycsXG4gICAgICAgICAgICAyLFxuICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgZmllbGRzLFxuICAgICAgICAgICAgdGhpcy4jcmVzZXJ2ZWRFbnJpY2htZW50LFxuICAgICAgICAgICAgdGhpcy4jY3VzdG9tRW5yaWNobWVudCxcbiAgICAgICAgKVxuICAgIH1cbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duLCBmaWVsZHM6IG9iamVjdCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy4jbGV2ZWwgPCAxKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNidWZmZXIuY29sbGVjdChcbiAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAxLFxuICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgZmllbGRzLFxuICAgICAgICAgICAgdGhpcy4jcmVzZXJ2ZWRFbnJpY2htZW50LFxuICAgICAgICAgICAgdGhpcy4jY3VzdG9tRW5yaWNobWVudCxcbiAgICAgICAgKVxuICAgIH1cbiAgICBmYXRhbChtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duLCBmaWVsZHM6IG9iamVjdCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICB0aGlzLiNidWZmZXIuY29sbGVjdChcbiAgICAgICAgICAgICdmYXRhbCcsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgZmllbGRzLFxuICAgICAgICAgICAgdGhpcy4jcmVzZXJ2ZWRFbnJpY2htZW50LFxuICAgICAgICAgICAgdGhpcy4jY3VzdG9tRW5yaWNobWVudCxcbiAgICAgICAgKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZXJyb3JBc0pzb24oZXJyb3I6IHVua25vd24sIGRlcHRoOiBudW1iZXIpOiBKc29uIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZXJyb3IgPT09IHVuZGVmaW5lZCB8fCBlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmIChkZXB0aCA+IDUpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICAgICAgICBzdGFjazogZXJyb3Iuc3RhY2ssXG4gICAgICAgICAgICBjYXVzZTogZXJyb3JBc0pzb24oZXJyb3IuY2F1c2UsIGRlcHRoICsgMSksXG4gICAgICAgICAgICBlcnJvcnM6IGVycm9yQXNKc29uKChlcnJvciBhcyB7IGVycm9ycz86IHVua25vd24gfSkuZXJyb3JzLCBkZXB0aCArIDEpLFxuICAgICAgICAgICAgLi4uKGVycm9yIGFzIHVua25vd24gYXMgeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0pLFxuICAgICAgICB9IGFzIEpzb25cbiAgICB9XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yKSkge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yLm1hcChlcnJvckFzSnNvbikgYXMgSnNvblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW1pc3VzZWQtc3ByZWFkXG4gICAgICAgICAgICAuLi5lcnJvcixcbiAgICAgICAgfSBhcyBKc29uXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1lc3NhZ2U6IChlcnJvciBhcyB1bmtub3duKT8udG9TdHJpbmcoKSxcbiAgICAgICAgbmFtZTogdHlwZW9mIGVycm9yLFxuICAgIH0gYXMgSnNvblxufVxuXG5mdW5jdGlvbiBzYWZlRXJyb3JBc0pzb24oZXJyb3I6IHVua25vd24sIGRlcHRoOiBudW1iZXIpOiBKc29uIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZXJyb3IgPT09IHVuZGVmaW5lZCB8fCBlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmIChkZXB0aCA+IDUpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICAgICAgICBzdGFjazogZXJyb3Iuc3RhY2ssXG4gICAgICAgICAgICBjYXVzZTogc2FmZUVycm9yQXNKc29uKGVycm9yLmNhdXNlLCBkZXB0aCArIDEpLFxuICAgICAgICAgICAgZXJyb3JzOiBzYWZlRXJyb3JBc0pzb24oKGVycm9yIGFzIHsgZXJyb3JzPzogdW5rbm93biB9KS5lcnJvcnMsIGRlcHRoICsgMSksXG4gICAgICAgIH0gYXMgSnNvblxuICAgIH1cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3IubWFwKHNhZmVFcnJvckFzSnNvbikgYXMgSnNvblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW1pc3VzZWQtc3ByZWFkXG4gICAgICAgICAgICAuLi5lcnJvcixcbiAgICAgICAgfSBhcyBKc29uXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1lc3NhZ2U6IChlcnJvciBhcyB1bmtub3duKT8udG9TdHJpbmcoKSxcbiAgICAgICAgbmFtZTogdHlwZW9mIGVycm9yLFxuICAgIH0gYXMgSnNvblxufVxuIl19
|
package/host/meta.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { HandlerConfiguration } from '../context.js';
|
|
2
|
+
export type PackageConfiguration = HandlerConfiguration & {};
|
|
3
|
+
export type FullConfiguration = PackageConfiguration & HandlerConfiguration;
|
|
4
|
+
export declare function combineConfig(base: PackageConfiguration | undefined, override: HandlerConfiguration | undefined): FullConfiguration | undefined;
|
|
5
|
+
export declare function setMeta(packageName: string, fileName: string, revision: string | undefined, config: PackageConfiguration | undefined): void;
|
|
6
|
+
export type Metadata = {
|
|
7
|
+
packageName: string;
|
|
8
|
+
fileName: string;
|
|
9
|
+
revision: string | undefined;
|
|
10
|
+
config?: PackageConfiguration;
|
|
11
|
+
};
|
|
12
|
+
export declare function getMetadata(): Metadata | undefined;
|
package/host/meta.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function combineConfig(base, override) {
|
|
2
|
+
if (base === undefined) {
|
|
3
|
+
return override;
|
|
4
|
+
}
|
|
5
|
+
else if (override === undefined) {
|
|
6
|
+
return base;
|
|
7
|
+
}
|
|
8
|
+
return { ...base, ...override };
|
|
9
|
+
}
|
|
10
|
+
let metadata;
|
|
11
|
+
export function setMeta(packageName, fileName, revision, config) {
|
|
12
|
+
metadata = {
|
|
13
|
+
packageName,
|
|
14
|
+
fileName,
|
|
15
|
+
revision,
|
|
16
|
+
config,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function getMetadata() {
|
|
20
|
+
return metadata;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1ldGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxVQUFVLGFBQWEsQ0FDekIsSUFBc0MsRUFDdEMsUUFBMEM7SUFFMUMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDckIsT0FBTyxRQUFRLENBQUE7SUFDbkIsQ0FBQztTQUFNLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUNELE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFBO0FBQ25DLENBQUM7QUFFRCxJQUFJLFFBQThCLENBQUE7QUFFbEMsTUFBTSxVQUFVLE9BQU8sQ0FDbkIsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsUUFBNEIsRUFDNUIsTUFBd0M7SUFFeEMsUUFBUSxHQUFHO1FBQ1AsV0FBVztRQUNYLFFBQVE7UUFDUixRQUFRO1FBQ1IsTUFBTTtLQUNULENBQUE7QUFDTCxDQUFDO0FBU0QsTUFBTSxVQUFVLFdBQVc7SUFDdkIsT0FBTyxRQUFRLENBQUE7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSGFuZGxlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9jb250ZXh0LmpzJ1xuXG5leHBvcnQgdHlwZSBQYWNrYWdlQ29uZmlndXJhdGlvbiA9IEhhbmRsZXJDb25maWd1cmF0aW9uICYge1xuICAgIC8vIFBsYWNlaG9sZGVyIGZvciBwYWNrYWdlLWxldmVsIGNvbmZpZ3VyYXRpb25zXG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHVwbGljYXRlLXR5cGUtY29uc3RpdHVlbnRzXG5leHBvcnQgdHlwZSBGdWxsQ29uZmlndXJhdGlvbiA9IFBhY2thZ2VDb25maWd1cmF0aW9uICYgSGFuZGxlckNvbmZpZ3VyYXRpb25cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVDb25maWcoXG4gICAgYmFzZTogUGFja2FnZUNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4gICAgb3ZlcnJpZGU6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuKTogRnVsbENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQge1xuICAgIGlmIChiYXNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlXG4gICAgfSBlbHNlIGlmIChvdmVycmlkZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBiYXNlXG4gICAgfVxuICAgIHJldHVybiB7IC4uLmJhc2UsIC4uLm92ZXJyaWRlIH1cbn1cblxubGV0IG1ldGFkYXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZFxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TWV0YShcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgcmV2aXNpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBjb25maWc6IFBhY2thZ2VDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuKSB7XG4gICAgbWV0YWRhdGEgPSB7XG4gICAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgcmV2aXNpb24sXG4gICAgICAgIGNvbmZpZyxcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIE1ldGFkYXRhID0ge1xuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmdcbiAgICBmaWxlTmFtZTogc3RyaW5nXG4gICAgcmV2aXNpb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgIGNvbmZpZz86IFBhY2thZ2VDb25maWd1cmF0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRhZGF0YSgpIHtcbiAgICByZXR1cm4gbWV0YWRhdGFcbn1cbiJdfQ==
|
package/host/reflect.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { HandlerConfiguration } from '../context.js';
|
|
2
|
+
import type { HttpHandlerConfiguration } from '../http.js';
|
|
3
|
+
import type { TimerHandlerConfiguration } from '../timer.js';
|
|
2
4
|
type CPU = 'arm' | 'arm64' | 'ia32' | 'mips' | 'mipsel' | 'ppc' | 'ppc64' | 's390' | 's390x' | 'x32' | 'x64';
|
|
3
5
|
type CpuConfig = CPU | `!${CPU}`;
|
|
4
6
|
type OSConfig = NodeJS.Platform | `!${NodeJS.Platform}`;
|
|
@@ -9,13 +11,24 @@ export type PackageJsonConfiguration = {
|
|
|
9
11
|
};
|
|
10
12
|
export type Reflection = {
|
|
11
13
|
name: string;
|
|
14
|
+
revision: string | undefined;
|
|
12
15
|
http: {
|
|
13
16
|
name: string;
|
|
14
17
|
method: string;
|
|
15
18
|
pathPattern: string;
|
|
16
|
-
pathRegExp: RegExp;
|
|
17
19
|
config: HttpHandlerConfiguration & PackageJsonConfiguration;
|
|
18
20
|
}[];
|
|
21
|
+
timers: {
|
|
22
|
+
name: string;
|
|
23
|
+
schedule: string;
|
|
24
|
+
config: TimerHandlerConfiguration & PackageJsonConfiguration;
|
|
25
|
+
}[];
|
|
26
|
+
events: {
|
|
27
|
+
name: string;
|
|
28
|
+
topic: string;
|
|
29
|
+
type: string;
|
|
30
|
+
config: HandlerConfiguration & PackageJsonConfiguration;
|
|
31
|
+
}[];
|
|
19
32
|
};
|
|
20
33
|
export declare function resolveCpu(config: PackageJsonConfiguration, supported: CPU[]): CPU;
|
|
21
34
|
export declare function resolveOS(config: PackageJsonConfiguration, supported: NodeJS.Platform[]): NodeJS.Platform;
|
package/host/reflect.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readdir, readFile } from 'node:fs/promises';
|
|
2
2
|
import { basename, extname, join, resolve } from 'node:path';
|
|
3
3
|
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { getHash } from './git.js';
|
|
4
5
|
export function resolveCpu(config, supported) {
|
|
5
6
|
const resolved = resolveSupported(config.cpus, supported);
|
|
6
7
|
if (!resolved) {
|
|
@@ -26,17 +27,22 @@ function resolveSupported(config, supported) {
|
|
|
26
27
|
return supported.find(s => config.includes(s) && !config.includes(`!${s}`));
|
|
27
28
|
}
|
|
28
29
|
export async function reflect(path) {
|
|
29
|
-
const packageJson = await readConfig();
|
|
30
30
|
const absolutePath = resolve(process.cwd(), path);
|
|
31
|
-
const
|
|
31
|
+
const [packageJson, allFiles, revision] = await Promise.all([
|
|
32
|
+
readConfig(absolutePath),
|
|
33
|
+
readdir(absolutePath),
|
|
34
|
+
getHash(absolutePath),
|
|
35
|
+
]);
|
|
36
|
+
const files = allFiles.filter(file => extname(file) === '.ts' && !file.endsWith('.d.ts'));
|
|
32
37
|
const { getHandlers, setMeta } = (await import(pathToFileURL(join(absolutePath, 'node_modules/@riddance/host/host/registry.js')).toString()));
|
|
33
38
|
for (const file of files) {
|
|
34
39
|
const base = basename(file, '.ts');
|
|
35
|
-
setMeta(packageJson.name, base,
|
|
40
|
+
setMeta(packageJson.name, base, revision, packageJson.config);
|
|
36
41
|
await import(pathToFileURL(join(absolutePath, base + '.js')).toString());
|
|
37
42
|
}
|
|
38
43
|
return {
|
|
39
44
|
name: packageJson.name,
|
|
45
|
+
revision,
|
|
40
46
|
http: getHandlers('http').map(h => ({
|
|
41
47
|
config: {
|
|
42
48
|
...h.config,
|
|
@@ -47,12 +53,32 @@ export async function reflect(path) {
|
|
|
47
53
|
name: h.meta?.fileName ?? '',
|
|
48
54
|
method: h.method,
|
|
49
55
|
pathPattern: h.pathPattern,
|
|
50
|
-
|
|
56
|
+
})),
|
|
57
|
+
timers: getHandlers('timer').map(h => ({
|
|
58
|
+
config: {
|
|
59
|
+
...h.config,
|
|
60
|
+
cpus: packageJson.cpu,
|
|
61
|
+
os: packageJson.os,
|
|
62
|
+
nodeVersion: packageJson.engines?.node,
|
|
63
|
+
},
|
|
64
|
+
name: h.meta?.fileName ?? '',
|
|
65
|
+
schedule: h.schedule,
|
|
66
|
+
})),
|
|
67
|
+
events: getHandlers('event').map(h => ({
|
|
68
|
+
config: {
|
|
69
|
+
...h.config,
|
|
70
|
+
cpus: packageJson.cpu,
|
|
71
|
+
os: packageJson.os,
|
|
72
|
+
nodeVersion: packageJson.engines?.node,
|
|
73
|
+
},
|
|
74
|
+
name: h.meta?.fileName ?? '',
|
|
75
|
+
topic: h.topic,
|
|
76
|
+
type: h.type,
|
|
51
77
|
})),
|
|
52
78
|
};
|
|
53
79
|
}
|
|
54
|
-
async function readConfig() {
|
|
55
|
-
const packageJson = JSON.parse(await readFile('package.json', 'utf-8'));
|
|
80
|
+
async function readConfig(path) {
|
|
81
|
+
const packageJson = JSON.parse(await readFile(join(path, 'package.json'), 'utf-8'));
|
|
56
82
|
return packageJson;
|
|
57
83
|
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlZmxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFvQ3hDLE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBZ0MsRUFBRSxTQUFnQjtJQUN6RSxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3pELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNaLDBHQUEwRztRQUMxRyxvRUFBb0U7UUFDcEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsSUFBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQTtBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FDckIsTUFBZ0MsRUFDaEMsU0FBNEI7SUFFNUIsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN2RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDWiwwR0FBMEc7UUFDMUcsb0VBQW9FO1FBQ3BFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLEdBQUcsTUFBTSxDQUFDLEVBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUE7QUFDbkIsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQ3JCLE1BQW1DLEVBQ25DLFNBQWM7SUFFZCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDVixPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDL0UsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxDQUFDLElBQVk7SUFDdEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxVQUFVLEVBQUUsQ0FBQTtJQUN0QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2pELE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzlDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQzdELENBQUE7SUFDRCxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxNQUFNLENBQzFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLDhDQUE4QyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FDL0YsQ0FlQSxDQUFBO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzlELE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDNUUsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7UUFDdEIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sRUFBRTtnQkFDSixHQUFHLENBQUMsQ0FBQyxNQUFNO2dCQUNYLElBQUksRUFBRSxXQUFXLENBQUMsR0FBRztnQkFDckIsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFO2dCQUNsQixXQUFXLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJO2FBQ3pDO1lBQ0QsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDNUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO1lBQ2hCLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVztZQUMxQixVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVU7U0FDM0IsQ0FBQyxDQUFDO0tBQ04sQ0FBQTtBQUNMLENBQUM7QUFFRCxLQUFLLFVBQVUsVUFBVTtJQUNyQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FNckUsQ0FBQTtJQUNELE9BQU8sV0FBVyxDQUFBO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkZGlyLCByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBiYXNlbmFtZSwgZXh0bmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCdcbmltcG9ydCB7IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2h0dHAuanMnXG5pbXBvcnQgeyBQYWNrYWdlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vcmVnaXN0cnkuanMnXG5cbnR5cGUgQ1BVID1cbiAgICB8ICdhcm0nXG4gICAgfCAnYXJtNjQnXG4gICAgfCAnaWEzMidcbiAgICB8ICdtaXBzJ1xuICAgIHwgJ21pcHNlbCdcbiAgICB8ICdwcGMnXG4gICAgfCAncHBjNjQnXG4gICAgfCAnczM5MCdcbiAgICB8ICdzMzkweCdcbiAgICB8ICd4MzInXG4gICAgfCAneDY0J1xudHlwZSBDcHVDb25maWcgPSBDUFUgfCBgISR7Q1BVfWBcbnR5cGUgT1NDb25maWcgPSBOb2RlSlMuUGxhdGZvcm0gfCBgISR7Tm9kZUpTLlBsYXRmb3JtfWBcblxuZXhwb3J0IHR5cGUgUGFja2FnZUpzb25Db25maWd1cmF0aW9uID0ge1xuICAgIG5vZGVWZXJzaW9uPzogc3RyaW5nXG4gICAgY3B1cz86IENwdUNvbmZpZ1tdXG4gICAgb3M/OiBPU0NvbmZpZ1tdXG59XG5cbmV4cG9ydCB0eXBlIFJlZmxlY3Rpb24gPSB7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgaHR0cDoge1xuICAgICAgICBuYW1lOiBzdHJpbmdcbiAgICAgICAgbWV0aG9kOiBzdHJpbmdcbiAgICAgICAgcGF0aFBhdHRlcm46IHN0cmluZ1xuICAgICAgICBwYXRoUmVnRXhwOiBSZWdFeHBcbiAgICAgICAgY29uZmlnOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gJiBQYWNrYWdlSnNvbkNvbmZpZ3VyYXRpb25cbiAgICB9W11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDcHUoY29uZmlnOiBQYWNrYWdlSnNvbkNvbmZpZ3VyYXRpb24sIHN1cHBvcnRlZDogQ1BVW10pOiBDUFUge1xuICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVN1cHBvcnRlZChjb25maWcuY3B1cywgc3VwcG9ydGVkKVxuICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgLy8gcmVzb2x2ZTxUPihjb25maWcsIHN1cHBvcnRlZCkgYWN0dWFsbHkgYXNzZXJ0cyBjb25maWcgaXMgKFQgfCBgISR7VH1gKVtdLCBidXQgdGhhdCdzIG5vdCBzdXBwb3J0ZWQgeWV0LlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIENQVXM6ICcgKyBjb25maWcuY3B1cyEuam9pbignLCAnKSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlT1MoXG4gICAgY29uZmlnOiBQYWNrYWdlSnNvbkNvbmZpZ3VyYXRpb24sXG4gICAgc3VwcG9ydGVkOiBOb2RlSlMuUGxhdGZvcm1bXSxcbik6IE5vZGVKUy5QbGF0Zm9ybSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlU3VwcG9ydGVkKGNvbmZpZy5vcywgc3VwcG9ydGVkKVxuICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgLy8gcmVzb2x2ZTxUPihjb25maWcsIHN1cHBvcnRlZCkgYWN0dWFsbHkgYXNzZXJ0cyBjb25maWcgaXMgKFQgfCBgISR7VH1gKVtdLCBidXQgdGhhdCdzIG5vdCBzdXBwb3J0ZWQgeWV0LlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG9wZXJhdGluZyBzeXN0ZW1zOiAnICsgY29uZmlnLm9zIS5qb2luKCcsICcpKVxuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZWRcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVN1cHBvcnRlZDxUIGV4dGVuZHMgc3RyaW5nPihcbiAgICBjb25maWc6IChUIHwgYCEke1R9YClbXSB8IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0ZWQ6IFRbXSxcbik6IFQgfCB1bmRlZmluZWQge1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBzdXBwb3J0ZWRbMF1cbiAgICB9XG4gICAgcmV0dXJuIHN1cHBvcnRlZC5maW5kKHMgPT4gY29uZmlnLmluY2x1ZGVzKHMpICYmICFjb25maWcuaW5jbHVkZXMoYCEke3N9YCkpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWZsZWN0KHBhdGg6IHN0cmluZyk6IFByb21pc2U8UmVmbGVjdGlvbj4ge1xuICAgIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZENvbmZpZygpXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gcmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBwYXRoKVxuICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IHJlYWRkaXIoYWJzb2x1dGVQYXRoKSkuZmlsdGVyKFxuICAgICAgICBmaWxlID0+IGV4dG5hbWUoZmlsZSkgPT09ICcudHMnICYmICFmaWxlLmVuZHNXaXRoKCcuZC50cycpLFxuICAgIClcbiAgICBjb25zdCB7IGdldEhhbmRsZXJzLCBzZXRNZXRhIH0gPSAoYXdhaXQgaW1wb3J0KFxuICAgICAgICBwYXRoVG9GaWxlVVJMKGpvaW4oYWJzb2x1dGVQYXRoLCAnbm9kZV9tb2R1bGVzL0ByaWRkYW5jZS9ob3N0L2hvc3QvcmVnaXN0cnkuanMnKSkudG9TdHJpbmcoKVxuICAgICkpIGFzIHtcbiAgICAgICAgZ2V0SGFuZGxlcnM6ICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgICAgICAgbWV0YT86IHsgZmlsZU5hbWU6IHN0cmluZyB9XG4gICAgICAgICAgICBjb25maWc6IEh0dHBIYW5kbGVyQ29uZmlndXJhdGlvblxuICAgICAgICAgICAgbWV0aG9kOiBzdHJpbmdcbiAgICAgICAgICAgIHBhdGhQYXR0ZXJuOiBzdHJpbmdcbiAgICAgICAgICAgIHBhdGhSZWdFeHA6IFJlZ0V4cFxuICAgICAgICB9W11cbiAgICAgICAgc2V0TWV0YTogKFxuICAgICAgICAgICAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICByZXY6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNmZzogUGFja2FnZUNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4gICAgICAgICkgPT4gdm9pZFxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBjb25zdCBiYXNlID0gYmFzZW5hbWUoZmlsZSwgJy50cycpXG4gICAgICAgIHNldE1ldGEocGFja2FnZUpzb24ubmFtZSwgYmFzZSwgdW5kZWZpbmVkLCBwYWNrYWdlSnNvbi5jb25maWcpXG4gICAgICAgIGF3YWl0IGltcG9ydChwYXRoVG9GaWxlVVJMKGpvaW4oYWJzb2x1dGVQYXRoLCBiYXNlICsgJy5qcycpKS50b1N0cmluZygpKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHBhY2thZ2VKc29uLm5hbWUsXG4gICAgICAgIGh0dHA6IGdldEhhbmRsZXJzKCdodHRwJykubWFwKGggPT4gKHtcbiAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICAgIC4uLmguY29uZmlnLFxuICAgICAgICAgICAgICAgIGNwdXM6IHBhY2thZ2VKc29uLmNwdSxcbiAgICAgICAgICAgICAgICBvczogcGFja2FnZUpzb24ub3MsXG4gICAgICAgICAgICAgICAgbm9kZVZlcnNpb246IHBhY2thZ2VKc29uLmVuZ2luZXM/Lm5vZGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogaC5tZXRhPy5maWxlTmFtZSA/PyAnJyxcbiAgICAgICAgICAgIG1ldGhvZDogaC5tZXRob2QsXG4gICAgICAgICAgICBwYXRoUGF0dGVybjogaC5wYXRoUGF0dGVybixcbiAgICAgICAgICAgIHBhdGhSZWdFeHA6IGgucGF0aFJlZ0V4cCxcbiAgICAgICAgfSkpLFxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZENvbmZpZygpIHtcbiAgICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoJ3BhY2thZ2UuanNvbicsICd1dGYtOCcpKSBhcyB7XG4gICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgICBlbmdpbmVzPzogeyBbZW5naW5lOiBzdHJpbmddOiBzdHJpbmcgfVxuICAgICAgICBjcHU/OiBDcHVDb25maWdbXVxuICAgICAgICBvcz86IE9TQ29uZmlnW11cbiAgICAgICAgY29uZmlnPzogb2JqZWN0XG4gICAgfVxuICAgIHJldHVybiBwYWNrYWdlSnNvblxufVxuIl19
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlZmxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFJeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQStDbEMsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFnQyxFQUFFLFNBQWdCO0lBQ3pFLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDekQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ1osMEdBQTBHO1FBQzFHLG9FQUFvRTtRQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxJQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbkUsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFBO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUNyQixNQUFnQyxFQUNoQyxTQUE0QjtJQUU1QixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3ZELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNaLDBHQUEwRztRQUMxRyxvRUFBb0U7UUFDcEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsR0FBRyxNQUFNLENBQUMsRUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzlFLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQTtBQUNuQixDQUFDO0FB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WUFDNUIsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO1NBQ3ZCLENBQUMsQ0FBQztRQUNILE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQyxNQUFNLEVBQUU7Z0JBQ0osR0FBRyxDQUFDLENBQUMsTUFBTTtnQkFDWCxJQUFJLEVBQUUsV0FBVyxDQUFDLEdBQUc7Z0JBQ3JCLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRTtnQkFDbEIsV0FBVyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSTthQUN6QztZQUNELElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxFQUFFO1lBQzVCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztZQUNkLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtTQUNmLENBQUMsQ0FBQztLQUNOLENBQUE7QUFDTCxDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxJQUFZO0lBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FNakYsQ0FBQTtJQUNELE9BQU8sV0FBVyxDQUFBO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkZGlyLCByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBiYXNlbmFtZSwgZXh0bmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCdcbmltcG9ydCB0eXBlIHsgSGFuZGxlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHR5cGUgeyBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9odHRwLmpzJ1xuaW1wb3J0IHR5cGUgeyBUaW1lckhhbmRsZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vdGltZXIuanMnXG5pbXBvcnQgeyBnZXRIYXNoIH0gZnJvbSAnLi9naXQuanMnXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9tZXRhLmpzJ1xuaW1wb3J0IHR5cGUgeyBIYW5kbGVyc0dldHRlciB9IGZyb20gJy4vcmVnaXN0cnkuanMnXG5cbnR5cGUgQ1BVID1cbiAgICB8ICdhcm0nXG4gICAgfCAnYXJtNjQnXG4gICAgfCAnaWEzMidcbiAgICB8ICdtaXBzJ1xuICAgIHwgJ21pcHNlbCdcbiAgICB8ICdwcGMnXG4gICAgfCAncHBjNjQnXG4gICAgfCAnczM5MCdcbiAgICB8ICdzMzkweCdcbiAgICB8ICd4MzInXG4gICAgfCAneDY0J1xudHlwZSBDcHVDb25maWcgPSBDUFUgfCBgISR7Q1BVfWBcbnR5cGUgT1NDb25maWcgPSBOb2RlSlMuUGxhdGZvcm0gfCBgISR7Tm9kZUpTLlBsYXRmb3JtfWBcblxuZXhwb3J0IHR5cGUgUGFja2FnZUpzb25Db25maWd1cmF0aW9uID0ge1xuICAgIG5vZGVWZXJzaW9uPzogc3RyaW5nXG4gICAgY3B1cz86IENwdUNvbmZpZ1tdXG4gICAgb3M/OiBPU0NvbmZpZ1tdXG59XG5cbmV4cG9ydCB0eXBlIFJlZmxlY3Rpb24gPSB7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgcmV2aXNpb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgIGh0dHA6IHtcbiAgICAgICAgbmFtZTogc3RyaW5nXG4gICAgICAgIG1ldGhvZDogc3RyaW5nXG4gICAgICAgIHBhdGhQYXR0ZXJuOiBzdHJpbmdcbiAgICAgICAgY29uZmlnOiBIdHRwSGFuZGxlckNvbmZpZ3VyYXRpb24gJiBQYWNrYWdlSnNvbkNvbmZpZ3VyYXRpb25cbiAgICB9W11cbiAgICB0aW1lcnM6IHtcbiAgICAgICAgbmFtZTogc3RyaW5nXG4gICAgICAgIHNjaGVkdWxlOiBzdHJpbmdcbiAgICAgICAgY29uZmlnOiBUaW1lckhhbmRsZXJDb25maWd1cmF0aW9uICYgUGFja2FnZUpzb25Db25maWd1cmF0aW9uXG4gICAgfVtdXG4gICAgZXZlbnRzOiB7XG4gICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgICB0b3BpYzogc3RyaW5nXG4gICAgICAgIHR5cGU6IHN0cmluZ1xuICAgICAgICBjb25maWc6IEhhbmRsZXJDb25maWd1cmF0aW9uICYgUGFja2FnZUpzb25Db25maWd1cmF0aW9uXG4gICAgfVtdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQ3B1KGNvbmZpZzogUGFja2FnZUpzb25Db25maWd1cmF0aW9uLCBzdXBwb3J0ZWQ6IENQVVtdKTogQ1BVIHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVTdXBwb3J0ZWQoY29uZmlnLmNwdXMsIHN1cHBvcnRlZClcbiAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgIC8vIHJlc29sdmU8VD4oY29uZmlnLCBzdXBwb3J0ZWQpIGFjdHVhbGx5IGFzc2VydHMgY29uZmlnIGlzIChUIHwgYCEke1R9YClbXSwgYnV0IHRoYXQncyBub3Qgc3VwcG9ydGVkIHlldC5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBDUFVzOiAnICsgY29uZmlnLmNwdXMhLmpvaW4oJywgJykpXG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU9TKFxuICAgIGNvbmZpZzogUGFja2FnZUpzb25Db25maWd1cmF0aW9uLFxuICAgIHN1cHBvcnRlZDogTm9kZUpTLlBsYXRmb3JtW10sXG4pOiBOb2RlSlMuUGxhdGZvcm0ge1xuICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVN1cHBvcnRlZChjb25maWcub3MsIHN1cHBvcnRlZClcbiAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgIC8vIHJlc29sdmU8VD4oY29uZmlnLCBzdXBwb3J0ZWQpIGFjdHVhbGx5IGFzc2VydHMgY29uZmlnIGlzIChUIHwgYCEke1R9YClbXSwgYnV0IHRoYXQncyBub3Qgc3VwcG9ydGVkIHlldC5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBvcGVyYXRpbmcgc3lzdGVtczogJyArIGNvbmZpZy5vcyEuam9pbignLCAnKSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVTdXBwb3J0ZWQ8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgY29uZmlnOiAoVCB8IGAhJHtUfWApW10gfCB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGVkOiBUW10sXG4pOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgICByZXR1cm4gc3VwcG9ydGVkWzBdXG4gICAgfVxuICAgIHJldHVybiBzdXBwb3J0ZWQuZmluZChzID0+IGNvbmZpZy5pbmNsdWRlcyhzKSAmJiAhY29uZmlnLmluY2x1ZGVzKGAhJHtzfWApKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVmbGVjdChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFJlZmxlY3Rpb24+IHtcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSByZXNvbHZlKHByb2Nlc3MuY3dkKCksIHBhdGgpXG4gICAgY29uc3QgW3BhY2thZ2VKc29uLCBhbGxGaWxlcywgcmV2aXNpb25dID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICByZWFkQ29uZmlnKGFic29sdXRlUGF0aCksXG4gICAgICAgIHJlYWRkaXIoYWJzb2x1dGVQYXRoKSxcbiAgICAgICAgZ2V0SGFzaChhYnNvbHV0ZVBhdGgpLFxuICAgIF0pXG4gICAgY29uc3QgZmlsZXMgPSBhbGxGaWxlcy5maWx0ZXIoZmlsZSA9PiBleHRuYW1lKGZpbGUpID09PSAnLnRzJyAmJiAhZmlsZS5lbmRzV2l0aCgnLmQudHMnKSlcbiAgICBjb25zdCB7IGdldEhhbmRsZXJzLCBzZXRNZXRhIH0gPSAoYXdhaXQgaW1wb3J0KFxuICAgICAgICBwYXRoVG9GaWxlVVJMKGpvaW4oYWJzb2x1dGVQYXRoLCAnbm9kZV9tb2R1bGVzL0ByaWRkYW5jZS9ob3N0L2hvc3QvcmVnaXN0cnkuanMnKSkudG9TdHJpbmcoKVxuICAgICkpIGFzIHtcbiAgICAgICAgZ2V0SGFuZGxlcnM6IEhhbmRsZXJzR2V0dGVyXG4gICAgICAgIHNldE1ldGE6IChcbiAgICAgICAgICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgcmV2OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICBjZmc6IFBhY2thZ2VDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuICAgICAgICApID0+IHZvaWRcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgY29uc3QgYmFzZSA9IGJhc2VuYW1lKGZpbGUsICcudHMnKVxuICAgICAgICBzZXRNZXRhKHBhY2thZ2VKc29uLm5hbWUsIGJhc2UsIHJldmlzaW9uLCBwYWNrYWdlSnNvbi5jb25maWcpXG4gICAgICAgIGF3YWl0IGltcG9ydChwYXRoVG9GaWxlVVJMKGpvaW4oYWJzb2x1dGVQYXRoLCBiYXNlICsgJy5qcycpKS50b1N0cmluZygpKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHBhY2thZ2VKc29uLm5hbWUsXG4gICAgICAgIHJldmlzaW9uLFxuICAgICAgICBodHRwOiBnZXRIYW5kbGVycygnaHR0cCcpLm1hcChoID0+ICh7XG4gICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgICAuLi5oLmNvbmZpZyxcbiAgICAgICAgICAgICAgICBjcHVzOiBwYWNrYWdlSnNvbi5jcHUsXG4gICAgICAgICAgICAgICAgb3M6IHBhY2thZ2VKc29uLm9zLFxuICAgICAgICAgICAgICAgIG5vZGVWZXJzaW9uOiBwYWNrYWdlSnNvbi5lbmdpbmVzPy5ub2RlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWU6IGgubWV0YT8uZmlsZU5hbWUgPz8gJycsXG4gICAgICAgICAgICBtZXRob2Q6IGgubWV0aG9kLFxuICAgICAgICAgICAgcGF0aFBhdHRlcm46IGgucGF0aFBhdHRlcm4sXG4gICAgICAgIH0pKSxcbiAgICAgICAgdGltZXJzOiBnZXRIYW5kbGVycygndGltZXInKS5tYXAoaCA9PiAoe1xuICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICAgLi4uaC5jb25maWcsXG4gICAgICAgICAgICAgICAgY3B1czogcGFja2FnZUpzb24uY3B1LFxuICAgICAgICAgICAgICAgIG9zOiBwYWNrYWdlSnNvbi5vcyxcbiAgICAgICAgICAgICAgICBub2RlVmVyc2lvbjogcGFja2FnZUpzb24uZW5naW5lcz8ubm9kZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBoLm1ldGE/LmZpbGVOYW1lID8/ICcnLFxuICAgICAgICAgICAgc2NoZWR1bGU6IGguc2NoZWR1bGUsXG4gICAgICAgIH0pKSxcbiAgICAgICAgZXZlbnRzOiBnZXRIYW5kbGVycygnZXZlbnQnKS5tYXAoaCA9PiAoe1xuICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICAgLi4uaC5jb25maWcsXG4gICAgICAgICAgICAgICAgY3B1czogcGFja2FnZUpzb24uY3B1LFxuICAgICAgICAgICAgICAgIG9zOiBwYWNrYWdlSnNvbi5vcyxcbiAgICAgICAgICAgICAgICBub2RlVmVyc2lvbjogcGFja2FnZUpzb24uZW5naW5lcz8ubm9kZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBoLm1ldGE/LmZpbGVOYW1lID8/ICcnLFxuICAgICAgICAgICAgdG9waWM6IGgudG9waWMsXG4gICAgICAgICAgICB0eXBlOiBoLnR5cGUsXG4gICAgICAgIH0pKSxcbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDb25maWcocGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGpvaW4ocGF0aCwgJ3BhY2thZ2UuanNvbicpLCAndXRmLTgnKSkgYXMge1xuICAgICAgICBuYW1lOiBzdHJpbmdcbiAgICAgICAgZW5naW5lcz86IHsgW2VuZ2luZTogc3RyaW5nXTogc3RyaW5nIH1cbiAgICAgICAgY3B1PzogQ3B1Q29uZmlnW11cbiAgICAgICAgb3M/OiBPU0NvbmZpZ1tdXG4gICAgICAgIGNvbmZpZz86IG9iamVjdFxuICAgIH1cbiAgICByZXR1cm4gcGFja2FnZUpzb25cbn1cbiJdfQ==
|
package/host/registry.d.ts
CHANGED
|
@@ -1,27 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
config: FullConfiguration | undefined;
|
|
6
|
-
method: Method;
|
|
7
|
-
pathPattern: string;
|
|
8
|
-
entry: Handler;
|
|
9
|
-
};
|
|
1
|
+
import type { EventHandler } from './event-registry.js';
|
|
2
|
+
import type { HttpHandler } from './http-registry.js';
|
|
3
|
+
import type { TimerHandler } from './timer-registry.js';
|
|
4
|
+
export * from './meta.js';
|
|
10
5
|
type HandlerTypes = {
|
|
11
6
|
http: HttpHandler;
|
|
7
|
+
timer: TimerHandler;
|
|
8
|
+
event: EventHandler;
|
|
12
9
|
};
|
|
13
|
-
export declare function
|
|
14
|
-
export
|
|
15
|
-
export declare function
|
|
16
|
-
export
|
|
17
|
-
export type FullConfiguration = PackageConfiguration & HandlerConfiguration;
|
|
18
|
-
export type Metadata = {
|
|
19
|
-
packageName: string;
|
|
20
|
-
fileName: string;
|
|
21
|
-
revision: string | undefined;
|
|
22
|
-
config?: PackageConfiguration;
|
|
23
|
-
};
|
|
24
|
-
export declare function pathToRegExp(path: string): RegExp;
|
|
25
|
-
export type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
26
|
-
export declare function registerHttpHandler(method: Method, path: string, configOrHandler: HandlerConfiguration | Handler, fn?: Handler): void;
|
|
27
|
-
export {};
|
|
10
|
+
export declare function addHandler<Type extends keyof HandlerTypes>(type: Type, handler: HandlerTypes[Type]): void;
|
|
11
|
+
export type HandlersGetter = typeof getHandlers;
|
|
12
|
+
export declare function getHandlers<Type extends keyof HandlerTypes>(type: Type): HandlerTypes[Type][];
|
|
13
|
+
export declare function getHandler<Type extends keyof HandlerTypes>(type: Type): HandlerTypes[Type];
|
package/host/registry.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
export * from './meta.js';
|
|
1
2
|
const handlers = {};
|
|
2
|
-
function addHandler(type, handler) {
|
|
3
|
-
;
|
|
4
|
-
|
|
3
|
+
export function addHandler(type, handler) {
|
|
4
|
+
const h = (handlers[type] ??= []);
|
|
5
|
+
h.push(handler);
|
|
5
6
|
}
|
|
6
7
|
export function getHandlers(type) {
|
|
7
|
-
return
|
|
8
|
+
return handlers[type] ?? [];
|
|
8
9
|
}
|
|
9
10
|
export function getHandler(type) {
|
|
10
11
|
const hs = getHandlers(type);
|
|
@@ -17,55 +18,4 @@ export function getHandler(type) {
|
|
|
17
18
|
}
|
|
18
19
|
return handler;
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
-
function setHttpHost(host) {
|
|
22
|
-
httpHostRegistry = host;
|
|
23
|
-
}
|
|
24
|
-
let metadata;
|
|
25
|
-
export function setMeta(packageName, fileName, revision, config) {
|
|
26
|
-
metadata = {
|
|
27
|
-
packageName,
|
|
28
|
-
fileName,
|
|
29
|
-
revision,
|
|
30
|
-
config,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
function getMetadata() {
|
|
34
|
-
return metadata;
|
|
35
|
-
}
|
|
36
|
-
export function pathToRegExp(path) {
|
|
37
|
-
return new RegExp(('^' +
|
|
38
|
-
path.replaceAll(/[/\\^$+?.()|[\]{}]/gu, '\\$&').replaceAll('*', '[^/\\?]+') +
|
|
39
|
-
'(\\?.*)?$').replace('[^/\\?]+[^/\\?]+(\\?.*)?$', ''), 'u');
|
|
40
|
-
}
|
|
41
|
-
function combineConfig(base, override) {
|
|
42
|
-
if (base === undefined) {
|
|
43
|
-
return override;
|
|
44
|
-
}
|
|
45
|
-
else if (override === undefined) {
|
|
46
|
-
return base;
|
|
47
|
-
}
|
|
48
|
-
return { ...base, ...override };
|
|
49
|
-
}
|
|
50
|
-
function httpHost(meta, cfg, method, path, entry) {
|
|
51
|
-
addHandler('http', {
|
|
52
|
-
meta,
|
|
53
|
-
config: combineConfig(meta?.config, cfg),
|
|
54
|
-
method,
|
|
55
|
-
pathPattern: path,
|
|
56
|
-
entry,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
setHttpHost(httpHost);
|
|
60
|
-
export function registerHttpHandler(method, path, configOrHandler, fn) {
|
|
61
|
-
if (typeof configOrHandler === 'function') {
|
|
62
|
-
httpHostRegistry(getMetadata(), undefined, method, path, configOrHandler);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
if (!fn) {
|
|
66
|
-
throw new Error('Please provide a handler function.');
|
|
67
|
-
}
|
|
68
|
-
httpHostRegistry(getMetadata(), configOrHandler, method, path, fn);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxNQUFNLFFBQVEsR0FBaUMsRUFBRSxDQUFBO0FBRWpELFNBQVMsVUFBVSxDQUFDLElBQXdCLEVBQUUsT0FBb0I7SUFDOUQsQ0FBQztJQUFBLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUMxQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUF3QjtJQUNoRCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBa0IsQ0FBQTtBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUF3QjtJQUMvQyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUNwQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxzQkFBc0IsQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFDRCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksdUJBQXVCLENBQUMsQ0FBQTtJQUM1RCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUE7QUFDbEIsQ0FBQztBQVVELElBQUksZ0JBQTBCLENBQUE7QUFFOUIsU0FBUyxXQUFXLENBQUMsSUFBYztJQUMvQixnQkFBZ0IsR0FBRyxJQUFJLENBQUE7QUFDM0IsQ0FBQztBQUVELElBQUksUUFBOEIsQ0FBQTtBQUVsQyxNQUFNLFVBQVUsT0FBTyxDQUNuQixXQUFtQixFQUNuQixRQUFnQixFQUNoQixRQUE0QixFQUM1QixNQUF3QztJQUV4QyxRQUFRLEdBQUc7UUFDUCxXQUFXO1FBQ1gsUUFBUTtRQUNSLFFBQVE7UUFDUixNQUFNO0tBQ1QsQ0FBQTtBQUNMLENBQUM7QUFnQkQsU0FBUyxXQUFXO0lBQ2hCLE9BQU8sUUFBUSxDQUFBO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQVk7SUFDckMsT0FBTyxJQUFJLE1BQU0sQ0FDYixDQUNJLEdBQUc7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDO1FBQzNFLFdBQVcsQ0FDZCxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLENBQUMsRUFDMUMsR0FBRyxDQUNOLENBQUE7QUFDTCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQ2xCLElBQXNDLEVBQ3RDLFFBQTBDO0lBRTFDLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sUUFBUSxDQUFBO0lBQ25CLENBQUM7U0FBTSxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFDRCxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQTtBQUNuQyxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQ2IsSUFBMEIsRUFDMUIsR0FBcUMsRUFDckMsTUFBYyxFQUNkLElBQVksRUFDWixLQUFjO0lBRWQsVUFBVSxDQUFDLE1BQU0sRUFBRTtRQUNmLElBQUk7UUFDSixNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO1FBQ3hDLE1BQU07UUFDTixXQUFXLEVBQUUsSUFBSTtRQUNqQixLQUFLO0tBQ1IsQ0FBQyxDQUFBO0FBQ04sQ0FBQztBQUVELFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUlyQixNQUFNLFVBQVUsbUJBQW1CLENBQy9CLE1BQWMsRUFDZCxJQUFZLEVBQ1osZUFBK0MsRUFDL0MsRUFBWTtJQUVaLElBQUksT0FBTyxlQUFlLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDeEMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFDN0UsQ0FBQztTQUFNLENBQUM7UUFDSixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUE7UUFDekQsQ0FBQztRQUNELGdCQUFnQixDQUFDLFdBQVcsRUFBRSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3RFLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFuZGxlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHsgSGFuZGxlciB9IGZyb20gJy4uL2h0dHAuanMnXG5cbmV4cG9ydCB0eXBlIEh0dHBIYW5kbGVyID0ge1xuICAgIG1ldGE6IE1ldGFkYXRhIHwgdW5kZWZpbmVkXG4gICAgY29uZmlnOiBGdWxsQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZFxuICAgIG1ldGhvZDogTWV0aG9kXG4gICAgcGF0aFBhdHRlcm46IHN0cmluZ1xuICAgIGVudHJ5OiBIYW5kbGVyXG59XG5cbnR5cGUgSGFuZGxlclR5cGVzID0ge1xuICAgIGh0dHA6IEh0dHBIYW5kbGVyXG59XG5cbmNvbnN0IGhhbmRsZXJzOiB7IFtrZXk6IHN0cmluZ106IHVua25vd25bXSB9ID0ge31cblxuZnVuY3Rpb24gYWRkSGFuZGxlcih0eXBlOiBrZXlvZiBIYW5kbGVyVHlwZXMsIGhhbmRsZXI6IEh0dHBIYW5kbGVyKSB7XG4gICAgOyhoYW5kbGVyc1t0eXBlXSA/Pz0gW10pLnB1c2goaGFuZGxlcilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhhbmRsZXJzKHR5cGU6IGtleW9mIEhhbmRsZXJUeXBlcykge1xuICAgIHJldHVybiAoaGFuZGxlcnNbdHlwZV0gPz8gW10pIGFzIEh0dHBIYW5kbGVyW11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhhbmRsZXIodHlwZToga2V5b2YgSGFuZGxlclR5cGVzKSB7XG4gICAgY29uc3QgaHMgPSBnZXRIYW5kbGVycyh0eXBlKVxuICAgIGNvbnN0IFtoYW5kbGVyXSA9IGhzXG4gICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gJHt0eXBlfSBoYW5kbGVyIHJlZ2lzdGVyZWQuYClcbiAgICB9XG4gICAgaWYgKGhzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE11bHRpcGxlICR7dHlwZX0gaGFuZGxlcnMgcmVnaXN0ZXJlZC5gKVxuICAgIH1cbiAgICByZXR1cm4gaGFuZGxlclxufVxuXG50eXBlIEh0dHBIb3N0ID0gKFxuICAgIG1ldGE6IE1ldGFkYXRhIHwgdW5kZWZpbmVkLFxuICAgIGNvbmZpZzogSGFuZGxlckNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4gICAgbWV0aG9kOiBNZXRob2QsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGhhbmRsZXI6IEhhbmRsZXIsXG4pID0+IHZvaWRcblxubGV0IGh0dHBIb3N0UmVnaXN0cnk6IEh0dHBIb3N0XG5cbmZ1bmN0aW9uIHNldEh0dHBIb3N0KGhvc3Q6IEh0dHBIb3N0KSB7XG4gICAgaHR0cEhvc3RSZWdpc3RyeSA9IGhvc3Rcbn1cblxubGV0IG1ldGFkYXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZFxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TWV0YShcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgcmV2aXNpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBjb25maWc6IFBhY2thZ2VDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuKSB7XG4gICAgbWV0YWRhdGEgPSB7XG4gICAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgcmV2aXNpb24sXG4gICAgICAgIGNvbmZpZyxcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFBhY2thZ2VDb25maWd1cmF0aW9uID0gSGFuZGxlckNvbmZpZ3VyYXRpb24gJiB7XG4gICAgLy8gUGxhY2Vob2xkZXIgZm9yIHBhY2thZ2UtbGV2ZWwgY29uZmlndXJhdGlvbnNcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1kdXBsaWNhdGUtdHlwZS1jb25zdGl0dWVudHNcbmV4cG9ydCB0eXBlIEZ1bGxDb25maWd1cmF0aW9uID0gUGFja2FnZUNvbmZpZ3VyYXRpb24gJiBIYW5kbGVyQ29uZmlndXJhdGlvblxuXG5leHBvcnQgdHlwZSBNZXRhZGF0YSA9IHtcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nXG4gICAgZmlsZU5hbWU6IHN0cmluZ1xuICAgIHJldmlzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICBjb25maWc/OiBQYWNrYWdlQ29uZmlndXJhdGlvblxufVxuXG5mdW5jdGlvbiBnZXRNZXRhZGF0YSgpIHtcbiAgICByZXR1cm4gbWV0YWRhdGFcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhUb1JlZ0V4cChwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChcbiAgICAgICAgKFxuICAgICAgICAgICAgJ14nICtcbiAgICAgICAgICAgIHBhdGgucmVwbGFjZUFsbCgvWy9cXFxcXiQrPy4oKXxbXFxde31dL2d1LCAnXFxcXCQmJykucmVwbGFjZUFsbCgnKicsICdbXi9cXFxcP10rJykgK1xuICAgICAgICAgICAgJyhcXFxcPy4qKT8kJ1xuICAgICAgICApLnJlcGxhY2UoJ1teL1xcXFw/XStbXi9cXFxcP10rKFxcXFw/LiopPyQnLCAnJyksXG4gICAgICAgICd1JyxcbiAgICApXG59XG5cbmZ1bmN0aW9uIGNvbWJpbmVDb25maWcoXG4gICAgYmFzZTogUGFja2FnZUNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQsXG4gICAgb3ZlcnJpZGU6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuKTogRnVsbENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQge1xuICAgIGlmIChiYXNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlXG4gICAgfSBlbHNlIGlmIChvdmVycmlkZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBiYXNlXG4gICAgfVxuICAgIHJldHVybiB7IC4uLmJhc2UsIC4uLm92ZXJyaWRlIH1cbn1cblxuZnVuY3Rpb24gaHR0cEhvc3QoXG4gICAgbWV0YTogTWV0YWRhdGEgfCB1bmRlZmluZWQsXG4gICAgY2ZnOiBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCxcbiAgICBtZXRob2Q6IE1ldGhvZCxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZW50cnk6IEhhbmRsZXIsXG4pIHtcbiAgICBhZGRIYW5kbGVyKCdodHRwJywge1xuICAgICAgICBtZXRhLFxuICAgICAgICBjb25maWc6IGNvbWJpbmVDb25maWcobWV0YT8uY29uZmlnLCBjZmcpLFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIHBhdGhQYXR0ZXJuOiBwYXRoLFxuICAgICAgICBlbnRyeSxcbiAgICB9KVxufVxuXG5zZXRIdHRwSG9zdChodHRwSG9zdClcblxuZXhwb3J0IHR5cGUgTWV0aG9kID0gJ0dFVCcgfCAnUE9TVCcgfCAnUFVUJyB8ICdQQVRDSCcgfCAnREVMRVRFJ1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJIdHRwSGFuZGxlcihcbiAgICBtZXRob2Q6IE1ldGhvZCxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY29uZmlnT3JIYW5kbGVyOiBIYW5kbGVyQ29uZmlndXJhdGlvbiB8IEhhbmRsZXIsXG4gICAgZm4/OiBIYW5kbGVyLFxuKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBjb25maWdPckhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgaHR0cEhvc3RSZWdpc3RyeShnZXRNZXRhZGF0YSgpLCB1bmRlZmluZWQsIG1ldGhvZCwgcGF0aCwgY29uZmlnT3JIYW5kbGVyKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghZm4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIHByb3ZpZGUgYSBoYW5kbGVyIGZ1bmN0aW9uLicpXG4gICAgICAgIH1cbiAgICAgICAgaHR0cEhvc3RSZWdpc3RyeShnZXRNZXRhZGF0YSgpLCBjb25maWdPckhhbmRsZXIsIG1ldGhvZCwgcGF0aCwgZm4pXG4gICAgfVxufVxuIl19
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxjQUFjLFdBQVcsQ0FBQTtBQVF6QixNQUFNLFFBQVEsR0FBNEQsRUFBRSxDQUFBO0FBRTVFLE1BQU0sVUFBVSxVQUFVLENBQ3RCLElBQVUsRUFDVixPQUEyQjtJQUUzQixNQUFNLENBQUMsR0FBeUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDdkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUNuQixDQUFDO0FBSUQsTUFBTSxVQUFVLFdBQVcsQ0FBa0MsSUFBVTtJQUNuRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSyxFQUEyQixDQUFBO0FBQ3pELENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFrQyxJQUFVO0lBQ2xFLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM1QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLHNCQUFzQixDQUFDLENBQUE7SUFDckQsQ0FBQztJQUNELElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSx1QkFBdUIsQ0FBQyxDQUFBO0lBQzVELENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQTtBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tICcuL2V2ZW50LXJlZ2lzdHJ5LmpzJ1xuaW1wb3J0IHR5cGUgeyBIdHRwSGFuZGxlciB9IGZyb20gJy4vaHR0cC1yZWdpc3RyeS5qcydcbmltcG9ydCB0eXBlIHsgVGltZXJIYW5kbGVyIH0gZnJvbSAnLi90aW1lci1yZWdpc3RyeS5qcydcblxuZXhwb3J0ICogZnJvbSAnLi9tZXRhLmpzJ1xuXG50eXBlIEhhbmRsZXJUeXBlcyA9IHtcbiAgICBodHRwOiBIdHRwSGFuZGxlclxuICAgIHRpbWVyOiBUaW1lckhhbmRsZXJcbiAgICBldmVudDogRXZlbnRIYW5kbGVyXG59XG5cbmNvbnN0IGhhbmRsZXJzOiB7IFtUeXBlIGluIGtleW9mIEhhbmRsZXJUeXBlc10/OiBIYW5kbGVyVHlwZXNbVHlwZV1bXSB9ID0ge31cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEhhbmRsZXI8VHlwZSBleHRlbmRzIGtleW9mIEhhbmRsZXJUeXBlcz4oXG4gICAgdHlwZTogVHlwZSxcbiAgICBoYW5kbGVyOiBIYW5kbGVyVHlwZXNbVHlwZV0sXG4pIHtcbiAgICBjb25zdCBoOiBIYW5kbGVyVHlwZXNbVHlwZV1bXSA9IChoYW5kbGVyc1t0eXBlXSA/Pz0gW10pXG4gICAgaC5wdXNoKGhhbmRsZXIpXG59XG5cbmV4cG9ydCB0eXBlIEhhbmRsZXJzR2V0dGVyID0gdHlwZW9mIGdldEhhbmRsZXJzXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIYW5kbGVyczxUeXBlIGV4dGVuZHMga2V5b2YgSGFuZGxlclR5cGVzPih0eXBlOiBUeXBlKSB7XG4gICAgcmV0dXJuIGhhbmRsZXJzW3R5cGVdID8/IChbXSBhcyBIYW5kbGVyVHlwZXNbVHlwZV1bXSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhhbmRsZXI8VHlwZSBleHRlbmRzIGtleW9mIEhhbmRsZXJUeXBlcz4odHlwZTogVHlwZSkge1xuICAgIGNvbnN0IGhzID0gZ2V0SGFuZGxlcnModHlwZSlcbiAgICBjb25zdCBbaGFuZGxlcl0gPSBoc1xuICAgIGlmICghaGFuZGxlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vICR7dHlwZX0gaGFuZGxlciByZWdpc3RlcmVkLmApXG4gICAgfVxuICAgIGlmIChocy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNdWx0aXBsZSAke3R5cGV9IGhhbmRsZXJzIHJlZ2lzdGVyZWQuYClcbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZXJcbn1cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Context } from '../context.js';
|
|
2
|
+
import { RootLogger } from './context.js';
|
|
3
|
+
import type { TimerHandler } from './timer-registry.js';
|
|
4
|
+
export declare function triggerTimer(log: RootLogger, context: Omit<Context, 'log'>, handler: TimerHandler, options: {
|
|
5
|
+
readonly triggerTime: Date;
|
|
6
|
+
}, success: () => Promise<unknown>): Promise<void>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { measure } from '../context.js';
|
|
2
|
+
export async function triggerTimer(log, context, handler, options, success) {
|
|
3
|
+
log = log.enrichReserved({ meta: context.meta, trigger: { time: triggerTimer } });
|
|
4
|
+
log.trace('Timer BEGIN');
|
|
5
|
+
try {
|
|
6
|
+
await measure(log, 'execution', () => handler.entry({ ...context, log }, options));
|
|
7
|
+
log.debug('Timer END');
|
|
8
|
+
await success();
|
|
9
|
+
}
|
|
10
|
+
catch (e) {
|
|
11
|
+
log.error('Timer END', e);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIgY29weS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRpbWVyIGNvcHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUloRCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FDOUIsR0FBZSxFQUNmLE9BQTZCLEVBQzdCLE9BQXFCLEVBQ3JCLE9BRUMsRUFDRCxPQUErQjtJQUUvQixHQUFHLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDakYsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUN4QixJQUFJLENBQUM7UUFDRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQ2xGLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDdEIsTUFBTSxPQUFPLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNULEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzdCLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCwgbWVhc3VyZSB9IGZyb20gJy4uL2NvbnRleHQuanMnXG5pbXBvcnQgeyBSb290TG9nZ2VyIH0gZnJvbSAnLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHR5cGUgeyBUaW1lckhhbmRsZXIgfSBmcm9tICcuL3RpbWVyLXJlZ2lzdHJ5LmpzJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJpZ2dlclRpbWVyKFxuICAgIGxvZzogUm9vdExvZ2dlcixcbiAgICBjb250ZXh0OiBPbWl0PENvbnRleHQsICdsb2cnPixcbiAgICBoYW5kbGVyOiBUaW1lckhhbmRsZXIsXG4gICAgb3B0aW9uczoge1xuICAgICAgICByZWFkb25seSB0cmlnZ2VyVGltZTogRGF0ZVxuICAgIH0sXG4gICAgc3VjY2VzczogKCkgPT4gUHJvbWlzZTx1bmtub3duPixcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZyA9IGxvZy5lbnJpY2hSZXNlcnZlZCh7IG1ldGE6IGNvbnRleHQubWV0YSwgdHJpZ2dlcjogeyB0aW1lOiB0cmlnZ2VyVGltZXIgfSB9KVxuICAgIGxvZy50cmFjZSgnVGltZXIgQkVHSU4nKVxuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IG1lYXN1cmUobG9nLCAnZXhlY3V0aW9uJywgKCkgPT4gaGFuZGxlci5lbnRyeSh7IC4uLmNvbnRleHQsIGxvZyB9LCBvcHRpb25zKSlcbiAgICAgICAgbG9nLmRlYnVnKCdUaW1lciBFTkQnKVxuICAgICAgICBhd2FpdCBzdWNjZXNzKClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZy5lcnJvcignVGltZXIgRU5EJywgZSlcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type HandlerConfiguration, type Handler as TimerFunction } from '../timer.js';
|
|
2
|
+
import { type FullConfiguration, type Metadata } from './meta.js';
|
|
3
|
+
export type TimerHandler = {
|
|
4
|
+
meta: Metadata | undefined;
|
|
5
|
+
config: FullConfiguration | undefined;
|
|
6
|
+
schedule: CronExpression;
|
|
7
|
+
entry: TimerFunction;
|
|
8
|
+
};
|
|
9
|
+
type MinuteField = string;
|
|
10
|
+
type HourField = string;
|
|
11
|
+
type DayOfMonthField = string;
|
|
12
|
+
type MonthField = string;
|
|
13
|
+
type DayOfWeekField = string;
|
|
14
|
+
export type CronExpression = `${MinuteField} ${HourField} ${DayOfMonthField} ${MonthField} ${DayOfWeekField}`;
|
|
15
|
+
export declare function registerTimerHandler(schedule: CronExpression, configOrHandler: HandlerConfiguration | TimerFunction, fn?: TimerFunction): void;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { combineConfig, getMetadata } from './meta.js';
|
|
2
|
+
import { addHandler } from './registry.js';
|
|
3
|
+
let timerHostRegistry;
|
|
4
|
+
function setTimerHost(host) {
|
|
5
|
+
timerHostRegistry = host;
|
|
6
|
+
}
|
|
7
|
+
function timerHost(meta, cfg, schedule, entry) {
|
|
8
|
+
addHandler('timer', {
|
|
9
|
+
meta,
|
|
10
|
+
config: combineConfig(meta?.config, cfg),
|
|
11
|
+
schedule,
|
|
12
|
+
entry,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
setTimerHost(timerHost);
|
|
16
|
+
export function registerTimerHandler(schedule, configOrHandler, fn) {
|
|
17
|
+
if (typeof configOrHandler === 'function') {
|
|
18
|
+
timerHostRegistry(getMetadata(), undefined, schedule, configOrHandler);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
if (!fn) {
|
|
22
|
+
throw new Error('Please provide a handler function.');
|
|
23
|
+
}
|
|
24
|
+
timerHostRegistry(getMetadata(), configOrHandler, schedule, fn);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXItcmVnaXN0cnkgY29weS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRpbWVyLXJlZ2lzdHJ5IGNvcHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQXlDLE1BQU0sV0FBVyxDQUFBO0FBQzdGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFnQjFDLElBQUksaUJBQTRCLENBQUE7QUFFaEMsU0FBUyxZQUFZLENBQUMsSUFBZTtJQUNqQyxpQkFBaUIsR0FBRyxJQUFJLENBQUE7QUFDNUIsQ0FBQztBQVdELFNBQVMsU0FBUyxDQUNkLElBQTBCLEVBQzFCLEdBQXFDLEVBQ3JDLFFBQXdCLEVBQ3hCLEtBQW9CO0lBRXBCLFVBQVUsQ0FBQyxPQUFPLEVBQUU7UUFDaEIsSUFBSTtRQUNKLE1BQU0sRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7UUFDeEMsUUFBUTtRQUNSLEtBQUs7S0FDUixDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBRXZCLE1BQU0sVUFBVSxvQkFBb0IsQ0FDaEMsUUFBd0IsRUFDeEIsZUFBcUQsRUFDckQsRUFBa0I7SUFFbEIsSUFBSSxPQUFPLGVBQWUsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN4QyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFBO0lBQzFFLENBQUM7U0FBTSxDQUFDO1FBQ0osSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO1FBQ3pELENBQUM7UUFDRCxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ25FLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBIYW5kbGVyQ29uZmlndXJhdGlvbiwgdHlwZSBIYW5kbGVyIGFzIFRpbWVyRnVuY3Rpb24gfSBmcm9tICcuLi90aW1lci5qcydcbmltcG9ydCB7IGNvbWJpbmVDb25maWcsIGdldE1ldGFkYXRhLCB0eXBlIEZ1bGxDb25maWd1cmF0aW9uLCB0eXBlIE1ldGFkYXRhIH0gZnJvbSAnLi9tZXRhLmpzJ1xuaW1wb3J0IHsgYWRkSGFuZGxlciB9IGZyb20gJy4vcmVnaXN0cnkuanMnXG5cbmV4cG9ydCB0eXBlIFRpbWVySGFuZGxlciA9IHtcbiAgICBtZXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZFxuICAgIGNvbmZpZzogRnVsbENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWRcbiAgICBzY2hlZHVsZTogQ3JvbkV4cHJlc3Npb25cbiAgICBlbnRyeTogVGltZXJGdW5jdGlvblxufVxuXG50eXBlIFRpbWVySG9zdCA9IChcbiAgICBtZXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZCxcbiAgICBjb25maWc6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuICAgIHNjaGVkdWxlOiBDcm9uRXhwcmVzc2lvbixcbiAgICBoYW5kbGVyOiBUaW1lckZ1bmN0aW9uLFxuKSA9PiB2b2lkXG5cbmxldCB0aW1lckhvc3RSZWdpc3RyeTogVGltZXJIb3N0XG5cbmZ1bmN0aW9uIHNldFRpbWVySG9zdChob3N0OiBUaW1lckhvc3QpIHtcbiAgICB0aW1lckhvc3RSZWdpc3RyeSA9IGhvc3Rcbn1cblxudHlwZSBNaW51dGVGaWVsZCA9IHN0cmluZ1xudHlwZSBIb3VyRmllbGQgPSBzdHJpbmdcbnR5cGUgRGF5T2ZNb250aEZpZWxkID0gc3RyaW5nXG50eXBlIE1vbnRoRmllbGQgPSBzdHJpbmdcbnR5cGUgRGF5T2ZXZWVrRmllbGQgPSBzdHJpbmdcblxuZXhwb3J0IHR5cGUgQ3JvbkV4cHJlc3Npb24gPVxuICAgIGAke01pbnV0ZUZpZWxkfSAke0hvdXJGaWVsZH0gJHtEYXlPZk1vbnRoRmllbGR9ICR7TW9udGhGaWVsZH0gJHtEYXlPZldlZWtGaWVsZH1gXG5cbmZ1bmN0aW9uIHRpbWVySG9zdChcbiAgICBtZXRhOiBNZXRhZGF0YSB8IHVuZGVmaW5lZCxcbiAgICBjZmc6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuICAgIHNjaGVkdWxlOiBDcm9uRXhwcmVzc2lvbixcbiAgICBlbnRyeTogVGltZXJGdW5jdGlvbixcbikge1xuICAgIGFkZEhhbmRsZXIoJ3RpbWVyJywge1xuICAgICAgICBtZXRhLFxuICAgICAgICBjb25maWc6IGNvbWJpbmVDb25maWcobWV0YT8uY29uZmlnLCBjZmcpLFxuICAgICAgICBzY2hlZHVsZSxcbiAgICAgICAgZW50cnksXG4gICAgfSlcbn1cblxuc2V0VGltZXJIb3N0KHRpbWVySG9zdClcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyVGltZXJIYW5kbGVyKFxuICAgIHNjaGVkdWxlOiBDcm9uRXhwcmVzc2lvbixcbiAgICBjb25maWdPckhhbmRsZXI6IEhhbmRsZXJDb25maWd1cmF0aW9uIHwgVGltZXJGdW5jdGlvbixcbiAgICBmbj86IFRpbWVyRnVuY3Rpb24sXG4pOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ09ySGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aW1lckhvc3RSZWdpc3RyeShnZXRNZXRhZGF0YSgpLCB1bmRlZmluZWQsIHNjaGVkdWxlLCBjb25maWdPckhhbmRsZXIpXG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFmbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSBhIGhhbmRsZXIgZnVuY3Rpb24uJylcbiAgICAgICAgfVxuICAgICAgICB0aW1lckhvc3RSZWdpc3RyeShnZXRNZXRhZGF0YSgpLCBjb25maWdPckhhbmRsZXIsIHNjaGVkdWxlLCBmbilcbiAgICB9XG59XG4iXX0=
|