@itgorillaz/configify 3.2.0-alpha.0 → 4.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/configuration/resolvers/aws/aws-secrets-resolver.factory.js +5 -2
  2. package/configuration/resolvers/aws/aws-secrets-resolver.factory.js.map +1 -1
  3. package/configuration/resolvers/aws/parameter-store-configuration.resolver.d.ts +4 -8
  4. package/configuration/resolvers/aws/parameter-store-configuration.resolver.js +8 -48
  5. package/configuration/resolvers/aws/parameter-store-configuration.resolver.js.map +1 -1
  6. package/configuration/resolvers/aws/secrets-manager-configuration.resolver.d.ts +4 -8
  7. package/configuration/resolvers/aws/secrets-manager-configuration.resolver.js +8 -47
  8. package/configuration/resolvers/aws/secrets-manager-configuration.resolver.js.map +1 -1
  9. package/configuration/resolvers/azure/azure-key-vault-configuration-resolver.factory.d.ts +4 -0
  10. package/configuration/resolvers/azure/azure-key-vault-configuration-resolver.factory.js +19 -0
  11. package/configuration/resolvers/azure/azure-key-vault-configuration-resolver.factory.js.map +1 -0
  12. package/configuration/resolvers/azure/azure-key-vault-configuration.resolver.d.ts +8 -0
  13. package/configuration/resolvers/azure/azure-key-vault-configuration.resolver.js +15 -0
  14. package/configuration/resolvers/azure/azure-key-vault-configuration.resolver.js.map +1 -0
  15. package/configuration/resolvers/azure/index.d.ts +2 -0
  16. package/configuration/resolvers/azure/index.js +19 -0
  17. package/configuration/resolvers/azure/index.js.map +1 -0
  18. package/configuration/resolvers/bitwarden/bitwarden-secrets-manager.resolver.d.ts +4 -8
  19. package/configuration/resolvers/bitwarden/bitwarden-secrets-manager.resolver.js +8 -47
  20. package/configuration/resolvers/bitwarden/bitwarden-secrets-manager.resolver.js.map +1 -1
  21. package/configuration/resolvers/bitwarden/bitwarden-secrets-resolver.factory.d.ts +2 -2
  22. package/configuration/resolvers/bitwarden/bitwarden-secrets-resolver.factory.js +3 -1
  23. package/configuration/resolvers/bitwarden/bitwarden-secrets-resolver.factory.js.map +1 -1
  24. package/configuration/resolvers/gcp/google-cloud-secret-manager.resolver.d.ts +4 -8
  25. package/configuration/resolvers/gcp/google-cloud-secret-manager.resolver.js +7 -47
  26. package/configuration/resolvers/gcp/google-cloud-secret-manager.resolver.js.map +1 -1
  27. package/configuration/resolvers/gcp/google-cloud-secrets-resolver.factory.d.ts +2 -2
  28. package/configuration/resolvers/gcp/google-cloud-secrets-resolver.factory.js +3 -1
  29. package/configuration/resolvers/gcp/google-cloud-secrets-resolver.factory.js.map +1 -1
  30. package/configuration/resolvers/index.d.ts +2 -0
  31. package/configuration/resolvers/index.js +2 -0
  32. package/configuration/resolvers/index.js.map +1 -1
  33. package/configuration/resolvers/remote-configuration-resolver.strategy.d.ts +4 -0
  34. package/configuration/resolvers/remote-configuration-resolver.strategy.js +3 -0
  35. package/configuration/resolvers/remote-configuration-resolver.strategy.js.map +1 -0
  36. package/configuration/resolvers/remote-configuration.resolver.d.ts +10 -0
  37. package/configuration/resolvers/remote-configuration.resolver.js +55 -0
  38. package/configuration/resolvers/remote-configuration.resolver.js.map +1 -0
  39. package/package.json +3 -1
@@ -3,14 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AwsSecretsResolverFactory = void 0;
4
4
  const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
5
5
  const client_ssm_1 = require("@aws-sdk/client-ssm");
6
+ const remote_configuration_resolver_1 = require("../remote-configuration.resolver");
6
7
  const parameter_store_configuration_resolver_1 = require("./parameter-store-configuration.resolver");
7
8
  const secrets_manager_configuration_resolver_1 = require("./secrets-manager-configuration.resolver");
8
9
  class AwsSecretsResolverFactory {
9
10
  static defaultParameterStoreResolver() {
10
- return new parameter_store_configuration_resolver_1.AwsParameterStoreConfigurationResolver(new client_ssm_1.SSMClient());
11
+ const strategy = new parameter_store_configuration_resolver_1.AwsParameterStoreConfigurationResolver(new client_ssm_1.SSMClient());
12
+ return new remote_configuration_resolver_1.RemoteConfigurationResolver(strategy);
11
13
  }
12
14
  static defaultSecretsManagerResolver() {
13
- return new secrets_manager_configuration_resolver_1.AwsSecretsManagerConfigurationResolver(new client_secrets_manager_1.SecretsManagerClient());
15
+ const strategy = new secrets_manager_configuration_resolver_1.AwsSecretsManagerConfigurationResolver(new client_secrets_manager_1.SecretsManagerClient());
16
+ return new remote_configuration_resolver_1.RemoteConfigurationResolver(strategy);
14
17
  }
15
18
  }
16
19
  exports.AwsSecretsResolverFactory = AwsSecretsResolverFactory;
