@itgorillaz/configify 1.3.2 → 3.0.0-alpha.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.
Files changed (107) hide show
  1. package/README.md +33 -15
  2. package/dist/{src/configify.module.d.ts → configify.module.d.ts} +0 -1
  3. package/dist/{src/configify.module.js → configify.module.js} +6 -11
  4. package/dist/configify.module.js.map +1 -0
  5. package/dist/{src/configuration → configuration}/configuration-options.interface.d.ts +2 -4
  6. package/dist/configuration/configuration-options.interface.js.map +1 -0
  7. package/dist/configuration/configuration-parser.interface.js.map +1 -0
  8. package/dist/configuration/configuration-providers.interface.js.map +1 -0
  9. package/dist/configuration/configuration.registry.js.map +1 -0
  10. package/dist/configuration/index.js.map +1 -0
  11. package/dist/configuration/parsers/configuration-parser.factory.js.map +1 -0
  12. package/dist/configuration/parsers/dotenv-configuration.parser.js.map +1 -0
  13. package/dist/configuration/parsers/index.js.map +1 -0
  14. package/dist/configuration/parsers/json-configuration.parser.js.map +1 -0
  15. package/dist/configuration/parsers/yaml-configuration.parser.js.map +1 -0
  16. package/dist/configuration/resolvers/aws/aws-secrets-resolver.factory.d.ts +5 -0
  17. package/dist/configuration/resolvers/aws/aws-secrets-resolver.factory.js +17 -0
  18. package/dist/configuration/resolvers/aws/aws-secrets-resolver.factory.js.map +1 -0
  19. package/dist/{src/configuration → configuration}/resolvers/aws/index.d.ts +1 -0
  20. package/dist/{src/configuration → configuration}/resolvers/aws/index.js +1 -0
  21. package/dist/configuration/resolvers/aws/index.js.map +1 -0
  22. package/dist/configuration/resolvers/aws/parameter-store-configuration.resolver.js.map +1 -0
  23. package/dist/configuration/resolvers/aws/secrets-manager-configuration.resolver.js.map +1 -0
  24. package/dist/configuration/resolvers/configuration-resolver.interface.js.map +1 -0
  25. package/dist/{src/configuration → configuration}/resolvers/index.d.ts +0 -1
  26. package/dist/{src/configuration → configuration}/resolvers/index.js +0 -1
  27. package/dist/configuration/resolvers/index.js.map +1 -0
  28. package/dist/configuration/resolvers/resolved-value.interface.js.map +1 -0
  29. package/dist/decorators/configuration.decorator.js.map +1 -0
  30. package/dist/decorators/index.js.map +1 -0
  31. package/dist/decorators/value.decorator.js.map +1 -0
  32. package/dist/index.d.ts +3 -1
  33. package/dist/index.js +3 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/interpolation/variables.js.map +1 -0
  36. package/index.d.ts +1 -1
  37. package/index.ts +1 -1
  38. package/package.json +11 -11
  39. package/src/configify.module.ts +7 -27
  40. package/src/configuration/configuration-options.interface.ts +3 -11
  41. package/src/configuration/configuration-parser.interface.ts +1 -1
  42. package/src/configuration/resolvers/aws/aws-secrets-resolver.factory.ts +32 -0
  43. package/src/configuration/resolvers/aws/index.ts +1 -0
  44. package/src/configuration/resolvers/index.ts +0 -1
  45. package/src/index.ts +1 -0
  46. package/tsconfig.build.json +8 -1
  47. package/tsconfig.build.tsbuildinfo +1 -0
  48. package/dist/src/configify.module.js.map +0 -1
  49. package/dist/src/configuration/configuration-options.interface.js.map +0 -1
  50. package/dist/src/configuration/configuration-parser.interface.js.map +0 -1
  51. package/dist/src/configuration/configuration-providers.interface.js.map +0 -1
  52. package/dist/src/configuration/configuration.registry.js.map +0 -1
  53. package/dist/src/configuration/index.js.map +0 -1
  54. package/dist/src/configuration/parsers/configuration-parser.factory.js.map +0 -1
  55. package/dist/src/configuration/parsers/dotenv-configuration.parser.js.map +0 -1
  56. package/dist/src/configuration/parsers/index.js.map +0 -1
  57. package/dist/src/configuration/parsers/json-configuration.parser.js.map +0 -1
  58. package/dist/src/configuration/parsers/yaml-configuration.parser.js.map +0 -1
  59. package/dist/src/configuration/resolvers/aws/index.js.map +0 -1
  60. package/dist/src/configuration/resolvers/aws/parameter-store-configuration.resolver.js.map +0 -1
  61. package/dist/src/configuration/resolvers/aws/secrets-manager-configuration.resolver.js.map +0 -1
  62. package/dist/src/configuration/resolvers/configuration-resolver.interface.js.map +0 -1
  63. package/dist/src/configuration/resolvers/index.js.map +0 -1
  64. package/dist/src/configuration/resolvers/resolved-value.interface.js.map +0 -1
  65. package/dist/src/decorators/configuration.decorator.js.map +0 -1
  66. package/dist/src/decorators/index.js.map +0 -1
  67. package/dist/src/decorators/value.decorator.js.map +0 -1
  68. package/dist/src/index.d.ts +0 -2
  69. package/dist/src/index.js +0 -19
  70. package/dist/src/index.js.map +0 -1
  71. package/dist/src/interpolation/variables.js.map +0 -1
  72. package/dist/tsconfig.build.tsbuildinfo +0 -1
  73. /package/dist/{src/configuration → configuration}/configuration-options.interface.js +0 -0
  74. /package/dist/{src/configuration → configuration}/configuration-parser.interface.d.ts +0 -0
  75. /package/dist/{src/configuration → configuration}/configuration-parser.interface.js +0 -0
  76. /package/dist/{src/configuration → configuration}/configuration-providers.interface.d.ts +0 -0
  77. /package/dist/{src/configuration → configuration}/configuration-providers.interface.js +0 -0
  78. /package/dist/{src/configuration → configuration}/configuration.registry.d.ts +0 -0
  79. /package/dist/{src/configuration → configuration}/configuration.registry.js +0 -0
  80. /package/dist/{src/configuration → configuration}/index.d.ts +0 -0
  81. /package/dist/{src/configuration → configuration}/index.js +0 -0
  82. /package/dist/{src/configuration → configuration}/parsers/configuration-parser.factory.d.ts +0 -0
  83. /package/dist/{src/configuration → configuration}/parsers/configuration-parser.factory.js +0 -0
  84. /package/dist/{src/configuration → configuration}/parsers/dotenv-configuration.parser.d.ts +0 -0
  85. /package/dist/{src/configuration → configuration}/parsers/dotenv-configuration.parser.js +0 -0
  86. /package/dist/{src/configuration → configuration}/parsers/index.d.ts +0 -0
  87. /package/dist/{src/configuration → configuration}/parsers/index.js +0 -0
  88. /package/dist/{src/configuration → configuration}/parsers/json-configuration.parser.d.ts +0 -0
  89. /package/dist/{src/configuration → configuration}/parsers/json-configuration.parser.js +0 -0
  90. /package/dist/{src/configuration → configuration}/parsers/yaml-configuration.parser.d.ts +0 -0
  91. /package/dist/{src/configuration → configuration}/parsers/yaml-configuration.parser.js +0 -0
  92. /package/dist/{src/configuration → configuration}/resolvers/aws/parameter-store-configuration.resolver.d.ts +0 -0
  93. /package/dist/{src/configuration → configuration}/resolvers/aws/parameter-store-configuration.resolver.js +0 -0
  94. /package/dist/{src/configuration → configuration}/resolvers/aws/secrets-manager-configuration.resolver.d.ts +0 -0
  95. /package/dist/{src/configuration → configuration}/resolvers/aws/secrets-manager-configuration.resolver.js +0 -0
  96. /package/dist/{src/configuration → configuration}/resolvers/configuration-resolver.interface.d.ts +0 -0
  97. /package/dist/{src/configuration → configuration}/resolvers/configuration-resolver.interface.js +0 -0
  98. /package/dist/{src/configuration → configuration}/resolvers/resolved-value.interface.d.ts +0 -0
  99. /package/dist/{src/configuration → configuration}/resolvers/resolved-value.interface.js +0 -0
  100. /package/dist/{src/decorators → decorators}/configuration.decorator.d.ts +0 -0
  101. /package/dist/{src/decorators → decorators}/configuration.decorator.js +0 -0
  102. /package/dist/{src/decorators → decorators}/index.d.ts +0 -0
  103. /package/dist/{src/decorators → decorators}/index.js +0 -0
  104. /package/dist/{src/decorators → decorators}/value.decorator.d.ts +0 -0
  105. /package/dist/{src/decorators → decorators}/value.decorator.js +0 -0
  106. /package/dist/{src/interpolation → interpolation}/variables.d.ts +0 -0
  107. /package/dist/{src/interpolation → interpolation}/variables.js +0 -0
