@dyanet/nestjs-config-aws 1.2.0-beta.1 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/cjs/config-aws/src/config-manager.js +8 -8
- package/dist/cjs/config-aws/src/index.js +23 -23
- package/dist/cjs/config-aws/src/interfaces/config-manager.interface.js +1 -1
- package/dist/cjs/config-aws/src/loaders/env-file.loader.js +5 -5
- package/dist/cjs/config-aws/src/loaders/environment.loader.js +1 -1
- package/dist/cjs/config-aws/src/loaders/s3.loader.js +8 -8
- package/dist/cjs/config-aws/src/loaders/secrets-manager.loader.js +16 -9
- package/dist/cjs/config-aws/src/loaders/ssm-parameter-store.loader.js +6 -6
- package/dist/cjs/config-aws/src/utils/validation.util.js +6 -6
- package/dist/cjs/nestjs-config-aws/src/integration/services/async-config-helper.service.js +14 -6
- package/dist/cjs/nestjs-config-aws/src/integration/services/validation-integration.service.js +9 -6
- package/dist/esm/config-aws/src/config-manager.js +2 -2
- package/dist/esm/config-aws/src/index.js +10 -10
- package/dist/esm/config-aws/src/interfaces/config-manager.interface.js +1 -1
- package/dist/esm/config-aws/src/loaders/env-file.loader.js +3 -3
- package/dist/esm/config-aws/src/loaders/environment.loader.js +1 -1
- package/dist/esm/config-aws/src/loaders/s3.loader.js +3 -3
- package/dist/esm/config-aws/src/loaders/secrets-manager.loader.js +12 -5
- package/dist/esm/config-aws/src/loaders/ssm-parameter-store.loader.js +2 -2
- package/dist/esm/config-aws/src/utils/validation.util.js +2 -2
- package/dist/esm/nestjs-config-aws/src/integration/services/async-config-helper.service.js +14 -6
- package/dist/esm/nestjs-config-aws/src/integration/services/validation-integration.service.js +9 -6
- package/dist/esm/package.json +1 -0
- package/dist/types/config-aws/src/config-manager.d.ts +1 -1
- package/dist/types/config-aws/src/config-manager.d.ts.map +1 -1
- package/dist/types/config-aws/src/index.d.ts +16 -16
- package/dist/types/config-aws/src/index.d.ts.map +1 -1
- package/dist/types/config-aws/src/interfaces/config-manager.interface.d.ts +1 -1
- package/dist/types/config-aws/src/interfaces/config-manager.interface.d.ts.map +1 -1
- package/dist/types/config-aws/src/loaders/env-file.loader.d.ts +2 -2
- package/dist/types/config-aws/src/loaders/env-file.loader.d.ts.map +1 -1
- package/dist/types/config-aws/src/loaders/environment.loader.d.ts +2 -2
- package/dist/types/config-aws/src/loaders/environment.loader.d.ts.map +1 -1
- package/dist/types/config-aws/src/loaders/s3.loader.d.ts +2 -2
- package/dist/types/config-aws/src/loaders/s3.loader.d.ts.map +1 -1
- package/dist/types/config-aws/src/loaders/secrets-manager.loader.d.ts +3 -3
- package/dist/types/config-aws/src/loaders/secrets-manager.loader.d.ts.map +1 -1
- package/dist/types/config-aws/src/loaders/ssm-parameter-store.loader.d.ts +2 -2
- package/dist/types/config-aws/src/loaders/ssm-parameter-store.loader.d.ts.map +1 -1
- package/dist/types/config-aws/src/utils/validation.util.d.ts +1 -1
- package/dist/types/config-aws/src/utils/validation.util.d.ts.map +1 -1
- package/dist/types/nestjs-config-aws/src/integration/services/async-config-helper.service.d.ts.map +1 -1
- package/dist/types/nestjs-config-aws/src/integration/services/validation-integration.service.d.ts.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# @dyanet/nestjs-config-aws
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@dyanet/nestjs-config-aws)
|
|
4
|
+
[](https://github.com/dyanet/config-aws/actions/workflows/ci.yml)
|
|
5
|
+
[](https://codecov.io/gh/dyanet/config-aws)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
|
|
3
8
|
NestJS adapter for AWS configuration management. A thin wrapper around [@dyanet/config-aws](../config-aws) that provides NestJS dependency injection and module patterns.
|
|
4
9
|
|
|
5
10
|
## Features
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ConfigManager = void 0;
|
|
4
|
-
const
|
|
4
|
+
const index_js_1 = require("./errors/index.js");
|
|
5
5
|
/**
|
|
6
6
|
* Default console logger implementation
|
|
7
7
|
*/
|
|
@@ -248,7 +248,7 @@ class ConfigManager {
|
|
|
248
248
|
mergedConfig = { ...mergedConfig, ...loaderConfig };
|
|
249
249
|
}
|
|
250
250
|
catch (error) {
|
|
251
|
-
throw new
|
|
251
|
+
throw new index_js_1.ConfigurationLoadError(`Failed to load configuration from ${loaderName}: ${error instanceof Error ? error.message : String(error)}`, loaderName, error instanceof Error ? error : undefined);
|
|
252
252
|
}
|
|
253
253
|
}
|
|
254
254
|
// Count overrides
|
|
@@ -263,7 +263,7 @@ class ConfigManager {
|
|
|
263
263
|
const result = this._options.schema.safeParse(mergedConfig);
|
|
264
264
|
if (!result.success) {
|
|
265
265
|
const zodError = result.error;
|
|
266
|
-
throw new
|
|
266
|
+
throw new index_js_1.ValidationError(`Configuration validation failed: ${zodError.errors.map((e) => `${e.path.join('.')}: ${e.message}`).join(', ')}`, zodError.errors, undefined);
|
|
267
267
|
}
|
|
268
268
|
this.config = result.data;
|
|
269
269
|
}
|
|
@@ -285,7 +285,7 @@ class ConfigManager {
|
|
|
285
285
|
*/
|
|
286
286
|
get(key) {
|
|
287
287
|
if (!this.loaded || this.config === null) {
|
|
288
|
-
throw new
|
|
288
|
+
throw new index_js_1.ConfigurationError('Configuration not loaded. Call load() first.');
|
|
289
289
|
}
|
|
290
290
|
// Non-null assertion is safe here because we've checked this.config !== null above
|
|
291
291
|
return this.config[key];
|
|
@@ -297,7 +297,7 @@ class ConfigManager {
|
|
|
297
297
|
*/
|
|
298
298
|
getAll() {
|
|
299
299
|
if (!this.loaded || this.config === null) {
|
|
300
|
-
throw new
|
|
300
|
+
throw new index_js_1.ConfigurationError('Configuration not loaded. Call load() first.');
|
|
301
301
|
}
|
|
302
302
|
return this.config;
|
|
303
303
|
}
|
|
@@ -329,7 +329,7 @@ class ConfigManager {
|
|
|
329
329
|
*/
|
|
330
330
|
serialize() {
|
|
331
331
|
if (!this.loaded || this.config === null) {
|
|
332
|
-
throw new
|
|
332
|
+
throw new index_js_1.ConfigurationError('Configuration not loaded. Call load() first.');
|
|
333
333
|
}
|
|
334
334
|
return JSON.stringify(this.config);
|
|
335
335
|
}
|
|
@@ -347,7 +347,7 @@ class ConfigManager {
|
|
|
347
347
|
const result = options.schema.safeParse(parsed);
|
|
348
348
|
if (!result.success) {
|
|
349
349
|
const zodError = result.error;
|
|
350
|
-
throw new
|
|
350
|
+
throw new index_js_1.ValidationError(`Deserialization validation failed: ${zodError.errors.map((e) => `${e.path.join('.')}: ${e.message}`).join(', ')}`, zodError.errors, undefined);
|
|
351
351
|
}
|
|
352
352
|
}
|
|
353
353
|
// Create a new ConfigManager and set its internal state
|
|
@@ -363,4 +363,4 @@ class ConfigManager {
|
|
|
363
363
|
}
|
|
364
364
|
}
|
|
365
365
|
exports.ConfigManager = ConfigManager;
|
|
366
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb25maWctYXdzL3NyYy9jb25maWctbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFVQSxxQ0FBdUY7QUFFdkY7O0dBRUc7QUFDSCxNQUFNLGFBQWEsR0FBVztJQUM1QixHQUFHLEVBQUUsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQzlDLEtBQUssRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDbEQsSUFBSSxFQUFFLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNoRCxLQUFLLEVBQUUsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0NBQ25ELENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUV6Rzs7R0FFRztBQUNILE1BQU0sdUJBQXVCLEdBQTZCO0lBQ3hELE9BQU8sRUFBRSxJQUFJO0lBQ2IsU0FBUyxFQUFFLEtBQUs7SUFDaEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsU0FBUyxFQUFFLElBQUk7SUFDZixVQUFVLEVBQUUsSUFBSTtJQUNoQixhQUFhLEVBQUUsc0JBQXNCO0NBQ3RDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLGlCQUFpQixHQUFrRDtJQUN2RSwwREFBMEQ7SUFDMUQsV0FBVyxFQUFFO1FBQ1gsbUJBQW1CO1FBQ25CLGVBQWU7UUFDZixVQUFVO1FBQ1Ysc0JBQXNCO1FBQ3RCLHlCQUF5QjtLQUMxQjtJQUNE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RSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQ2xILFFBQVEsQ0FBQyxNQUFNLEVBQ2YsU0FBUyxDQUNWLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELHdEQUF3RDtRQUN4RCxNQUFNLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBSSxPQUFPLENBQUMsQ0FBQztRQUM5QyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQVcsQ0FBQztRQUM3QixPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUN0QixPQUFPLENBQUMsVUFBVSxHQUFHO1lBQ25CLE1BQU0sRUFBRSxNQUFXO1lBQ25CLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbEYsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFO1NBQ3JCLENBQUM7UUFFRixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUE3VkQsc0NBNlZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBab2RFcnJvciB9IGZyb20gJ3pvZCc7XHJcbmltcG9ydCB0eXBlIHsgQ29uZmlnTG9hZGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbmZpZy1sb2FkZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHR5cGUge1xyXG4gIENvbmZpZ01hbmFnZXJPcHRpb25zLFxyXG4gIENvbmZpZ0xvYWRSZXN1bHQsXHJcbiAgQ29uZmlnU291cmNlSW5mbyxcclxuICBMb2dnZXIsXHJcbiAgTG9hZGVyUHJlY2VkZW5jZSxcclxuICBWZXJib3NlT3B0aW9ucyxcclxufSBmcm9tICcuL2ludGVyZmFjZXMvY29uZmlnLW1hbmFnZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkVycm9yLCBDb25maWd1cmF0aW9uTG9hZEVycm9yLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XHJcblxyXG4vKipcclxuICogRGVmYXVsdCBjb25zb2xlIGxvZ2dlciBpbXBsZW1lbnRhdGlvblxyXG4gKi9cclxuY29uc3QgZGVmYXVsdExvZ2dlcjogTG9nZ2VyID0ge1xyXG4gIGxvZzogKG1lc3NhZ2U6IHN0cmluZykgPT4gY29uc29sZS5sb2cobWVzc2FnZSksXHJcbiAgZXJyb3I6IChtZXNzYWdlOiBzdHJpbmcpID0+IGNvbnNvbGUuZXJyb3IobWVzc2FnZSksXHJcbiAgd2FybjogKG1lc3NhZ2U6IHN0cmluZykgPT4gY29uc29sZS53YXJuKG1lc3NhZ2UpLFxyXG4gIGRlYnVnOiAobWVzc2FnZTogc3RyaW5nKSA9PiBjb25zb2xlLmRlYnVnKG1lc3NhZ2UpLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIERlZmF1bHQgc2Vuc2l0aXZlIGtleXMgdGhhdCBzaG91bGQgYWx3YXlzIGJlIG1hc2tlZFxyXG4gKi9cclxuY29uc3QgREVGQVVMVF9TRU5TSVRJVkVfS0VZUyA9IFsncGFzc3dvcmQnLCAnc2VjcmV0JywgJ2tleScsICd0b2tlbicsICdjcmVkZW50aWFsJywgJ2FwaV9rZXknLCAnYXBpa2V5J107XHJcblxyXG4vKipcclxuICogRGVmYXVsdCB2ZXJib3NlIG9wdGlvbnNcclxuICovXHJcbmNvbnN0IERFRkFVTFRfVkVSQk9TRV9PUFRJT05TOiBSZXF1aXJlZDxWZXJib3NlT3B0aW9ucz4gPSB7XHJcbiAgbG9nS2V5czogdHJ1ZSxcclxuICBsb2dWYWx1ZXM6IGZhbHNlLFxyXG4gIGxvZ092ZXJyaWRlczogdHJ1ZSxcclxuICBsb2dUaW1pbmc6IHRydWUsXHJcbiAgbWFza1ZhbHVlczogdHJ1ZSxcclxuICBzZW5zaXRpdmVLZXlzOiBERUZBVUxUX1NFTlNJVElWRV9LRVlTLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIFByZWRlZmluZWQgcHJlY2VkZW5jZSBvcmRlcnMgZm9yIGNvbW1vbiBzdHJhdGVnaWVzXHJcbiAqIEhpZ2hlciBpbmRleCA9IGhpZ2hlciBwcmlvcml0eSAobGF0ZXIgbG9hZGVycyBvdmVycmlkZSBlYXJsaWVyIG9uZXMpXHJcbiAqL1xyXG5jb25zdCBQUkVDRURFTkNFX09SREVSUzogUmVjb3JkPCdhd3MtZmlyc3QnIHwgJ2xvY2FsLWZpcnN0Jywgc3RyaW5nW10+ID0ge1xyXG4gIC8vIEFXUyB3aW5zOiBlbnYgLT4gZW52RmlsZSAtPiBzMyAtPiBzZWNyZXRzTWFuYWdlciAtPiBzc21cclxuICAnYXdzLWZpcnN0JzogW1xyXG4gICAgJ0Vudmlyb25tZW50TG9hZGVyJyxcclxuICAgICdFbnZGaWxlTG9hZGVyJyxcclxuICAgICdTM0xvYWRlcicsXHJcbiAgICAnU2VjcmV0c01hbmFnZXJMb2FkZXInLFxyXG4gICAgJ1NTTVBhcmFtZXRlclN0b3JlTG9hZGVyJyxcclxuICBdLFxyXG4gIC8vIExvY2FsIHdpbnM6IHNzbSAtPiBzZWNyZXRzTWFuYWdlciAtPiBzMyAtPiBlbnZGaWxlIC0+IGVudlxyXG4gICdsb2NhbC1maXJzdCc6IFtcclxuICAgICdTU01QYXJhbWV0ZXJTdG9yZUxvYWRlcicsXHJcbiAgICAnU2VjcmV0c01hbmFnZXJMb2FkZXInLFxyXG4gICAgJ1MzTG9hZGVyJyxcclxuICAgICdFbnZGaWxlTG9hZGVyJyxcclxuICAgICdFbnZpcm9ubWVudExvYWRlcicsXHJcbiAgXSxcclxufTtcclxuXHJcblxyXG4vKipcclxuICogQ29uZmlnTWFuYWdlciBvcmNoZXN0cmF0ZXMgbG9hZGluZyBjb25maWd1cmF0aW9uIGZyb20gbXVsdGlwbGUgc291cmNlc1xyXG4gKiB3aXRoIGNvbmZpZ3VyYWJsZSBwcmVjZWRlbmNlIGFuZCB2YWxpZGF0aW9uLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7IENvbmZpZ01hbmFnZXIsIEVudmlyb25tZW50TG9hZGVyLCBTZWNyZXRzTWFuYWdlckxvYWRlciB9IGZyb20gJ0BkeWFuZXQvY29uZmlnLWF3cyc7XHJcbiAqIGltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xyXG4gKlxyXG4gKiBjb25zdCBzY2hlbWEgPSB6Lm9iamVjdCh7XHJcbiAqICAgREFUQUJBU0VfVVJMOiB6LnN0cmluZygpLFxyXG4gKiAgIEFQSV9LRVk6IHouc3RyaW5nKCksXHJcbiAqICAgUE9SVDogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgzMDAwKSxcclxuICogfSk7XHJcbiAqXHJcbiAqIGNvbnN0IG1hbmFnZXIgPSBuZXcgQ29uZmlnTWFuYWdlcih7XHJcbiAqICAgbG9hZGVyczogW1xyXG4gKiAgICAgbmV3IEVudmlyb25tZW50TG9hZGVyKHsgcHJlZml4OiAnQVBQXycgfSksXHJcbiAqICAgICBuZXcgU2VjcmV0c01hbmFnZXJMb2FkZXIoeyBzZWNyZXROYW1lOiAnL215LWFwcC9jb25maWcnIH0pLFxyXG4gKiAgIF0sXHJcbiAqICAgc2NoZW1hLFxyXG4gKiAgIHByZWNlZGVuY2U6ICdhd3MtZmlyc3QnLFxyXG4gKiAgIHZlcmJvc2U6IHRydWUsXHJcbiAqIH0pO1xyXG4gKlxyXG4gKiBhd2FpdCBtYW5hZ2VyLmxvYWQoKTtcclxuICogY29uc3QgZGJVcmwgPSBtYW5hZ2VyLmdldCgnREFUQUJBU0VfVVJMJyk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENvbmZpZ01hbmFnZXI8VCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XHJcbiAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBfb3B0aW9uczogUmVxdWlyZWQ8T21pdDxDb25maWdNYW5hZ2VyT3B0aW9uczxUPiwgJ3NjaGVtYScgfCAnbG9nZ2VyJyB8ICd2ZXJib3NlJz4+ICYge1xyXG4gICAgc2NoZW1hPzogQ29uZmlnTWFuYWdlck9wdGlvbnM8VD5bJ3NjaGVtYSddO1xyXG4gICAgbG9nZ2VyPzogTG9nZ2VyO1xyXG4gICAgdmVyYm9zZT86IFZlcmJvc2VPcHRpb25zIHwgYm9vbGVhbjtcclxuICB9O1xyXG4gIC8qKiBAaW50ZXJuYWwgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2xvZ2dlcjogTG9nZ2VyO1xyXG4gIC8qKiBAaW50ZXJuYWwgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3ZlcmJvc2VPcHRpb25zOiBSZXF1aXJlZDxWZXJib3NlT3B0aW9ucz4gfCBudWxsO1xyXG5cclxuICBwcml2YXRlIGNvbmZpZzogVCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbG9hZFJlc3VsdDogQ29uZmlnTG9hZFJlc3VsdDxUPiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbG9hZGVkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENvbmZpZ01hbmFnZXJPcHRpb25zPFQ+ID0ge30pIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSB7XHJcbiAgICAgIGxvYWRlcnM6IG9wdGlvbnMubG9hZGVycyA/PyBbXSxcclxuICAgICAgc2NoZW1hOiBvcHRpb25zLnNjaGVtYSxcclxuICAgICAgcHJlY2VkZW5jZTogb3B0aW9ucy5wcmVjZWRlbmNlID8/ICdhd3MtZmlyc3QnLFxyXG4gICAgICB2YWxpZGF0ZU9uTG9hZDogb3B0aW9ucy52YWxpZGF0ZU9uTG9hZCA/PyB0cnVlLFxyXG4gICAgICBlbmFibGVMb2dnaW5nOiBvcHRpb25zLmVuYWJsZUxvZ2dpbmcgPz8gZmFsc2UsXHJcbiAgICAgIGxvZ2dlcjogb3B0aW9ucy5sb2dnZXIsXHJcbiAgICAgIHZlcmJvc2U6IG9wdGlvbnMudmVyYm9zZSxcclxuICAgIH07XHJcbiAgICB0aGlzLl9sb2dnZXIgPSBvcHRpb25zLmxvZ2dlciA/PyBkZWZhdWx0TG9nZ2VyO1xyXG4gICAgdGhpcy5fdmVyYm9zZU9wdGlvbnMgPSB0aGlzLnJlc29sdmVWZXJib3NlT3B0aW9ucyhvcHRpb25zLnZlcmJvc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb2x2ZSB2ZXJib3NlIG9wdGlvbnMgZnJvbSBib29sZWFuIG9yIG9iamVjdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzb2x2ZVZlcmJvc2VPcHRpb25zKHZlcmJvc2U/OiBWZXJib3NlT3B0aW9ucyB8IGJvb2xlYW4pOiBSZXF1aXJlZDxWZXJib3NlT3B0aW9ucz4gfCBudWxsIHtcclxuICAgIGlmICh2ZXJib3NlID09PSB1bmRlZmluZWQgfHwgdmVyYm9zZSA9PT0gZmFsc2UpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodmVyYm9zZSA9PT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4geyAuLi5ERUZBVUxUX1ZFUkJPU0VfT1BUSU9OUyB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbG9nS2V5czogdmVyYm9zZS5sb2dLZXlzID8/IERFRkFVTFRfVkVSQk9TRV9PUFRJT05TLmxvZ0tleXMsXHJcbiAgICAgIGxvZ1ZhbHVlczogdmVyYm9zZS5sb2dWYWx1ZXMgPz8gREVGQVVMVF9WRVJCT1NFX09QVElPTlMubG9nVmFsdWVzLFxyXG4gICAgICBsb2dPdmVycmlkZXM6IHZlcmJvc2UubG9nT3ZlcnJpZGVzID8/IERFRkFVTFRfVkVSQk9TRV9PUFRJT05TLmxvZ092ZXJyaWRlcyxcclxuICAgICAgbG9nVGltaW5nOiB2ZXJib3NlLmxvZ1RpbWluZyA/PyBERUZBVUxUX1ZFUkJPU0VfT1BUSU9OUy5sb2dUaW1pbmcsXHJcbiAgICAgIG1hc2tWYWx1ZXM6IHZlcmJvc2UubWFza1ZhbHVlcyA/PyBERUZBVUxUX1ZFUkJPU0VfT1BUSU9OUy5tYXNrVmFsdWVzLFxyXG4gICAgICBzZW5zaXRpdmVLZXlzOiB2ZXJib3NlLnNlbnNpdGl2ZUtleXMgPz8gREVGQVVMVF9WRVJCT1NFX09QVElPTlMuc2Vuc2l0aXZlS2V5cyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2cgYSBtZXNzYWdlIGlmIGxvZ2dpbmcgaXMgZW5hYmxlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgbG9nKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX29wdGlvbnMuZW5hYmxlTG9nZ2luZyB8fCB0aGlzLl92ZXJib3NlT3B0aW9ucykge1xyXG4gICAgICB0aGlzLl9sb2dnZXIubG9nKGBbY29uZmlnLWF3c10gJHttZXNzYWdlfWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFzayBhIHZhbHVlIGZvciBsb2dnaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtYXNrVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5fdmVyYm9zZU9wdGlvbnM/LmxvZ1ZhbHVlcykge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3RyVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xyXG4gICAgY29uc3QgbG93ZXJLZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAvLyBDaGVjayBpZiBrZXkgY29udGFpbnMgYW55IHNlbnNpdGl2ZSBwYXR0ZXJuc1xyXG4gICAgY29uc3QgaXNTZW5zaXRpdmUgPSB0aGlzLl92ZXJib3NlT3B0aW9ucy5zZW5zaXRpdmVLZXlzLnNvbWUoXHJcbiAgICAgIChwYXR0ZXJuKSA9PiBsb3dlcktleS5pbmNsdWRlcyhwYXR0ZXJuLnRvTG93ZXJDYXNlKCkpXHJcbiAgICApO1xyXG5cclxuICAgIGlmICh0aGlzLl92ZXJib3NlT3B0aW9ucy5tYXNrVmFsdWVzIHx8IGlzU2Vuc2l0aXZlKSB7XHJcbiAgICAgIGlmIChzdHJWYWx1ZS5sZW5ndGggPD0gNCkge1xyXG4gICAgICAgIHJldHVybiAnKioqKic7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGAke3N0clZhbHVlLnNsaWNlKDAsIDIpfSoqLi4uJHtzdHJWYWx1ZS5zbGljZSgtMil9YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyVmFsdWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBsb2FkaW5nIG9yZGVyIGZvciBsb2FkZXJzIGJhc2VkIG9uIHByZWNlZGVuY2Ugc3RyYXRlZ3kuXHJcbiAgICogUmV0dXJucyBsb2FkZXJzIHNvcnRlZCBieSBwcmlvcml0eSAobG93ZXIgcHJpb3JpdHkgZmlyc3QsIHNvIGhpZ2hlciBwcmlvcml0eSBsb2FkcyBsYXN0IGFuZCB3aW5zKS5cclxuICAgKi9cclxuICBwcml2YXRlIGdldExvYWRPcmRlcigpOiBDb25maWdMb2FkZXJbXSB7XHJcbiAgICBjb25zdCB7IGxvYWRlcnMsIHByZWNlZGVuY2UgfSA9IHRoaXMuX29wdGlvbnM7XHJcblxyXG4gICAgaWYgKCFsb2FkZXJzIHx8IGxvYWRlcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiBwcmVjZWRlbmNlIGlzIGEgY3VzdG9tIGFycmF5LCB1c2UgaXRcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHByZWNlZGVuY2UpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNvcnRCeUN1c3RvbVByZWNlZGVuY2UobG9hZGVycywgcHJlY2VkZW5jZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVXNlIHByZWRlZmluZWQgcHJlY2VkZW5jZSBvcmRlclxyXG4gICAgY29uc3Qgb3JkZXIgPSBQUkVDRURFTkNFX09SREVSU1twcmVjZWRlbmNlXTtcclxuICAgIHJldHVybiB0aGlzLnNvcnRCeVByZWRlZmluZWRPcmRlcihsb2FkZXJzLCBvcmRlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTb3J0IGxvYWRlcnMgYnkgY3VzdG9tIHByZWNlZGVuY2UgY29uZmlndXJhdGlvblxyXG4gICAqL1xyXG4gIHByaXZhdGUgc29ydEJ5Q3VzdG9tUHJlY2VkZW5jZShsb2FkZXJzOiBDb25maWdMb2FkZXJbXSwgcHJlY2VkZW5jZTogTG9hZGVyUHJlY2VkZW5jZVtdKTogQ29uZmlnTG9hZGVyW10ge1xyXG4gICAgY29uc3QgcHJpb3JpdHlNYXAgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xyXG4gICAgZm9yIChjb25zdCBwIG9mIHByZWNlZGVuY2UpIHtcclxuICAgICAgcHJpb3JpdHlNYXAuc2V0KHAubG9hZGVyLCBwLnByaW9yaXR5KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTb3J0IGJ5IHByaW9yaXR5IChsb3dlciBmaXJzdCwgc28gaGlnaGVyIHByaW9yaXR5IGxvYWRzIGxhc3QgYW5kIHdpbnMpXHJcbiAgICByZXR1cm4gWy4uLmxvYWRlcnNdLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3QgcHJpb3JpdHlBID0gcHJpb3JpdHlNYXAuZ2V0KGEuZ2V0TmFtZSgpKSA/PyAwO1xyXG4gICAgICBjb25zdCBwcmlvcml0eUIgPSBwcmlvcml0eU1hcC5nZXQoYi5nZXROYW1lKCkpID8/IDA7XHJcbiAgICAgIHJldHVybiBwcmlvcml0eUEgLSBwcmlvcml0eUI7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNvcnQgbG9hZGVycyBieSBwcmVkZWZpbmVkIG9yZGVyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzb3J0QnlQcmVkZWZpbmVkT3JkZXIobG9hZGVyczogQ29uZmlnTG9hZGVyW10sIG9yZGVyOiBzdHJpbmdbXSk6IENvbmZpZ0xvYWRlcltdIHtcclxuICAgIGNvbnN0IG9yZGVyTWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcclxuICAgIG9yZGVyLmZvckVhY2goKG5hbWUsIGluZGV4KSA9PiBvcmRlck1hcC5zZXQobmFtZSwgaW5kZXgpKTtcclxuXHJcbiAgICAvLyBTb3J0IGJ5IG9yZGVyIGluZGV4IChsb3dlciBmaXJzdCwgc28gaGlnaGVyIGluZGV4IGxvYWRzIGxhc3QgYW5kIHdpbnMpXHJcbiAgICByZXR1cm4gWy4uLmxvYWRlcnNdLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXJNYXAuZ2V0KGEuZ2V0TmFtZSgpKSA/PyAtMTtcclxuICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXJNYXAuZ2V0KGIuZ2V0TmFtZSgpKSA/PyAtMTtcclxuICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBjb25maWd1cmF0aW9uIGZyb20gYWxsIGNvbmZpZ3VyZWQgbG9hZGVycy5cclxuICAgKiBMb2FkZXJzIGFyZSBleGVjdXRlZCBpbiBwcmVjZWRlbmNlIG9yZGVyLCB3aXRoIGxhdGVyIGxvYWRlcnMgb3ZlcnJpZGluZyBlYXJsaWVyIG9uZXMuXHJcbiAgICovXHJcbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XHJcbiAgICBjb25zdCBzb3VyY2VzOiBDb25maWdTb3VyY2VJbmZvW10gPSBbXTtcclxuICAgIGxldCBtZXJnZWRDb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XHJcbiAgICBjb25zdCBrZXlPcmlnaW5zOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpOyAvLyBUcmFjayB3aGljaCBsb2FkZXIgc2V0IGVhY2gga2V5XHJcblxyXG4gICAgdGhpcy5sb2coJ0xvYWRpbmcgY29uZmlndXJhdGlvbi4uLicpO1xyXG5cclxuICAgIGNvbnN0IG9yZGVyZWRMb2FkZXJzID0gdGhpcy5nZXRMb2FkT3JkZXIoKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGxvYWRlciBvZiBvcmRlcmVkTG9hZGVycykge1xyXG4gICAgICBjb25zdCBsb2FkZXJOYW1lID0gbG9hZGVyLmdldE5hbWUoKTtcclxuICAgICAgY29uc3QgbG9hZGVyU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgbG9hZGVyIGlzIGF2YWlsYWJsZVxyXG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlID0gYXdhaXQgbG9hZGVyLmlzQXZhaWxhYmxlKCk7XHJcbiAgICAgICAgaWYgKCFpc0F2YWlsYWJsZSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX3ZlcmJvc2VPcHRpb25zPy5sb2dUaW1pbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2coYCR7bG9hZGVyTmFtZX06IHNraXBwZWQgKG5vdCBhdmFpbGFibGUpYCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIExvYWQgY29uZmlndXJhdGlvbiBmcm9tIHRoaXMgbG9hZGVyXHJcbiAgICAgICAgY29uc3QgbG9hZGVyQ29uZmlnID0gYXdhaXQgbG9hZGVyLmxvYWQoKTtcclxuICAgICAgICBjb25zdCBrZXlzTG9hZGVkID0gT2JqZWN0LmtleXMobG9hZGVyQ29uZmlnKTtcclxuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBsb2FkZXJTdGFydFRpbWU7XHJcblxyXG4gICAgICAgIC8vIFRyYWNrIHNvdXJjZSBpbmZvXHJcbiAgICAgICAgc291cmNlcy5wdXNoKHtcclxuICAgICAgICAgIGxvYWRlcjogbG9hZGVyTmFtZSxcclxuICAgICAgICAgIGtleXNMb2FkZWQsXHJcbiAgICAgICAgICBkdXJhdGlvbixcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gTG9nIHRpbWluZyBhbmQga2V5c1xyXG4gICAgICAgIGlmICh0aGlzLl92ZXJib3NlT3B0aW9ucz8ubG9nVGltaW5nKSB7XHJcbiAgICAgICAgICB0aGlzLmxvZyhgJHtsb2FkZXJOYW1lfTogbG9hZGVkICR7a2V5c0xvYWRlZC5sZW5ndGh9IGtleXMgaW4gJHtkdXJhdGlvbn1tc2ApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gTG9nIGluZGl2aWR1YWwga2V5cyBhbmQgdHJhY2sgb3ZlcnJpZGVzXHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0xvYWRlZCkge1xyXG4gICAgICAgICAgY29uc3QgcHJldmlvdXNMb2FkZXIgPSBrZXlPcmlnaW5zLmdldChrZXkpO1xyXG4gICAgICAgICAgY29uc3QgaXNPdmVycmlkZSA9IHByZXZpb3VzTG9hZGVyICE9PSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuX3ZlcmJvc2VPcHRpb25zPy5sb2dLZXlzKSB7XHJcbiAgICAgICAgICAgIGxldCBsb2dMaW5lID0gYCAgLSAke2tleX1gO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fdmVyYm9zZU9wdGlvbnMubG9nVmFsdWVzKSB7XHJcbiAgICAgICAgICAgICAgbG9nTGluZSArPSBgID0gXCIke3RoaXMubWFza1ZhbHVlKGtleSwgbG9hZGVyQ29uZmlnW2tleV0pfVwiYDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXNPdmVycmlkZSAmJiB0aGlzLl92ZXJib3NlT3B0aW9ucy5sb2dPdmVycmlkZXMpIHtcclxuICAgICAgICAgICAgICBsb2dMaW5lICs9IGAgKG92ZXJyaWRlcyAke3ByZXZpb3VzTG9hZGVyfSlgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubG9nKGxvZ0xpbmUpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGtleU9yaWdpbnMuc2V0KGtleSwgbG9hZGVyTmFtZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBNZXJnZSBjb25maWd1cmF0aW9uIChsYXRlciBsb2FkZXJzIG92ZXJyaWRlIGVhcmxpZXIgb25lcylcclxuICAgICAgICBtZXJnZWRDb25maWcgPSB7IC4uLm1lcmdlZENvbmZpZywgLi4ubG9hZGVyQ29uZmlnIH07XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IoXHJcbiAgICAgICAgICBgRmFpbGVkIHRvIGxvYWQgY29uZmlndXJhdGlvbiBmcm9tICR7bG9hZGVyTmFtZX06ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWAsXHJcbiAgICAgICAgICBsb2FkZXJOYW1lLFxyXG4gICAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogdW5kZWZpbmVkXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENvdW50IG92ZXJyaWRlc1xyXG4gICAgY29uc3QgdG90YWxLZXlzID0gT2JqZWN0LmtleXMobWVyZ2VkQ29uZmlnKS5sZW5ndGg7XHJcbiAgICBjb25zdCB0b3RhbER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcclxuICAgIGNvbnN0IG92ZXJyaWRlQ291bnQgPSBzb3VyY2VzLnJlZHVjZSgoYWNjLCBzKSA9PiBhY2MgKyBzLmtleXNMb2FkZWQubGVuZ3RoLCAwKSAtIHRvdGFsS2V5cztcclxuXHJcbiAgICBpZiAodGhpcy5fdmVyYm9zZU9wdGlvbnM/LmxvZ1RpbWluZykge1xyXG4gICAgICB0aGlzLmxvZyhgQ29uZmlndXJhdGlvbiBsb2FkZWQ6ICR7dG90YWxLZXlzfSB0b3RhbCBrZXlzLCAke292ZXJyaWRlQ291bnR9IG92ZXJyaWRlcywgJHt0b3RhbER1cmF0aW9ufW1zIHRvdGFsYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVmFsaWRhdGUgaWYgc2NoZW1hIGlzIHByb3ZpZGVkIGFuZCB2YWxpZGF0aW9uIGlzIGVuYWJsZWRcclxuICAgIGlmICh0aGlzLl9vcHRpb25zLnNjaGVtYSAmJiB0aGlzLl9vcHRpb25zLnZhbGlkYXRlT25Mb2FkKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX29wdGlvbnMuc2NoZW1hLnNhZmVQYXJzZShtZXJnZWRDb25maWcpO1xyXG4gICAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgICAgY29uc3Qgem9kRXJyb3IgPSByZXN1bHQuZXJyb3IgYXMgWm9kRXJyb3I7XHJcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcclxuICAgICAgICAgIGBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gZmFpbGVkOiAke3pvZEVycm9yLmVycm9ycy5tYXAoKGUpID0+IGAke2UucGF0aC5qb2luKCcuJyl9OiAke2UubWVzc2FnZX1gKS5qb2luKCcsICcpfWAsXHJcbiAgICAgICAgICB6b2RFcnJvci5lcnJvcnMsXHJcbiAgICAgICAgICB1bmRlZmluZWRcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29uZmlnID0gcmVzdWx0LmRhdGEgYXMgVDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29uZmlnID0gbWVyZ2VkQ29uZmlnIGFzIFQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkUmVzdWx0ID0ge1xyXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxyXG4gICAgICBzb3VyY2VzLFxyXG4gICAgICBsb2FkZWRBdDogbmV3IERhdGUoKSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdmFsdWUgYnkga2V5LlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGNvbmZpZ3VyYXRpb24ga2V5XHJcbiAgICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24gdmFsdWVcclxuICAgKiBAdGhyb3dzIENvbmZpZ3VyYXRpb25FcnJvciBpZiBjb25maWd1cmF0aW9uIGlzIG5vdCBsb2FkZWRcclxuICAgKi9cclxuICBnZXQ8SyBleHRlbmRzIGtleW9mIFQ+KGtleTogSyk6IFRbS10ge1xyXG4gICAgaWYgKCF0aGlzLmxvYWRlZCB8fCB0aGlzLmNvbmZpZyA9PT0gbnVsbCkge1xyXG4gICAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbkVycm9yKCdDb25maWd1cmF0aW9uIG5vdCBsb2FkZWQuIENhbGwgbG9hZCgpIGZpcnN0LicpO1xyXG4gICAgfVxyXG4gICAgLy8gTm9uLW51bGwgYXNzZXJ0aW9uIGlzIHNhZmUgaGVyZSBiZWNhdXNlIHdlJ3ZlIGNoZWNrZWQgdGhpcy5jb25maWcgIT09IG51bGwgYWJvdmVcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZyFba2V5XTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhbGwgY29uZmlndXJhdGlvbiB2YWx1ZXMuXHJcbiAgICogQHJldHVybnMgVGhlIGNvbXBsZXRlIGNvbmZpZ3VyYXRpb24gb2JqZWN0XHJcbiAgICogQHRocm93cyBDb25maWd1cmF0aW9uRXJyb3IgaWYgY29uZmlndXJhdGlvbiBpcyBub3QgbG9hZGVkXHJcbiAgICovXHJcbiAgZ2V0QWxsKCk6IFQge1xyXG4gICAgaWYgKCF0aGlzLmxvYWRlZCB8fCB0aGlzLmNvbmZpZyA9PT0gbnVsbCkge1xyXG4gICAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbkVycm9yKCdDb25maWd1cmF0aW9uIG5vdCBsb2FkZWQuIENhbGwgbG9hZCgpIGZpcnN0LicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBsb2FkZWQuXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBjb25maWd1cmF0aW9uIGlzIGxvYWRlZFxyXG4gICAqL1xyXG4gIGlzTG9hZGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGVudmlyb25tZW50LlxyXG4gICAqIEByZXR1cm5zIFRoZSBBUFBfRU5WIHZhbHVlIG9yICdkZXZlbG9wbWVudCcgYXMgZGVmYXVsdFxyXG4gICAqL1xyXG4gIGdldEFwcEVudigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52WydBUFBfRU5WJ10gPz8gJ2RldmVsb3BtZW50JztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgbG9hZCByZXN1bHQgd2l0aCBzb3VyY2UgaW5mb3JtYXRpb24uXHJcbiAgICogQHJldHVybnMgVGhlIGxvYWQgcmVzdWx0IG9yIG51bGwgaWYgbm90IGxvYWRlZFxyXG4gICAqL1xyXG4gIGdldExvYWRSZXN1bHQoKTogQ29uZmlnTG9hZFJlc3VsdDxUPiB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZFJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlcmlhbGl6ZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHRvIEpTT04gc3RyaW5nLlxyXG4gICAqIEByZXR1cm5zIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uXHJcbiAgICogQHRocm93cyBDb25maWd1cmF0aW9uRXJyb3IgaWYgY29uZmlndXJhdGlvbiBpcyBub3QgbG9hZGVkXHJcbiAgICovXHJcbiAgc2VyaWFsaXplKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMubG9hZGVkIHx8IHRoaXMuY29uZmlnID09PSBudWxsKSB7XHJcbiAgICAgIHRocm93IG5ldyBDb25maWd1cmF0aW9uRXJyb3IoJ0NvbmZpZ3VyYXRpb24gbm90IGxvYWRlZC4gQ2FsbCBsb2FkKCkgZmlyc3QuJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgbmV3IENvbmZpZ01hbmFnZXIgd2l0aCBjb25maWd1cmF0aW9uIGxvYWRlZCBmcm9tIGEgSlNPTiBzdHJpbmcuXHJcbiAgICogVGhpcyBpcyB1c2VmdWwgZm9yIHJlc3RvcmluZyBjb25maWd1cmF0aW9uIGZyb20gYSBzZXJpYWxpemVkIHN0YXRlLlxyXG4gICAqIEBwYXJhbSBqc29uIEpTT04gc3RyaW5nIHRvIGRlc2VyaWFsaXplXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgQ29uZmlnTWFuYWdlciBvcHRpb25zIChzY2hlbWEgd2lsbCBiZSB1c2VkIGZvciB2YWxpZGF0aW9uKVxyXG4gICAqIEByZXR1cm5zIEEgbmV3IENvbmZpZ01hbmFnZXIgaW5zdGFuY2Ugd2l0aCB0aGUgZGVzZXJpYWxpemVkIGNvbmZpZ3VyYXRpb25cclxuICAgKi9cclxuICBzdGF0aWMgZGVzZXJpYWxpemU8VCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcclxuICAgIGpzb246IHN0cmluZyxcclxuICAgIG9wdGlvbnM6IENvbmZpZ01hbmFnZXJPcHRpb25zPFQ+ID0ge31cclxuICApOiBDb25maWdNYW5hZ2VyPFQ+IHtcclxuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UoanNvbik7XHJcblxyXG4gICAgLy8gVmFsaWRhdGUgaWYgc2NoZW1hIGlzIHByb3ZpZGVkXHJcbiAgICBpZiAob3B0aW9ucy5zY2hlbWEpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gb3B0aW9ucy5zY2hlbWEuc2FmZVBhcnNlKHBhcnNlZCk7XHJcbiAgICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgICBjb25zdCB6b2RFcnJvciA9IHJlc3VsdC5lcnJvciBhcyBab2RFcnJvcjtcclxuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxyXG4gICAgICAgICAgYERlc2VyaWFsaXphdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHt6b2RFcnJvci5lcnJvcnMubWFwKChlKSA9PiBgJHtlLnBhdGguam9pbignLicpfTogJHtlLm1lc3NhZ2V9YCkuam9pbignLCAnKX1gLFxyXG4gICAgICAgICAgem9kRXJyb3IuZXJyb3JzLFxyXG4gICAgICAgICAgdW5kZWZpbmVkXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENyZWF0ZSBhIG5ldyBDb25maWdNYW5hZ2VyIGFuZCBzZXQgaXRzIGludGVybmFsIHN0YXRlXHJcbiAgICBjb25zdCBtYW5hZ2VyID0gbmV3IENvbmZpZ01hbmFnZXI8VD4ob3B0aW9ucyk7XHJcbiAgICBtYW5hZ2VyLmNvbmZpZyA9IHBhcnNlZCBhcyBUO1xyXG4gICAgbWFuYWdlci5sb2FkZWQgPSB0cnVlO1xyXG4gICAgbWFuYWdlci5sb2FkUmVzdWx0ID0ge1xyXG4gICAgICBjb25maWc6IHBhcnNlZCBhcyBULFxyXG4gICAgICBzb3VyY2VzOiBbeyBsb2FkZXI6ICdkZXNlcmlhbGl6ZScsIGtleXNMb2FkZWQ6IE9iamVjdC5rZXlzKHBhcnNlZCksIGR1cmF0aW9uOiAwIH1dLFxyXG4gICAgICBsb2FkZWRBdDogbmV3IERhdGUoKSxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG1hbmFnZXI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb25maWctYXdzL3NyYy9jb25maWctbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFVQSxnREFBZ0c7QUFFaEc7O0dBRUc7QUFDSCxNQUFNLGFBQWEsR0FBVztJQUM1QixHQUFHLEVBQUUsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQzlDLEtBQUssRUFBRSxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDbEQsSUFBSSxFQUFFLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNoRCxLQUFLLEVBQUUsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0NBQ25ELENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUV6Rzs7R0FFRztBQUNILE1BQU0sdUJBQXVCLEdBQTZCO0lBQ3hELE9BQU8sRUFBRSxJQUFJO0lBQ2IsU0FBUyxFQUFFLEtBQUs7SUFDaEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsU0FBUyxFQUFFLElBQUk7SUFDZixVQUFVLEVBQUUsSUFBSTtJQUNoQixhQUFhLEVBQUUsc0JBQXNCO0NBQ3RDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLGlCQUFpQixHQUFrRDtJQUN2RSwwREFBMEQ7SUFDMUQsV0FBVyxFQUFFO1FBQ1gsbUJBQW1CO1FBQ25CLGVBQWU7UUFDZixVQUFVO1FBQ1Ysc0JBQXNCO1FBQ3RCLHlCQUF5QjtLQUMxQjtJQUNE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RSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQ2xILFFBQVEsQ0FBQyxNQUFNLEVBQ2YsU0FBUyxDQUNWLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELHdEQUF3RDtRQUN4RCxNQUFNLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBSSxPQUFPLENBQUMsQ0FBQztRQUM5QyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQVcsQ0FBQztRQUM3QixPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUN0QixPQUFPLENBQUMsVUFBVSxHQUFHO1lBQ25CLE1BQU0sRUFBRSxNQUFXO1lBQ25CLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbEYsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFO1NBQ3JCLENBQUM7UUFFRixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUE3VkQsc0NBNlZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBab2RFcnJvciB9IGZyb20gJ3pvZCc7XHJcbmltcG9ydCB0eXBlIHsgQ29uZmlnTG9hZGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbmZpZy1sb2FkZXIuaW50ZXJmYWNlLmpzJztcclxuaW1wb3J0IHR5cGUge1xyXG4gIENvbmZpZ01hbmFnZXJPcHRpb25zLFxyXG4gIENvbmZpZ0xvYWRSZXN1bHQsXHJcbiAgQ29uZmlnU291cmNlSW5mbyxcclxuICBMb2dnZXIsXHJcbiAgTG9hZGVyUHJlY2VkZW5jZSxcclxuICBWZXJib3NlT3B0aW9ucyxcclxufSBmcm9tICcuL2ludGVyZmFjZXMvY29uZmlnLW1hbmFnZXIuaW50ZXJmYWNlLmpzJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkVycm9yLCBDb25maWd1cmF0aW9uTG9hZEVycm9yLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycy9pbmRleC5qcyc7XHJcblxyXG4vKipcclxuICogRGVmYXVsdCBjb25zb2xlIGxvZ2dlciBpbXBsZW1lbnRhdGlvblxyXG4gKi9cclxuY29uc3QgZGVmYXVsdExvZ2dlcjogTG9nZ2VyID0ge1xyXG4gIGxvZzogKG1lc3NhZ2U6IHN0cmluZykgPT4gY29uc29sZS5sb2cobWVzc2FnZSksXHJcbiAgZXJyb3I6IChtZXNzYWdlOiBzdHJpbmcpID0+IGNvbnNvbGUuZXJyb3IobWVzc2FnZSksXHJcbiAgd2FybjogKG1lc3NhZ2U6IHN0cmluZykgPT4gY29uc29sZS53YXJuKG1lc3NhZ2UpLFxyXG4gIGRlYnVnOiAobWVzc2FnZTogc3RyaW5nKSA9PiBjb25zb2xlLmRlYnVnKG1lc3NhZ2UpLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIERlZmF1bHQgc2Vuc2l0aXZlIGtleXMgdGhhdCBzaG91bGQgYWx3YXlzIGJlIG1hc2tlZFxyXG4gKi9cclxuY29uc3QgREVGQVVMVF9TRU5TSVRJVkVfS0VZUyA9IFsncGFzc3dvcmQnLCAnc2VjcmV0JywgJ2tleScsICd0b2tlbicsICdjcmVkZW50aWFsJywgJ2FwaV9rZXknLCAnYXBpa2V5J107XHJcblxyXG4vKipcclxuICogRGVmYXVsdCB2ZXJib3NlIG9wdGlvbnNcclxuICovXHJcbmNvbnN0IERFRkFVTFRfVkVSQk9TRV9PUFRJT05TOiBSZXF1aXJlZDxWZXJib3NlT3B0aW9ucz4gPSB7XHJcbiAgbG9nS2V5czogdHJ1ZSxcclxuICBsb2dWYWx1ZXM6IGZhbHNlLFxyXG4gIGxvZ092ZXJyaWRlczogdHJ1ZSxcclxuICBsb2dUaW1pbmc6IHRydWUsXHJcbiAgbWFza1ZhbHVlczogdHJ1ZSxcclxuICBzZW5zaXRpdmVLZXlzOiBERUZBVUxUX1NFTlNJVElWRV9LRVlTLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIFByZWRlZmluZWQgcHJlY2VkZW5jZSBvcmRlcnMgZm9yIGNvbW1vbiBzdHJhdGVnaWVzXHJcbiAqIEhpZ2hlciBpbmRleCA9IGhpZ2hlciBwcmlvcml0eSAobGF0ZXIgbG9hZGVycyBvdmVycmlkZSBlYXJsaWVyIG9uZXMpXHJcbiAqL1xyXG5jb25zdCBQUkVDRURFTkNFX09SREVSUzogUmVjb3JkPCdhd3MtZmlyc3QnIHwgJ2xvY2FsLWZpcnN0Jywgc3RyaW5nW10+ID0ge1xyXG4gIC8vIEFXUyB3aW5zOiBlbnYgLT4gZW52RmlsZSAtPiBzMyAtPiBzZWNyZXRzTWFuYWdlciAtPiBzc21cclxuICAnYXdzLWZpcnN0JzogW1xyXG4gICAgJ0Vudmlyb25tZW50TG9hZGVyJyxcclxuICAgICdFbnZGaWxlTG9hZGVyJyxcclxuICAgICdTM0xvYWRlcicsXHJcbiAgICAnU2VjcmV0c01hbmFnZXJMb2FkZXInLFxyXG4gICAgJ1NTTVBhcmFtZXRlclN0b3JlTG9hZGVyJyxcclxuICBdLFxyXG4gIC8vIExvY2FsIHdpbnM6IHNzbSAtPiBzZWNyZXRzTWFuYWdlciAtPiBzMyAtPiBlbnZGaWxlIC0+IGVudlxyXG4gICdsb2NhbC1maXJzdCc6IFtcclxuICAgICdTU01QYXJhbWV0ZXJTdG9yZUxvYWRlcicsXHJcbiAgICAnU2VjcmV0c01hbmFnZXJMb2FkZXInLFxyXG4gICAgJ1MzTG9hZGVyJyxcclxuICAgICdFbnZGaWxlTG9hZGVyJyxcclxuICAgICdFbnZpcm9ubWVudExvYWRlcicsXHJcbiAgXSxcclxufTtcclxuXHJcblxyXG4vKipcclxuICogQ29uZmlnTWFuYWdlciBvcmNoZXN0cmF0ZXMgbG9hZGluZyBjb25maWd1cmF0aW9uIGZyb20gbXVsdGlwbGUgc291cmNlc1xyXG4gKiB3aXRoIGNvbmZpZ3VyYWJsZSBwcmVjZWRlbmNlIGFuZCB2YWxpZGF0aW9uLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7IENvbmZpZ01hbmFnZXIsIEVudmlyb25tZW50TG9hZGVyLCBTZWNyZXRzTWFuYWdlckxvYWRlciB9IGZyb20gJ0BkeWFuZXQvY29uZmlnLWF3cyc7XHJcbiAqIGltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xyXG4gKlxyXG4gKiBjb25zdCBzY2hlbWEgPSB6Lm9iamVjdCh7XHJcbiAqICAgREFUQUJBU0VfVVJMOiB6LnN0cmluZygpLFxyXG4gKiAgIEFQSV9LRVk6IHouc3RyaW5nKCksXHJcbiAqICAgUE9SVDogei5jb2VyY2UubnVtYmVyKCkuZGVmYXVsdCgzMDAwKSxcclxuICogfSk7XHJcbiAqXHJcbiAqIGNvbnN0IG1hbmFnZXIgPSBuZXcgQ29uZmlnTWFuYWdlcih7XHJcbiAqICAgbG9hZGVyczogW1xyXG4gKiAgICAgbmV3IEVudmlyb25tZW50TG9hZGVyKHsgcHJlZml4OiAnQVBQXycgfSksXHJcbiAqICAgICBuZXcgU2VjcmV0c01hbmFnZXJMb2FkZXIoeyBzZWNyZXROYW1lOiAnL215LWFwcC9jb25maWcnIH0pLFxyXG4gKiAgIF0sXHJcbiAqICAgc2NoZW1hLFxyXG4gKiAgIHByZWNlZGVuY2U6ICdhd3MtZmlyc3QnLFxyXG4gKiAgIHZlcmJvc2U6IHRydWUsXHJcbiAqIH0pO1xyXG4gKlxyXG4gKiBhd2FpdCBtYW5hZ2VyLmxvYWQoKTtcclxuICogY29uc3QgZGJVcmwgPSBtYW5hZ2VyLmdldCgnREFUQUJBU0VfVVJMJyk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENvbmZpZ01hbmFnZXI8VCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XHJcbiAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBfb3B0aW9uczogUmVxdWlyZWQ8T21pdDxDb25maWdNYW5hZ2VyT3B0aW9uczxUPiwgJ3NjaGVtYScgfCAnbG9nZ2VyJyB8ICd2ZXJib3NlJz4+ICYge1xyXG4gICAgc2NoZW1hPzogQ29uZmlnTWFuYWdlck9wdGlvbnM8VD5bJ3NjaGVtYSddO1xyXG4gICAgbG9nZ2VyPzogTG9nZ2VyO1xyXG4gICAgdmVyYm9zZT86IFZlcmJvc2VPcHRpb25zIHwgYm9vbGVhbjtcclxuICB9O1xyXG4gIC8qKiBAaW50ZXJuYWwgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2xvZ2dlcjogTG9nZ2VyO1xyXG4gIC8qKiBAaW50ZXJuYWwgKi9cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3ZlcmJvc2VPcHRpb25zOiBSZXF1aXJlZDxWZXJib3NlT3B0aW9ucz4gfCBudWxsO1xyXG5cclxuICBwcml2YXRlIGNvbmZpZzogVCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbG9hZFJlc3VsdDogQ29uZmlnTG9hZFJlc3VsdDxUPiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbG9hZGVkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENvbmZpZ01hbmFnZXJPcHRpb25zPFQ+ID0ge30pIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSB7XHJcbiAgICAgIGxvYWRlcnM6IG9wdGlvbnMubG9hZGVycyA/PyBbXSxcclxuICAgICAgc2NoZW1hOiBvcHRpb25zLnNjaGVtYSxcclxuICAgICAgcHJlY2VkZW5jZTogb3B0aW9ucy5wcmVjZWRlbmNlID8/ICdhd3MtZmlyc3QnLFxyXG4gICAgICB2YWxpZGF0ZU9uTG9hZDogb3B0aW9ucy52YWxpZGF0ZU9uTG9hZCA/PyB0cnVlLFxyXG4gICAgICBlbmFibGVMb2dnaW5nOiBvcHRpb25zLmVuYWJsZUxvZ2dpbmcgPz8gZmFsc2UsXHJcbiAgICAgIGxvZ2dlcjogb3B0aW9ucy5sb2dnZXIsXHJcbiAgICAgIHZlcmJvc2U6IG9wdGlvbnMudmVyYm9zZSxcclxuICAgIH07XHJcbiAgICB0aGlzLl9sb2dnZXIgPSBvcHRpb25zLmxvZ2dlciA/PyBkZWZhdWx0TG9nZ2VyO1xyXG4gICAgdGhpcy5fdmVyYm9zZU9wdGlvbnMgPSB0aGlzLnJlc29sdmVWZXJib3NlT3B0aW9ucyhvcHRpb25zLnZlcmJvc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb2x2ZSB2ZXJib3NlIG9wdGlvbnMgZnJvbSBib29sZWFuIG9yIG9iamVjdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzb2x2ZVZlcmJvc2VPcHRpb25zKHZlcmJvc2U/OiBWZXJib3NlT3B0aW9ucyB8IGJvb2xlYW4pOiBSZXF1aXJlZDxWZXJib3NlT3B0aW9ucz4gfCBudWxsIHtcclxuICAgIGlmICh2ZXJib3NlID09PSB1bmRlZmluZWQgfHwgdmVyYm9zZSA9PT0gZmFsc2UpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodmVyYm9zZSA9PT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4geyAuLi5ERUZBVUxUX1ZFUkJPU0VfT1BUSU9OUyB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbG9nS2V5czogdmVyYm9zZS5sb2dLZXlzID8/IERFRkFVTFRfVkVSQk9TRV9PUFRJT05TLmxvZ0tleXMsXHJcbiAgICAgIGxvZ1ZhbHVlczogdmVyYm9zZS5sb2dWYWx1ZXMgPz8gREVGQVVMVF9WRVJCT1NFX09QVElPTlMubG9nVmFsdWVzLFxyXG4gICAgICBsb2dPdmVycmlkZXM6IHZlcmJvc2UubG9nT3ZlcnJpZGVzID8/IERFRkFVTFRfVkVSQk9TRV9PUFRJT05TLmxvZ092ZXJyaWRlcyxcclxuICAgICAgbG9nVGltaW5nOiB2ZXJib3NlLmxvZ1RpbWluZyA/PyBERUZBVUxUX1ZFUkJPU0VfT1BUSU9OUy5sb2dUaW1pbmcsXHJcbiAgICAgIG1hc2tWYWx1ZXM6IHZlcmJvc2UubWFza1ZhbHVlcyA/PyBERUZBVUxUX1ZFUkJPU0VfT1BUSU9OUy5tYXNrVmFsdWVzLFxyXG4gICAgICBzZW5zaXRpdmVLZXlzOiB2ZXJib3NlLnNlbnNpdGl2ZUtleXMgPz8gREVGQVVMVF9WRVJCT1NFX09QVElPTlMuc2Vuc2l0aXZlS2V5cyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2cgYSBtZXNzYWdlIGlmIGxvZ2dpbmcgaXMgZW5hYmxlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgbG9nKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX29wdGlvbnMuZW5hYmxlTG9nZ2luZyB8fCB0aGlzLl92ZXJib3NlT3B0aW9ucykge1xyXG4gICAgICB0aGlzLl9sb2dnZXIubG9nKGBbY29uZmlnLWF3c10gJHttZXNzYWdlfWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFzayBhIHZhbHVlIGZvciBsb2dnaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtYXNrVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5fdmVyYm9zZU9wdGlvbnM/LmxvZ1ZhbHVlcykge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3RyVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xyXG4gICAgY29uc3QgbG93ZXJLZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAvLyBDaGVjayBpZiBrZXkgY29udGFpbnMgYW55IHNlbnNpdGl2ZSBwYXR0ZXJuc1xyXG4gICAgY29uc3QgaXNTZW5zaXRpdmUgPSB0aGlzLl92ZXJib3NlT3B0aW9ucy5zZW5zaXRpdmVLZXlzLnNvbWUoXHJcbiAgICAgIChwYXR0ZXJuKSA9PiBsb3dlcktleS5pbmNsdWRlcyhwYXR0ZXJuLnRvTG93ZXJDYXNlKCkpXHJcbiAgICApO1xyXG5cclxuICAgIGlmICh0aGlzLl92ZXJib3NlT3B0aW9ucy5tYXNrVmFsdWVzIHx8IGlzU2Vuc2l0aXZlKSB7XHJcbiAgICAgIGlmIChzdHJWYWx1ZS5sZW5ndGggPD0gNCkge1xyXG4gICAgICAgIHJldHVybiAnKioqKic7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGAke3N0clZhbHVlLnNsaWNlKDAsIDIpfSoqLi4uJHtzdHJWYWx1ZS5zbGljZSgtMil9YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyVmFsdWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBsb2FkaW5nIG9yZGVyIGZvciBsb2FkZXJzIGJhc2VkIG9uIHByZWNlZGVuY2Ugc3RyYXRlZ3kuXHJcbiAgICogUmV0dXJucyBsb2FkZXJzIHNvcnRlZCBieSBwcmlvcml0eSAobG93ZXIgcHJpb3JpdHkgZmlyc3QsIHNvIGhpZ2hlciBwcmlvcml0eSBsb2FkcyBsYXN0IGFuZCB3aW5zKS5cclxuICAgKi9cclxuICBwcml2YXRlIGdldExvYWRPcmRlcigpOiBDb25maWdMb2FkZXJbXSB7XHJcbiAgICBjb25zdCB7IGxvYWRlcnMsIHByZWNlZGVuY2UgfSA9IHRoaXMuX29wdGlvbnM7XHJcblxyXG4gICAgaWYgKCFsb2FkZXJzIHx8IGxvYWRlcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiBwcmVjZWRlbmNlIGlzIGEgY3VzdG9tIGFycmF5LCB1c2UgaXRcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHByZWNlZGVuY2UpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNvcnRCeUN1c3RvbVByZWNlZGVuY2UobG9hZGVycywgcHJlY2VkZW5jZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVXNlIHByZWRlZmluZWQgcHJlY2VkZW5jZSBvcmRlclxyXG4gICAgY29uc3Qgb3JkZXIgPSBQUkVDRURFTkNFX09SREVSU1twcmVjZWRlbmNlXTtcclxuICAgIHJldHVybiB0aGlzLnNvcnRCeVByZWRlZmluZWRPcmRlcihsb2FkZXJzLCBvcmRlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTb3J0IGxvYWRlcnMgYnkgY3VzdG9tIHByZWNlZGVuY2UgY29uZmlndXJhdGlvblxyXG4gICAqL1xyXG4gIHByaXZhdGUgc29ydEJ5Q3VzdG9tUHJlY2VkZW5jZShsb2FkZXJzOiBDb25maWdMb2FkZXJbXSwgcHJlY2VkZW5jZTogTG9hZGVyUHJlY2VkZW5jZVtdKTogQ29uZmlnTG9hZGVyW10ge1xyXG4gICAgY29uc3QgcHJpb3JpdHlNYXAgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xyXG4gICAgZm9yIChjb25zdCBwIG9mIHByZWNlZGVuY2UpIHtcclxuICAgICAgcHJpb3JpdHlNYXAuc2V0KHAubG9hZGVyLCBwLnByaW9yaXR5KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTb3J0IGJ5IHByaW9yaXR5IChsb3dlciBmaXJzdCwgc28gaGlnaGVyIHByaW9yaXR5IGxvYWRzIGxhc3QgYW5kIHdpbnMpXHJcbiAgICByZXR1cm4gWy4uLmxvYWRlcnNdLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3QgcHJpb3JpdHlBID0gcHJpb3JpdHlNYXAuZ2V0KGEuZ2V0TmFtZSgpKSA/PyAwO1xyXG4gICAgICBjb25zdCBwcmlvcml0eUIgPSBwcmlvcml0eU1hcC5nZXQoYi5nZXROYW1lKCkpID8/IDA7XHJcbiAgICAgIHJldHVybiBwcmlvcml0eUEgLSBwcmlvcml0eUI7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNvcnQgbG9hZGVycyBieSBwcmVkZWZpbmVkIG9yZGVyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzb3J0QnlQcmVkZWZpbmVkT3JkZXIobG9hZGVyczogQ29uZmlnTG9hZGVyW10sIG9yZGVyOiBzdHJpbmdbXSk6IENvbmZpZ0xvYWRlcltdIHtcclxuICAgIGNvbnN0IG9yZGVyTWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcclxuICAgIG9yZGVyLmZvckVhY2goKG5hbWUsIGluZGV4KSA9PiBvcmRlck1hcC5zZXQobmFtZSwgaW5kZXgpKTtcclxuXHJcbiAgICAvLyBTb3J0IGJ5IG9yZGVyIGluZGV4IChsb3dlciBmaXJzdCwgc28gaGlnaGVyIGluZGV4IGxvYWRzIGxhc3QgYW5kIHdpbnMpXHJcbiAgICByZXR1cm4gWy4uLmxvYWRlcnNdLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXJNYXAuZ2V0KGEuZ2V0TmFtZSgpKSA/PyAtMTtcclxuICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXJNYXAuZ2V0KGIuZ2V0TmFtZSgpKSA/PyAtMTtcclxuICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBjb25maWd1cmF0aW9uIGZyb20gYWxsIGNvbmZpZ3VyZWQgbG9hZGVycy5cclxuICAgKiBMb2FkZXJzIGFyZSBleGVjdXRlZCBpbiBwcmVjZWRlbmNlIG9yZGVyLCB3aXRoIGxhdGVyIGxvYWRlcnMgb3ZlcnJpZGluZyBlYXJsaWVyIG9uZXMuXHJcbiAgICovXHJcbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XHJcbiAgICBjb25zdCBzb3VyY2VzOiBDb25maWdTb3VyY2VJbmZvW10gPSBbXTtcclxuICAgIGxldCBtZXJnZWRDb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XHJcbiAgICBjb25zdCBrZXlPcmlnaW5zOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpOyAvLyBUcmFjayB3aGljaCBsb2FkZXIgc2V0IGVhY2gga2V5XHJcblxyXG4gICAgdGhpcy5sb2coJ0xvYWRpbmcgY29uZmlndXJhdGlvbi4uLicpO1xyXG5cclxuICAgIGNvbnN0IG9yZGVyZWRMb2FkZXJzID0gdGhpcy5nZXRMb2FkT3JkZXIoKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGxvYWRlciBvZiBvcmRlcmVkTG9hZGVycykge1xyXG4gICAgICBjb25zdCBsb2FkZXJOYW1lID0gbG9hZGVyLmdldE5hbWUoKTtcclxuICAgICAgY29uc3QgbG9hZGVyU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgbG9hZGVyIGlzIGF2YWlsYWJsZVxyXG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlID0gYXdhaXQgbG9hZGVyLmlzQXZhaWxhYmxlKCk7XHJcbiAgICAgICAgaWYgKCFpc0F2YWlsYWJsZSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX3ZlcmJvc2VPcHRpb25zPy5sb2dUaW1pbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2coYCR7bG9hZGVyTmFtZX06IHNraXBwZWQgKG5vdCBhdmFpbGFibGUpYCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIExvYWQgY29uZmlndXJhdGlvbiBmcm9tIHRoaXMgbG9hZGVyXHJcbiAgICAgICAgY29uc3QgbG9hZGVyQ29uZmlnID0gYXdhaXQgbG9hZGVyLmxvYWQoKTtcclxuICAgICAgICBjb25zdCBrZXlzTG9hZGVkID0gT2JqZWN0LmtleXMobG9hZGVyQ29uZmlnKTtcclxuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBsb2FkZXJTdGFydFRpbWU7XHJcblxyXG4gICAgICAgIC8vIFRyYWNrIHNvdXJjZSBpbmZvXHJcbiAgICAgICAgc291cmNlcy5wdXNoKHtcclxuICAgICAgICAgIGxvYWRlcjogbG9hZGVyTmFtZSxcclxuICAgICAgICAgIGtleXNMb2FkZWQsXHJcbiAgICAgICAgICBkdXJhdGlvbixcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gTG9nIHRpbWluZyBhbmQga2V5c1xyXG4gICAgICAgIGlmICh0aGlzLl92ZXJib3NlT3B0aW9ucz8ubG9nVGltaW5nKSB7XHJcbiAgICAgICAgICB0aGlzLmxvZyhgJHtsb2FkZXJOYW1lfTogbG9hZGVkICR7a2V5c0xvYWRlZC5sZW5ndGh9IGtleXMgaW4gJHtkdXJhdGlvbn1tc2ApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gTG9nIGluZGl2aWR1YWwga2V5cyBhbmQgdHJhY2sgb3ZlcnJpZGVzXHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0xvYWRlZCkge1xyXG4gICAgICAgICAgY29uc3QgcHJldmlvdXNMb2FkZXIgPSBrZXlPcmlnaW5zLmdldChrZXkpO1xyXG4gICAgICAgICAgY29uc3QgaXNPdmVycmlkZSA9IHByZXZpb3VzTG9hZGVyICE9PSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuX3ZlcmJvc2VPcHRpb25zPy5sb2dLZXlzKSB7XHJcbiAgICAgICAgICAgIGxldCBsb2dMaW5lID0gYCAgLSAke2tleX1gO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fdmVyYm9zZU9wdGlvbnMubG9nVmFsdWVzKSB7XHJcbiAgICAgICAgICAgICAgbG9nTGluZSArPSBgID0gXCIke3RoaXMubWFza1ZhbHVlKGtleSwgbG9hZGVyQ29uZmlnW2tleV0pfVwiYDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXNPdmVycmlkZSAmJiB0aGlzLl92ZXJib3NlT3B0aW9ucy5sb2dPdmVycmlkZXMpIHtcclxuICAgICAgICAgICAgICBsb2dMaW5lICs9IGAgKG92ZXJyaWRlcyAke3ByZXZpb3VzTG9hZGVyfSlgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubG9nKGxvZ0xpbmUpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGtleU9yaWdpbnMuc2V0KGtleSwgbG9hZGVyTmFtZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBNZXJnZSBjb25maWd1cmF0aW9uIChsYXRlciBsb2FkZXJzIG92ZXJyaWRlIGVhcmxpZXIgb25lcylcclxuICAgICAgICBtZXJnZWRDb25maWcgPSB7IC4uLm1lcmdlZENvbmZpZywgLi4ubG9hZGVyQ29uZmlnIH07XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IoXHJcbiAgICAgICAgICBgRmFpbGVkIHRvIGxvYWQgY29uZmlndXJhdGlvbiBmcm9tICR7bG9hZGVyTmFtZX06ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWAsXHJcbiAgICAgICAgICBsb2FkZXJOYW1lLFxyXG4gICAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogdW5kZWZpbmVkXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENvdW50IG92ZXJyaWRlc1xyXG4gICAgY29uc3QgdG90YWxLZXlzID0gT2JqZWN0LmtleXMobWVyZ2VkQ29uZmlnKS5sZW5ndGg7XHJcbiAgICBjb25zdCB0b3RhbER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcclxuICAgIGNvbnN0IG92ZXJyaWRlQ291bnQgPSBzb3VyY2VzLnJlZHVjZSgoYWNjLCBzKSA9PiBhY2MgKyBzLmtleXNMb2FkZWQubGVuZ3RoLCAwKSAtIHRvdGFsS2V5cztcclxuXHJcbiAgICBpZiAodGhpcy5fdmVyYm9zZU9wdGlvbnM/LmxvZ1RpbWluZykge1xyXG4gICAgICB0aGlzLmxvZyhgQ29uZmlndXJhdGlvbiBsb2FkZWQ6ICR7dG90YWxLZXlzfSB0b3RhbCBrZXlzLCAke292ZXJyaWRlQ291bnR9IG92ZXJyaWRlcywgJHt0b3RhbER1cmF0aW9ufW1zIHRvdGFsYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVmFsaWRhdGUgaWYgc2NoZW1hIGlzIHByb3ZpZGVkIGFuZCB2YWxpZGF0aW9uIGlzIGVuYWJsZWRcclxuICAgIGlmICh0aGlzLl9vcHRpb25zLnNjaGVtYSAmJiB0aGlzLl9vcHRpb25zLnZhbGlkYXRlT25Mb2FkKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX29wdGlvbnMuc2NoZW1hLnNhZmVQYXJzZShtZXJnZWRDb25maWcpO1xyXG4gICAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgICAgY29uc3Qgem9kRXJyb3IgPSByZXN1bHQuZXJyb3IgYXMgWm9kRXJyb3I7XHJcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcclxuICAgICAgICAgIGBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gZmFpbGVkOiAke3pvZEVycm9yLmVycm9ycy5tYXAoKGUpID0+IGAke2UucGF0aC5qb2luKCcuJyl9OiAke2UubWVzc2FnZX1gKS5qb2luKCcsICcpfWAsXHJcbiAgICAgICAgICB6b2RFcnJvci5lcnJvcnMsXHJcbiAgICAgICAgICB1bmRlZmluZWRcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29uZmlnID0gcmVzdWx0LmRhdGEgYXMgVDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29uZmlnID0gbWVyZ2VkQ29uZmlnIGFzIFQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkUmVzdWx0ID0ge1xyXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxyXG4gICAgICBzb3VyY2VzLFxyXG4gICAgICBsb2FkZWRBdDogbmV3IERhdGUoKSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdmFsdWUgYnkga2V5LlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGNvbmZpZ3VyYXRpb24ga2V5XHJcbiAgICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24gdmFsdWVcclxuICAgKiBAdGhyb3dzIENvbmZpZ3VyYXRpb25FcnJvciBpZiBjb25maWd1cmF0aW9uIGlzIG5vdCBsb2FkZWRcclxuICAgKi9cclxuICBnZXQ8SyBleHRlbmRzIGtleW9mIFQ+KGtleTogSyk6IFRbS10ge1xyXG4gICAgaWYgKCF0aGlzLmxvYWRlZCB8fCB0aGlzLmNvbmZpZyA9PT0gbnVsbCkge1xyXG4gICAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbkVycm9yKCdDb25maWd1cmF0aW9uIG5vdCBsb2FkZWQuIENhbGwgbG9hZCgpIGZpcnN0LicpO1xyXG4gICAgfVxyXG4gICAgLy8gTm9uLW51bGwgYXNzZXJ0aW9uIGlzIHNhZmUgaGVyZSBiZWNhdXNlIHdlJ3ZlIGNoZWNrZWQgdGhpcy5jb25maWcgIT09IG51bGwgYWJvdmVcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZyFba2V5XTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhbGwgY29uZmlndXJhdGlvbiB2YWx1ZXMuXHJcbiAgICogQHJldHVybnMgVGhlIGNvbXBsZXRlIGNvbmZpZ3VyYXRpb24gb2JqZWN0XHJcbiAgICogQHRocm93cyBDb25maWd1cmF0aW9uRXJyb3IgaWYgY29uZmlndXJhdGlvbiBpcyBub3QgbG9hZGVkXHJcbiAgICovXHJcbiAgZ2V0QWxsKCk6IFQge1xyXG4gICAgaWYgKCF0aGlzLmxvYWRlZCB8fCB0aGlzLmNvbmZpZyA9PT0gbnVsbCkge1xyXG4gICAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbkVycm9yKCdDb25maWd1cmF0aW9uIG5vdCBsb2FkZWQuIENhbGwgbG9hZCgpIGZpcnN0LicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBsb2FkZWQuXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBjb25maWd1cmF0aW9uIGlzIGxvYWRlZFxyXG4gICAqL1xyXG4gIGlzTG9hZGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGVudmlyb25tZW50LlxyXG4gICAqIEByZXR1cm5zIFRoZSBBUFBfRU5WIHZhbHVlIG9yICdkZXZlbG9wbWVudCcgYXMgZGVmYXVsdFxyXG4gICAqL1xyXG4gIGdldEFwcEVudigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52WydBUFBfRU5WJ10gPz8gJ2RldmVsb3BtZW50JztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgbG9hZCByZXN1bHQgd2l0aCBzb3VyY2UgaW5mb3JtYXRpb24uXHJcbiAgICogQHJldHVybnMgVGhlIGxvYWQgcmVzdWx0IG9yIG51bGwgaWYgbm90IGxvYWRlZFxyXG4gICAqL1xyXG4gIGdldExvYWRSZXN1bHQoKTogQ29uZmlnTG9hZFJlc3VsdDxUPiB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZFJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlcmlhbGl6ZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHRvIEpTT04gc3RyaW5nLlxyXG4gICAqIEByZXR1cm5zIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uXHJcbiAgICogQHRocm93cyBDb25maWd1cmF0aW9uRXJyb3IgaWYgY29uZmlndXJhdGlvbiBpcyBub3QgbG9hZGVkXHJcbiAgICovXHJcbiAgc2VyaWFsaXplKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMubG9hZGVkIHx8IHRoaXMuY29uZmlnID09PSBudWxsKSB7XHJcbiAgICAgIHRocm93IG5ldyBDb25maWd1cmF0aW9uRXJyb3IoJ0NvbmZpZ3VyYXRpb24gbm90IGxvYWRlZC4gQ2FsbCBsb2FkKCkgZmlyc3QuJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgbmV3IENvbmZpZ01hbmFnZXIgd2l0aCBjb25maWd1cmF0aW9uIGxvYWRlZCBmcm9tIGEgSlNPTiBzdHJpbmcuXHJcbiAgICogVGhpcyBpcyB1c2VmdWwgZm9yIHJlc3RvcmluZyBjb25maWd1cmF0aW9uIGZyb20gYSBzZXJpYWxpemVkIHN0YXRlLlxyXG4gICAqIEBwYXJhbSBqc29uIEpTT04gc3RyaW5nIHRvIGRlc2VyaWFsaXplXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgQ29uZmlnTWFuYWdlciBvcHRpb25zIChzY2hlbWEgd2lsbCBiZSB1c2VkIGZvciB2YWxpZGF0aW9uKVxyXG4gICAqIEByZXR1cm5zIEEgbmV3IENvbmZpZ01hbmFnZXIgaW5zdGFuY2Ugd2l0aCB0aGUgZGVzZXJpYWxpemVkIGNvbmZpZ3VyYXRpb25cclxuICAgKi9cclxuICBzdGF0aWMgZGVzZXJpYWxpemU8VCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcclxuICAgIGpzb246IHN0cmluZyxcclxuICAgIG9wdGlvbnM6IENvbmZpZ01hbmFnZXJPcHRpb25zPFQ+ID0ge31cclxuICApOiBDb25maWdNYW5hZ2VyPFQ+IHtcclxuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UoanNvbik7XHJcblxyXG4gICAgLy8gVmFsaWRhdGUgaWYgc2NoZW1hIGlzIHByb3ZpZGVkXHJcbiAgICBpZiAob3B0aW9ucy5zY2hlbWEpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gb3B0aW9ucy5zY2hlbWEuc2FmZVBhcnNlKHBhcnNlZCk7XHJcbiAgICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgICBjb25zdCB6b2RFcnJvciA9IHJlc3VsdC5lcnJvciBhcyBab2RFcnJvcjtcclxuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxyXG4gICAgICAgICAgYERlc2VyaWFsaXphdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHt6b2RFcnJvci5lcnJvcnMubWFwKChlKSA9PiBgJHtlLnBhdGguam9pbignLicpfTogJHtlLm1lc3NhZ2V9YCkuam9pbignLCAnKX1gLFxyXG4gICAgICAgICAgem9kRXJyb3IuZXJyb3JzLFxyXG4gICAgICAgICAgdW5kZWZpbmVkXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENyZWF0ZSBhIG5ldyBDb25maWdNYW5hZ2VyIGFuZCBzZXQgaXRzIGludGVybmFsIHN0YXRlXHJcbiAgICBjb25zdCBtYW5hZ2VyID0gbmV3IENvbmZpZ01hbmFnZXI8VD4ob3B0aW9ucyk7XHJcbiAgICBtYW5hZ2VyLmNvbmZpZyA9IHBhcnNlZCBhcyBUO1xyXG4gICAgbWFuYWdlci5sb2FkZWQgPSB0cnVlO1xyXG4gICAgbWFuYWdlci5sb2FkUmVzdWx0ID0ge1xyXG4gICAgICBjb25maWc6IHBhcnNlZCBhcyBULFxyXG4gICAgICBzb3VyY2VzOiBbeyBsb2FkZXI6ICdkZXNlcmlhbGl6ZScsIGtleXNMb2FkZWQ6IE9iamVjdC5rZXlzKHBhcnNlZCksIGR1cmF0aW9uOiAwIH1dLFxyXG4gICAgICBsb2FkZWRBdDogbmV3IERhdGUoKSxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG1hbmFnZXI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -9,29 +9,29 @@
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.EnvFileParser = exports.ConfigValidationUtil = exports.ConfigManager = exports.SSMParameterStoreLoader = exports.SecretsManagerLoader = exports.S3Loader = exports.EnvFileLoader = exports.EnvironmentLoader = exports.MissingConfigurationError = exports.ConfigurationLoadError = exports.AWSServiceError = exports.ValidationError = exports.ConfigurationError = void 0;
|
|
11
11
|
// Error classes
|
|
12
|
-
var
|
|
13
|
-
Object.defineProperty(exports, "ConfigurationError", { enumerable: true, get: function () { return
|
|
14
|
-
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return
|
|
15
|
-
Object.defineProperty(exports, "AWSServiceError", { enumerable: true, get: function () { return
|
|
16
|
-
Object.defineProperty(exports, "ConfigurationLoadError", { enumerable: true, get: function () { return
|
|
17
|
-
Object.defineProperty(exports, "MissingConfigurationError", { enumerable: true, get: function () { return
|
|
12
|
+
var index_js_1 = require("./errors/index.js");
|
|
13
|
+
Object.defineProperty(exports, "ConfigurationError", { enumerable: true, get: function () { return index_js_1.ConfigurationError; } });
|
|
14
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return index_js_1.ValidationError; } });
|
|
15
|
+
Object.defineProperty(exports, "AWSServiceError", { enumerable: true, get: function () { return index_js_1.AWSServiceError; } });
|
|
16
|
+
Object.defineProperty(exports, "ConfigurationLoadError", { enumerable: true, get: function () { return index_js_1.ConfigurationLoadError; } });
|
|
17
|
+
Object.defineProperty(exports, "MissingConfigurationError", { enumerable: true, get: function () { return index_js_1.MissingConfigurationError; } });
|
|
18
18
|
// Loaders
|
|
19
|
-
var
|
|
20
|
-
Object.defineProperty(exports, "EnvironmentLoader", { enumerable: true, get: function () { return
|
|
21
|
-
var
|
|
22
|
-
Object.defineProperty(exports, "EnvFileLoader", { enumerable: true, get: function () { return
|
|
23
|
-
var
|
|
24
|
-
Object.defineProperty(exports, "S3Loader", { enumerable: true, get: function () { return
|
|
25
|
-
var
|
|
26
|
-
Object.defineProperty(exports, "SecretsManagerLoader", { enumerable: true, get: function () { return
|
|
27
|
-
var
|
|
28
|
-
Object.defineProperty(exports, "SSMParameterStoreLoader", { enumerable: true, get: function () { return
|
|
19
|
+
var environment_loader_js_1 = require("./loaders/environment.loader.js");
|
|
20
|
+
Object.defineProperty(exports, "EnvironmentLoader", { enumerable: true, get: function () { return environment_loader_js_1.EnvironmentLoader; } });
|
|
21
|
+
var env_file_loader_js_1 = require("./loaders/env-file.loader.js");
|
|
22
|
+
Object.defineProperty(exports, "EnvFileLoader", { enumerable: true, get: function () { return env_file_loader_js_1.EnvFileLoader; } });
|
|
23
|
+
var s3_loader_js_1 = require("./loaders/s3.loader.js");
|
|
24
|
+
Object.defineProperty(exports, "S3Loader", { enumerable: true, get: function () { return s3_loader_js_1.S3Loader; } });
|
|
25
|
+
var secrets_manager_loader_js_1 = require("./loaders/secrets-manager.loader.js");
|
|
26
|
+
Object.defineProperty(exports, "SecretsManagerLoader", { enumerable: true, get: function () { return secrets_manager_loader_js_1.SecretsManagerLoader; } });
|
|
27
|
+
var ssm_parameter_store_loader_js_1 = require("./loaders/ssm-parameter-store.loader.js");
|
|
28
|
+
Object.defineProperty(exports, "SSMParameterStoreLoader", { enumerable: true, get: function () { return ssm_parameter_store_loader_js_1.SSMParameterStoreLoader; } });
|
|
29
29
|
// ConfigManager
|
|
30
|
-
var
|
|
31
|
-
Object.defineProperty(exports, "ConfigManager", { enumerable: true, get: function () { return
|
|
30
|
+
var config_manager_js_1 = require("./config-manager.js");
|
|
31
|
+
Object.defineProperty(exports, "ConfigManager", { enumerable: true, get: function () { return config_manager_js_1.ConfigManager; } });
|
|
32
32
|
// Utilities
|
|
33
|
-
var
|
|
34
|
-
Object.defineProperty(exports, "ConfigValidationUtil", { enumerable: true, get: function () { return
|
|
35
|
-
var
|
|
36
|
-
Object.defineProperty(exports, "EnvFileParser", { enumerable: true, get: function () { return
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
var validation_util_js_1 = require("./utils/validation.util.js");
|
|
34
|
+
Object.defineProperty(exports, "ConfigValidationUtil", { enumerable: true, get: function () { return validation_util_js_1.ConfigValidationUtil; } });
|
|
35
|
+
var env_file_parser_util_js_1 = require("./utils/env-file-parser.util.js");
|
|
36
|
+
Object.defineProperty(exports, "EnvFileParser", { enumerable: true, get: function () { return env_file_parser_util_js_1.EnvFileParser; } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb25maWctYXdzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFzQ0gsZ0JBQWdCO0FBQ2hCLDhDQU0yQjtBQUx6Qiw4R0FBQSxrQkFBa0IsT0FBQTtBQUNsQiwyR0FBQSxlQUFlLE9BQUE7QUFDZiwyR0FBQSxlQUFlLE9BQUE7QUFDZixrSEFBQSxzQkFBc0IsT0FBQTtBQUN0QixxSEFBQSx5QkFBeUIsT0FBQTtBQUczQixVQUFVO0FBQ1YseUVBQW9FO0FBQTNELDBIQUFBLGlCQUFpQixPQUFBO0FBQzFCLG1FQUE2RDtBQUFwRCxtSEFBQSxhQUFhLE9BQUE7QUFDdEIsdURBQWtEO0FBQXpDLHdHQUFBLFFBQVEsT0FBQTtBQUNqQixpRkFBMkU7QUFBbEUsaUlBQUEsb0JBQW9CLE9BQUE7QUFDN0IseUZBQWtGO0FBQXpFLHdJQUFBLHVCQUF1QixPQUFBO0FBRWhDLGdCQUFnQjtBQUNoQix5REFBb0Q7QUFBM0Msa0hBQUEsYUFBYSxPQUFBO0FBRXRCLFlBQVk7QUFDWixpRUFBa0U7QUFBekQsMEhBQUEsb0JBQW9CLE9BQUE7QUFDN0IsMkVBQWdFO0FBQXZELHdIQUFBLGFBQWEsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAZHlhbmV0L2NvbmZpZy1hd3NcclxuICpcclxuICogRnJhbWV3b3JrLWFnbm9zdGljIEFXUyBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQgbGlicmFyeS5cclxuICogU3VwcG9ydHMgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBBV1MgU2VjcmV0cyBNYW5hZ2VyLCBTU00gUGFyYW1ldGVyIFN0b3JlLFxyXG4gKiBTMywgYW5kIC5lbnYgZmlsZXMgd2l0aCBjb25maWd1cmFibGUgcHJlY2VkZW5jZS5cclxuICovXHJcblxyXG4vLyBJbnRlcmZhY2VzXHJcbmV4cG9ydCB0eXBlIHtcclxuICBDb25maWdMb2FkZXIsXHJcbiAgQ29uZmlnTG9hZGVyUmVzdWx0LFxyXG59IGZyb20gJy4vaW50ZXJmYWNlcy9jb25maWctbG9hZGVyLmludGVyZmFjZS5qcyc7XHJcblxyXG5leHBvcnQgdHlwZSB7XHJcbiAgQ29uZmlnTWFuYWdlck9wdGlvbnMsXHJcbiAgTG9hZGVyUHJlY2VkZW5jZSxcclxuICBWZXJib3NlT3B0aW9ucyxcclxuICBQcmVjZWRlbmNlU3RyYXRlZ3ksXHJcbiAgQ29uZmlnTG9hZFJlc3VsdCxcclxuICBDb25maWdTb3VyY2VJbmZvLFxyXG4gIExvZ2dlcixcclxufSBmcm9tICcuL2ludGVyZmFjZXMvY29uZmlnLW1hbmFnZXIuaW50ZXJmYWNlLmpzJztcclxuXHJcbmV4cG9ydCB0eXBlIHtcclxuICBFbnZpcm9ubWVudExvYWRlckNvbmZpZyxcclxufSBmcm9tICcuL2ludGVyZmFjZXMvZW52aXJvbm1lbnQtbG9hZGVyLmludGVyZmFjZS5qcyc7XHJcblxyXG5leHBvcnQgdHlwZSB7XHJcbiAgRW52RmlsZUxvYWRlckNvbmZpZyxcclxufSBmcm9tICcuL2ludGVyZmFjZXMvZW52LWZpbGUtbG9hZGVyLmludGVyZmFjZS5qcyc7XHJcblxyXG5leHBvcnQgdHlwZSB7XHJcbiAgUzNMb2FkZXJDb25maWcsXHJcbn0gZnJvbSAnLi9pbnRlcmZhY2VzL3MzLWxvYWRlci5pbnRlcmZhY2UuanMnO1xyXG5cclxuZXhwb3J0IHR5cGUge1xyXG4gIFNlY3JldHNNYW5hZ2VyTG9hZGVyQ29uZmlnLFxyXG59IGZyb20gJy4vaW50ZXJmYWNlcy9zZWNyZXRzLW1hbmFnZXItbG9hZGVyLmludGVyZmFjZS5qcyc7XHJcblxyXG5leHBvcnQgdHlwZSB7XHJcbiAgU1NNUGFyYW1ldGVyU3RvcmVMb2FkZXJDb25maWcsXHJcbn0gZnJvbSAnLi9pbnRlcmZhY2VzL3NzbS1wYXJhbWV0ZXItc3RvcmUtbG9hZGVyLmludGVyZmFjZS5qcyc7XHJcblxyXG4vLyBFcnJvciBjbGFzc2VzXHJcbmV4cG9ydCB7XHJcbiAgQ29uZmlndXJhdGlvbkVycm9yLFxyXG4gIFZhbGlkYXRpb25FcnJvcixcclxuICBBV1NTZXJ2aWNlRXJyb3IsXHJcbiAgQ29uZmlndXJhdGlvbkxvYWRFcnJvcixcclxuICBNaXNzaW5nQ29uZmlndXJhdGlvbkVycm9yLFxyXG59IGZyb20gJy4vZXJyb3JzL2luZGV4LmpzJztcclxuXHJcbi8vIExvYWRlcnNcclxuZXhwb3J0IHsgRW52aXJvbm1lbnRMb2FkZXIgfSBmcm9tICcuL2xvYWRlcnMvZW52aXJvbm1lbnQubG9hZGVyLmpzJztcclxuZXhwb3J0IHsgRW52RmlsZUxvYWRlciB9IGZyb20gJy4vbG9hZGVycy9lbnYtZmlsZS5sb2FkZXIuanMnO1xyXG5leHBvcnQgeyBTM0xvYWRlciB9IGZyb20gJy4vbG9hZGVycy9zMy5sb2FkZXIuanMnO1xyXG5leHBvcnQgeyBTZWNyZXRzTWFuYWdlckxvYWRlciB9IGZyb20gJy4vbG9hZGVycy9zZWNyZXRzLW1hbmFnZXIubG9hZGVyLmpzJztcclxuZXhwb3J0IHsgU1NNUGFyYW1ldGVyU3RvcmVMb2FkZXIgfSBmcm9tICcuL2xvYWRlcnMvc3NtLXBhcmFtZXRlci1zdG9yZS5sb2FkZXIuanMnO1xyXG5cclxuLy8gQ29uZmlnTWFuYWdlclxyXG5leHBvcnQgeyBDb25maWdNYW5hZ2VyIH0gZnJvbSAnLi9jb25maWctbWFuYWdlci5qcyc7XHJcblxyXG4vLyBVdGlsaXRpZXNcclxuZXhwb3J0IHsgQ29uZmlnVmFsaWRhdGlvblV0aWwgfSBmcm9tICcuL3V0aWxzL3ZhbGlkYXRpb24udXRpbC5qcyc7XHJcbmV4cG9ydCB7IEVudkZpbGVQYXJzZXIgfSBmcm9tICcuL3V0aWxzL2Vudi1maWxlLXBhcnNlci51dGlsLmpzJztcclxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLW1hbmFnZXIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlnLWF3cy9zcmMvaW50ZXJmYWNlcy9jb25maWctbWFuYWdlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgWm9kVHlwZSB9IGZyb20gJ3pvZCc7XHJcbmltcG9ydCB0eXBlIHsgQ29uZmlnTG9hZGVyIH0gZnJvbSAnLi9jb25maWctbG9hZGVyLmludGVyZmFjZS5qcyc7XHJcblxyXG4vKipcclxuICogTG9nZ2VyIGludGVyZmFjZSBmb3IgQ29uZmlnTWFuYWdlclxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBMb2dnZXIge1xyXG4gIGxvZyhtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xyXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQ7XHJcbiAgd2FybihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xyXG4gIGRlYnVnPyhtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xyXG59XHJcblxyXG4vKipcclxuICogT3B0aW9ucyBmb3IgdmVyYm9zZSBsb2dnaW5nIG91dHB1dFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBWZXJib3NlT3B0aW9ucyB7XHJcbiAgLyoqIExvZyBhbGwgdmFyaWFibGUgbmFtZXMgYmVpbmcgbG9hZGVkLiBEZWZhdWx0OiB0cnVlICovXHJcbiAgbG9nS2V5cz86IGJvb2xlYW47XHJcbiAgLyoqIExvZyB2YXJpYWJsZSB2YWx1ZXMgKFdBUk5JTkc6IG1heSBleHBvc2Ugc2VjcmV0cykuIERlZmF1bHQ6IGZhbHNlICovXHJcbiAgbG9nVmFsdWVzPzogYm9vbGVhbjtcclxuICAvKiogTG9nIHdoZW4gYSB2YXJpYWJsZSBpcyBvdmVycmlkZGVuIGJ5IGEgaGlnaGVyLXByZWNlZGVuY2UgbG9hZGVyLiBEZWZhdWx0OiB0cnVlICovXHJcbiAgbG9nT3ZlcnJpZGVzPzogYm9vbGVhbjtcclxuICAvKiogTG9nIGxvYWRlciB0aW1pbmcgaW5mb3JtYXRpb24uIERlZmF1bHQ6IHRydWUgKi9cclxuICBsb2dUaW1pbmc/OiBib29sZWFuO1xyXG4gIC8qKiBNYXNrIHNlbnNpdGl2ZSB2YWx1ZXMgKHNob3cgZmlyc3QvbGFzdCAyIGNoYXJzIG9ubHkpLiBEZWZhdWx0OiB0cnVlICh3aGVuIGxvZ1ZhbHVlcyBpcyB0cnVlKSAqL1xyXG4gIG1hc2tWYWx1ZXM/OiBib29sZWFuO1xyXG4gIC8qKiBLZXlzIHRvIGFsd2F5cyBtYXNrIHJlZ2FyZGxlc3Mgb2YgbWFza1ZhbHVlcyBzZXR0aW5nLiBEZWZhdWx0OiBbJ3Bhc3N3b3JkJywgJ3NlY3JldCcsICdrZXknLCAndG9rZW4nXSAqL1xyXG4gIHNlbnNpdGl2ZUtleXM/OiBzdHJpbmdbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEN1c3RvbSBsb2FkZXIgcHJlY2VkZW5jZSBjb25maWd1cmF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIExvYWRlclByZWNlZGVuY2Uge1xyXG4gIC8qKiBMb2FkZXIgbmFtZSAqL1xyXG4gIGxvYWRlcjogc3RyaW5nO1xyXG4gIC8qKiBQcmlvcml0eSAtIGhpZ2hlciB2YWx1ZXMgb3ZlcnJpZGUgbG93ZXIgdmFsdWVzICovXHJcbiAgcHJpb3JpdHk6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFByZWNlZGVuY2Ugc3RyYXRlZ3kgZm9yIG1lcmdpbmcgY29uZmlndXJhdGlvbnNcclxuICogLSAnYXdzLWZpcnN0JzogZW52IC0+IGVudkZpbGUgLT4gczMgLT4gc2VjcmV0c01hbmFnZXIgLT4gc3NtIChBV1Mgd2lucylcclxuICogLSAnbG9jYWwtZmlyc3QnOiBzZWNyZXRzTWFuYWdlciAtPiBzc20gLT4gczMgLT4gZW52RmlsZSAtPiBlbnYgKGxvY2FsIHdpbnMpXHJcbiAqIC0gQ3VzdG9tIGFycmF5OiB1c2VyLWRlZmluZWQgb3JkZXIgdmlhIExvYWRlclByZWNlZGVuY2VbXVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgUHJlY2VkZW5jZVN0cmF0ZWd5ID0gJ2F3cy1maXJzdCcgfCAnbG9jYWwtZmlyc3QnIHwgTG9hZGVyUHJlY2VkZW5jZVtdO1xyXG5cclxuLyoqXHJcbiAqIE9wdGlvbnMgZm9yIENvbmZpZ01hbmFnZXJcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnTWFuYWdlck9wdGlvbnM8VCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XHJcbiAgLyoqIEFycmF5IG9mIGxvYWRlcnMgdG8gdXNlICovXHJcbiAgbG9hZGVycz86IENvbmZpZ0xvYWRlcltdO1xyXG4gIC8qKiBab2Qgc2NoZW1hIGZvciB2YWxpZGF0aW9uICovXHJcbiAgc2NoZW1hPzogWm9kVHlwZTxUPjtcclxuICAvKiogUHJlY2VkZW5jZSBzdHJhdGVneSBmb3IgbWVyZ2luZyBjb25maWd1cmF0aW9ucyAqL1xyXG4gIHByZWNlZGVuY2U/OiBQcmVjZWRlbmNlU3RyYXRlZ3k7XHJcbiAgLyoqIFdoZXRoZXIgdG8gdmFsaWRhdGUgY29uZmlndXJhdGlvbiBvbiBsb2FkLiBEZWZhdWx0OiB0cnVlICovXHJcbiAgdmFsaWRhdGVPbkxvYWQ/OiBib29sZWFuO1xyXG4gIC8qKiBFbmFibGUgbG9nZ2luZy4gRGVmYXVsdDogZmFsc2UgKi9cclxuICBlbmFibGVMb2dnaW5nPzogYm9vbGVhbjtcclxuICAvKiogQ3VzdG9tIGxvZ2dlciBpbnN0YW5jZSAqL1xyXG4gIGxvZ2dlcj86IExvZ2dlcjtcclxuICAvKiogVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0IG9wdGlvbnMgKi9cclxuICB2ZXJib3NlPzogVmVyYm9zZU9wdGlvbnMgfCBib29sZWFuO1xyXG59XHJcblxyXG4vKipcclxuICogSW5mb3JtYXRpb24gYWJvdXQgYSBjb25maWd1cmF0aW9uIHNvdXJjZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb25maWdTb3VyY2VJbmZvIHtcclxuICAvKiogTmFtZSBvZiB0aGUgbG9hZGVyICovXHJcbiAgbG9hZGVyOiBzdHJpbmc7XHJcbiAgLyoqIEtleXMgbG9hZGVkIGJ5IHRoaXMgbG9hZGVyICovXHJcbiAga2V5c0xvYWRlZDogc3RyaW5nW107XHJcbiAgLyoqIFRpbWUgdGFrZW4gdG8gbG9hZCBpbiBtaWxsaXNlY29uZHMgKi9cclxuICBkdXJhdGlvbjogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogUmVzdWx0IG9mIGxvYWRpbmcgY29uZmlndXJhdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb25maWdMb2FkUmVzdWx0PFQ+IHtcclxuICAvKiogVGhlIG1lcmdlZCBjb25maWd1cmF0aW9uICovXHJcbiAgY29uZmlnOiBUO1xyXG4gIC8qKiBJbmZvcm1hdGlvbiBhYm91dCBlYWNoIHNvdXJjZSAqL1xyXG4gIHNvdXJjZXM6IENvbmZpZ1NvdXJjZUluZm9bXTtcclxuICAvKiogV2hlbiB0aGUgY29uZmlndXJhdGlvbiB3YXMgbG9hZGVkICovXHJcbiAgbG9hZGVkQXQ6IERhdGU7XHJcbn1cclxuIl19
|
|
@@ -36,8 +36,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.EnvFileLoader = void 0;
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
|
-
const
|
|
40
|
-
const
|
|
39
|
+
const env_file_parser_util_js_1 = require("../utils/env-file-parser.util.js");
|
|
40
|
+
const index_js_1 = require("../errors/index.js");
|
|
41
41
|
/**
|
|
42
42
|
* Loader that reads configuration from .env files on the filesystem.
|
|
43
43
|
* Uses AWS ECS-compatible format for parsing.
|
|
@@ -113,7 +113,7 @@ class EnvFileLoader {
|
|
|
113
113
|
}
|
|
114
114
|
try {
|
|
115
115
|
const content = await this.readFile(resolvedPath);
|
|
116
|
-
const parsed =
|
|
116
|
+
const parsed = env_file_parser_util_js_1.EnvFileParser.parse(content);
|
|
117
117
|
// Merge based on override setting
|
|
118
118
|
if (this._config.override) {
|
|
119
119
|
// Later files override earlier ones
|
|
@@ -129,7 +129,7 @@ class EnvFileLoader {
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
catch (error) {
|
|
132
|
-
throw new
|
|
132
|
+
throw new index_js_1.ConfigurationLoadError(`Failed to read env file: ${resolvedPath}`, this.getName(), error instanceof Error ? error : undefined);
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
return result;
|
|
@@ -166,4 +166,4 @@ class EnvFileLoader {
|
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
exports.EnvFileLoader = EnvFileLoader;
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LWZpbGUubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlnLWF3cy9zcmMvbG9hZGVycy9lbnYtZmlsZS5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUc3Qiw4RUFBaUU7QUFDakUsaURBQTREO0FBRTVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBYSxhQUFhO0lBQ3hCLGdCQUFnQjtJQUNHLE9BQU8sQ0FBZ0M7SUFFMUQsNkNBQTZDO0lBQ3JDLE1BQU0sQ0FBVSxhQUFhLEdBQUcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFL0QsNEJBQTRCO0lBQ3BCLE1BQU0sQ0FBVSxnQkFBZ0IsR0FBbUIsT0FBTyxDQUFDO0lBRW5FLFlBQVksU0FBOEIsRUFBRTtRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDLGFBQWE7WUFDbEQsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDLGdCQUFnQjtZQUMzRCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFHRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsV0FBVztRQUNmLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxNQUFNLEdBQTRCLEVBQUUsQ0FBQztRQUUzQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVoRCxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMzQyw4QkFBOEI7Z0JBQzlCLFNBQVM7WUFDWCxDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbEQsTUFBTSxNQUFNLEdBQUcsdUNBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRTVDLGtDQUFrQztnQkFDbEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUMxQixvQ0FBb0M7b0JBQ3BDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04saUVBQWlFO29CQUNqRSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO3dCQUNsRCxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQzs0QkFDckIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQzt3QkFDdEIsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUksaUNBQXNCLENBQzlCLDRCQUE0QixZQUFZLEVBQUUsRUFDMUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUNkLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUMzQyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sV0FBVyxDQUFDLFFBQWdCO1FBQ3BDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDTyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQWdCO1FBQ3pDLElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNPLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBZ0I7UUFDdkMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7O0FBdEhILHNDQXVIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcclxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcclxuaW1wb3J0IHR5cGUgeyBDb25maWdMb2FkZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy1sb2FkZXIuaW50ZXJmYWNlLmpzJztcclxuaW1wb3J0IHR5cGUgeyBFbnZGaWxlTG9hZGVyQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbnYtZmlsZS1sb2FkZXIuaW50ZXJmYWNlLmpzJztcclxuaW1wb3J0IHsgRW52RmlsZVBhcnNlciB9IGZyb20gJy4uL3V0aWxzL2Vudi1maWxlLXBhcnNlci51dGlsLmpzJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkxvYWRFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9pbmRleC5qcyc7XHJcblxyXG4vKipcclxuICogTG9hZGVyIHRoYXQgcmVhZHMgY29uZmlndXJhdGlvbiBmcm9tIC5lbnYgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW0uXHJcbiAqIFVzZXMgQVdTIEVDUy1jb21wYXRpYmxlIGZvcm1hdCBmb3IgcGFyc2luZy5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiAvLyBMb2FkIGZyb20gZGVmYXVsdCBwYXRocyAoLmVudiwgLmVudi5sb2NhbClcclxuICogY29uc3QgbG9hZGVyID0gbmV3IEVudkZpbGVMb2FkZXIoKTtcclxuICpcclxuICogLy8gTG9hZCBmcm9tIHNwZWNpZmljIHBhdGhzXHJcbiAqIGNvbnN0IGxvYWRlciA9IG5ldyBFbnZGaWxlTG9hZGVyKHtcclxuICogICBwYXRoczogWycuZW52JywgJy5lbnYucHJvZHVjdGlvbiddXHJcbiAqIH0pO1xyXG4gKlxyXG4gKiAvLyBEaXNhYmxlIG92ZXJyaWRlIChmaXJzdCBmaWxlIHdpbnMpXHJcbiAqIGNvbnN0IGxvYWRlciA9IG5ldyBFbnZGaWxlTG9hZGVyKHtcclxuICogICBwYXRoczogWycuZW52JywgJy5lbnYubG9jYWwnXSxcclxuICogICBvdmVycmlkZTogZmFsc2VcclxuICogfSk7XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3VzZS1lbnZpcm9ubWVudC1maWxlLmh0bWxcclxuICovXHJcbmV4cG9ydCBjbGFzcyBFbnZGaWxlTG9hZGVyIGltcGxlbWVudHMgQ29uZmlnTG9hZGVyIHtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jb25maWc6IFJlcXVpcmVkPEVudkZpbGVMb2FkZXJDb25maWc+O1xyXG5cclxuICAvKiogRGVmYXVsdCBwYXRocyB0byBzZWFyY2ggZm9yIC5lbnYgZmlsZXMgKi9cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1BBVEhTID0gWycuZW52JywgJy5lbnYubG9jYWwnXTtcclxuXHJcbiAgLyoqIERlZmF1bHQgZmlsZSBlbmNvZGluZyAqL1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfRU5DT0RJTkc6IEJ1ZmZlckVuY29kaW5nID0gJ3V0Zi04JztcclxuXHJcbiAgY29uc3RydWN0b3IoY29uZmlnOiBFbnZGaWxlTG9hZGVyQ29uZmlnID0ge30pIHtcclxuICAgIHRoaXMuX2NvbmZpZyA9IHtcclxuICAgICAgcGF0aHM6IGNvbmZpZy5wYXRocyA/PyBFbnZGaWxlTG9hZGVyLkRFRkFVTFRfUEFUSFMsXHJcbiAgICAgIGVuY29kaW5nOiBjb25maWcuZW5jb2RpbmcgPz8gRW52RmlsZUxvYWRlci5ERUZBVUxUX0VOQ09ESU5HLFxyXG4gICAgICBvdmVycmlkZTogY29uZmlnLm92ZXJyaWRlID8/IHRydWUsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICdFbnZGaWxlTG9hZGVyJztcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIGNvbmZpZ3VyZWQgLmVudiBmaWxlcyBleGlzdHMuXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gdHJ1ZSBpZiBhbnkgZmlsZSBleGlzdHNcclxuICAgKi9cclxuICBhc3luYyBpc0F2YWlsYWJsZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgdGhpcy5fY29uZmlnLnBhdGhzKSB7XHJcbiAgICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHRoaXMucmVzb2x2ZVBhdGgoZmlsZVBhdGgpO1xyXG4gICAgICBpZiAoYXdhaXQgdGhpcy5maWxlRXhpc3RzKHJlc29sdmVkUGF0aCkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBjb25maWd1cmF0aW9uIGZyb20gLmVudiBmaWxlcy5cclxuICAgKlxyXG4gICAqIEZpbGVzIGFyZSBwcm9jZXNzZWQgaW4gb3JkZXIuIFdoZW4gb3ZlcnJpZGUgaXMgdHJ1ZSAoZGVmYXVsdCksXHJcbiAgICogbGF0ZXIgZmlsZXMgb3ZlcnJpZGUgZWFybGllciBvbmVzLiBXaGVuIG92ZXJyaWRlIGlzIGZhbHNlLFxyXG4gICAqIGVhcmxpZXIgZmlsZXMgdGFrZSBwcmVjZWRlbmNlLlxyXG4gICAqXHJcbiAgICogTWlzc2luZyBmaWxlcyBhcmUgc2lsZW50bHkgc2tpcHBlZC5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBtZXJnZWQgY29uZmlndXJhdGlvblxyXG4gICAqIEB0aHJvd3MgQ29uZmlndXJhdGlvbkxvYWRFcnJvciBpZiBhIGZpbGUgZXhpc3RzIGJ1dCBjYW5ub3QgYmUgcmVhZFxyXG4gICAqL1xyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xyXG5cclxuICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgdGhpcy5fY29uZmlnLnBhdGhzKSB7XHJcbiAgICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHRoaXMucmVzb2x2ZVBhdGgoZmlsZVBhdGgpO1xyXG5cclxuICAgICAgaWYgKCEoYXdhaXQgdGhpcy5maWxlRXhpc3RzKHJlc29sdmVkUGF0aCkpKSB7XHJcbiAgICAgICAgLy8gU2tpcCBtaXNzaW5nIGZpbGVzIHNpbGVudGx5XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHRoaXMucmVhZEZpbGUocmVzb2x2ZWRQYXRoKTtcclxuICAgICAgICBjb25zdCBwYXJzZWQgPSBFbnZGaWxlUGFyc2VyLnBhcnNlKGNvbnRlbnQpO1xyXG5cclxuICAgICAgICAvLyBNZXJnZSBiYXNlZCBvbiBvdmVycmlkZSBzZXR0aW5nXHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5vdmVycmlkZSkge1xyXG4gICAgICAgICAgLy8gTGF0ZXIgZmlsZXMgb3ZlcnJpZGUgZWFybGllciBvbmVzXHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgcGFyc2VkKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gRWFybGllciBmaWxlcyB0YWtlIHByZWNlZGVuY2UgLSBvbmx5IGFkZCBrZXlzIHRoYXQgZG9uJ3QgZXhpc3RcclxuICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcnNlZCkpIHtcclxuICAgICAgICAgICAgaWYgKCEoa2V5IGluIHJlc3VsdCkpIHtcclxuICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIHRocm93IG5ldyBDb25maWd1cmF0aW9uTG9hZEVycm9yKFxyXG4gICAgICAgICAgYEZhaWxlZCB0byByZWFkIGVudiBmaWxlOiAke3Jlc29sdmVkUGF0aH1gLFxyXG4gICAgICAgICAgdGhpcy5nZXROYW1lKCksXHJcbiAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlIGEgZmlsZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZXNvbHZlUGF0aChmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChwYXRoLmlzQWJzb2x1dGUoZmlsZVBhdGgpKSB7XHJcbiAgICAgIHJldHVybiBmaWxlUGF0aDtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZmlsZVBhdGgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgYSBmaWxlIGV4aXN0cy5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYXN5bmMgZmlsZUV4aXN0cyhmaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCBmcy5wcm9taXNlcy5hY2Nlc3MoZmlsZVBhdGgsIGZzLmNvbnN0YW50cy5SX09LKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVhZCBhIGZpbGUncyBjb250ZW50cy5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYXN5bmMgcmVhZEZpbGUoZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gZnMucHJvbWlzZXMucmVhZEZpbGUoZmlsZVBhdGgsIHsgZW5jb2Rpbmc6IHRoaXMuX2NvbmZpZy5lbmNvZGluZyB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -82,4 +82,4 @@ class EnvironmentLoader {
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
exports.EnvironmentLoader = EnvironmentLoader;
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlnLWF3cy9zcmMvbG9hZGVycy9lbnZpcm9ubWVudC5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQWEsaUJBQWlCO0lBQzVCLGdCQUFnQjtJQUNHLE9BQU8sQ0FBMEI7SUFFcEQsWUFBWSxTQUFrQyxFQUFFO1FBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVc7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sTUFBTSxHQUE0QixFQUFFLENBQUM7UUFDM0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM5QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVwQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2RCx3QkFBd0I7WUFDeEIsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3hCLFNBQVM7WUFDWCxDQUFDO1lBRUQsOENBQThDO1lBQzlDLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixTQUFTO1lBQ1gsQ0FBQztZQUVELDBCQUEwQjtZQUMxQixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUMzQix3QkFBd0I7b0JBQ3hCLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUM3QywwREFBMEQ7b0JBQzFELElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2hCLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUM7b0JBQzlCLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCx3Q0FBd0M7WUFDMUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDRDQUE0QztnQkFDNUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQWhFRCw4Q0FnRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbmZpZ0xvYWRlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnLWxvYWRlci5pbnRlcmZhY2UuanMnO1xyXG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50TG9hZGVyQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbnZpcm9ubWVudC1sb2FkZXIuaW50ZXJmYWNlLmpzJztcclxuXHJcbi8qKlxyXG4gKiBMb2FkZXIgdGhhdCByZWFkcyBjb25maWd1cmF0aW9uIGZyb20gcHJvY2Vzcy5lbnYuXHJcbiAqIFN1cHBvcnRzIHByZWZpeCBmaWx0ZXJpbmcgYW5kIGV4Y2x1c2lvbiBsaXN0cy5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiAvLyBMb2FkIGFsbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcclxuICogY29uc3QgbG9hZGVyID0gbmV3IEVudmlyb25tZW50TG9hZGVyKCk7XHJcbiAqXHJcbiAqIC8vIExvYWQgb25seSB2YXJpYWJsZXMgc3RhcnRpbmcgd2l0aCAnQVBQXycsIHN0cmlwcGluZyB0aGUgcHJlZml4XHJcbiAqIGNvbnN0IGxvYWRlciA9IG5ldyBFbnZpcm9ubWVudExvYWRlcih7IHByZWZpeDogJ0FQUF8nIH0pO1xyXG4gKlxyXG4gKiAvLyBMb2FkIGFsbCBleGNlcHQgc3BlY2lmaWMgdmFyaWFibGVzXHJcbiAqIGNvbnN0IGxvYWRlciA9IG5ldyBFbnZpcm9ubWVudExvYWRlcih7IGV4Y2x1ZGU6IFsnUEFUSCcsICdIT01FJ10gfSk7XHJcbiAqXHJcbiAqIC8vIENvbWJpbmUgcHJlZml4IGFuZCBleGNsdXNpb25cclxuICogY29uc3QgbG9hZGVyID0gbmV3IEVudmlyb25tZW50TG9hZGVyKHtcclxuICogICBwcmVmaXg6ICdBUFBfJyxcclxuICogICBleGNsdWRlOiBbJ0FQUF9ERUJVRyddXHJcbiAqIH0pO1xyXG4gKiBgYGBcclxuICovXHJcbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudExvYWRlciBpbXBsZW1lbnRzIENvbmZpZ0xvYWRlciB7XHJcbiAgLyoqIEBpbnRlcm5hbCAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBfY29uZmlnOiBFbnZpcm9ubWVudExvYWRlckNvbmZpZztcclxuXHJcbiAgY29uc3RydWN0b3IoY29uZmlnOiBFbnZpcm9ubWVudExvYWRlckNvbmZpZyA9IHt9KSB7XHJcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XHJcbiAgfVxyXG5cclxuICBnZXROYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJ0Vudmlyb25tZW50TG9hZGVyJztcclxuICB9XHJcblxyXG4gIGFzeW5jIGlzQXZhaWxhYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIGNvbmZpZ3VyYXRpb24gZnJvbSBwcm9jZXNzLmVudi5cclxuICAgKlxyXG4gICAqIFdoZW4gYSBwcmVmaXggaXMgc3BlY2lmaWVkOlxyXG4gICAqIC0gT25seSB2YXJpYWJsZXMgc3RhcnRpbmcgd2l0aCB0aGUgcHJlZml4IGFyZSBpbmNsdWRlZFxyXG4gICAqIC0gVGhlIHByZWZpeCBpcyBzdHJpcHBlZCBmcm9tIHRoZSByZXN1bHRpbmcga2V5IG5hbWVzXHJcbiAgICpcclxuICAgKiBXaGVuIGFuIGV4Y2x1c2lvbiBsaXN0IGlzIHNwZWNpZmllZDpcclxuICAgKiAtIFZhcmlhYmxlcyBpbiB0aGUgbGlzdCBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgcmVzdWx0XHJcbiAgICogLSBFeGNsdXNpb24gaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBrZXkgKGJlZm9yZSBwcmVmaXggc3RyaXBwaW5nKVxyXG4gICAqXHJcbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGxvYWRlZCBjb25maWd1cmF0aW9uXHJcbiAgICovXHJcbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XHJcbiAgICBjb25zdCB7IHByZWZpeCwgZXhjbHVkZSA9IFtdIH0gPSB0aGlzLl9jb25maWc7XHJcbiAgICBjb25zdCBleGNsdWRlU2V0ID0gbmV3IFNldChleGNsdWRlKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9jZXNzLmVudikpIHtcclxuICAgICAgLy8gU2tpcCB1bmRlZmluZWQgdmFsdWVzXHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIENoZWNrIGV4Y2x1c2lvbiBsaXN0IChhZ2FpbnN0IG9yaWdpbmFsIGtleSlcclxuICAgICAgaWYgKGV4Y2x1ZGVTZXQuaGFzKGtleSkpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gSGFuZGxlIHByZWZpeCBmaWx0ZXJpbmdcclxuICAgICAgaWYgKHByZWZpeCkge1xyXG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChwcmVmaXgpKSB7XHJcbiAgICAgICAgICAvLyBTdHJpcCBwcmVmaXggZnJvbSBrZXlcclxuICAgICAgICAgIGNvbnN0IHN0cmlwcGVkS2V5ID0ga2V5LnNsaWNlKHByZWZpeC5sZW5ndGgpO1xyXG4gICAgICAgICAgLy8gT25seSBpbmNsdWRlIGlmIHRoZXJlJ3MgYSBrZXkgcmVtYWluaW5nIGFmdGVyIHN0cmlwcGluZ1xyXG4gICAgICAgICAgaWYgKHN0cmlwcGVkS2V5KSB7XHJcbiAgICAgICAgICAgIHJlc3VsdFtzdHJpcHBlZEtleV0gPSB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gU2tpcCBrZXlzIHRoYXQgZG9uJ3QgbWF0Y2ggdGhlIHByZWZpeFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIE5vIHByZWZpeCAtIGluY2x1ZGUgYWxsIG5vbi1leGNsdWRlZCBrZXlzXHJcbiAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.S3Loader = void 0;
|
|
4
4
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
5
5
|
const credential_providers_1 = require("@aws-sdk/credential-providers");
|
|
6
|
-
const
|
|
7
|
-
const
|
|
6
|
+
const env_file_parser_util_js_1 = require("../utils/env-file-parser.util.js");
|
|
7
|
+
const index_js_1 = require("../errors/index.js");
|
|
8
8
|
/**
|
|
9
9
|
* Loader that reads configuration from S3 buckets.
|
|
10
10
|
* Supports JSON and .env file formats with auto-detection.
|
|
@@ -83,7 +83,7 @@ class S3Loader {
|
|
|
83
83
|
return this.parseContent(content);
|
|
84
84
|
}
|
|
85
85
|
catch (error) {
|
|
86
|
-
if (error instanceof
|
|
86
|
+
if (error instanceof index_js_1.ConfigurationLoadError) {
|
|
87
87
|
throw error;
|
|
88
88
|
}
|
|
89
89
|
if (error instanceof Error) {
|
|
@@ -92,10 +92,10 @@ class S3Loader {
|
|
|
92
92
|
return {};
|
|
93
93
|
}
|
|
94
94
|
if (error.name === 'AccessDenied') {
|
|
95
|
-
throw new
|
|
95
|
+
throw new index_js_1.AWSServiceError(`Access denied when retrieving s3://${this._config.bucket}/${this._config.key}. Check AWS credentials and permissions.`, 'S3', 'GetObject', error);
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
|
-
throw new
|
|
98
|
+
throw new index_js_1.AWSServiceError(`Failed to retrieve s3://${this._config.bucket}/${this._config.key}: ${error instanceof Error ? error.message : String(error)}`, 'S3', 'GetObject', error instanceof Error ? error : undefined);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
@@ -108,7 +108,7 @@ class S3Loader {
|
|
|
108
108
|
return this.parseJson(content);
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
|
-
return
|
|
111
|
+
return env_file_parser_util_js_1.EnvFileParser.parse(content);
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
@@ -137,9 +137,9 @@ class S3Loader {
|
|
|
137
137
|
return { CONFIG_VALUE: parsed };
|
|
138
138
|
}
|
|
139
139
|
catch (error) {
|
|
140
|
-
throw new
|
|
140
|
+
throw new index_js_1.ConfigurationLoadError(`Failed to parse JSON from s3://${this._config.bucket}/${this._config.key}: ${error instanceof Error ? error.message : String(error)}`, this.getName(), error instanceof Error ? error : undefined);
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
exports.S3Loader = S3Loader;
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlnLWF3cy9zcmMvbG9hZGVycy9zMy5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQWdFO0FBQ2hFLHdFQUFzRTtBQUd0RSx3RUFBOEQ7QUFDOUQsc0NBQW9FO0FBRXBFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFhLFFBQVE7SUFDbkIsZ0JBQWdCO0lBQ0csT0FBTyxDQUEyQjtJQUNyRCxnQkFBZ0I7SUFDRyxPQUFPLENBQVc7SUFFckMsWUFBWSxNQUFzQjtRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztZQUNmLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksV0FBVztZQUNqRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNO1NBQ2hDLENBQUM7UUFFRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksb0JBQVEsQ0FBQztZQUMxQixXQUFXLEVBQUUsSUFBQSw0Q0FBcUIsR0FBRTtZQUNwQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1NBQzVCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNyRSxDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFdBQVc7UUFDZixJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1FB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LENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFNBQVMsQ0FBQyxPQUFlO1FBQ2pDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFbkMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDNUUsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUVELDRCQUE0QjtZQUM1QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLCtCQUFzQixDQUM5QixrQ0FBa0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQ3RJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFDZCxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDM0MsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUEvSUQsNEJBK0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2V0T2JqZWN0Q29tbWFuZCwgUzNDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtczMnO1xyXG5pbXBvcnQgeyBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4gfSBmcm9tICdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVycyc7XHJcbmltcG9ydCB0eXBlIHsgQ29uZmlnTG9hZGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWctbG9hZGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB0eXBlIHsgUzNMb2FkZXJDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3MzLWxvYWRlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBFbnZGaWxlUGFyc2VyIH0gZnJvbSAnLi4vdXRpbHMvZW52LWZpbGUtcGFyc2VyLnV0aWwnO1xyXG5pbXBvcnQgeyBBV1NTZXJ2aWNlRXJyb3IsIENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xyXG5cclxuLyoqXHJcbiAqIExvYWRlciB0aGF0IHJlYWRzIGNvbmZpZ3VyYXRpb24gZnJvbSBTMyBidWNrZXRzLlxyXG4gKiBTdXBwb3J0cyBKU09OIGFuZCAuZW52IGZpbGUgZm9ybWF0cyB3aXRoIGF1dG8tZGV0ZWN0aW9uLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIC8vIExvYWQgSlNPTiBjb25maWcgZnJvbSBTM1xyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgUzNMb2FkZXIoe1xyXG4gKiAgIGJ1Y2tldDogJ215LWNvbmZpZy1idWNrZXQnLFxyXG4gKiAgIGtleTogJ2NvbmZpZy9hcHAuanNvbicsXHJcbiAqICAgZm9ybWF0OiAnanNvbidcclxuICogfSk7XHJcbiAqXHJcbiAqIC8vIExvYWQgLmVudiBmaWxlIGZyb20gUzMgd2l0aCBhdXRvLWRldGVjdGlvblxyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgUzNMb2FkZXIoe1xyXG4gKiAgIGJ1Y2tldDogJ215LWNvbmZpZy1idWNrZXQnLFxyXG4gKiAgIGtleTogJ2NvbmZpZy8uZW52J1xyXG4gKiB9KTtcclxuICogYGBgXHJcbiAqXHJcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvdXNlLWVudmlyb25tZW50LWZpbGUuaHRtbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFMzTG9hZGVyIGltcGxlbWVudHMgQ29uZmlnTG9hZGVyIHtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jb25maWc6IFJlcXVpcmVkPFMzTG9hZGVyQ29uZmlnPjtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jbGllbnQ6IFMzQ2xpZW50O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFMzTG9hZGVyQ29uZmlnKSB7XHJcbiAgICB0aGlzLl9jb25maWcgPSB7XHJcbiAgICAgIGJ1Y2tldDogY29uZmlnLmJ1Y2tldCxcclxuICAgICAga2V5OiBjb25maWcua2V5LFxyXG4gICAgICByZWdpb246IGNvbmZpZy5yZWdpb24gfHwgcHJvY2Vzcy5lbnZbJ0FXU19SRUdJT04nXSB8fCAndXMtZWFzdC0xJyxcclxuICAgICAgZm9ybWF0OiBjb25maWcuZm9ybWF0IHx8ICdhdXRvJyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5fY2xpZW50ID0gbmV3IFMzQ2xpZW50KHtcclxuICAgICAgY3JlZGVudGlhbHM6IGZyb21Ob2RlUHJvdmlkZXJDaGFpbigpLFxyXG4gICAgICByZWdpb246IHRoaXMuX2NvbmZpZy5yZWdpb24sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgUzNMb2FkZXIoczM6Ly8ke3RoaXMuX2NvbmZpZy5idWNrZXR9LyR7dGhpcy5fY29uZmlnLmtleX0pYDtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGlzIGxvYWRlciBpcyBhdmFpbGFibGUgYnkgdmVyaWZ5aW5nIEFXUyBjcmVkZW50aWFscy5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byB0cnVlIGlmIEFXUyBjcmVkZW50aWFscyBhcmUgYXZhaWxhYmxlXHJcbiAgICovXHJcbiAgYXN5bmMgaXNBdmFpbGFibGUoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCB0aGlzLl9jbGllbnQuY29uZmlnLmNyZWRlbnRpYWxzKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgY29uZmlndXJhdGlvbiBmcm9tIFMzLlxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmZpZ3VyYXRpb24ga2V5LXZhbHVlIHBhaXJzXHJcbiAgICogQHRocm93cyBBV1NTZXJ2aWNlRXJyb3IgaWYgUzMgb3BlcmF0aW9uIGZhaWxzXHJcbiAgICogQHRocm93cyBDb25maWd1cmF0aW9uTG9hZEVycm9yIGlmIGNvbnRlbnQgY2Fubm90IGJlIHBhcnNlZFxyXG4gICAqL1xyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBHZXRPYmplY3RDb21tYW5kKHtcclxuICAgICAgICBCdWNrZXQ6IHRoaXMuX2NvbmZpZy5idWNrZXQsXHJcbiAgICAgICAgS2V5OiB0aGlzLl9jb25maWcua2V5LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5fY2xpZW50LnNlbmQoY29tbWFuZCk7XHJcblxyXG4gICAgICBpZiAoIXJlc3BvbnNlLkJvZHkpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZXNwb25zZS5Cb2R5LnRyYW5zZm9ybVRvU3RyaW5nKCk7XHJcblxyXG4gICAgICBpZiAoIWNvbnRlbnQgfHwgY29udGVudC50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5wYXJzZUNvbnRlbnQoY29udGVudCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBDb25maWd1cmF0aW9uTG9hZEVycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdOb1N1Y2hLZXknIHx8IGVycm9yLm5hbWUgPT09ICdOb1N1Y2hCdWNrZXQnKSB7XHJcbiAgICAgICAgICAvLyBPYmplY3Qgb3IgYnVja2V0IGRvZXNuJ3QgZXhpc3QgLSByZXR1cm4gZW1wdHkgY29uZmlnXHJcbiAgICAgICAgICByZXR1cm4ge307XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ0FjY2Vzc0RlbmllZCcpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBBV1NTZXJ2aWNlRXJyb3IoXHJcbiAgICAgICAgICAgIGBBY2Nlc3MgZGVuaWVkIHdoZW4gcmV0cmlldmluZyBzMzovLyR7dGhpcy5fY29uZmlnLmJ1Y2tldH0vJHt0aGlzLl9jb25maWcua2V5fS4gQ2hlY2sgQVdTIGNyZWRlbnRpYWxzIGFuZCBwZXJtaXNzaW9ucy5gLFxyXG4gICAgICAgICAgICAnUzMnLFxyXG4gICAgICAgICAgICAnR2V0T2JqZWN0JyxcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhyb3cgbmV3IEFXU1NlcnZpY2VFcnJvcihcclxuICAgICAgICBgRmFpbGVkIHRvIHJldHJpZXZlIHMzOi8vJHt0aGlzLl9jb25maWcuYnVja2V0fS8ke3RoaXMuX2NvbmZpZy5rZXl9OiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gLFxyXG4gICAgICAgICdTMycsXHJcbiAgICAgICAgJ0dldE9iamVjdCcsXHJcbiAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogdW5kZWZpbmVkLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2UgY29udGVudCBiYXNlZCBvbiBmb3JtYXQgc2V0dGluZyBvciBhdXRvLWRldGVjdGlvbi5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcGFyc2VDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcclxuICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuX2NvbmZpZy5mb3JtYXQgPT09ICdhdXRvJyA/IHRoaXMuZGV0ZWN0Rm9ybWF0KGNvbnRlbnQpIDogdGhpcy5fY29uZmlnLmZvcm1hdDtcclxuXHJcbiAgICBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucGFyc2VKc29uKGNvbnRlbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIEVudkZpbGVQYXJzZXIucGFyc2UoY29udGVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlY3QgY29udGVudCBmb3JtYXQgYmFzZWQgb24gc3RydWN0dXJlLlxyXG4gICAqIEpTT04gY29udGVudCBzdGFydHMgd2l0aCAneycgYWZ0ZXIgdHJpbW1pbmcgd2hpdGVzcGFjZS5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGV0ZWN0Rm9ybWF0KGNvbnRlbnQ6IHN0cmluZyk6ICdqc29uJyB8ICdlbnYnIHtcclxuICAgIGNvbnN0IHRyaW1tZWQgPSBjb250ZW50LnRyaW0oKTtcclxuICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSkge1xyXG4gICAgICByZXR1cm4gJ2pzb24nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICdlbnYnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2UgSlNPTiBjb250ZW50LlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBwYXJzZUpzb24oY29udGVudDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50KTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgcGFyc2VkID09PSAnb2JqZWN0JyAmJiBwYXJzZWQgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xyXG4gICAgICAgIHJldHVybiBwYXJzZWQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIElmIG5vdCBhbiBvYmplY3QsIHdyYXAgaXRcclxuICAgICAgcmV0dXJuIHsgQ09ORklHX1ZBTFVFOiBwYXJzZWQgfTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHRocm93IG5ldyBDb25maWd1cmF0aW9uTG9hZEVycm9yKFxyXG4gICAgICAgIGBGYWlsZWQgdG8gcGFyc2UgSlNPTiBmcm9tIHMzOi8vJHt0aGlzLl9jb25maWcuYnVja2V0fS8ke3RoaXMuX2NvbmZpZy5rZXl9OiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gLFxyXG4gICAgICAgIHRoaXMuZ2V0TmFtZSgpLFxyXG4gICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IHVuZGVmaW5lZCxcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29uZmlnLWF3cy9zcmMvbG9hZGVycy9zMy5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQWdFO0FBQ2hFLHdFQUFzRTtBQUd0RSw4RUFBaUU7QUFDakUsaURBQTZFO0FBRTdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFhLFFBQVE7SUFDbkIsZ0JBQWdCO0lBQ0csT0FBTyxDQUEyQjtJQUNyRCxnQkFBZ0I7SUFDRyxPQUFPLENBQVc7SUFFckMsWUFBWSxNQUFzQjtRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztZQUNmLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksV0FBVztZQUNqRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNO1NBQ2hDLENBQUM7UUFFRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksb0JBQVEsQ0FBQztZQUMxQixXQUFXLEVBQUUsSUFBQSw0Q0FBcUIsR0FBRTtZQUNwQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1NBQzVCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNyRSxDQUFDO0lBR0Q7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFdBQVc7UUFDZixJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1FB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LENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFNBQVMsQ0FBQyxPQUFlO1FBQ2pDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFbkMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDNUUsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUVELDRCQUE0QjtZQUM1QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLGlDQUFzQixDQUM5QixrQ0FBa0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQ3RJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFDZCxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDM0MsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUEvSUQsNEJBK0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2V0T2JqZWN0Q29tbWFuZCwgUzNDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtczMnO1xyXG5pbXBvcnQgeyBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4gfSBmcm9tICdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVycyc7XHJcbmltcG9ydCB0eXBlIHsgQ29uZmlnTG9hZGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWctbG9hZGVyLmludGVyZmFjZS5qcyc7XHJcbmltcG9ydCB0eXBlIHsgUzNMb2FkZXJDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3MzLWxvYWRlci5pbnRlcmZhY2UuanMnO1xyXG5pbXBvcnQgeyBFbnZGaWxlUGFyc2VyIH0gZnJvbSAnLi4vdXRpbHMvZW52LWZpbGUtcGFyc2VyLnV0aWwuanMnO1xyXG5pbXBvcnQgeyBBV1NTZXJ2aWNlRXJyb3IsIENvbmZpZ3VyYXRpb25Mb2FkRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvaW5kZXguanMnO1xyXG5cclxuLyoqXHJcbiAqIExvYWRlciB0aGF0IHJlYWRzIGNvbmZpZ3VyYXRpb24gZnJvbSBTMyBidWNrZXRzLlxyXG4gKiBTdXBwb3J0cyBKU09OIGFuZCAuZW52IGZpbGUgZm9ybWF0cyB3aXRoIGF1dG8tZGV0ZWN0aW9uLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIC8vIExvYWQgSlNPTiBjb25maWcgZnJvbSBTM1xyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgUzNMb2FkZXIoe1xyXG4gKiAgIGJ1Y2tldDogJ215LWNvbmZpZy1idWNrZXQnLFxyXG4gKiAgIGtleTogJ2NvbmZpZy9hcHAuanNvbicsXHJcbiAqICAgZm9ybWF0OiAnanNvbidcclxuICogfSk7XHJcbiAqXHJcbiAqIC8vIExvYWQgLmVudiBmaWxlIGZyb20gUzMgd2l0aCBhdXRvLWRldGVjdGlvblxyXG4gKiBjb25zdCBsb2FkZXIgPSBuZXcgUzNMb2FkZXIoe1xyXG4gKiAgIGJ1Y2tldDogJ215LWNvbmZpZy1idWNrZXQnLFxyXG4gKiAgIGtleTogJ2NvbmZpZy8uZW52J1xyXG4gKiB9KTtcclxuICogYGBgXHJcbiAqXHJcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvdXNlLWVudmlyb25tZW50LWZpbGUuaHRtbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFMzTG9hZGVyIGltcGxlbWVudHMgQ29uZmlnTG9hZGVyIHtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jb25maWc6IFJlcXVpcmVkPFMzTG9hZGVyQ29uZmlnPjtcclxuICAvKiogQGludGVybmFsICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jbGllbnQ6IFMzQ2xpZW50O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFMzTG9hZGVyQ29uZmlnKSB7XHJcbiAgICB0aGlzLl9jb25maWcgPSB7XHJcbiAgICAgIGJ1Y2tldDogY29uZmlnLmJ1Y2tldCxcclxuICAgICAga2V5OiBjb25maWcua2V5LFxyXG4gICAgICByZWdpb246IGNvbmZpZy5yZWdpb24gfHwgcHJvY2Vzcy5lbnZbJ0FXU19SRUdJT04nXSB8fCAndXMtZWFzdC0xJyxcclxuICAgICAgZm9ybWF0OiBjb25maWcuZm9ybWF0IHx8ICdhdXRvJyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5fY2xpZW50ID0gbmV3IFMzQ2xpZW50KHtcclxuICAgICAgY3JlZGVudGlhbHM6IGZyb21Ob2RlUHJvdmlkZXJDaGFpbigpLFxyXG4gICAgICByZWdpb246IHRoaXMuX2NvbmZpZy5yZWdpb24sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgUzNMb2FkZXIoczM6Ly8ke3RoaXMuX2NvbmZpZy5idWNrZXR9LyR7dGhpcy5fY29uZmlnLmtleX0pYDtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGlzIGxvYWRlciBpcyBhdmFpbGFibGUgYnkgdmVyaWZ5aW5nIEFXUyBjcmVkZW50aWFscy5cclxuICAgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byB0cnVlIGlmIEFXUyBjcmVkZW50aWFscyBhcmUgYXZhaWxhYmxlXHJcbiAgICovXHJcbiAgYXN5bmMgaXNBdmFpbGFibGUoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCB0aGlzLl9jbGllbnQuY29uZmlnLmNyZWRlbnRpYWxzKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgY29uZmlndXJhdGlvbiBmcm9tIFMzLlxyXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmZpZ3VyYXRpb24ga2V5LXZhbHVlIHBhaXJzXHJcbiAgICogQHRocm93cyBBV1NTZXJ2aWNlRXJyb3IgaWYgUzMgb3BlcmF0aW9uIGZhaWxzXHJcbiAgICogQHRocm93cyBDb25maWd1cmF0aW9uTG9hZEVycm9yIGlmIGNvbnRlbnQgY2Fubm90IGJlIHBhcnNlZFxyXG4gICAqL1xyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBHZXRPYmplY3RDb21tYW5kKHtcclxuICAgICAgICBCdWNrZXQ6IHRoaXMuX2NvbmZpZy5idWNrZXQsXHJcbiAgICAgICAgS2V5OiB0aGlzLl9jb25maWcua2V5LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5fY2xpZW50LnNlbmQoY29tbWFuZCk7XHJcblxyXG4gICAgICBpZiAoIXJlc3BvbnNlLkJvZHkpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZXNwb25zZS5Cb2R5LnRyYW5zZm9ybVRvU3RyaW5nKCk7XHJcblxyXG4gICAgICBpZiAoIWNvbnRlbnQgfHwgY29udGVudC50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5wYXJzZUNvbnRlbnQoY29udGVudCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBDb25maWd1cmF0aW9uTG9hZEVycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdOb1N1Y2hLZXknIHx8IGVycm9yLm5hbWUgPT09ICdOb1N1Y2hCdWNrZXQnKSB7XHJcbiAgICAgICAgICAvLyBPYmplY3Qgb3IgYnVja2V0IGRvZXNuJ3QgZXhpc3QgLSByZXR1cm4gZW1wdHkgY29uZmlnXHJcbiAgICAgICAgICByZXR1cm4ge307XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ0FjY2Vzc0RlbmllZCcpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBBV1NTZXJ2aWNlRXJyb3IoXHJcbiAgICAgICAgICAgIGBBY2Nlc3MgZGVuaWVkIHdoZW4gcmV0cmlldmluZyBzMzovLyR7dGhpcy5fY29uZmlnLmJ1Y2tldH0vJHt0aGlzLl9jb25maWcua2V5fS4gQ2hlY2sgQVdTIGNyZWRlbnRpYWxzIGFuZCBwZXJtaXNzaW9ucy5gLFxyXG4gICAgICAgICAgICAnUzMnLFxyXG4gICAgICAgICAgICAnR2V0T2JqZWN0JyxcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhyb3cgbmV3IEFXU1NlcnZpY2VFcnJvcihcclxuICAgICAgICBgRmFpbGVkIHRvIHJldHJpZXZlIHMzOi8vJHt0aGlzLl9jb25maWcuYnVja2V0fS8ke3RoaXMuX2NvbmZpZy5rZXl9OiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gLFxyXG4gICAgICAgICdTMycsXHJcbiAgICAgICAgJ0dldE9iamVjdCcsXHJcbiAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogdW5kZWZpbmVkLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2UgY29udGVudCBiYXNlZCBvbiBmb3JtYXQgc2V0dGluZyBvciBhdXRvLWRldGVjdGlvbi5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcGFyc2VDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcclxuICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuX2NvbmZpZy5mb3JtYXQgPT09ICdhdXRvJyA/IHRoaXMuZGV0ZWN0Rm9ybWF0KGNvbnRlbnQpIDogdGhpcy5fY29uZmlnLmZvcm1hdDtcclxuXHJcbiAgICBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucGFyc2VKc29uKGNvbnRlbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIEVudkZpbGVQYXJzZXIucGFyc2UoY29udGVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlY3QgY29udGVudCBmb3JtYXQgYmFzZWQgb24gc3RydWN0dXJlLlxyXG4gICAqIEpTT04gY29udGVudCBzdGFydHMgd2l0aCAneycgYWZ0ZXIgdHJpbW1pbmcgd2hpdGVzcGFjZS5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGV0ZWN0Rm9ybWF0KGNvbnRlbnQ6IHN0cmluZyk6ICdqc29uJyB8ICdlbnYnIHtcclxuICAgIGNvbnN0IHRyaW1tZWQgPSBjb250ZW50LnRyaW0oKTtcclxuICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSkge1xyXG4gICAgICByZXR1cm4gJ2pzb24nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICdlbnYnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2UgSlNPTiBjb250ZW50LlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBwYXJzZUpzb24oY29udGVudDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShjb250ZW50KTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgcGFyc2VkID09PSAnb2JqZWN0JyAmJiBwYXJzZWQgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xyXG4gICAgICAgIHJldHVybiBwYXJzZWQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIElmIG5vdCBhbiBvYmplY3QsIHdyYXAgaXRcclxuICAgICAgcmV0dXJuIHsgQ09ORklHX1ZBTFVFOiBwYXJzZWQgfTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHRocm93IG5ldyBDb25maWd1cmF0aW9uTG9hZEVycm9yKFxyXG4gICAgICAgIGBGYWlsZWQgdG8gcGFyc2UgSlNPTiBmcm9tIHMzOi8vJHt0aGlzLl9jb25maWcuYnVja2V0fS8ke3RoaXMuX2NvbmZpZy5rZXl9OiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gLFxyXG4gICAgICAgIHRoaXMuZ2V0TmFtZSgpLFxyXG4gICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IHVuZGVmaW5lZCxcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|