@dyanet/nestjs-config-aws 1.0.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +213 -1013
- package/dist/cjs/config-aws/src/config-manager.js +366 -0
- package/dist/cjs/config-aws/src/errors/index.js +77 -0
- package/dist/cjs/config-aws/src/index.js +37 -0
- package/dist/cjs/config-aws/src/interfaces/config-loader.interface.js +3 -0
- package/dist/cjs/config-aws/src/interfaces/config-manager.interface.js +3 -0
- package/dist/cjs/config-aws/src/interfaces/env-file-loader.interface.js +3 -0
- package/dist/cjs/config-aws/src/interfaces/environment-loader.interface.js +3 -0
- package/dist/cjs/config-aws/src/interfaces/s3-loader.interface.js +3 -0
- package/dist/cjs/config-aws/src/interfaces/secrets-manager-loader.interface.js +3 -0
- package/dist/cjs/config-aws/src/interfaces/ssm-parameter-store-loader.interface.js +3 -0
- package/dist/cjs/config-aws/src/loaders/env-file.loader.js +169 -0
- package/dist/cjs/config-aws/src/loaders/environment.loader.js +85 -0
- package/dist/cjs/config-aws/src/loaders/s3.loader.js +145 -0
- package/dist/cjs/config-aws/src/loaders/secrets-manager.loader.js +169 -0
- package/dist/cjs/config-aws/src/loaders/ssm-parameter-store.loader.js +199 -0
- package/dist/cjs/config-aws/src/utils/env-file-parser.util.js +98 -0
- package/dist/cjs/config-aws/src/utils/validation.util.js +116 -0
- package/dist/cjs/nestjs-config-aws/src/config.module.js +175 -0
- package/dist/cjs/nestjs-config-aws/src/index.js +61 -0
- package/dist/cjs/{integration → nestjs-config-aws/src/integration}/index.js +1 -1
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/configuration-factory.interface.js +3 -0
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/configuration-source.interface.js +3 -0
- package/dist/cjs/{integration → nestjs-config-aws/src/integration}/interfaces/index.js +1 -1
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/integration-options.interface.js +3 -0
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/integration-state.interface.js +3 -0
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/nestjs-config-compatibility.interface.js +73 -0
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/nestjs-config-integration.interface.js +3 -0
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/typed-configuration.interface.js +4 -0
- package/dist/cjs/nestjs-config-aws/src/integration/interfaces/utility-types.interface.js +52 -0
- package/dist/cjs/nestjs-config-aws/src/integration/nestjs-config-integration.module.js +124 -0
- package/dist/cjs/nestjs-config-aws/src/integration/providers/aws-configuration-loader.service.js +592 -0
- package/dist/cjs/nestjs-config-aws/src/integration/providers/configuration-factory.provider.js +385 -0
- package/dist/cjs/{integration → nestjs-config-aws/src/integration}/providers/index.js +1 -1
- package/dist/cjs/nestjs-config-aws/src/integration/services/async-config-helper.service.js +366 -0
- package/dist/cjs/nestjs-config-aws/src/integration/services/error-handler.service.js +267 -0
- package/dist/cjs/nestjs-config-aws/src/integration/services/factory-registration.service.js +517 -0
- package/dist/cjs/{integration → nestjs-config-aws/src/integration}/services/index.js +1 -1
- package/dist/cjs/nestjs-config-aws/src/integration/services/integration-state.service.js +81 -0
- package/dist/cjs/nestjs-config-aws/src/integration/services/namespace-handler.service.js +465 -0
- package/dist/cjs/nestjs-config-aws/src/integration/services/nestjs-config-integration.service.js +318 -0
- package/dist/cjs/nestjs-config-aws/src/integration/services/precedence-handler.service.js +292 -0
- package/dist/cjs/nestjs-config-aws/src/integration/services/validation-integration.service.js +595 -0
- package/dist/cjs/nestjs-config-aws/src/integration/utils/config-integration.util.js +283 -0
- package/dist/cjs/{integration → nestjs-config-aws/src/integration}/utils/index.js +1 -1
- package/dist/cjs/nestjs-config-aws/src/interfaces/config-service.interface.js +11 -0
- package/dist/cjs/nestjs-config-aws/src/interfaces/default-schema.interface.js +63 -0
- package/dist/cjs/nestjs-config-aws/src/interfaces/index.js +30 -0
- package/dist/cjs/nestjs-config-aws/src/interfaces/module-options.interface.js +3 -0
- package/dist/cjs/nestjs-config-aws/src/services/config.service.js +142 -0
- package/dist/esm/config-aws/src/config-manager.js +362 -0
- package/dist/esm/config-aws/src/errors/index.js +69 -0
- package/dist/esm/config-aws/src/index.js +21 -0
- package/dist/esm/config-aws/src/interfaces/config-loader.interface.js +2 -0
- package/dist/esm/config-aws/src/interfaces/config-manager.interface.js +2 -0
- package/dist/esm/config-aws/src/interfaces/env-file-loader.interface.js +2 -0
- package/dist/esm/config-aws/src/interfaces/environment-loader.interface.js +2 -0
- package/dist/esm/config-aws/src/interfaces/s3-loader.interface.js +2 -0
- package/dist/esm/config-aws/src/interfaces/secrets-manager-loader.interface.js +2 -0
- package/dist/esm/config-aws/src/interfaces/ssm-parameter-store-loader.interface.js +2 -0
- package/dist/esm/config-aws/src/loaders/env-file.loader.js +132 -0
- package/dist/esm/config-aws/src/loaders/environment.loader.js +81 -0
- package/dist/esm/config-aws/src/loaders/s3.loader.js +141 -0
- package/dist/esm/config-aws/src/loaders/secrets-manager.loader.js +165 -0
- package/dist/esm/config-aws/src/loaders/ssm-parameter-store.loader.js +195 -0
- package/dist/esm/config-aws/src/utils/env-file-parser.util.js +94 -0
- package/dist/esm/config-aws/src/utils/validation.util.js +112 -0
- package/dist/esm/nestjs-config-aws/src/config.module.js +172 -0
- package/dist/esm/nestjs-config-aws/src/index.js +23 -0
- package/dist/esm/nestjs-config-aws/src/integration/index.js +7 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/configuration-factory.interface.js +2 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/configuration-source.interface.js +2 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/index.js +10 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/integration-options.interface.js +2 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/integration-state.interface.js +2 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/nestjs-config-compatibility.interface.js +64 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/nestjs-config-integration.interface.js +2 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/typed-configuration.interface.js +3 -0
- package/dist/esm/nestjs-config-aws/src/integration/interfaces/utility-types.interface.js +44 -0
- package/dist/esm/nestjs-config-aws/src/integration/nestjs-config-integration.module.js +121 -0
- package/dist/esm/nestjs-config-aws/src/integration/providers/aws-configuration-loader.service.js +589 -0
- package/dist/esm/nestjs-config-aws/src/integration/providers/configuration-factory.provider.js +382 -0
- package/dist/esm/nestjs-config-aws/src/integration/providers/index.js +4 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/async-config-helper.service.js +363 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/error-handler.service.js +264 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/factory-registration.service.js +514 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/index.js +10 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/integration-state.service.js +78 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/namespace-handler.service.js +462 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/nestjs-config-integration.service.js +315 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/precedence-handler.service.js +289 -0
- package/dist/esm/nestjs-config-aws/src/integration/services/validation-integration.service.js +589 -0
- package/dist/esm/nestjs-config-aws/src/integration/utils/config-integration.util.js +240 -0
- package/dist/esm/nestjs-config-aws/src/integration/utils/index.js +3 -0
- package/dist/esm/nestjs-config-aws/src/interfaces/config-service.interface.js +7 -0
- package/dist/esm/nestjs-config-aws/src/interfaces/default-schema.interface.js +59 -0
- package/dist/esm/nestjs-config-aws/src/interfaces/index.js +8 -0
- package/dist/esm/nestjs-config-aws/src/interfaces/module-options.interface.js +2 -0
- package/dist/esm/nestjs-config-aws/src/services/config.service.js +139 -0
- package/dist/types/config-aws/src/config-manager.d.ts +119 -0
- package/dist/types/config-aws/src/config-manager.d.ts.map +1 -0
- package/dist/types/config-aws/src/errors/index.d.ts +43 -0
- package/dist/types/config-aws/src/errors/index.d.ts.map +1 -0
- package/dist/types/config-aws/src/index.d.ts +24 -0
- package/dist/types/config-aws/src/index.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/config-loader.interface.d.ts +33 -0
- package/dist/types/config-aws/src/interfaces/config-loader.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/config-manager.interface.d.ts +86 -0
- package/dist/types/config-aws/src/interfaces/config-manager.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/env-file-loader.interface.d.ts +12 -0
- package/dist/types/config-aws/src/interfaces/env-file-loader.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/environment-loader.interface.d.ts +10 -0
- package/dist/types/config-aws/src/interfaces/environment-loader.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/s3-loader.interface.d.ts +14 -0
- package/dist/types/config-aws/src/interfaces/s3-loader.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/secrets-manager-loader.interface.d.ts +12 -0
- package/dist/types/config-aws/src/interfaces/secrets-manager-loader.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/interfaces/ssm-parameter-store-loader.interface.d.ts +14 -0
- package/dist/types/config-aws/src/interfaces/ssm-parameter-store-loader.interface.d.ts.map +1 -0
- package/dist/types/config-aws/src/loaders/env-file.loader.d.ts +69 -0
- package/dist/types/config-aws/src/loaders/env-file.loader.d.ts.map +1 -0
- package/dist/types/config-aws/src/loaders/environment.loader.d.ts +46 -0
- package/dist/types/config-aws/src/loaders/environment.loader.d.ts.map +1 -0
- package/dist/types/config-aws/src/loaders/s3.loader.d.ts +62 -0
- package/dist/types/config-aws/src/loaders/s3.loader.d.ts.map +1 -0
- package/dist/types/config-aws/src/loaders/secrets-manager.loader.d.ts +68 -0
- package/dist/types/config-aws/src/loaders/secrets-manager.loader.d.ts.map +1 -0
- package/dist/types/config-aws/src/loaders/ssm-parameter-store.loader.d.ts +78 -0
- package/dist/types/config-aws/src/loaders/ssm-parameter-store.loader.d.ts.map +1 -0
- package/dist/types/config-aws/src/utils/env-file-parser.util.d.ts +45 -0
- package/dist/types/config-aws/src/utils/env-file-parser.util.d.ts.map +1 -0
- package/dist/types/{utils → config-aws/src/utils}/validation.util.d.ts +10 -10
- package/dist/types/config-aws/src/utils/validation.util.d.ts.map +1 -0
- package/dist/types/{config.module.d.ts → nestjs-config-aws/src/config.module.d.ts} +1 -0
- package/dist/types/nestjs-config-aws/src/config.module.d.ts.map +1 -0
- package/dist/types/{index.d.ts → nestjs-config-aws/src/index.d.ts} +2 -4
- package/dist/types/nestjs-config-aws/src/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/configuration-factory.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/configuration-source.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/integration-options.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/integration-state.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/nestjs-config-compatibility.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/nestjs-config-integration.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/typed-configuration.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/interfaces/utility-types.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/nestjs-config-integration.module.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/providers/aws-configuration-loader.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/providers/configuration-factory.provider.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/providers/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/async-config-helper.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/error-handler.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/factory-registration.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/integration-state.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/namespace-handler.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/nestjs-config-integration.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/precedence-handler.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/services/validation-integration.service.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/utils/config-integration.util.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/integration/utils/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/interfaces/config-service.interface.d.ts.map +1 -0
- package/dist/types/{interfaces → nestjs-config-aws/src/interfaces}/default-schema.interface.d.ts +28 -28
- package/dist/types/nestjs-config-aws/src/interfaces/default-schema.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/interfaces/index.d.ts +5 -0
- package/dist/types/nestjs-config-aws/src/interfaces/index.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/interfaces/module-options.interface.d.ts.map +1 -0
- package/dist/types/nestjs-config-aws/src/services/config.service.d.ts +88 -0
- package/dist/types/nestjs-config-aws/src/services/config.service.d.ts.map +1 -0
- package/package.json +20 -27
- package/LICENSE +0 -21
- package/dist/cjs/config.module.js +0 -178
- package/dist/cjs/config.module.js.map +0 -1
- package/dist/cjs/index.js +0 -47
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/integration/index.js.map +0 -1
- package/dist/cjs/integration/interfaces/configuration-factory.interface.js +0 -3
- package/dist/cjs/integration/interfaces/configuration-factory.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/configuration-source.interface.js +0 -3
- package/dist/cjs/integration/interfaces/configuration-source.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/index.js.map +0 -1
- package/dist/cjs/integration/interfaces/integration-options.interface.js +0 -3
- package/dist/cjs/integration/interfaces/integration-options.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/integration-state.interface.js +0 -3
- package/dist/cjs/integration/interfaces/integration-state.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/nestjs-config-compatibility.interface.js +0 -73
- package/dist/cjs/integration/interfaces/nestjs-config-compatibility.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/nestjs-config-integration.interface.js +0 -3
- package/dist/cjs/integration/interfaces/nestjs-config-integration.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/typed-configuration.interface.js +0 -4
- package/dist/cjs/integration/interfaces/typed-configuration.interface.js.map +0 -1
- package/dist/cjs/integration/interfaces/utility-types.interface.js +0 -52
- package/dist/cjs/integration/interfaces/utility-types.interface.js.map +0 -1
- package/dist/cjs/integration/nestjs-config-integration.module.js +0 -124
- package/dist/cjs/integration/nestjs-config-integration.module.js.map +0 -1
- package/dist/cjs/integration/providers/aws-configuration-loader.service.js +0 -591
- package/dist/cjs/integration/providers/aws-configuration-loader.service.js.map +0 -1
- package/dist/cjs/integration/providers/configuration-factory.provider.js +0 -383
- package/dist/cjs/integration/providers/configuration-factory.provider.js.map +0 -1
- package/dist/cjs/integration/providers/index.js.map +0 -1
- package/dist/cjs/integration/services/async-config-helper.service.js +0 -356
- package/dist/cjs/integration/services/async-config-helper.service.js.map +0 -1
- package/dist/cjs/integration/services/error-handler.service.js +0 -265
- package/dist/cjs/integration/services/error-handler.service.js.map +0 -1
- package/dist/cjs/integration/services/factory-registration.service.js +0 -512
- package/dist/cjs/integration/services/factory-registration.service.js.map +0 -1
- package/dist/cjs/integration/services/index.js.map +0 -1
- package/dist/cjs/integration/services/integration-state.service.js +0 -83
- package/dist/cjs/integration/services/integration-state.service.js.map +0 -1
- package/dist/cjs/integration/services/namespace-handler.service.js +0 -467
- package/dist/cjs/integration/services/namespace-handler.service.js.map +0 -1
- package/dist/cjs/integration/services/nestjs-config-integration.service.js +0 -316
- package/dist/cjs/integration/services/nestjs-config-integration.service.js.map +0 -1
- package/dist/cjs/integration/services/precedence-handler.service.js +0 -294
- package/dist/cjs/integration/services/precedence-handler.service.js.map +0 -1
- package/dist/cjs/integration/services/validation-integration.service.js +0 -591
- package/dist/cjs/integration/services/validation-integration.service.js.map +0 -1
- package/dist/cjs/integration/utils/config-integration.util.js +0 -283
- package/dist/cjs/integration/utils/config-integration.util.js.map +0 -1
- package/dist/cjs/integration/utils/index.js.map +0 -1
- package/dist/cjs/interfaces/config-loader.interface.js +0 -3
- package/dist/cjs/interfaces/config-loader.interface.js.map +0 -1
- package/dist/cjs/interfaces/config-service.interface.js +0 -11
- package/dist/cjs/interfaces/config-service.interface.js.map +0 -1
- package/dist/cjs/interfaces/default-schema.interface.js +0 -63
- package/dist/cjs/interfaces/default-schema.interface.js.map +0 -1
- package/dist/cjs/interfaces/errors.interface.js +0 -77
- package/dist/cjs/interfaces/errors.interface.js.map +0 -1
- package/dist/cjs/interfaces/index.js +0 -25
- package/dist/cjs/interfaces/index.js.map +0 -1
- package/dist/cjs/interfaces/module-options.interface.js +0 -3
- package/dist/cjs/interfaces/module-options.interface.js.map +0 -1
- package/dist/cjs/loaders/environment.loader.js +0 -59
- package/dist/cjs/loaders/environment.loader.js.map +0 -1
- package/dist/cjs/loaders/secrets-manager.loader.js +0 -122
- package/dist/cjs/loaders/secrets-manager.loader.js.map +0 -1
- package/dist/cjs/loaders/ssm-parameter-store.loader.js +0 -146
- package/dist/cjs/loaders/ssm-parameter-store.loader.js.map +0 -1
- package/dist/cjs/services/config.service.js +0 -297
- package/dist/cjs/services/config.service.js.map +0 -1
- package/dist/cjs/utils/validation.util.js +0 -114
- package/dist/cjs/utils/validation.util.js.map +0 -1
- package/dist/esm/config.module.js +0 -175
- package/dist/esm/config.module.js.map +0 -1
- package/dist/esm/index.js +0 -18
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/integration/index.js +0 -7
- package/dist/esm/integration/index.js.map +0 -1
- package/dist/esm/integration/interfaces/configuration-factory.interface.js +0 -2
- package/dist/esm/integration/interfaces/configuration-factory.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/configuration-source.interface.js +0 -2
- package/dist/esm/integration/interfaces/configuration-source.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/index.js +0 -10
- package/dist/esm/integration/interfaces/index.js.map +0 -1
- package/dist/esm/integration/interfaces/integration-options.interface.js +0 -2
- package/dist/esm/integration/interfaces/integration-options.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/integration-state.interface.js +0 -2
- package/dist/esm/integration/interfaces/integration-state.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/nestjs-config-compatibility.interface.js +0 -64
- package/dist/esm/integration/interfaces/nestjs-config-compatibility.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/nestjs-config-integration.interface.js +0 -2
- package/dist/esm/integration/interfaces/nestjs-config-integration.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/typed-configuration.interface.js +0 -3
- package/dist/esm/integration/interfaces/typed-configuration.interface.js.map +0 -1
- package/dist/esm/integration/interfaces/utility-types.interface.js +0 -44
- package/dist/esm/integration/interfaces/utility-types.interface.js.map +0 -1
- package/dist/esm/integration/nestjs-config-integration.module.js +0 -121
- package/dist/esm/integration/nestjs-config-integration.module.js.map +0 -1
- package/dist/esm/integration/providers/aws-configuration-loader.service.js +0 -588
- package/dist/esm/integration/providers/aws-configuration-loader.service.js.map +0 -1
- package/dist/esm/integration/providers/configuration-factory.provider.js +0 -380
- package/dist/esm/integration/providers/configuration-factory.provider.js.map +0 -1
- package/dist/esm/integration/providers/index.js +0 -4
- package/dist/esm/integration/providers/index.js.map +0 -1
- package/dist/esm/integration/services/async-config-helper.service.js +0 -353
- package/dist/esm/integration/services/async-config-helper.service.js.map +0 -1
- package/dist/esm/integration/services/error-handler.service.js +0 -262
- package/dist/esm/integration/services/error-handler.service.js.map +0 -1
- package/dist/esm/integration/services/factory-registration.service.js +0 -509
- package/dist/esm/integration/services/factory-registration.service.js.map +0 -1
- package/dist/esm/integration/services/index.js +0 -10
- package/dist/esm/integration/services/index.js.map +0 -1
- package/dist/esm/integration/services/integration-state.service.js +0 -80
- package/dist/esm/integration/services/integration-state.service.js.map +0 -1
- package/dist/esm/integration/services/namespace-handler.service.js +0 -464
- package/dist/esm/integration/services/namespace-handler.service.js.map +0 -1
- package/dist/esm/integration/services/nestjs-config-integration.service.js +0 -313
- package/dist/esm/integration/services/nestjs-config-integration.service.js.map +0 -1
- package/dist/esm/integration/services/precedence-handler.service.js +0 -291
- package/dist/esm/integration/services/precedence-handler.service.js.map +0 -1
- package/dist/esm/integration/services/validation-integration.service.js +0 -585
- package/dist/esm/integration/services/validation-integration.service.js.map +0 -1
- package/dist/esm/integration/utils/config-integration.util.js +0 -240
- package/dist/esm/integration/utils/config-integration.util.js.map +0 -1
- package/dist/esm/integration/utils/index.js +0 -3
- package/dist/esm/integration/utils/index.js.map +0 -1
- package/dist/esm/interfaces/config-loader.interface.js +0 -2
- package/dist/esm/interfaces/config-loader.interface.js.map +0 -1
- package/dist/esm/interfaces/config-service.interface.js +0 -7
- package/dist/esm/interfaces/config-service.interface.js.map +0 -1
- package/dist/esm/interfaces/default-schema.interface.js +0 -59
- package/dist/esm/interfaces/default-schema.interface.js.map +0 -1
- package/dist/esm/interfaces/errors.interface.js +0 -69
- package/dist/esm/interfaces/errors.interface.js.map +0 -1
- package/dist/esm/interfaces/index.js +0 -9
- package/dist/esm/interfaces/index.js.map +0 -1
- package/dist/esm/interfaces/module-options.interface.js +0 -2
- package/dist/esm/interfaces/module-options.interface.js.map +0 -1
- package/dist/esm/loaders/environment.loader.js +0 -55
- package/dist/esm/loaders/environment.loader.js.map +0 -1
- package/dist/esm/loaders/secrets-manager.loader.js +0 -118
- package/dist/esm/loaders/secrets-manager.loader.js.map +0 -1
- package/dist/esm/loaders/ssm-parameter-store.loader.js +0 -142
- package/dist/esm/loaders/ssm-parameter-store.loader.js.map +0 -1
- package/dist/esm/services/config.service.js +0 -261
- package/dist/esm/services/config.service.js.map +0 -1
- package/dist/esm/utils/validation.util.js +0 -110
- package/dist/esm/utils/validation.util.js.map +0 -1
- package/dist/types/config.module.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/integration/index.d.ts.map +0 -1
- package/dist/types/integration/interfaces/configuration-factory.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/configuration-source.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/index.d.ts.map +0 -1
- package/dist/types/integration/interfaces/integration-options.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/integration-state.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/nestjs-config-compatibility.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/nestjs-config-integration.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/typed-configuration.interface.d.ts.map +0 -1
- package/dist/types/integration/interfaces/utility-types.interface.d.ts.map +0 -1
- package/dist/types/integration/nestjs-config-integration.module.d.ts.map +0 -1
- package/dist/types/integration/providers/aws-configuration-loader.service.d.ts.map +0 -1
- package/dist/types/integration/providers/configuration-factory.provider.d.ts.map +0 -1
- package/dist/types/integration/providers/index.d.ts.map +0 -1
- package/dist/types/integration/services/async-config-helper.service.d.ts.map +0 -1
- package/dist/types/integration/services/error-handler.service.d.ts.map +0 -1
- package/dist/types/integration/services/factory-registration.service.d.ts.map +0 -1
- package/dist/types/integration/services/index.d.ts.map +0 -1
- package/dist/types/integration/services/integration-state.service.d.ts.map +0 -1
- package/dist/types/integration/services/namespace-handler.service.d.ts.map +0 -1
- package/dist/types/integration/services/nestjs-config-integration.service.d.ts.map +0 -1
- package/dist/types/integration/services/precedence-handler.service.d.ts.map +0 -1
- package/dist/types/integration/services/validation-integration.service.d.ts.map +0 -1
- package/dist/types/integration/utils/config-integration.util.d.ts.map +0 -1
- package/dist/types/integration/utils/index.d.ts.map +0 -1
- package/dist/types/interfaces/config-loader.interface.d.ts +0 -22
- package/dist/types/interfaces/config-loader.interface.d.ts.map +0 -1
- package/dist/types/interfaces/config-service.interface.d.ts.map +0 -1
- package/dist/types/interfaces/default-schema.interface.d.ts.map +0 -1
- package/dist/types/interfaces/errors.interface.d.ts +0 -38
- package/dist/types/interfaces/errors.interface.d.ts.map +0 -1
- package/dist/types/interfaces/index.d.ts +0 -6
- package/dist/types/interfaces/index.d.ts.map +0 -1
- package/dist/types/interfaces/module-options.interface.d.ts.map +0 -1
- package/dist/types/loaders/environment.loader.d.ts +0 -26
- package/dist/types/loaders/environment.loader.d.ts.map +0 -1
- package/dist/types/loaders/secrets-manager.loader.d.ts +0 -52
- package/dist/types/loaders/secrets-manager.loader.d.ts.map +0 -1
- package/dist/types/loaders/ssm-parameter-store.loader.d.ts +0 -68
- package/dist/types/loaders/ssm-parameter-store.loader.d.ts.map +0 -1
- package/dist/types/services/config.service.d.ts +0 -94
- package/dist/types/services/config.service.d.ts.map +0 -1
- package/dist/types/utils/validation.util.d.ts.map +0 -1
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/index.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/configuration-factory.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/configuration-source.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/index.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/integration-options.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/integration-state.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/nestjs-config-compatibility.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/nestjs-config-integration.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/typed-configuration.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/interfaces/utility-types.interface.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/nestjs-config-integration.module.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/providers/aws-configuration-loader.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/providers/configuration-factory.provider.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/providers/index.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/async-config-helper.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/error-handler.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/factory-registration.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/index.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/integration-state.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/namespace-handler.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/nestjs-config-integration.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/precedence-handler.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/services/validation-integration.service.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/utils/config-integration.util.d.ts +0 -0
- /package/dist/types/{integration → nestjs-config-aws/src/integration}/utils/index.d.ts +0 -0
- /package/dist/types/{interfaces → nestjs-config-aws/src/interfaces}/config-service.interface.d.ts +0 -0
- /package/dist/types/{interfaces → nestjs-config-aws/src/interfaces}/module-options.interface.d.ts +0 -0
|
@@ -1,585 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
var ValidationIntegrationService_1;
|
|
11
|
-
import { Injectable, Logger } from '@nestjs/common';
|
|
12
|
-
/**
|
|
13
|
-
* Joi validation schema provider.
|
|
14
|
-
*/
|
|
15
|
-
export class JoiValidationProvider {
|
|
16
|
-
constructor() {
|
|
17
|
-
this.name = 'joi';
|
|
18
|
-
try {
|
|
19
|
-
// Try to import Joi dynamically
|
|
20
|
-
this.joi = require('joi');
|
|
21
|
-
}
|
|
22
|
-
catch (error) {
|
|
23
|
-
// Joi is not available
|
|
24
|
-
this.joi = null;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
isAvailable() {
|
|
28
|
-
return this.joi !== null;
|
|
29
|
-
}
|
|
30
|
-
validate(config, schema) {
|
|
31
|
-
if (!this.joi) {
|
|
32
|
-
return { isValid: false, errors: ['Joi is not available'] };
|
|
33
|
-
}
|
|
34
|
-
try {
|
|
35
|
-
const { error } = this.joi.attempt ?
|
|
36
|
-
{ error: null } :
|
|
37
|
-
schema.validate(config);
|
|
38
|
-
if (error) {
|
|
39
|
-
const errors = error.details?.map((detail) => detail.message) || [error.message];
|
|
40
|
-
return { isValid: false, errors };
|
|
41
|
-
}
|
|
42
|
-
return { isValid: true, errors: [] };
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
const validationError = error instanceof Error ? error : new Error(String(error));
|
|
46
|
-
return { isValid: false, errors: [validationError.message] };
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Class-validator validation schema provider.
|
|
52
|
-
*/
|
|
53
|
-
export class ClassValidatorProvider {
|
|
54
|
-
constructor() {
|
|
55
|
-
this.name = 'class-validator';
|
|
56
|
-
try {
|
|
57
|
-
// Try to import class-validator and class-transformer dynamically
|
|
58
|
-
this.classValidator = require('class-validator');
|
|
59
|
-
this.classTransformer = require('class-transformer');
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
// class-validator is not available
|
|
63
|
-
this.classValidator = null;
|
|
64
|
-
this.classTransformer = null;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
isAvailable() {
|
|
68
|
-
return this.classValidator !== null && this.classTransformer !== null;
|
|
69
|
-
}
|
|
70
|
-
validate(config, schemaClass) {
|
|
71
|
-
if (!this.classValidator || !this.classTransformer) {
|
|
72
|
-
return { isValid: false, errors: ['class-validator or class-transformer is not available'] };
|
|
73
|
-
}
|
|
74
|
-
try {
|
|
75
|
-
// Transform plain object to class instance
|
|
76
|
-
const instance = this.classTransformer.plainToClass(schemaClass, config);
|
|
77
|
-
// Validate the instance
|
|
78
|
-
const errors = this.classValidator.validateSync(instance);
|
|
79
|
-
if (errors && errors.length > 0) {
|
|
80
|
-
const errorMessages = errors.map((error) => {
|
|
81
|
-
const constraints = error.constraints || {};
|
|
82
|
-
return Object.values(constraints).join(', ');
|
|
83
|
-
}).filter((msg) => msg.length > 0);
|
|
84
|
-
return { isValid: false, errors: errorMessages };
|
|
85
|
-
}
|
|
86
|
-
return { isValid: true, errors: [] };
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
const validationError = error instanceof Error ? error : new Error(String(error));
|
|
90
|
-
return { isValid: false, errors: [validationError.message] };
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Custom validation function provider.
|
|
96
|
-
*/
|
|
97
|
-
export class CustomValidationProvider {
|
|
98
|
-
constructor() {
|
|
99
|
-
this.name = 'custom';
|
|
100
|
-
}
|
|
101
|
-
isAvailable() {
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
validate(config, validationFn) {
|
|
105
|
-
try {
|
|
106
|
-
const result = validationFn(config);
|
|
107
|
-
if (Array.isArray(result) && result.length > 0) {
|
|
108
|
-
return { isValid: false, errors: result };
|
|
109
|
-
}
|
|
110
|
-
return { isValid: true, errors: [] };
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
const validationError = error instanceof Error ? error : new Error(String(error));
|
|
114
|
-
return { isValid: false, errors: [validationError.message] };
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Service for integrating AWS-sourced configuration with @nestjs/config validation.
|
|
120
|
-
* Supports Joi, class-validator, and custom validation functions.
|
|
121
|
-
*/
|
|
122
|
-
let ValidationIntegrationService = ValidationIntegrationService_1 = class ValidationIntegrationService {
|
|
123
|
-
constructor() {
|
|
124
|
-
this.logger = new Logger(ValidationIntegrationService_1.name);
|
|
125
|
-
this.validationProviders = new Map();
|
|
126
|
-
// Register available validation providers
|
|
127
|
-
this.registerValidationProviders();
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Create a validated configuration factory.
|
|
131
|
-
* This factory will validate AWS-sourced configuration before returning it.
|
|
132
|
-
*
|
|
133
|
-
* @param namespace - Optional namespace for the configuration
|
|
134
|
-
* @param config - Configuration data to validate
|
|
135
|
-
* @param validationSchema - Validation schema (Joi schema, class-validator class, or custom function)
|
|
136
|
-
* @param validationType - Type of validation ('joi', 'class-validator', or 'custom')
|
|
137
|
-
* @param sources - Configuration sources metadata
|
|
138
|
-
* @returns Validated configuration factory
|
|
139
|
-
*/
|
|
140
|
-
createValidatedFactory(namespace, config, validationSchema, validationType, sources) {
|
|
141
|
-
this.logger.debug(`Creating validated factory for namespace: ${namespace || 'default'} with ${validationType} validation`);
|
|
142
|
-
const factory = () => {
|
|
143
|
-
this.logger.debug(`Validated factory called for namespace: ${namespace || 'default'}`);
|
|
144
|
-
// Validate configuration
|
|
145
|
-
const validationResult = this.validateConfiguration(config, validationSchema, validationType, sources);
|
|
146
|
-
if (!validationResult.isValid) {
|
|
147
|
-
const errorMessage = `Configuration validation failed for ${namespace || 'default'}: ${validationResult.errors.join(', ')}`;
|
|
148
|
-
this.logger.error(errorMessage);
|
|
149
|
-
// Create detailed error with source information
|
|
150
|
-
const detailedError = this.createValidationError(namespace || 'default', validationResult.errors, sources);
|
|
151
|
-
throw detailedError;
|
|
152
|
-
}
|
|
153
|
-
this.logger.debug(`Configuration validation passed for namespace: ${namespace || 'default'}`);
|
|
154
|
-
return config;
|
|
155
|
-
};
|
|
156
|
-
// Add validation metadata
|
|
157
|
-
factory.__isValidatedFactory = true;
|
|
158
|
-
factory.__validationType = validationType;
|
|
159
|
-
factory.__namespace = namespace;
|
|
160
|
-
factory.__sources = sources?.map(s => s.name) || [];
|
|
161
|
-
return factory;
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Validate configuration using the specified validation type and schema.
|
|
165
|
-
*
|
|
166
|
-
* @param config - Configuration to validate
|
|
167
|
-
* @param schema - Validation schema
|
|
168
|
-
* @param validationType - Type of validation
|
|
169
|
-
* @param sources - Configuration sources for error reporting
|
|
170
|
-
* @returns Validation result
|
|
171
|
-
*/
|
|
172
|
-
validateConfiguration(config, schema, validationType, sources) {
|
|
173
|
-
const provider = this.validationProviders.get(validationType);
|
|
174
|
-
if (!provider) {
|
|
175
|
-
return {
|
|
176
|
-
isValid: false,
|
|
177
|
-
errors: [`Validation provider '${validationType}' is not available`],
|
|
178
|
-
warnings: []
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
if (!provider.isAvailable()) {
|
|
182
|
-
return {
|
|
183
|
-
isValid: false,
|
|
184
|
-
errors: [`Validation provider '${validationType}' is not properly configured`],
|
|
185
|
-
warnings: []
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
try {
|
|
189
|
-
const result = provider.validate(config, schema);
|
|
190
|
-
// Add source information to errors
|
|
191
|
-
const enhancedErrors = result.errors.map(error => this.enhanceErrorWithSourceInfo(error, sources));
|
|
192
|
-
return {
|
|
193
|
-
isValid: result.isValid,
|
|
194
|
-
errors: enhancedErrors,
|
|
195
|
-
warnings: []
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
const validationError = error instanceof Error ? error : new Error(String(error));
|
|
200
|
-
return {
|
|
201
|
-
isValid: false,
|
|
202
|
-
errors: [validationError.message],
|
|
203
|
-
warnings: []
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Create a factory that validates configuration and provides fallback values.
|
|
209
|
-
*
|
|
210
|
-
* @param namespace - Optional namespace
|
|
211
|
-
* @param config - Configuration data
|
|
212
|
-
* @param validationSchema - Validation schema
|
|
213
|
-
* @param validationType - Type of validation
|
|
214
|
-
* @param fallbackConfig - Fallback configuration to use if validation fails
|
|
215
|
-
* @param sources - Configuration sources
|
|
216
|
-
* @returns Factory with validation and fallback
|
|
217
|
-
*/
|
|
218
|
-
createValidatedFactoryWithFallback(namespace, config, validationSchema, validationType, fallbackConfig, sources) {
|
|
219
|
-
this.logger.debug(`Creating validated factory with fallback for namespace: ${namespace || 'default'}`);
|
|
220
|
-
const factory = () => {
|
|
221
|
-
this.logger.debug(`Validated factory with fallback called for namespace: ${namespace || 'default'}`);
|
|
222
|
-
// Validate configuration
|
|
223
|
-
const validationResult = this.validateConfiguration(config, validationSchema, validationType, sources);
|
|
224
|
-
if (!validationResult.isValid) {
|
|
225
|
-
this.logger.warn(`Configuration validation failed for ${namespace || 'default'}, using fallback: ${validationResult.errors.join(', ')}`);
|
|
226
|
-
// Validate fallback configuration
|
|
227
|
-
const fallbackValidation = this.validateConfiguration(fallbackConfig, validationSchema, validationType);
|
|
228
|
-
if (fallbackValidation.isValid) {
|
|
229
|
-
return fallbackConfig;
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
// Both primary and fallback failed
|
|
233
|
-
const errorMessage = `Both primary and fallback configuration validation failed for ${namespace || 'default'}`;
|
|
234
|
-
this.logger.error(errorMessage);
|
|
235
|
-
const detailedError = this.createValidationError(namespace || 'default', [...validationResult.errors, ...fallbackValidation.errors], sources);
|
|
236
|
-
throw detailedError;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
this.logger.debug(`Configuration validation passed for namespace: ${namespace || 'default'}`);
|
|
240
|
-
return config;
|
|
241
|
-
};
|
|
242
|
-
// Add metadata
|
|
243
|
-
factory.__isValidatedFactory = true;
|
|
244
|
-
factory.__hasFallback = true;
|
|
245
|
-
factory.__validationType = validationType;
|
|
246
|
-
factory.__namespace = namespace;
|
|
247
|
-
factory.__sources = sources?.map(s => s.name) || [];
|
|
248
|
-
return factory;
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Validate multiple namespace configurations.
|
|
252
|
-
*
|
|
253
|
-
* @param namespacedConfig - Configuration organized by namespace
|
|
254
|
-
* @param validationSchemas - Validation schemas for each namespace
|
|
255
|
-
* @param validationType - Type of validation
|
|
256
|
-
* @param sources - Configuration sources
|
|
257
|
-
* @returns Validation results for each namespace
|
|
258
|
-
*/
|
|
259
|
-
validateNamespacedConfiguration(namespacedConfig, validationSchemas, validationType, sources) {
|
|
260
|
-
const results = {};
|
|
261
|
-
for (const [namespace, config] of Object.entries(namespacedConfig)) {
|
|
262
|
-
const schema = validationSchemas[namespace];
|
|
263
|
-
if (schema) {
|
|
264
|
-
results[namespace] = this.validateConfiguration(config, schema, validationType, sources);
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
results[namespace] = {
|
|
268
|
-
isValid: true,
|
|
269
|
-
errors: [],
|
|
270
|
-
warnings: [`No validation schema provided for namespace: ${namespace}`]
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
return results;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Check which validation providers are available.
|
|
278
|
-
*
|
|
279
|
-
* @returns Object indicating availability of each provider
|
|
280
|
-
*/
|
|
281
|
-
getAvailableValidationProviders() {
|
|
282
|
-
const availability = {};
|
|
283
|
-
for (const [name, provider] of this.validationProviders) {
|
|
284
|
-
availability[name] = provider.isAvailable();
|
|
285
|
-
}
|
|
286
|
-
return availability;
|
|
287
|
-
}
|
|
288
|
-
/**
|
|
289
|
-
* Get validation recommendations based on configuration structure.
|
|
290
|
-
*
|
|
291
|
-
* @param config - Configuration to analyze
|
|
292
|
-
* @returns Validation recommendations
|
|
293
|
-
*/
|
|
294
|
-
getValidationRecommendations(config) {
|
|
295
|
-
const analysis = this.analyzeConfigurationStructure(config);
|
|
296
|
-
let recommendedProvider = 'custom';
|
|
297
|
-
const reasons = [];
|
|
298
|
-
const examples = {};
|
|
299
|
-
// Determine best validation approach
|
|
300
|
-
if (analysis.hasComplexNesting || analysis.hasArrays) {
|
|
301
|
-
if (this.validationProviders.get('joi')?.isAvailable()) {
|
|
302
|
-
recommendedProvider = 'joi';
|
|
303
|
-
reasons.push('Complex nested structure detected - Joi provides excellent nested validation');
|
|
304
|
-
examples['joi'] = this.generateJoiExample(config);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
if (analysis.hasTypedValues && this.validationProviders.get('class-validator')?.isAvailable()) {
|
|
308
|
-
recommendedProvider = 'class-validator';
|
|
309
|
-
reasons.push('Typed values detected - class-validator provides strong type safety');
|
|
310
|
-
examples['class-validator'] = this.generateClassValidatorExample(config);
|
|
311
|
-
}
|
|
312
|
-
// Always provide custom example
|
|
313
|
-
examples['custom'] = this.generateCustomValidationExample(config);
|
|
314
|
-
return {
|
|
315
|
-
recommendedProvider,
|
|
316
|
-
reasons,
|
|
317
|
-
examples
|
|
318
|
-
};
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* Register validation providers.
|
|
322
|
-
*/
|
|
323
|
-
registerValidationProviders() {
|
|
324
|
-
this.validationProviders.set('joi', new JoiValidationProvider());
|
|
325
|
-
this.validationProviders.set('class-validator', new ClassValidatorProvider());
|
|
326
|
-
this.validationProviders.set('custom', new CustomValidationProvider());
|
|
327
|
-
// Log available providers
|
|
328
|
-
const available = Array.from(this.validationProviders.entries())
|
|
329
|
-
.filter(([_, provider]) => provider.isAvailable())
|
|
330
|
-
.map(([name]) => name);
|
|
331
|
-
this.logger.debug(`Available validation providers: ${available.join(', ')}`);
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* Create a detailed validation error with source information.
|
|
335
|
-
*
|
|
336
|
-
* @param namespace - Namespace that failed validation
|
|
337
|
-
* @param errors - Validation errors
|
|
338
|
-
* @param sources - Configuration sources
|
|
339
|
-
* @returns Detailed error
|
|
340
|
-
*/
|
|
341
|
-
createValidationError(namespace, errors, sources) {
|
|
342
|
-
let message = `Configuration validation failed for namespace '${namespace}':\n`;
|
|
343
|
-
message += errors.map(error => ` - ${error}`).join('\n');
|
|
344
|
-
if (sources && sources.length > 0) {
|
|
345
|
-
message += '\n\nConfiguration sources:\n';
|
|
346
|
-
message += sources.map(source => ` - ${source.name} (${source.type}): ${Object.keys(source.data).length} keys`).join('\n');
|
|
347
|
-
}
|
|
348
|
-
const error = new Error(message);
|
|
349
|
-
error.name = 'ConfigurationValidationError';
|
|
350
|
-
error.namespace = namespace;
|
|
351
|
-
error.validationErrors = errors;
|
|
352
|
-
error.sources = sources;
|
|
353
|
-
return error;
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* Enhance error message with source information.
|
|
357
|
-
*
|
|
358
|
-
* @param error - Original error message
|
|
359
|
-
* @param sources - Configuration sources
|
|
360
|
-
* @returns Enhanced error message
|
|
361
|
-
*/
|
|
362
|
-
enhanceErrorWithSourceInfo(error, sources) {
|
|
363
|
-
if (!sources || sources.length === 0) {
|
|
364
|
-
return error;
|
|
365
|
-
}
|
|
366
|
-
const sourceNames = sources.map(s => s.name).join(', ');
|
|
367
|
-
return `${error} (from sources: ${sourceNames})`;
|
|
368
|
-
}
|
|
369
|
-
/**
|
|
370
|
-
* Analyze configuration structure for validation recommendations.
|
|
371
|
-
*
|
|
372
|
-
* @param config - Configuration to analyze
|
|
373
|
-
* @returns Structure analysis
|
|
374
|
-
*/
|
|
375
|
-
analyzeConfigurationStructure(config) {
|
|
376
|
-
let hasComplexNesting = false;
|
|
377
|
-
let hasArrays = false;
|
|
378
|
-
let hasTypedValues = false;
|
|
379
|
-
let maxDepth = 0;
|
|
380
|
-
const analyze = (obj, depth = 0) => {
|
|
381
|
-
maxDepth = Math.max(maxDepth, depth);
|
|
382
|
-
if (depth > 2) {
|
|
383
|
-
hasComplexNesting = true;
|
|
384
|
-
}
|
|
385
|
-
for (const value of Object.values(obj)) {
|
|
386
|
-
if (Array.isArray(value)) {
|
|
387
|
-
hasArrays = true;
|
|
388
|
-
}
|
|
389
|
-
else if (typeof value === 'object' && value !== null) {
|
|
390
|
-
analyze(value, depth + 1);
|
|
391
|
-
}
|
|
392
|
-
else if (typeof value === 'number' || typeof value === 'boolean') {
|
|
393
|
-
hasTypedValues = true;
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
};
|
|
397
|
-
analyze(config);
|
|
398
|
-
return {
|
|
399
|
-
hasComplexNesting,
|
|
400
|
-
hasArrays,
|
|
401
|
-
hasTypedValues,
|
|
402
|
-
depth: maxDepth
|
|
403
|
-
};
|
|
404
|
-
}
|
|
405
|
-
/**
|
|
406
|
-
* Generate Joi validation example.
|
|
407
|
-
*
|
|
408
|
-
* @param config - Configuration to generate example for
|
|
409
|
-
* @returns Joi validation example
|
|
410
|
-
*/
|
|
411
|
-
generateJoiExample(config) {
|
|
412
|
-
const schema = this.generateJoiSchemaFromConfig(config);
|
|
413
|
-
return `const Joi = require('joi');
|
|
414
|
-
|
|
415
|
-
const schema = ${schema};
|
|
416
|
-
|
|
417
|
-
// Usage in factory
|
|
418
|
-
const factory = () => {
|
|
419
|
-
const config = loadAwsConfig();
|
|
420
|
-
const { error, value } = schema.validate(config);
|
|
421
|
-
if (error) throw error;
|
|
422
|
-
return value;
|
|
423
|
-
};`;
|
|
424
|
-
}
|
|
425
|
-
/**
|
|
426
|
-
* Generate class-validator example.
|
|
427
|
-
*
|
|
428
|
-
* @param config - Configuration to generate example for
|
|
429
|
-
* @returns class-validator example
|
|
430
|
-
*/
|
|
431
|
-
generateClassValidatorExample(config) {
|
|
432
|
-
const classDefinition = this.generateClassFromConfig(config);
|
|
433
|
-
return `import { IsString, IsNumber, IsOptional, validateSync } from 'class-validator';
|
|
434
|
-
import { plainToClass } from 'class-transformer';
|
|
435
|
-
|
|
436
|
-
${classDefinition}
|
|
437
|
-
|
|
438
|
-
// Usage in factory
|
|
439
|
-
const factory = () => {
|
|
440
|
-
const config = loadAwsConfig();
|
|
441
|
-
const instance = plainToClass(ConfigClass, config);
|
|
442
|
-
const errors = validateSync(instance);
|
|
443
|
-
if (errors.length > 0) throw new Error('Validation failed');
|
|
444
|
-
return config;
|
|
445
|
-
};`;
|
|
446
|
-
}
|
|
447
|
-
/**
|
|
448
|
-
* Generate custom validation example.
|
|
449
|
-
*
|
|
450
|
-
* @param config - Configuration to generate example for
|
|
451
|
-
* @returns Custom validation example
|
|
452
|
-
*/
|
|
453
|
-
generateCustomValidationExample(config) {
|
|
454
|
-
const validationChecks = this.generateValidationChecks(config);
|
|
455
|
-
return `const validateConfig = (config) => {
|
|
456
|
-
const errors = [];
|
|
457
|
-
|
|
458
|
-
${validationChecks}
|
|
459
|
-
|
|
460
|
-
return errors;
|
|
461
|
-
};
|
|
462
|
-
|
|
463
|
-
// Usage in factory
|
|
464
|
-
const factory = () => {
|
|
465
|
-
const config = loadAwsConfig();
|
|
466
|
-
const errors = validateConfig(config);
|
|
467
|
-
if (errors.length > 0) throw new Error(\`Validation failed: \${errors.join(', ')}\`);
|
|
468
|
-
return config;
|
|
469
|
-
};`;
|
|
470
|
-
}
|
|
471
|
-
/**
|
|
472
|
-
* Generate Joi schema from configuration structure.
|
|
473
|
-
*
|
|
474
|
-
* @param config - Configuration object
|
|
475
|
-
* @returns Joi schema string
|
|
476
|
-
*/
|
|
477
|
-
generateJoiSchemaFromConfig(config) {
|
|
478
|
-
const generateSchema = (obj) => {
|
|
479
|
-
if (typeof obj === 'string')
|
|
480
|
-
return 'Joi.string()';
|
|
481
|
-
if (typeof obj === 'number')
|
|
482
|
-
return 'Joi.number()';
|
|
483
|
-
if (typeof obj === 'boolean')
|
|
484
|
-
return 'Joi.boolean()';
|
|
485
|
-
if (Array.isArray(obj))
|
|
486
|
-
return 'Joi.array()';
|
|
487
|
-
if (typeof obj === 'object' && obj !== null) {
|
|
488
|
-
const properties = Object.entries(obj)
|
|
489
|
-
.map(([key, value]) => ` ${key}: ${generateSchema(value)}`)
|
|
490
|
-
.join(',\n');
|
|
491
|
-
return `Joi.object({\n${properties}\n})`;
|
|
492
|
-
}
|
|
493
|
-
return 'Joi.any()';
|
|
494
|
-
};
|
|
495
|
-
return generateSchema(config);
|
|
496
|
-
}
|
|
497
|
-
/**
|
|
498
|
-
* Generate class definition from configuration structure.
|
|
499
|
-
*
|
|
500
|
-
* @param config - Configuration object
|
|
501
|
-
* @returns Class definition string
|
|
502
|
-
*/
|
|
503
|
-
generateClassFromConfig(config) {
|
|
504
|
-
const properties = Object.entries(config)
|
|
505
|
-
.map(([key, value]) => {
|
|
506
|
-
const decorator = this.getClassValidatorDecorator(value);
|
|
507
|
-
return ` ${decorator}\n ${key}: ${this.getTypeScriptType(value)};`;
|
|
508
|
-
})
|
|
509
|
-
.join('\n\n');
|
|
510
|
-
return `class ConfigClass {\n${properties}\n}`;
|
|
511
|
-
}
|
|
512
|
-
/**
|
|
513
|
-
* Generate validation checks for custom validation.
|
|
514
|
-
*
|
|
515
|
-
* @param config - Configuration object
|
|
516
|
-
* @returns Validation checks string
|
|
517
|
-
*/
|
|
518
|
-
generateValidationChecks(config) {
|
|
519
|
-
return Object.entries(config)
|
|
520
|
-
.map(([key, value]) => {
|
|
521
|
-
const check = this.getValidationCheck(key, value);
|
|
522
|
-
return ` ${check}`;
|
|
523
|
-
})
|
|
524
|
-
.join('\n');
|
|
525
|
-
}
|
|
526
|
-
/**
|
|
527
|
-
* Get class-validator decorator for a value.
|
|
528
|
-
*
|
|
529
|
-
* @param value - Value to get decorator for
|
|
530
|
-
* @returns Decorator string
|
|
531
|
-
*/
|
|
532
|
-
getClassValidatorDecorator(value) {
|
|
533
|
-
if (typeof value === 'string')
|
|
534
|
-
return '@IsString()';
|
|
535
|
-
if (typeof value === 'number')
|
|
536
|
-
return '@IsNumber()';
|
|
537
|
-
if (typeof value === 'boolean')
|
|
538
|
-
return '@IsBoolean()';
|
|
539
|
-
return '@IsOptional()';
|
|
540
|
-
}
|
|
541
|
-
/**
|
|
542
|
-
* Get TypeScript type for a value.
|
|
543
|
-
*
|
|
544
|
-
* @param value - Value to get type for
|
|
545
|
-
* @returns TypeScript type string
|
|
546
|
-
*/
|
|
547
|
-
getTypeScriptType(value) {
|
|
548
|
-
if (typeof value === 'string')
|
|
549
|
-
return 'string';
|
|
550
|
-
if (typeof value === 'number')
|
|
551
|
-
return 'number';
|
|
552
|
-
if (typeof value === 'boolean')
|
|
553
|
-
return 'boolean';
|
|
554
|
-
if (Array.isArray(value))
|
|
555
|
-
return 'any[]';
|
|
556
|
-
if (typeof value === 'object')
|
|
557
|
-
return 'object';
|
|
558
|
-
return 'any';
|
|
559
|
-
}
|
|
560
|
-
/**
|
|
561
|
-
* Get validation check for custom validation.
|
|
562
|
-
*
|
|
563
|
-
* @param key - Configuration key
|
|
564
|
-
* @param value - Configuration value
|
|
565
|
-
* @returns Validation check string
|
|
566
|
-
*/
|
|
567
|
-
getValidationCheck(key, value) {
|
|
568
|
-
if (typeof value === 'string') {
|
|
569
|
-
return `if (!config.${key} || typeof config.${key} !== 'string') errors.push('${key} must be a string');`;
|
|
570
|
-
}
|
|
571
|
-
if (typeof value === 'number') {
|
|
572
|
-
return `if (config.${key} === undefined || typeof config.${key} !== 'number') errors.push('${key} must be a number');`;
|
|
573
|
-
}
|
|
574
|
-
if (typeof value === 'boolean') {
|
|
575
|
-
return `if (config.${key} === undefined || typeof config.${key} !== 'boolean') errors.push('${key} must be a boolean');`;
|
|
576
|
-
}
|
|
577
|
-
return `if (config.${key} === undefined) errors.push('${key} is required');`;
|
|
578
|
-
}
|
|
579
|
-
};
|
|
580
|
-
ValidationIntegrationService = ValidationIntegrationService_1 = __decorate([
|
|
581
|
-
Injectable(),
|
|
582
|
-
__metadata("design:paramtypes", [])
|
|
583
|
-
], ValidationIntegrationService);
|
|
584
|
-
export { ValidationIntegrationService };
|
|
585
|
-
//# sourceMappingURL=validation-integration.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation-integration.service.js","sourceRoot":"","sources":["../../../../src/integration/services/validation-integration.service.ts"],"names":[],"mappings":"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"}
|