@wireio/shared 1.0.36 → 1.0.37
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/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts +3 -5
- package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +1 -1
- package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseAppender.js +60 -28
- package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts.map +1 -1
- package/lib/cjs/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.js +3 -3
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts +3 -5
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +1 -1
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseAppender.js +25 -26
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts.map +1 -1
- package/lib/esm/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.js +3 -3
- package/lib/tsconfig.cjs.jest.tsbuildinfo +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +2 -3
|
@@ -10,11 +10,9 @@ export declare class AWSFirehoseAppender<Record extends LogRecord = LogRecord> i
|
|
|
10
10
|
constructor(credentialEndpointUrl: string);
|
|
11
11
|
append(record: Record): void;
|
|
12
12
|
/**
|
|
13
|
-
* Create the
|
|
14
|
-
*
|
|
15
|
-
* @
|
|
16
|
-
* @param {boolean} flush
|
|
17
|
-
* @returns {Firehose}
|
|
13
|
+
* Create the Firehose client for a loaded credential set.
|
|
14
|
+
* @param creds Loaded Firehose credentials.
|
|
15
|
+
* @returns Firehose client.
|
|
18
16
|
*/
|
|
19
17
|
private getFirehose;
|
|
20
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AWSFirehoseAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AWSFirehoseAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts"],"names":[],"mappings":"AAOA,OAAO,4BAEN,MAAM,mCAAmC,CAAA;AAI1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAmB5C,qBAAa,mBAAmB,CAC9B,MAAM,SAAS,SAAS,GAAG,SAAS,CACpC,YAAW,QAAQ,CAAC,MAAM,CAAC;aAOC,qBAAqB,EAAE,MAAM;IANzD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAO;IAE9B,SAAgB,iBAAiB,EAAE,4BAA4B,CAAA;gBAEnC,qBAAqB,EAAE,MAAM;IAoBzD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAmB5B;;;;OAIG;YACW,WAAW;IAgBzB;;;;OAIG;YACW,KAAK;CA0EpB;AAED,eAAe,mBAAmB,CAAA"}
|
|
@@ -1,17 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
39
|
exports.AWSFirehoseAppender = void 0;
|
|
7
|
-
const client_firehose_1 = require("@aws-sdk/client-firehose");
|
|
8
|
-
const client_sts_1 = require("@aws-sdk/client-sts");
|
|
9
40
|
const AWSFirehoseCredentialManager_js_1 = __importDefault(require("./AWSFirehoseCredentialManager.js"));
|
|
10
41
|
const InternalLogger_js_1 = require("../../InternalLogger.js");
|
|
11
42
|
const lodash_1 = require("lodash");
|
|
12
43
|
const index_js_1 = require("../../../helpers/index.js");
|
|
13
44
|
const LogQueueMaxRecords = 10000;
|
|
45
|
+
const ExpiredTokenExceptionCode = "ExpiredTokenException";
|
|
14
46
|
const log = (0, InternalLogger_js_1.getInternalLogger)();
|
|
47
|
+
let firehoseModule = null;
|
|
48
|
+
function getFirehoseModule() {
|
|
49
|
+
if (!firehoseModule) {
|
|
50
|
+
firehoseModule = Promise.resolve().then(() => __importStar(require("@aws-sdk/client-firehose"))).catch(err => {
|
|
51
|
+
firehoseModule = null;
|
|
52
|
+
throw err;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return firehoseModule;
|
|
56
|
+
}
|
|
15
57
|
class AWSFirehoseAppender {
|
|
16
58
|
credentialEndpointUrl;
|
|
17
59
|
pendingRecords = Array();
|
|
@@ -27,8 +69,7 @@ class AWSFirehoseAppender {
|
|
|
27
69
|
log.debug("Nothing to flush upon credential receipt OR flush already in progress");
|
|
28
70
|
return;
|
|
29
71
|
}
|
|
30
|
-
this.flush()
|
|
31
|
-
.catch((e) => {
|
|
72
|
+
this.flush().catch((e) => {
|
|
32
73
|
log.error(`Error flushing logs after credential receipt: ${e.message}`, e);
|
|
33
74
|
});
|
|
34
75
|
});
|
|
@@ -43,30 +84,24 @@ class AWSFirehoseAppender {
|
|
|
43
84
|
...record,
|
|
44
85
|
app: record.app?.length > 0 ? record.app : "UNKNOWN",
|
|
45
86
|
env: record.env?.length > 0 ? record.env : "UNKNOWN",
|
|
46
|
-
url: typeof window === "undefined" ? "local://" : window.location.href
|
|
87
|
+
url: typeof window === "undefined" ? "local://" : window.location.href
|
|
47
88
|
});
|
|
48
89
|
this.flush();
|
|
49
90
|
}
|
|
50
91
|
/**
|
|
51
|
-
* Create the
|
|
52
|
-
*
|
|
53
|
-
* @
|
|
54
|
-
* @param {boolean} flush
|
|
55
|
-
* @returns {Firehose}
|
|
92
|
+
* Create the Firehose client for a loaded credential set.
|
|
93
|
+
* @param creds Loaded Firehose credentials.
|
|
94
|
+
* @returns Firehose client.
|
|
56
95
|
*/
|
|
57
|
-
getFirehose() {
|
|
58
|
-
const creds = this.credentialManager.getCredentials();
|
|
59
|
-
if (!creds) {
|
|
60
|
-
log.warn("No credentials available for flush");
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
96
|
+
async getFirehose(creds) {
|
|
63
97
|
const { region, streamName } = creds;
|
|
64
98
|
if (!region || !streamName) {
|
|
65
99
|
throw new Error("Region or stream name not available");
|
|
66
100
|
}
|
|
67
|
-
const
|
|
101
|
+
const { FirehoseClient } = await getFirehoseModule();
|
|
102
|
+
const client = new FirehoseClient({
|
|
68
103
|
region: creds.region,
|
|
69
|
-
credentials: (0, lodash_1.pick)(creds, "accessKeyId", "secretAccessKey", "sessionToken")
|
|
104
|
+
credentials: (0, lodash_1.pick)(creds, "accessKeyId", "secretAccessKey", "sessionToken")
|
|
70
105
|
});
|
|
71
106
|
return client;
|
|
72
107
|
}
|
|
@@ -89,13 +124,9 @@ class AWSFirehoseAppender {
|
|
|
89
124
|
log.warn("No credentials available for flush");
|
|
90
125
|
return;
|
|
91
126
|
}
|
|
92
|
-
const
|
|
93
|
-
if (!client) {
|
|
94
|
-
log.warn("No firehose client available, skipping flush");
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const deferred = this.flushDeferred = new index_js_1.Deferred();
|
|
127
|
+
const deferred = (this.flushDeferred = new index_js_1.Deferred());
|
|
98
128
|
try {
|
|
129
|
+
const { streamName } = creds, client = await this.getFirehose(creds), { PutRecordBatchCommand } = await getFirehoseModule();
|
|
99
130
|
while (this.pendingRecords.length) {
|
|
100
131
|
const chunkSize = Math.min(this.pendingRecords.length, 10), records = this.pendingRecords.splice(0, chunkSize), recordJsons = records.map(record => JSON.stringify(record));
|
|
101
132
|
if (log.isDebugEnabled())
|
|
@@ -104,9 +135,9 @@ class AWSFirehoseAppender {
|
|
|
104
135
|
Data: textEncoder.encode(jsonStr)
|
|
105
136
|
}));
|
|
106
137
|
log.info(`Pushing ${records.length} records to firehose`);
|
|
107
|
-
const cmd = new
|
|
138
|
+
const cmd = new PutRecordBatchCommand({
|
|
108
139
|
DeliveryStreamName: streamName,
|
|
109
|
-
Records: batch
|
|
140
|
+
Records: batch
|
|
110
141
|
});
|
|
111
142
|
const resp = await client.send(cmd);
|
|
112
143
|
const failed = resp.FailedPutCount || 0;
|
|
@@ -124,10 +155,11 @@ class AWSFirehoseAppender {
|
|
|
124
155
|
log.info(`PutRecordBatch ok count=${records.length}`);
|
|
125
156
|
}
|
|
126
157
|
}
|
|
158
|
+
deferred.resolve();
|
|
127
159
|
}
|
|
128
160
|
catch (err) {
|
|
129
161
|
log.error("Failed to push logs", err);
|
|
130
|
-
if (err.
|
|
162
|
+
if (err.name === ExpiredTokenExceptionCode) {
|
|
131
163
|
this.credentialManager.forceUpdateCredentials();
|
|
132
164
|
}
|
|
133
165
|
deferred.reject(err);
|
|
@@ -142,4 +174,4 @@ class AWSFirehoseAppender {
|
|
|
142
174
|
}
|
|
143
175
|
exports.AWSFirehoseAppender = AWSFirehoseAppender;
|
|
144
176
|
exports.default = AWSFirehoseAppender;
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSw4REFBcUc7QUFDckcsb0RBRzRCO0FBRzVCLHdHQUE0RTtBQUM1RSwrREFBMkQ7QUFFM0QsbUNBQXNDO0FBQ3RDLHdEQUFvRDtBQUlwRCxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQTtBQUVoQyxNQUFNLEdBQUcsR0FBRyxJQUFBLHFDQUFpQixHQUFFLENBQUE7QUFFL0IsTUFBYSxtQkFBbUI7SUFTWjtJQVBWLGNBQWMsR0FBRyxLQUFLLEVBQWEsQ0FBQTtJQUNuQyxhQUFhLENBQWdCO0lBQzdCLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFFZixpQkFBaUIsQ0FBOEI7SUFFL0QsWUFDa0IscUJBQTZCO1FBQTdCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtRQUM3QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSx5Q0FBNEIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBQ2hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUN6QyxHQUFHLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUE7WUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hELEdBQUcsQ0FBQyxLQUFLLENBQUMsdUVBQXVFLENBQUMsQ0FBQTtnQkFDbEYsT0FBTTtZQUNSLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFO2lCQUNULEtBQUssQ0FBQyxDQUFDLENBQVEsRUFBRSxFQUFFO2dCQUNsQixHQUFHLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxD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LGtDQUFrQztZQUNsQyxpQkFBaUI7UUFDbkIsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQTtJQUN6QixDQUFDO0NBR0Y7QUE1SkQsa0RBNEpDO0FBRUQsa0JBQWUsbUJBQW1CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSB0eXBlc2NyaXB0L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICcuLi8uLi8uLi9ndWFyZHMvcHJpbWl0aXZlLmpzJ1xuaW1wb3J0IHsgRmlyZWhvc2VDbGllbnQsIFB1dFJlY29yZEJhdGNoQ29tbWFuZCwgUHV0UmVjb3JkQmF0Y2hJbnB1dCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZmlyZWhvc2VcIlxuaW1wb3J0IHtcbiAgQ3JlZGVudGlhbHMgYXMgSUFXU1RlbXBvcmFyeUNyZWRlbnRpYWxzLFxuICBFeHBpcmVkVG9rZW5FeGNlcHRpb24sXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc3RzXCJcbmltcG9ydCB7IExldmVsIH0gZnJvbSBcIi4uLy4uL0xldmVsLmpzXCJcblxuaW1wb3J0IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIgZnJvbSBcIi4vQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci5qc1wiXG5pbXBvcnQgeyBnZXRJbnRlcm5hbExvZ2dlciB9IGZyb20gXCIuLi8uLi9JbnRlcm5hbExvZ2dlci5qc1wiXG5pbXBvcnQgeyBnZXRWYWx1ZSwgZ3VhcmQgfSBmcm9tIFwiLi4vLi4vLi4vZ3VhcmRzL2luZGV4LmpzXCJcbmltcG9ydCB7IGlzRW1wdHksIHBpY2sgfSBmcm9tIFwibG9kYXNoXCJcbmltcG9ydCB7IERlZmVycmVkIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvaW5kZXguanNcIlxuaW1wb3J0IHsgTG9nUmVjb3JkIH0gZnJvbSBcIi4uLy4uL0xvZ1JlY29yZC5qc1wiXG5pbXBvcnQgeyBBcHBlbmRlciB9IGZyb20gXCIuLi8uLi9BcHBlbmRlci5qc1wiXG5cbmNvbnN0IExvZ1F1ZXVlTWF4UmVjb3JkcyA9IDEwMDAwXG5cbmNvbnN0IGxvZyA9IGdldEludGVybmFsTG9nZ2VyKClcblxuZXhwb3J0IGNsYXNzIEFXU0ZpcmVob3NlQXBwZW5kZXI8UmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkID0gTG9nUmVjb3JkPlxuICBpbXBsZW1lbnRzIEFwcGVuZGVyPFJlY29yZD4ge1xuICBwcml2YXRlIHBlbmRpbmdSZWNvcmRzID0gQXJyYXk8TG9nUmVjb3JkPigpXG4gIHByaXZhdGUgZmx1c2hEZWZlcnJlZDogRGVmZXJyZWQ8dm9pZD5cbiAgcHJpdmF0ZSBmbHVzaEludGVydmFsTXMgPSAxMDAwO1xuXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsTWFuYWdlcjogQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlclxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsRW5kcG9pbnRVcmw6IHN0cmluZykge1xuICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIgPSBuZXcgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlcihjcmVkZW50aWFsRW5kcG9pbnRVcmwpXG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5vbihcInJlY2VpdmVkXCIsICgpID0+IHtcbiAgICAgIGxvZy5pbmZvKFwiQ3JlZGVudGlhbHMgcmVjZWl2ZWQsIGluaXRpYWxpemluZyBmaXJlaG9zZSBjbGllbnRcIilcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggfHwgISF0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgICAgbG9nLmRlYnVnKFwiTm90aGluZyB0byBmbHVzaCB1cG9uIGNyZWRlbnRpYWwgcmVjZWlwdCBPUiBmbHVzaCBhbHJlYWR5IGluIHByb2dyZXNzXCIpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhpcy5mbHVzaCgpXG4gICAgICAgIC5jYXRjaCgoZTogRXJyb3IpID0+IHtcbiAgICAgICAgICBsb2cuZXJyb3IoYEVycm9yIGZsdXNoaW5nIGxvZ3MgYWZ0ZXIgY3JlZGVudGlhbCByZWNlaXB0OiAke2UubWVzc2FnZX1gLCBlKVxuICAgICAgICB9KVxuICAgIH0pXG4gIH1cbiAgYXBwZW5kKHJlY29yZDogUmVjb3JkKTogdm9pZCB7XG4gICAgY29uc3RcbiAgICAgIHBlbmRpbmdDb3VudCA9IHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoICsgMSxcbiAgICAgIHJlbW92ZUNvdW50ID0gTG9nUXVldWVNYXhSZWNvcmRzIC0gcGVuZGluZ0NvdW50XG5cbiAgICBpZiAocmVtb3ZlQ291bnQgPCAwKSB7XG4gICAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCBNYXRoLmFicyhyZW1vdmVDb3VudCkpXG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nUmVjb3Jkcy5wdXNoKHtcbiAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgIC4uLnJlY29yZCxcbiAgICAgIGFwcDogcmVjb3JkLmFwcD8ubGVuZ3RoID4gMCA/IHJlY29yZC5hcHAgOiBcIlVOS05PV05cIixcbiAgICAgIGVudjogcmVjb3JkLmVudj8ubGVuZ3RoID4gMCA/IHJlY29yZC5lbnYgOiBcIlVOS05PV05cIixcbiAgICAgIHVybDogdHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwibG9jYWw6Ly9cIiA6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgIH0pXG5cbiAgICB0aGlzLmZsdXNoKClcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIGZpcmVob3NlIGNsaWVudCBhbmQgcmV0dXJuXG4gICAqXG4gICAqIEBwYXJhbSB7SUFXU1RlbXBvcmFyeUNyZWRlbnRpYWxzfSBjcmVkZW50aWFsc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZsdXNoXG4gICAqIEByZXR1cm5zIHtGaXJlaG9zZX1cbiAgICovXG4gIHByaXZhdGUgZ2V0RmlyZWhvc2UoKTogRmlyZWhvc2VDbGllbnQge1xuICAgIGNvbnN0IGNyZWRzID0gdGhpcy5jcmVkZW50aWFsTWFuYWdlci5nZXRDcmVkZW50aWFscygpXG5cbiAgICBpZiAoIWNyZWRzKSB7XG4gICAgICBsb2cud2FybihcIk5vIGNyZWRlbnRpYWxzIGF2YWlsYWJsZSBmb3IgZmx1c2hcIilcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgeyByZWdpb24sIHN0cmVhbU5hbWUgfSA9IGNyZWRzXG5cbiAgICBpZiAoIXJlZ2lvbiB8fCAhc3RyZWFtTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVnaW9uIG9yIHN0cmVhbSBuYW1lIG5vdCBhdmFpbGFibGVcIilcbiAgICB9XG5cbiAgICBjb25zdCBjbGllbnQgPSBuZXcgRmlyZWhvc2VDbGllbnQoe1xuICAgICAgcmVnaW9uOiBjcmVkcy5yZWdpb24sXG4gICAgICBjcmVkZW50aWFsczogcGljayhjcmVkcywgXCJhY2Nlc3NLZXlJZFwiLCBcInNlY3JldEFjY2Vzc0tleVwiLCBcInNlc3Npb25Ub2tlblwiKSxcbiAgICB9KVxuXG4gICAgcmV0dXJuIGNsaWVudFxuICB9XG5cbiAgLyoqXG4gICAqIEZsdXNoIHBlbmRpbmcgcmVjb3Jkc1xuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCEhdGhpcy5mbHVzaERlZmVycmVkKSB7XG4gICAgICBsb2cuZGVidWcoXCJGbHVzaCBhbHJlYWR5IGluIHByb2dyZXNzLCBza2lwcGluZ1wiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCkge1xuICAgICAgbG9nLmRlYnVnKFwiTm8gcGVuZGluZyByZWNvcmRzIHRvIGZsdXNoXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgY3JlZHMgPSB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLmdldENyZWRlbnRpYWxzKClcbiAgICBpZiAoIWNyZWRzKSB7XG4gICAgICBsb2cud2FybihcIk5vIGNyZWRlbnRpYWxzIGF2YWlsYWJsZSBmb3IgZmx1c2hcIilcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCB7IHN0cmVhbU5hbWUgfSA9IGNyZWRzLFxuICAgICAgY2xpZW50ID0gdGhpcy5nZXRGaXJlaG9zZSgpXG4gICAgaWYgKCFjbGllbnQpIHtcbiAgICAgIGxvZy53YXJuKFwiTm8gZmlyZWhvc2UgY2xpZW50IGF2YWlsYWJsZSwgc2tpcHBpbmcgZmx1c2hcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGRlZmVycmVkID0gdGhpcy5mbHVzaERlZmVycmVkID0gbmV3IERlZmVycmVkPHZvaWQ+KClcbiAgICB0cnkge1xuICAgICAgd2hpbGUgKHRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0XG4gICAgICAgICAgY2h1bmtTaXplID0gTWF0aC5taW4odGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgsIDEwKSxcbiAgICAgICAgICByZWNvcmRzID0gdGhpcy5wZW5kaW5nUmVjb3Jkcy5zcGxpY2UoMCwgY2h1bmtTaXplKSxcbiAgICAgICAgICByZWNvcmRKc29ucyA9IHJlY29yZHMubWFwKHJlY29yZCA9PiBKU09OLnN0cmluZ2lmeShyZWNvcmQpKVxuXG4gICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSlcbiAgICAgICAgICBsb2cuZGVidWcoXCJSZWNvcmRzXCIsIHJlY29yZHMpXG5cbiAgICAgICAgY29uc3RcbiAgICAgICAgICB0ZXh0RW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpLFxuICAgICAgICAgIGJhdGNoOiBQdXRSZWNvcmRCYXRjaElucHV0W1wiUmVjb3Jkc1wiXSA9IHJlY29yZEpzb25zLm1hcChqc29uU3RyID0+ICh7XG4gICAgICAgICAgICBEYXRhOiB0ZXh0RW5jb2Rlci5lbmNvZGUoanNvblN0cilcbiAgICAgICAgICB9KSlcblxuICAgICAgICBsb2cuaW5mbyhgUHVzaGluZyAke3JlY29yZHMubGVuZ3RofSByZWNvcmRzIHRvIGZpcmVob3NlYClcblxuICAgICAgICBjb25zdCBjbWQgPSBuZXcgUHV0UmVjb3JkQmF0Y2hDb21tYW5kKHtcbiAgICAgICAgICBEZWxpdmVyeVN0cmVhbU5hbWU6IHN0cmVhbU5hbWUsXG4gICAgICAgICAgUmVjb3JkczogYmF0Y2gsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGNsaWVudC5zZW5kKGNtZClcbiAgICAgICAgY29uc3QgZmFpbGVkID0gcmVzcC5GYWlsZWRQdXRDb3VudCB8fCAwXG4gICAgICAgIGlmIChmYWlsZWQpIHtcbiAgICAgICAgICBjb25zdCByciA9IHJlc3AuUmVxdWVzdFJlc3BvbnNlcyB8fCBbXVxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChycltpXS5FcnJvckNvZGUpIHtcbiAgICAgICAgICAgICAgbG9nLndhcm4oYFJlY29yZCBmYWlsZWQ6ICR7cnJbaV0uRXJyb3JDb2RlfSAke3JyW2ldLkVycm9yTWVzc2FnZX1gKVxuICAgICAgICAgICAgICAvL3RoaXMucGVuZGluZ1JlY29yZHMudW5zaGlmdChyZWNvcmRzW2ldKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBsb2cuaW5mbyhgUHV0UmVjb3JkQmF0Y2ggZmFpbGVkPSR7ZmFpbGVkfTsgcmVxdWV1ZWQgZmFpbGVkIHJlY29yZHNgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZy5pbmZvKGBQdXRSZWNvcmRCYXRjaCBvayBjb3VudD0ke3JlY29yZHMubGVuZ3RofWApXG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKFwiRmFpbGVkIHRvIHB1c2ggbG9nc1wiLCBlcnIpXG4gICAgICBpZiAoZXJyLmNvZGUgPT09IEV4cGlyZWRUb2tlbkV4Y2VwdGlvbikge1xuICAgICAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLmZvcmNlVXBkYXRlQ3JlZGVudGlhbHMoKVxuICAgICAgfVxuICAgICAgZGVmZXJyZWQucmVqZWN0KGVycilcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5mbHVzaERlZmVycmVkID0gbnVsbFxuXG4gICAgICAvLyBpZiAodGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpXG4gICAgICAvLyAgIHRoaXMuZmx1c2goKVxuICAgIH1cblxuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlXG4gIH1cblxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFXU0ZpcmVob3NlQXBwZW5kZXJcbiJdfQ==
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQSx3R0FFMEM7QUFDMUMsK0RBQTJEO0FBQzNELG1DQUE2QjtBQUM3Qix3REFBb0Q7QUFJcEQsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUE7QUFDaEMsTUFBTSx5QkFBeUIsR0FBRyx1QkFBdUIsQ0FBQTtBQUV6RCxNQUFNLEdBQUcsR0FBRyxJQUFBLHFDQUFpQixHQUFFLENBQUE7QUFDL0IsSUFBSSxjQUFjLEdBQXVELElBQUksQ0FBQTtBQUU3RSxTQUFTLGlCQUFpQjtJQUN4QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsY0FBYyxHQUFHLGtEQUFPLDBCQUEwQixJQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM5RCxjQUFjLEdBQUcsSUFBSSxDQUFBO1lBQ3JCLE1BQU0sR0FBRyxDQUFBO1FBQ1gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsT0FBTyxjQUFjLENBQUE7QUFDdkIsQ0FBQztBQUVELE1BQWEsbUJBQW1CO0lBU0Y7SUFOcEIsY0FBYyxHQUFHLEtBQUssRUFBYSxDQUFBO0lBQ25DLGFBQWEsQ0FBZ0I7SUFDN0IsZUFBZSxHQUFHLElBQUksQ0FBQTtJQUVkLGlCQUFpQixDQUE4QjtJQUUvRCxZQUE0QixxQkFBNkI7UUFBN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHlDQUE0QixDQUN2RCxxQkFBcUIsQ0FDdEIsQ0FBQTtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcs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WUFDckMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLHlCQUF5QixFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBQ2pELENBQUM7WUFDRCxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RCLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1lBRXpCLGtDQUFrQztZQUNsQyxpQkFBaUI7UUFDbkIsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQTtJQUN6QixDQUFDO0NBQ0Y7QUFwSkQsa0RBb0pDO0FBRUQsa0JBQWUsbUJBQW1CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSB0eXBlc2NyaXB0L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHR5cGUge1xuICBGaXJlaG9zZUNsaWVudCxcbiAgUHV0UmVjb3JkQmF0Y2hJbnB1dFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWZpcmVob3NlXCJcbmltcG9ydCB7IExldmVsIH0gZnJvbSBcIi4uLy4uL0xldmVsLmpzXCJcblxuaW1wb3J0IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIsIHtcbiAgdHlwZSBBV1NDcmVkZW50aWFsc1xufSBmcm9tIFwiLi9BV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyLmpzXCJcbmltcG9ydCB7IGdldEludGVybmFsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0ludGVybmFsTG9nZ2VyLmpzXCJcbmltcG9ydCB7IHBpY2sgfSBmcm9tIFwibG9kYXNoXCJcbmltcG9ydCB7IERlZmVycmVkIH0gZnJvbSBcIi4uLy4uLy4uL2hlbHBlcnMvaW5kZXguanNcIlxuaW1wb3J0IHsgTG9nUmVjb3JkIH0gZnJvbSBcIi4uLy4uL0xvZ1JlY29yZC5qc1wiXG5pbXBvcnQgeyBBcHBlbmRlciB9IGZyb20gXCIuLi8uLi9BcHBlbmRlci5qc1wiXG5cbmNvbnN0IExvZ1F1ZXVlTWF4UmVjb3JkcyA9IDEwMDAwXG5jb25zdCBFeHBpcmVkVG9rZW5FeGNlcHRpb25Db2RlID0gXCJFeHBpcmVkVG9rZW5FeGNlcHRpb25cIlxuXG5jb25zdCBsb2cgPSBnZXRJbnRlcm5hbExvZ2dlcigpXG5sZXQgZmlyZWhvc2VNb2R1bGU6IFByb21pc2U8dHlwZW9mIGltcG9ydChcIkBhd3Mtc2RrL2NsaWVudC1maXJlaG9zZVwiKT4gPSBudWxsXG5cbmZ1bmN0aW9uIGdldEZpcmVob3NlTW9kdWxlKCkge1xuICBpZiAoIWZpcmVob3NlTW9kdWxlKSB7XG4gICAgZmlyZWhvc2VNb2R1bGUgPSBpbXBvcnQoXCJAYXdzLXNkay9jbGllbnQtZmlyZWhvc2VcIikuY2F0Y2goZXJyID0+IHtcbiAgICAgIGZpcmVob3NlTW9kdWxlID0gbnVsbFxuICAgICAgdGhyb3cgZXJyXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBmaXJlaG9zZU1vZHVsZVxufVxuXG5leHBvcnQgY2xhc3MgQVdTRmlyZWhvc2VBcHBlbmRlcjxcbiAgUmVjb3JkIGV4dGVuZHMgTG9nUmVjb3JkID0gTG9nUmVjb3JkXG4+IGltcGxlbWVudHMgQXBwZW5kZXI8UmVjb3JkPiB7XG4gIHByaXZhdGUgcGVuZGluZ1JlY29yZHMgPSBBcnJheTxMb2dSZWNvcmQ+KClcbiAgcHJpdmF0ZSBmbHVzaERlZmVycmVkOiBEZWZlcnJlZDx2b2lkPlxuICBwcml2YXRlIGZsdXNoSW50ZXJ2YWxNcyA9IDEwMDBcblxuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbE1hbmFnZXI6IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbEVuZHBvaW50VXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyID0gbmV3IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIoXG4gICAgICBjcmVkZW50aWFsRW5kcG9pbnRVcmxcbiAgICApXG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlci5vbihcInJlY2VpdmVkXCIsICgpID0+IHtcbiAgICAgIGxvZy5pbmZvKFwiQ3JlZGVudGlhbHMgcmVjZWl2ZWQsIGluaXRpYWxpemluZyBmaXJlaG9zZSBjbGllbnRcIilcbiAgICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggfHwgISF0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgICAgbG9nLmRlYnVnKFxuICAgICAgICAgIFwiTm90aGluZyB0byBmbHVzaCB1cG9uIGNyZWRlbnRpYWwgcmVjZWlwdCBPUiBmbHVzaCBhbHJlYWR5IGluIHByb2dyZXNzXCJcbiAgICAgICAgKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMuZmx1c2goKS5jYXRjaCgoZTogRXJyb3IpID0+IHtcbiAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgIGBFcnJvciBmbHVzaGluZyBsb2dzIGFmdGVyIGNyZWRlbnRpYWwgcmVjZWlwdDogJHtlLm1lc3NhZ2V9YCxcbiAgICAgICAgICBlXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuICBhcHBlbmQocmVjb3JkOiBSZWNvcmQpOiB2b2lkIHtcbiAgICBjb25zdCBwZW5kaW5nQ291bnQgPSB0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCArIDEsXG4gICAgICByZW1vdmVDb3VudCA9IExvZ1F1ZXVlTWF4UmVjb3JkcyAtIHBlbmRpbmdDb3VudFxuXG4gICAgaWYgKHJlbW92ZUNvdW50IDwgMCkge1xuICAgICAgdGhpcy5wZW5kaW5nUmVjb3Jkcy5zcGxpY2UoMCwgTWF0aC5hYnMocmVtb3ZlQ291bnQpKVxuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ1JlY29yZHMucHVzaCh7XG4gICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAuLi5yZWNvcmQsXG4gICAgICBhcHA6IHJlY29yZC5hcHA/Lmxlbmd0aCA+IDAgPyByZWNvcmQuYXBwIDogXCJVTktOT1dOXCIsXG4gICAgICBlbnY6IHJlY29yZC5lbnY/Lmxlbmd0aCA+IDAgPyByZWNvcmQuZW52IDogXCJVTktOT1dOXCIsXG4gICAgICB1cmw6IHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIgPyBcImxvY2FsOi8vXCIgOiB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgIH0pXG5cbiAgICB0aGlzLmZsdXNoKClcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIEZpcmVob3NlIGNsaWVudCBmb3IgYSBsb2FkZWQgY3JlZGVudGlhbCBzZXQuXG4gICAqIEBwYXJhbSBjcmVkcyBMb2FkZWQgRmlyZWhvc2UgY3JlZGVudGlhbHMuXG4gICAqIEByZXR1cm5zIEZpcmVob3NlIGNsaWVudC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ2V0RmlyZWhvc2UoY3JlZHM6IEFXU0NyZWRlbnRpYWxzKTogUHJvbWlzZTxGaXJlaG9zZUNsaWVudD4ge1xuICAgIGNvbnN0IHsgcmVnaW9uLCBzdHJlYW1OYW1lIH0gPSBjcmVkc1xuXG4gICAgaWYgKCFyZWdpb24gfHwgIXN0cmVhbU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlZ2lvbiBvciBzdHJlYW0gbmFtZSBub3QgYXZhaWxhYmxlXCIpXG4gICAgfVxuXG4gICAgY29uc3QgeyBGaXJlaG9zZUNsaWVudCB9ID0gYXdhaXQgZ2V0RmlyZWhvc2VNb2R1bGUoKVxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBGaXJlaG9zZUNsaWVudCh7XG4gICAgICByZWdpb246IGNyZWRzLnJlZ2lvbixcbiAgICAgIGNyZWRlbnRpYWxzOiBwaWNrKGNyZWRzLCBcImFjY2Vzc0tleUlkXCIsIFwic2VjcmV0QWNjZXNzS2V5XCIsIFwic2Vzc2lvblRva2VuXCIpXG4gICAgfSlcblxuICAgIHJldHVybiBjbGllbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBGbHVzaCBwZW5kaW5nIHJlY29yZHNcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghIXRoaXMuZmx1c2hEZWZlcnJlZCkge1xuICAgICAgbG9nLmRlYnVnKFwiRmx1c2ggYWxyZWFkeSBpbiBwcm9ncmVzcywgc2tpcHBpbmdcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIk5vIHBlbmRpbmcgcmVjb3JkcyB0byBmbHVzaFwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGNyZWRzID0gdGhpcy5jcmVkZW50aWFsTWFuYWdlci5nZXRDcmVkZW50aWFscygpXG4gICAgaWYgKCFjcmVkcykge1xuICAgICAgbG9nLndhcm4oXCJObyBjcmVkZW50aWFscyBhdmFpbGFibGUgZm9yIGZsdXNoXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBkZWZlcnJlZCA9ICh0aGlzLmZsdXNoRGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQ8dm9pZD4oKSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBzdHJlYW1OYW1lIH0gPSBjcmVkcyxcbiAgICAgICAgY2xpZW50ID0gYXdhaXQgdGhpcy5nZXRGaXJlaG9zZShjcmVkcyksXG4gICAgICAgIHsgUHV0UmVjb3JkQmF0Y2hDb21tYW5kIH0gPSBhd2FpdCBnZXRGaXJlaG9zZU1vZHVsZSgpXG5cbiAgICAgIHdoaWxlICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLm1pbih0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCwgMTApLFxuICAgICAgICAgIHJlY29yZHMgPSB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCBjaHVua1NpemUpLFxuICAgICAgICAgIHJlY29yZEpzb25zID0gcmVjb3Jkcy5tYXAocmVjb3JkID0+IEpTT04uc3RyaW5naWZ5KHJlY29yZCkpXG5cbiAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSBsb2cuZGVidWcoXCJSZWNvcmRzXCIsIHJlY29yZHMpXG5cbiAgICAgICAgY29uc3QgdGV4dEVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKSxcbiAgICAgICAgICBiYXRjaDogUHV0UmVjb3JkQmF0Y2hJbnB1dFtcIlJlY29yZHNcIl0gPSByZWNvcmRKc29ucy5tYXAoanNvblN0ciA9PiAoe1xuICAgICAgICAgICAgRGF0YTogdGV4dEVuY29kZXIuZW5jb2RlKGpzb25TdHIpXG4gICAgICAgICAgfSkpXG5cbiAgICAgICAgbG9nLmluZm8oYFB1c2hpbmcgJHtyZWNvcmRzLmxlbmd0aH0gcmVjb3JkcyB0byBmaXJlaG9zZWApXG5cbiAgICAgICAgY29uc3QgY21kID0gbmV3IFB1dFJlY29yZEJhdGNoQ29tbWFuZCh7XG4gICAgICAgICAgRGVsaXZlcnlTdHJlYW1OYW1lOiBzdHJlYW1OYW1lLFxuICAgICAgICAgIFJlY29yZHM6IGJhdGNoXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGNsaWVudC5zZW5kKGNtZClcbiAgICAgICAgY29uc3QgZmFpbGVkID0gcmVzcC5GYWlsZWRQdXRDb3VudCB8fCAwXG4gICAgICAgIGlmIChmYWlsZWQpIHtcbiAgICAgICAgICBjb25zdCByciA9IHJlc3AuUmVxdWVzdFJlc3BvbnNlcyB8fCBbXVxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChycltpXS5FcnJvckNvZGUpIHtcbiAgICAgICAgICAgICAgbG9nLndhcm4oXG4gICAgICAgICAgICAgICAgYFJlY29yZCBmYWlsZWQ6ICR7cnJbaV0uRXJyb3JDb2RlfSAke3JyW2ldLkVycm9yTWVzc2FnZX1gXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLy90aGlzLnBlbmRpbmdSZWNvcmRzLnVuc2hpZnQocmVjb3Jkc1tpXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nLmluZm8oYFB1dFJlY29yZEJhdGNoIGZhaWxlZD0ke2ZhaWxlZH07IHJlcXVldWVkIGZhaWxlZCByZWNvcmRzYClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2cuaW5mbyhgUHV0UmVjb3JkQmF0Y2ggb2sgY291bnQ9JHtyZWNvcmRzLmxlbmd0aH1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZlcnJlZC5yZXNvbHZlKClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5lcnJvcihcIkZhaWxlZCB0byBwdXNoIGxvZ3NcIiwgZXJyKVxuICAgICAgaWYgKGVyci5uYW1lID09PSBFeHBpcmVkVG9rZW5FeGNlcHRpb25Db2RlKSB7XG4gICAgICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIuZm9yY2VVcGRhdGVDcmVkZW50aWFscygpXG4gICAgICB9XG4gICAgICBkZWZlcnJlZC5yZWplY3QoZXJyKVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmZsdXNoRGVmZXJyZWQgPSBudWxsXG5cbiAgICAgIC8vIGlmICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aClcbiAgICAgIC8vICAgdGhpcy5mbHVzaCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2VcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBV1NGaXJlaG9zZUFwcGVuZGVyXG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AWSFirehoseCredentialManager.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AWSFirehoseCredentialManager.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,eAAe,CAAA;AAMzC,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,qBAAa,4BAA6B,SAAQ,aAAa,CAAC,oCAAoC,CAAC;aAIvE,qBAAqB,EAAE,MAAM;IAHzD,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,YAAY,CAAiC;gBAEzB,qBAAqB,EAAE,MAAM;IAIzD,sBAAsB,IAAI,IAAI;IAS9B,cAAc,IAAI,cAAc;IAmBhC,cAAc,IAAI,OAAO;YAIX,IAAI;IA0BlB,eAAe,CAAC,aAAa,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;IA2B7D,aAAa,IAAI,MAAM;IAIvB,SAAS,IAAI,MAAM;IAInB,OAAO,IAAI,IAAI;CAMhB;AAED,eAAe,4BAA4B,CAAA"}
|
|
@@ -45,11 +45,11 @@ class AWSFirehoseCredentialManager extends eventemitter3_1.default {
|
|
|
45
45
|
async load() {
|
|
46
46
|
if (this.loadDeferred && !this.loadDeferred.isRejected())
|
|
47
47
|
return this.loadDeferred.promise;
|
|
48
|
-
const deferred = this.loadDeferred = new index_js_1.Deferred();
|
|
48
|
+
const deferred = (this.loadDeferred = new index_js_1.Deferred());
|
|
49
49
|
try {
|
|
50
50
|
const r = await fetch(this.credentialEndpointUrl, {
|
|
51
51
|
method: "GET",
|
|
52
|
-
credentials: "include"
|
|
52
|
+
credentials: "include"
|
|
53
53
|
});
|
|
54
54
|
if (!r.ok)
|
|
55
55
|
throw new Error(`creds http ${r.status}`);
|
|
@@ -102,4 +102,4 @@ class AWSFirehoseCredentialManager extends eventemitter3_1.default {
|
|
|
102
102
|
}
|
|
103
103
|
exports.AWSFirehoseCredentialManager = AWSFirehoseCredentialManager;
|
|
104
104
|
exports.default = AWSFirehoseCredentialManager;
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx3REFBb0Q7QUFDcEQsK0RBQTJEO0FBQzNELGtFQUF5QztBQUV6QyxNQUFNLHNCQUFzQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFBLENBQUMsWUFBWTtBQUV6RCxNQUFNLEdBQUcsR0FBRyxJQUFBLHFDQUFpQixHQUFFLENBQUE7QUFnQi9CLE1BQWEsNEJBQTZCLFNBQVEsdUJBQW1EO0lBSXZFO0lBSHBCLFlBQVksR0FBa0MsSUFBSSxDQUFBO0lBQ2xELFlBQVksR0FBNkIsSUFBSSxDQUFBO0lBRXJELFlBQTRCLHFCQUE2QjtRQUN2RCxLQUFLLEVBQUUsQ0FBQTtRQURtQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQVE7SUFFekQsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtRQUNyRCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUE7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDekQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUs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Q0FBQTtRQUMzRCxDQUFDO1FBRUQsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBRXhDLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtZQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUM3QyxDQUFBO1FBQ0gsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsVUFBVSxDQUFBO0lBQzFDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxDQUFBO0lBQ3RDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtRQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtJQUMxQixDQUFDO0NBQ0Y7QUEzR0Qsb0VBMkdDO0FBRUQsa0JBQWUsNEJBQTRCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWZlcnJlZCB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL2luZGV4LmpzXCJcbmltcG9ydCB7IGdldEludGVybmFsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0ludGVybmFsTG9nZ2VyLmpzXCJcbmltcG9ydCBFdmVudEVtaXR0ZXIzIGZyb20gXCJldmVudGVtaXR0ZXIzXCJcblxuY29uc3QgQ1JFRF9CVUZGRVJfUEFERElOR19NUyA9IDMgKiA2MCAqIDEwMDAgLy8gMyBtaW51dGVzXG5cbmNvbnN0IGxvZyA9IGdldEludGVybmFsTG9nZ2VyKClcblxuZXhwb3J0IGludGVyZmFjZSBBV1NDcmVkZW50aWFscyB7XG4gIGFjY2Vzc0tleUlkOiBzdHJpbmdcbiAgc2VjcmV0QWNjZXNzS2V5OiBzdHJpbmdcbiAgc2Vzc2lvblRva2VuOiBzdHJpbmdcbiAgc3RyZWFtTmFtZTogc3RyaW5nXG4gIHJlZ2lvbjogc3RyaW5nXG4gIGV4cGlyYXRpb246IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJFdmVudE1hcCB7XG4gIHJlY2VpdmVkOiAoY3JlZHM6IEFXU0NyZWRlbnRpYWxzKSA9PiB2b2lkXG4gIGV4cGlyZWQ6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNsYXNzIEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXIzPEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJFdmVudE1hcD4ge1xuICBwcml2YXRlIHJlZnJlc2hUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gPSBudWxsXG4gIHByaXZhdGUgbG9hZERlZmVycmVkOiBEZWZlcnJlZDxBV1NDcmVkZW50aWFscz4gPSBudWxsXG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxFbmRwb2ludFVybDogc3RyaW5nKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgZm9yY2VVcGRhdGVDcmVkZW50aWFscygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2FkRGVmZXJyZWQgJiYgIXRoaXMubG9hZERlZmVycmVkLmlzU2V0dGxlZCgpKSB7XG4gICAgICB0aGlzLmxvYWREZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKFwiZm9yY2UgdXBkYXRlXCIpKVxuICAgIH1cblxuICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKDEpXG4gIH1cblxuICBnZXRDcmVkZW50aWFscygpOiBBV1NDcmVkZW50aWFscyB7XG4gICAgaWYgKHRoaXMubG9hZERlZmVycmVkICYmIHRoaXMubG9hZERlZmVycmVkLmlzRnVsZmlsbGVkKCkpIHtcbiAgICAgIGNvbnN0IGNyZWRzID0gdGhpcy5sb2FkRGVmZXJyZWQuZ2V0UmVzdWx0KCksXG4gICAgICAgIGV4cE1zID0gRGF0ZS5wYXJzZShjcmVkcy5leHBpcmF0aW9uKVxuXG4gICAgICBpZiAoZXhwTXMgPD0gRGF0ZS5ub3coKSkge1xuICAgICAgICBsb2cuaW5mbyhcIkNyZWRlbnRpYWxzIGV4cGlyZWRcIilcbiAgICAgICAgdGhpcy5sb2FkRGVmZXJyZWQgPSBudWxsXG4gICAgICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKDEpXG4gICAgICAgIHRoaXMuZW1pdChcImV4cGlyZWRcIilcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVkc1xuICAgIH1cblxuICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKDEpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGhhc0NyZWRlbnRpYWxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldENyZWRlbnRpYWxzKCkgIT0gbnVsbFxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkKCk6IFByb21pc2U8QVdTQ3JlZGVudGlhbHM+IHtcbiAgICBpZiAodGhpcy5sb2FkRGVmZXJyZWQgJiYgIXRoaXMubG9hZERlZmVycmVkLmlzUmVqZWN0ZWQoKSlcbiAgICAgIHJldHVybiB0aGlzLmxvYWREZWZlcnJlZC5wcm9taXNlXG5cbiAgICBjb25zdCBkZWZlcnJlZCA9ICh0aGlzLmxvYWREZWZlcnJlZCA9IG5ldyBEZWZlcnJlZDxBV1NDcmVkZW50aWFscz4oKSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgciA9IGF3YWl0IGZldGNoKHRoaXMuY3JlZGVudGlhbEVuZHBvaW50VXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiXG4gICAgICB9KVxuICAgICAgaWYgKCFyLm9rKSB0aHJvdyBuZXcgRXJyb3IoYGNyZWRzIGh0dHAgJHtyLnN0YXR1c31gKVxuICAgICAgY29uc3QgY3JlZHM6IEFXU0NyZWRlbnRpYWxzID0gYXdhaXQgci5qc29uKClcblxuICAgICAgdGhpcy5zY2hlZHVsZVJlZnJlc2goY3JlZHMpXG4gICAgICBsb2cuaW5mbyhcbiAgICAgICAgYEdvdCBjcmVkcywgZXhwaXJlPSR7Y3JlZHMuZXhwaXJhdGlvbn0sIHN0cmVhbT0ke2NyZWRzLnN0cmVhbU5hbWV9LCByZWdpb249JHtjcmVkcy5yZWdpb259YFxuICAgICAgKVxuICAgICAgZGVmZXJyZWQucmVzb2x2ZShjcmVkcylcbiAgICAgIHRoaXMuZW1pdChcInJlY2VpdmVkXCIsIGNyZWRzKVxuICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2VcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkZWZlcnJlZC5yZWplY3QoZSlcbiAgICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICAgICAgdGhyb3cgZVxuICAgIH1cbiAgfVxuICBzY2hlZHVsZVJlZnJlc2goY3JlZHNPck1pbGxpczogQVdTQ3JlZGVudGlhbHMgfCBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWZyZXNoVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlZnJlc2hUaW1lcilcbiAgICAgIHRoaXMucmVmcmVzaFRpbWVyID0gbnVsbFxuICAgIH1cbiAgICBpZiAoIWNyZWRzT3JNaWxsaXMpIHJldHVyblxuXG4gICAgbGV0IHJlZnJlc2hJbk1zOiBudW1iZXJcbiAgICBpZiAodHlwZW9mIGNyZWRzT3JNaWxsaXMgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJlZnJlc2hJbk1zID0gY3JlZHNPck1pbGxpc1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjcmVkcyA9IGNyZWRzT3JNaWxsaXMsXG4gICAgICAgIGV4cE1zID0gRGF0ZS5wYXJzZShjcmVkcy5leHBpcmF0aW9uKVxuXG4gICAgICByZWZyZXNoSW5NcyA9IGV4cE1zIC0gRGF0ZS5ub3coKSAtIENSRURfQlVGRkVSX1BBRERJTkdfTVNcbiAgICB9XG5cbiAgICByZWZyZXNoSW5NcyA9IE1hdGgubWF4KDEwMCwgcmVmcmVzaEluTXMpXG5cbiAgICB0aGlzLnJlZnJlc2hUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkRGVmZXJyZWQgPSBudWxsXG4gICAgICB0aGlzLmxvYWQoKS5jYXRjaCgoZTogRXJyb3IpID0+XG4gICAgICAgIGxvZy5lcnJvcihgcmVmcmVzaCBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWAsIGUpXG4gICAgICApXG4gICAgfSwgcmVmcmVzaEluTXMpXG4gIH1cblxuICBnZXRTdHJlYW1OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3JlZGVudGlhbHMoKT8uc3RyZWFtTmFtZVxuICB9XG5cbiAgZ2V0UmVnaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3JlZGVudGlhbHMoKT8ucmVnaW9uXG4gIH1cblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKG51bGwpXG4gICAgaWYgKCF0aGlzLmxvYWREZWZlcnJlZC5pc1NldHRsZWQoKSlcbiAgICAgIHRoaXMubG9hZERlZmVycmVkLnJlamVjdChuZXcgRXJyb3IoXCJkZXN0cm95ZWRcIikpXG4gICAgdGhpcy5sb2FkRGVmZXJyZWQgPSBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlclxuIl19
|
|
@@ -10,11 +10,9 @@ export declare class AWSFirehoseAppender<Record extends LogRecord = LogRecord> i
|
|
|
10
10
|
constructor(credentialEndpointUrl: string);
|
|
11
11
|
append(record: Record): void;
|
|
12
12
|
/**
|
|
13
|
-
* Create the
|
|
14
|
-
*
|
|
15
|
-
* @
|
|
16
|
-
* @param {boolean} flush
|
|
17
|
-
* @returns {Firehose}
|
|
13
|
+
* Create the Firehose client for a loaded credential set.
|
|
14
|
+
* @param creds Loaded Firehose credentials.
|
|
15
|
+
* @returns Firehose client.
|
|
18
16
|
*/
|
|
19
17
|
private getFirehose;
|
|
20
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AWSFirehoseAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AWSFirehoseAppender.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts"],"names":[],"mappings":"AAOA,OAAO,4BAEN,MAAM,mCAAmC,CAAA;AAI1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAmB5C,qBAAa,mBAAmB,CAC9B,MAAM,SAAS,SAAS,GAAG,SAAS,CACpC,YAAW,QAAQ,CAAC,MAAM,CAAC;aAOC,qBAAqB,EAAE,MAAM;IANzD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAO;IAE9B,SAAgB,iBAAiB,EAAE,4BAA4B,CAAA;gBAEnC,qBAAqB,EAAE,MAAM;IAoBzD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAmB5B;;;;OAIG;YACW,WAAW;IAgBzB;;;;OAIG;YACW,KAAK;CA0EpB;AAED,eAAe,mBAAmB,CAAA"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
import { FirehoseClient, PutRecordBatchCommand } from "@aws-sdk/client-firehose";
|
|
2
|
-
import { ExpiredTokenException, } from "@aws-sdk/client-sts";
|
|
3
1
|
import AWSFirehoseCredentialManager from "./AWSFirehoseCredentialManager.js";
|
|
4
2
|
import { getInternalLogger } from "../../InternalLogger.js";
|
|
5
3
|
import { pick } from "lodash";
|
|
6
4
|
import { Deferred } from "../../../helpers/index.js";
|
|
7
5
|
const LogQueueMaxRecords = 10000;
|
|
6
|
+
const ExpiredTokenExceptionCode = "ExpiredTokenException";
|
|
8
7
|
const log = getInternalLogger();
|
|
8
|
+
let firehoseModule = null;
|
|
9
|
+
function getFirehoseModule() {
|
|
10
|
+
if (!firehoseModule) {
|
|
11
|
+
firehoseModule = import("@aws-sdk/client-firehose").catch(err => {
|
|
12
|
+
firehoseModule = null;
|
|
13
|
+
throw err;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return firehoseModule;
|
|
17
|
+
}
|
|
9
18
|
export class AWSFirehoseAppender {
|
|
10
19
|
credentialEndpointUrl;
|
|
11
20
|
pendingRecords = Array();
|
|
@@ -21,8 +30,7 @@ export class AWSFirehoseAppender {
|
|
|
21
30
|
log.debug("Nothing to flush upon credential receipt OR flush already in progress");
|
|
22
31
|
return;
|
|
23
32
|
}
|
|
24
|
-
this.flush()
|
|
25
|
-
.catch((e) => {
|
|
33
|
+
this.flush().catch((e) => {
|
|
26
34
|
log.error(`Error flushing logs after credential receipt: ${e.message}`, e);
|
|
27
35
|
});
|
|
28
36
|
});
|
|
@@ -37,30 +45,24 @@ export class AWSFirehoseAppender {
|
|
|
37
45
|
...record,
|
|
38
46
|
app: record.app?.length > 0 ? record.app : "UNKNOWN",
|
|
39
47
|
env: record.env?.length > 0 ? record.env : "UNKNOWN",
|
|
40
|
-
url: typeof window === "undefined" ? "local://" : window.location.href
|
|
48
|
+
url: typeof window === "undefined" ? "local://" : window.location.href
|
|
41
49
|
});
|
|
42
50
|
this.flush();
|
|
43
51
|
}
|
|
44
52
|
/**
|
|
45
|
-
* Create the
|
|
46
|
-
*
|
|
47
|
-
* @
|
|
48
|
-
* @param {boolean} flush
|
|
49
|
-
* @returns {Firehose}
|
|
53
|
+
* Create the Firehose client for a loaded credential set.
|
|
54
|
+
* @param creds Loaded Firehose credentials.
|
|
55
|
+
* @returns Firehose client.
|
|
50
56
|
*/
|
|
51
|
-
getFirehose() {
|
|
52
|
-
const creds = this.credentialManager.getCredentials();
|
|
53
|
-
if (!creds) {
|
|
54
|
-
log.warn("No credentials available for flush");
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
+
async getFirehose(creds) {
|
|
57
58
|
const { region, streamName } = creds;
|
|
58
59
|
if (!region || !streamName) {
|
|
59
60
|
throw new Error("Region or stream name not available");
|
|
60
61
|
}
|
|
62
|
+
const { FirehoseClient } = await getFirehoseModule();
|
|
61
63
|
const client = new FirehoseClient({
|
|
62
64
|
region: creds.region,
|
|
63
|
-
credentials: pick(creds, "accessKeyId", "secretAccessKey", "sessionToken")
|
|
65
|
+
credentials: pick(creds, "accessKeyId", "secretAccessKey", "sessionToken")
|
|
64
66
|
});
|
|
65
67
|
return client;
|
|
66
68
|
}
|
|
@@ -83,13 +85,9 @@ export class AWSFirehoseAppender {
|
|
|
83
85
|
log.warn("No credentials available for flush");
|
|
84
86
|
return;
|
|
85
87
|
}
|
|
86
|
-
const
|
|
87
|
-
if (!client) {
|
|
88
|
-
log.warn("No firehose client available, skipping flush");
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
const deferred = this.flushDeferred = new Deferred();
|
|
88
|
+
const deferred = (this.flushDeferred = new Deferred());
|
|
92
89
|
try {
|
|
90
|
+
const { streamName } = creds, client = await this.getFirehose(creds), { PutRecordBatchCommand } = await getFirehoseModule();
|
|
93
91
|
while (this.pendingRecords.length) {
|
|
94
92
|
const chunkSize = Math.min(this.pendingRecords.length, 10), records = this.pendingRecords.splice(0, chunkSize), recordJsons = records.map(record => JSON.stringify(record));
|
|
95
93
|
if (log.isDebugEnabled())
|
|
@@ -100,7 +98,7 @@ export class AWSFirehoseAppender {
|
|
|
100
98
|
log.info(`Pushing ${records.length} records to firehose`);
|
|
101
99
|
const cmd = new PutRecordBatchCommand({
|
|
102
100
|
DeliveryStreamName: streamName,
|
|
103
|
-
Records: batch
|
|
101
|
+
Records: batch
|
|
104
102
|
});
|
|
105
103
|
const resp = await client.send(cmd);
|
|
106
104
|
const failed = resp.FailedPutCount || 0;
|
|
@@ -118,10 +116,11 @@ export class AWSFirehoseAppender {
|
|
|
118
116
|
log.info(`PutRecordBatch ok count=${records.length}`);
|
|
119
117
|
}
|
|
120
118
|
}
|
|
119
|
+
deferred.resolve();
|
|
121
120
|
}
|
|
122
121
|
catch (err) {
|
|
123
122
|
log.error("Failed to push logs", err);
|
|
124
|
-
if (err.
|
|
123
|
+
if (err.name === ExpiredTokenExceptionCode) {
|
|
125
124
|
this.credentialManager.forceUpdateCredentials();
|
|
126
125
|
}
|
|
127
126
|
deferred.reject(err);
|
|
@@ -135,4 +134,4 @@ export class AWSFirehoseAppender {
|
|
|
135
134
|
}
|
|
136
135
|
}
|
|
137
136
|
export default AWSFirehoseAppender;
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUF1QixNQUFNLDBCQUEwQixDQUFBO0FBQ3JHLE9BQU8sRUFFTCxxQkFBcUIsR0FDdEIsTUFBTSxxQkFBcUIsQ0FBQTtBQUc1QixPQUFPLDRCQUE0QixNQUFNLG1DQUFtQyxDQUFBO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRTNELE9BQU8sRUFBVyxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBSXBELE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFBO0FBRWhDLE1BQU0sR0FBRyxHQUFHLGlCQUFpQixFQUFFLENBQUE7QUFFL0IsTUFBTSxPQUFPLG1CQUFtQjtJQVNaO0lBUFYsY0FBYyxHQUFHLEtBQUssRUFBYSxDQUFBO0lBQ25DLGFBQWEsQ0FBZ0I7SUFDN0IsZUFBZSxHQUFHLElBQUksQ0FBQztJQUVmLGlCQUFpQixDQUE4QjtJQUUvRCxZQUNrQixxQkFBNkI7UUFBN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQzdDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLDRCQUE0QixDQUFDLHFCQUFxQixDQUFDLENBQUE7UUFDaEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQTtZQUM5RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUks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QkFBcUIsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtZQUNqRCxDQUFDO1lBQ0QsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0QixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtZQUV6QixrQ0FBa0M7WUFDbEMsaUJBQWlCO1FBQ25CLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUE7SUFDekIsQ0FBQztDQUdGO0FBRUQsZUFBZSxtQkFBbUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHR5cGVzY3JpcHQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJy4uLy4uLy4uL2d1YXJkcy9wcmltaXRpdmUuanMnXG5pbXBvcnQgeyBGaXJlaG9zZUNsaWVudCwgUHV0UmVjb3JkQmF0Y2hDb21tYW5kLCBQdXRSZWNvcmRCYXRjaElucHV0IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1maXJlaG9zZVwiXG5pbXBvcnQge1xuICBDcmVkZW50aWFscyBhcyBJQVdTVGVtcG9yYXJ5Q3JlZGVudGlhbHMsXG4gIEV4cGlyZWRUb2tlbkV4Y2VwdGlvbixcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zdHNcIlxuaW1wb3J0IHsgTGV2ZWwgfSBmcm9tIFwiLi4vLi4vTGV2ZWwuanNcIlxuXG5pbXBvcnQgQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlciBmcm9tIFwiLi9BV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyLmpzXCJcbmltcG9ydCB7IGdldEludGVybmFsTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0ludGVybmFsTG9nZ2VyLmpzXCJcbmltcG9ydCB7IGdldFZhbHVlLCBndWFyZCB9IGZyb20gXCIuLi8uLi8uLi9ndWFyZHMvaW5kZXguanNcIlxuaW1wb3J0IHsgaXNFbXB0eSwgcGljayB9IGZyb20gXCJsb2Rhc2hcIlxuaW1wb3J0IHsgRGVmZXJyZWQgfSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9pbmRleC5qc1wiXG5pbXBvcnQgeyBMb2dSZWNvcmQgfSBmcm9tIFwiLi4vLi4vTG9nUmVjb3JkLmpzXCJcbmltcG9ydCB7IEFwcGVuZGVyIH0gZnJvbSBcIi4uLy4uL0FwcGVuZGVyLmpzXCJcblxuY29uc3QgTG9nUXVldWVNYXhSZWNvcmRzID0gMTAwMDBcblxuY29uc3QgbG9nID0gZ2V0SW50ZXJuYWxMb2dnZXIoKVxuXG5leHBvcnQgY2xhc3MgQVdTRmlyZWhvc2VBcHBlbmRlcjxSZWNvcmQgZXh0ZW5kcyBMb2dSZWNvcmQgPSBMb2dSZWNvcmQ+XG4gIGltcGxlbWVudHMgQXBwZW5kZXI8UmVjb3JkPiB7XG4gIHByaXZhdGUgcGVuZGluZ1JlY29yZHMgPSBBcnJheTxMb2dSZWNvcmQ+KClcbiAgcHJpdmF0ZSBmbHVzaERlZmVycmVkOiBEZWZlcnJlZDx2b2lkPlxuICBwcml2YXRlIGZsdXNoSW50ZXJ2YWxNcyA9IDEwMDA7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxNYW5hZ2VyOiBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxFbmRwb2ludFVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlciA9IG5ldyBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyKGNyZWRlbnRpYWxFbmRwb2ludFVybClcbiAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLm9uKFwicmVjZWl2ZWRcIiwgKCkgPT4ge1xuICAgICAgbG9nLmluZm8oXCJDcmVkZW50aWFscyByZWNlaXZlZCwgaW5pdGlhbGl6aW5nIGZpcmVob3NlIGNsaWVudFwiKVxuICAgICAgaWYgKCF0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCB8fCAhIXRoaXMuZmx1c2hEZWZlcnJlZCkge1xuICAgICAgICBsb2cuZGVidWcoXCJOb3RoaW5nIHRvIGZsdXNoIHVwb24gY3JlZGVudGlhbCByZWNlaXB0IE9SIGZsdXNoIGFscmVhZHkgaW4gcHJvZ3Jlc3NcIilcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB0aGlzLmZsdXNoKClcbiAgICAgICAgLmNhdGNoKChlOiBFcnJvcikgPT4ge1xuICAgICAgICAgIGxvZy5lcnJvcihgRXJyb3IgZmx1c2hpbmcgbG9ncyBhZnRlciBjcmVkZW50aWFsIHJlY2VpcHQ6ICR7ZS5tZXNzYWdlfWAsIGUpXG4gICAgICAgIH0pXG4gICAgfSlcbiAgfVxuICBhcHBlbmQocmVjb3JkOiBSZWNvcmQpOiB2b2lkIHtcbiAgICBjb25zdFxuICAgICAgcGVuZGluZ0NvdW50ID0gdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggKyAxLFxuICAgICAgcmVtb3ZlQ291bnQgPSBMb2dRdWV1ZU1heFJlY29yZHMgLSBwZW5kaW5nQ291bnRcblxuICAgIGlmIChyZW1vdmVDb3VudCA8IDApIHtcbiAgICAgIHRoaXMucGVuZGluZ1JlY29yZHMuc3BsaWNlKDAsIE1hdGguYWJzKHJlbW92ZUNvdW50KSlcbiAgICB9XG5cbiAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnB1c2goe1xuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgLi4ucmVjb3JkLFxuICAgICAgYXBwOiByZWNvcmQuYXBwPy5sZW5ndGggPiAwID8gcmVjb3JkLmFwcCA6IFwiVU5LTk9XTlwiLFxuICAgICAgZW52OiByZWNvcmQuZW52Py5sZW5ndGggPiAwID8gcmVjb3JkLmVudiA6IFwiVU5LTk9XTlwiLFxuICAgICAgdXJsOiB0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiID8gXCJsb2NhbDovL1wiIDogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgfSlcblxuICAgIHRoaXMuZmx1c2goKVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgZmlyZWhvc2UgY2xpZW50IGFuZCByZXR1cm5cbiAgICpcbiAgICogQHBhcmFtIHtJQVdTVGVtcG9yYXJ5Q3JlZGVudGlhbHN9IGNyZWRlbnRpYWxzXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZmx1c2hcbiAgICogQHJldHVybnMge0ZpcmVob3NlfVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRGaXJlaG9zZSgpOiBGaXJlaG9zZUNsaWVudCB7XG4gICAgY29uc3QgY3JlZHMgPSB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLmdldENyZWRlbnRpYWxzKClcblxuICAgIGlmICghY3JlZHMpIHtcbiAgICAgIGxvZy53YXJuKFwiTm8gY3JlZGVudGlhbHMgYXZhaWxhYmxlIGZvciBmbHVzaFwiKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCB7IHJlZ2lvbiwgc3RyZWFtTmFtZSB9ID0gY3JlZHNcblxuICAgIGlmICghcmVnaW9uIHx8ICFzdHJlYW1OYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWdpb24gb3Igc3RyZWFtIG5hbWUgbm90IGF2YWlsYWJsZVwiKVxuICAgIH1cblxuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBGaXJlaG9zZUNsaWVudCh7XG4gICAgICByZWdpb246IGNyZWRzLnJlZ2lvbixcbiAgICAgIGNyZWRlbnRpYWxzOiBwaWNrKGNyZWRzLCBcImFjY2Vzc0tleUlkXCIsIFwic2VjcmV0QWNjZXNzS2V5XCIsIFwic2Vzc2lvblRva2VuXCIpLFxuICAgIH0pXG5cbiAgICByZXR1cm4gY2xpZW50XG4gIH1cblxuICAvKipcbiAgICogRmx1c2ggcGVuZGluZyByZWNvcmRzXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoISF0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIkZsdXNoIGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHNraXBwaW5nXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKSB7XG4gICAgICBsb2cuZGVidWcoXCJObyBwZW5kaW5nIHJlY29yZHMgdG8gZmx1c2hcIilcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBjcmVkcyA9IHRoaXMuY3JlZGVudGlhbE1hbmFnZXIuZ2V0Q3JlZGVudGlhbHMoKVxuICAgIGlmICghY3JlZHMpIHtcbiAgICAgIGxvZy53YXJuKFwiTm8gY3JlZGVudGlhbHMgYXZhaWxhYmxlIGZvciBmbHVzaFwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHsgc3RyZWFtTmFtZSB9ID0gY3JlZHMsXG4gICAgICBjbGllbnQgPSB0aGlzLmdldEZpcmVob3NlKClcbiAgICBpZiAoIWNsaWVudCkge1xuICAgICAgbG9nLndhcm4oXCJObyBmaXJlaG9zZSBjbGllbnQgYXZhaWxhYmxlLCBza2lwcGluZyBmbHVzaFwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGVmZXJyZWQgPSB0aGlzLmZsdXNoRGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQ8dm9pZD4oKVxuICAgIHRyeSB7XG4gICAgICB3aGlsZSAodGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3RcbiAgICAgICAgICBjaHVua1NpemUgPSBNYXRoLm1pbih0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aCwgMTApLFxuICAgICAgICAgIHJlY29yZHMgPSB0aGlzLnBlbmRpbmdSZWNvcmRzLnNwbGljZSgwLCBjaHVua1NpemUpLFxuICAgICAgICAgIHJlY29yZEpzb25zID0gcmVjb3Jkcy5tYXAocmVjb3JkID0+IEpTT04uc3RyaW5naWZ5KHJlY29yZCkpXG5cbiAgICAgICAgaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKVxuICAgICAgICAgIGxvZy5kZWJ1ZyhcIlJlY29yZHNcIiwgcmVjb3JkcylcblxuICAgICAgICBjb25zdFxuICAgICAgICAgIHRleHRFbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCksXG4gICAgICAgICAgYmF0Y2g6IFB1dFJlY29yZEJhdGNoSW5wdXRbXCJSZWNvcmRzXCJdID0gcmVjb3JkSnNvbnMubWFwKGpzb25TdHIgPT4gKHtcbiAgICAgICAgICAgIERhdGE6IHRleHRFbmNvZGVyLmVuY29kZShqc29uU3RyKVxuICAgICAgICAgIH0pKVxuXG4gICAgICAgIGxvZy5pbmZvKGBQdXNoaW5nICR7cmVjb3Jkcy5sZW5ndGh9IHJlY29yZHMgdG8gZmlyZWhvc2VgKVxuXG4gICAgICAgIGNvbnN0IGNtZCA9IG5ldyBQdXRSZWNvcmRCYXRjaENvbW1hbmQoe1xuICAgICAgICAgIERlbGl2ZXJ5U3RyZWFtTmFtZTogc3RyZWFtTmFtZSxcbiAgICAgICAgICBSZWNvcmRzOiBiYXRjaCxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgY2xpZW50LnNlbmQoY21kKVxuICAgICAgICBjb25zdCBmYWlsZWQgPSByZXNwLkZhaWxlZFB1dENvdW50IHx8IDBcbiAgICAgICAgaWYgKGZhaWxlZCkge1xuICAgICAgICAgIGNvbnN0IHJyID0gcmVzcC5SZXF1ZXN0UmVzcG9uc2VzIHx8IFtdXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHJyW2ldLkVycm9yQ29kZSkge1xuICAgICAgICAgICAgICBsb2cud2FybihgUmVjb3JkIGZhaWxlZDogJHtycltpXS5FcnJvckNvZGV9ICR7cnJbaV0uRXJyb3JNZXNzYWdlfWApXG4gICAgICAgICAgICAgIC8vdGhpcy5wZW5kaW5nUmVjb3Jkcy51bnNoaWZ0KHJlY29yZHNbaV0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZy5pbmZvKGBQdXRSZWNvcmRCYXRjaCBmYWlsZWQ9JHtmYWlsZWR9OyByZXF1ZXVlZCBmYWlsZWQgcmVjb3Jkc2ApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nLmluZm8oYFB1dFJlY29yZEJhdGNoIG9rIGNvdW50PSR7cmVjb3Jkcy5sZW5ndGh9YClcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZXJyb3IoXCJGYWlsZWQgdG8gcHVzaCBsb2dzXCIsIGVycilcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gRXhwaXJlZFRva2VuRXhjZXB0aW9uKSB7XG4gICAgICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIuZm9yY2VVcGRhdGVDcmVkZW50aWFscygpXG4gICAgICB9XG4gICAgICBkZWZlcnJlZC5yZWplY3QoZXJyKVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmZsdXNoRGVmZXJyZWQgPSBudWxsXG5cbiAgICAgIC8vIGlmICh0aGlzLnBlbmRpbmdSZWNvcmRzLmxlbmd0aClcbiAgICAgIC8vICAgdGhpcy5mbHVzaCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2VcbiAgfVxuXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgQVdTRmlyZWhvc2VBcHBlbmRlclxuIl19
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VBcHBlbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VBcHBlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLDRCQUVOLE1BQU0sbUNBQW1DLENBQUE7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFJcEQsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUE7QUFDaEMsTUFBTSx5QkFBeUIsR0FBRyx1QkFBdUIsQ0FBQTtBQUV6RCxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsRUFBRSxDQUFBO0FBQy9CLElBQUksY0FBYyxHQUF1RCxJQUFJLENBQUE7QUFFN0UsU0FBUyxpQkFBaUI7SUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLGNBQWMsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUQsY0FBYyxHQUFHLElBQUksQ0FBQTtZQUNyQixNQUFNLEdBQUcsQ0FBQTtRQUNYLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE9BQU8sY0FBYyxDQUFBO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0lBU0Y7SUFOcEIsY0FBYyxHQUFHLEtBQUssRUFBYSxDQUFBO0lBQ25DLGFBQWEsQ0FBZ0I7SUFDN0IsZUFBZSxHQUFHLElBQUksQ0FBQTtJQUVkLGlCQUFpQixDQUE4QjtJQUUvRCxZQUE0QixxQkFBNkI7UUFBN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLDRC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QUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLEdBQUcsQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDckMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLHlCQUF5QixFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBQ2pELENBQUM7WUFDRCxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RCLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1lBRXpCLGtDQUFrQztZQUNsQyxpQkFBaUI7UUFDbkIsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQTtJQUN6QixDQUFDO0NBQ0Y7QUFFRCxlQUFlLG1CQUFtQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdHlwZXNjcmlwdC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB0eXBlIHtcbiAgRmlyZWhvc2VDbGllbnQsXG4gIFB1dFJlY29yZEJhdGNoSW5wdXRcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1maXJlaG9zZVwiXG5pbXBvcnQgeyBMZXZlbCB9IGZyb20gXCIuLi8uLi9MZXZlbC5qc1wiXG5cbmltcG9ydCBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyLCB7XG4gIHR5cGUgQVdTQ3JlZGVudGlhbHNcbn0gZnJvbSBcIi4vQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci5qc1wiXG5pbXBvcnQgeyBnZXRJbnRlcm5hbExvZ2dlciB9IGZyb20gXCIuLi8uLi9JbnRlcm5hbExvZ2dlci5qc1wiXG5pbXBvcnQgeyBwaWNrIH0gZnJvbSBcImxvZGFzaFwiXG5pbXBvcnQgeyBEZWZlcnJlZCB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL2luZGV4LmpzXCJcbmltcG9ydCB7IExvZ1JlY29yZCB9IGZyb20gXCIuLi8uLi9Mb2dSZWNvcmQuanNcIlxuaW1wb3J0IHsgQXBwZW5kZXIgfSBmcm9tIFwiLi4vLi4vQXBwZW5kZXIuanNcIlxuXG5jb25zdCBMb2dRdWV1ZU1heFJlY29yZHMgPSAxMDAwMFxuY29uc3QgRXhwaXJlZFRva2VuRXhjZXB0aW9uQ29kZSA9IFwiRXhwaXJlZFRva2VuRXhjZXB0aW9uXCJcblxuY29uc3QgbG9nID0gZ2V0SW50ZXJuYWxMb2dnZXIoKVxubGV0IGZpcmVob3NlTW9kdWxlOiBQcm9taXNlPHR5cGVvZiBpbXBvcnQoXCJAYXdzLXNkay9jbGllbnQtZmlyZWhvc2VcIik+ID0gbnVsbFxuXG5mdW5jdGlvbiBnZXRGaXJlaG9zZU1vZHVsZSgpIHtcbiAgaWYgKCFmaXJlaG9zZU1vZHVsZSkge1xuICAgIGZpcmVob3NlTW9kdWxlID0gaW1wb3J0KFwiQGF3cy1zZGsvY2xpZW50LWZpcmVob3NlXCIpLmNhdGNoKGVyciA9PiB7XG4gICAgICBmaXJlaG9zZU1vZHVsZSA9IG51bGxcbiAgICAgIHRocm93IGVyclxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gZmlyZWhvc2VNb2R1bGVcbn1cblxuZXhwb3J0IGNsYXNzIEFXU0ZpcmVob3NlQXBwZW5kZXI8XG4gIFJlY29yZCBleHRlbmRzIExvZ1JlY29yZCA9IExvZ1JlY29yZFxuPiBpbXBsZW1lbnRzIEFwcGVuZGVyPFJlY29yZD4ge1xuICBwcml2YXRlIHBlbmRpbmdSZWNvcmRzID0gQXJyYXk8TG9nUmVjb3JkPigpXG4gIHByaXZhdGUgZmx1c2hEZWZlcnJlZDogRGVmZXJyZWQ8dm9pZD5cbiAgcHJpdmF0ZSBmbHVzaEludGVydmFsTXMgPSAxMDAwXG5cbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxNYW5hZ2VyOiBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyXG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxFbmRwb2ludFVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5jcmVkZW50aWFsTWFuYWdlciA9IG5ldyBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyKFxuICAgICAgY3JlZGVudGlhbEVuZHBvaW50VXJsXG4gICAgKVxuICAgIHRoaXMuY3JlZGVudGlhbE1hbmFnZXIub24oXCJyZWNlaXZlZFwiLCAoKSA9PiB7XG4gICAgICBsb2cuaW5mbyhcIkNyZWRlbnRpYWxzIHJlY2VpdmVkLCBpbml0aWFsaXppbmcgZmlyZWhvc2UgY2xpZW50XCIpXG4gICAgICBpZiAoIXRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoIHx8ICEhdGhpcy5mbHVzaERlZmVycmVkKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhcbiAgICAgICAgICBcIk5vdGhpbmcgdG8gZmx1c2ggdXBvbiBjcmVkZW50aWFsIHJlY2VpcHQgT1IgZmx1c2ggYWxyZWFkeSBpbiBwcm9ncmVzc1wiXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB0aGlzLmZsdXNoKCkuY2F0Y2goKGU6IEVycm9yKSA9PiB7XG4gICAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgICBgRXJyb3IgZmx1c2hpbmcgbG9ncyBhZnRlciBjcmVkZW50aWFsIHJlY2VpcHQ6ICR7ZS5tZXNzYWdlfWAsXG4gICAgICAgICAgZVxuICAgICAgICApXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbiAgYXBwZW5kKHJlY29yZDogUmVjb3JkKTogdm9pZCB7XG4gICAgY29uc3QgcGVuZGluZ0NvdW50ID0gdGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGggKyAxLFxuICAgICAgcmVtb3ZlQ291bnQgPSBMb2dRdWV1ZU1heFJlY29yZHMgLSBwZW5kaW5nQ291bnRcblxuICAgIGlmIChyZW1vdmVDb3VudCA8IDApIHtcbiAgICAgIHRoaXMucGVuZGluZ1JlY29yZHMuc3BsaWNlKDAsIE1hdGguYWJzKHJlbW92ZUNvdW50KSlcbiAgICB9XG5cbiAgICB0aGlzLnBlbmRpbmdSZWNvcmRzLnB1c2goe1xuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgLi4ucmVjb3JkLFxuICAgICAgYXBwOiByZWNvcmQuYXBwPy5sZW5ndGggPiAwID8gcmVjb3JkLmFwcCA6IFwiVU5LTk9XTlwiLFxuICAgICAgZW52OiByZWNvcmQuZW52Py5sZW5ndGggPiAwID8gcmVjb3JkLmVudiA6IFwiVU5LTk9XTlwiLFxuICAgICAgdXJsOiB0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiID8gXCJsb2NhbDovL1wiIDogd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICB9KVxuXG4gICAgdGhpcy5mbHVzaCgpXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBGaXJlaG9zZSBjbGllbnQgZm9yIGEgbG9hZGVkIGNyZWRlbnRpYWwgc2V0LlxuICAgKiBAcGFyYW0gY3JlZHMgTG9hZGVkIEZpcmVob3NlIGNyZWRlbnRpYWxzLlxuICAgKiBAcmV0dXJucyBGaXJlaG9zZSBjbGllbnQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldEZpcmVob3NlKGNyZWRzOiBBV1NDcmVkZW50aWFscyk6IFByb21pc2U8RmlyZWhvc2VDbGllbnQ+IHtcbiAgICBjb25zdCB7IHJlZ2lvbiwgc3RyZWFtTmFtZSB9ID0gY3JlZHNcblxuICAgIGlmICghcmVnaW9uIHx8ICFzdHJlYW1OYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWdpb24gb3Igc3RyZWFtIG5hbWUgbm90IGF2YWlsYWJsZVwiKVxuICAgIH1cblxuICAgIGNvbnN0IHsgRmlyZWhvc2VDbGllbnQgfSA9IGF3YWl0IGdldEZpcmVob3NlTW9kdWxlKClcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgRmlyZWhvc2VDbGllbnQoe1xuICAgICAgcmVnaW9uOiBjcmVkcy5yZWdpb24sXG4gICAgICBjcmVkZW50aWFsczogcGljayhjcmVkcywgXCJhY2Nlc3NLZXlJZFwiLCBcInNlY3JldEFjY2Vzc0tleVwiLCBcInNlc3Npb25Ub2tlblwiKVxuICAgIH0pXG5cbiAgICByZXR1cm4gY2xpZW50XG4gIH1cblxuICAvKipcbiAgICogRmx1c2ggcGVuZGluZyByZWNvcmRzXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoISF0aGlzLmZsdXNoRGVmZXJyZWQpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIkZsdXNoIGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHNraXBwaW5nXCIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGVuZGluZ1JlY29yZHMubGVuZ3RoKSB7XG4gICAgICBsb2cuZGVidWcoXCJObyBwZW5kaW5nIHJlY29yZHMgdG8gZmx1c2hcIilcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBjcmVkcyA9IHRoaXMuY3JlZGVudGlhbE1hbmFnZXIuZ2V0Q3JlZGVudGlhbHMoKVxuICAgIGlmICghY3JlZHMpIHtcbiAgICAgIGxvZy53YXJuKFwiTm8gY3JlZGVudGlhbHMgYXZhaWxhYmxlIGZvciBmbHVzaFwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGVmZXJyZWQgPSAodGhpcy5mbHVzaERlZmVycmVkID0gbmV3IERlZmVycmVkPHZvaWQ+KCkpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgc3RyZWFtTmFtZSB9ID0gY3JlZHMsXG4gICAgICAgIGNsaWVudCA9IGF3YWl0IHRoaXMuZ2V0RmlyZWhvc2UoY3JlZHMpLFxuICAgICAgICB7IFB1dFJlY29yZEJhdGNoQ29tbWFuZCB9ID0gYXdhaXQgZ2V0RmlyZWhvc2VNb2R1bGUoKVxuXG4gICAgICB3aGlsZSAodGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgY2h1bmtTaXplID0gTWF0aC5taW4odGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgsIDEwKSxcbiAgICAgICAgICByZWNvcmRzID0gdGhpcy5wZW5kaW5nUmVjb3Jkcy5zcGxpY2UoMCwgY2h1bmtTaXplKSxcbiAgICAgICAgICByZWNvcmRKc29ucyA9IHJlY29yZHMubWFwKHJlY29yZCA9PiBKU09OLnN0cmluZ2lmeShyZWNvcmQpKVxuXG4gICAgICAgIGlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSkgbG9nLmRlYnVnKFwiUmVjb3Jkc1wiLCByZWNvcmRzKVxuXG4gICAgICAgIGNvbnN0IHRleHRFbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCksXG4gICAgICAgICAgYmF0Y2g6IFB1dFJlY29yZEJhdGNoSW5wdXRbXCJSZWNvcmRzXCJdID0gcmVjb3JkSnNvbnMubWFwKGpzb25TdHIgPT4gKHtcbiAgICAgICAgICAgIERhdGE6IHRleHRFbmNvZGVyLmVuY29kZShqc29uU3RyKVxuICAgICAgICAgIH0pKVxuXG4gICAgICAgIGxvZy5pbmZvKGBQdXNoaW5nICR7cmVjb3Jkcy5sZW5ndGh9IHJlY29yZHMgdG8gZmlyZWhvc2VgKVxuXG4gICAgICAgIGNvbnN0IGNtZCA9IG5ldyBQdXRSZWNvcmRCYXRjaENvbW1hbmQoe1xuICAgICAgICAgIERlbGl2ZXJ5U3RyZWFtTmFtZTogc3RyZWFtTmFtZSxcbiAgICAgICAgICBSZWNvcmRzOiBiYXRjaFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBjbGllbnQuc2VuZChjbWQpXG4gICAgICAgIGNvbnN0IGZhaWxlZCA9IHJlc3AuRmFpbGVkUHV0Q291bnQgfHwgMFxuICAgICAgICBpZiAoZmFpbGVkKSB7XG4gICAgICAgICAgY29uc3QgcnIgPSByZXNwLlJlcXVlc3RSZXNwb25zZXMgfHwgW11cbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAocnJbaV0uRXJyb3JDb2RlKSB7XG4gICAgICAgICAgICAgIGxvZy53YXJuKFxuICAgICAgICAgICAgICAgIGBSZWNvcmQgZmFpbGVkOiAke3JyW2ldLkVycm9yQ29kZX0gJHtycltpXS5FcnJvck1lc3NhZ2V9YFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC8vdGhpcy5wZW5kaW5nUmVjb3Jkcy51bnNoaWZ0KHJlY29yZHNbaV0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZy5pbmZvKGBQdXRSZWNvcmRCYXRjaCBmYWlsZWQ9JHtmYWlsZWR9OyByZXF1ZXVlZCBmYWlsZWQgcmVjb3Jkc2ApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nLmluZm8oYFB1dFJlY29yZEJhdGNoIG9rIGNvdW50PSR7cmVjb3Jkcy5sZW5ndGh9YClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGVmZXJyZWQucmVzb2x2ZSgpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZXJyb3IoXCJGYWlsZWQgdG8gcHVzaCBsb2dzXCIsIGVycilcbiAgICAgIGlmIChlcnIubmFtZSA9PT0gRXhwaXJlZFRva2VuRXhjZXB0aW9uQ29kZSkge1xuICAgICAgICB0aGlzLmNyZWRlbnRpYWxNYW5hZ2VyLmZvcmNlVXBkYXRlQ3JlZGVudGlhbHMoKVxuICAgICAgfVxuICAgICAgZGVmZXJyZWQucmVqZWN0KGVycilcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5mbHVzaERlZmVycmVkID0gbnVsbFxuXG4gICAgICAvLyBpZiAodGhpcy5wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpXG4gICAgICAvLyAgIHRoaXMuZmx1c2goKVxuICAgIH1cblxuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQVdTRmlyZWhvc2VBcHBlbmRlclxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AWSFirehoseCredentialManager.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AWSFirehoseCredentialManager.d.ts","sourceRoot":"","sources":["../../../../../src/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,eAAe,CAAA;AAMzC,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,qBAAa,4BAA6B,SAAQ,aAAa,CAAC,oCAAoC,CAAC;aAIvE,qBAAqB,EAAE,MAAM;IAHzD,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,YAAY,CAAiC;gBAEzB,qBAAqB,EAAE,MAAM;IAIzD,sBAAsB,IAAI,IAAI;IAS9B,cAAc,IAAI,cAAc;IAmBhC,cAAc,IAAI,OAAO;YAIX,IAAI;IA0BlB,eAAe,CAAC,aAAa,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;IA2B7D,aAAa,IAAI,MAAM;IAIvB,SAAS,IAAI,MAAM;IAInB,OAAO,IAAI,IAAI;CAMhB;AAED,eAAe,4BAA4B,CAAA"}
|
|
@@ -39,11 +39,11 @@ export class AWSFirehoseCredentialManager extends EventEmitter3 {
|
|
|
39
39
|
async load() {
|
|
40
40
|
if (this.loadDeferred && !this.loadDeferred.isRejected())
|
|
41
41
|
return this.loadDeferred.promise;
|
|
42
|
-
const deferred = this.loadDeferred = new Deferred();
|
|
42
|
+
const deferred = (this.loadDeferred = new Deferred());
|
|
43
43
|
try {
|
|
44
44
|
const r = await fetch(this.credentialEndpointUrl, {
|
|
45
45
|
method: "GET",
|
|
46
|
-
credentials: "include"
|
|
46
|
+
credentials: "include"
|
|
47
47
|
});
|
|
48
48
|
if (!r.ok)
|
|
49
49
|
throw new Error(`creds http ${r.status}`);
|
|
@@ -95,4 +95,4 @@ export class AWSFirehoseCredentialManager extends EventEmitter3 {
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
export default AWSFirehoseCredentialManager;
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9sb2dnaW5nL2FwcGVuZGVycy9hd3MtZmlyZWhvc2UvQVdTRmlyZWhvc2VDcmVkZW50aWFsTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDM0QsT0FBTyxhQUFhLE1BQU0sZUFBZSxDQUFBO0FBRXpDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUEsQ0FBQyxZQUFZO0FBRXpELE1BQU0sR0FBRyxHQUFHLGlCQUFpQixFQUFFLENBQUE7QUFnQi9CLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxhQUFtRDtJQUl2RTtJQUhwQixZQUFZLEdBQWtDLElBQUksQ0FBQTtJQUNsRCxZQUFZLEdBQTZCLElBQUksQ0FBQTtJQUVyRCxZQUE0QixxQkFBNkI7UUFDdkQsS0FBSyxFQUFFLENBQUE7UUFEbUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO0lBRXpELENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7UUFDckQsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FB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QUFVLENBQUMsQ0FBQTtZQUV0QyxXQUFXLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQTtRQUMzRCxDQUFDO1FBRUQsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBRXhDLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtZQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUM3QyxDQUFBO1FBQ0gsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsVUFBVSxDQUFBO0lBQzFDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxDQUFBO0lBQ3RDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtRQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtJQUMxQixDQUFDO0NBQ0Y7QUFFRCxlQUFlLDRCQUE0QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmZXJyZWQgfSBmcm9tIFwiLi4vLi4vLi4vaGVscGVycy9pbmRleC5qc1wiXG5pbXBvcnQgeyBnZXRJbnRlcm5hbExvZ2dlciB9IGZyb20gXCIuLi8uLi9JbnRlcm5hbExvZ2dlci5qc1wiXG5pbXBvcnQgRXZlbnRFbWl0dGVyMyBmcm9tIFwiZXZlbnRlbWl0dGVyM1wiXG5cbmNvbnN0IENSRURfQlVGRkVSX1BBRERJTkdfTVMgPSAzICogNjAgKiAxMDAwIC8vIDMgbWludXRlc1xuXG5jb25zdCBsb2cgPSBnZXRJbnRlcm5hbExvZ2dlcigpXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVdTQ3JlZGVudGlhbHMge1xuICBhY2Nlc3NLZXlJZDogc3RyaW5nXG4gIHNlY3JldEFjY2Vzc0tleTogc3RyaW5nXG4gIHNlc3Npb25Ub2tlbjogc3RyaW5nXG4gIHN0cmVhbU5hbWU6IHN0cmluZ1xuICByZWdpb246IHN0cmluZ1xuICBleHBpcmF0aW9uOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyRXZlbnRNYXAge1xuICByZWNlaXZlZDogKGNyZWRzOiBBV1NDcmVkZW50aWFscykgPT4gdm9pZFxuICBleHBpcmVkOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBjbGFzcyBBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyIGV4dGVuZHMgRXZlbnRFbWl0dGVyMzxBV1NGaXJlaG9zZUNyZWRlbnRpYWxNYW5hZ2VyRXZlbnRNYXA+IHtcbiAgcHJpdmF0ZSByZWZyZXNoVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+ID0gbnVsbFxuICBwcml2YXRlIGxvYWREZWZlcnJlZDogRGVmZXJyZWQ8QVdTQ3JlZGVudGlhbHM+ID0gbnVsbFxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsRW5kcG9pbnRVcmw6IHN0cmluZykge1xuICAgIHN1cGVyKClcbiAgfVxuXG4gIGZvcmNlVXBkYXRlQ3JlZGVudGlhbHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9hZERlZmVycmVkICYmICF0aGlzLmxvYWREZWZlcnJlZC5pc1NldHRsZWQoKSkge1xuICAgICAgdGhpcy5sb2FkRGVmZXJyZWQucmVqZWN0KG5ldyBFcnJvcihcImZvcmNlIHVwZGF0ZVwiKSlcbiAgICB9XG5cbiAgICB0aGlzLmxvYWREZWZlcnJlZCA9IG51bGxcbiAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaCgxKVxuICB9XG5cbiAgZ2V0Q3JlZGVudGlhbHMoKTogQVdTQ3JlZGVudGlhbHMge1xuICAgIGlmICh0aGlzLmxvYWREZWZlcnJlZCAmJiB0aGlzLmxvYWREZWZlcnJlZC5pc0Z1bGZpbGxlZCgpKSB7XG4gICAgICBjb25zdCBjcmVkcyA9IHRoaXMubG9hZERlZmVycmVkLmdldFJlc3VsdCgpLFxuICAgICAgICBleHBNcyA9IERhdGUucGFyc2UoY3JlZHMuZXhwaXJhdGlvbilcblxuICAgICAgaWYgKGV4cE1zIDw9IERhdGUubm93KCkpIHtcbiAgICAgICAgbG9nLmluZm8oXCJDcmVkZW50aWFscyBleHBpcmVkXCIpXG4gICAgICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICAgICAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaCgxKVxuICAgICAgICB0aGlzLmVtaXQoXCJleHBpcmVkXCIpXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlZHNcbiAgICB9XG5cbiAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaCgxKVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBoYXNDcmVkZW50aWFscygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDcmVkZW50aWFscygpICE9IG51bGxcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZCgpOiBQcm9taXNlPEFXU0NyZWRlbnRpYWxzPiB7XG4gICAgaWYgKHRoaXMubG9hZERlZmVycmVkICYmICF0aGlzLmxvYWREZWZlcnJlZC5pc1JlamVjdGVkKCkpXG4gICAgICByZXR1cm4gdGhpcy5sb2FkRGVmZXJyZWQucHJvbWlzZVxuXG4gICAgY29uc3QgZGVmZXJyZWQgPSAodGhpcy5sb2FkRGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQ8QVdTQ3JlZGVudGlhbHM+KCkpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHIgPSBhd2FpdCBmZXRjaCh0aGlzLmNyZWRlbnRpYWxFbmRwb2ludFVybCwge1xuICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIlxuICAgICAgfSlcbiAgICAgIGlmICghci5vaykgdGhyb3cgbmV3IEVycm9yKGBjcmVkcyBodHRwICR7ci5zdGF0dXN9YClcbiAgICAgIGNvbnN0IGNyZWRzOiBBV1NDcmVkZW50aWFscyA9IGF3YWl0IHIuanNvbigpXG5cbiAgICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKGNyZWRzKVxuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBHb3QgY3JlZHMsIGV4cGlyZT0ke2NyZWRzLmV4cGlyYXRpb259LCBzdHJlYW09JHtjcmVkcy5zdHJlYW1OYW1lfSwgcmVnaW9uPSR7Y3JlZHMucmVnaW9ufWBcbiAgICAgIClcbiAgICAgIGRlZmVycmVkLnJlc29sdmUoY3JlZHMpXG4gICAgICB0aGlzLmVtaXQoXCJyZWNlaXZlZFwiLCBjcmVkcylcbiAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZGVmZXJyZWQucmVqZWN0KGUpXG4gICAgICB0aGlzLmxvYWREZWZlcnJlZCA9IG51bGxcbiAgICAgIHRocm93IGVcbiAgICB9XG4gIH1cbiAgc2NoZWR1bGVSZWZyZXNoKGNyZWRzT3JNaWxsaXM6IEFXU0NyZWRlbnRpYWxzIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVmcmVzaFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWZyZXNoVGltZXIpXG4gICAgICB0aGlzLnJlZnJlc2hUaW1lciA9IG51bGxcbiAgICB9XG4gICAgaWYgKCFjcmVkc09yTWlsbGlzKSByZXR1cm5cblxuICAgIGxldCByZWZyZXNoSW5NczogbnVtYmVyXG4gICAgaWYgKHR5cGVvZiBjcmVkc09yTWlsbGlzID09PSBcIm51bWJlclwiKSB7XG4gICAgICByZWZyZXNoSW5NcyA9IGNyZWRzT3JNaWxsaXNcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY3JlZHMgPSBjcmVkc09yTWlsbGlzLFxuICAgICAgICBleHBNcyA9IERhdGUucGFyc2UoY3JlZHMuZXhwaXJhdGlvbilcblxuICAgICAgcmVmcmVzaEluTXMgPSBleHBNcyAtIERhdGUubm93KCkgLSBDUkVEX0JVRkZFUl9QQURESU5HX01TXG4gICAgfVxuXG4gICAgcmVmcmVzaEluTXMgPSBNYXRoLm1heCgxMDAsIHJlZnJlc2hJbk1zKVxuXG4gICAgdGhpcy5yZWZyZXNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICAgICAgdGhpcy5sb2FkKCkuY2F0Y2goKGU6IEVycm9yKSA9PlxuICAgICAgICBsb2cuZXJyb3IoYHJlZnJlc2ggZmFpbGVkOiAke2UubWVzc2FnZX1gLCBlKVxuICAgICAgKVxuICAgIH0sIHJlZnJlc2hJbk1zKVxuICB9XG5cbiAgZ2V0U3RyZWFtTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldENyZWRlbnRpYWxzKCk/LnN0cmVhbU5hbWVcbiAgfVxuXG4gIGdldFJlZ2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldENyZWRlbnRpYWxzKCk/LnJlZ2lvblxuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaChudWxsKVxuICAgIGlmICghdGhpcy5sb2FkRGVmZXJyZWQuaXNTZXR0bGVkKCkpXG4gICAgICB0aGlzLmxvYWREZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKFwiZGVzdHJveWVkXCIpKVxuICAgIHRoaXMubG9hZERlZmVycmVkID0gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFXU0ZpcmVob3NlQ3JlZGVudGlhbE1hbmFnZXJcbiJdfQ==
|