package/README.md CHANGED
@@ -4,7 +4,11 @@
4
4
 
5
5
  <p align="center"><b>@itgorillaz/configify</b></p>
6
6
  <p align="center">NestJS config on steroids</p>
7
-
7
+
8
+ <p align="center">
9
+ <a href="https://buymeacoffee.com/tommelo" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174"></a>
10
+ </p>
11
+
8
12
  ## Description
9
13
 
10
14
  **configify** is a NestJS configuration module that makes it easier to deal with configuration files and secrets.
@@ -30,15 +34,16 @@ export class AppModule {}
30
34
 
31
35
  **Important Note**: When working with strict mode enabled `"strict": true`(tsconfig.json) it's necessary to set the option `strictPropertyInitialization` to `false` since the module will initialize the configuration class properties during runtime after resolving the values of the environment variables.
32
36
 
33
- By default, when bootstraping, the module will lookup for a `.env` or an `application.yml` file at the root folder of the project:
37
+ By default, when bootstraping, the module will lookup for a `.env`, an `application.yml` and an `application.json` file at the root folder of the project:
34
38
 
35
39
  ```
36
40
  my-web-app
37
41
  | .env
38
42
  | application.yml
43
+ | application.json
39
44
  ```
40
45
 
41
- You can also provide the location of the configuration files by overring the configuration options.
46
+ You can also provide the location of the configuration files by overriding the configuration options.
42
47
 
43
48
  ### Mapping Configuration Classes
44
49
 
