@dyanet/nestjs-config-aws 1.2.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +60 -43
- package/dist/cjs/aws-config-loader.js +57 -0
- package/dist/cjs/build-loaders.js +58 -0
- package/dist/cjs/config.module.js +138 -0
- package/dist/cjs/index.js +46 -0
- package/dist/cjs/interfaces/config-service.interface.js +11 -0
- package/dist/cjs/interfaces/default-schema.interface.js +63 -0
- package/dist/cjs/{nestjs-config-aws/src/interfaces → interfaces}/index.js +1 -1
- package/dist/cjs/interfaces/module-options.interface.js +3 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/services/config.service.js +142 -0
- package/dist/esm/aws-config-loader.js +54 -0
- package/dist/esm/build-loaders.js +55 -0
- package/dist/esm/config.module.js +135 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/interfaces/config-service.interface.js +7 -0
- package/dist/esm/interfaces/default-schema.interface.js +59 -0
- package/dist/esm/interfaces/index.js +8 -0
- package/dist/esm/interfaces/module-options.interface.js +2 -0
- package/dist/esm/package.json +3 -1
- package/dist/esm/services/config.service.js +139 -0
- package/dist/types/aws-config-loader.d.ts +74 -0
- package/dist/types/aws-config-loader.d.ts.map +1 -0
- package/dist/types/build-loaders.d.ts +30 -0
- package/dist/types/build-loaders.d.ts.map +1 -0
- package/dist/types/{nestjs-config-aws/src/config.module.d.ts → config.module.d.ts} +2 -8
- package/dist/types/config.module.d.ts.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interfaces/config-service.interface.d.ts.map +1 -0
- package/dist/types/{nestjs-config-aws/src/interfaces → interfaces}/default-schema.interface.d.ts +14 -14
- package/dist/types/interfaces/default-schema.interface.d.ts.map +1 -0
- package/dist/types/interfaces/index.d.ts.map +1 -0
- package/dist/types/{nestjs-config-aws/src/interfaces → interfaces}/module-options.interface.d.ts +22 -3
- package/dist/types/interfaces/module-options.interface.d.ts.map +1 -0
- package/dist/types/services/config.service.d.ts.map +1 -0
- package/package.json +13 -7
- package/dist/cjs/config-aws/src/config-manager.js +0 -366
- package/dist/cjs/config-aws/src/errors/index.js +0 -77
- package/dist/cjs/config-aws/src/index.js +0 -37
- package/dist/cjs/config-aws/src/interfaces/config-loader.interface.js +0 -3
- package/dist/cjs/config-aws/src/interfaces/config-manager.interface.js +0 -3
- package/dist/cjs/config-aws/src/interfaces/env-file-loader.interface.js +0 -3
- package/dist/cjs/config-aws/src/interfaces/environment-loader.interface.js +0 -3
- package/dist/cjs/config-aws/src/interfaces/s3-loader.interface.js +0 -3
- package/dist/cjs/config-aws/src/interfaces/secrets-manager-loader.interface.js +0 -3
- package/dist/cjs/config-aws/src/interfaces/ssm-parameter-store-loader.interface.js +0 -3
- package/dist/cjs/config-aws/src/loaders/env-file.loader.js +0 -169
- package/dist/cjs/config-aws/src/loaders/environment.loader.js +0 -85
- package/dist/cjs/config-aws/src/loaders/s3.loader.js +0 -145
- package/dist/cjs/config-aws/src/loaders/secrets-manager.loader.js +0 -169
- package/dist/cjs/config-aws/src/loaders/ssm-parameter-store.loader.js +0 -199
- package/dist/cjs/config-aws/src/utils/env-file-parser.util.js +0 -98
- package/dist/cjs/config-aws/src/utils/validation.util.js +0 -116
- package/dist/cjs/nestjs-config-aws/src/config.module.js +0 -175
- package/dist/cjs/nestjs-config-aws/src/index.js +0 -61
- package/dist/cjs/nestjs-config-aws/src/integration/index.js +0 -23
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/configuration-factory.interface.js +0 -3
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/configuration-source.interface.js +0 -3
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/index.js +0 -26
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/integration-options.interface.js +0 -3
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/integration-state.interface.js +0 -3
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/nestjs-config-compatibility.interface.js +0 -73
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/nestjs-config-integration.interface.js +0 -3
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/typed-configuration.interface.js +0 -4
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/utility-types.interface.js +0 -52
- package/dist/cjs/nestjs-config-aws/src/integration/nestjs-config-integration.module.js +0 -124
- package/dist/cjs/nestjs-config-aws/src/integration/providers/aws-configuration-loader.service.js +0 -592
- package/dist/cjs/nestjs-config-aws/src/integration/providers/configuration-factory.provider.js +0 -385
- package/dist/cjs/nestjs-config-aws/src/integration/providers/index.js +0 -20
- package/dist/cjs/nestjs-config-aws/src/integration/services/async-config-helper.service.js +0 -366
- package/dist/cjs/nestjs-config-aws/src/integration/services/error-handler.service.js +0 -267
- package/dist/cjs/nestjs-config-aws/src/integration/services/factory-registration.service.js +0 -517
- package/dist/cjs/nestjs-config-aws/src/integration/services/index.js +0 -26
- package/dist/cjs/nestjs-config-aws/src/integration/services/integration-state.service.js +0 -81
- package/dist/cjs/nestjs-config-aws/src/integration/services/namespace-handler.service.js +0 -465
- package/dist/cjs/nestjs-config-aws/src/integration/services/nestjs-config-integration.service.js +0 -318
- package/dist/cjs/nestjs-config-aws/src/integration/services/precedence-handler.service.js +0 -292
- package/dist/cjs/nestjs-config-aws/src/integration/services/validation-integration.service.js +0 -595
- package/dist/cjs/nestjs-config-aws/src/integration/utils/config-integration.util.js +0 -283
- package/dist/cjs/nestjs-config-aws/src/integration/utils/index.js +0 -19
- package/dist/cjs/nestjs-config-aws/src/interfaces/config-service.interface.js +0 -11
- package/dist/cjs/nestjs-config-aws/src/interfaces/default-schema.interface.js +0 -63
- package/dist/cjs/nestjs-config-aws/src/interfaces/module-options.interface.js +0 -3
- package/dist/cjs/nestjs-config-aws/src/services/config.service.js +0 -142
- package/dist/esm/config-aws/src/config-manager.js +0 -362
- package/dist/esm/config-aws/src/errors/index.js +0 -69
- package/dist/esm/config-aws/src/index.js +0 -21
- package/dist/esm/config-aws/src/interfaces/config-loader.interface.js +0 -2
- package/dist/esm/config-aws/src/interfaces/config-manager.interface.js +0 -2
- package/dist/esm/config-aws/src/interfaces/env-file-loader.interface.js +0 -2
- package/dist/esm/config-aws/src/interfaces/environment-loader.interface.js +0 -2
- package/dist/esm/config-aws/src/interfaces/s3-loader.interface.js +0 -2
- package/dist/esm/config-aws/src/interfaces/secrets-manager-loader.interface.js +0 -2
- package/dist/esm/config-aws/src/interfaces/ssm-parameter-store-loader.interface.js +0 -2
- package/dist/esm/config-aws/src/loaders/env-file.loader.js +0 -132
- package/dist/esm/config-aws/src/loaders/environment.loader.js +0 -81
- package/dist/esm/config-aws/src/loaders/s3.loader.js +0 -141
- package/dist/esm/config-aws/src/loaders/secrets-manager.loader.js +0 -165
- package/dist/esm/config-aws/src/loaders/ssm-parameter-store.loader.js +0 -195
- package/dist/esm/config-aws/src/utils/env-file-parser.util.js +0 -94
- package/dist/esm/config-aws/src/utils/validation.util.js +0 -112
- package/dist/esm/nestjs-config-aws/src/config.module.js +0 -172
- package/dist/esm/nestjs-config-aws/src/index.js +0 -23
- package/dist/esm/nestjs-config-aws/src/integration/index.js +0 -7
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/configuration-factory.interface.js +0 -2
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/configuration-source.interface.js +0 -2
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/index.js +0 -10
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/integration-options.interface.js +0 -2
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/integration-state.interface.js +0 -2
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/nestjs-config-compatibility.interface.js +0 -64
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/nestjs-config-integration.interface.js +0 -2
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/typed-configuration.interface.js +0 -3
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/utility-types.interface.js +0 -44
- package/dist/esm/nestjs-config-aws/src/integration/nestjs-config-integration.module.js +0 -121
- package/dist/esm/nestjs-config-aws/src/integration/providers/aws-configuration-loader.service.js +0 -589
- package/dist/esm/nestjs-config-aws/src/integration/providers/configuration-factory.provider.js +0 -382
- package/dist/esm/nestjs-config-aws/src/integration/providers/index.js +0 -4
- package/dist/esm/nestjs-config-aws/src/integration/services/async-config-helper.service.js +0 -363
- package/dist/esm/nestjs-config-aws/src/integration/services/error-handler.service.js +0 -264
- package/dist/esm/nestjs-config-aws/src/integration/services/factory-registration.service.js +0 -514
- package/dist/esm/nestjs-config-aws/src/integration/services/index.js +0 -10
- package/dist/esm/nestjs-config-aws/src/integration/services/integration-state.service.js +0 -78
- package/dist/esm/nestjs-config-aws/src/integration/services/namespace-handler.service.js +0 -462
- package/dist/esm/nestjs-config-aws/src/integration/services/nestjs-config-integration.service.js +0 -315
- package/dist/esm/nestjs-config-aws/src/integration/services/precedence-handler.service.js +0 -289
- package/dist/esm/nestjs-config-aws/src/integration/services/validation-integration.service.js +0 -589
- package/dist/esm/nestjs-config-aws/src/integration/utils/config-integration.util.js +0 -240
- package/dist/esm/nestjs-config-aws/src/integration/utils/index.js +0 -3
- package/dist/esm/nestjs-config-aws/src/interfaces/config-service.interface.js +0 -7
- package/dist/esm/nestjs-config-aws/src/interfaces/default-schema.interface.js +0 -59
- package/dist/esm/nestjs-config-aws/src/interfaces/index.js +0 -8
- package/dist/esm/nestjs-config-aws/src/interfaces/module-options.interface.js +0 -2
- package/dist/esm/nestjs-config-aws/src/services/config.service.js +0 -139
- package/dist/types/config-aws/src/config-manager.d.ts +0 -119
- package/dist/types/config-aws/src/config-manager.d.ts.map +0 -1
- package/dist/types/config-aws/src/errors/index.d.ts +0 -43
- package/dist/types/config-aws/src/errors/index.d.ts.map +0 -1
- package/dist/types/config-aws/src/index.d.ts +0 -24
- package/dist/types/config-aws/src/index.d.ts.map +0 -1
- package/dist/types/config-aws/src/interfaces/config-loader.interface.d.ts +0 -33
- package/dist/types/config-aws/src/interfaces/config-loader.interface.d.ts.map +0 -1
- package/dist/types/config-aws/src/interfaces/config-manager.interface.d.ts +0 -86
- package/dist/types/config-aws/src/interfaces/config-manager.interface.d.ts.map +0 -1
- package/dist/types/config-aws/src/interfaces/env-file-loader.interface.d.ts +0 -12
- package/dist/types/config-aws/src/interfaces/env-file-loader.interface.d.ts.map +0 -1
- package/dist/types/config-aws/src/interfaces/environment-loader.interface.d.ts +0 -10
- package/dist/types/config-aws/src/interfaces/environment-loader.interface.d.ts.map +0 -1
- package/dist/types/config-aws/src/interfaces/s3-loader.interface.d.ts +0 -14
- package/dist/types/config-aws/src/interfaces/s3-loader.interface.d.ts.map +0 -1
- package/dist/types/config-aws/src/interfaces/secrets-manager-loader.interface.d.ts +0 -12
- package/dist/types/config-aws/src/interfaces/secrets-manager-loader.interface.d.ts.map +0 -1
- package/dist/types/config-aws/src/interfaces/ssm-parameter-store-loader.interface.d.ts +0 -14
- package/dist/types/config-aws/src/interfaces/ssm-parameter-store-loader.interface.d.ts.map +0 -1
- package/dist/types/config-aws/src/loaders/env-file.loader.d.ts +0 -69
- package/dist/types/config-aws/src/loaders/env-file.loader.d.ts.map +0 -1
- package/dist/types/config-aws/src/loaders/environment.loader.d.ts +0 -46
- package/dist/types/config-aws/src/loaders/environment.loader.d.ts.map +0 -1
- package/dist/types/config-aws/src/loaders/s3.loader.d.ts +0 -62
- package/dist/types/config-aws/src/loaders/s3.loader.d.ts.map +0 -1
- package/dist/types/config-aws/src/loaders/secrets-manager.loader.d.ts +0 -68
- package/dist/types/config-aws/src/loaders/secrets-manager.loader.d.ts.map +0 -1
- package/dist/types/config-aws/src/loaders/ssm-parameter-store.loader.d.ts +0 -78
- package/dist/types/config-aws/src/loaders/ssm-parameter-store.loader.d.ts.map +0 -1
- package/dist/types/config-aws/src/utils/env-file-parser.util.d.ts +0 -45
- package/dist/types/config-aws/src/utils/env-file-parser.util.d.ts.map +0 -1
- package/dist/types/config-aws/src/utils/validation.util.d.ts +0 -53
- package/dist/types/config-aws/src/utils/validation.util.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/config.module.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/index.d.ts +0 -11
- package/dist/types/nestjs-config-aws/src/index.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/index.d.ts +0 -6
- package/dist/types/nestjs-config-aws/src/integration/index.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/interfaces/configuration-factory.interface.d.ts +0 -71
- package/dist/types/nestjs-config-aws/src/integration/interfaces/configuration-factory.interface.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/interfaces/configuration-source.interface.d.ts +0 -24
- package/dist/types/nestjs-config-aws/src/integration/interfaces/configuration-source.interface.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/interfaces/index.d.ts +0 -9
- package/dist/types/nestjs-config-aws/src/integration/interfaces/index.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/interfaces/integration-options.interface.d.ts +0 -66
- package/dist/types/nestjs-config-aws/src/integration/interfaces/integration-options.interface.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/interfaces/integration-state.interface.d.ts +0 -17
- package/dist/types/nestjs-config-aws/src/integration/interfaces/integration-state.interface.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/interfaces/nestjs-config-compatibility.interface.d.ts +0 -332
- package/dist/types/nestjs-config-aws/src/integration/interfaces/nestjs-config-compatibility.interface.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/interfaces/nestjs-config-integration.interface.d.ts +0 -259
- package/dist/types/nestjs-config-aws/src/integration/interfaces/nestjs-config-integration.interface.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/interfaces/typed-configuration.interface.d.ts +0 -209
- package/dist/types/nestjs-config-aws/src/integration/interfaces/typed-configuration.interface.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/interfaces/utility-types.interface.d.ts +0 -249
- package/dist/types/nestjs-config-aws/src/integration/interfaces/utility-types.interface.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/nestjs-config-integration.module.d.ts +0 -36
- package/dist/types/nestjs-config-aws/src/integration/nestjs-config-integration.module.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/providers/aws-configuration-loader.service.d.ts +0 -134
- package/dist/types/nestjs-config-aws/src/integration/providers/aws-configuration-loader.service.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/providers/configuration-factory.provider.d.ts +0 -119
- package/dist/types/nestjs-config-aws/src/integration/providers/configuration-factory.provider.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/providers/index.d.ts +0 -3
- package/dist/types/nestjs-config-aws/src/integration/providers/index.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/services/async-config-helper.service.d.ts +0 -84
- package/dist/types/nestjs-config-aws/src/integration/services/async-config-helper.service.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/services/error-handler.service.d.ts +0 -84
- package/dist/types/nestjs-config-aws/src/integration/services/error-handler.service.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/services/factory-registration.service.d.ts +0 -158
- package/dist/types/nestjs-config-aws/src/integration/services/factory-registration.service.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/services/index.d.ts +0 -9
- package/dist/types/nestjs-config-aws/src/integration/services/index.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/services/integration-state.service.d.ts +0 -41
- package/dist/types/nestjs-config-aws/src/integration/services/integration-state.service.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/services/namespace-handler.service.d.ts +0 -192
- package/dist/types/nestjs-config-aws/src/integration/services/namespace-handler.service.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/services/nestjs-config-integration.service.d.ts +0 -87
- package/dist/types/nestjs-config-aws/src/integration/services/nestjs-config-integration.service.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/services/precedence-handler.service.d.ts +0 -103
- package/dist/types/nestjs-config-aws/src/integration/services/precedence-handler.service.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/services/validation-integration.service.d.ts +0 -222
- package/dist/types/nestjs-config-aws/src/integration/services/validation-integration.service.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/utils/config-integration.util.d.ts +0 -81
- package/dist/types/nestjs-config-aws/src/integration/utils/config-integration.util.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/integration/utils/index.d.ts +0 -2
- package/dist/types/nestjs-config-aws/src/integration/utils/index.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/interfaces/config-service.interface.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/interfaces/default-schema.interface.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/interfaces/index.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/interfaces/module-options.interface.d.ts.map +0 -1
- package/dist/types/nestjs-config-aws/src/services/config.service.d.ts.map +0 -1
- /package/dist/types/{nestjs-config-aws/src/interfaces → interfaces}/config-service.interface.d.ts +0 -0
- /package/dist/types/{nestjs-config-aws/src/interfaces → interfaces}/index.d.ts +0 -0
- /package/dist/types/{nestjs-config-aws/src/services → services}/config.service.d.ts +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW9wdGlvbnMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludGVyZmFjZXMvbW9kdWxlLW9wdGlvbnMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBab2RUeXBlIH0gZnJvbSAnem9kJztcclxuXHJcbi8qKlxyXG4gKiBDb25maWd1cmF0aW9uIGZvciBBV1MgU2VjcmV0cyBNYW5hZ2VyIGludGVncmF0aW9uLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTZWNyZXRzTWFuYWdlckNvbmZpZyB7XHJcbiAgLyoqIEFXUyByZWdpb24gZm9yIFNlY3JldHMgTWFuYWdlciAqL1xyXG4gIHJlZ2lvbj86IHN0cmluZztcclxuICAvKiogQmFzZSBwYXRoIGZvciBzZWNyZXRzIGluIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgKi9cclxuICBwYXRocz86IHtcclxuICAgIGRldmVsb3BtZW50Pzogc3RyaW5nO1xyXG4gICAgdGVzdD86IHN0cmluZztcclxuICAgIHByb2R1Y3Rpb24/OiBzdHJpbmc7XHJcbiAgfTtcclxuICAvKiogV2hldGhlciB0byBlbmFibGUgU2VjcmV0cyBNYW5hZ2VyIGludGVncmF0aW9uICovXHJcbiAgZW5hYmxlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb25maWd1cmF0aW9uIGZvciBBV1MgU3lzdGVtcyBNYW5hZ2VyIFBhcmFtZXRlciBTdG9yZSBpbnRlZ3JhdGlvbi5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU1NNQ29uZmlnIHtcclxuICAvKiogQVdTIHJlZ2lvbiBmb3IgU1NNIFBhcmFtZXRlciBTdG9yZSAqL1xyXG4gIHJlZ2lvbj86IHN0cmluZztcclxuICAvKiogQmFzZSBwYXRoIGZvciBwYXJhbWV0ZXJzIGluIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgKi9cclxuICBwYXRocz86IHtcclxuICAgIGRldmVsb3BtZW50Pzogc3RyaW5nO1xyXG4gICAgdGVzdD86IHN0cmluZztcclxuICAgIHByb2R1Y3Rpb24/OiBzdHJpbmc7XHJcbiAgfTtcclxuICAvKiogV2hldGhlciB0byBlbmFibGUgU1NNIFBhcmFtZXRlciBTdG9yZSBpbnRlZ3JhdGlvbiAqL1xyXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xyXG4gIC8qKiBXaGV0aGVyIHRvIGRlY3J5cHQgU2VjdXJlU3RyaW5nIHBhcmFtZXRlcnMgKi9cclxuICBkZWNyeXB0PzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNpbXBsZSwgZmxhdCBBV1Mgb3B0aW9ucyDigJQgdGhlIHNhbWUgZXJnb25vbWljIHNoYXBlIHVzZWQgYnkgdGhlIE5leHQuanMgYWRhcHRlcidzXHJcbiAqIGBnZXRDb25maWdgLiBXaGVuIHByb3ZpZGVkLCBleGFjdGx5IHRoZSBuYW1lZCBzb3VyY2VzIGFyZSBsb2FkZWQgKGEgYHNlY3JldE5hbWVgXHJcbiAqIGFkZHMgYSBTZWNyZXRzIE1hbmFnZXIgbG9hZGVyLCBhbiBgc3NtUHJlZml4YCBhZGRzIGFuIFNTTSBsb2FkZXIpOyB0aGUgZ3JhbnVsYXJcclxuICogYHNlY3JldHNNYW5hZ2VyQ29uZmlnYCAvIGBzc21Db25maWdgIG9wdGlvbnMgYXJlIG5vdCBhcHBsaWVkLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBBd3NPcHRpb25zIHtcclxuICAvKiogU2VjcmV0IG5hbWUvcGF0aCBmb3IgQVdTIFNlY3JldHMgTWFuYWdlci4gKi9cclxuICBzZWNyZXROYW1lPzogc3RyaW5nO1xyXG4gIC8qKiBQYXJhbWV0ZXIgcGF0aCBwcmVmaXggZm9yIEFXUyBTU00gUGFyYW1ldGVyIFN0b3JlLiAqL1xyXG4gIHNzbVByZWZpeD86IHN0cmluZztcclxuICAvKiogQVdTIHJlZ2lvbiAoZGVmYXVsdHMgdG8gdGhlIGBBV1NfUkVHSU9OYCBlbnYgdmFyLCB0aGVuIGB1cy1lYXN0LTFgKS4gKi9cclxuICByZWdpb24/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgTmVzdEpTIEFXUyBDb25maWd1cmF0aW9uIG1vZHVsZS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmVzdENvbmZpZ0F3c01vZHVsZU9wdGlvbnM8VCA9IGFueT4ge1xyXG4gIC8qKiBab2Qgc2NoZW1hIGZvciBjb25maWd1cmF0aW9uIHZhbGlkYXRpb24uIFdoZW4gb21pdHRlZCwgdmFsdWVzIGFyZSByZXR1cm5lZCBhcy1pcyAobm8gdmFsaWRhdGlvbikuICovXHJcbiAgc2NoZW1hPzogWm9kVHlwZTxUPjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2ltcGxlIEFXUyBvcHRpb25zIChgeyBzZWNyZXROYW1lLCBzc21QcmVmaXgsIHJlZ2lvbiB9YCkg4oCUIG1pcnJvcnMgdGhlIE5leHQuanNcclxuICAgKiBhZGFwdGVyLiBXaGVuIHNldCwgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBzZWNyZXRzTWFuYWdlckNvbmZpZ2AgLyBgc3NtQ29uZmlnYC5cclxuICAgKi9cclxuICBhd3M/OiBBd3NPcHRpb25zO1xyXG5cclxuICAvKiogQ29uZmlndXJhdGlvbiBmb3IgQVdTIFNlY3JldHMgTWFuYWdlciBpbnRlZ3JhdGlvbiAoYWR2YW5jZWQpLiAqL1xyXG4gIHNlY3JldHNNYW5hZ2VyQ29uZmlnPzogU2VjcmV0c01hbmFnZXJDb25maWc7XHJcblxyXG4gIC8qKiBDb25maWd1cmF0aW9uIGZvciBBV1MgU3lzdGVtcyBNYW5hZ2VyIFBhcmFtZXRlciBTdG9yZSBpbnRlZ3JhdGlvbiAoYWR2YW5jZWQpLiAqL1xyXG4gIHNzbUNvbmZpZz86IFNTTUNvbmZpZztcclxuXHJcbiAgLyoqIFByZWZpeCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIChlLmcuLCAnQVBQXycpICovXHJcbiAgZW52UHJlZml4Pzogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBXaGV0aGVyIHRvIGlnbm9yZSB2YWxpZGF0aW9uIGVycm9ycyBhbmQgY29udGludWUgd2l0aCBwYXJ0aWFsIGNvbmZpZyAqL1xyXG4gIGlnbm9yZVZhbGlkYXRpb25FcnJvcnM/OiBib29sZWFuO1xyXG4gIFxyXG4gIC8qKiBDdXN0b20gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBmb3IgQVBQX0VOViAoZGVmYXVsdHMgdG8gJ0FQUF9FTlYnKSAqL1xyXG4gIGFwcEVudlZhcmlhYmxlPzogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBXaGV0aGVyIHRvIGxvYWQgY29uZmlndXJhdGlvbiBzeW5jaHJvbm91c2x5IGR1cmluZyBtb2R1bGUgaW5pdGlhbGl6YXRpb24gKi9cclxuICBsb2FkU3luYz86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBc3luYyBmYWN0b3J5IG9wdGlvbnMgZm9yIGR5bmFtaWMgbW9kdWxlIGNvbmZpZ3VyYXRpb24uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RDb25maWdBd3NNb2R1bGVBc3luY09wdGlvbnM8VCA9IGFueT4ge1xyXG4gIC8qKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBtb2R1bGUgb3B0aW9ucyAqL1xyXG4gIHVzZUZhY3Rvcnk6ICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxOZXN0Q29uZmlnQXdzTW9kdWxlT3B0aW9uczxUPj4gfCBOZXN0Q29uZmlnQXdzTW9kdWxlT3B0aW9uczxUPjtcclxuICBcclxuICAvKiogRGVwZW5kZW5jaWVzIHRvIGluamVjdCBpbnRvIHRoZSBmYWN0b3J5IGZ1bmN0aW9uICovXHJcbiAgaW5qZWN0PzogYW55W107XHJcbiAgXHJcbiAgLyoqIEltcG9ydHMgcmVxdWlyZWQgZm9yIHRoZSBmYWN0b3J5IGZ1bmN0aW9uICovXHJcbiAgaW1wb3J0cz86IGFueVtdO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var ConfigServiceImpl_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.ConfigServiceImpl = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const config_aws_1 = require("@dyanet/config-aws");
|
|
16
|
+
const config_service_interface_1 = require("../interfaces/config-service.interface");
|
|
17
|
+
/**
|
|
18
|
+
* NestJS Injectable wrapper around ConfigManager from @dyanet/config-aws.
|
|
19
|
+
* Provides type-safe configuration access with NestJS dependency injection support.
|
|
20
|
+
*
|
|
21
|
+
* This is a thin adapter layer that delegates all configuration loading and
|
|
22
|
+
* management to the framework-agnostic ConfigManager from config-aws.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import { ConfigServiceImpl } from '@dyanet/nestjs-config-aws';
|
|
27
|
+
* import { z } from 'zod';
|
|
28
|
+
*
|
|
29
|
+
* const schema = z.object({
|
|
30
|
+
* DATABASE_URL: z.string(),
|
|
31
|
+
* PORT: z.coerce.number().default(3000),
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* const configService = new ConfigServiceImpl({
|
|
35
|
+
* loaders: [new EnvironmentLoader()],
|
|
36
|
+
* schema,
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* await configService.initialize();
|
|
40
|
+
* const dbUrl = configService.get('DATABASE_URL');
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
let ConfigServiceImpl = ConfigServiceImpl_1 = class ConfigServiceImpl extends config_service_interface_1.ConfigService {
|
|
44
|
+
logger = new common_1.Logger(ConfigServiceImpl_1.name);
|
|
45
|
+
configManager;
|
|
46
|
+
enableNestLogging;
|
|
47
|
+
constructor(options = {}) {
|
|
48
|
+
super();
|
|
49
|
+
this.enableNestLogging = options.enableNestLogging ?? true;
|
|
50
|
+
// Create ConfigManager from config-aws with provided options
|
|
51
|
+
this.configManager = new config_aws_1.ConfigManager({
|
|
52
|
+
loaders: options.loaders,
|
|
53
|
+
schema: options.schema,
|
|
54
|
+
precedence: options.precedence,
|
|
55
|
+
validateOnLoad: options.validateOnLoad,
|
|
56
|
+
enableLogging: options.enableLogging,
|
|
57
|
+
logger: options.logger,
|
|
58
|
+
verbose: options.verbose,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Initialize the configuration service by loading configuration from all sources.
|
|
63
|
+
* This method should be called during application startup.
|
|
64
|
+
*
|
|
65
|
+
* @throws ConfigurationError if loading or validation fails
|
|
66
|
+
*/
|
|
67
|
+
async initialize() {
|
|
68
|
+
if (this.configManager.isLoaded()) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
if (this.enableNestLogging) {
|
|
73
|
+
this.logger.log('Initializing configuration service...');
|
|
74
|
+
}
|
|
75
|
+
await this.configManager.load();
|
|
76
|
+
if (this.enableNestLogging) {
|
|
77
|
+
this.logger.log('Configuration service initialized successfully');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
const errorMessage = `Failed to initialize configuration service: ${error instanceof Error ? error.message : String(error)}`;
|
|
82
|
+
this.logger.error(errorMessage);
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get a configuration value by key with type safety.
|
|
88
|
+
*
|
|
89
|
+
* @param key - The configuration key to retrieve
|
|
90
|
+
* @returns The configuration value with proper typing
|
|
91
|
+
* @throws ConfigurationError if configuration is not initialized
|
|
92
|
+
*/
|
|
93
|
+
get(key) {
|
|
94
|
+
if (!this.configManager.isLoaded()) {
|
|
95
|
+
throw new config_aws_1.ConfigurationError('Configuration service not initialized. Call initialize() first.');
|
|
96
|
+
}
|
|
97
|
+
return this.configManager.get(key);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Check if the configuration service has been initialized.
|
|
101
|
+
*
|
|
102
|
+
* @returns True if the service is ready to serve configuration values
|
|
103
|
+
*/
|
|
104
|
+
isInitialized() {
|
|
105
|
+
return this.configManager.isLoaded();
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get all configuration values.
|
|
109
|
+
*
|
|
110
|
+
* @returns The complete configuration object
|
|
111
|
+
* @throws ConfigurationError if configuration is not initialized
|
|
112
|
+
*/
|
|
113
|
+
getAll() {
|
|
114
|
+
if (!this.configManager.isLoaded()) {
|
|
115
|
+
throw new config_aws_1.ConfigurationError('Configuration service not initialized. Call initialize() first.');
|
|
116
|
+
}
|
|
117
|
+
return this.configManager.getAll();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get the current application environment.
|
|
121
|
+
*
|
|
122
|
+
* @returns The APP_ENV value or 'development' as default
|
|
123
|
+
*/
|
|
124
|
+
getAppEnv() {
|
|
125
|
+
return this.configManager.getAppEnv();
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get the underlying ConfigManager instance.
|
|
129
|
+
* Useful for advanced use cases that need direct access to ConfigManager features.
|
|
130
|
+
*
|
|
131
|
+
* @returns The ConfigManager instance from @dyanet/config-aws
|
|
132
|
+
*/
|
|
133
|
+
getConfigManager() {
|
|
134
|
+
return this.configManager;
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
exports.ConfigServiceImpl = ConfigServiceImpl;
|
|
138
|
+
exports.ConfigServiceImpl = ConfigServiceImpl = ConfigServiceImpl_1 = __decorate([
|
|
139
|
+
(0, common_1.Injectable)(),
|
|
140
|
+
__metadata("design:paramtypes", [Object])
|
|
141
|
+
], ConfigServiceImpl);
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUFvRDtBQUNwRCxtREFBdUU7QUFHdkUscUZBQXVFO0FBY3ZFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBRUksSUFBTSxpQkFBaUIseUJBQXZCLE1BQU0saUJBQStDLFNBQVEsd0NBQWdCO0lBQ2pFLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxtQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxhQUFhLENBQW1CO0lBQ2hDLGlCQUFpQixDQUFVO0lBRTVDLFlBQVksVUFBbUMsRUFBRTtRQUMvQyxLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDO1FBRTNELDZEQUE2RDtRQUM3RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksMEJBQWEsQ0FBSTtZQUN4QyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtZQUM5QixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDdEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtZQUN0QixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUVELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVoQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sWUFBWSxHQUFHLCtDQUErQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3SCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNoQyxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsR0FBRyxDQUFvQixHQUFNO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLCtCQUFrQixDQUMxQixpRUFBaUUsQ0FDbEUsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksK0JBQWtCLENBQzFCLGlFQUFpRSxDQUNsRSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7Q0FDRixDQUFBO0FBNUdZLDhDQUFpQjs0QkFBakIsaUJBQWlCO0lBRDdCLElBQUEsbUJBQVUsR0FBRTs7R0FDQSxpQkFBaUIsQ0E0RzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTG9nZ2VyIH0gZnJvbSAnQG5lc3Rqcy9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdNYW5hZ2VyLCBDb25maWd1cmF0aW9uRXJyb3IgfSBmcm9tICdAZHlhbmV0L2NvbmZpZy1hd3MnO1xyXG5pbXBvcnQgdHlwZSB7IENvbmZpZ01hbmFnZXJPcHRpb25zIH0gZnJvbSAnQGR5YW5ldC9jb25maWctYXdzJztcclxuXHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy1zZXJ2aWNlLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBOZXN0SlMgQ29uZmlnU2VydmljZSB3cmFwcGVyLlxyXG4gKiBFeHRlbmRzIENvbmZpZ01hbmFnZXJPcHRpb25zIGZyb20gQGR5YW5ldC9jb25maWctYXdzLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb25maWdTZXJ2aWNlT3B0aW9uczxUID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IGV4dGVuZHMgQ29uZmlnTWFuYWdlck9wdGlvbnM8VD4ge1xyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIE5lc3RKUyBsb2dnaW5nXHJcbiAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAqL1xyXG4gIGVuYWJsZU5lc3RMb2dnaW5nPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIE5lc3RKUyBJbmplY3RhYmxlIHdyYXBwZXIgYXJvdW5kIENvbmZpZ01hbmFnZXIgZnJvbSBAZHlhbmV0L2NvbmZpZy1hd3MuXHJcbiAqIFByb3ZpZGVzIHR5cGUtc2FmZSBjb25maWd1cmF0aW9uIGFjY2VzcyB3aXRoIE5lc3RKUyBkZXBlbmRlbmN5IGluamVjdGlvbiBzdXBwb3J0LlxyXG4gKiBcclxuICogVGhpcyBpcyBhIHRoaW4gYWRhcHRlciBsYXllciB0aGF0IGRlbGVnYXRlcyBhbGwgY29uZmlndXJhdGlvbiBsb2FkaW5nIGFuZFxyXG4gKiBtYW5hZ2VtZW50IHRvIHRoZSBmcmFtZXdvcmstYWdub3N0aWMgQ29uZmlnTWFuYWdlciBmcm9tIGNvbmZpZy1hd3MuXHJcbiAqIFxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7IENvbmZpZ1NlcnZpY2VJbXBsIH0gZnJvbSAnQGR5YW5ldC9uZXN0anMtY29uZmlnLWF3cyc7XHJcbiAqIGltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xyXG4gKiBcclxuICogY29uc3Qgc2NoZW1hID0gei5vYmplY3Qoe1xyXG4gKiAgIERBVEFCQVNFX1VSTDogei5zdHJpbmcoKSxcclxuICogICBQT1JUOiB6LmNvZXJjZS5udW1iZXIoKS5kZWZhdWx0KDMwMDApLFxyXG4gKiB9KTtcclxuICogXHJcbiAqIGNvbnN0IGNvbmZpZ1NlcnZpY2UgPSBuZXcgQ29uZmlnU2VydmljZUltcGwoe1xyXG4gKiAgIGxvYWRlcnM6IFtuZXcgRW52aXJvbm1lbnRMb2FkZXIoKV0sXHJcbiAqICAgc2NoZW1hLFxyXG4gKiB9KTtcclxuICogXHJcbiAqIGF3YWl0IGNvbmZpZ1NlcnZpY2UuaW5pdGlhbGl6ZSgpO1xyXG4gKiBjb25zdCBkYlVybCA9IGNvbmZpZ1NlcnZpY2UuZ2V0KCdEQVRBQkFTRV9VUkwnKTtcclxuICogYGBgXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlSW1wbDxUID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IGV4dGVuZHMgQ29uZmlnU2VydmljZTxUPiB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBuZXcgTG9nZ2VyKENvbmZpZ1NlcnZpY2VJbXBsLm5hbWUpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnTWFuYWdlcjogQ29uZmlnTWFuYWdlcjxUPjtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVuYWJsZU5lc3RMb2dnaW5nOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDb25maWdTZXJ2aWNlT3B0aW9uczxUPiA9IHt9KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgXHJcbiAgICB0aGlzLmVuYWJsZU5lc3RMb2dnaW5nID0gb3B0aW9ucy5lbmFibGVOZXN0TG9nZ2luZyA/PyB0cnVlO1xyXG4gICAgXHJcbiAgICAvLyBDcmVhdGUgQ29uZmlnTWFuYWdlciBmcm9tIGNvbmZpZy1hd3Mgd2l0aCBwcm92aWRlZCBvcHRpb25zXHJcbiAgICB0aGlzLmNvbmZpZ01hbmFnZXIgPSBuZXcgQ29uZmlnTWFuYWdlcjxUPih7XHJcbiAgICAgIGxvYWRlcnM6IG9wdGlvbnMubG9hZGVycyxcclxuICAgICAgc2NoZW1hOiBvcHRpb25zLnNjaGVtYSxcclxuICAgICAgcHJlY2VkZW5jZTogb3B0aW9ucy5wcmVjZWRlbmNlLFxyXG4gICAgICB2YWxpZGF0ZU9uTG9hZDogb3B0aW9ucy52YWxpZGF0ZU9uTG9hZCxcclxuICAgICAgZW5hYmxlTG9nZ2luZzogb3B0aW9ucy5lbmFibGVMb2dnaW5nLFxyXG4gICAgICBsb2dnZXI6IG9wdGlvbnMubG9nZ2VyLFxyXG4gICAgICB2ZXJib3NlOiBvcHRpb25zLnZlcmJvc2UsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGNvbmZpZ3VyYXRpb24gc2VydmljZSBieSBsb2FkaW5nIGNvbmZpZ3VyYXRpb24gZnJvbSBhbGwgc291cmNlcy5cclxuICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGR1cmluZyBhcHBsaWNhdGlvbiBzdGFydHVwLlxyXG4gICAqIFxyXG4gICAqIEB0aHJvd3MgQ29uZmlndXJhdGlvbkVycm9yIGlmIGxvYWRpbmcgb3IgdmFsaWRhdGlvbiBmYWlsc1xyXG4gICAqL1xyXG4gIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5jb25maWdNYW5hZ2VyLmlzTG9hZGVkKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZU5lc3RMb2dnaW5nKSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKCdJbml0aWFsaXppbmcgY29uZmlndXJhdGlvbiBzZXJ2aWNlLi4uJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuY29uZmlnTWFuYWdlci5sb2FkKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5lbmFibGVOZXN0TG9nZ2luZykge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZygnQ29uZmlndXJhdGlvbiBzZXJ2aWNlIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseScpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgRmFpbGVkIHRvIGluaXRpYWxpemUgY29uZmlndXJhdGlvbiBzZXJ2aWNlOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gO1xyXG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihlcnJvck1lc3NhZ2UpO1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhIGNvbmZpZ3VyYXRpb24gdmFsdWUgYnkga2V5IHdpdGggdHlwZSBzYWZldHkuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGtleSAtIFRoZSBjb25maWd1cmF0aW9uIGtleSB0byByZXRyaWV2ZVxyXG4gICAqIEByZXR1cm5zIFRoZSBjb25maWd1cmF0aW9uIHZhbHVlIHdpdGggcHJvcGVyIHR5cGluZ1xyXG4gICAqIEB0aHJvd3MgQ29uZmlndXJhdGlvbkVycm9yIGlmIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluaXRpYWxpemVkXHJcbiAgICovXHJcbiAgZ2V0PEsgZXh0ZW5kcyBrZXlvZiBUPihrZXk6IEspOiBUW0tdIHtcclxuICAgIGlmICghdGhpcy5jb25maWdNYW5hZ2VyLmlzTG9hZGVkKCkpIHtcclxuICAgICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25FcnJvcihcclxuICAgICAgICAnQ29uZmlndXJhdGlvbiBzZXJ2aWNlIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBpbml0aWFsaXplKCkgZmlyc3QuJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnTWFuYWdlci5nZXQoa2V5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIHRoZSBjb25maWd1cmF0aW9uIHNlcnZpY2UgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc2VydmljZSBpcyByZWFkeSB0byBzZXJ2ZSBjb25maWd1cmF0aW9uIHZhbHVlc1xyXG4gICAqL1xyXG4gIGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdNYW5hZ2VyLmlzTG9hZGVkKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYWxsIGNvbmZpZ3VyYXRpb24gdmFsdWVzLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFRoZSBjb21wbGV0ZSBjb25maWd1cmF0aW9uIG9iamVjdFxyXG4gICAqIEB0aHJvd3MgQ29uZmlndXJhdGlvbkVycm9yIGlmIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluaXRpYWxpemVkXHJcbiAgICovXHJcbiAgZ2V0QWxsKCk6IFQge1xyXG4gICAgaWYgKCF0aGlzLmNvbmZpZ01hbmFnZXIuaXNMb2FkZWQoKSkge1xyXG4gICAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbkVycm9yKFxyXG4gICAgICAgICdDb25maWd1cmF0aW9uIHNlcnZpY2Ugbm90IGluaXRpYWxpemVkLiBDYWxsIGluaXRpYWxpemUoKSBmaXJzdC4nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdNYW5hZ2VyLmdldEFsbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGVudmlyb25tZW50LlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFRoZSBBUFBfRU5WIHZhbHVlIG9yICdkZXZlbG9wbWVudCcgYXMgZGVmYXVsdFxyXG4gICAqL1xyXG4gIGdldEFwcEVudigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnTWFuYWdlci5nZXRBcHBFbnYoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgdW5kZXJseWluZyBDb25maWdNYW5hZ2VyIGluc3RhbmNlLlxyXG4gICAqIFVzZWZ1bCBmb3IgYWR2YW5jZWQgdXNlIGNhc2VzIHRoYXQgbmVlZCBkaXJlY3QgYWNjZXNzIHRvIENvbmZpZ01hbmFnZXIgZmVhdHVyZXMuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgVGhlIENvbmZpZ01hbmFnZXIgaW5zdGFuY2UgZnJvbSBAZHlhbmV0L2NvbmZpZy1hd3NcclxuICAgKi9cclxuICBnZXRDb25maWdNYW5hZ2VyKCk6IENvbmZpZ01hbmFnZXI8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnTWFuYWdlcjtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ConfigManager } from '@dyanet/config-aws';
|
|
2
|
+
import { buildAwsLoaders } from './build-loaders.js';
|
|
3
|
+
/**
|
|
4
|
+
* Create a configuration factory that loads from AWS sources (Secrets Manager,
|
|
5
|
+
* SSM Parameter Store) and environment variables, for use with the standard
|
|
6
|
+
* `@nestjs/config` `ConfigModule`.
|
|
7
|
+
*
|
|
8
|
+
* The returned function matches `@nestjs/config`'s `ConfigFactory` shape, so drop
|
|
9
|
+
* it straight into the `load` array — no extra module to import, and
|
|
10
|
+
* `@nestjs/config` stays an optional peer dependency of this package.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { ConfigModule } from '@nestjs/config';
|
|
15
|
+
* import { awsConfigLoader } from '@dyanet/nestjs-config-aws';
|
|
16
|
+
*
|
|
17
|
+
* @Module({
|
|
18
|
+
* imports: [
|
|
19
|
+
* ConfigModule.forRoot({
|
|
20
|
+
* isGlobal: true,
|
|
21
|
+
* // Simple `aws` shape — same as the Next.js adapter's getConfig:
|
|
22
|
+
* load: [awsConfigLoader({ aws: { secretName: '/my-app/config' } })],
|
|
23
|
+
* }),
|
|
24
|
+
* ],
|
|
25
|
+
* })
|
|
26
|
+
* export class AppModule {}
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @example Namespaced (compose with `@nestjs/config`'s `registerAs`):
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { ConfigModule, registerAs } from '@nestjs/config';
|
|
32
|
+
*
|
|
33
|
+
* ConfigModule.forRoot({
|
|
34
|
+
* load: [registerAs('database', awsConfigLoader({ ssmConfig: { paths: { production: '/db' } } }))],
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @param options Loader options.
|
|
39
|
+
* @returns A factory `() => Promise<T>` suitable for `ConfigModule`'s `load` array.
|
|
40
|
+
*/
|
|
41
|
+
export function awsConfigLoader(options = {}) {
|
|
42
|
+
return async () => {
|
|
43
|
+
const manager = new ConfigManager({
|
|
44
|
+
loaders: buildAwsLoaders(options),
|
|
45
|
+
schema: options.schema,
|
|
46
|
+
precedence: options.precedence ?? 'aws-first',
|
|
47
|
+
validateOnLoad: options.validate ?? Boolean(options.schema),
|
|
48
|
+
enableLogging: options.enableLogging ?? false,
|
|
49
|
+
});
|
|
50
|
+
await manager.load();
|
|
51
|
+
return manager.getAll();
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWNvbmZpZy1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzLWNvbmZpZy1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBS25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWtDbEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUM3QixVQUFxQyxFQUFFO0lBRXZDLE9BQU8sS0FBSyxJQUFnQixFQUFFO1FBQzVCLE1BQU0sT0FBTyxHQUFHLElBQUksYUFBYSxDQUFJO1lBQ25DLE9BQU8sRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtZQUN0QixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxXQUFXO1lBQzdDLGNBQWMsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzNELGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYSxJQUFJLEtBQUs7U0FDOUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDMUIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ01hbmFnZXIgfSBmcm9tICdAZHlhbmV0L2NvbmZpZy1hd3MnO1xuaW1wb3J0IHR5cGUgeyBQcmVjZWRlbmNlU3RyYXRlZ3kgfSBmcm9tICdAZHlhbmV0L2NvbmZpZy1hd3MnO1xuaW1wb3J0IHR5cGUgeyBab2RUeXBlIH0gZnJvbSAnem9kJztcblxuaW1wb3J0IHsgQXdzT3B0aW9ucywgU2VjcmV0c01hbmFnZXJDb25maWcsIFNTTUNvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9tb2R1bGUtb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgYnVpbGRBd3NMb2FkZXJzIH0gZnJvbSAnLi9idWlsZC1sb2FkZXJzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgYXdzQ29uZmlnTG9hZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NDb25maWdMb2FkZXJPcHRpb25zPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIC8qKiBab2Qgc2NoZW1hIGZvciB2YWxpZGF0aW9uLiBXaGVuIHByb3ZpZGVkLCB0aGUgbWVyZ2VkIGNvbmZpZyBpcyB2YWxpZGF0ZWQuICovXG4gIHNjaGVtYT86IFpvZFR5cGU8VD47XG4gIC8qKlxuICAgKiBTaW1wbGUgQVdTIG9wdGlvbnMgKGB7IHNlY3JldE5hbWUsIHNzbVByZWZpeCwgcmVnaW9uIH1gKSDigJQgdGhlIHNhbWUgc2hhcGUgYXMgdGhlXG4gICAqIE5leHQuanMgYWRhcHRlcidzIGBnZXRDb25maWdgLiBXaGVuIHNldCwgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBncmFudWxhclxuICAgKiBgc2VjcmV0c01hbmFnZXJDb25maWdgIC8gYHNzbUNvbmZpZ2Agb3B0aW9ucy5cbiAgICovXG4gIGF3cz86IEF3c09wdGlvbnM7XG4gIC8qKiBBV1MgU2VjcmV0cyBNYW5hZ2VyIGNvbmZpZ3VyYXRpb24gKGFkdmFuY2VkKS4gT21pdCBvciBzZXQgYGVuYWJsZWQ6IGZhbHNlYCB0byBza2lwLiAqL1xuICBzZWNyZXRzTWFuYWdlckNvbmZpZz86IFNlY3JldHNNYW5hZ2VyQ29uZmlnO1xuICAvKiogQVdTIFNTTSBQYXJhbWV0ZXIgU3RvcmUgY29uZmlndXJhdGlvbiAoYWR2YW5jZWQpLiBPbWl0IG9yIHNldCBgZW5hYmxlZDogZmFsc2VgIHRvIHNraXAuICovXG4gIHNzbUNvbmZpZz86IFNTTUNvbmZpZztcbiAgLyoqIFByZWZpeCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIChlLmcuIGBBUFBfYCkuICovXG4gIGVudlByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIFByZWNlZGVuY2Ugc3RyYXRlZ3kgZm9yIG1lcmdpbmcgc291cmNlcy5cbiAgICogQGRlZmF1bHQgJ2F3cy1maXJzdCdcbiAgICovXG4gIHByZWNlZGVuY2U/OiBQcmVjZWRlbmNlU3RyYXRlZ3k7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHZhbGlkYXRlIHRoZSBtZXJnZWQgY29uZmlnIGFnYWluc3QgYHNjaGVtYWAuXG4gICAqIEBkZWZhdWx0IHRydWUgd2hlbiBhIHNjaGVtYSBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIGZhbHNlXG4gICAqL1xuICB2YWxpZGF0ZT86IGJvb2xlYW47XG4gIC8qKiBFbmFibGUgdmVyYm9zZSBsb2FkZXIgbG9nZ2luZy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgZW5hYmxlTG9nZ2luZz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgY29uZmlndXJhdGlvbiBmYWN0b3J5IHRoYXQgbG9hZHMgZnJvbSBBV1Mgc291cmNlcyAoU2VjcmV0cyBNYW5hZ2VyLFxuICogU1NNIFBhcmFtZXRlciBTdG9yZSkgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcywgZm9yIHVzZSB3aXRoIHRoZSBzdGFuZGFyZFxuICogYEBuZXN0anMvY29uZmlnYCBgQ29uZmlnTW9kdWxlYC5cbiAqXG4gKiBUaGUgcmV0dXJuZWQgZnVuY3Rpb24gbWF0Y2hlcyBgQG5lc3Rqcy9jb25maWdgJ3MgYENvbmZpZ0ZhY3RvcnlgIHNoYXBlLCBzbyBkcm9wXG4gKiBpdCBzdHJhaWdodCBpbnRvIHRoZSBgbG9hZGAgYXJyYXkg4oCUIG5vIGV4dHJhIG1vZHVsZSB0byBpbXBvcnQsIGFuZFxuICogYEBuZXN0anMvY29uZmlnYCBzdGF5cyBhbiBvcHRpb25hbCBwZWVyIGRlcGVuZGVuY3kgb2YgdGhpcyBwYWNrYWdlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBDb25maWdNb2R1bGUgfSBmcm9tICdAbmVzdGpzL2NvbmZpZyc7XG4gKiBpbXBvcnQgeyBhd3NDb25maWdMb2FkZXIgfSBmcm9tICdAZHlhbmV0L25lc3Rqcy1jb25maWctYXdzJztcbiAqXG4gKiBATW9kdWxlKHtcbiAqICAgaW1wb3J0czogW1xuICogICAgIENvbmZpZ01vZHVsZS5mb3JSb290KHtcbiAqICAgICAgIGlzR2xvYmFsOiB0cnVlLFxuICogICAgICAgLy8gU2ltcGxlIGBhd3NgIHNoYXBlIOKAlCBzYW1lIGFzIHRoZSBOZXh0LmpzIGFkYXB0ZXIncyBnZXRDb25maWc6XG4gKiAgICAgICBsb2FkOiBbYXdzQ29uZmlnTG9hZGVyKHsgYXdzOiB7IHNlY3JldE5hbWU6ICcvbXktYXBwL2NvbmZpZycgfSB9KV0sXG4gKiAgICAgfSksXG4gKiAgIF0sXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcE1vZHVsZSB7fVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgTmFtZXNwYWNlZCAoY29tcG9zZSB3aXRoIGBAbmVzdGpzL2NvbmZpZ2AncyBgcmVnaXN0ZXJBc2ApOlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQ29uZmlnTW9kdWxlLCByZWdpc3RlckFzIH0gZnJvbSAnQG5lc3Rqcy9jb25maWcnO1xuICpcbiAqIENvbmZpZ01vZHVsZS5mb3JSb290KHtcbiAqICAgbG9hZDogW3JlZ2lzdGVyQXMoJ2RhdGFiYXNlJywgYXdzQ29uZmlnTG9hZGVyKHsgc3NtQ29uZmlnOiB7IHBhdGhzOiB7IHByb2R1Y3Rpb246ICcvZGInIH0gfSB9KSldLFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyBMb2FkZXIgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgZmFjdG9yeSBgKCkgPT4gUHJvbWlzZTxUPmAgc3VpdGFibGUgZm9yIGBDb25maWdNb2R1bGVgJ3MgYGxvYWRgIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXdzQ29uZmlnTG9hZGVyPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgb3B0aW9uczogQXdzQ29uZmlnTG9hZGVyT3B0aW9uczxUPiA9IHt9LFxuKTogKCkgPT4gUHJvbWlzZTxUPiB7XG4gIHJldHVybiBhc3luYyAoKTogUHJvbWlzZTxUPiA9PiB7XG4gICAgY29uc3QgbWFuYWdlciA9IG5ldyBDb25maWdNYW5hZ2VyPFQ+KHtcbiAgICAgIGxvYWRlcnM6IGJ1aWxkQXdzTG9hZGVycyhvcHRpb25zKSxcbiAgICAgIHNjaGVtYTogb3B0aW9ucy5zY2hlbWEsXG4gICAgICBwcmVjZWRlbmNlOiBvcHRpb25zLnByZWNlZGVuY2UgPz8gJ2F3cy1maXJzdCcsXG4gICAgICB2YWxpZGF0ZU9uTG9hZDogb3B0aW9ucy52YWxpZGF0ZSA/PyBCb29sZWFuKG9wdGlvbnMuc2NoZW1hKSxcbiAgICAgIGVuYWJsZUxvZ2dpbmc6IG9wdGlvbnMuZW5hYmxlTG9nZ2luZyA/PyBmYWxzZSxcbiAgICB9KTtcblxuICAgIGF3YWl0IG1hbmFnZXIubG9hZCgpO1xuICAgIHJldHVybiBtYW5hZ2VyLmdldEFsbCgpO1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { EnvironmentLoader, SecretsManagerLoader, SSMParameterStoreLoader, } from '@dyanet/config-aws';
|
|
2
|
+
/**
|
|
3
|
+
* Map an optional `{ development, test, production }` path config to the
|
|
4
|
+
* environment mapping expected by the AWS loaders, falling back to sensible
|
|
5
|
+
* defaults. Returns `undefined` when no paths are supplied so the loader uses
|
|
6
|
+
* its own defaults.
|
|
7
|
+
*/
|
|
8
|
+
function toEnvironmentMapping(paths) {
|
|
9
|
+
if (!paths) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
development: paths.development || 'dev',
|
|
14
|
+
test: paths.test || 'test',
|
|
15
|
+
production: paths.production || 'production',
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Build the configuration loader chain from AWS source options.
|
|
20
|
+
*
|
|
21
|
+
* Order (lowest precedence first): environment variables, then Secrets Manager,
|
|
22
|
+
* then SSM Parameter Store. The AWS loaders skip themselves automatically when
|
|
23
|
+
* unavailable (e.g. in a local environment or without credentials).
|
|
24
|
+
*/
|
|
25
|
+
export function buildAwsLoaders(options) {
|
|
26
|
+
const loaders = [];
|
|
27
|
+
// Always add environment loader first (lowest precedence)
|
|
28
|
+
loaders.push(new EnvironmentLoader({ prefix: options.envPrefix }));
|
|
29
|
+
// Simple, Next.js-style `aws` option: add exactly the named sources.
|
|
30
|
+
if (options.aws) {
|
|
31
|
+
const { secretName, ssmPrefix, region } = options.aws;
|
|
32
|
+
if (secretName) {
|
|
33
|
+
loaders.push(new SecretsManagerLoader({ secretName, region }));
|
|
34
|
+
}
|
|
35
|
+
if (ssmPrefix) {
|
|
36
|
+
loaders.push(new SSMParameterStoreLoader({ parameterPath: ssmPrefix, region }));
|
|
37
|
+
}
|
|
38
|
+
return loaders;
|
|
39
|
+
}
|
|
40
|
+
if (options.secretsManagerConfig?.enabled !== false) {
|
|
41
|
+
loaders.push(new SecretsManagerLoader({
|
|
42
|
+
region: options.secretsManagerConfig?.region,
|
|
43
|
+
environmentMapping: toEnvironmentMapping(options.secretsManagerConfig?.paths),
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
if (options.ssmConfig?.enabled !== false) {
|
|
47
|
+
loaders.push(new SSMParameterStoreLoader({
|
|
48
|
+
region: options.ssmConfig?.region,
|
|
49
|
+
withDecryption: options.ssmConfig?.decrypt,
|
|
50
|
+
environmentMapping: toEnvironmentMapping(options.ssmConfig?.paths),
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
return loaders;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtbG9hZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZC1sb2FkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLHVCQUF1QixHQUN4QixNQUFNLG9CQUFvQixDQUFDO0FBd0I1Qjs7Ozs7R0FLRztBQUNILFNBQVMsb0JBQW9CLENBQzNCLEtBQW9FO0lBRXBFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxPQUFPO1FBQ0wsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSztRQUN2QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNO1FBQzFCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxJQUFJLFlBQVk7S0FDN0MsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQXlCO0lBQ3ZELE1BQU0sT0FBTyxHQUFtQixFQUFFLENBQUM7SUFFbkMsMERBQTBEO0lBQzFELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRW5FLHFFQUFxRTtJQUNyRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ3RELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksb0JBQW9CLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLHVCQUF1QixDQUFDLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEYsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDcEQsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLG9CQUFvQixDQUFDO1lBQ3ZCLE1BQU0sRUFBRSxPQUFPLENBQUMsb0JBQW9CLEVBQUUsTUFBTTtZQUM1QyxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDO1NBQzlFLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDekMsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLHVCQUF1QixDQUFDO1lBQzFCLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU07WUFDakMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTztZQUMxQyxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQztTQUNuRSxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29uZmlnTG9hZGVyLFxuICBFbnZpcm9ubWVudExvYWRlcixcbiAgU2VjcmV0c01hbmFnZXJMb2FkZXIsXG4gIFNTTVBhcmFtZXRlclN0b3JlTG9hZGVyLFxufSBmcm9tICdAZHlhbmV0L2NvbmZpZy1hd3MnO1xuXG5pbXBvcnQgeyBBd3NPcHRpb25zLCBTZWNyZXRzTWFuYWdlckNvbmZpZywgU1NNQ29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL21vZHVsZS1vcHRpb25zLmludGVyZmFjZSc7XG5cbi8qKlxuICogVGhlIEFXUyBjb25maWd1cmF0aW9uIHNvdXJjZXMgdXNlZCB0byBidWlsZCBhIHNldCBvZiBsb2FkZXJzLlxuICogU2hhcmVkIGJ5IHtAbGluayBDb25maWdNb2R1bGV9IGFuZCB7QGxpbmsgYXdzQ29uZmlnTG9hZGVyfSBzbyBib3RoIHByb2R1Y2UgYW5cbiAqIGlkZW50aWNhbCBsb2FkZXIgY2hhaW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXdzTG9hZGVyU291cmNlcyB7XG4gIC8qKiBQcmVmaXggZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZS5nLiBgQVBQX2ApLiAqL1xuICBlbnZQcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTaW1wbGUgQVdTIG9wdGlvbnMgKGB7IHNlY3JldE5hbWUsIHNzbVByZWZpeCwgcmVnaW9uIH1gKSDigJQgbWlycm9ycyB0aGUgTmV4dC5qc1xuICAgKiBhZGFwdGVyLiBXaGVuIHNldCwgZXhhY3RseSB0aGUgbmFtZWQgc291cmNlcyBhcmUgYWRkZWQgYW5kIHRoZSBncmFudWxhclxuICAgKiBgc2VjcmV0c01hbmFnZXJDb25maWdgIC8gYHNzbUNvbmZpZ2Agb3B0aW9ucyBiZWxvdyBhcmUgaWdub3JlZC5cbiAgICovXG4gIGF3cz86IEF3c09wdGlvbnM7XG4gIC8qKiBBV1MgU2VjcmV0cyBNYW5hZ2VyIGNvbmZpZ3VyYXRpb24gKGFkdmFuY2VkKS4gT21pdCBvciBzZXQgYGVuYWJsZWQ6IGZhbHNlYCB0byBza2lwLiAqL1xuICBzZWNyZXRzTWFuYWdlckNvbmZpZz86IFNlY3JldHNNYW5hZ2VyQ29uZmlnO1xuICAvKiogQVdTIFNTTSBQYXJhbWV0ZXIgU3RvcmUgY29uZmlndXJhdGlvbiAoYWR2YW5jZWQpLiBPbWl0IG9yIHNldCBgZW5hYmxlZDogZmFsc2VgIHRvIHNraXAuICovXG4gIHNzbUNvbmZpZz86IFNTTUNvbmZpZztcbn1cblxuLyoqXG4gKiBNYXAgYW4gb3B0aW9uYWwgYHsgZGV2ZWxvcG1lbnQsIHRlc3QsIHByb2R1Y3Rpb24gfWAgcGF0aCBjb25maWcgdG8gdGhlXG4gKiBlbnZpcm9ubWVudCBtYXBwaW5nIGV4cGVjdGVkIGJ5IHRoZSBBV1MgbG9hZGVycywgZmFsbGluZyBiYWNrIHRvIHNlbnNpYmxlXG4gKiBkZWZhdWx0cy4gUmV0dXJucyBgdW5kZWZpbmVkYCB3aGVuIG5vIHBhdGhzIGFyZSBzdXBwbGllZCBzbyB0aGUgbG9hZGVyIHVzZXNcbiAqIGl0cyBvd24gZGVmYXVsdHMuXG4gKi9cbmZ1bmN0aW9uIHRvRW52aXJvbm1lbnRNYXBwaW5nKFxuICBwYXRocz86IHsgZGV2ZWxvcG1lbnQ/OiBzdHJpbmc7IHRlc3Q/OiBzdHJpbmc7IHByb2R1Y3Rpb24/OiBzdHJpbmcgfSxcbik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQge1xuICBpZiAoIXBhdGhzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4ge1xuICAgIGRldmVsb3BtZW50OiBwYXRocy5kZXZlbG9wbWVudCB8fCAnZGV2JyxcbiAgICB0ZXN0OiBwYXRocy50ZXN0IHx8ICd0ZXN0JyxcbiAgICBwcm9kdWN0aW9uOiBwYXRocy5wcm9kdWN0aW9uIHx8ICdwcm9kdWN0aW9uJyxcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgY29uZmlndXJhdGlvbiBsb2FkZXIgY2hhaW4gZnJvbSBBV1Mgc291cmNlIG9wdGlvbnMuXG4gKlxuICogT3JkZXIgKGxvd2VzdCBwcmVjZWRlbmNlIGZpcnN0KTogZW52aXJvbm1lbnQgdmFyaWFibGVzLCB0aGVuIFNlY3JldHMgTWFuYWdlcixcbiAqIHRoZW4gU1NNIFBhcmFtZXRlciBTdG9yZS4gVGhlIEFXUyBsb2FkZXJzIHNraXAgdGhlbXNlbHZlcyBhdXRvbWF0aWNhbGx5IHdoZW5cbiAqIHVuYXZhaWxhYmxlIChlLmcuIGluIGEgbG9jYWwgZW52aXJvbm1lbnQgb3Igd2l0aG91dCBjcmVkZW50aWFscykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEF3c0xvYWRlcnMob3B0aW9uczogQXdzTG9hZGVyU291cmNlcyk6IENvbmZpZ0xvYWRlcltdIHtcbiAgY29uc3QgbG9hZGVyczogQ29uZmlnTG9hZGVyW10gPSBbXTtcblxuICAvLyBBbHdheXMgYWRkIGVudmlyb25tZW50IGxvYWRlciBmaXJzdCAobG93ZXN0IHByZWNlZGVuY2UpXG4gIGxvYWRlcnMucHVzaChuZXcgRW52aXJvbm1lbnRMb2FkZXIoeyBwcmVmaXg6IG9wdGlvbnMuZW52UHJlZml4IH0pKTtcblxuICAvLyBTaW1wbGUsIE5leHQuanMtc3R5bGUgYGF3c2Agb3B0aW9uOiBhZGQgZXhhY3RseSB0aGUgbmFtZWQgc291cmNlcy5cbiAgaWYgKG9wdGlvbnMuYXdzKSB7XG4gICAgY29uc3QgeyBzZWNyZXROYW1lLCBzc21QcmVmaXgsIHJlZ2lvbiB9ID0gb3B0aW9ucy5hd3M7XG4gICAgaWYgKHNlY3JldE5hbWUpIHtcbiAgICAgIGxvYWRlcnMucHVzaChuZXcgU2VjcmV0c01hbmFnZXJMb2FkZXIoeyBzZWNyZXROYW1lLCByZWdpb24gfSkpO1xuICAgIH1cbiAgICBpZiAoc3NtUHJlZml4KSB7XG4gICAgICBsb2FkZXJzLnB1c2gobmV3IFNTTVBhcmFtZXRlclN0b3JlTG9hZGVyKHsgcGFyYW1ldGVyUGF0aDogc3NtUHJlZml4LCByZWdpb24gfSkpO1xuICAgIH1cbiAgICByZXR1cm4gbG9hZGVycztcbiAgfVxuXG4gIGlmIChvcHRpb25zLnNlY3JldHNNYW5hZ2VyQ29uZmlnPy5lbmFibGVkICE9PSBmYWxzZSkge1xuICAgIGxvYWRlcnMucHVzaChcbiAgICAgIG5ldyBTZWNyZXRzTWFuYWdlckxvYWRlcih7XG4gICAgICAgIHJlZ2lvbjogb3B0aW9ucy5zZWNyZXRzTWFuYWdlckNvbmZpZz8ucmVnaW9uLFxuICAgICAgICBlbnZpcm9ubWVudE1hcHBpbmc6IHRvRW52aXJvbm1lbnRNYXBwaW5nKG9wdGlvbnMuc2VjcmV0c01hbmFnZXJDb25maWc/LnBhdGhzKSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5zc21Db25maWc/LmVuYWJsZWQgIT09IGZhbHNlKSB7XG4gICAgbG9hZGVycy5wdXNoKFxuICAgICAgbmV3IFNTTVBhcmFtZXRlclN0b3JlTG9hZGVyKHtcbiAgICAgICAgcmVnaW9uOiBvcHRpb25zLnNzbUNvbmZpZz8ucmVnaW9uLFxuICAgICAgICB3aXRoRGVjcnlwdGlvbjogb3B0aW9ucy5zc21Db25maWc/LmRlY3J5cHQsXG4gICAgICAgIGVudmlyb25tZW50TWFwcGluZzogdG9FbnZpcm9ubWVudE1hcHBpbmcob3B0aW9ucy5zc21Db25maWc/LnBhdGhzKSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbG9hZGVycztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,135 @@
|
|
|
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 ConfigModule_1;
|
|
8
|
+
import { Global, Module } from '@nestjs/common';
|
|
9
|
+
import { ConfigService } from './interfaces/config-service.interface.js';
|
|
10
|
+
import { ConfigServiceImpl } from './services/config.service.js';
|
|
11
|
+
import { buildAwsLoaders } from './build-loaders.js';
|
|
12
|
+
/**
|
|
13
|
+
* Token for injecting module options
|
|
14
|
+
*/
|
|
15
|
+
export const NEST_CONFIG_AWS_OPTIONS = 'NEST_CONFIG_AWS_OPTIONS';
|
|
16
|
+
/**
|
|
17
|
+
* NestJS module for AWS-integrated configuration management.
|
|
18
|
+
* Provides global configuration service with support for environment variables,
|
|
19
|
+
* AWS Secrets Manager, and AWS Systems Manager Parameter Store.
|
|
20
|
+
*/
|
|
21
|
+
let ConfigModule = ConfigModule_1 = class ConfigModule {
|
|
22
|
+
/**
|
|
23
|
+
* Create a synchronous configuration module with provided options.
|
|
24
|
+
*
|
|
25
|
+
* @param options - Configuration options for the module
|
|
26
|
+
* @returns Dynamic module configuration
|
|
27
|
+
*/
|
|
28
|
+
static forRoot(options = {}) {
|
|
29
|
+
const configServiceProvider = this.createConfigServiceProvider(options);
|
|
30
|
+
return {
|
|
31
|
+
module: ConfigModule_1,
|
|
32
|
+
providers: [
|
|
33
|
+
{
|
|
34
|
+
provide: NEST_CONFIG_AWS_OPTIONS,
|
|
35
|
+
useValue: options,
|
|
36
|
+
},
|
|
37
|
+
configServiceProvider,
|
|
38
|
+
],
|
|
39
|
+
exports: [ConfigService],
|
|
40
|
+
global: true,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Create an asynchronous configuration module with factory-based options.
|
|
45
|
+
* Useful when configuration options depend on other services or async operations.
|
|
46
|
+
*
|
|
47
|
+
* @param options - Async configuration options with factory function
|
|
48
|
+
* @returns Dynamic module configuration
|
|
49
|
+
*/
|
|
50
|
+
static forRootAsync(options) {
|
|
51
|
+
const asyncProviders = this.createAsyncProviders(options);
|
|
52
|
+
return {
|
|
53
|
+
module: ConfigModule_1,
|
|
54
|
+
imports: options.imports || [],
|
|
55
|
+
providers: [
|
|
56
|
+
...asyncProviders,
|
|
57
|
+
this.createAsyncConfigServiceProvider(),
|
|
58
|
+
],
|
|
59
|
+
exports: [ConfigService],
|
|
60
|
+
global: true,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create the ConfigService provider for synchronous module registration.
|
|
65
|
+
*/
|
|
66
|
+
static createConfigServiceProvider(options) {
|
|
67
|
+
return {
|
|
68
|
+
provide: ConfigService,
|
|
69
|
+
useFactory: async () => {
|
|
70
|
+
// Create loaders based on configuration
|
|
71
|
+
const loaders = buildAwsLoaders(options);
|
|
72
|
+
// Create ConfigService options. No schema => values are returned as-is
|
|
73
|
+
// (ConfigManager only validates when a schema is provided).
|
|
74
|
+
const serviceOptions = {
|
|
75
|
+
schema: options.schema,
|
|
76
|
+
loaders,
|
|
77
|
+
validateOnLoad: !options.ignoreValidationErrors,
|
|
78
|
+
enableLogging: true,
|
|
79
|
+
};
|
|
80
|
+
// Create and initialize the service
|
|
81
|
+
const configService = new ConfigServiceImpl(serviceOptions);
|
|
82
|
+
// Initialize configuration loading if not in sync mode
|
|
83
|
+
if (!options.loadSync) {
|
|
84
|
+
await configService.initialize();
|
|
85
|
+
}
|
|
86
|
+
return configService;
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create providers for asynchronous module registration.
|
|
92
|
+
*/
|
|
93
|
+
static createAsyncProviders(options) {
|
|
94
|
+
return [
|
|
95
|
+
{
|
|
96
|
+
provide: NEST_CONFIG_AWS_OPTIONS,
|
|
97
|
+
useFactory: options.useFactory,
|
|
98
|
+
inject: options.inject || [],
|
|
99
|
+
},
|
|
100
|
+
];
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create the ConfigService provider for asynchronous module registration.
|
|
104
|
+
*/
|
|
105
|
+
static createAsyncConfigServiceProvider() {
|
|
106
|
+
return {
|
|
107
|
+
provide: ConfigService,
|
|
108
|
+
useFactory: async (options) => {
|
|
109
|
+
// Create loaders based on configuration
|
|
110
|
+
const loaders = buildAwsLoaders(options);
|
|
111
|
+
// Create ConfigService options. No schema => values are returned as-is.
|
|
112
|
+
const serviceOptions = {
|
|
113
|
+
schema: options.schema,
|
|
114
|
+
loaders,
|
|
115
|
+
validateOnLoad: !options.ignoreValidationErrors,
|
|
116
|
+
enableLogging: true,
|
|
117
|
+
};
|
|
118
|
+
// Create and initialize the service
|
|
119
|
+
const configService = new ConfigServiceImpl(serviceOptions);
|
|
120
|
+
// Initialize configuration loading if not in sync mode
|
|
121
|
+
if (!options.loadSync) {
|
|
122
|
+
await configService.initialize();
|
|
123
|
+
}
|
|
124
|
+
return configService;
|
|
125
|
+
},
|
|
126
|
+
inject: [NEST_CONFIG_AWS_OPTIONS],
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
ConfigModule = ConfigModule_1 = __decorate([
|
|
131
|
+
Global(),
|
|
132
|
+
Module({})
|
|
133
|
+
], ConfigModule);
|
|
134
|
+
export { ConfigModule };
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxPQUFPLEVBQWlCLE1BQU0sRUFBRSxNQUFNLEVBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFdEUsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLDJCQUEyQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLHlCQUF5QixDQUFDO0FBRWpFOzs7O0dBSUc7QUFHSSxJQUFNLFlBQVksb0JBQWxCLE1BQU0sWUFBWTtJQUN2Qjs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQ1osVUFBeUMsRUFBRTtRQUUzQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RSxPQUFPO1lBQ0wsTUFBTSxFQUFFLGNBQVk7WUFDcEIsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSx1QkFBdUI7b0JBQ2hDLFFBQVEsRUFBRSxPQUFPO2lCQUNsQjtnQkFDRCxxQkFBcUI7YUFDdEI7WUFDRCxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDeEIsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQ2pCLE9BQTJDO1FBRTNDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLGNBQVk7WUFDcEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRTtZQUM5QixTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxjQUFjO2dCQUNqQixJQUFJLENBQUMsZ0NBQWdDLEVBQUU7YUFDeEM7WUFDRCxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDeEIsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssTUFBTSxDQUFDLDJCQUEyQixDQUN4QyxPQUFzQztRQUV0QyxPQUFPO1lBQ0wsT0FBTyxFQUFFLGFBQWE7WUFDdEIsVUFBVSxFQUFFLEtBQUssSUFBK0IsRUFBRTtnQkFDaEQsd0NBQXdDO2dCQUN4QyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRXpDLHVFQUF1RTtnQkFDdkUsNERBQTREO2dCQUM1RCxNQUFNLGNBQWMsR0FBNEI7b0JBQzlDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtvQkFDdEIsT0FBTztvQkFDUCxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsc0JBQXNCO29CQUMvQyxhQUFhLEVBQUUsSUFBSTtpQkFDcEIsQ0FBQztnQkFFRixvQ0FBb0M7Z0JBQ3BDLE1BQU0sYUFBYSxHQUFHLElBQUksaUJBQWlCLENBQUksY0FBYyxDQUFDLENBQUM7Z0JBRS9ELHVEQUF1RDtnQkFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ25DLENBQUM7Z0JBRUQsT0FBTyxhQUFpQyxDQUFDO1lBQzNDLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssTUFBTSxDQUFDLG9CQUFvQixDQUNqQyxPQUEyQztRQUUzQyxPQUFPO1lBQ0w7Z0JBQ0UsT0FBTyxFQUFFLHVCQUF1QjtnQkFDaEMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFO2FBQzdCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLE1BQU0sQ0FBQyxnQ0FBZ0M7UUFDN0MsT0FBTztZQUNMLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBbUMsRUFBMEIsRUFBRTtnQkFDaEYsd0NBQXdDO2dCQUN4QyxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRXpDLHdFQUF3RTtnQkFDeEUsTUFBTSxjQUFjLEdBQXlCO29CQUMzQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07b0JBQ3RCLE9BQU87b0JBQ1AsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLHNCQUFzQjtvQkFDL0MsYUFBYSxFQUFFLElBQUk7aUJBQ3BCLENBQUM7Z0JBRUYsb0NBQW9DO2dCQUNwQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUU1RCx1REFBdUQ7Z0JBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3RCLE1BQU0sYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNuQyxDQUFDO2dCQUVELE9BQU8sYUFBOEIsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsTUFBTSxFQUFFLENBQUMsdUJBQXVCLENBQUM7U0FDbEMsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFBO0FBbElZLFlBQVk7SUFGeEIsTUFBTSxFQUFFO0lBQ1IsTUFBTSxDQUFDLEVBQUUsQ0FBQztHQUNFLFlBQVksQ0FrSXhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY01vZHVsZSwgR2xvYmFsLCBNb2R1bGUsIFByb3ZpZGVyIH0gZnJvbSAnQG5lc3Rqcy9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9jb25maWctc2VydmljZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBOZXN0Q29uZmlnQXdzTW9kdWxlT3B0aW9ucywgTmVzdENvbmZpZ0F3c01vZHVsZUFzeW5jT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlcy9tb2R1bGUtb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlSW1wbCwgQ29uZmlnU2VydmljZU9wdGlvbnMgfSBmcm9tICcuL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYnVpbGRBd3NMb2FkZXJzIH0gZnJvbSAnLi9idWlsZC1sb2FkZXJzJztcclxuXHJcbi8qKlxyXG4gKiBUb2tlbiBmb3IgaW5qZWN0aW5nIG1vZHVsZSBvcHRpb25zXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgTkVTVF9DT05GSUdfQVdTX09QVElPTlMgPSAnTkVTVF9DT05GSUdfQVdTX09QVElPTlMnO1xyXG5cclxuLyoqXHJcbiAqIE5lc3RKUyBtb2R1bGUgZm9yIEFXUy1pbnRlZ3JhdGVkIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudC5cclxuICogUHJvdmlkZXMgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gc2VydmljZSB3aXRoIHN1cHBvcnQgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyxcclxuICogQVdTIFNlY3JldHMgTWFuYWdlciwgYW5kIEFXUyBTeXN0ZW1zIE1hbmFnZXIgUGFyYW1ldGVyIFN0b3JlLlxyXG4gKi9cclxuQEdsb2JhbCgpXHJcbkBNb2R1bGUoe30pXHJcbmV4cG9ydCBjbGFzcyBDb25maWdNb2R1bGUge1xyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIHN5bmNocm9ub3VzIGNvbmZpZ3VyYXRpb24gbW9kdWxlIHdpdGggcHJvdmlkZWQgb3B0aW9ucy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIG1vZHVsZVxyXG4gICAqIEByZXR1cm5zIER5bmFtaWMgbW9kdWxlIGNvbmZpZ3VyYXRpb25cclxuICAgKi9cclxuICBzdGF0aWMgZm9yUm9vdDxUID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxyXG4gICAgb3B0aW9uczogTmVzdENvbmZpZ0F3c01vZHVsZU9wdGlvbnM8VD4gPSB7fVxyXG4gICk6IER5bmFtaWNNb2R1bGUge1xyXG4gICAgY29uc3QgY29uZmlnU2VydmljZVByb3ZpZGVyID0gdGhpcy5jcmVhdGVDb25maWdTZXJ2aWNlUHJvdmlkZXIob3B0aW9ucyk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbW9kdWxlOiBDb25maWdNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IE5FU1RfQ09ORklHX0FXU19PUFRJT05TLFxyXG4gICAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnMsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb25maWdTZXJ2aWNlUHJvdmlkZXIsXHJcbiAgICAgIF0sXHJcbiAgICAgIGV4cG9ydHM6IFtDb25maWdTZXJ2aWNlXSxcclxuICAgICAgZ2xvYmFsOiB0cnVlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhbiBhc3luY2hyb25vdXMgY29uZmlndXJhdGlvbiBtb2R1bGUgd2l0aCBmYWN0b3J5LWJhc2VkIG9wdGlvbnMuXHJcbiAgICogVXNlZnVsIHdoZW4gY29uZmlndXJhdGlvbiBvcHRpb25zIGRlcGVuZCBvbiBvdGhlciBzZXJ2aWNlcyBvciBhc3luYyBvcGVyYXRpb25zLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQXN5bmMgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpdGggZmFjdG9yeSBmdW5jdGlvblxyXG4gICAqIEByZXR1cm5zIER5bmFtaWMgbW9kdWxlIGNvbmZpZ3VyYXRpb25cclxuICAgKi9cclxuICBzdGF0aWMgZm9yUm9vdEFzeW5jPFQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXHJcbiAgICBvcHRpb25zOiBOZXN0Q29uZmlnQXdzTW9kdWxlQXN5bmNPcHRpb25zPFQ+XHJcbiAgKTogRHluYW1pY01vZHVsZSB7XHJcbiAgICBjb25zdCBhc3luY1Byb3ZpZGVycyA9IHRoaXMuY3JlYXRlQXN5bmNQcm92aWRlcnMob3B0aW9ucyk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbW9kdWxlOiBDb25maWdNb2R1bGUsXHJcbiAgICAgIGltcG9ydHM6IG9wdGlvbnMuaW1wb3J0cyB8fCBbXSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgLi4uYXN5bmNQcm92aWRlcnMsXHJcbiAgICAgICAgdGhpcy5jcmVhdGVBc3luY0NvbmZpZ1NlcnZpY2VQcm92aWRlcigpLFxyXG4gICAgICBdLFxyXG4gICAgICBleHBvcnRzOiBbQ29uZmlnU2VydmljZV0sXHJcbiAgICAgIGdsb2JhbDogdHJ1ZSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgdGhlIENvbmZpZ1NlcnZpY2UgcHJvdmlkZXIgZm9yIHN5bmNocm9ub3VzIG1vZHVsZSByZWdpc3RyYXRpb24uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlQ29uZmlnU2VydmljZVByb3ZpZGVyPFQ+KFxyXG4gICAgb3B0aW9uczogTmVzdENvbmZpZ0F3c01vZHVsZU9wdGlvbnM8VD5cclxuICApOiBQcm92aWRlciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwcm92aWRlOiBDb25maWdTZXJ2aWNlLFxyXG4gICAgICB1c2VGYWN0b3J5OiBhc3luYyAoKTogUHJvbWlzZTxDb25maWdTZXJ2aWNlPFQ+PiA9PiB7XHJcbiAgICAgICAgLy8gQ3JlYXRlIGxvYWRlcnMgYmFzZWQgb24gY29uZmlndXJhdGlvblxyXG4gICAgICAgIGNvbnN0IGxvYWRlcnMgPSBidWlsZEF3c0xvYWRlcnMob3B0aW9ucyk7XHJcblxyXG4gICAgICAgIC8vIENyZWF0ZSBDb25maWdTZXJ2aWNlIG9wdGlvbnMuIE5vIHNjaGVtYSA9PiB2YWx1ZXMgYXJlIHJldHVybmVkIGFzLWlzXHJcbiAgICAgICAgLy8gKENvbmZpZ01hbmFnZXIgb25seSB2YWxpZGF0ZXMgd2hlbiBhIHNjaGVtYSBpcyBwcm92aWRlZCkuXHJcbiAgICAgICAgY29uc3Qgc2VydmljZU9wdGlvbnM6IENvbmZpZ1NlcnZpY2VPcHRpb25zPFQ+ID0ge1xyXG4gICAgICAgICAgc2NoZW1hOiBvcHRpb25zLnNjaGVtYSxcclxuICAgICAgICAgIGxvYWRlcnMsXHJcbiAgICAgICAgICB2YWxpZGF0ZU9uTG9hZDogIW9wdGlvbnMuaWdub3JlVmFsaWRhdGlvbkVycm9ycyxcclxuICAgICAgICAgIGVuYWJsZUxvZ2dpbmc6IHRydWUsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBzZXJ2aWNlXHJcbiAgICAgICAgY29uc3QgY29uZmlnU2VydmljZSA9IG5ldyBDb25maWdTZXJ2aWNlSW1wbDxUPihzZXJ2aWNlT3B0aW9ucyk7XHJcblxyXG4gICAgICAgIC8vIEluaXRpYWxpemUgY29uZmlndXJhdGlvbiBsb2FkaW5nIGlmIG5vdCBpbiBzeW5jIG1vZGVcclxuICAgICAgICBpZiAoIW9wdGlvbnMubG9hZFN5bmMpIHtcclxuICAgICAgICAgIGF3YWl0IGNvbmZpZ1NlcnZpY2UuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbmZpZ1NlcnZpY2UgYXMgQ29uZmlnU2VydmljZTxUPjtcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgcHJvdmlkZXJzIGZvciBhc3luY2hyb25vdXMgbW9kdWxlIHJlZ2lzdHJhdGlvbi5cclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVBc3luY1Byb3ZpZGVyczxUPihcclxuICAgIG9wdGlvbnM6IE5lc3RDb25maWdBd3NNb2R1bGVBc3luY09wdGlvbnM8VD5cclxuICApOiBQcm92aWRlcltdIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtcclxuICAgICAgICBwcm92aWRlOiBORVNUX0NPTkZJR19BV1NfT1BUSU9OUyxcclxuICAgICAgICB1c2VGYWN0b3J5OiBvcHRpb25zLnVzZUZhY3RvcnksXHJcbiAgICAgICAgaW5qZWN0OiBvcHRpb25zLmluamVjdCB8fCBbXSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgdGhlIENvbmZpZ1NlcnZpY2UgcHJvdmlkZXIgZm9yIGFzeW5jaHJvbm91cyBtb2R1bGUgcmVnaXN0cmF0aW9uLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZUFzeW5jQ29uZmlnU2VydmljZVByb3ZpZGVyKCk6IFByb3ZpZGVyIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHByb3ZpZGU6IENvbmZpZ1NlcnZpY2UsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IGFzeW5jIChvcHRpb25zOiBOZXN0Q29uZmlnQXdzTW9kdWxlT3B0aW9ucyk6IFByb21pc2U8Q29uZmlnU2VydmljZT4gPT4ge1xyXG4gICAgICAgIC8vIENyZWF0ZSBsb2FkZXJzIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb25cclxuICAgICAgICBjb25zdCBsb2FkZXJzID0gYnVpbGRBd3NMb2FkZXJzKG9wdGlvbnMpO1xyXG5cclxuICAgICAgICAvLyBDcmVhdGUgQ29uZmlnU2VydmljZSBvcHRpb25zLiBObyBzY2hlbWEgPT4gdmFsdWVzIGFyZSByZXR1cm5lZCBhcy1pcy5cclxuICAgICAgICBjb25zdCBzZXJ2aWNlT3B0aW9uczogQ29uZmlnU2VydmljZU9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBzY2hlbWE6IG9wdGlvbnMuc2NoZW1hLFxyXG4gICAgICAgICAgbG9hZGVycyxcclxuICAgICAgICAgIHZhbGlkYXRlT25Mb2FkOiAhb3B0aW9ucy5pZ25vcmVWYWxpZGF0aW9uRXJyb3JzLFxyXG4gICAgICAgICAgZW5hYmxlTG9nZ2luZzogdHJ1ZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIHNlcnZpY2VcclxuICAgICAgICBjb25zdCBjb25maWdTZXJ2aWNlID0gbmV3IENvbmZpZ1NlcnZpY2VJbXBsKHNlcnZpY2VPcHRpb25zKTtcclxuXHJcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb25maWd1cmF0aW9uIGxvYWRpbmcgaWYgbm90IGluIHN5bmMgbW9kZVxyXG4gICAgICAgIGlmICghb3B0aW9ucy5sb2FkU3luYykge1xyXG4gICAgICAgICAgYXdhaXQgY29uZmlnU2VydmljZS5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gY29uZmlnU2VydmljZSBhcyBDb25maWdTZXJ2aWNlO1xyXG4gICAgICB9LFxyXG4gICAgICBpbmplY3Q6IFtORVNUX0NPTkZJR19BV1NfT1BUSU9OU10sXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Re-export all public types from @dyanet/config-aws core package
|
|
2
|
+
export {
|
|
3
|
+
// Loaders
|
|
4
|
+
EnvironmentLoader, EnvFileLoader, S3Loader, SecretsManagerLoader, SSMParameterStoreLoader,
|
|
5
|
+
// ConfigManager
|
|
6
|
+
ConfigManager,
|
|
7
|
+
// Error classes
|
|
8
|
+
ConfigurationError, ValidationError, AWSServiceError, ConfigurationLoadError, MissingConfigurationError,
|
|
9
|
+
// Utilities
|
|
10
|
+
ConfigValidationUtil, EnvFileParser, } from '@dyanet/config-aws';
|
|
11
|
+
// NestJS dependency-injection module + service
|
|
12
|
+
export * from './config.module.js';
|
|
13
|
+
export * from './interfaces/index.js';
|
|
14
|
+
export * from './services/config.service.js';
|
|
15
|
+
// @nestjs/config integration: a single factory helper for the `load` array
|
|
16
|
+
export { awsConfigLoader } from './aws-config-loader.js';
|
|
17
|
+
export { buildAwsLoaders } from './build-loaders.js';
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLE9BQU87QUFDTCxVQUFVO0FBQ1YsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLHVCQUF1QjtBQUV2QixnQkFBZ0I7QUFDaEIsYUFBYTtBQUViLGdCQUFnQjtBQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIseUJBQXlCO0FBRXpCLFlBQVk7QUFDWixvQkFBb0IsRUFDcEIsYUFBYSxHQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFzQjVCLCtDQUErQztBQUMvQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsMkVBQTJFO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBSZS1leHBvcnQgYWxsIHB1YmxpYyB0eXBlcyBmcm9tIEBkeWFuZXQvY29uZmlnLWF3cyBjb3JlIHBhY2thZ2VcbmV4cG9ydCB7XG4gIC8vIExvYWRlcnNcbiAgRW52aXJvbm1lbnRMb2FkZXIsXG4gIEVudkZpbGVMb2FkZXIsXG4gIFMzTG9hZGVyLFxuICBTZWNyZXRzTWFuYWdlckxvYWRlcixcbiAgU1NNUGFyYW1ldGVyU3RvcmVMb2FkZXIsXG5cbiAgLy8gQ29uZmlnTWFuYWdlclxuICBDb25maWdNYW5hZ2VyLFxuXG4gIC8vIEVycm9yIGNsYXNzZXNcbiAgQ29uZmlndXJhdGlvbkVycm9yLFxuICBWYWxpZGF0aW9uRXJyb3IsXG4gIEFXU1NlcnZpY2VFcnJvcixcbiAgQ29uZmlndXJhdGlvbkxvYWRFcnJvcixcbiAgTWlzc2luZ0NvbmZpZ3VyYXRpb25FcnJvcixcblxuICAvLyBVdGlsaXRpZXNcbiAgQ29uZmlnVmFsaWRhdGlvblV0aWwsXG4gIEVudkZpbGVQYXJzZXIsXG59IGZyb20gJ0BkeWFuZXQvY29uZmlnLWF3cyc7XG5cbi8vIFJlLWV4cG9ydCB0eXBlcyBmcm9tIEBkeWFuZXQvY29uZmlnLWF3c1xuZXhwb3J0IHR5cGUge1xuICAvLyBDb3JlIGludGVyZmFjZXNcbiAgQ29uZmlnTG9hZGVyLFxuICBDb25maWdNYW5hZ2VyT3B0aW9ucyxcbiAgTG9hZGVyUHJlY2VkZW5jZSxcbiAgVmVyYm9zZU9wdGlvbnMsXG4gIFByZWNlZGVuY2VTdHJhdGVneSxcbiAgQ29uZmlnTG9hZFJlc3VsdCxcbiAgQ29uZmlnU291cmNlSW5mbyxcbiAgTG9nZ2VyLFxuXG4gIC8vIExvYWRlciBjb25maWdzXG4gIEVudmlyb25tZW50TG9hZGVyQ29uZmlnLFxuICBFbnZGaWxlTG9hZGVyQ29uZmlnLFxuICBTM0xvYWRlckNvbmZpZyxcbiAgU2VjcmV0c01hbmFnZXJMb2FkZXJDb25maWcsXG4gIFNTTVBhcmFtZXRlclN0b3JlTG9hZGVyQ29uZmlnLFxufSBmcm9tICdAZHlhbmV0L2NvbmZpZy1hd3MnO1xuXG4vLyBOZXN0SlMgZGVwZW5kZW5jeS1pbmplY3Rpb24gbW9kdWxlICsgc2VydmljZVxuZXhwb3J0ICogZnJvbSAnLi9jb25maWcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcblxuLy8gQG5lc3Rqcy9jb25maWcgaW50ZWdyYXRpb246IGEgc2luZ2xlIGZhY3RvcnkgaGVscGVyIGZvciB0aGUgYGxvYWRgIGFycmF5XG5leHBvcnQgeyBhd3NDb25maWdMb2FkZXIgfSBmcm9tICcuL2F3cy1jb25maWctbG9hZGVyJztcbmV4cG9ydCB0eXBlIHsgQXdzQ29uZmlnTG9hZGVyT3B0aW9ucyB9IGZyb20gJy4vYXdzLWNvbmZpZy1sb2FkZXInO1xuZXhwb3J0IHsgYnVpbGRBd3NMb2FkZXJzIH0gZnJvbSAnLi9idWlsZC1sb2FkZXJzJztcbmV4cG9ydCB0eXBlIHsgQXdzTG9hZGVyU291cmNlcyB9IGZyb20gJy4vYnVpbGQtbG9hZGVycyc7XG4iXX0=
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXNlcnZpY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludGVyZmFjZXMvY29uZmlnLXNlcnZpY2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sT0FBZ0IsYUFBYTtDQW1CbEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQWJzdHJhY3QgQ29uZmlnU2VydmljZSBpbnRlcmZhY2UgZm9yIGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxyXG4gKiBQcm92aWRlcyB0eXBlLXNhZmUgYWNjZXNzIHRvIGNvbmZpZ3VyYXRpb24gdmFsdWVzIHdpdGggZ2VuZXJpYyB0eXBlIHN1cHBvcnQuXHJcbiAqL1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29uZmlnU2VydmljZTxUID0gYW55PiB7XHJcbiAgLyoqXHJcbiAgICogR2V0IGEgY29uZmlndXJhdGlvbiB2YWx1ZSBieSBrZXkgd2l0aCB0eXBlIHNhZmV0eS5cclxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGNvbmZpZ3VyYXRpb24ga2V5IHRvIHJldHJpZXZlXHJcbiAgICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24gdmFsdWUgd2l0aCBwcm9wZXIgdHlwaW5nXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgZ2V0PEsgZXh0ZW5kcyBrZXlvZiBUPihrZXk6IEspOiBUW0tdO1xyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGUgY29uZmlndXJhdGlvbiBzZXJ2aWNlIGhhcyBiZWVuIGluaXRpYWxpemVkLlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHNlcnZpY2UgaXMgcmVhZHkgdG8gc2VydmUgY29uZmlndXJhdGlvbiB2YWx1ZXNcclxuICAgKi9cclxuICBhYnN0cmFjdCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhbGwgY29uZmlndXJhdGlvbiB2YWx1ZXMuXHJcbiAgICogQHJldHVybnMgVGhlIGNvbXBsZXRlIGNvbmZpZ3VyYXRpb24gb2JqZWN0XHJcbiAgICovXHJcbiAgYWJzdHJhY3QgZ2V0QWxsKCk6IFQ7XHJcbn1cclxuIl19
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zY2hlbWEuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludGVyZmFjZXMvZGVmYXVsdC1zY2hlbWEuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEI7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxQywwQkFBMEI7SUFDMUIsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBRWxFLHNFQUFzRTtJQUN0RSxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUVoRiw4QkFBOEI7SUFDOUIsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFFakMsd0NBQXdDO0lBQ3hDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBRWxDLHVCQUF1QjtJQUN2QixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFFN0MsdUJBQXVCO0lBQ3ZCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBRTNCLGdCQUFnQjtJQUNoQixTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUUzRSxtQkFBbUI7SUFDbkIsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFFekMsZ0JBQWdCO0lBQ2hCLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ3ZDLENBQUMsQ0FBQztBQU9IOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztRQUNoQyxtREFBbUQ7UUFDbkQsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDbEMsQ0FBQztJQUVGLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7UUFDdEMsdUNBQXVDO1FBQ3ZDLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSx1Q0FBdUMsQ0FBQztLQUN2RSxDQUFDO0lBRUYsSUFBSSxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztRQUMvQixnQ0FBZ0M7UUFDaEMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGdDQUFnQyxDQUFDO0tBQ2hFLENBQUM7SUFFRixVQUFVLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1FBQ3JDLHNDQUFzQztRQUN0QyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsc0NBQXNDLENBQUM7UUFDckUsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUM3RCxDQUFDO0NBQ0gsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE1BQWM7SUFDcEQsTUFBTSxHQUFHLEdBQUcsTUFBeUMsQ0FBQztJQUN0RCxPQUFPLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLG1CQUFtQixDQUFDO0FBQ3hELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xyXG5cclxuLyoqXHJcbiAqIERlZmF1bHQgY29uZmlndXJhdGlvbiBzY2hlbWEgdXNpbmcgWm9kLlxyXG4gKiBQcm92aWRlcyBhIGZsZXhpYmxlIGJhc2Ugc2NoZW1hIHRoYXQgY2FuIGJlIGV4dGVuZGVkIGJ5IGFwcGxpY2F0aW9ucy5cclxuICovXHJcbmV4cG9ydCBjb25zdCBkZWZhdWx0Q29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xyXG4gIC8qKiBOb2RlLmpzIGVudmlyb25tZW50ICovXHJcbiAgTk9ERV9FTlY6IHouZW51bShbJ3Byb2R1Y3Rpb24nLCAnZGV2ZWxvcG1lbnQnLCAndGVzdCddKS5vcHRpb25hbCgpLFxyXG4gIFxyXG4gIC8qKiBBcHBsaWNhdGlvbiBlbnZpcm9ubWVudCAobWlycm9ycyBOT0RFX0VOViB3aXRoICdsb2NhbCcgZGVmYXVsdCkgKi9cclxuICBBUFBfRU5WOiB6LmVudW0oWydwcm9kdWN0aW9uJywgJ3Rlc3QnLCAnZGV2ZWxvcG1lbnQnLCAnbG9jYWwnXSkuZGVmYXVsdCgnbG9jYWwnKSxcclxuICBcclxuICAvKiogQVdTIHJlZ2lvbiBmb3Igc2VydmljZXMgKi9cclxuICBBV1NfUkVHSU9OOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXHJcbiAgXHJcbiAgLyoqIEFXUyBwcm9maWxlIGZvciBsb2NhbCBkZXZlbG9wbWVudCAqL1xyXG4gIEFXU19QUk9GSUxFOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXHJcbiAgXHJcbiAgLyoqIEFwcGxpY2F0aW9uIHBvcnQgKi9cclxuICBQT1JUOiB6LmNvZXJjZS5udW1iZXIoKS5wb3NpdGl2ZSgpLm9wdGlvbmFsKCksXHJcbiAgXHJcbiAgLyoqIEFwcGxpY2F0aW9uIGhvc3QgKi9cclxuICBIT1NUOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXHJcbiAgXHJcbiAgLyoqIExvZyBsZXZlbCAqL1xyXG4gIExPR19MRVZFTDogei5lbnVtKFsnZXJyb3InLCAnd2FybicsICdpbmZvJywgJ2RlYnVnJywgJ3ZlcmJvc2UnXSkub3B0aW9uYWwoKSxcclxuICBcclxuICAvKiogRGF0YWJhc2UgVVJMICovXHJcbiAgREFUQUJBU0VfVVJMOiB6LnN0cmluZygpLnVybCgpLm9wdGlvbmFsKCksXHJcbiAgXHJcbiAgLyoqIFJlZGlzIFVSTCAqL1xyXG4gIFJFRElTX1VSTDogei5zdHJpbmcoKS51cmwoKS5vcHRpb25hbCgpLFxyXG59KTtcclxuXHJcbi8qKlxyXG4gKiBUeXBlIGluZmVyZW5jZSBmb3IgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBzY2hlbWEuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBEZWZhdWx0Q29uZmlnU2NoZW1hID0gei5pbmZlcjx0eXBlb2YgZGVmYXVsdENvbmZpZ1NjaGVtYT47XHJcblxyXG4vKipcclxuICogRW52aXJvbm1lbnQtc3BlY2lmaWMgdmFsaWRhdGlvbiBzY2hlbWFzLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGVudmlyb25tZW50U2NoZW1hcyA9IHtcclxuICBsb2NhbDogZGVmYXVsdENvbmZpZ1NjaGVtYS5leHRlbmQoe1xyXG4gICAgLy8gTG9jYWwgZW52aXJvbm1lbnQgbWF5IGhhdmUgZmV3ZXIgcmVxdWlyZWQgZmllbGRzXHJcbiAgICBBV1NfUkVHSU9OOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXHJcbiAgfSksXHJcbiAgXHJcbiAgZGV2ZWxvcG1lbnQ6IGRlZmF1bHRDb25maWdTY2hlbWEuZXh0ZW5kKHtcclxuICAgIC8vIERldmVsb3BtZW50IGVudmlyb25tZW50IHJlcXVpcmVtZW50c1xyXG4gICAgQVdTX1JFR0lPTjogei5zdHJpbmcoKS5taW4oMSwgJ0FXU19SRUdJT04gaXMgcmVxdWlyZWQgaW4gZGV2ZWxvcG1lbnQnKSxcclxuICB9KSxcclxuICBcclxuICB0ZXN0OiBkZWZhdWx0Q29uZmlnU2NoZW1hLmV4dGVuZCh7XHJcbiAgICAvLyBUZXN0IGVudmlyb25tZW50IHJlcXVpcmVtZW50c1xyXG4gICAgQVdTX1JFR0lPTjogei5zdHJpbmcoKS5taW4oMSwgJ0FXU19SRUdJT04gaXMgcmVxdWlyZWQgaW4gdGVzdCcpLFxyXG4gIH0pLFxyXG4gIFxyXG4gIHByb2R1Y3Rpb246IGRlZmF1bHRDb25maWdTY2hlbWEuZXh0ZW5kKHtcclxuICAgIC8vIFByb2R1Y3Rpb24gZW52aXJvbm1lbnQgcmVxdWlyZW1lbnRzXHJcbiAgICBBV1NfUkVHSU9OOiB6LnN0cmluZygpLm1pbigxLCAnQVdTX1JFR0lPTiBpcyByZXF1aXJlZCBpbiBwcm9kdWN0aW9uJyksXHJcbiAgICBMT0dfTEVWRUw6IHouZW51bShbJ2Vycm9yJywgJ3dhcm4nLCAnaW5mbyddKS5kZWZhdWx0KCdpbmZvJyksXHJcbiAgfSksXHJcbn07XHJcblxyXG4vKipcclxuICogSGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgYXBwcm9wcmlhdGUgc2NoZW1hIGZvciB0aGUgY3VycmVudCBlbnZpcm9ubWVudC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2hlbWFGb3JFbnZpcm9ubWVudChhcHBFbnY6IHN0cmluZyk6IHouWm9kU2NoZW1hIHtcclxuICBjb25zdCBlbnYgPSBhcHBFbnYgYXMga2V5b2YgdHlwZW9mIGVudmlyb25tZW50U2NoZW1hcztcclxuICByZXR1cm4gZW52aXJvbm1lbnRTY2hlbWFzW2Vudl0gfHwgZGVmYXVsdENvbmZpZ1NjaGVtYTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFZhbGlkYXRpb24gaGVscGVyIGZvciBBUFBfRU5WIHZhbHVlcy5cclxuICovXHJcbmV4cG9ydCBjb25zdCBhcHBFbnZTY2hlbWEgPSB6LmVudW0oWydwcm9kdWN0aW9uJywgJ3Rlc3QnLCAnZGV2ZWxvcG1lbnQnLCAnbG9jYWwnXSk7XHJcblxyXG4vKipcclxuICogVHlwZSBmb3IgdmFsaWQgQVBQX0VOViB2YWx1ZXMuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBBcHBFbnYgPSB6LmluZmVyPHR5cGVvZiBhcHBFbnZTY2hlbWE+O1xyXG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Core interfaces
|
|
2
|
+
export * from './config-service.interface.js';
|
|
3
|
+
export * from './module-options.interface.js';
|
|
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.js';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0I7QUFDbEIsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDO0FBRTNDLGlFQUFpRTtBQUNqRSxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLHlCQUF5QixHQUMxQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLDJCQUEyQjtBQUMzQixjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29yZSBpbnRlcmZhY2VzXHJcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnLXNlcnZpY2UuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGUtb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5cclxuLy8gRXJyb3IgY2xhc3NlcyAtIHJlLWV4cG9ydCBmcm9tIGNvcmUgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcclxuZXhwb3J0IHtcclxuICBDb25maWd1cmF0aW9uRXJyb3IsXHJcbiAgVmFsaWRhdGlvbkVycm9yLFxyXG4gIEFXU1NlcnZpY2VFcnJvcixcclxuICBDb25maWd1cmF0aW9uTG9hZEVycm9yLFxyXG4gIE1pc3NpbmdDb25maWd1cmF0aW9uRXJyb3IsXHJcbn0gZnJvbSAnQGR5YW5ldC9jb25maWctYXdzJztcclxuXHJcbi8vIERlZmF1bHQgc2NoZW1hIGFuZCB0eXBlc1xyXG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtc2NoZW1hLmludGVyZmFjZSc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLW9wdGlvbnMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludGVyZmFjZXMvbW9kdWxlLW9wdGlvbnMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBab2RUeXBlIH0gZnJvbSAnem9kJztcclxuXHJcbi8qKlxyXG4gKiBDb25maWd1cmF0aW9uIGZvciBBV1MgU2VjcmV0cyBNYW5hZ2VyIGludGVncmF0aW9uLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTZWNyZXRzTWFuYWdlckNvbmZpZyB7XHJcbiAgLyoqIEFXUyByZWdpb24gZm9yIFNlY3JldHMgTWFuYWdlciAqL1xyXG4gIHJlZ2lvbj86IHN0cmluZztcclxuICAvKiogQmFzZSBwYXRoIGZvciBzZWNyZXRzIGluIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgKi9cclxuICBwYXRocz86IHtcclxuICAgIGRldmVsb3BtZW50Pzogc3RyaW5nO1xyXG4gICAgdGVzdD86IHN0cmluZztcclxuICAgIHByb2R1Y3Rpb24/OiBzdHJpbmc7XHJcbiAgfTtcclxuICAvKiogV2hldGhlciB0byBlbmFibGUgU2VjcmV0cyBNYW5hZ2VyIGludGVncmF0aW9uICovXHJcbiAgZW5hYmxlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb25maWd1cmF0aW9uIGZvciBBV1MgU3lzdGVtcyBNYW5hZ2VyIFBhcmFtZXRlciBTdG9yZSBpbnRlZ3JhdGlvbi5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU1NNQ29uZmlnIHtcclxuICAvKiogQVdTIHJlZ2lvbiBmb3IgU1NNIFBhcmFtZXRlciBTdG9yZSAqL1xyXG4gIHJlZ2lvbj86IHN0cmluZztcclxuICAvKiogQmFzZSBwYXRoIGZvciBwYXJhbWV0ZXJzIGluIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgKi9cclxuICBwYXRocz86IHtcclxuICAgIGRldmVsb3BtZW50Pzogc3RyaW5nO1xyXG4gICAgdGVzdD86IHN0cmluZztcclxuICAgIHByb2R1Y3Rpb24/OiBzdHJpbmc7XHJcbiAgfTtcclxuICAvKiogV2hldGhlciB0byBlbmFibGUgU1NNIFBhcmFtZXRlciBTdG9yZSBpbnRlZ3JhdGlvbiAqL1xyXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xyXG4gIC8qKiBXaGV0aGVyIHRvIGRlY3J5cHQgU2VjdXJlU3RyaW5nIHBhcmFtZXRlcnMgKi9cclxuICBkZWNyeXB0PzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNpbXBsZSwgZmxhdCBBV1Mgb3B0aW9ucyDigJQgdGhlIHNhbWUgZXJnb25vbWljIHNoYXBlIHVzZWQgYnkgdGhlIE5leHQuanMgYWRhcHRlcidzXHJcbiAqIGBnZXRDb25maWdgLiBXaGVuIHByb3ZpZGVkLCBleGFjdGx5IHRoZSBuYW1lZCBzb3VyY2VzIGFyZSBsb2FkZWQgKGEgYHNlY3JldE5hbWVgXHJcbiAqIGFkZHMgYSBTZWNyZXRzIE1hbmFnZXIgbG9hZGVyLCBhbiBgc3NtUHJlZml4YCBhZGRzIGFuIFNTTSBsb2FkZXIpOyB0aGUgZ3JhbnVsYXJcclxuICogYHNlY3JldHNNYW5hZ2VyQ29uZmlnYCAvIGBzc21Db25maWdgIG9wdGlvbnMgYXJlIG5vdCBhcHBsaWVkLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBBd3NPcHRpb25zIHtcclxuICAvKiogU2VjcmV0IG5hbWUvcGF0aCBmb3IgQVdTIFNlY3JldHMgTWFuYWdlci4gKi9cclxuICBzZWNyZXROYW1lPzogc3RyaW5nO1xyXG4gIC8qKiBQYXJhbWV0ZXIgcGF0aCBwcmVmaXggZm9yIEFXUyBTU00gUGFyYW1ldGVyIFN0b3JlLiAqL1xyXG4gIHNzbVByZWZpeD86IHN0cmluZztcclxuICAvKiogQVdTIHJlZ2lvbiAoZGVmYXVsdHMgdG8gdGhlIGBBV1NfUkVHSU9OYCBlbnYgdmFyLCB0aGVuIGB1cy1lYXN0LTFgKS4gKi9cclxuICByZWdpb24/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgTmVzdEpTIEFXUyBDb25maWd1cmF0aW9uIG1vZHVsZS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmVzdENvbmZpZ0F3c01vZHVsZU9wdGlvbnM8VCA9IGFueT4ge1xyXG4gIC8qKiBab2Qgc2NoZW1hIGZvciBjb25maWd1cmF0aW9uIHZhbGlkYXRpb24uIFdoZW4gb21pdHRlZCwgdmFsdWVzIGFyZSByZXR1cm5lZCBhcy1pcyAobm8gdmFsaWRhdGlvbikuICovXHJcbiAgc2NoZW1hPzogWm9kVHlwZTxUPjtcclxuXHJcbiAgLyoqXHJcbiAgICogU2ltcGxlIEFXUyBvcHRpb25zIChgeyBzZWNyZXROYW1lLCBzc21QcmVmaXgsIHJlZ2lvbiB9YCkg4oCUIG1pcnJvcnMgdGhlIE5leHQuanNcclxuICAgKiBhZGFwdGVyLiBXaGVuIHNldCwgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBzZWNyZXRzTWFuYWdlckNvbmZpZ2AgLyBgc3NtQ29uZmlnYC5cclxuICAgKi9cclxuICBhd3M/OiBBd3NPcHRpb25zO1xyXG5cclxuICAvKiogQ29uZmlndXJhdGlvbiBmb3IgQVdTIFNlY3JldHMgTWFuYWdlciBpbnRlZ3JhdGlvbiAoYWR2YW5jZWQpLiAqL1xyXG4gIHNlY3JldHNNYW5hZ2VyQ29uZmlnPzogU2VjcmV0c01hbmFnZXJDb25maWc7XHJcblxyXG4gIC8qKiBDb25maWd1cmF0aW9uIGZvciBBV1MgU3lzdGVtcyBNYW5hZ2VyIFBhcmFtZXRlciBTdG9yZSBpbnRlZ3JhdGlvbiAoYWR2YW5jZWQpLiAqL1xyXG4gIHNzbUNvbmZpZz86IFNTTUNvbmZpZztcclxuXHJcbiAgLyoqIFByZWZpeCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIChlLmcuLCAnQVBQXycpICovXHJcbiAgZW52UHJlZml4Pzogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBXaGV0aGVyIHRvIGlnbm9yZSB2YWxpZGF0aW9uIGVycm9ycyBhbmQgY29udGludWUgd2l0aCBwYXJ0aWFsIGNvbmZpZyAqL1xyXG4gIGlnbm9yZVZhbGlkYXRpb25FcnJvcnM/OiBib29sZWFuO1xyXG4gIFxyXG4gIC8qKiBDdXN0b20gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBmb3IgQVBQX0VOViAoZGVmYXVsdHMgdG8gJ0FQUF9FTlYnKSAqL1xyXG4gIGFwcEVudlZhcmlhYmxlPzogc3RyaW5nO1xyXG4gIFxyXG4gIC8qKiBXaGV0aGVyIHRvIGxvYWQgY29uZmlndXJhdGlvbiBzeW5jaHJvbm91c2x5IGR1cmluZyBtb2R1bGUgaW5pdGlhbGl6YXRpb24gKi9cclxuICBsb2FkU3luYz86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBc3luYyBmYWN0b3J5IG9wdGlvbnMgZm9yIGR5bmFtaWMgbW9kdWxlIGNvbmZpZ3VyYXRpb24uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RDb25maWdBd3NNb2R1bGVBc3luY09wdGlvbnM8VCA9IGFueT4ge1xyXG4gIC8qKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBtb2R1bGUgb3B0aW9ucyAqL1xyXG4gIHVzZUZhY3Rvcnk6ICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxOZXN0Q29uZmlnQXdzTW9kdWxlT3B0aW9uczxUPj4gfCBOZXN0Q29uZmlnQXdzTW9kdWxlT3B0aW9uczxUPjtcclxuICBcclxuICAvKiogRGVwZW5kZW5jaWVzIHRvIGluamVjdCBpbnRvIHRoZSBmYWN0b3J5IGZ1bmN0aW9uICovXHJcbiAgaW5qZWN0PzogYW55W107XHJcbiAgXHJcbiAgLyoqIEltcG9ydHMgcmVxdWlyZWQgZm9yIHRoZSBmYWN0b3J5IGZ1bmN0aW9uICovXHJcbiAgaW1wb3J0cz86IGFueVtdO1xyXG59XHJcbiJdfQ==
|
package/dist/esm/package.json
CHANGED