@dyanet/nestjs-config-aws 1.0.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +213 -1013
- package/dist/cjs/config-aws/src/config-manager.js +366 -0
- package/dist/cjs/config-aws/src/errors/index.js +77 -0
- package/dist/cjs/config-aws/src/index.js +37 -0
- package/dist/cjs/config-aws/src/interfaces/config-loader.interface.js +3 -0
- package/dist/cjs/config-aws/src/interfaces/config-manager.interface.js +3 -0
- package/dist/cjs/config-aws/src/interfaces/env-file-loader.interface.js +3 -0
- package/dist/cjs/config-aws/src/interfaces/environment-loader.interface.js +3 -0
- package/dist/cjs/config-aws/src/interfaces/s3-loader.interface.js +3 -0
- package/dist/cjs/config-aws/src/interfaces/secrets-manager-loader.interface.js +3 -0
- package/dist/cjs/config-aws/src/interfaces/ssm-parameter-store-loader.interface.js +3 -0
- package/dist/cjs/config-aws/src/loaders/env-file.loader.js +169 -0
- package/dist/cjs/config-aws/src/loaders/environment.loader.js +85 -0
- package/dist/cjs/config-aws/src/loaders/s3.loader.js +145 -0
- package/dist/cjs/config-aws/src/loaders/secrets-manager.loader.js +169 -0
- package/dist/cjs/config-aws/src/loaders/ssm-parameter-store.loader.js +199 -0
- package/dist/cjs/config-aws/src/utils/env-file-parser.util.js +98 -0
- package/dist/cjs/config-aws/src/utils/validation.util.js +116 -0
- package/dist/cjs/nestjs-config-aws/src/config.module.js +175 -0
- package/dist/cjs/nestjs-config-aws/src/index.js +61 -0
- package/dist/cjs/{integration → nestjs-config-aws/src/integration}/index.js +1 -1
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/configuration-factory.interface.js +3 -0
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/configuration-source.interface.js +3 -0
- package/dist/cjs/{integration → nestjs-config-aws/src/integration}/interfaces/index.js +1 -1
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/integration-options.interface.js +3 -0
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/integration-state.interface.js +3 -0
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/nestjs-config-compatibility.interface.js +73 -0
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/nestjs-config-integration.interface.js +3 -0
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/typed-configuration.interface.js +4 -0
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/utility-types.interface.js +52 -0
- package/dist/cjs/nestjs-config-aws/src/integration/nestjs-config-integration.module.js +124 -0
- package/dist/cjs/nestjs-config-aws/src/integration/providers/aws-configuration-loader.service.js +592 -0
- package/dist/cjs/nestjs-config-aws/src/integration/providers/configuration-factory.provider.js +385 -0
- package/dist/cjs/{integration → nestjs-config-aws/src/integration}/providers/index.js +1 -1
- package/dist/cjs/nestjs-config-aws/src/integration/services/async-config-helper.service.js +366 -0
- package/dist/cjs/nestjs-config-aws/src/integration/services/error-handler.service.js +267 -0
- package/dist/cjs/nestjs-config-aws/src/integration/services/factory-registration.service.js +517 -0
- package/dist/cjs/{integration → nestjs-config-aws/src/integration}/services/index.js +1 -1
- package/dist/cjs/nestjs-config-aws/src/integration/services/integration-state.service.js +81 -0
- package/dist/cjs/nestjs-config-aws/src/integration/services/namespace-handler.service.js +465 -0
- package/dist/cjs/nestjs-config-aws/src/integration/services/nestjs-config-integration.service.js +318 -0
- package/dist/cjs/nestjs-config-aws/src/integration/services/precedence-handler.service.js +292 -0
- package/dist/cjs/nestjs-config-aws/src/integration/services/validation-integration.service.js +595 -0
- package/dist/cjs/nestjs-config-aws/src/integration/utils/config-integration.util.js +283 -0
- package/dist/cjs/{integration → nestjs-config-aws/src/integration}/utils/index.js +1 -1
- package/dist/cjs/nestjs-config-aws/src/interfaces/config-service.interface.js +11 -0
- package/dist/cjs/nestjs-config-aws/src/interfaces/default-schema.interface.js +63 -0
- package/dist/cjs/nestjs-config-aws/src/interfaces/index.js +30 -0
- package/dist/cjs/nestjs-config-aws/src/interfaces/module-options.interface.js +3 -0
- package/dist/cjs/nestjs-config-aws/src/services/config.service.js +142 -0
- package/dist/esm/config-aws/src/config-manager.js +362 -0
- package/dist/esm/config-aws/src/errors/index.js +69 -0
- package/dist/esm/config-aws/src/index.js +21 -0
- package/dist/esm/config-aws/src/interfaces/config-loader.interface.js +2 -0
- package/dist/esm/config-aws/src/interfaces/config-manager.interface.js +2 -0
- package/dist/esm/config-aws/src/interfaces/env-file-loader.interface.js +2 -0
- package/dist/esm/config-aws/src/interfaces/environment-loader.interface.js +2 -0
- package/dist/esm/config-aws/src/interfaces/s3-loader.interface.js +2 -0
- package/dist/esm/config-aws/src/interfaces/secrets-manager-loader.interface.js +2 -0
- package/dist/esm/config-aws/src/interfaces/ssm-parameter-store-loader.interface.js +2 -0
- package/dist/esm/config-aws/src/loaders/env-file.loader.js +132 -0
- package/dist/esm/config-aws/src/loaders/environment.loader.js +81 -0
- package/dist/esm/config-aws/src/loaders/s3.loader.js +141 -0
- package/dist/esm/config-aws/src/loaders/secrets-manager.loader.js +165 -0
- package/dist/esm/config-aws/src/loaders/ssm-parameter-store.loader.js +195 -0
- package/dist/esm/config-aws/src/utils/env-file-parser.util.js +94 -0
- package/dist/esm/config-aws/src/utils/validation.util.js +112 -0
- package/dist/esm/nestjs-config-aws/src/config.module.js +172 -0
- package/dist/esm/nestjs-config-aws/src/index.js +23 -0
- package/dist/esm/nestjs-config-aws/src/integration/index.js +7 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/configuration-factory.interface.js +2 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/configuration-source.interface.js +2 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/index.js +10 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/integration-options.interface.js +2 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/integration-state.interface.js +2 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/nestjs-config-compatibility.interface.js +64 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/nestjs-config-integration.interface.js +2 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/typed-configuration.interface.js +3 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/utility-types.interface.js +44 -0
- package/dist/esm/nestjs-config-aws/src/integration/nestjs-config-integration.module.js +121 -0
- package/dist/esm/nestjs-config-aws/src/integration/providers/aws-configuration-loader.service.js +589 -0
- package/dist/esm/nestjs-config-aws/src/integration/providers/configuration-factory.provider.js +382 -0
- package/dist/esm/nestjs-config-aws/src/integration/providers/index.js +4 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/async-config-helper.service.js +363 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/error-handler.service.js +264 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/factory-registration.service.js +514 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/index.js +10 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/integration-state.service.js +78 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/namespace-handler.service.js +462 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/nestjs-config-integration.service.js +315 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/precedence-handler.service.js +289 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/validation-integration.service.js +589 -0
- package/dist/esm/nestjs-config-aws/src/integration/utils/config-integration.util.js +240 -0
- package/dist/esm/nestjs-config-aws/src/integration/utils/index.js +3 -0
- package/dist/esm/nestjs-config-aws/src/interfaces/config-service.interface.js +7 -0
- package/dist/esm/nestjs-config-aws/src/interfaces/default-schema.interface.js +59 -0
- package/dist/esm/nestjs-config-aws/src/interfaces/index.js +8 -0
- package/dist/esm/nestjs-config-aws/src/interfaces/module-options.interface.js +2 -0
- package/dist/esm/nestjs-config-aws/src/services/config.service.js +139 -0
- package/dist/types/config-aws/src/config-manager.d.ts +119 -0
- package/dist/types/config-aws/src/config-manager.d.ts.map +1 -0
- package/dist/types/config-aws/src/errors/index.d.ts +43 -0
- package/dist/types/config-aws/src/errors/index.d.ts.map +1 -0
- package/dist/types/config-aws/src/index.d.ts +24 -0
- package/dist/types/config-aws/src/index.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/config-loader.interface.d.ts +33 -0
- package/dist/types/config-aws/src/interfaces/config-loader.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/config-manager.interface.d.ts +86 -0
- package/dist/types/config-aws/src/interfaces/config-manager.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/env-file-loader.interface.d.ts +12 -0
- package/dist/types/config-aws/src/interfaces/env-file-loader.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/environment-loader.interface.d.ts +10 -0
- package/dist/types/config-aws/src/interfaces/environment-loader.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/s3-loader.interface.d.ts +14 -0
- package/dist/types/config-aws/src/interfaces/s3-loader.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/secrets-manager-loader.interface.d.ts +12 -0
- package/dist/types/config-aws/src/interfaces/secrets-manager-loader.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/ssm-parameter-store-loader.interface.d.ts +14 -0
- package/dist/types/config-aws/src/interfaces/ssm-parameter-store-loader.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/loaders/env-file.loader.d.ts +69 -0
- package/dist/types/config-aws/src/loaders/env-file.loader.d.ts.map +1 -0
- package/dist/types/config-aws/src/loaders/environment.loader.d.ts +46 -0
- package/dist/types/config-aws/src/loaders/environment.loader.d.ts.map +1 -0
- package/dist/types/config-aws/src/loaders/s3.loader.d.ts +62 -0
- package/dist/types/config-aws/src/loaders/s3.loader.d.ts.map +1 -0
- package/dist/types/config-aws/src/loaders/secrets-manager.loader.d.ts +68 -0
- package/dist/types/config-aws/src/loaders/secrets-manager.loader.d.ts.map +1 -0
- package/dist/types/config-aws/src/loaders/ssm-parameter-store.loader.d.ts +78 -0
- package/dist/types/config-aws/src/loaders/ssm-parameter-store.loader.d.ts.map +1 -0
- package/dist/types/config-aws/src/utils/env-file-parser.util.d.ts +45 -0
- package/dist/types/config-aws/src/utils/env-file-parser.util.d.ts.map +1 -0
- package/dist/types/{utils → config-aws/src/utils}/validation.util.d.ts +10 -10
- package/dist/types/config-aws/src/utils/validation.util.d.ts.map +1 -0
- package/dist/types/{config.module.d.ts → nestjs-config-aws/src/config.module.d.ts} +1 -0
- package/dist/types/nestjs-config-aws/src/config.module.d.ts.map +1 -0
- package/dist/types/{index.d.ts → nestjs-config-aws/src/index.d.ts} +2 -4
- package/dist/types/nestjs-config-aws/src/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/configuration-factory.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/configuration-source.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/integration-options.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/integration-state.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/nestjs-config-compatibility.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/nestjs-config-integration.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/typed-configuration.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/utility-types.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/nestjs-config-integration.module.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/providers/aws-configuration-loader.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/providers/configuration-factory.provider.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/providers/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/async-config-helper.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/error-handler.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/factory-registration.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/integration-state.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/namespace-handler.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/nestjs-config-integration.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/precedence-handler.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/validation-integration.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/utils/config-integration.util.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/utils/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/interfaces/config-service.interface.d.ts.map +1 -0
- package/dist/types/{interfaces → nestjs-config-aws/src/interfaces}/default-schema.interface.d.ts +28 -28
- package/dist/types/nestjs-config-aws/src/interfaces/default-schema.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/interfaces/index.d.ts +5 -0
- package/dist/types/nestjs-config-aws/src/interfaces/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/interfaces/module-options.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/services/config.service.d.ts +88 -0
- package/dist/types/nestjs-config-aws/src/services/config.service.d.ts.map +1 -0
- package/package.json +20 -27
- package/LICENSE +0 -21
- package/dist/cjs/config.module.js +0 -178
- package/dist/cjs/config.module.js.map +0 -1
- package/dist/cjs/index.js +0 -47
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/integration/index.js.map +0 -1
- package/dist/cjs/integration/interfaces/configuration-factory.interface.js +0 -3
- package/dist/cjs/integration/interfaces/configuration-factory.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/configuration-source.interface.js +0 -3
- package/dist/cjs/integration/interfaces/configuration-source.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/index.js.map +0 -1
- package/dist/cjs/integration/interfaces/integration-options.interface.js +0 -3
- package/dist/cjs/integration/interfaces/integration-options.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/integration-state.interface.js +0 -3
- package/dist/cjs/integration/interfaces/integration-state.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/nestjs-config-compatibility.interface.js +0 -73
- package/dist/cjs/integration/interfaces/nestjs-config-compatibility.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/nestjs-config-integration.interface.js +0 -3
- package/dist/cjs/integration/interfaces/nestjs-config-integration.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/typed-configuration.interface.js +0 -4
- package/dist/cjs/integration/interfaces/typed-configuration.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/utility-types.interface.js +0 -52
- package/dist/cjs/integration/interfaces/utility-types.interface.js.map +0 -1
- package/dist/cjs/integration/nestjs-config-integration.module.js +0 -124
- package/dist/cjs/integration/nestjs-config-integration.module.js.map +0 -1
- package/dist/cjs/integration/providers/aws-configuration-loader.service.js +0 -591
- package/dist/cjs/integration/providers/aws-configuration-loader.service.js.map +0 -1
- package/dist/cjs/integration/providers/configuration-factory.provider.js +0 -383
- package/dist/cjs/integration/providers/configuration-factory.provider.js.map +0 -1
- package/dist/cjs/integration/providers/index.js.map +0 -1
- package/dist/cjs/integration/services/async-config-helper.service.js +0 -356
- package/dist/cjs/integration/services/async-config-helper.service.js.map +0 -1
- package/dist/cjs/integration/services/error-handler.service.js +0 -265
- package/dist/cjs/integration/services/error-handler.service.js.map +0 -1
- package/dist/cjs/integration/services/factory-registration.service.js +0 -512
- package/dist/cjs/integration/services/factory-registration.service.js.map +0 -1
- package/dist/cjs/integration/services/index.js.map +0 -1
- package/dist/cjs/integration/services/integration-state.service.js +0 -83
- package/dist/cjs/integration/services/integration-state.service.js.map +0 -1
- package/dist/cjs/integration/services/namespace-handler.service.js +0 -467
- package/dist/cjs/integration/services/namespace-handler.service.js.map +0 -1
- package/dist/cjs/integration/services/nestjs-config-integration.service.js +0 -316
- package/dist/cjs/integration/services/nestjs-config-integration.service.js.map +0 -1
- package/dist/cjs/integration/services/precedence-handler.service.js +0 -294
- package/dist/cjs/integration/services/precedence-handler.service.js.map +0 -1
- package/dist/cjs/integration/services/validation-integration.service.js +0 -591
- package/dist/cjs/integration/services/validation-integration.service.js.map +0 -1
- package/dist/cjs/integration/utils/config-integration.util.js +0 -283
- package/dist/cjs/integration/utils/config-integration.util.js.map +0 -1
- package/dist/cjs/integration/utils/index.js.map +0 -1
- package/dist/cjs/interfaces/config-loader.interface.js +0 -3
- package/dist/cjs/interfaces/config-loader.interface.js.map +0 -1
- package/dist/cjs/interfaces/config-service.interface.js +0 -11
- package/dist/cjs/interfaces/config-service.interface.js.map +0 -1
- package/dist/cjs/interfaces/default-schema.interface.js +0 -63
- package/dist/cjs/interfaces/default-schema.interface.js.map +0 -1
- package/dist/cjs/interfaces/errors.interface.js +0 -77
- package/dist/cjs/interfaces/errors.interface.js.map +0 -1
- package/dist/cjs/interfaces/index.js +0 -25
- package/dist/cjs/interfaces/index.js.map +0 -1
- package/dist/cjs/interfaces/module-options.interface.js +0 -3
- package/dist/cjs/interfaces/module-options.interface.js.map +0 -1
- package/dist/cjs/loaders/environment.loader.js +0 -59
- package/dist/cjs/loaders/environment.loader.js.map +0 -1
- package/dist/cjs/loaders/secrets-manager.loader.js +0 -122
- package/dist/cjs/loaders/secrets-manager.loader.js.map +0 -1
- package/dist/cjs/loaders/ssm-parameter-store.loader.js +0 -146
- package/dist/cjs/loaders/ssm-parameter-store.loader.js.map +0 -1
- package/dist/cjs/services/config.service.js +0 -297
- package/dist/cjs/services/config.service.js.map +0 -1
- package/dist/cjs/utils/validation.util.js +0 -114
- package/dist/cjs/utils/validation.util.js.map +0 -1
- package/dist/esm/config.module.js +0 -175
- package/dist/esm/config.module.js.map +0 -1
- package/dist/esm/index.js +0 -18
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/integration/index.js +0 -7
- package/dist/esm/integration/index.js.map +0 -1
- package/dist/esm/integration/interfaces/configuration-factory.interface.js +0 -2
- package/dist/esm/integration/interfaces/configuration-factory.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/configuration-source.interface.js +0 -2
- package/dist/esm/integration/interfaces/configuration-source.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/index.js +0 -10
- package/dist/esm/integration/interfaces/index.js.map +0 -1
- package/dist/esm/integration/interfaces/integration-options.interface.js +0 -2
- package/dist/esm/integration/interfaces/integration-options.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/integration-state.interface.js +0 -2
- package/dist/esm/integration/interfaces/integration-state.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/nestjs-config-compatibility.interface.js +0 -64
- package/dist/esm/integration/interfaces/nestjs-config-compatibility.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/nestjs-config-integration.interface.js +0 -2
- package/dist/esm/integration/interfaces/nestjs-config-integration.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/typed-configuration.interface.js +0 -3
- package/dist/esm/integration/interfaces/typed-configuration.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/utility-types.interface.js +0 -44
- package/dist/esm/integration/interfaces/utility-types.interface.js.map +0 -1
- package/dist/esm/integration/nestjs-config-integration.module.js +0 -121
- package/dist/esm/integration/nestjs-config-integration.module.js.map +0 -1
- package/dist/esm/integration/providers/aws-configuration-loader.service.js +0 -588
- package/dist/esm/integration/providers/aws-configuration-loader.service.js.map +0 -1
- package/dist/esm/integration/providers/configuration-factory.provider.js +0 -380
- package/dist/esm/integration/providers/configuration-factory.provider.js.map +0 -1
- package/dist/esm/integration/providers/index.js +0 -4
- package/dist/esm/integration/providers/index.js.map +0 -1
- package/dist/esm/integration/services/async-config-helper.service.js +0 -353
- package/dist/esm/integration/services/async-config-helper.service.js.map +0 -1
- package/dist/esm/integration/services/error-handler.service.js +0 -262
- package/dist/esm/integration/services/error-handler.service.js.map +0 -1
- package/dist/esm/integration/services/factory-registration.service.js +0 -509
- package/dist/esm/integration/services/factory-registration.service.js.map +0 -1
- package/dist/esm/integration/services/index.js +0 -10
- package/dist/esm/integration/services/index.js.map +0 -1
- package/dist/esm/integration/services/integration-state.service.js +0 -80
- package/dist/esm/integration/services/integration-state.service.js.map +0 -1
- package/dist/esm/integration/services/namespace-handler.service.js +0 -464
- package/dist/esm/integration/services/namespace-handler.service.js.map +0 -1
- package/dist/esm/integration/services/nestjs-config-integration.service.js +0 -313
- package/dist/esm/integration/services/nestjs-config-integration.service.js.map +0 -1
- package/dist/esm/integration/services/precedence-handler.service.js +0 -291
- package/dist/esm/integration/services/precedence-handler.service.js.map +0 -1
- package/dist/esm/integration/services/validation-integration.service.js +0 -585
- package/dist/esm/integration/services/validation-integration.service.js.map +0 -1
- package/dist/esm/integration/utils/config-integration.util.js +0 -240
- package/dist/esm/integration/utils/config-integration.util.js.map +0 -1
- package/dist/esm/integration/utils/index.js +0 -3
- package/dist/esm/integration/utils/index.js.map +0 -1
- package/dist/esm/interfaces/config-loader.interface.js +0 -2
- package/dist/esm/interfaces/config-loader.interface.js.map +0 -1
- package/dist/esm/interfaces/config-service.interface.js +0 -7
- package/dist/esm/interfaces/config-service.interface.js.map +0 -1
- package/dist/esm/interfaces/default-schema.interface.js +0 -59
- package/dist/esm/interfaces/default-schema.interface.js.map +0 -1
- package/dist/esm/interfaces/errors.interface.js +0 -69
- package/dist/esm/interfaces/errors.interface.js.map +0 -1
- package/dist/esm/interfaces/index.js +0 -9
- package/dist/esm/interfaces/index.js.map +0 -1
- package/dist/esm/interfaces/module-options.interface.js +0 -2
- package/dist/esm/interfaces/module-options.interface.js.map +0 -1
- package/dist/esm/loaders/environment.loader.js +0 -55
- package/dist/esm/loaders/environment.loader.js.map +0 -1
- package/dist/esm/loaders/secrets-manager.loader.js +0 -118
- package/dist/esm/loaders/secrets-manager.loader.js.map +0 -1
- package/dist/esm/loaders/ssm-parameter-store.loader.js +0 -142
- package/dist/esm/loaders/ssm-parameter-store.loader.js.map +0 -1
- package/dist/esm/services/config.service.js +0 -261
- package/dist/esm/services/config.service.js.map +0 -1
- package/dist/esm/utils/validation.util.js +0 -110
- package/dist/esm/utils/validation.util.js.map +0 -1
- package/dist/types/config.module.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/integration/index.d.ts.map +0 -1
- package/dist/types/integration/interfaces/configuration-factory.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/configuration-source.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/index.d.ts.map +0 -1
- package/dist/types/integration/interfaces/integration-options.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/integration-state.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/nestjs-config-compatibility.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/nestjs-config-integration.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/typed-configuration.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/utility-types.interface.d.ts.map +0 -1
- package/dist/types/integration/nestjs-config-integration.module.d.ts.map +0 -1
- package/dist/types/integration/providers/aws-configuration-loader.service.d.ts.map +0 -1
- package/dist/types/integration/providers/configuration-factory.provider.d.ts.map +0 -1
- package/dist/types/integration/providers/index.d.ts.map +0 -1
- package/dist/types/integration/services/async-config-helper.service.d.ts.map +0 -1
- package/dist/types/integration/services/error-handler.service.d.ts.map +0 -1
- package/dist/types/integration/services/factory-registration.service.d.ts.map +0 -1
- package/dist/types/integration/services/index.d.ts.map +0 -1
- package/dist/types/integration/services/integration-state.service.d.ts.map +0 -1
- package/dist/types/integration/services/namespace-handler.service.d.ts.map +0 -1
- package/dist/types/integration/services/nestjs-config-integration.service.d.ts.map +0 -1
- package/dist/types/integration/services/precedence-handler.service.d.ts.map +0 -1
- package/dist/types/integration/services/validation-integration.service.d.ts.map +0 -1
- package/dist/types/integration/utils/config-integration.util.d.ts.map +0 -1
- package/dist/types/integration/utils/index.d.ts.map +0 -1
- package/dist/types/interfaces/config-loader.interface.d.ts +0 -22
- package/dist/types/interfaces/config-loader.interface.d.ts.map +0 -1
- package/dist/types/interfaces/config-service.interface.d.ts.map +0 -1
- package/dist/types/interfaces/default-schema.interface.d.ts.map +0 -1
- package/dist/types/interfaces/errors.interface.d.ts +0 -38
- package/dist/types/interfaces/errors.interface.d.ts.map +0 -1
- package/dist/types/interfaces/index.d.ts +0 -6
- package/dist/types/interfaces/index.d.ts.map +0 -1
- package/dist/types/interfaces/module-options.interface.d.ts.map +0 -1
- package/dist/types/loaders/environment.loader.d.ts +0 -26
- package/dist/types/loaders/environment.loader.d.ts.map +0 -1
- package/dist/types/loaders/secrets-manager.loader.d.ts +0 -52
- package/dist/types/loaders/secrets-manager.loader.d.ts.map +0 -1
- package/dist/types/loaders/ssm-parameter-store.loader.d.ts +0 -68
- package/dist/types/loaders/ssm-parameter-store.loader.d.ts.map +0 -1
- package/dist/types/services/config.service.d.ts +0 -94
- package/dist/types/services/config.service.d.ts.map +0 -1
- package/dist/types/utils/validation.util.d.ts.map +0 -1
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/index.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/configuration-factory.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/configuration-source.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/index.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/integration-options.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/integration-state.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/nestjs-config-compatibility.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/nestjs-config-integration.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/typed-configuration.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/utility-types.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/nestjs-config-integration.module.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/providers/aws-configuration-loader.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/providers/configuration-factory.provider.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/providers/index.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/async-config-helper.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/error-handler.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/factory-registration.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/index.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/integration-state.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/namespace-handler.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/nestjs-config-integration.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/precedence-handler.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/validation-integration.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/utils/config-integration.util.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/utils/index.d.ts +0 -0
- /package/dist/types/{interfaces → nestjs-config-aws/src/interfaces}/config-service.interface.d.ts +0 -0
- /package/dist/types/{interfaces → nestjs-config-aws/src/interfaces}/module-options.interface.d.ts +0 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { NestConfigAwsIntegrationModule } from '../nestjs-config-integration.module';
|
|
2
|
+
/**
|
|
3
|
+
* Utility functions for integrating nestjs-config-aws with @nestjs/config.
|
|
4
|
+
* These functions provide convenient ways to set up AWS configuration integration.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Create a configuration factory that loads from AWS sources.
|
|
8
|
+
* This factory can be used directly in @nestjs/config's load array.
|
|
9
|
+
*
|
|
10
|
+
* @param options - Integration options for AWS configuration
|
|
11
|
+
* @returns Promise resolving to configuration factory
|
|
12
|
+
*/
|
|
13
|
+
export async function createAwsConfigFactory(options = {}) {
|
|
14
|
+
// Import services dynamically to avoid circular dependencies
|
|
15
|
+
const { AsyncConfigHelperService } = await import('../services/async-config-helper.service');
|
|
16
|
+
const { FactoryRegistrationService } = await import('../services/factory-registration.service');
|
|
17
|
+
const { ConfigurationFactoryProviderImpl } = await import('../providers/configuration-factory.provider');
|
|
18
|
+
const { AwsConfigurationLoaderService } = await import('../providers/aws-configuration-loader.service');
|
|
19
|
+
const { PrecedenceHandlerService } = await import('../services/precedence-handler.service');
|
|
20
|
+
const { NamespaceHandlerService } = await import('../services/namespace-handler.service');
|
|
21
|
+
const { ValidationIntegrationService } = await import('../services/validation-integration.service');
|
|
22
|
+
// Create service instances
|
|
23
|
+
const precedenceHandler = new PrecedenceHandlerService();
|
|
24
|
+
const configFactoryProvider = new ConfigurationFactoryProviderImpl(precedenceHandler);
|
|
25
|
+
const awsLoader = new AwsConfigurationLoaderService(options);
|
|
26
|
+
const namespaceHandler = new NamespaceHandlerService();
|
|
27
|
+
const validationService = new ValidationIntegrationService();
|
|
28
|
+
const factoryRegistration = new FactoryRegistrationService(configFactoryProvider, awsLoader, namespaceHandler, validationService, options);
|
|
29
|
+
const asyncHelper = new AsyncConfigHelperService(factoryRegistration, options);
|
|
30
|
+
// Create and return the async factory
|
|
31
|
+
return await asyncHelper.createAsyncConfigFactory();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create configuration factories for specific namespaces.
|
|
35
|
+
* This function creates separate factories for each namespace.
|
|
36
|
+
*
|
|
37
|
+
* @param namespaces - Array of namespace names
|
|
38
|
+
* @param options - Integration options for AWS configuration
|
|
39
|
+
* @returns Promise resolving to array of namespaced configuration factories
|
|
40
|
+
*/
|
|
41
|
+
export async function createAwsNamespacedFactories(namespaces, options = {}) {
|
|
42
|
+
// Import services dynamically
|
|
43
|
+
const { AsyncConfigHelperService } = await import('../services/async-config-helper.service');
|
|
44
|
+
const { FactoryRegistrationService } = await import('../services/factory-registration.service');
|
|
45
|
+
const { ConfigurationFactoryProviderImpl } = await import('../providers/configuration-factory.provider');
|
|
46
|
+
const { AwsConfigurationLoaderService } = await import('../providers/aws-configuration-loader.service');
|
|
47
|
+
const { PrecedenceHandlerService } = await import('../services/precedence-handler.service');
|
|
48
|
+
const { NamespaceHandlerService } = await import('../services/namespace-handler.service');
|
|
49
|
+
const { ValidationIntegrationService } = await import('../services/validation-integration.service');
|
|
50
|
+
// Create service instances
|
|
51
|
+
const precedenceHandler = new PrecedenceHandlerService();
|
|
52
|
+
const configFactoryProvider = new ConfigurationFactoryProviderImpl(precedenceHandler);
|
|
53
|
+
const awsLoader = new AwsConfigurationLoaderService(options);
|
|
54
|
+
const namespaceHandler = new NamespaceHandlerService();
|
|
55
|
+
const validationService = new ValidationIntegrationService();
|
|
56
|
+
const factoryRegistration = new FactoryRegistrationService(configFactoryProvider, awsLoader, namespaceHandler, validationService, options);
|
|
57
|
+
const asyncHelper = new AsyncConfigHelperService(factoryRegistration, options);
|
|
58
|
+
// Create and return the namespaced factories
|
|
59
|
+
return await asyncHelper.createAsyncNamespacedFactories(namespaces);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Create enhanced ConfigModule options with AWS integration.
|
|
63
|
+
* This function enhances existing ConfigModule options with AWS-sourced configuration.
|
|
64
|
+
*
|
|
65
|
+
* @param baseOptions - Base ConfigModule options to enhance
|
|
66
|
+
* @param integrationOptions - Integration options for AWS configuration
|
|
67
|
+
* @returns Promise resolving to enhanced ConfigModule options
|
|
68
|
+
*/
|
|
69
|
+
export async function createEnhancedConfigOptions(baseOptions = {}, integrationOptions = {}) {
|
|
70
|
+
// Import services dynamically
|
|
71
|
+
const { AsyncConfigHelperService } = await import('../services/async-config-helper.service');
|
|
72
|
+
const { FactoryRegistrationService } = await import('../services/factory-registration.service');
|
|
73
|
+
const { ConfigurationFactoryProviderImpl } = await import('../providers/configuration-factory.provider');
|
|
74
|
+
const { AwsConfigurationLoaderService } = await import('../providers/aws-configuration-loader.service');
|
|
75
|
+
const { PrecedenceHandlerService } = await import('../services/precedence-handler.service');
|
|
76
|
+
const { NamespaceHandlerService } = await import('../services/namespace-handler.service');
|
|
77
|
+
const { ValidationIntegrationService } = await import('../services/validation-integration.service');
|
|
78
|
+
// Create service instances
|
|
79
|
+
const precedenceHandler = new PrecedenceHandlerService();
|
|
80
|
+
const configFactoryProvider = new ConfigurationFactoryProviderImpl(precedenceHandler);
|
|
81
|
+
const awsLoader = new AwsConfigurationLoaderService(integrationOptions);
|
|
82
|
+
const namespaceHandler = new NamespaceHandlerService();
|
|
83
|
+
const validationService = new ValidationIntegrationService();
|
|
84
|
+
const factoryRegistration = new FactoryRegistrationService(configFactoryProvider, awsLoader, namespaceHandler, validationService, integrationOptions);
|
|
85
|
+
const asyncHelper = new AsyncConfigHelperService(factoryRegistration, integrationOptions);
|
|
86
|
+
// Create and return enhanced options
|
|
87
|
+
return await asyncHelper.createAsyncConfigOptions(baseOptions);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create a complete integration module for use with @nestjs/config.
|
|
91
|
+
* This function returns a module that can be imported alongside ConfigModule.
|
|
92
|
+
*
|
|
93
|
+
* @param options - Integration options for AWS configuration
|
|
94
|
+
* @returns Dynamic module for AWS integration
|
|
95
|
+
*/
|
|
96
|
+
export function createAwsIntegrationModule(options = {}) {
|
|
97
|
+
return NestConfigAwsIntegrationModule.forRoot(options);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Create an async integration module for use with @nestjs/config.
|
|
101
|
+
* This function returns a module that can be imported alongside ConfigModule for async scenarios.
|
|
102
|
+
*
|
|
103
|
+
* @param useFactory - Factory function to create integration options
|
|
104
|
+
* @param inject - Dependencies to inject into the factory function
|
|
105
|
+
* @param imports - Modules to import for the factory function
|
|
106
|
+
* @returns Dynamic module for async AWS integration
|
|
107
|
+
*/
|
|
108
|
+
export function createAsyncAwsIntegrationModule(useFactory, inject = [], imports = []) {
|
|
109
|
+
return NestConfigAwsIntegrationModule.forRootAsync({
|
|
110
|
+
useFactory,
|
|
111
|
+
inject,
|
|
112
|
+
imports,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Create a factory function that can be used with ConfigModule.forRoot().
|
|
117
|
+
* This factory function loads AWS configuration and merges it with local configuration.
|
|
118
|
+
*
|
|
119
|
+
* @param integrationOptions - Integration options for AWS configuration
|
|
120
|
+
* @returns Factory function for use with ConfigModule
|
|
121
|
+
*/
|
|
122
|
+
export function createConfigModuleFactory(integrationOptions = {}) {
|
|
123
|
+
return async () => {
|
|
124
|
+
try {
|
|
125
|
+
// Create AWS configuration factory
|
|
126
|
+
const awsFactory = await createAwsConfigFactory(integrationOptions);
|
|
127
|
+
// Return ConfigModule options with AWS factory
|
|
128
|
+
return {
|
|
129
|
+
load: [awsFactory],
|
|
130
|
+
isGlobal: integrationOptions.registerGlobally ?? true,
|
|
131
|
+
cache: integrationOptions.factoryOptions?.cache ?? true,
|
|
132
|
+
expandVariables: integrationOptions.factoryOptions?.expandVariables ?? true,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
// Handle error based on integration options
|
|
137
|
+
if (integrationOptions.failOnAwsError) {
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
140
|
+
// Return basic options as fallback
|
|
141
|
+
if (integrationOptions.fallbackToLocal) {
|
|
142
|
+
return {
|
|
143
|
+
load: [],
|
|
144
|
+
isGlobal: integrationOptions.registerGlobally ?? true,
|
|
145
|
+
cache: integrationOptions.factoryOptions?.cache ?? true,
|
|
146
|
+
expandVariables: integrationOptions.factoryOptions?.expandVariables ?? true,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Create a factory function with dependency injection support.
|
|
155
|
+
* This factory function can receive injected dependencies and use them to configure AWS integration.
|
|
156
|
+
*
|
|
157
|
+
* @param integrationOptions - Integration options for AWS configuration
|
|
158
|
+
* @param dependencies - Array of dependency tokens to inject
|
|
159
|
+
* @returns Factory function with dependency injection support
|
|
160
|
+
*/
|
|
161
|
+
export function createConfigModuleFactoryWithDependencies(integrationOptions = {}, dependencies = []) {
|
|
162
|
+
return async (...injectedDependencies) => {
|
|
163
|
+
try {
|
|
164
|
+
// Import services dynamically
|
|
165
|
+
const { AsyncConfigHelperService } = await import('../services/async-config-helper.service');
|
|
166
|
+
const { FactoryRegistrationService } = await import('../services/factory-registration.service');
|
|
167
|
+
const { ConfigurationFactoryProviderImpl } = await import('../providers/configuration-factory.provider');
|
|
168
|
+
const { AwsConfigurationLoaderService } = await import('../providers/aws-configuration-loader.service');
|
|
169
|
+
const { PrecedenceHandlerService } = await import('../services/precedence-handler.service');
|
|
170
|
+
const { NamespaceHandlerService } = await import('../services/namespace-handler.service');
|
|
171
|
+
const { ValidationIntegrationService } = await import('../services/validation-integration.service');
|
|
172
|
+
// Create service instances
|
|
173
|
+
const precedenceHandler = new PrecedenceHandlerService();
|
|
174
|
+
const configFactoryProvider = new ConfigurationFactoryProviderImpl(precedenceHandler);
|
|
175
|
+
const awsLoader = new AwsConfigurationLoaderService(integrationOptions);
|
|
176
|
+
const namespaceHandler = new NamespaceHandlerService();
|
|
177
|
+
const validationService = new ValidationIntegrationService();
|
|
178
|
+
const factoryRegistration = new FactoryRegistrationService(configFactoryProvider, awsLoader, namespaceHandler, validationService, integrationOptions);
|
|
179
|
+
const asyncHelper = new AsyncConfigHelperService(factoryRegistration, integrationOptions);
|
|
180
|
+
// Create factory with dependencies
|
|
181
|
+
const factoryWithDeps = asyncHelper.createAsyncFactoryWithDependencies(dependencies);
|
|
182
|
+
// Execute factory with injected dependencies
|
|
183
|
+
return await factoryWithDeps(...injectedDependencies);
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
// Handle error based on integration options
|
|
187
|
+
if (integrationOptions.failOnAwsError) {
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
// Return basic options as fallback
|
|
191
|
+
if (integrationOptions.fallbackToLocal) {
|
|
192
|
+
return {
|
|
193
|
+
load: [],
|
|
194
|
+
isGlobal: integrationOptions.registerGlobally ?? true,
|
|
195
|
+
cache: integrationOptions.factoryOptions?.cache ?? true,
|
|
196
|
+
expandVariables: integrationOptions.factoryOptions?.expandVariables ?? true,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
throw error;
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Check if AWS configuration is available for integration.
|
|
205
|
+
* This function can be used to determine if AWS integration should be enabled.
|
|
206
|
+
*
|
|
207
|
+
* @param options - Integration options for AWS configuration
|
|
208
|
+
* @returns Promise resolving to availability status
|
|
209
|
+
*/
|
|
210
|
+
export async function checkAwsConfigAvailability(options = {}) {
|
|
211
|
+
try {
|
|
212
|
+
// Import services dynamically
|
|
213
|
+
const { AsyncConfigHelperService } = await import('../services/async-config-helper.service');
|
|
214
|
+
const { FactoryRegistrationService } = await import('../services/factory-registration.service');
|
|
215
|
+
const { ConfigurationFactoryProviderImpl } = await import('../providers/configuration-factory.provider');
|
|
216
|
+
const { AwsConfigurationLoaderService } = await import('../providers/aws-configuration-loader.service');
|
|
217
|
+
const { PrecedenceHandlerService } = await import('../services/precedence-handler.service');
|
|
218
|
+
const { NamespaceHandlerService } = await import('../services/namespace-handler.service');
|
|
219
|
+
const { ValidationIntegrationService } = await import('../services/validation-integration.service');
|
|
220
|
+
// Create service instances
|
|
221
|
+
const precedenceHandler = new PrecedenceHandlerService();
|
|
222
|
+
const configFactoryProvider = new ConfigurationFactoryProviderImpl(precedenceHandler);
|
|
223
|
+
const awsLoader = new AwsConfigurationLoaderService(options);
|
|
224
|
+
const namespaceHandler = new NamespaceHandlerService();
|
|
225
|
+
const validationService = new ValidationIntegrationService();
|
|
226
|
+
const factoryRegistration = new FactoryRegistrationService(configFactoryProvider, awsLoader, namespaceHandler, validationService, options);
|
|
227
|
+
const asyncHelper = new AsyncConfigHelperService(factoryRegistration, options);
|
|
228
|
+
// Check availability
|
|
229
|
+
return await asyncHelper.checkAsyncAvailability();
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
const availabilityError = error instanceof Error ? error : new Error(String(error));
|
|
233
|
+
return {
|
|
234
|
+
isAvailable: false,
|
|
235
|
+
factoriesCount: 0,
|
|
236
|
+
errors: [availabilityError.message],
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWludGVncmF0aW9uLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvaW50ZWdyYXRpb24vdXRpbHMvY29uZmlnLWludGVncmF0aW9uLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFckY7OztHQUdHO0FBRUg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxVQUE4QixFQUFFO0lBQzNFLDZEQUE2RDtJQUM3RCxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0lBQzdGLE1BQU0sRUFBRSwwQkFBMEIsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7SUFDaEcsTUFBTSxFQUFFLGdDQUFnQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUN6RyxNQUFNLEVBQUUsNkJBQTZCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ3hHLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFDNUYsTUFBTSxFQUFFLHVCQUF1QixFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUMxRixNQUFNLEVBQUUsNEJBQTRCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBRXBHLDJCQUEyQjtJQUMzQixNQUFNLGlCQUFpQixHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztJQUN6RCxNQUFNLHFCQUFxQixHQUFHLElBQUksZ0NBQWdDLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN0RixNQUFNLFNBQVMsR0FBRyxJQUFJLDZC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QUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXBGLE9BQU87WUFDTCxXQUFXLEVBQUUsS0FBSztZQUNsQixjQUFjLEVBQUUsQ0FBQztZQUNqQixNQUFNLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7U0FDcEMsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlnRmFjdG9yeSwgQ29uZmlnTW9kdWxlT3B0aW9ucyB9IGZyb20gJ0BuZXN0anMvY29uZmlnJztcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZSB9IGZyb20gJ0BuZXN0anMvY29tbW9uJztcclxuaW1wb3J0IHsgSW50ZWdyYXRpb25PcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbnRlZ3JhdGlvbi1vcHRpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IE5lc3RDb25maWdBd3NJbnRlZ3JhdGlvbk1vZHVsZSB9IGZyb20gJy4uL25lc3Rqcy1jb25maWctaW50ZWdyYXRpb24ubW9kdWxlJztcclxuXHJcbi8qKlxyXG4gKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgaW50ZWdyYXRpbmcgbmVzdGpzLWNvbmZpZy1hd3Mgd2l0aCBAbmVzdGpzL2NvbmZpZy5cclxuICogVGhlc2UgZnVuY3Rpb25zIHByb3ZpZGUgY29udmVuaWVudCB3YXlzIHRvIHNldCB1cCBBV1MgY29uZmlndXJhdGlvbiBpbnRlZ3JhdGlvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQ3JlYXRlIGEgY29uZmlndXJhdGlvbiBmYWN0b3J5IHRoYXQgbG9hZHMgZnJvbSBBV1Mgc291cmNlcy5cclxuICogVGhpcyBmYWN0b3J5IGNhbiBiZSB1c2VkIGRpcmVjdGx5IGluIEBuZXN0anMvY29uZmlnJ3MgbG9hZCBhcnJheS5cclxuICogXHJcbiAqIEBwYXJhbSBvcHRpb25zIC0gSW50ZWdyYXRpb24gb3B0aW9ucyBmb3IgQVdTIGNvbmZpZ3VyYXRpb25cclxuICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gY29uZmlndXJhdGlvbiBmYWN0b3J5XHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQXdzQ29uZmlnRmFjdG9yeShvcHRpb25zOiBJbnRlZ3JhdGlvbk9wdGlvbnMgPSB7fSk6IFByb21pc2U8Q29uZmlnRmFjdG9yeT4ge1xyXG4gIC8vIEltcG9ydCBzZXJ2aWNlcyBkeW5hbWljYWxseSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXNcclxuICBjb25zdCB7IEFzeW5jQ29uZmlnSGVscGVyU2VydmljZSB9ID0gYXdhaXQgaW1wb3J0KCcuLi9zZXJ2aWNlcy9hc3luYy1jb25maWctaGVscGVyLnNlcnZpY2UnKTtcclxuICBjb25zdCB7IEZhY3RvcnlSZWdpc3RyYXRpb25TZXJ2aWNlIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3NlcnZpY2VzL2ZhY3RvcnktcmVnaXN0cmF0aW9uLnNlcnZpY2UnKTtcclxuICBjb25zdCB7IENvbmZpZ3VyYXRpb25GYWN0b3J5UHJvdmlkZXJJbXBsIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3Byb3ZpZGVycy9jb25maWd1cmF0aW9uLWZhY3RvcnkucHJvdmlkZXInKTtcclxuICBjb25zdCB7IEF3c0NvbmZpZ3VyYXRpb25Mb2FkZXJTZXJ2aWNlIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3Byb3ZpZGVycy9hd3MtY29uZmlndXJhdGlvbi1sb2FkZXIuc2VydmljZScpO1xyXG4gIGNvbnN0IHsgUHJlY2VkZW5jZUhhbmRsZXJTZXJ2aWNlIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3NlcnZpY2VzL3ByZWNlZGVuY2UtaGFuZGxlci5zZXJ2aWNlJyk7XHJcbiAgY29uc3QgeyBOYW1lc3BhY2VIYW5kbGVyU2VydmljZSB9ID0gYXdhaXQgaW1wb3J0KCcuLi9zZXJ2aWNlcy9uYW1lc3BhY2UtaGFuZGxlci5zZXJ2aWNlJyk7XHJcbiAgY29uc3QgeyBWYWxpZGF0aW9uSW50ZWdyYXRpb25TZXJ2aWNlIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24taW50ZWdyYXRpb24uc2VydmljZScpO1xyXG5cclxuICAvLyBDcmVhdGUgc2VydmljZSBpbnN0YW5jZXNcclxuICBjb25zdCBwcmVjZWRlbmNlSGFuZGxlciA9IG5ldyBQcmVjZWRlbmNlSGFuZGxlclNlcnZpY2UoKTtcclxuICBjb25zdCBjb25maWdGYWN0b3J5UHJvdmlkZXIgPSBuZXcgQ29uZmlndXJhdGlvbkZhY3RvcnlQcm92aWRlckltcGwocHJlY2VkZW5jZUhhbmRsZXIpO1xyXG4gIGNvbnN0IGF3c0xvYWRlciA9IG5ldyBBd3NDb25maWd1cmF0aW9uTG9hZGVyU2VydmljZShvcHRpb25zKTtcclxuICBjb25zdCBuYW1lc3BhY2VIYW5kbGVyID0gbmV3IE5hbWVzcGFjZUhhbmRsZXJTZXJ2aWNlKCk7XHJcbiAgY29uc3QgdmFsaWRhdGlvblNlcnZpY2UgPSBuZXcgVmFsaWRhdGlvbkludGVncmF0aW9uU2VydmljZSgpO1xyXG4gIGNvbnN0IGZhY3RvcnlSZWdpc3RyYXRpb24gPSBuZXcgRmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UoXHJcbiAgICBjb25maWdGYWN0b3J5UHJvdmlkZXIsXHJcbiAgICBhd3NMb2FkZXIsXHJcbiAgICBuYW1lc3BhY2VIYW5kbGVyLFxyXG4gICAgdmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBvcHRpb25zXHJcbiAgKTtcclxuICBjb25zdCBhc3luY0hlbHBlciA9IG5ldyBBc3luY0NvbmZpZ0hlbHBlclNlcnZpY2UoZmFjdG9yeVJlZ2lzdHJhdGlvbiwgb3B0aW9ucyk7XHJcblxyXG4gIC8vIENyZWF0ZSBhbmQgcmV0dXJuIHRoZSBhc3luYyBmYWN0b3J5XHJcbiAgcmV0dXJuIGF3YWl0IGFzeW5jSGVscGVyLmNyZWF0ZUFzeW5jQ29uZmlnRmFjdG9yeSgpO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlIGNvbmZpZ3VyYXRpb24gZmFjdG9yaWVzIGZvciBzcGVjaWZpYyBuYW1lc3BhY2VzLlxyXG4gKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgc2VwYXJhdGUgZmFjdG9yaWVzIGZvciBlYWNoIG5hbWVzcGFjZS5cclxuICogXHJcbiAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gQXJyYXkgb2YgbmFtZXNwYWNlIG5hbWVzXHJcbiAqIEBwYXJhbSBvcHRpb25zIC0gSW50ZWdyYXRpb24gb3B0aW9ucyBmb3IgQVdTIGNvbmZpZ3VyYXRpb25cclxuICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gYXJyYXkgb2YgbmFtZXNwYWNlZCBjb25maWd1cmF0aW9uIGZhY3Rvcmllc1xyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUF3c05hbWVzcGFjZWRGYWN0b3JpZXMoXHJcbiAgbmFtZXNwYWNlczogc3RyaW5nW10sXHJcbiAgb3B0aW9uczogSW50ZWdyYXRpb25PcHRpb25zID0ge31cclxuKTogUHJvbWlzZTxDb25maWdGYWN0b3J5W10+IHtcclxuICAvLyBJbXBvcnQgc2VydmljZXMgZHluYW1pY2FsbHlcclxuICBjb25zdCB7IEFzeW5jQ29uZmlnSGVscGVyU2VydmljZSB9ID0gYXdhaXQgaW1wb3J0KCcuLi9zZXJ2aWNlcy9hc3luYy1jb25maWctaGVscGVyLnNlcnZpY2UnKTtcclxuICBjb25zdCB7IEZhY3RvcnlSZWdpc3RyYXRpb25TZXJ2aWNlIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3NlcnZpY2VzL2ZhY3RvcnktcmVnaXN0cmF0aW9uLnNlcnZpY2UnKTtcclxuICBjb25zdCB7IENvbmZpZ3VyYXRpb25GYWN0b3J5UHJvdmlkZXJJbXBsIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3Byb3ZpZGVycy9jb25maWd1cmF0aW9uLWZhY3RvcnkucHJvdmlkZXInKTtcclxuICBjb25zdCB7IEF3c0NvbmZpZ3VyYXRpb25Mb2FkZXJTZXJ2aWNlIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3Byb3ZpZGVycy9hd3MtY29uZmlndXJhdGlvbi1sb2FkZXIuc2VydmljZScpO1xyXG4gIGNvbnN0IHsgUHJlY2VkZW5jZUhhbmRsZXJTZXJ2aWNlIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3NlcnZpY2VzL3ByZWNlZGVuY2UtaGFuZGxlci5zZXJ2aWNlJyk7XHJcbiAgY29uc3QgeyBOYW1lc3BhY2VIYW5kbGVyU2VydmljZSB9ID0gYXdhaXQgaW1wb3J0KCcuLi9zZXJ2aWNlcy9uYW1lc3BhY2UtaGFuZGxlci5zZXJ2aWNlJyk7XHJcbiAgY29uc3QgeyBWYWxpZGF0aW9uSW50ZWdyYXRpb25TZXJ2aWNlIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24taW50ZWdyYXRpb24uc2VydmljZScpO1xyXG5cclxuICAvLyBDcmVhdGUgc2VydmljZSBpbnN0YW5jZXNcclxuICBjb25zdCBwcmVjZWRlbmNlSGFuZGxlciA9IG5ldyBQcmVjZWRlbmNlSGFuZGxlclNlcnZpY2UoKTtcclxuICBjb25zdCBjb25maWdGYWN0b3J5UHJvdmlkZXIgPSBuZXcgQ29uZmlndXJhdGlvbkZhY3RvcnlQcm92aWRlckltcGwocHJlY2VkZW5jZUhhbmRsZXIpO1xyXG4gIGNvbnN0IGF3c0xvYWRlciA9IG5ldyBBd3NDb25maWd1cmF0aW9uTG9hZGVyU2VydmljZShvcHRpb25zKTtcclxuICBjb25zdCBuYW1lc3BhY2VIYW5kbGVyID0gbmV3IE5hbWVzcGFjZUhhbmRsZXJTZXJ2aWNlKCk7XHJcbiAgY29uc3QgdmFsaWRhdGlvblNlcnZpY2UgPSBuZXcgVmFsaWRhdGlvbkludGVncmF0aW9uU2VydmljZSgpO1xyXG4gIGNvbnN0IGZhY3RvcnlSZWdpc3RyYXRpb24gPSBuZXcgRmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UoXHJcbiAgICBjb25maWdGYWN0b3J5UHJvdmlkZXIsXHJcbiAgICBhd3NMb2FkZXIsXHJcbiAgICBuYW1lc3BhY2VIYW5kbGVyLFxyXG4gICAgdmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBvcHRpb25zXHJcbiAgKTtcclxuICBjb25zdCBhc3luY0hlbHBlciA9IG5ldyBBc3luY0NvbmZpZ0hlbHBlclNlcnZpY2UoZmFjdG9yeVJlZ2lzdHJhdGlvbiwgb3B0aW9ucyk7XHJcblxyXG4gIC8vIENyZWF0ZSBhbmQgcmV0dXJuIHRoZSBuYW1lc3BhY2VkIGZhY3Rvcmllc1xyXG4gIHJldHVybiBhd2FpdCBhc3luY0hlbHBlci5jcmVhdGVBc3luY05hbWVzcGFjZWRGYWN0b3JpZXMobmFtZXNwYWNlcyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGUgZW5oYW5jZWQgQ29uZmlnTW9kdWxlIG9wdGlvbnMgd2l0aCBBV1MgaW50ZWdyYXRpb24uXHJcbiAqIFRoaXMgZnVuY3Rpb24gZW5oYW5jZXMgZXhpc3RpbmcgQ29uZmlnTW9kdWxlIG9wdGlvbnMgd2l0aCBBV1Mtc291cmNlZCBjb25maWd1cmF0aW9uLlxyXG4gKiBcclxuICogQHBhcmFtIGJhc2VPcHRpb25zIC0gQmFzZSBDb25maWdNb2R1bGUgb3B0aW9ucyB0byBlbmhhbmNlXHJcbiAqIEBwYXJhbSBpbnRlZ3JhdGlvbk9wdGlvbnMgLSBJbnRlZ3JhdGlvbiBvcHRpb25zIGZvciBBV1MgY29uZmlndXJhdGlvblxyXG4gKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byBlbmhhbmNlZCBDb25maWdNb2R1bGUgb3B0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUVuaGFuY2VkQ29uZmlnT3B0aW9ucyhcclxuICBiYXNlT3B0aW9uczogQ29uZmlnTW9kdWxlT3B0aW9ucyA9IHt9LFxyXG4gIGludGVncmF0aW9uT3B0aW9uczogSW50ZWdyYXRpb25PcHRpb25zID0ge31cclxuKTogUHJvbWlzZTxDb25maWdNb2R1bGVPcHRpb25zPiB7XHJcbiAgLy8gSW1wb3J0IHNlcnZpY2VzIGR5bmFtaWNhbGx5XHJcbiAgY29uc3QgeyBBc3luY0NvbmZpZ0hlbHBlclNlcnZpY2UgfSA9IGF3YWl0IGltcG9ydCgnLi4vc2VydmljZXMvYXN5bmMtY29uZmlnLWhlbHBlci5zZXJ2aWNlJyk7XHJcbiAgY29uc3QgeyBGYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZSB9ID0gYXdhaXQgaW1wb3J0KCcuLi9zZXJ2aWNlcy9mYWN0b3J5LXJlZ2lzdHJhdGlvbi5zZXJ2aWNlJyk7XHJcbiAgY29uc3QgeyBDb25maWd1cmF0aW9uRmFjdG9yeVByb3ZpZGVySW1wbCB9ID0gYXdhaXQgaW1wb3J0KCcuLi9wcm92aWRlcnMvY29uZmlndXJhdGlvbi1mYWN0b3J5LnByb3ZpZGVyJyk7XHJcbiAgY29uc3QgeyBBd3NDb25maWd1cmF0aW9uTG9hZGVyU2VydmljZSB9ID0gYXdhaXQgaW1wb3J0KCcuLi9wcm92aWRlcnMvYXdzLWNvbmZpZ3VyYXRpb24tbG9hZGVyLnNlcnZpY2UnKTtcclxuICBjb25zdCB7IFByZWNlZGVuY2VIYW5kbGVyU2VydmljZSB9ID0gYXdhaXQgaW1wb3J0KCcuLi9zZXJ2aWNlcy9wcmVjZWRlbmNlLWhhbmRsZXIuc2VydmljZScpO1xyXG4gIGNvbnN0IHsgTmFtZXNwYWNlSGFuZGxlclNlcnZpY2UgfSA9IGF3YWl0IGltcG9ydCgnLi4vc2VydmljZXMvbmFtZXNwYWNlLWhhbmRsZXIuc2VydmljZScpO1xyXG4gIGNvbnN0IHsgVmFsaWRhdGlvbkludGVncmF0aW9uU2VydmljZSB9ID0gYXdhaXQgaW1wb3J0KCcuLi9zZXJ2aWNlcy92YWxpZGF0aW9uLWludGVncmF0aW9uLnNlcnZpY2UnKTtcclxuXHJcbiAgLy8gQ3JlYXRlIHNlcnZpY2UgaW5zdGFuY2VzXHJcbiAgY29uc3QgcHJlY2VkZW5jZUhhbmRsZXIgPSBuZXcgUHJlY2VkZW5jZUhhbmRsZXJTZXJ2aWNlKCk7XHJcbiAgY29uc3QgY29uZmlnRmFjdG9yeVByb3ZpZGVyID0gbmV3IENvbmZpZ3VyYXRpb25GYWN0b3J5UHJvdmlkZXJJbXBsKHByZWNlZGVuY2VIYW5kbGVyKTtcclxuICBjb25zdCBhd3NMb2FkZXIgPSBuZXcgQXdzQ29uZmlndXJhdGlvbkxvYWRlclNlcnZpY2UoaW50ZWdyYXRpb25PcHRpb25zKTtcclxuICBjb25zdCBuYW1lc3BhY2VIYW5kbGVyID0gbmV3IE5hbWVzcGFjZUhhbmRsZXJTZXJ2aWNlKCk7XHJcbiAgY29uc3QgdmFsaWRhdGlvblNlcnZpY2UgPSBuZXcgVmFsaWRhdGlvbkludGVncmF0aW9uU2VydmljZSgpO1xyXG4gIGNvbnN0IGZhY3RvcnlSZWdpc3RyYXRpb24gPSBuZXcgRmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UoXHJcbiAgICBjb25maWdGYWN0b3J5UHJvdmlkZXIsXHJcbiAgICBhd3NMb2FkZXIsXHJcbiAgICBuYW1lc3BhY2VIYW5kbGVyLFxyXG4gICAgdmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBpbnRlZ3JhdGlvbk9wdGlvbnNcclxuICApO1xyXG4gIGNvbnN0IGFzeW5jSGVscGVyID0gbmV3IEFzeW5jQ29uZmlnSGVscGVyU2VydmljZShmYWN0b3J5UmVnaXN0cmF0aW9uLCBpbnRlZ3JhdGlvbk9wdGlvbnMpO1xyXG5cclxuICAvLyBDcmVhdGUgYW5kIHJldHVybiBlbmhhbmNlZCBvcHRpb25zXHJcbiAgcmV0dXJuIGF3YWl0IGFzeW5jSGVscGVyLmNyZWF0ZUFzeW5jQ29uZmlnT3B0aW9ucyhiYXNlT3B0aW9ucyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGUgYSBjb21wbGV0ZSBpbnRlZ3JhdGlvbiBtb2R1bGUgZm9yIHVzZSB3aXRoIEBuZXN0anMvY29uZmlnLlxyXG4gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBtb2R1bGUgdGhhdCBjYW4gYmUgaW1wb3J0ZWQgYWxvbmdzaWRlIENvbmZpZ01vZHVsZS5cclxuICogXHJcbiAqIEBwYXJhbSBvcHRpb25zIC0gSW50ZWdyYXRpb24gb3B0aW9ucyBmb3IgQVdTIGNvbmZpZ3VyYXRpb25cclxuICogQHJldHVybnMgRHluYW1pYyBtb2R1bGUgZm9yIEFXUyBpbnRlZ3JhdGlvblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUF3c0ludGVncmF0aW9uTW9kdWxlKG9wdGlvbnM6IEludGVncmF0aW9uT3B0aW9ucyA9IHt9KTogRHluYW1pY01vZHVsZSB7XHJcbiAgcmV0dXJuIE5lc3RDb25maWdBd3NJbnRlZ3JhdGlvbk1vZHVsZS5mb3JSb290KG9wdGlvbnMpO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlIGFuIGFzeW5jIGludGVncmF0aW9uIG1vZHVsZSBmb3IgdXNlIHdpdGggQG5lc3Rqcy9jb25maWcuXHJcbiAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIG1vZHVsZSB0aGF0IGNhbiBiZSBpbXBvcnRlZCBhbG9uZ3NpZGUgQ29uZmlnTW9kdWxlIGZvciBhc3luYyBzY2VuYXJpb3MuXHJcbiAqIFxyXG4gKiBAcGFyYW0gdXNlRmFjdG9yeSAtIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGludGVncmF0aW9uIG9wdGlvbnNcclxuICogQHBhcmFtIGluamVjdCAtIERlcGVuZGVuY2llcyB0byBpbmplY3QgaW50byB0aGUgZmFjdG9yeSBmdW5jdGlvblxyXG4gKiBAcGFyYW0gaW1wb3J0cyAtIE1vZHVsZXMgdG8gaW1wb3J0IGZvciB0aGUgZmFjdG9yeSBmdW5jdGlvblxyXG4gKiBAcmV0dXJucyBEeW5hbWljIG1vZHVsZSBmb3IgYXN5bmMgQVdTIGludGVncmF0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXN5bmNBd3NJbnRlZ3JhdGlvbk1vZHVsZShcclxuICB1c2VGYWN0b3J5OiAoLi4uYXJnczogYW55W10pID0+IFByb21pc2U8SW50ZWdyYXRpb25PcHRpb25zPiB8IEludGVncmF0aW9uT3B0aW9ucyxcclxuICBpbmplY3Q6IGFueVtdID0gW10sXHJcbiAgaW1wb3J0czogYW55W10gPSBbXVxyXG4pOiBEeW5hbWljTW9kdWxlIHtcclxuICByZXR1cm4gTmVzdENvbmZpZ0F3c0ludGVncmF0aW9uTW9kdWxlLmZvclJvb3RBc3luYyh7XHJcbiAgICB1c2VGYWN0b3J5LFxyXG4gICAgaW5qZWN0LFxyXG4gICAgaW1wb3J0cyxcclxuICB9KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZSBhIGZhY3RvcnkgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB3aXRoIENvbmZpZ01vZHVsZS5mb3JSb290KCkuXHJcbiAqIFRoaXMgZmFjdG9yeSBmdW5jdGlvbiBsb2FkcyBBV1MgY29uZmlndXJhdGlvbiBhbmQgbWVyZ2VzIGl0IHdpdGggbG9jYWwgY29uZmlndXJhdGlvbi5cclxuICogXHJcbiAqIEBwYXJhbSBpbnRlZ3JhdGlvbk9wdGlvbnMgLSBJbnRlZ3JhdGlvbiBvcHRpb25zIGZvciBBV1MgY29uZmlndXJhdGlvblxyXG4gKiBAcmV0dXJucyBGYWN0b3J5IGZ1bmN0aW9uIGZvciB1c2Ugd2l0aCBDb25maWdNb2R1bGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25maWdNb2R1bGVGYWN0b3J5KFxyXG4gIGludGVncmF0aW9uT3B0aW9uczogSW50ZWdyYXRpb25PcHRpb25zID0ge31cclxuKTogKCkgPT4gUHJvbWlzZTxDb25maWdNb2R1bGVPcHRpb25zPiB7XHJcbiAgcmV0dXJuIGFzeW5jICgpOiBQcm9taXNlPENvbmZpZ01vZHVsZU9wdGlvbnM+ID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIENyZWF0ZSBBV1MgY29uZmlndXJhdGlvbiBmYWN0b3J5XHJcbiAgICAgIGNvbnN0IGF3c0ZhY3RvcnkgPSBhd2FpdCBjcmVhdGVBd3NDb25maWdGYWN0b3J5KGludGVncmF0aW9uT3B0aW9ucyk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBSZXR1cm4gQ29uZmlnTW9kdWxlIG9wdGlvbnMgd2l0aCBBV1MgZmFjdG9yeVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGxvYWQ6IFthd3NGYWN0b3J5XSxcclxuICAgICAgICBpc0dsb2JhbDogaW50ZWdyYXRpb25PcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSxcclxuICAgICAgICBjYWNoZTogaW50ZWdyYXRpb25PcHRpb25zLmZhY3RvcnlPcHRpb25zPy5jYWNoZSA/PyB0cnVlLFxyXG4gICAgICAgIGV4cGFuZFZhcmlhYmxlczogaW50ZWdyYXRpb25PcHRpb25zLmZhY3RvcnlPcHRpb25zPy5leHBhbmRWYXJpYWJsZXMgPz8gdHJ1ZSxcclxuICAgICAgfTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIC8vIEhhbmRsZSBlcnJvciBiYXNlZCBvbiBpbnRlZ3JhdGlvbiBvcHRpb25zXHJcbiAgICAgIGlmIChpbnRlZ3JhdGlvbk9wdGlvbnMuZmFpbE9uQXdzRXJyb3IpIHtcclxuICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gUmV0dXJuIGJhc2ljIG9wdGlvbnMgYXMgZmFsbGJhY2tcclxuICAgICAgaWYgKGludGVncmF0aW9uT3B0aW9ucy5mYWxsYmFja1RvTG9jYWwpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbG9hZDogW10sXHJcbiAgICAgICAgICBpc0dsb2JhbDogaW50ZWdyYXRpb25PcHRpb25zLnJlZ2lzdGVyR2xvYmFsbHkgPz8gdHJ1ZSxcclxuICAgICAgICAgIGNhY2hlOiBpbnRlZ3JhdGlvbk9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmNhY2hlID8/IHRydWUsXHJcbiAgICAgICAgICBleHBhbmRWYXJpYWJsZXM6IGludGVncmF0aW9uT3B0aW9ucy5mYWN0b3J5T3B0aW9ucz8uZXhwYW5kVmFyaWFibGVzID8/IHRydWUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9XHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZSBhIGZhY3RvcnkgZnVuY3Rpb24gd2l0aCBkZXBlbmRlbmN5IGluamVjdGlvbiBzdXBwb3J0LlxyXG4gKiBUaGlzIGZhY3RvcnkgZnVuY3Rpb24gY2FuIHJlY2VpdmUgaW5qZWN0ZWQgZGVwZW5kZW5jaWVzIGFuZCB1c2UgdGhlbSB0byBjb25maWd1cmUgQVdTIGludGVncmF0aW9uLlxyXG4gKiBcclxuICogQHBhcmFtIGludGVncmF0aW9uT3B0aW9ucyAtIEludGVncmF0aW9uIG9wdGlvbnMgZm9yIEFXUyBjb25maWd1cmF0aW9uXHJcbiAqIEBwYXJhbSBkZXBlbmRlbmNpZXMgLSBBcnJheSBvZiBkZXBlbmRlbmN5IHRva2VucyB0byBpbmplY3RcclxuICogQHJldHVybnMgRmFjdG9yeSBmdW5jdGlvbiB3aXRoIGRlcGVuZGVuY3kgaW5qZWN0aW9uIHN1cHBvcnRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25maWdNb2R1bGVGYWN0b3J5V2l0aERlcGVuZGVuY2llcyhcclxuICBpbnRlZ3JhdGlvbk9wdGlvbnM6IEludGVncmF0aW9uT3B0aW9ucyA9IHt9LFxyXG4gIGRlcGVuZGVuY2llczogYW55W10gPSBbXVxyXG4pOiAoLi4uYXJnczogYW55W10pID0+IFByb21pc2U8Q29uZmlnTW9kdWxlT3B0aW9ucz4ge1xyXG4gIHJldHVybiBhc3luYyAoLi4uaW5qZWN0ZWREZXBlbmRlbmNpZXM6IGFueVtdKTogUHJvbWlzZTxDb25maWdNb2R1bGVPcHRpb25zPiA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBJbXBvcnQgc2VydmljZXMgZHluYW1pY2FsbHlcclxuICAgICAgY29uc3QgeyBBc3luY0NvbmZpZ0hlbHBlclNlcnZpY2UgfSA9IGF3YWl0IGltcG9ydCgnLi4vc2VydmljZXMvYXN5bmMtY29uZmlnLWhlbHBlci5zZXJ2aWNlJyk7XHJcbiAgICAgIGNvbnN0IHsgRmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UgfSA9IGF3YWl0IGltcG9ydCgnLi4vc2VydmljZXMvZmFjdG9yeS1yZWdpc3RyYXRpb24uc2VydmljZScpO1xyXG4gICAgICBjb25zdCB7IENvbmZpZ3VyYXRpb25GYWN0b3J5UHJvdmlkZXJJbXBsIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3Byb3ZpZGVycy9jb25maWd1cmF0aW9uLWZhY3RvcnkucHJvdmlkZXInKTtcclxuICAgICAgY29uc3QgeyBBd3NDb25maWd1cmF0aW9uTG9hZGVyU2VydmljZSB9ID0gYXdhaXQgaW1wb3J0KCcuLi9wcm92aWRlcnMvYXdzLWNvbmZpZ3VyYXRpb24tbG9hZGVyLnNlcnZpY2UnKTtcclxuICAgICAgY29uc3QgeyBQcmVjZWRlbmNlSGFuZGxlclNlcnZpY2UgfSA9IGF3YWl0IGltcG9ydCgnLi4vc2VydmljZXMvcHJlY2VkZW5jZS1oYW5kbGVyLnNlcnZpY2UnKTtcclxuICAgICAgY29uc3QgeyBOYW1lc3BhY2VIYW5kbGVyU2VydmljZSB9ID0gYXdhaXQgaW1wb3J0KCcuLi9zZXJ2aWNlcy9uYW1lc3BhY2UtaGFuZGxlci5zZXJ2aWNlJyk7XHJcbiAgICAgIGNvbnN0IHsgVmFsaWRhdGlvbkludGVncmF0aW9uU2VydmljZSB9ID0gYXdhaXQgaW1wb3J0KCcuLi9zZXJ2aWNlcy92YWxpZGF0aW9uLWludGVncmF0aW9uLnNlcnZpY2UnKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBzZXJ2aWNlIGluc3RhbmNlc1xyXG4gICAgICBjb25zdCBwcmVjZWRlbmNlSGFuZGxlciA9IG5ldyBQcmVjZWRlbmNlSGFuZGxlclNlcnZpY2UoKTtcclxuICAgICAgY29uc3QgY29uZmlnRmFjdG9yeVByb3ZpZGVyID0gbmV3IENvbmZpZ3VyYXRpb25GYWN0b3J5UHJvdmlkZXJJbXBsKHByZWNlZGVuY2VIYW5kbGVyKTtcclxuICAgICAgY29uc3QgYXdzTG9hZGVyID0gbmV3IEF3c0NvbmZpZ3VyYXRpb25Mb2FkZXJTZXJ2aWNlKGludGVncmF0aW9uT3B0aW9ucyk7XHJcbiAgICAgIGNvbnN0IG5hbWVzcGFjZUhhbmRsZXIgPSBuZXcgTmFtZXNwYWNlSGFuZGxlclNlcnZpY2UoKTtcclxuICAgICAgY29uc3QgdmFsaWRhdGlvblNlcnZpY2UgPSBuZXcgVmFsaWRhdGlvbkludGVncmF0aW9uU2VydmljZSgpO1xyXG4gICAgICBjb25zdCBmYWN0b3J5UmVnaXN0cmF0aW9uID0gbmV3IEZhY3RvcnlSZWdpc3RyYXRpb25TZXJ2aWNlKFxyXG4gICAgICAgIGNvbmZpZ0ZhY3RvcnlQcm92aWRlcixcclxuICAgICAgICBhd3NMb2FkZXIsXHJcbiAgICAgICAgbmFtZXNwYWNlSGFuZGxlcixcclxuICAgICAgICB2YWxpZGF0aW9uU2VydmljZSxcclxuICAgICAgICBpbnRlZ3JhdGlvbk9wdGlvbnNcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgYXN5bmNIZWxwZXIgPSBuZXcgQXN5bmNDb25maWdIZWxwZXJTZXJ2aWNlKGZhY3RvcnlSZWdpc3RyYXRpb24sIGludGVncmF0aW9uT3B0aW9ucyk7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgZmFjdG9yeSB3aXRoIGRlcGVuZGVuY2llc1xyXG4gICAgICBjb25zdCBmYWN0b3J5V2l0aERlcHMgPSBhc3luY0hlbHBlci5jcmVhdGVBc3luY0ZhY3RvcnlXaXRoRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7XHJcbiAgICAgIFxyXG4gICAgICAvLyBFeGVjdXRlIGZhY3Rvcnkgd2l0aCBpbmplY3RlZCBkZXBlbmRlbmNpZXNcclxuICAgICAgcmV0dXJuIGF3YWl0IGZhY3RvcnlXaXRoRGVwcyguLi5pbmplY3RlZERlcGVuZGVuY2llcyk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAvLyBIYW5kbGUgZXJyb3IgYmFzZWQgb24gaW50ZWdyYXRpb24gb3B0aW9uc1xyXG4gICAgICBpZiAoaW50ZWdyYXRpb25PcHRpb25zLmZhaWxPbkF3c0Vycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIFJldHVybiBiYXNpYyBvcHRpb25zIGFzIGZhbGxiYWNrXHJcbiAgICAgIGlmIChpbnRlZ3JhdGlvbk9wdGlvbnMuZmFsbGJhY2tUb0xvY2FsKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGxvYWQ6IFtdLFxyXG4gICAgICAgICAgaXNHbG9iYWw6IGludGVncmF0aW9uT3B0aW9ucy5yZWdpc3Rlckdsb2JhbGx5ID8/IHRydWUsXHJcbiAgICAgICAgICBjYWNoZTogaW50ZWdyYXRpb25PcHRpb25zLmZhY3RvcnlPcHRpb25zPy5jYWNoZSA/PyB0cnVlLFxyXG4gICAgICAgICAgZXhwYW5kVmFyaWFibGVzOiBpbnRlZ3JhdGlvbk9wdGlvbnMuZmFjdG9yeU9wdGlvbnM/LmV4cGFuZFZhcmlhYmxlcyA/PyB0cnVlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHRocm93IGVycm9yO1xyXG4gICAgfVxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiBBV1MgY29uZmlndXJhdGlvbiBpcyBhdmFpbGFibGUgZm9yIGludGVncmF0aW9uLlxyXG4gKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSBpZiBBV1MgaW50ZWdyYXRpb24gc2hvdWxkIGJlIGVuYWJsZWQuXHJcbiAqIFxyXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEludGVncmF0aW9uIG9wdGlvbnMgZm9yIEFXUyBjb25maWd1cmF0aW9uXHJcbiAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIGF2YWlsYWJpbGl0eSBzdGF0dXNcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0F3c0NvbmZpZ0F2YWlsYWJpbGl0eShcclxuICBvcHRpb25zOiBJbnRlZ3JhdGlvbk9wdGlvbnMgPSB7fVxyXG4pOiBQcm9taXNlPHtcclxuICBpc0F2YWlsYWJsZTogYm9vbGVhbjtcclxuICBmYWN0b3JpZXNDb3VudDogbnVtYmVyO1xyXG4gIGVycm9yczogc3RyaW5nW107XHJcbn0+IHtcclxuICB0cnkge1xyXG4gICAgLy8gSW1wb3J0IHNlcnZpY2VzIGR5bmFtaWNhbGx5XHJcbiAgICBjb25zdCB7IEFzeW5jQ29uZmlnSGVscGVyU2VydmljZSB9ID0gYXdhaXQgaW1wb3J0KCcuLi9zZXJ2aWNlcy9hc3luYy1jb25maWctaGVscGVyLnNlcnZpY2UnKTtcclxuICAgIGNvbnN0IHsgRmFjdG9yeVJlZ2lzdHJhdGlvblNlcnZpY2UgfSA9IGF3YWl0IGltcG9ydCgnLi4vc2VydmljZXMvZmFjdG9yeS1yZWdpc3RyYXRpb24uc2VydmljZScpO1xyXG4gICAgY29uc3QgeyBDb25maWd1cmF0aW9uRmFjdG9yeVByb3ZpZGVySW1wbCB9ID0gYXdhaXQgaW1wb3J0KCcuLi9wcm92aWRlcnMvY29uZmlndXJhdGlvbi1mYWN0b3J5LnByb3ZpZGVyJyk7XHJcbiAgICBjb25zdCB7IEF3c0NvbmZpZ3VyYXRpb25Mb2FkZXJTZXJ2aWNlIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3Byb3ZpZGVycy9hd3MtY29uZmlndXJhdGlvbi1sb2FkZXIuc2VydmljZScpO1xyXG4gICAgY29uc3QgeyBQcmVjZWRlbmNlSGFuZGxlclNlcnZpY2UgfSA9IGF3YWl0IGltcG9ydCgnLi4vc2VydmljZXMvcHJlY2VkZW5jZS1oYW5kbGVyLnNlcnZpY2UnKTtcclxuICAgIGNvbnN0IHsgTmFtZXNwYWNlSGFuZGxlclNlcnZpY2UgfSA9IGF3YWl0IGltcG9ydCgnLi4vc2VydmljZXMvbmFtZXNwYWNlLWhhbmRsZXIuc2VydmljZScpO1xyXG4gICAgY29uc3QgeyBWYWxpZGF0aW9uSW50ZWdyYXRpb25TZXJ2aWNlIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24taW50ZWdyYXRpb24uc2VydmljZScpO1xyXG5cclxuICAgIC8vIENyZWF0ZSBzZXJ2aWNlIGluc3RhbmNlc1xyXG4gICAgY29uc3QgcHJlY2VkZW5jZUhhbmRsZXIgPSBuZXcgUHJlY2VkZW5jZUhhbmRsZXJTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBjb25maWdGYWN0b3J5UHJvdmlkZXIgPSBuZXcgQ29uZmlndXJhdGlvbkZhY3RvcnlQcm92aWRlckltcGwocHJlY2VkZW5jZUhhbmRsZXIpO1xyXG4gICAgY29uc3QgYXdzTG9hZGVyID0gbmV3IEF3c0NvbmZpZ3VyYXRpb25Mb2FkZXJTZXJ2aWNlKG9wdGlvbnMpO1xyXG4gICAgY29uc3QgbmFtZXNwYWNlSGFuZGxlciA9IG5ldyBOYW1lc3BhY2VIYW5kbGVyU2VydmljZSgpO1xyXG4gICAgY29uc3QgdmFsaWRhdGlvblNlcnZpY2UgPSBuZXcgVmFsaWRhdGlvbkludGVncmF0aW9uU2VydmljZSgpO1xyXG4gICAgY29uc3QgZmFjdG9yeVJlZ2lzdHJhdGlvbiA9IG5ldyBGYWN0b3J5UmVnaXN0cmF0aW9uU2VydmljZShcclxuICAgICAgY29uZmlnRmFjdG9yeVByb3ZpZGVyLFxyXG4gICAgICBhd3NMb2FkZXIsXHJcbiAgICAgIG5hbWVzcGFjZUhhbmRsZXIsXHJcbiAgICAgIHZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgICBvcHRpb25zXHJcbiAgICApO1xyXG4gICAgY29uc3QgYXN5bmNIZWxwZXIgPSBuZXcgQXN5bmNDb25maWdIZWxwZXJTZXJ2aWNlKGZhY3RvcnlSZWdpc3RyYXRpb24sIG9wdGlvbnMpO1xyXG5cclxuICAgIC8vIENoZWNrIGF2YWlsYWJpbGl0eVxyXG4gICAgcmV0dXJuIGF3YWl0IGFzeW5jSGVscGVyLmNoZWNrQXN5bmNBdmFpbGFiaWxpdHkoKTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc3QgYXZhaWxhYmlsaXR5RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XHJcbiAgICBcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGlzQXZhaWxhYmxlOiBmYWxzZSxcclxuICAgICAgZmFjdG9yaWVzQ291bnQ6IDAsXHJcbiAgICAgIGVycm9yczogW2F2YWlsYWJpbGl0eUVycm9yLm1lc3NhZ2VdLFxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// Integration utilities exports
|
|
2
|
+
export * from './config-integration.util';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvaW50ZWdyYXRpb24vdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0NBQWdDO0FBQ2hDLGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbnRlZ3JhdGlvbiB1dGlsaXRpZXMgZXhwb3J0c1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy1pbnRlZ3JhdGlvbi51dGlsJzsiXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract ConfigService interface for dependency injection.
|
|
3
|
+
* Provides type-safe access to configuration values with generic type support.
|
|
4
|
+
*/
|
|
5
|
+
export class ConfigService {
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXNlcnZpY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2ludGVyZmFjZXMvY29uZmlnLXNlcnZpY2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sT0FBZ0IsYUFBYTtDQW1CbEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQWJzdHJhY3QgQ29uZmlnU2VydmljZSBpbnRlcmZhY2UgZm9yIGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxyXG4gKiBQcm92aWRlcyB0eXBlLXNhZmUgYWNjZXNzIHRvIGNvbmZpZ3VyYXRpb24gdmFsdWVzIHdpdGggZ2VuZXJpYyB0eXBlIHN1cHBvcnQuXHJcbiAqL1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29uZmlnU2VydmljZTxUID0gYW55PiB7XHJcbiAgLyoqXHJcbiAgICogR2V0IGEgY29uZmlndXJhdGlvbiB2YWx1ZSBieSBrZXkgd2l0aCB0eXBlIHNhZmV0eS5cclxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGNvbmZpZ3VyYXRpb24ga2V5IHRvIHJldHJpZXZlXHJcbiAgICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24gdmFsdWUgd2l0aCBwcm9wZXIgdHlwaW5nXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgZ2V0PEsgZXh0ZW5kcyBrZXlvZiBUPihrZXk6IEspOiBUW0tdO1xyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGUgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGhhcyBiZWVuIGluaXRpYWxpemVkLlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHNlcnZpY2UgaXMgcmVhZHkgdG8gc2VydmUgY29uZmlndXJhdGlvbiB2YWx1ZXNcclxuICAgKi9cclxuICBhYnN0cmFjdCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhbGwgY29uZmlndXJhdGlvbiB2YWx1ZXMuXHJcbiAgICogQHJldHVybnMgVGhlIGNvbXBsZXRlIGNvbmZpZ3VyYXRpb24gb2JqZWN0XHJcbiAgICovXHJcbiAgYWJzdHJhY3QgZ2V0QWxsKCk6IFQ7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Default configuration schema using Zod.
|
|
4
|
+
* Provides a flexible base schema that can be extended by applications.
|
|
5
|
+
*/
|
|
6
|
+
export const defaultConfigSchema = z.object({
|
|
7
|
+
/** Node.js environment */
|
|
8
|
+
NODE_ENV: z.enum(['production', 'development', 'test']).optional(),
|
|
9
|
+
/** Application environment (mirrors NODE_ENV with 'local' default) */
|
|
10
|
+
APP_ENV: z.enum(['production', 'test', 'development', 'local']).default('local'),
|
|
11
|
+
/** AWS region for services */
|
|
12
|
+
AWS_REGION: z.string().optional(),
|
|
13
|
+
/** AWS profile for local development */
|
|
14
|
+
AWS_PROFILE: z.string().optional(),
|
|
15
|
+
/** Application port */
|
|
16
|
+
PORT: z.coerce.number().positive().optional(),
|
|
17
|
+
/** Application host */
|
|
18
|
+
HOST: z.string().optional(),
|
|
19
|
+
/** Log level */
|
|
20
|
+
LOG_LEVEL: z.enum(['error', 'warn', 'info', 'debug', 'verbose']).optional(),
|
|
21
|
+
/** Database URL */
|
|
22
|
+
DATABASE_URL: z.string().url().optional(),
|
|
23
|
+
/** Redis URL */
|
|
24
|
+
REDIS_URL: z.string().url().optional(),
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* Environment-specific validation schemas.
|
|
28
|
+
*/
|
|
29
|
+
export const environmentSchemas = {
|
|
30
|
+
local: defaultConfigSchema.extend({
|
|
31
|
+
// Local environment may have fewer required fields
|
|
32
|
+
AWS_REGION: z.string().optional(),
|
|
33
|
+
}),
|
|
34
|
+
development: defaultConfigSchema.extend({
|
|
35
|
+
// Development environment requirements
|
|
36
|
+
AWS_REGION: z.string().min(1, 'AWS_REGION is required in development'),
|
|
37
|
+
}),
|
|
38
|
+
test: defaultConfigSchema.extend({
|
|
39
|
+
// Test environment requirements
|
|
40
|
+
AWS_REGION: z.string().min(1, 'AWS_REGION is required in test'),
|
|
41
|
+
}),
|
|
42
|
+
production: defaultConfigSchema.extend({
|
|
43
|
+
// Production environment requirements
|
|
44
|
+
AWS_REGION: z.string().min(1, 'AWS_REGION is required in production'),
|
|
45
|
+
LOG_LEVEL: z.enum(['error', 'warn', 'info']).default('info'),
|
|
46
|
+
}),
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Helper function to get the appropriate schema for the current environment.
|
|
50
|
+
*/
|
|
51
|
+
export function getSchemaForEnvironment(appEnv) {
|
|
52
|
+
const env = appEnv;
|
|
53
|
+
return environmentSchemas[env] || defaultConfigSchema;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Validation helper for APP_ENV values.
|
|
57
|
+
*/
|
|
58
|
+
export const appEnvSchema = z.enum(['production', 'test', 'development', 'local']);
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zY2hlbWEuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2ludGVyZmFjZXMvZGVmYXVsdC1zY2hlbWEuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEI7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxQywwQkFBMEI7SUFDMUIsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBRWxFLHNFQUFzRTtJQUN0RSxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUVoRiw4QkFBOEI7SUFDOUIsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFFakMsd0NBQXdDO0lBQ3hDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBRWxDLHVCQUF1QjtJQUN2QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFFN0MsdUJBQXVCO0lBQ3ZCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBRTNCLGdCQUFnQjtJQUNoQixTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUUzRSxtQkFBbUI7SUFDbkIsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFFekMsZ0JBQWdCO0lBQ2hCLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ3ZDLENBQUMsQ0FBQztBQU9IOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztRQUNoQyxtREFBbUQ7UUFDbkQsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDbEMsQ0FBQztJQUVGLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7UUFDdEMsdUNBQXVDO1FBQ3ZDLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSx1Q0FBdUMsQ0FBQztLQUN2RSxDQUFDO0lBRUYsSUFBSSxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztRQUMvQixnQ0FBZ0M7UUFDaEMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGdDQUFnQyxDQUFDO0tBQ2hFLENBQUM7SUFFRixVQUFVLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1FBQ3JDLHNDQUFzQztRQUN0QyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsc0NBQXNDLENBQUM7UUFDckUsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUM3RCxDQUFDO0NBQ0gsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE1BQWM7SUFDcEQsTUFBTSxHQUFHLEdBQUcsTUFBeUMsQ0FBQztJQUN0RCxPQUFPLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLG1CQUFtQixDQUFDO0FBQ3hELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xyXG5cclxuLyoqXHJcbiAqIERlZmF1bHQgY29uZmlndXJhdGlvbiBzY2hlbWEgdXNpbmcgWm9kLlxyXG4gKiBQcm92aWRlcyBhIGZsZXhpYmxlIGJhc2Ugc2NoZW1hIHRoYXQgY2FuIGJlIGV4dGVuZGVkIGJ5IGFwcGxpY2F0aW9ucy5cclxuICovXHJcbmV4cG9ydCBjb25zdCBkZWZhdWx0Q29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xyXG4gIC8qKiBOb2RlLmpzIGVudmlyb25tZW50ICovXHJcbiAgTk9ERV9FTlY6IHouZW51bShbJ3Byb2R1Y3Rpb24nLCAnZGV2ZWxvcG1lbnQnLCAndGVzdCddKS5vcHRpb25hbCgpLFxyXG4gIFxyXG4gIC8qKiBBcHBsaWNhdGlvbiBlbnZpcm9ubWVudCAobWlycm9ycyBOT0RFX0VOViB3aXRoICdsb2NhbCcgZGVmYXVsdCkgKi9cclxuICBBUFBfRU5WOiB6LmVudW0oWydwcm9kdWN0aW9uJywgJ3Rlc3QnLCAnZGV2ZWxvcG1lbnQnLCAnbG9jYWwnXSkuZGVmYXVsdCgnbG9jYWwnKSxcclxuICBcclxuICAvKiogQVdTIHJlZ2lvbiBmb3Igc2VydmljZXMgKi9cclxuICBBV1NfUkVHSU9OOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXHJcbiAgXHJcbiAgLyoqIEFXUyBwcm9maWxlIGZvciBsb2NhbCBkZXZlbG9wbWVudCAqL1xyXG4gIEFXU19QUk9GSUxFOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXHJcbiAgXHJcbiAgLyoqIEFwcGxpY2F0aW9uIHBvcnQgKi9cclxuICBQT1JUOiB6LmNvZXJjZS5udW1iZXIoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCksXHJcbiAgXHJcbiAgLyoqIEFwcGxpY2F0aW9uIGhvc3QgKi9cclxuICBIT1NUOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXHJcbiAgXHJcbiAgLyoqIExvZyBsZXZlbCAqL1xyXG4gIExPR19MRVZFTDogei5lbnVtKFsnZXJyb3InLCAnd2FybicsICdpbmZvJywgJ2RlYnVnJywgJ3ZlcmJvc2UnXSkub3B0aW9uYWwoKSxcclxuICBcclxuICAvKiogRGF0YWJhc2UgVVJMICovXHJcbiAgREFUQUJBU0VfVVJMOiB6LnN0cmluZygpLnVybCgpLm9wdGlvbmFsKCksXHJcbiAgXHJcbiAgLyoqIFJlZGlzIFVSTCAqL1xyXG4gIFJFRElTX1VSTDogei5zdHJpbmcoKS51cmwoKS5vcHRpb25hbCgpLFxyXG59KTtcclxuXHJcbi8qKlxyXG4gKiBUeXBlIGluZmVyZW5jZSBmb3IgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBzY2hlbWEuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBEZWZhdWx0Q29uZmlnU2NoZW1hID0gei5pbmZlcjx0eXBlb2YgZGVmYXVsdENvbmZpZ1NjaGVtYT47XHJcblxyXG4vKipcclxuICogRW52aXJvbm1lbnQtc3BlY2lmaWMgdmFsaWRhdGlvbiBzY2hlbWFzLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGVudmlyb25tZW50U2NoZW1hcyA9IHtcclxuICBsb2NhbDogZGVmYXVsdENvbmZpZ1NjaGVtYS5leHRlbmQoe1xyXG4gICAgLy8gTG9jYWwgZW52aXJvbm1lbnQgbWF5IGhhdmUgZmV3ZXIgcmVxdWlyZWQgZmllbGRzXHJcbiAgICBBV1NfUkVHSU9OOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXHJcbiAgfSksXHJcbiAgXHJcbiAgZGV2ZWxvcG1lbnQ6IGRlZmF1bHRDb25maWdTY2hlbWEuZXh0ZW5kKHtcclxuICAgIC8vIERldmVsb3BtZW50IGVudmlyb25tZW50IHJlcXVpcmVtZW50c1xyXG4gICAgQVdTX1JFR0lPTjogei5zdHJpbmcoKS5taW4oMSwgJ0FXU19SRUdJT04gaXMgcmVxdWlyZWQgaW4gZGV2ZWxvcG1lbnQnKSxcclxuICB9KSxcclxuICBcclxuICB0ZXN0OiBkZWZhdWx0Q29uZmlnU2NoZW1hLmV4dGVuZCh7XHJcbiAgICAvLyBUZXN0IGVudmlyb25tZW50IHJlcXVpcmVtZW50c1xyXG4gICAgQVdTX1JFR0lPTjogei5zdHJpbmcoKS5taW4oMSwgJ0FXU19SRUdJT04gaXMgcmVxdWlyZWQgaW4gdGVzdCcpLFxyXG4gIH0pLFxyXG4gIFxyXG4gIHByb2R1Y3Rpb246IGRlZmF1bHRDb25maWdTY2hlbWEuZXh0ZW5kKHtcclxuICAgIC8vIFByb2R1Y3Rpb24gZW52aXJvbm1lbnQgcmVxdWlyZW1lbnRzXHJcbiAgICBBV1NfUkVHSU9OOiB6LnN0cmluZygpLm1pbigxLCAnQVdTX1JFR0lPTiBpcyByZXF1aXJlZCBpbiBwcm9kdWN0aW9uJyksXHJcbiAgICBMT0dfTEVWRUw6IHouZW51bShbJ2Vycm9yJywgJ3dhcm4nLCAnaW5mbyddKS5kZWZhdWx0KCdpbmZvJyksXHJcbiAgfSksXHJcbn07XHJcblxyXG4vKipcclxuICogSGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgYXBwcm9wcmlhdGUgc2NoZW1hIGZvciB0aGUgY3VycmVudCBlbnZpcm9ubWVudC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2hlbWFGb3JFbnZpcm9ubWVudChhcHBFbnY6IHN0cmluZyk6IHouWm9kU2NoZW1hIHtcclxuICBjb25zdCBlbnYgPSBhcHBFbnYgYXMga2V5b2YgdHlwZW9mIGVudmlyb25tZW50U2NoZW1hcztcclxuICByZXR1cm4gZW52aXJvbm1lbnRTY2hlbWFzW2Vudl0gfHwgZGVmYXVsdENvbmZpZ1NjaGVtYTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFZhbGlkYXRpb24gaGVscGVyIGZvciBBUFBfRU5WIHZhbHVlcy5cclxuICovXHJcbmV4cG9ydCBjb25zdCBhcHBFbnZTY2hlbWEgPSB6LmVudW0oWydwcm9kdWN0aW9uJywgJ3Rlc3QnLCAnZGV2ZWxvcG1lbnQnLCAnbG9jYWwnXSk7XHJcblxyXG4vKipcclxuICogVHlwZSBmb3IgdmFsaWQgQVBQX0VOViB2YWx1ZXMuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBBcHBFbnYgPSB6LmluZmVyPHR5cGVvZiBhcHBFbnZTY2hlbWE+O1xyXG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Core interfaces
|
|
2
|
+
export * from './config-service.interface';
|
|
3
|
+
export * from './module-options.interface';
|
|
4
|
+
// Error classes - re-export from core for backward compatibility
|
|
5
|
+
export { ConfigurationError, ValidationError, AWSServiceError, ConfigurationLoadError, MissingConfigurationError, } from '@dyanet/config-aws';
|
|
6
|
+
// Default schema and types
|
|
7
|
+
export * from './default-schema.interface';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0I7QUFDbEIsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDO0FBRTNDLGlFQUFpRTtBQUNqRSxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLHlCQUF5QixHQUMxQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLDJCQUEyQjtBQUMzQixjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29yZSBpbnRlcmZhY2VzXHJcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnLXNlcnZpY2UuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGUtb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5cclxuLy8gRXJyb3IgY2xhc3NlcyAtIHJlLWV4cG9ydCBmcm9tIGNvcmUgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcclxuZXhwb3J0IHtcclxuICBDb25maWd1cmF0aW9uRXJyb3IsXHJcbiAgVmFsaWRhdGlvbkVycm9yLFxyXG4gIEFXU1NlcnZpY2VFcnJvcixcclxuICBDb25maWd1cmF0aW9uTG9hZEVycm9yLFxyXG4gIE1pc3NpbmdDb25maWd1cmF0aW9uRXJyb3IsXHJcbn0gZnJvbSAnQGR5YW5ldC9jb25maWctYXdzJztcclxuXHJcbi8vIERlZmF1bHQgc2NoZW1hIGFuZCB0eXBlc1xyXG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtc2NoZW1hLmludGVyZmFjZSc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW9wdGlvbnMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2ludGVyZmFjZXMvbW9kdWxlLW9wdGlvbnMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBab2RUeXBlIH0gZnJvbSAnem9kJztcclxuXHJcbi8qKlxyXG4gKiBDb25maWd1cmF0aW9uIGZvciBBV1MgU2VjcmV0cyBNYW5hZ2VyIGludGVncmF0aW9uLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTZWNyZXRzTWFuYWdlckNvbmZpZyB7XHJcbiAgLyoqIEFXUyByZWdpb24gZm9yIFNlY3JldHMgTWFuYWdlciAqL1xyXG4gIHJlZ2lvbj86IHN0cmluZztcclxuICAvKiogQmFzZSBwYXRoIGZvciBzZWNyZXRzIGluIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgKi9cclxuICBwYXRocz86IHtcclxuICAgIGRldmVsb3BtZW50Pzogc3RyaW5nO1xyXG4gICAgdGVzdD86IHN0cmluZztcclxuICAgIHByb2R1Y3Rpb24/OiBzdHJpbmc7XHJcbiAgfTtcclxuICAvKiogV2hldGhlciB0byBlbmFibGUgU2VjcmV0cyBNYW5hZ2VyIGludGVncmF0aW9uICovXHJcbiAgZW5hYmxlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb25maWd1cmF0aW9uIGZvciBBV1MgU3lzdGVtcyBNYW5hZ2VyIFBhcmFtZXRlciBTdG9yZSBpbnRlZ3JhdGlvbi5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU1NNQ29uZmlnIHtcclxuICAvKiogQVdTIHJlZ2lvbiBmb3IgU1NNIFBhcmFtZXRlciBTdG9yZSAqL1xyXG4gIHJlZ2lvbj86IHN0cmluZztcclxuICAvKiogQmFzZSBwYXRoIGZvciBwYXJhbWV0ZXJzIGluIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgKi9cclxuICBwYXRocz86IHtcclxuICAgIGRldmVsb3BtZW50Pzogc3RyaW5nO1xyXG4gICAgdGVzdD86IHN0cmluZztcclxuICAgIHByb2R1Y3Rpb24/OiBzdHJpbmc7XHJcbiAgfTtcclxuICAvKiogV2hldGhlciB0byBlbmFibGUgU1NNIFBhcmFtZXRlciBTdG9yZSBpbnRlZ3JhdGlvbiAqL1xyXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xyXG4gIC8qKiBXaGV0aGVyIHRvIGRlY3J5cHQgU2VjdXJlU3RyaW5nIHBhcmFtZXRlcnMgKi9cclxuICBkZWNyeXB0PzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBOZXN0SlMgQVdTIENvbmZpZ3VyYXRpb24gbW9kdWxlLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBOZXN0Q29uZmlnQXdzTW9kdWxlT3B0aW9uczxUID0gYW55PiB7XHJcbiAgLyoqIFpvZCBzY2hlbWEgZm9yIGNvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiAqL1xyXG4gIHNjaGVtYT86IFpvZFR5cGU8VD47XHJcbiAgXHJcbiAgLyoqIENvbmZpZ3VyYXRpb24gZm9yIEFXUyBTZWNyZXRzIE1hbmFnZXIgaW50ZWdyYXRpb24gKi9cclxuICBzZWNyZXRzTWFuYWdlckNvbmZpZz86IFNlY3JldHNNYW5hZ2VyQ29uZmlnO1xyXG4gIFxyXG4gIC8qKiBDb25maWd1cmF0aW9uIGZvciBBV1MgU3lzdGVtcyBNYW5hZ2VyIFBhcmFtZXRlciBTdG9yZSBpbnRlZ3JhdGlvbiAqL1xyXG4gIHNzbUNvbmZpZz86IFNTTUNvbmZpZztcclxuICBcclxuICAvKiogUHJlZml4IGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGUuZy4sICdBUFBfJykgKi9cclxuICBlbnZQcmVmaXg/OiBzdHJpbmc7XHJcbiAgXHJcbiAgLyoqIFdoZXRoZXIgdG8gaWdub3JlIHZhbGlkYXRpb24gZXJyb3JzIGFuZCBjb250aW51ZSB3aXRoIHBhcnRpYWwgY29uZmlnICovXHJcbiAgaWdub3JlVmFsaWRhdGlvbkVycm9ycz86IGJvb2xlYW47XHJcbiAgXHJcbiAgLyoqIEN1c3RvbSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIGZvciBBUFBfRU5WIChkZWZhdWx0cyB0byAnQVBQX0VOVicpICovXHJcbiAgYXBwRW52VmFyaWFibGU/OiBzdHJpbmc7XHJcbiAgXHJcbiAgLyoqIFdoZXRoZXIgdG8gbG9hZCBjb25maWd1cmF0aW9uIHN5bmNocm9ub3VzbHkgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXphdGlvbiAqL1xyXG4gIGxvYWRTeW5jPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFzeW5jIGZhY3Rvcnkgb3B0aW9ucyBmb3IgZHluYW1pYyBtb2R1bGUgY29uZmlndXJhdGlvbi5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmVzdENvbmZpZ0F3c01vZHVsZUFzeW5jT3B0aW9uczxUID0gYW55PiB7XHJcbiAgLyoqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIG1vZHVsZSBvcHRpb25zICovXHJcbiAgdXNlRmFjdG9yeTogKC4uLmFyZ3M6IGFueVtdKSA9PiBQcm9taXNlPE5lc3RDb25maWdBd3NNb2R1bGVPcHRpb25zPFQ+PiB8IE5lc3RDb25maWdBd3NNb2R1bGVPcHRpb25zPFQ+O1xyXG4gIFxyXG4gIC8qKiBEZXBlbmRlbmNpZXMgdG8gaW5qZWN0IGludG8gdGhlIGZhY3RvcnkgZnVuY3Rpb24gKi9cclxuICBpbmplY3Q/OiBhbnlbXTtcclxuICBcclxuICAvKiogSW1wb3J0cyByZXF1aXJlZCBmb3IgdGhlIGZhY3RvcnkgZnVuY3Rpb24gKi9cclxuICBpbXBvcnRzPzogYW55W107XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var ConfigServiceImpl_1;
|
|
11
|
+
import { Injectable, Logger } from '@nestjs/common';
|
|
12
|
+
import { ConfigManager, ConfigurationError } from '@dyanet/config-aws';
|
|
13
|
+
import { ConfigService } from '../interfaces/config-service.interface';
|
|
14
|
+
/**
|
|
15
|
+
* NestJS Injectable wrapper around ConfigManager from @dyanet/config-aws.
|
|
16
|
+
* Provides type-safe configuration access with NestJS dependency injection support.
|
|
17
|
+
*
|
|
18
|
+
* This is a thin adapter layer that delegates all configuration loading and
|
|
19
|
+
* management to the framework-agnostic ConfigManager from config-aws.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { ConfigServiceImpl } from '@dyanet/nestjs-config-aws';
|
|
24
|
+
* import { z } from 'zod';
|
|
25
|
+
*
|
|
26
|
+
* const schema = z.object({
|
|
27
|
+
* DATABASE_URL: z.string(),
|
|
28
|
+
* PORT: z.coerce.number().default(3000),
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* const configService = new ConfigServiceImpl({
|
|
32
|
+
* loaders: [new EnvironmentLoader()],
|
|
33
|
+
* schema,
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* await configService.initialize();
|
|
37
|
+
* const dbUrl = configService.get('DATABASE_URL');
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
let ConfigServiceImpl = ConfigServiceImpl_1 = class ConfigServiceImpl extends ConfigService {
|
|
41
|
+
logger = new Logger(ConfigServiceImpl_1.name);
|
|
42
|
+
configManager;
|
|
43
|
+
enableNestLogging;
|
|
44
|
+
constructor(options = {}) {
|
|
45
|
+
super();
|
|
46
|
+
this.enableNestLogging = options.enableNestLogging ?? true;
|
|
47
|
+
// Create ConfigManager from config-aws with provided options
|
|
48
|
+
this.configManager = new ConfigManager({
|
|
49
|
+
loaders: options.loaders,
|
|
50
|
+
schema: options.schema,
|
|
51
|
+
precedence: options.precedence,
|
|
52
|
+
validateOnLoad: options.validateOnLoad,
|
|
53
|
+
enableLogging: options.enableLogging,
|
|
54
|
+
logger: options.logger,
|
|
55
|
+
verbose: options.verbose,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Initialize the configuration service by loading configuration from all sources.
|
|
60
|
+
* This method should be called during application startup.
|
|
61
|
+
*
|
|
62
|
+
* @throws ConfigurationError if loading or validation fails
|
|
63
|
+
*/
|
|
64
|
+
async initialize() {
|
|
65
|
+
if (this.configManager.isLoaded()) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
if (this.enableNestLogging) {
|
|
70
|
+
this.logger.log('Initializing configuration service...');
|
|
71
|
+
}
|
|
72
|
+
await this.configManager.load();
|
|
73
|
+
if (this.enableNestLogging) {
|
|
74
|
+
this.logger.log('Configuration service initialized successfully');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
const errorMessage = `Failed to initialize configuration service: ${error instanceof Error ? error.message : String(error)}`;
|
|
79
|
+
this.logger.error(errorMessage);
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get a configuration value by key with type safety.
|
|
85
|
+
*
|
|
86
|
+
* @param key - The configuration key to retrieve
|
|
87
|
+
* @returns The configuration value with proper typing
|
|
88
|
+
* @throws ConfigurationError if configuration is not initialized
|
|
89
|
+
*/
|
|
90
|
+
get(key) {
|
|
91
|
+
if (!this.configManager.isLoaded()) {
|
|
92
|
+
throw new ConfigurationError('Configuration service not initialized. Call initialize() first.');
|
|
93
|
+
}
|
|
94
|
+
return this.configManager.get(key);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Check if the configuration service has been initialized.
|
|
98
|
+
*
|
|
99
|
+
* @returns True if the service is ready to serve configuration values
|
|
100
|
+
*/
|
|
101
|
+
isInitialized() {
|
|
102
|
+
return this.configManager.isLoaded();
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get all configuration values.
|
|
106
|
+
*
|
|
107
|
+
* @returns The complete configuration object
|
|
108
|
+
* @throws ConfigurationError if configuration is not initialized
|
|
109
|
+
*/
|
|
110
|
+
getAll() {
|
|
111
|
+
if (!this.configManager.isLoaded()) {
|
|
112
|
+
throw new ConfigurationError('Configuration service not initialized. Call initialize() first.');
|
|
113
|
+
}
|
|
114
|
+
return this.configManager.getAll();
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get the current application environment.
|
|
118
|
+
*
|
|
119
|
+
* @returns The APP_ENV value or 'development' as default
|
|
120
|
+
*/
|
|
121
|
+
getAppEnv() {
|
|
122
|
+
return this.configManager.getAppEnv();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get the underlying ConfigManager instance.
|
|
126
|
+
* Useful for advanced use cases that need direct access to ConfigManager features.
|
|
127
|
+
*
|
|
128
|
+
* @returns The ConfigManager instance from @dyanet/config-aws
|
|
129
|
+
*/
|
|
130
|
+
getConfigManager() {
|
|
131
|
+
return this.configManager;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
ConfigServiceImpl = ConfigServiceImpl_1 = __decorate([
|
|
135
|
+
Injectable(),
|
|
136
|
+
__metadata("design:paramtypes", [Object])
|
|
137
|
+
], ConfigServiceImpl);
|
|
138
|
+
export { ConfigServiceImpl };
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQWN2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUVJLElBQU0saUJBQWlCLHlCQUF2QixNQUFNLGlCQUErQyxTQUFRLGFBQWdCO0lBQ2pFLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxtQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxhQUFhLENBQW1CO0lBQ2hDLGlCQUFpQixDQUFVO0lBRTVDLFlBQVksVUFBbUMsRUFBRTtRQUMvQyxLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDO1FBRTNELDZEQUE2RDtRQUM3RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksYUFBYSxDQUFJO1lBQ3hDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1lBQzlCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztZQUN0QyxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7WUFDcEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNkLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ2xDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBRUQsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRWhDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7WUFDcEUsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxZQUFZLEdBQUcsK0NBQStDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdILElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxHQUFHLENBQW9CLEdBQU07UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksa0JBQWtCLENBQzFCLGlFQUFpRSxDQUNsRSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxrQkFBa0IsQ0FDMUIsaUVBQWlFLENBQ2xFLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztDQUNGLENBQUE7QUE1R1ksaUJBQWlCO0lBRDdCLFVBQVUsRUFBRTs7R0FDQSxpQkFBaUIsQ0E0RzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTG9nZ2VyIH0gZnJvbSAnQG5lc3Rqcy9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdNYW5hZ2VyLCBDb25maWd1cmF0aW9uRXJyb3IgfSBmcm9tICdAZHlhbmV0L2NvbmZpZy1hd3MnO1xyXG5pbXBvcnQgdHlwZSB7IENvbmZpZ01hbmFnZXJPcHRpb25zIH0gZnJvbSAnQGR5YW5ldC9jb25maWctYXdzJztcclxuXHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy1zZXJ2aWNlLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBOZXN0SlMgQ29uZmlnU2VydmljZSB3cmFwcGVyLlxyXG4gKiBFeHRlbmRzIENvbmZpZ01hbmFnZXJPcHRpb25zIGZyb20gQGR5YW5ldC9jb25maWctYXdzLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb25maWdTZXJ2aWNlT3B0aW9uczxUID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IGV4dGVuZHMgQ29uZmlnTWFuYWdlck9wdGlvbnM8VD4ge1xyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIE5lc3RKUyBsb2dnaW5nXHJcbiAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAqL1xyXG4gIGVuYWJsZU5lc3RMb2dnaW5nPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIE5lc3RKUyBJbmplY3RhYmxlIHdyYXBwZXIgYXJvdW5kIENvbmZpZ01hbmFnZXIgZnJvbSBAZHlhbmV0L2NvbmZpZy1hd3MuXHJcbiAqIFByb3ZpZGVzIHR5cGUtc2FmZSBjb25maWd1cmF0aW9uIGFjY2VzcyB3aXRoIE5lc3RKUyBkZXBlbmRlbmN5IGluamVjdGlvbiBzdXBwb3J0LlxyXG4gKiBcclxuICogVGhpcyBpcyBhIHRoaW4gYWRhcHRlciBsYXllciB0aGF0IGRlbGVnYXRlcyBhbGwgY29uZmlndXJhdGlvbiBsb2FkaW5nIGFuZFxyXG4gKiBtYW5hZ2VtZW50IHRvIHRoZSBmcmFtZXdvcmstYWdub3N0aWMgQ29uZmlnTWFuYWdlciBmcm9tIGNvbmZpZy1hd3MuXHJcbiAqIFxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7IENvbmZpZ1NlcnZpY2VJbXBsIH0gZnJvbSAnQGR5YW5ldC9uZXN0anMtY29uZmlnLWF3cyc7XHJcbiAqIGltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xyXG4gKiBcclxuICogY29uc3Qgc2NoZW1hID0gei5vYmplY3Qoe1xyXG4gKiAgIERBVEFCQVNFX1VSTDogei5zdHJpbmcoKSxcclxuICogICBQT1JUOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDMwMDApLFxyXG4gKiB9KTtcclxuICogXHJcbiAqIGNvbnN0IGNvbmZpZ1NlcnZpY2UgPSBuZXcgQ29uZmlnU2VydmljZUltcGwoe1xyXG4gKiAgIGxvYWRlcnM6IFtuZXcgRW52aXJvbm1lbnRMb2FkZXIoKV0sXHJcbiAqICAgc2NoZW1hLFxyXG4gKiB9KTtcclxuICogXHJcbiAqIGF3YWl0IGNvbmZpZ1NlcnZpY2UuaW5pdGlhbGl6ZSgpO1xyXG4gKiBjb25zdCBkYlVybCA9IGNvbmZpZ1NlcnZpY2UuZ2V0KCdEQVRBQkFTRV9VUkwnKTtcclxuICogYGBgXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlSW1wbDxUID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IGV4dGVuZHMgQ29uZmlnU2VydmljZTxUPiB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBuZXcgTG9nZ2VyKENvbmZpZ1NlcnZpY2VJbXBsLm5hbWUpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnTWFuYWdlcjogQ29uZmlnTWFuYWdlcjxUPjtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVuYWJsZU5lc3RMb2dnaW5nOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDb25maWdTZXJ2aWNlT3B0aW9uczxUPiA9IHt9KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgXHJcbiAgICB0aGlzLmVuYWJsZU5lc3RMb2dnaW5nID0gb3B0aW9ucy5lbmFibGVOZXN0TG9nZ2luZyA/PyB0cnVlO1xyXG4gICAgXHJcbiAgICAvLyBDcmVhdGUgQ29uZmlnTWFuYWdlciBmcm9tIGNvbmZpZy1hd3Mgd2l0aCBwcm92aWRlZCBvcHRpb25zXHJcbiAgICB0aGlzLmNvbmZpZ01hbmFnZXIgPSBuZXcgQ29uZmlnTWFuYWdlcjxUPih7XHJcbiAgICAgIGxvYWRlcnM6IG9wdGlvbnMubG9hZGVycyxcclxuICAgICAgc2NoZW1hOiBvcHRpb25zLnNjaGVtYSxcclxuICAgICAgcHJlY2VkZW5jZTogb3B0aW9ucy5wcmVjZWRlbmNlLFxyXG4gICAgICB2YWxpZGF0ZU9uTG9hZDogb3B0aW9ucy52YWxpZGF0ZU9uTG9hZCxcclxuICAgICAgZW5hYmxlTG9nZ2luZzogb3B0aW9ucy5lbmFibGVMb2dnaW5nLFxyXG4gICAgICBsb2dnZXI6IG9wdGlvbnMubG9nZ2VyLFxyXG4gICAgICB2ZXJib3NlOiBvcHRpb25zLnZlcmJvc2UsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGNvbmZpZ3VyYXRpb24gc2VydmljZSBieSBsb2FkaW5nIGNvbmZpZ3VyYXRpb24gZnJvbSBhbGwgc291cmNlcy5cclxuICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGR1cmluZyBhcHBsaWNhdGlvbiBzdGFydHVwLlxyXG4gICAqIFxyXG4gICAqIEB0aHJvd3MgQ29uZmlndXJhdGlvbkVycm9yIGlmIGxvYWRpbmcgb3IgdmFsaWRhdGlvbiBmYWlsc1xyXG4gICAqL1xyXG4gIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5jb25maWdNYW5hZ2VyLmlzTG9hZGVkKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZU5lc3RMb2dnaW5nKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKCdJbml0aWFsaXppbmcgY29uZmlndXJhdGlvbiBzZXJ2aWNlLi4uJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuY29uZmlnTWFuYWdlci5sb2FkKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5lbmFibGVOZXN0TG9nZ2luZykge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZygnQ29uZmlndXJhdGlvbiBzZXJ2aWNlIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseScpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgRmFpbGVkIHRvIGluaXRpYWxpemUgY29uZmlndXJhdGlvbiBzZXJ2aWNlOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gO1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihlcnJvck1lc3NhZ2UpO1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhIGNvbmZpZ3VyYXRpb24gdmFsdWUgYnkga2V5IHdpdGggdHlwZSBzYWZldHkuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGtleSAtIFRoZSBjb25maWd1cmF0aW9uIGtleSB0byByZXRyaWV2ZVxyXG4gICAqIEByZXR1cm5zIFRoZSBjb25maWd1cmF0aW9uIHZhbHVlIHdpdGggcHJvcGVyIHR5cGluZ1xyXG4gICAqIEB0aHJvd3MgQ29uZmlndXJhdGlvbkVycm9yIGlmIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluaXRpYWxpemVkXHJcbiAgICovXHJcbiAgZ2V0PEsgZXh0ZW5kcyBrZXlvZiBUPihrZXk6IEspOiBUW0tdIHtcclxuICAgIGlmICghdGhpcy5jb25maWdNYW5hZ2VyLmlzTG9hZGVkKCkpIHtcclxuICAgICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25FcnJvcihcclxuICAgICAgICAnQ29uZmlndXJhdGlvbiBzZXJ2aWNlIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBpbml0aWFsaXplKCkgZmlyc3QuJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnTWFuYWdlci5nZXQoa2V5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIHRoZSBjb25maWd1cmF0aW9uIHNlcnZpY2UgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc2VydmljZSBpcyByZWFkeSB0byBzZXJ2ZSBjb25maWd1cmF0aW9uIHZhbHVlc1xyXG4gICAqL1xyXG4gIGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdNYW5hZ2VyLmlzTG9hZGVkKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYWxsIGNvbmZpZ3VyYXRpb24gdmFsdWVzLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFRoZSBjb21wbGV0ZSBjb25maWd1cmF0aW9uIG9iamVjdFxyXG4gICAqIEB0aHJvd3MgQ29uZmlndXJhdGlvbkVycm9yIGlmIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluaXRpYWxpemVkXHJcbiAgICovXHJcbiAgZ2V0QWxsKCk6IFQge1xyXG4gICAgaWYgKCF0aGlzLmNvbmZpZ01hbmFnZXIuaXNMb2FkZWQoKSkge1xyXG4gICAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbkVycm9yKFxyXG4gICAgICAgICdDb25maWd1cmF0aW9uIHNlcnZpY2Ugbm90IGluaXRpYWxpemVkLiBDYWxsIGluaXRpYWxpemUoKSBmaXJzdC4nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdNYW5hZ2VyLmdldEFsbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGVudmlyb25tZW50LlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFRoZSBBUFBfRU5WIHZhbHVlIG9yICdkZXZlbG9wbWVudCcgYXMgZGVmYXVsdFxyXG4gICAqL1xyXG4gIGdldEFwcEVudigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnTWFuYWdlci5nZXRBcHBFbnYoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgdW5kZXJseWluZyBDb25maWdNYW5hZ2VyIGluc3RhbmNlLlxyXG4gICAqIFVzZWZ1bCBmb3IgYWR2YW5jZWQgdXNlIGNhc2VzIHRoYXQgbmVlZCBkaXJlY3QgYWNjZXNzIHRvIENvbmZpZ01hbmFnZXIgZmVhdHVyZXMuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgVGhlIENvbmZpZ01hbmFnZXIgaW5zdGFuY2UgZnJvbSBAZHlhbmV0L2NvbmZpZy1hd3NcclxuICAgKi9cclxuICBnZXRDb25maWdNYW5hZ2VyKCk6IENvbmZpZ01hbmFnZXI8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnTWFuYWdlcjtcclxuICB9XHJcbn1cclxuIl19
|