@@ -167,7 +172,27 @@ export class DatabaseConfiguration {
167
172
 
168
173
  ### Dealing with Secrets
169
174
 
170
- Out of the box, this module can resolve AWS Secrets Manager and Parameter Store secrets.
175
+ Out of the box, this module can resolve AWS Secrets Manager and Parameter Store secrets. For that, just need to choose which strategies you would like to use to resolve AWS secrets:
176
+
177
+ ```js
178
+ // use default aws client instances
179
+ ConfigifyModule.forRootAsync({
180
+ secretsResolverStrategies: [
181
+ AwsSecretsResolverFactory.defaultParameterStoreResolver(),
182
+ AwsSecretsResolverFactory.defaultSecretsManagerResolver(),
183
+ ],
184
+ });
185
+
186
+ // or provide your own aws client instances
187
+ ConfigifyModule.forRootAsync({
188
+ secretsResolverStrategies: [
189
+ new AwsParameterStoreConfigurationResolver(new SSMClient())
190
+ new AwsSecretsManagerConfigurationResolver(
191
+ new SecretsManagerClient(),
192
+ ),
193
+ ],
194
+ });
195
+ ```
171
196
 
172
197
  Every configuration attribute stating with `AWS_SECRETS_MANAGER`, `AWS_PARAMETER_STORE`, `aws-secrets-manager` and `aws-parameter-store` will be considered a special configuration attribute and the module will try to resolve it's remote value.
173
198
 
@@ -238,7 +263,7 @@ export class SuperSecretConfiguration {
238
263
 
239
264
  ### Validating Configuration Classes
240
265
 
241
- Depending on how critical a configuration is, you may want to validate it before bootstraping the application, for that you can use [class-validator](https://github.com/typestack/class-validator) to make sure your configuration is loaded correctly:
266
+ Depending on how critical a configuration is, you may want to validate it before starting the application, for that you can use [class-validator](https://github.com/typestack/class-validator) to make sure your configuration is loaded correctly:
242
267
 
243
268
  ```js
244
269
  @Configuration()
@@ -282,16 +307,9 @@ configFilePath?: string | string[];
282
307
  expandConfig?: boolean;
283
308
 
284
309
  /**
285
- * The AWS Secrets Manager Client
286
- * If no client is provided, the module will create one.
287
- */
288
- secretsManagerClient?: SecretsManagerClient;
289
-
290
- /**
291
- * The AWS Systems Manager Client
292
- * If no client is provided, the module will create one.
293
- */
294
- ssmClient?: SSMClient;
310
+ * The secrets resolvers strategies
311
+ */
312
+ secretsResolverStrategies?: ConfigurationResolver[];
295
313
  ```
296
314
 
297
315
  ## License
@@ -2,7 +2,6 @@ import { DynamicModule } from '@nestjs/common';
2
2
  import { ConfigifyModuleOptions } from './configuration';
3
3
  export declare class ConfigifyModule {
4
4
  private static readonly DEFAULT_CONFIG_FILES;
5
- private static readonly SECRETS_RESOLVER_PIPELINE;
6
5
  static forRootAsync(options?: ConfigifyModuleOptions): Promise<DynamicModule>;
7
6
  private static runSecretsResolverPipeline;
8
7
  private static buildConfigurationProviders;
@@ -8,14 +8,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var ConfigifyModule_1;
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.ConfigifyModule = void 0;
11
- const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
12
- const client_ssm_1 = require("@aws-sdk/client-ssm");
13
11
  const common_1 = require("@nestjs/common");
14
12
  const class_validator_1 = require("class-validator");
15
13
  const fs = require("fs");
16
14
  const path_1 = require("path");
17
15
  const configuration_1 = require("./configuration");
18
- const parameter_store_configuration_resolver_1 = require("./configuration/resolvers/aws/parameter-store-configuration.resolver");
19
16
  const variables_1 = require("./interpolation/variables");
20
17
  let ConfigifyModule = ConfigifyModule_1 = class ConfigifyModule {
21
18
  static async forRootAsync(options = {}) {
@@ -42,11 +39,13 @@ let ConfigifyModule = ConfigifyModule_1 = class ConfigifyModule {
42
39
  };
43
40
  }
44
41
  static async runSecretsResolverPipeline(config, options) {
42
+ var _a;
45
43
  const secrets = {};
46
- for (const buildResolver of this.SECRETS_RESOLVER_PIPELINE) {
47
- const resolver = buildResolver(options);
48
- const result = await resolver.resolve(config);
49
- Object.assign(secrets, result);
44
+ if ((_a = options.secretsResolverStrategies) === null || _a === void 0 ? void 0 : _a.length) {
45
+ for (const resolver of options.secretsResolverStrategies) {
46
+ const result = await resolver.resolve(config);
47
+ Object.assign(secrets, result);
48
+ }
50
49
  }
51
50
  return secrets;
52
51
  }
@@ -109,10 +108,6 @@ ConfigifyModule.DEFAULT_CONFIG_FILES = [
109
108
  (0, path_1.resolve)(process.cwd(), 'application.yml'),
110
109
  (0, path_1.resolve)(process.cwd(), 'application.json'),
111
110
  ];
112
- ConfigifyModule.SECRETS_RESOLVER_PIPELINE = [
113
- (options) => new configuration_1.AwsSecretsManagerConfigurationResolver(options.secretsManagerClient || new client_secrets_manager_1.SecretsManagerClient()),
114
- (options) => new parameter_store_configuration_resolver_1.AwsParameterStoreConfigurationResolver(options.ssmClient || new client_ssm_1.SSMClient()),
115
- ];
116
111
  exports.ConfigifyModule = ConfigifyModule = ConfigifyModule_1 = __decorate([
117
112
  (0, common_1.Module)({})
118
113
  ], ConfigifyModule);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configify.module.js","sourceRoot":"","sources":["../src/configify.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAiE;AACjE,qDAA+C;AAC/C,yBAAyB;AACzB,+BAA+B;AAC/B,mDAMyB;AACzB,yDAAsD;AAmB/C,IAAM,eAAe,uBAArB,MAAM,eAAe;IAyB1B,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,UAAkC,EAAE;QAEpC,MAAM,QAAQ,mCAAQ,OAAO,GAAK,6CAA6B,CAAE,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAEtE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;QAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB;YACxC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAExC,MAAM,SAAS,mCAAQ,OAAO,GAAK,QAAQ,CAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC3E,MAAM,aAAa,mCAAQ,SAAS,GAAK,OAAO,CAAE,CAAC;QAEnD,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,qBAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAE1C,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAElE,OAAO;YACL,OAAO;YACP,SAAS;YACT,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,iBAAe;SACxB,CAAC;IACJ,CAAC;IASO,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAC7C,MAA2B,EAC3B,OAA+B;;QAE/B,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAI,MAAA,OAAO,CAAC,yBAAyB,0CAAE,MAAM,EAAE,CAAC;YAC9C,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC;gBACzD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IASO,MAAM,CAAC,2BAA2B;;QACxC,MAAM,OAAO,GAAc,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,MAAM,QAAQ,GAAG,qCAAqB,CAAC,WAAW,EAAE,CAAC;QACrD,KAAK,MAAM,UAAU,IAAI,QAAQ,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;YAElC,MAAM,UAAU,GACd,qCAAqB,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;YAE9D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,qCAAqB,CAAC,oBAAoB,CACzD,QAAQ,EACR,SAAS,CACV,CAAC;gBAEF,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,CAAC;gBAEtC,MAAM,YAAY,GAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAI,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAO,CAAA,CAAC;gBAEzD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;gBAEzD,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAC9B,CAAC;YAED,MAAM,MAAM,GAAG,IAAA,8BAAY,EAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CACb,qCAAqC,MAAM;qBACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,IAAI,CAAC,SAAS,CACZ,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,EACrD,IAAI,EACJ,CAAC,CACF,CACF;qBACA,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAChC,CAAC;IASO,MAAM,CAAC,iBAAiB,CAC9B,MAAW,EACX,OAAiB,EAAE,EACnB,SAA8B,EAAE;QAEhC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;QAClC,CAAC;IACH,CAAC;IAQO,MAAM,CAAC,uBAAuB,CAAC,KAAe;QACpD,MAAM,EAAE,GAAG,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,0CAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAEvC,OAAO,EAAE,CAAC;IACZ,CAAC;IAUO,MAAM,CAAC,yBAAyB,CAAC,IAAwB;QAC/D,OAAQ,EAAe;aACpB,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC;aAC7C,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,0CAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,CACnE,CAAC;IACN,CAAC;;AA/LU,0CAAe;AAOF,oCAAoB,GAAG;IAC7C,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC;IAC9B,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC;IACzC,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC;CAC3C,AAJ2C,CAI1C;0BAXS,eAAe;IAD3B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,eAAe,CAgM3B"}
@@ -1,11 +1,9 @@
1
- import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
2
- import { SSMClient } from '@aws-sdk/client-ssm';
1
+ import { ConfigurationResolver } from './resolvers';
3
2
  export interface ConfigifyModuleOptions {
4
3
  ignoreConfigFile?: boolean;
5
4
  ignoreEnvVars?: boolean;
6
5
  configFilePath?: string | string[];
7
6
  expandConfig?: boolean;
8
- secretsManagerClient?: SecretsManagerClient;
9
- ssmClient?: SSMClient;
7
+ secretsResolverStrategies?: ConfigurationResolver[];
10
8
  }
11
9
  export declare const DefaultConfigifyModuleOptions: ConfigifyModuleOptions;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-options.interface.js","sourceRoot":"","sources":["../../src/configuration/configuration-options.interface.ts"],"names":[],"mappings":";;;AAsCa,QAAA,6BAA6B,GAA2B;IACnE,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,KAAK;IACpB,YAAY,EAAE,IAAI;CACnB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-parser.interface.js","sourceRoot":"","sources":["../../src/configuration/configuration-parser.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-providers.interface.js","sourceRoot":"","sources":["../../src/configuration/configuration-providers.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.registry.js","sourceRoot":"","sources":["../../src/configuration/configuration.registry.ts"],"names":[],"mappings":";;;AAAA,8CAIuB;AAQvB,MAAa,qBAAqB;IAQhC,MAAM,CAAC,cAAc,CAAC,IAAS;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAQD,MAAM,CAAC,iBAAiB,CAAC,MAAW,EAAE,SAA0B;QAC9D,CACE,MAAM,CAAC,sCAAyB,CAAC;YACjC,CAAC,MAAM,CAAC,sCAAyB,CAAC,GAAG,EAAE,CAAC,CACzC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpB,CAAC;IAOD,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAQD,MAAM,CAAC,2BAA2B,CAAC,MAAW;QAC5C,OAAO,MAAM,CAAC,sCAAyB,CAAC,CAAC;IAC3C,CAAC;IASD,MAAM,CAAC,oBAAoB,CACzB,QAAa,EACb,SAAiB;QAEjB,OAAO,OAAO,CAAC,WAAW,CAAC,2BAAc,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClE,CAAC;;AAxDH,sDAyDC;AAxDyB,8BAAQ,GAAmB,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/configuration/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oEAAkD;AAClD,mEAAiD;AACjD,sEAAoD;AACpD,2DAAyC;AACzC,4CAA0B;AAC1B,8CAA4B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-parser.factory.js","sourceRoot":"","sources":["../../../src/configuration/parsers/configuration-parser.factory.ts"],"names":[],"mappings":";;;AACA,+EAA0E;AAC1E,2EAAsE;AACtE,2EAAsE;AAOtE,MAAa,0BAA0B;IAiBrC,MAAM,CAAC,SAAS,CAAC,IAAY;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAA8B,CAAC;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAQD,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACxD,CAAC;IAQO,MAAM,CAAC,UAAU,CAAC,IAAY;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;;AAzCH,gEA0CC;AAtCyB,kCAAO,GAAwC;IACrE,GAAG,EAAE,IAAI,uDAAyB,EAAE;IACpC,GAAG,EAAE,IAAI,mDAAuB,EAAE;IAClC,IAAI,EAAE,IAAI,mDAAuB,EAAE;IACnC,IAAI,EAAE,IAAI,mDAAuB,EAAE;CACpC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dotenv-configuration.parser.js","sourceRoot":"","sources":["../../../src/configuration/parsers/dotenv-configuration.parser.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,yBAAyB;AAMzB,MAAa,yBAAyB;IAO7B,KAAK,CAAC,IAAY;QACvB,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;CACF;AAVD,8DAUC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/configuration/parsers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,gEAA8C;AAC9C,8DAA4C;AAC5C,8DAA4C"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-configuration.parser.js","sourceRoot":"","sources":["../../../src/configuration/parsers/json-configuration.parser.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AAMzB,MAAa,uBAAuB;IAO3B,KAAK,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,CAAC;CACF;AAVD,0DAUC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-configuration.parser.js","sourceRoot":"","sources":["../../../src/configuration/parsers/yaml-configuration.parser.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,gCAAgC;AAMhC,MAAa,uBAAuB;IAO3B,KAAK,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAwB,CAAC;IAC1E,CAAC;CACF;AAVD,0DAUC"}
@@ -0,0 +1,5 @@
1
+ import { ConfigurationResolver } from '../configuration-resolver.interface';
2
+ export declare class AwsSecretsResolverFactory {
3
+ static defaultParameterStoreResolver(): ConfigurationResolver;
4
+ static defaultSecretsManagerResolver(): ConfigurationResolver;
5
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AwsSecretsResolverFactory = void 0;
4
+ const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
5
+ const client_ssm_1 = require("@aws-sdk/client-ssm");
6
+ const parameter_store_configuration_resolver_1 = require("./parameter-store-configuration.resolver");
7
+ const secrets_manager_configuration_resolver_1 = require("./secrets-manager-configuration.resolver");
8
+ class AwsSecretsResolverFactory {
9
+ static defaultParameterStoreResolver() {
10
+ return new parameter_store_configuration_resolver_1.AwsParameterStoreConfigurationResolver(new client_ssm_1.SSMClient());
11
+ }
12
+ static defaultSecretsManagerResolver() {
13
+ return new secrets_manager_configuration_resolver_1.AwsSecretsManagerConfigurationResolver(new client_secrets_manager_1.SecretsManagerClient());
14
+ }
15
+ }
16
+ exports.AwsSecretsResolverFactory = AwsSecretsResolverFactory;
17
+ //# sourceMappingURL=aws-secrets-resolver.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-secrets-resolver.factory.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/aws/aws-secrets-resolver.factory.ts"],"names":[],"mappings":";;;AAAA,4EAAuE;AACvE,oDAAgD;AAEhD,qGAAkG;AAClG,qGAAkG;AASlG,MAAa,yBAAyB;IAKpC,MAAM,CAAC,6BAA6B;QAClC,OAAO,IAAI,+EAAsC,CAAC,IAAI,sBAAS,EAAE,CAAC,CAAC;IACrE,CAAC;IAMD,MAAM,CAAC,6BAA6B;QAClC,OAAO,IAAI,+EAAsC,CAC/C,IAAI,6CAAoB,EAAE,CAC3B,CAAC;IACJ,CAAC;CACF;AAlBD,8DAkBC"}
@@ -1,2 +1,3 @@
1
+ export * from './aws-secrets-resolver.factory';
1
2
  export * from './parameter-store-configuration.resolver';
2
3
  export * from './secrets-manager-configuration.resolver';
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./aws-secrets-resolver.factory"), exports);
17
18
  __exportStar(require("./parameter-store-configuration.resolver"), exports);
18
19
  __exportStar(require("./secrets-manager-configuration.resolver"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/aws/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,2EAAyD;AACzD,2EAAyD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-store-configuration.resolver.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/aws/parameter-store-configuration.resolver.ts"],"names":[],"mappings":";;;AAAA,oDAAqE;AAOrE,MAAa,sCAAsC;IAWjD,YAA6B,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;QAR1B,iCAA4B,GAAG,qBAAqB,CAAC;QACrD,mCAA8B,GAAG,qBAAqB,CAAC;IAO1B,CAAC;IAU/C,KAAK,CAAC,OAAO,CAAC,MAA2B;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM;iBACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,MAAA,CAAC,CAAC,KAAK,0CAAE,OAAO,EAAE,CAAA,EAAA,CAAC;iBACrD,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACpC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAQO,mBAAmB,CACzB,MAA2B;QAE3B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAC3B,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CACR,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC;YACjD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CACtD,CACF,CAAC;IACJ,CAAC;IASO,KAAK,CAAC,kBAAkB,CAC9B,GAAW,EACX,EAAU;;QAEV,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,IAAI,gCAAmB,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9C,OAAO;gBACL,EAAE;gBACF,GAAG;gBACH,KAAK,EAAE,MAAA,QAAQ,CAAC,SAAS,0CAAE,KAAK;gBAChC,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,EAAE;gBACF,GAAG;gBACH,KAAK,EAAE,CAAU;gBACjB,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;IACH,CAAC;IAQO,gBAAgB,CACtB,MAA2B;QAE3B,MAAM,QAAQ,GAA6B,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AA3GD,wFA2GC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-manager-configuration.resolver.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/aws/secrets-manager-configuration.resolver.ts"],"names":[],"mappings":";;;AAAA,4EAGyC;AAOzC,MAAa,sCAAsC;IAWjD,YAA6B,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;QARhD,iCAA4B,GAAG,qBAAqB,CAAC;QACrD,mCAA8B,GAAG,qBAAqB,CAAC;IAOJ,CAAC;IAUrE,KAAK,CAAC,OAAO,CAAC,MAA2B;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,+BAA+B,MAAM;iBAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,MAAA,CAAC,CAAC,KAAK,0CAAE,OAAO,EAAE,CAAA,EAAA,CAAC;iBACrD,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACpC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAQO,mBAAmB,CACzB,MAA2B;QAE3B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAC3B,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CACR,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC;YACjD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CACtD,CACF,CAAC;IACJ,CAAC;IASO,KAAK,CAAC,kBAAkB,CAC9B,GAAW,EACX,EAAU;QAEV,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,8CAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzD,OAAO;gBACL,EAAE;gBACF,GAAG;gBACH,KAAK,EAAE,QAAQ,CAAC,YAAY;gBAC5B,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,EAAE;gBACF,GAAG;gBACH,KAAK,EAAE,CAAU;gBACjB,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;IACH,CAAC;IAQO,gBAAgB,CACtB,MAA2B;QAE3B,MAAM,QAAQ,GAA6B,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AA1GD,wFA0GC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-resolver.interface.js","sourceRoot":"","sources":["../../../src/configuration/resolvers/configuration-resolver.interface.ts"],"names":[],"mappings":""}
@@ -1,3 +1,2 @@
1
- export * from './aws';
2
1
  export * from './configuration-resolver.interface';
3
2
  export * from './resolved-value.interface';
@@ -14,7 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./aws"), exports);
18
17
  __exportStar(require("./configuration-resolver.interface"), exports);
19
18
  __exportStar(require("./resolved-value.interface"), exports);
20
19
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/configuration/resolvers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,6DAA2C"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolved-value.interface.js","sourceRoot":"","sources":["../../../src/configuration/resolvers/resolved-value.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.decorator.js","sourceRoot":"","sources":["../../src/decorators/configuration.decorator.ts"],"names":[],"mappings":";;;AAAA,oFAAgF;AAKnE,QAAA,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAW/D,MAAM,aAAa,GAAG,GAAmB,EAAE;IAChD,OAAO,CAAC,MAAc,EAAE,EAAE;QACxB,8CAAqB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,CAAC,cAAc,CACpB,8BAAsB,EACtB,MAAM,CAAC,WAAW,CAAC,IAAI,EACvB,MAAM,CACP,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,aAAa,iBASxB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,oDAAkC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.decorator.js","sourceRoot":"","sources":["../../src/decorators/value.decorator.ts"],"names":[],"mappings":";;;AAAA,oFAAgF;AAKnE,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAKzC,QAAA,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAsC/D,MAAM,KAAK,GAAG,CACnB,GAAW,EACX,OAAsB,EACH,EAAE;IACrB,OAAO,CAAC,MAAc,EAAE,QAAyB,EAAE,EAAE;QACnD,8CAAqB,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1D,OAAO,CAAC,cAAc,CAAC,sBAAc,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,KAAK,SAQhB"}
package/dist/index.d.ts CHANGED
@@ -1 +1,3 @@
1
- export * from './src';
1
+ export * from './configify.module';
2
+ export * from './configuration';
3
+ export * from './decorators';
package/dist/index.js CHANGED
@@ -14,5 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./src"), exports);
17
+ __exportStar(require("./configify.module"), exports);
18
+ __exportStar(require("./configuration"), exports);
19
+ __exportStar(require("./decorators"), exports);
18
20
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,kDAAgC;AAChC,+CAA6B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variables.js","sourceRoot":"","sources":["../../src/interpolation/variables.ts"],"names":[],"mappings":";;;AAQA,MAAa,SAAS;IA8BpB,MAAM,CAAC,MAAM,CAAC,MAA+B;QAC3C,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACrD,QAAQ,CAAC,GAAG,CAAC;gBACX,OAAO,YAAY,KAAK,QAAQ;oBAC9B,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;oBACpC,CAAC,CAAC,YAAY,CAAC;QACrB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IASO,MAAM,CAAC,WAAW,CACxB,KAAc,EACd,MAA+B;QAE/B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAE5C,MAAM,4BAA4B,GAAG,IAAI,CAAC,WAAW,CACnD,KAAK,EACL,IAAI,CAAC,iBAAiB,CACvB,CAAC;QAEF,IAAI,4BAA4B,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAEtD,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEjE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC;YACpD,OAAO,IAAI,CAAC,WAAW,CACrB,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,EACrE,MAAM,CACP,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAQO,MAAM,CAAC,eAAe,CAAC,KAAa;QAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IASO,MAAM,CAAC,WAAW,CAAC,KAAa,EAAE,KAAa;QACrD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;;AAjGH,8BAkGC;AA9FyB,wBAAc,GAAW,OAAO,CAAC;AAKjC,2BAAiB,GAAW,gBAAgB,CAAC;AAY7C,iCAAuB,GAC7C,8CAA8C,CAAC"}
package/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from './src';
1
+ export * from './dist';
package/index.ts CHANGED
@@ -1 +1 @@
1
- export * from './src';
1
+ export * from './dist';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itgorillaz/configify",
3
- "version": "1.3.2",
3
+ "version": "3.0.0-alpha.0",
4
4
  "description": "NestJS Config on Steroids",
5
5
  "author": "tommelo",
6
6
  "private": false,
@@ -30,33 +30,33 @@
30
30
  "js-yaml": "^4.1.0"
31
31
  },
32
32
  "peerDependencies": {
33
- "@aws-sdk/client-secrets-manager": "^3.454.0",
34
- "@aws-sdk/client-ssm": "^3.461.0",
35
- "@nestjs/common": "^9.0.0 || ^10.0.0",
36
- "@nestjs/core": "^9.0.0 || ^10.0.0",
33
+ "@nestjs/common": "^9.0.0 || ^10.0.0 || ^11.0.0",
34
+ "@nestjs/core": "^9.0.0 || ^10.0.0 || ^11.0.0",
37
35
  "class-validator": "^0.14.0",
38
36
  "reflect-metadata": "^0.1.13 || ^0.2.0",
39
37
  "rxjs": "^7.2.0"
40
38
  },
41
39
  "devDependencies": {
42
- "@nestjs/cli": "^10.3.2",
43
- "@nestjs/schematics": "^10.1.1",
44
- "@nestjs/testing": "^10.3.7",
40
+ "@aws-sdk/client-secrets-manager": "^3.454.0",
41
+ "@aws-sdk/client-ssm": "^3.461.0",
42
+ "@nestjs/cli": "^11.0.2",
43
+ "@nestjs/schematics": "^11.0.0",
44
+ "@nestjs/testing": "^11.0.5",
45
45
  "@types/jest": "29.5.14",
46
46
  "@types/js-yaml": "^4.0.9",
47
- "@types/node": "22.10.1",
47
+ "@types/node": "22.13.8",
48
48
  "@types/supertest": "^6.0.2",
49
49
  "@typescript-eslint/eslint-plugin": "^8.1.0",
50
50
  "@typescript-eslint/parser": "^8.1.0",
51
51
  "eslint": "^8.0.0 || ^9.0.0",
52
- "eslint-config-prettier": "^9.1.0",
52
+ "eslint-config-prettier": "^10.0.1",
53
53
  "eslint-plugin-prettier": "^5.1.3",
54
54
  "jest": "29.7.0",
55
55
  "prettier": "^3.2.5",
56
56
  "prettier-plugin-organize-imports": "^4.0.0",
57
57
  "source-map-support": "^0.5.20",
58
58
  "supertest": "^7.0.0",
59
- "ts-jest": "29.2.5",
59
+ "ts-jest": "29.2.6",
60
60
  "ts-loader": "^9.2.3",
61
61
  "ts-node": "^10.0.0",
62
62
  "tsconfig-paths": "4.2.0",
@@ -1,18 +1,14 @@
1
- import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
2
- import { SSMClient } from '@aws-sdk/client-ssm';
3
1
  import { DynamicModule, Module, Provider } from '@nestjs/common';
4
2
  import { validateSync } from 'class-validator';
5
3
  import * as fs from 'fs';
6
4
  import { resolve } from 'path';
7
5
  import {
8
- AwsSecretsManagerConfigurationResolver,
9
6
  ConfigifyModuleOptions,
10
7
  ConfigurationParserFactory,
11
8
  ConfigurationProviders,
12
9
  ConfigurationRegistry,
13
10
  DefaultConfigifyModuleOptions,
14
11
  } from './configuration';
15
- import { AwsParameterStoreConfigurationResolver } from './configuration/resolvers/aws/parameter-store-configuration.resolver';
16
12
  import { Variables } from './interpolation/variables';
17
13
 
18
14
  /**
@@ -26,7 +22,7 @@ import { Variables } from './interpolation/variables';
26
22
  * - Reading configuration files
27
23
  * - Resolving remote secrets
28
24
  * - Expanding variables
29
- * - Creating object instances decored with Configuration and assigning its values
25
+ * - Creating object instances decorated with Configuration and assigning its values
30
26
  * - Validating the configuration instance
31
27
  *
32
28
  * All the configuration set to the configuration files will be assigned to the process.env object
@@ -45,28 +41,11 @@ export class ConfigifyModule {
45
41
  resolve(process.cwd(), 'application.json'),
46
42
  ];
47
43
 
48
- /**
49
- * The remote secrets resolvers pipeline.
50
- * This module currently supports resolving secrets on
51
- * AWS Secrets Manager and AWS Parameters Store.
52
- */
53
- private static readonly SECRETS_RESOLVER_PIPELINE = [
54
- (options: ConfigifyModuleOptions) =>
55
- new AwsSecretsManagerConfigurationResolver(
56
- options.secretsManagerClient || new SecretsManagerClient(),
57
- ),
58
-
59
- (options: ConfigifyModuleOptions) =>
60
- new AwsParameterStoreConfigurationResolver(
61
- options.ssmClient || new SSMClient(),
62
- ),
63
- ];
64
-
65
44
  /**
66
45
  * Creates the configfy dynamic module.
67
46
  *
68
47
  * The module will manage the instance of all classes decorated the Configuration decorator,
69
- * meaning, the module will instanciate and associate the value to attributes according to the
48
+ * meaning, the module will create the instance and associate the value to attributes according to the
70
49
  * keys provided by the Value decorator.
71
50
  *
72
51
  * The configuration key pair values will also be available on process.env object.
@@ -118,10 +97,11 @@ export class ConfigifyModule {
118
97
  options: ConfigifyModuleOptions,
119
98
  ): Promise<Record<string, any>> {
120
99
  const secrets = {};
121
- for (const buildResolver of this.SECRETS_RESOLVER_PIPELINE) {
122
- const resolver = buildResolver(options);
123
- const result = await resolver.resolve(config);
124
- Object.assign(secrets, result);
100
+ if (options.secretsResolverStrategies?.length) {
101
+ for (const resolver of options.secretsResolverStrategies) {
102
+ const result = await resolver.resolve(config);
103
+ Object.assign(secrets, result);
104
+ }
125
105
  }
126
106
  return secrets;
127
107
  }
@@ -1,5 +1,4 @@
1
- import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
2
- import { SSMClient } from '@aws-sdk/client-ssm';
1
+ import { ConfigurationResolver } from './resolvers';
3
2
 
4
3
  /**
5
4
  * The configuration options interface
@@ -29,16 +28,9 @@ export interface ConfigifyModuleOptions {
29
28
  expandConfig?: boolean;
30
29
 
31
30
  /**
32
- * The AWS Secrets Manager Client
33
- * If no client is provided, the module will create one.
31
+ * The secrets resolvers strategies
34
32
  */
35
- secretsManagerClient?: SecretsManagerClient;
36
-
37
- /**
38
- * The AWS Systems Manager Client
39
- * If no client is provided, the module will create one.
40
- */
41
- ssmClient?: SSMClient;
33
+ secretsResolverStrategies?: ConfigurationResolver[];
42
34
  }
43
35
 
44
36
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The configuraion parser interface.
2
+ * The configuration parser interface.
3
3
  * This interface is implemented by all
4
4
  * the supported configuration parsers.
5
5
  */
@@ -0,0 +1,32 @@
1
+ import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
2
+ import { SSMClient } from '@aws-sdk/client-ssm';
3
+ import { ConfigurationResolver } from '../configuration-resolver.interface';
4
+ import { AwsParameterStoreConfigurationResolver } from './parameter-store-configuration.resolver';
5
+ import { AwsSecretsManagerConfigurationResolver } from './secrets-manager-configuration.resolver';
6
+
7
+ /**
8
+ * The AWS secrets resolver factory.
9
+ * This class provides the default secrets resolvers for the module.
10
+ * The default secrets resolvers are:
11
+ * - Parameter Store
12
+ * - Secrets Manager
13
+ */
14
+ export class AwsSecretsResolverFactory {
15
+ /**
16
+ * The default parameter store secrets resolver
17
+ * @returns {ConfigurationResolver} the default parameter store secrets resolver
18
+ */
19
+ static defaultParameterStoreResolver(): ConfigurationResolver {
20
+ return new AwsParameterStoreConfigurationResolver(new SSMClient());
21
+ }
22
+
23
+ /**
24
+ * The default secrets manager secrets resolver
25
+ * @returns {ConfigurationResolver} the default secrets manager secrets resolver
26
+ */
27
+ static defaultSecretsManagerResolver(): ConfigurationResolver {
28
+ return new AwsSecretsManagerConfigurationResolver(
29
+ new SecretsManagerClient(),
30
+ );
31
+ }
32
+ }
@@ -1,2 +1,3 @@
1
+ export * from './aws-secrets-resolver.factory';
1
2
  export * from './parameter-store-configuration.resolver';
2
3
  export * from './secrets-manager-configuration.resolver';
@@ -1,3 +1,2 @@
1
- export * from './aws';
2
1
  export * from './configuration-resolver.interface';
3
2
  export * from './resolved-value.interface';
package/src/index.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './configify.module';
2
+ export * from './configuration';
2
3
  export * from './decorators';
@@ -1,4 +1,11 @@
1
1
  {
2
2
  "extends": "./tsconfig.json",
3
- "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
3
+ "compilerOptions": {
4
+ "outDir": "./dist",
5
+ "rootDir": "./src"
6
+ },
7
+ "include": [
8
+ "src/**/*",
9
+ ],
10
+ "exclude": ["node_modules", "test", "**/*spec.ts"]
4
11
  }