@@ -1 +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
+ {"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,oFAA+E;AAC/E,qGAAkG;AAClG,qGAAkG;AASlG,MAAa,yBAAyB;IAKpC,MAAM,CAAC,6BAA6B;QAClC,MAAM,QAAQ,GAAG,IAAI,+EAAsC,CACzD,IAAI,sBAAS,EAAE,CAChB,CAAC;QACF,OAAO,IAAI,2DAA2B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAMD,MAAM,CAAC,6BAA6B;QAClC,MAAM,QAAQ,GAAG,IAAI,+EAAsC,CACzD,IAAI,6CAAoB,EAAE,CAC3B,CAAC;QACF,OAAO,IAAI,2DAA2B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;CACF;AAtBD,8DAsBC"}
@@ -1,12 +1,8 @@
1
1
  import { SSMClient } from '@aws-sdk/client-ssm';
2
- import { ConfigurationResolver } from '../configuration-resolver.interface';
3
- export declare class AwsParameterStoreConfigurationResolver implements ConfigurationResolver {
2
+ import { RemoteConfigurationResolverStrategy } from '../remote-configuration-resolver.strategy';
3
+ export declare class AwsParameterStoreConfigurationResolver implements RemoteConfigurationResolverStrategy {
4
4
  private readonly ssm;
5
- private readonly AWS_PARAMETER_STORE_YAML_KEY;
6
- private readonly AWS_PARAMETER_STORE_ENV_PREFIX;
5
+ configurationKeys: readonly string[];
7
6
  constructor(ssm: SSMClient);
8
- resolve(config: Record<string, any>): Promise<Record<string, any>>;
9
- private filterConfiguration;
10
- private resolveSecretValue;
11
- private buildBulkRequest;
7
+ resolveSecretValue(id: string): Promise<string | undefined>;
12
8
  }
@@ -5,56 +5,16 @@ const client_ssm_1 = require("@aws-sdk/client-ssm");
5
5
  class AwsParameterStoreConfigurationResolver {
6
6
  constructor(ssm) {
7
7
  this.ssm = ssm;
8
- this.AWS_PARAMETER_STORE_YAML_KEY = 'aws-parameter-store';
9
- this.AWS_PARAMETER_STORE_ENV_PREFIX = 'AWS_PARAMETER_STORE';
8
+ this.configurationKeys = [
9
+ 'aws-parameter-store',
10
+ 'AWS_PARAMETER_STORE',
11
+ ];
10
12
  }
11
- async resolve(config) {
12
- const parameters = this.filterConfiguration(config);
13
- const promises = this.buildBulkRequest(parameters);
14
- const results = await Promise.all(promises);
15
- const errors = results.filter((r) => !r.success);
16
- if (errors && errors.length) {
17
- throw new Error(`Unable to resolve parameter:\n${errors
18
- .map((e) => { var _a; return `${e.key}: ${e.id} - ${(_a = e.error) === null || _a === void 0 ? void 0 : _a.message}`; })
19
- .join('\n')}`);
20
- }
21
- for (const result of results) {
22
- config[result.key] = result.value;
23
- }
24
- return config;
25
- }
26
- filterConfiguration(config) {
27
- return Object.fromEntries(Object.entries(config).filter(([key]) => key.startsWith(this.AWS_PARAMETER_STORE_YAML_KEY) ||
28
- key.startsWith(this.AWS_PARAMETER_STORE_ENV_PREFIX)));
29
- }
30
- async resolveSecretValue(key, id) {
13
+ async resolveSecretValue(id) {
31
14
  var _a;
32
- try {
33
- const payload = { Name: id, WithDecryption: true };
34
- const command = new client_ssm_1.GetParameterCommand(payload);
35
- const response = await this.ssm.send(command);
36
- return {
37
- id,
38
- key,
39
- value: (_a = response.Parameter) === null || _a === void 0 ? void 0 : _a.Value,
40
- success: true,
41
- };
42
- }
43
- catch (e) {
44
- return {
45
- id,
46
- key,
47
- error: e,
48
- success: false,
49
- };
50
- }
51
- }
52
- buildBulkRequest(config) {
53
- const promises = [];
54
- for (const [key, value] of Object.entries(config)) {
55
- promises.push(this.resolveSecretValue(key, value));
56
- }
57
- return promises;
15
+ const command = new client_ssm_1.GetParameterCommand({ Name: id, WithDecryption: true });
16
+ const response = await this.ssm.send(command);
17
+ return (_a = response.Parameter) === null || _a === void 0 ? void 0 : _a.Value;
58
18
  }
59
19
  }
60
20
  exports.AwsParameterStoreConfigurationResolver = AwsParameterStoreConfigurationResolver;
@@ -1 +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"}
1
+ {"version":3,"file":"parameter-store-configuration.resolver.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/aws/parameter-store-configuration.resolver.ts"],"names":[],"mappings":";;;AAAA,oDAAqE;AAMrE,MAAa,sCAAsC;IAajD,YAA6B,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;QAV3C,sBAAiB,GAAsB;YACrC,qBAAqB;YACrB,qBAAqB;SACtB,CAAC;IAO4C,CAAC;IAQ/C,KAAK,CAAC,kBAAkB,CAAC,EAAU;;QACjC,MAAM,OAAO,GAAG,IAAI,gCAAmB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,MAAA,QAAQ,CAAC,SAAS,0CAAE,KAAK,CAAC;IACnC,CAAC;CACF;AA1BD,wFA0BC"}
@@ -1,12 +1,8 @@
1
1
  import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
2
- import { ConfigurationResolver } from '../configuration-resolver.interface';
3
- export declare class AwsSecretsManagerConfigurationResolver implements ConfigurationResolver {
2
+ import { RemoteConfigurationResolverStrategy } from '../remote-configuration-resolver.strategy';
3
+ export declare class AwsSecretsManagerConfigurationResolver implements RemoteConfigurationResolverStrategy {
4
4
  private readonly secretsManager;
5
- private readonly AWS_SECRETS_AMANGER_YAML_KEY;
6
- private readonly AWS_SECRETS_MANAGER_ENV_PREFIX;
5
+ configurationKeys: readonly string[];
7
6
  constructor(secretsManager: SecretsManagerClient);
8
- resolve(config: Record<string, any>): Promise<Record<string, any>>;
9
- private filterConfiguration;
10
- private resolveSecretValue;
11
- private buildBulkRequest;
7
+ resolveSecretValue(id: string): Promise<string | undefined>;
12
8
  }
@@ -5,54 +5,15 @@ const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
5
5
  class AwsSecretsManagerConfigurationResolver {
6
6
  constructor(secretsManager) {
7
7
  this.secretsManager = secretsManager;
8
- this.AWS_SECRETS_AMANGER_YAML_KEY = 'aws-secrets-manager';
9
- this.AWS_SECRETS_MANAGER_ENV_PREFIX = 'AWS_SECRETS_MANAGER';
8
+ this.configurationKeys = [
9
+ 'aws-secrets-manager',
10
+ 'AWS_SECRETS_MANAGER',
11
+ ];
10
12
  }
11
- async resolve(config) {
12
- const secrets = this.filterConfiguration(config);
13
- const promises = this.buildBulkRequest(secrets);
14
- const results = await Promise.all(promises);
15
- const errors = results.filter((r) => !r.success);
16
- if (errors && errors.length) {
17
- throw new Error(`Unable to resolve secrets:\n${errors
18
- .map((e) => { var _a; return `${e.key}: ${e.id} - ${(_a = e.error) === null || _a === void 0 ? void 0 : _a.message}`; })
19
- .join('\n')}`);
20
- }
21
- for (const result of results) {
22
- config[result.key] = result.value;
23
- }
24
- return config;
25
- }
26
- filterConfiguration(config) {
27
- return Object.fromEntries(Object.entries(config).filter(([key]) => key.startsWith(this.AWS_SECRETS_AMANGER_YAML_KEY) ||
28
- key.startsWith(this.AWS_SECRETS_MANAGER_ENV_PREFIX)));
29
- }
30
- async resolveSecretValue(key, id) {
31
- try {
32
- const command = new client_secrets_manager_1.GetSecretValueCommand({ SecretId: id });
33
- const response = await this.secretsManager.send(command);
34
- return {
35
- id,
36
- key,
37
- value: response.SecretString,
38
- success: true,
39
- };
40
- }
41
- catch (e) {
42
- return {
43
- id,
44
- key,
45
- error: e,
46
- success: false,
47
- };
48
- }
49
- }
50
- buildBulkRequest(config) {
51
- const promises = [];
52
- for (const [key, value] of Object.entries(config)) {
53
- promises.push(this.resolveSecretValue(key, value));
54
- }
55
- return promises;
13
+ async resolveSecretValue(id) {
14
+ const command = new client_secrets_manager_1.GetSecretValueCommand({ SecretId: id });
15
+ const response = await this.secretsManager.send(command);
16
+ return response.SecretString;
56
17
  }
57
18
  }
58
19
  exports.AwsSecretsManagerConfigurationResolver = AwsSecretsManagerConfigurationResolver;
@@ -1 +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"}
1
+ {"version":3,"file":"secrets-manager-configuration.resolver.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/aws/secrets-manager-configuration.resolver.ts"],"names":[],"mappings":";;;AAAA,4EAGyC;AAMzC,MAAa,sCAAsC;IAajD,YAA6B,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;QAVjE,sBAAiB,GAAsB;YACrC,qBAAqB;YACrB,qBAAqB;SACtB,CAAC;IAOkE,CAAC;IAQrE,KAAK,CAAC,kBAAkB,CAAC,EAAU;QACjC,MAAM,OAAO,GAAG,IAAI,8CAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO,QAAQ,CAAC,YAAY,CAAC;IAC/B,CAAC;CACF;AA1BD,wFA0BC"}
@@ -0,0 +1,4 @@
1
+ import { ConfigurationResolver } from '../configuration-resolver.interface';
2
+ export declare class AzureKeyVaultConfigurationResolverFactory {
3
+ static defaultKeyVaultConfigurationResolver(keyVaultUrl?: string): ConfigurationResolver;
4
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AzureKeyVaultConfigurationResolverFactory = void 0;
4
+ const identity_1 = require("@azure/identity");
5
+ const keyvault_secrets_1 = require("@azure/keyvault-secrets");
6
+ const remote_configuration_resolver_1 = require("../remote-configuration.resolver");
7
+ const azure_key_vault_configuration_resolver_1 = require("./azure-key-vault-configuration.resolver");
8
+ class AzureKeyVaultConfigurationResolverFactory {
9
+ static defaultKeyVaultConfigurationResolver(keyVaultUrl) {
10
+ const url = keyVaultUrl || process.env.AZURE_KEYVAULT_URL;
11
+ if (!url) {
12
+ throw new Error('Azure KeyVault URL is required');
13
+ }
14
+ const strategy = new azure_key_vault_configuration_resolver_1.AzureKeyVaultConfigurationResolver(new keyvault_secrets_1.SecretClient(url, new identity_1.DefaultAzureCredential()));
15
+ return new remote_configuration_resolver_1.RemoteConfigurationResolver(strategy);
16
+ }
17
+ }
18
+ exports.AzureKeyVaultConfigurationResolverFactory = AzureKeyVaultConfigurationResolverFactory;
19
+ //# sourceMappingURL=azure-key-vault-configuration-resolver.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-key-vault-configuration-resolver.factory.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/azure/azure-key-vault-configuration-resolver.factory.ts"],"names":[],"mappings":";;;AAAA,8CAAyD;AACzD,8DAAuD;AAEvD,oFAA+E;AAC/E,qGAA8F;AAK9F,MAAa,yCAAyC;IASpD,MAAM,CAAC,oCAAoC,CACzC,WAAoB;QAEpB,MAAM,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAE1D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,2EAAkC,CACrD,IAAI,+BAAY,CAAC,GAAG,EAAE,IAAI,iCAAsB,EAAE,CAAC,CACpD,CAAC;QAEF,OAAO,IAAI,2DAA2B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;CACF;AAxBD,8FAwBC"}
@@ -0,0 +1,8 @@
1
+ import { SecretClient } from '@azure/keyvault-secrets';
2
+ import { RemoteConfigurationResolverStrategy } from '../remote-configuration-resolver.strategy';
3
+ export declare class AzureKeyVaultConfigurationResolver implements RemoteConfigurationResolverStrategy {
4
+ private readonly client;
5
+ configurationKeys: readonly string[];
6
+ constructor(client: SecretClient);
7
+ resolveSecretValue(id: string): Promise<string | undefined>;
8
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AzureKeyVaultConfigurationResolver = void 0;
4
+ class AzureKeyVaultConfigurationResolver {
5
+ constructor(client) {
6
+ this.client = client;
7
+ this.configurationKeys = ['azure-key-vault', 'AZURE_KEY_VAULT'];
8
+ }
9
+ async resolveSecretValue(id) {
10
+ const secret = await this.client.getSecret(id);
11
+ return secret.value;
12
+ }
13
+ }
14
+ exports.AzureKeyVaultConfigurationResolver = AzureKeyVaultConfigurationResolver;
15
+ //# sourceMappingURL=azure-key-vault-configuration.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-key-vault-configuration.resolver.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/azure/azure-key-vault-configuration.resolver.ts"],"names":[],"mappings":";;;AAMA,MAAa,kCAAkC;IAU7C,YAA6B,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;QAPjD,sBAAiB,GAAsB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IAO1B,CAAC;IAQrD,KAAK,CAAC,kBAAkB,CAAC,EAAU;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;CACF;AAtBD,gFAsBC"}
@@ -0,0 +1,2 @@
1
+ export * from './azure-key-vault-configuration-resolver.factory';
2
+ export * from './azure-key-vault-configuration.resolver';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./azure-key-vault-configuration-resolver.factory"), exports);
18
+ __exportStar(require("./azure-key-vault-configuration.resolver"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/azure/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mFAAiE;AACjE,2EAAyD"}
@@ -1,13 +1,9 @@
1
1
  import { BitwardenClient } from '@bitwarden/sdk-napi';
2
- import { ConfigurationResolver } from '../configuration-resolver.interface';
3
- export declare class BitwardenSecretsManagerConfigurationResolver implements ConfigurationResolver {
2
+ import { RemoteConfigurationResolverStrategy } from '../remote-configuration-resolver.strategy';
3
+ export declare class BitwardenSecretsManagerConfigurationResolver implements RemoteConfigurationResolverStrategy {
4
4
  private readonly client;
5
5
  private readonly accessToken;
6
- private readonly BITWARDEN_SECRETS_MANAGER_YAML_KEY;
7
- private readonly BITWARDEN_SECRETS_MANAGER_ENV_PREFIX;
6
+ configurationKeys: readonly string[];
8
7
  constructor(client: BitwardenClient, accessToken: string);
9
- resolve(config: Record<string, any>): Promise<Record<string, any>>;
10
- private filterConfiguration;
11
- private resolveSecretValue;
12
- private buildBulkRequest;
8
+ resolveSecretValue(id: string): Promise<string | undefined>;
13
9
  }
@@ -5,54 +5,15 @@ class BitwardenSecretsManagerConfigurationResolver {
5
5
  constructor(client, accessToken) {
6
6
  this.client = client;
7
7
  this.accessToken = accessToken;
8
- this.BITWARDEN_SECRETS_MANAGER_YAML_KEY = 'bitwarden-secrets-manager';
9
- this.BITWARDEN_SECRETS_MANAGER_ENV_PREFIX = 'BITWARDEN_SECRETS_MANAGER';
8
+ this.configurationKeys = [
9
+ 'bitwarden-secrets-manager',
10
+ 'BITWARDEN_SECRETS_MANAGER',
11
+ ];
10
12
  }
11
- async resolve(config) {
12
- const parameters = this.filterConfiguration(config);
13
- const promises = this.buildBulkRequest(parameters);
14
- const results = await Promise.all(promises);
15
- const errors = results.filter((r) => !r.success);
16
- if (errors && errors.length) {
17
- throw new Error(`Unable to resolve parameter:\n${errors
18
- .map((e) => { var _a; return `${e.key}: ${e.id} - ${(_a = e.error) === null || _a === void 0 ? void 0 : _a.message}`; })
19
- .join('\n')}`);
20
- }
21
- for (const result of results) {
22
- config[result.key] = result.value;
23
- }
24
- return config;
25
- }
26
- filterConfiguration(config) {
27
- return Object.fromEntries(Object.entries(config).filter(([key]) => key.startsWith(this.BITWARDEN_SECRETS_MANAGER_YAML_KEY) ||
28
- key.startsWith(this.BITWARDEN_SECRETS_MANAGER_ENV_PREFIX)));
29
- }
30
- async resolveSecretValue(key, id) {
31
- try {
32
- await this.client.auth().loginAccessToken(this.accessToken);
33
- const response = await this.client.secrets().get(id);
34
- return {
35
- id,
36
- key,
37
- value: response.value,
38
- success: true,
39
- };
40
- }
41
- catch (e) {
42
- return {
43
- id,
44
- key,
45
- error: e,
46
- success: false,
47
- };
48
- }
49
- }
50
- buildBulkRequest(config) {
51
- const promises = [];
52
- for (const [key, value] of Object.entries(config)) {
53
- promises.push(this.resolveSecretValue(key, value));
54
- }
55
- return promises;
13
+ async resolveSecretValue(id) {
14
+ await this.client.auth().loginAccessToken(this.accessToken);
15
+ const response = await this.client.secrets().get(id);
16
+ return response.value;
56
17
  }
57
18
  }
58
19
  exports.BitwardenSecretsManagerConfigurationResolver = BitwardenSecretsManagerConfigurationResolver;
@@ -1 +1 @@
1
- {"version":3,"file":"bitwarden-secrets-manager.resolver.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/bitwarden/bitwarden-secrets-manager.resolver.ts"],"names":[],"mappings":";;;AAOA,MAAa,4CAA4C;IAcvD,YACmB,MAAuB,EACvB,WAAmB;QADnB,WAAM,GAAN,MAAM,CAAiB;QACvB,gBAAW,GAAX,WAAW,CAAQ;QAbrB,uCAAkC,GACjD,2BAA2B,CAAC;QAEb,yCAAoC,GACnD,2BAA2B,CAAC;IAU3B,CAAC;IAUJ,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,kCAAkC,CAAC;YACvD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAC5D,CACF,CAAC;IACJ,CAAC;IASO,KAAK,CAAC,kBAAkB,CAC9B,GAAW,EACX,EAAU;QAEV,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrD,OAAO;gBACL,EAAE;gBACF,GAAG;gBACH,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,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;AAhHD,oGAgHC"}
1
+ {"version":3,"file":"bitwarden-secrets-manager.resolver.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/bitwarden/bitwarden-secrets-manager.resolver.ts"],"names":[],"mappings":";;;AAMA,MAAa,4CAA4C;IAavD,YACmB,MAAuB,EACvB,WAAmB;QADnB,WAAM,GAAN,MAAM,CAAiB;QACvB,gBAAW,GAAX,WAAW,CAAQ;QAZtC,sBAAiB,GAAsB;YACrC,2BAA2B;YAC3B,2BAA2B;SAC5B,CAAC;IAUC,CAAC;IASJ,KAAK,CAAC,kBAAkB,CAAC,EAAU;QACjC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;CACF;AA9BD,oGA8BC"}
@@ -1,7 +1,7 @@
1
- import { BitwardenSecretsManagerConfigurationResolver } from './bitwarden-secrets-manager.resolver';
1
+ import { ConfigurationResolver } from '../configuration-resolver.interface';
2
2
  import { BitwardenServerRegion } from './bitwarden-server.region';
3
3
  export declare class BitwardenSecretsResolverFactory {
4
4
  private static readonly BITWARDEN_EU_SETTINGS;
5
5
  private static readonly BITWARDEN_US_SETTINGS;
6
- static defaultBitwardenSecretsResolver(region: BitwardenServerRegion, accessToken?: string): BitwardenSecretsManagerConfigurationResolver;
6
+ static defaultBitwardenSecretsResolver(region: BitwardenServerRegion, accessToken?: string): ConfigurationResolver;
7
7
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BitwardenSecretsResolverFactory = void 0;
4
4
  const sdk_napi_1 = require("@bitwarden/sdk-napi");
5
+ const remote_configuration_resolver_1 = require("../remote-configuration.resolver");
5
6
  const bitwarden_secrets_manager_resolver_1 = require("./bitwarden-secrets-manager.resolver");
6
7
  const bitwarden_server_region_1 = require("./bitwarden-server.region");
7
8
  class BitwardenSecretsResolverFactory {
@@ -14,7 +15,8 @@ class BitwardenSecretsResolverFactory {
14
15
  ? this.BITWARDEN_EU_SETTINGS
15
16
  : this.BITWARDEN_US_SETTINGS;
16
17
  const client = new sdk_napi_1.BitwardenClient(settings);
17
- return new bitwarden_secrets_manager_resolver_1.BitwardenSecretsManagerConfigurationResolver(client, token);
18
+ const strategy = new bitwarden_secrets_manager_resolver_1.BitwardenSecretsManagerConfigurationResolver(client, token);
19
+ return new remote_configuration_resolver_1.RemoteConfigurationResolver(strategy);
18
20
  }
19
21
  }
20
22
  exports.BitwardenSecretsResolverFactory = BitwardenSecretsResolverFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"bitwarden-secrets-resolver.factory.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/bitwarden/bitwarden-secrets-resolver.factory.ts"],"names":[],"mappings":";;;AAAA,kDAI6B;AAC7B,6FAAoG;AACpG,uEAAkE;AAMlE,MAAa,+BAA+B;IA6B1C,MAAM,CAAC,+BAA+B,CACpC,MAA6B,EAC7B,WAAoB;QAEpB,MAAM,KAAK,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAE1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,QAAQ,GACZ,+CAAqB,CAAC,EAAE,KAAK,MAAM;YACjC,CAAC,CAAC,IAAI,CAAC,qBAAqB;YAC5B,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;QAEjC,MAAM,MAAM,GAAG,IAAI,0BAAe,CAAC,QAAQ,CAAC,CAAC;QAE7C,OAAO,IAAI,iFAA4C,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzE,CAAC;;AA/CH,0EAgDC;AA5CyB,qDAAqB,GAAmB;IAC9D,MAAM,EAAE,0BAA0B;IAClC,WAAW,EAAE,+BAA+B;IAC5C,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAE,qBAAU,CAAC,GAAG;CAC3B,CAAC;AAKsB,qDAAqB,GAAmB;IAC9D,MAAM,EAAE,2BAA2B;IACnC,WAAW,EAAE,gCAAgC;IAC7C,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAE,qBAAU,CAAC,GAAG;CAC3B,CAAC"}
1
+ {"version":3,"file":"bitwarden-secrets-resolver.factory.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/bitwarden/bitwarden-secrets-resolver.factory.ts"],"names":[],"mappings":";;;AAAA,kDAI6B;AAE7B,oFAA+E;AAC/E,6FAAoG;AACpG,uEAAkE;AAMlE,MAAa,+BAA+B;IA6B1C,MAAM,CAAC,+BAA+B,CACpC,MAA6B,EAC7B,WAAoB;QAEpB,MAAM,KAAK,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAE1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,QAAQ,GACZ,+CAAqB,CAAC,EAAE,KAAK,MAAM;YACjC,CAAC,CAAC,IAAI,CAAC,qBAAqB;YAC5B,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;QAEjC,MAAM,MAAM,GAAG,IAAI,0BAAe,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,iFAA4C,CAC/D,MAAM,EACN,KAAK,CACN,CAAC;QAEF,OAAO,IAAI,2DAA2B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;;AAnDH,0EAoDC;AAhDyB,qDAAqB,GAAmB;IAC9D,MAAM,EAAE,0BAA0B;IAClC,WAAW,EAAE,+BAA+B;IAC5C,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAE,qBAAU,CAAC,GAAG;CAC3B,CAAC;AAKsB,qDAAqB,GAAmB;IAC9D,MAAM,EAAE,2BAA2B;IACnC,WAAW,EAAE,gCAAgC;IAC7C,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAE,qBAAU,CAAC,GAAG;CAC3B,CAAC"}
@@ -1,12 +1,8 @@
1
1
  import { SecretManagerServiceClient } from '@google-cloud/secret-manager';
2
- import { ConfigurationResolver } from '../configuration-resolver.interface';
3
- export declare class GoogleCloudSecretManagerConfigurationResolver implements ConfigurationResolver {
2
+ import { RemoteConfigurationResolverStrategy } from '../remote-configuration-resolver.strategy';
3
+ export declare class GoogleCloudSecretManagerConfigurationResolver implements RemoteConfigurationResolverStrategy {
4
4
  private readonly client;
5
- private readonly GCP_SECRET_MANAGER_YAML_KEY;
6
- private readonly GCP_SECRET_MANAGER_ENV_PREFIX;
5
+ configurationKeys: readonly string[];
7
6
  constructor(client: SecretManagerServiceClient);
8
- resolve(config: Record<string, any>): Promise<Record<string, any>>;
9
- private filterConfiguration;
10
- private resolveSecretValue;
11
- private buildBulkRequest;
7
+ resolveSecretValue(id: string): Promise<string | undefined>;
12
8
  }
@@ -4,55 +4,15 @@ exports.GoogleCloudSecretManagerConfigurationResolver = void 0;
4
4
  class GoogleCloudSecretManagerConfigurationResolver {
5
5
  constructor(client) {
6
6
  this.client = client;
7
- this.GCP_SECRET_MANAGER_YAML_KEY = 'gcp-secret-manager';
8
- this.GCP_SECRET_MANAGER_ENV_PREFIX = 'GCP_SECRET_MANAGER';
7
+ this.configurationKeys = [
8
+ 'gcp-secret-manager',
9
+ 'GCP_SECRET_MANAGER',
10
+ ];
9
11
  }
10
- async resolve(config) {
11
- const parameters = this.filterConfiguration(config);
12
- const promises = this.buildBulkRequest(parameters);
13
- const results = await Promise.all(promises);
14
- const errors = results.filter((r) => !r.success);
15
- if (errors && errors.length) {
16
- throw new Error(`Unable to resolve parameter:\n${errors
17
- .map((e) => { var _a; return `${e.key}: ${e.id} - ${(_a = e.error) === null || _a === void 0 ? void 0 : _a.message}`; })
18
- .join('\n')}`);
19
- }
20
- for (const result of results) {
21
- config[result.key] = result.value;
22
- }
23
- return config;
24
- }
25
- filterConfiguration(config) {
26
- return Object.fromEntries(Object.entries(config).filter(([key]) => key.startsWith(this.GCP_SECRET_MANAGER_YAML_KEY) ||
27
- key.startsWith(this.GCP_SECRET_MANAGER_ENV_PREFIX)));
28
- }
29
- async resolveSecretValue(key, id) {
12
+ async resolveSecretValue(id) {
30
13
  var _a, _b;
31
- try {
32
- const payload = { name: id };
33
- const [secret] = await this.client.accessSecretVersion(payload);
34
- return {
35
- id,
36
- key,
37
- value: (_b = (_a = secret.payload) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.toString(),
38
- success: true,
39
- };
40
- }
41
- catch (e) {
42
- return {
43
- id,
44
- key,
45
- error: e,
46
- success: false,
47
- };
48
- }
49
- }
50
- buildBulkRequest(config) {
51
- const promises = [];
52
- for (const [key, value] of Object.entries(config)) {
53
- promises.push(this.resolveSecretValue(key, value));
54
- }
55
- return promises;
14
+ const [secret] = await this.client.accessSecretVersion({ name: id });
15
+ return (_b = (_a = secret.payload) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.toString();
56
16
  }
57
17
  }
58
18
  exports.GoogleCloudSecretManagerConfigurationResolver = GoogleCloudSecretManagerConfigurationResolver;
@@ -1 +1 @@
1
- {"version":3,"file":"google-cloud-secret-manager.resolver.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/gcp/google-cloud-secret-manager.resolver.ts"],"names":[],"mappings":";;;AAOA,MAAa,6CAA6C;IAWxD,YAA6B,MAAkC;QAAlC,WAAM,GAAN,MAAM,CAA4B;QAR9C,gCAA2B,GAAG,oBAAoB,CAAC;QACnD,kCAA6B,GAAG,oBAAoB,CAAC;IAOJ,CAAC;IAUnE,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,2BAA2B,CAAC;YAChD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,6BAA6B,CAAC,CACrD,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;YAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAChE,OAAO;gBACL,EAAE;gBACF,GAAG;gBACH,KAAK,EAAE,MAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,IAAI,0CAAE,QAAQ,EAAE;gBACvC,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,sGA0GC"}
1
+ {"version":3,"file":"google-cloud-secret-manager.resolver.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/gcp/google-cloud-secret-manager.resolver.ts"],"names":[],"mappings":";;;AAMA,MAAa,6CAA6C;IAaxD,YAA6B,MAAkC;QAAlC,WAAM,GAAN,MAAM,CAA4B;QAV/D,sBAAiB,GAAsB;YACrC,oBAAoB;YACpB,oBAAoB;SACrB,CAAC;IAOgE,CAAC;IAQnE,KAAK,CAAC,kBAAkB,CAAC,EAAU;;QACjC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,OAAO,MAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,IAAI,0CAAE,QAAQ,EAAE,CAAC;IAC1C,CAAC;CACF;AAzBD,sGAyBC"}
@@ -1,4 +1,4 @@
1
- import { GoogleCloudSecretManagerConfigurationResolver } from './google-cloud-secret-manager.resolver';
1
+ import { ConfigurationResolver } from '../configuration-resolver.interface';
2
2
  export declare class GoogleCloudSecretsResolverFactory {
3
- static defaultSecretManagerConfigurationResolver(): GoogleCloudSecretManagerConfigurationResolver;
3
+ static defaultSecretManagerConfigurationResolver(): ConfigurationResolver;
4
4
  }
@@ -2,10 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GoogleCloudSecretsResolverFactory = void 0;
4
4
  const secret_manager_1 = require("@google-cloud/secret-manager");
5
+ const remote_configuration_resolver_1 = require("../remote-configuration.resolver");
5
6
  const google_cloud_secret_manager_resolver_1 = require("./google-cloud-secret-manager.resolver");
6
7
  class GoogleCloudSecretsResolverFactory {
7
8
  static defaultSecretManagerConfigurationResolver() {
8
- return new google_cloud_secret_manager_resolver_1.GoogleCloudSecretManagerConfigurationResolver(new secret_manager_1.SecretManagerServiceClient());
9
+ const strategy = new google_cloud_secret_manager_resolver_1.GoogleCloudSecretManagerConfigurationResolver(new secret_manager_1.SecretManagerServiceClient());
10
+ return new remote_configuration_resolver_1.RemoteConfigurationResolver(strategy);
9
11
  }
10
12
  }
11
13
  exports.GoogleCloudSecretsResolverFactory = GoogleCloudSecretsResolverFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"google-cloud-secrets-resolver.factory.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/gcp/google-cloud-secrets-resolver.factory.ts"],"names":[],"mappings":";;;AAAA,iEAA0E;AAC1E,iGAAuG;AAKvG,MAAa,iCAAiC;IAK5C,MAAM,CAAC,yCAAyC;QAC9C,OAAO,IAAI,oFAA6C,CACtD,IAAI,2CAA0B,EAAE,CACjC,CAAC;IACJ,CAAC;CACF;AAVD,8EAUC"}
1
+ {"version":3,"file":"google-cloud-secrets-resolver.factory.js","sourceRoot":"","sources":["../../../../src/configuration/resolvers/gcp/google-cloud-secrets-resolver.factory.ts"],"names":[],"mappings":";;;AAAA,iEAA0E;AAE1E,oFAA+E;AAC/E,iGAAuG;AAKvG,MAAa,iCAAiC;IAK5C,MAAM,CAAC,yCAAyC;QAC9C,MAAM,QAAQ,GAAG,IAAI,oFAA6C,CAChE,IAAI,2CAA0B,EAAE,CACjC,CAAC;QACF,OAAO,IAAI,2DAA2B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;CACF;AAXD,8EAWC"}
@@ -1,2 +1,4 @@
1
1
  export * from './configuration-resolver.interface';
2
+ export * from './remote-configuration-resolver.strategy';
3
+ export * from './remote-configuration.resolver';
2
4
  export * from './resolved-value.interface';
@@ -15,5 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./configuration-resolver.interface"), exports);
18
+ __exportStar(require("./remote-configuration-resolver.strategy"), exports);
19
+ __exportStar(require("./remote-configuration.resolver"), exports);
18
20
  __exportStar(require("./resolved-value.interface"), exports);
19
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/configuration/resolvers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,6DAA2C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/configuration/resolvers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,2EAAyD;AACzD,kEAAgD;AAChD,6DAA2C"}
@@ -0,0 +1,4 @@
1
+ export interface RemoteConfigurationResolverStrategy {
2
+ configurationKeys: Readonly<string[]>;
3
+ resolveSecretValue(id: string): Promise<string | undefined>;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=remote-configuration-resolver.strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-configuration-resolver.strategy.js","sourceRoot":"","sources":["../../../src/configuration/resolvers/remote-configuration-resolver.strategy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { ConfigurationResolver } from './configuration-resolver.interface';
2
+ import { RemoteConfigurationResolverStrategy } from './remote-configuration-resolver.strategy';
3
+ export declare class RemoteConfigurationResolver implements ConfigurationResolver {
4
+ private readonly strategy;
5
+ constructor(strategy: RemoteConfigurationResolverStrategy);
6
+ resolve(config: Record<string, any>): Promise<Record<string, any>>;
7
+ private resolveSecretValue;
8
+ private filterConfiguration;
9
+ private buildBulkRequest;
10
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RemoteConfigurationResolver = void 0;
4
+ class RemoteConfigurationResolver {
5
+ constructor(strategy) {
6
+ this.strategy = strategy;
7
+ }
8
+ async resolve(config) {
9
+ const parameters = this.filterConfiguration(config);
10
+ const promises = this.buildBulkRequest(parameters);
11
+ const results = await Promise.all(promises);
12
+ const errors = results.filter((r) => !r.success);
13
+ if (errors && errors.length) {
14
+ throw new Error(`Unable to resolve parameter:\n${errors
15
+ .map((e) => { var _a; return `${e.key}: ${e.id} - ${(_a = e.error) === null || _a === void 0 ? void 0 : _a.message}`; })
16
+ .join('\n')}`);
17
+ }
18
+ for (const result of results) {
19
+ config[result.key] = result.value;
20
+ }
21
+ return config;
22
+ }
23
+ async resolveSecretValue(key, id) {
24
+ try {
25
+ const secret = await this.strategy.resolveSecretValue(id);
26
+ return {
27
+ id,
28
+ key,
29
+ value: secret,
30
+ success: true,
31
+ };
32
+ }
33
+ catch (e) {
34
+ return {
35
+ id,
36
+ key,
37
+ error: e,
38
+ success: false,
39
+ };
40
+ }
41
+ }
42
+ filterConfiguration(config) {
43
+ const entries = Object.entries(config).filter(([key]) => this.strategy.configurationKeys.some((k) => key.startsWith(k)));
44
+ return Object.fromEntries(entries);
45
+ }
46
+ buildBulkRequest(config) {
47
+ const promises = [];
48
+ for (const [key, value] of Object.entries(config)) {
49
+ promises.push(this.resolveSecretValue(key, value));
50
+ }
51
+ return promises;
52
+ }
53
+ }
54
+ exports.RemoteConfigurationResolver = RemoteConfigurationResolver;
55
+ //# sourceMappingURL=remote-configuration.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-configuration.resolver.js","sourceRoot":"","sources":["../../../src/configuration/resolvers/remote-configuration.resolver.ts"],"names":[],"mappings":";;;AAQA,MAAa,2BAA2B;IAMtC,YAA6B,QAA6C;QAA7C,aAAQ,GAAR,QAAQ,CAAqC;IAAG,CAAC;IAQ9E,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;IASO,KAAK,CAAC,kBAAkB,CAC9B,GAAW,EACX,EAAU;QAEV,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAC1D,OAAO;gBACL,EAAE;gBACF,GAAG;gBACH,KAAK,EAAE,MAAM;gBACb,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,mBAAmB,CACzB,MAA2B;QAE3B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CACtD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAC/D,CAAC;QACF,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,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;AA/FD,kEA+FC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itgorillaz/configify",
3
- "version": "3.2.0-alpha.0",
3
+ "version": "4.0.0-alpha.1",
4
4
  "description": "NestJS Config on Steroids",
5
5
  "author": "tommelo",
6
6
  "private": false,
@@ -39,6 +39,8 @@
39
39
  "devDependencies": {
40
40
  "@aws-sdk/client-secrets-manager": "^3.454.0",
41
41
  "@aws-sdk/client-ssm": "^3.461.0",
42
+ "@azure/identity": "^4.8.0",
43
+ "@azure/keyvault-secrets": "^4.9.0",
42
44
  "@bitwarden/sdk-napi": "^1.0.0",
43
45
  "@google-cloud/secret-manager": "^5.6.0",
44
46
  "@nestjs/cli": "^11.0.2",