envilder 0.7.11 → 0.8.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 +283 -37
  2. package/ROADMAP.md +10 -4
  3. package/docs/CHANGELOG.md +44 -0
  4. package/docs/SECURITY.md +26 -2
  5. package/lib/apps/cli/Cli.d.ts.map +1 -1
  6. package/lib/apps/cli/Cli.js +68 -11
  7. package/lib/apps/cli/Cli.js.map +1 -1
  8. package/lib/apps/cli/Startup.d.ts +3 -9
  9. package/lib/apps/cli/Startup.d.ts.map +1 -1
  10. package/lib/apps/cli/Startup.js +4 -54
  11. package/lib/apps/cli/Startup.js.map +1 -1
  12. package/lib/apps/gha/Gha.d.ts.map +1 -1
  13. package/lib/apps/gha/Gha.js +36 -19
  14. package/lib/apps/gha/Gha.js.map +1 -1
  15. package/lib/apps/gha/Startup.d.ts +3 -9
  16. package/lib/apps/gha/Startup.d.ts.map +1 -1
  17. package/lib/apps/gha/Startup.js +4 -54
  18. package/lib/apps/gha/Startup.js.map +1 -1
  19. package/lib/apps/shared/ContainerConfiguration.d.ts +7 -0
  20. package/lib/apps/shared/ContainerConfiguration.d.ts.map +1 -0
  21. package/lib/apps/shared/ContainerConfiguration.js +62 -0
  22. package/lib/apps/shared/ContainerConfiguration.js.map +1 -0
  23. package/lib/envilder/application/dispatch/DispatchActionCommand.d.ts +2 -2
  24. package/lib/envilder/application/dispatch/DispatchActionCommand.d.ts.map +1 -1
  25. package/lib/envilder/application/dispatch/DispatchActionCommand.js +6 -6
  26. package/lib/envilder/application/dispatch/DispatchActionCommand.js.map +1 -1
  27. package/lib/envilder/application/dispatch/DispatchActionCommandHandler.d.ts +3 -3
  28. package/lib/envilder/application/dispatch/DispatchActionCommandHandler.d.ts.map +1 -1
  29. package/lib/envilder/application/dispatch/DispatchActionCommandHandler.js +13 -13
  30. package/lib/envilder/application/dispatch/DispatchActionCommandHandler.js.map +1 -1
  31. package/lib/envilder/application/pullSecretsToEnv/PullSecretsToEnvCommand.d.ts +7 -0
  32. package/lib/envilder/application/pullSecretsToEnv/PullSecretsToEnvCommand.d.ts.map +1 -0
  33. package/lib/envilder/application/{pullSsmToEnv/PullSsmToEnvCommand.js → pullSecretsToEnv/PullSecretsToEnvCommand.js} +3 -3
  34. package/lib/envilder/application/pullSecretsToEnv/PullSecretsToEnvCommand.js.map +1 -0
  35. package/lib/envilder/application/{pullSsmToEnv/PullSsmToEnvCommandHandler.d.ts → pullSecretsToEnv/PullSecretsToEnvCommandHandler.d.ts} +7 -7
  36. package/lib/envilder/application/pullSecretsToEnv/PullSecretsToEnvCommandHandler.d.ts.map +1 -0
  37. package/lib/envilder/application/{pullSsmToEnv/PullSsmToEnvCommandHandler.js → pullSecretsToEnv/PullSecretsToEnvCommandHandler.js} +18 -18
  38. package/lib/envilder/application/pullSecretsToEnv/PullSecretsToEnvCommandHandler.js.map +1 -0
  39. package/lib/envilder/application/{pushEnvToSsm/PushEnvToSsmCommand.d.ts → pushEnvToSecrets/PushEnvToSecretsCommand.d.ts} +3 -3
  40. package/lib/envilder/application/pushEnvToSecrets/PushEnvToSecretsCommand.d.ts.map +1 -0
  41. package/lib/envilder/application/{pushEnvToSsm/PushEnvToSsmCommand.js → pushEnvToSecrets/PushEnvToSecretsCommand.js} +3 -3
  42. package/lib/envilder/application/pushEnvToSecrets/PushEnvToSecretsCommand.js.map +1 -0
  43. package/lib/envilder/application/pushEnvToSecrets/PushEnvToSecretsCommandHandler.d.ts +34 -0
  44. package/lib/envilder/application/pushEnvToSecrets/PushEnvToSecretsCommandHandler.d.ts.map +1 -0
  45. package/lib/envilder/application/{pushEnvToSsm/PushEnvToSsmCommandHandler.js → pushEnvToSecrets/PushEnvToSecretsCommandHandler.js} +36 -32
  46. package/lib/envilder/application/pushEnvToSecrets/PushEnvToSecretsCommandHandler.js.map +1 -0
  47. package/lib/envilder/application/pushSingle/PushSingleCommand.d.ts +3 -3
  48. package/lib/envilder/application/pushSingle/PushSingleCommand.d.ts.map +1 -1
  49. package/lib/envilder/application/pushSingle/PushSingleCommand.js +4 -4
  50. package/lib/envilder/application/pushSingle/PushSingleCommand.js.map +1 -1
  51. package/lib/envilder/application/pushSingle/PushSingleCommandHandler.d.ts +2 -2
  52. package/lib/envilder/application/pushSingle/PushSingleCommandHandler.d.ts.map +1 -1
  53. package/lib/envilder/application/pushSingle/PushSingleCommandHandler.js +6 -6
  54. package/lib/envilder/application/pushSingle/PushSingleCommandHandler.js.map +1 -1
  55. package/lib/envilder/domain/CliOptions.d.ts +3 -3
  56. package/lib/envilder/domain/CliOptions.d.ts.map +1 -1
  57. package/lib/envilder/domain/EnvironmentVariable.d.ts +5 -0
  58. package/lib/envilder/domain/EnvironmentVariable.d.ts.map +1 -1
  59. package/lib/envilder/domain/EnvironmentVariable.js +12 -3
  60. package/lib/envilder/domain/EnvironmentVariable.js.map +1 -1
  61. package/lib/envilder/domain/MapFileConfig.d.ts +10 -0
  62. package/lib/envilder/domain/MapFileConfig.d.ts.map +1 -0
  63. package/lib/envilder/domain/MapFileConfig.js +2 -0
  64. package/lib/envilder/domain/MapFileConfig.js.map +1 -0
  65. package/lib/envilder/domain/OperationMode.d.ts +2 -2
  66. package/lib/envilder/domain/OperationMode.d.ts.map +1 -1
  67. package/lib/envilder/domain/OperationMode.js +2 -2
  68. package/lib/envilder/domain/OperationMode.js.map +1 -1
  69. package/lib/envilder/domain/ports/IVariableStore.d.ts +2 -0
  70. package/lib/envilder/domain/ports/IVariableStore.d.ts.map +1 -1
  71. package/lib/envilder/infrastructure/aws/AwsSecretProviderFactory.d.ts +4 -0
  72. package/lib/envilder/infrastructure/aws/AwsSecretProviderFactory.d.ts.map +1 -0
  73. package/lib/envilder/infrastructure/aws/AwsSecretProviderFactory.js +10 -0
  74. package/lib/envilder/infrastructure/aws/AwsSecretProviderFactory.js.map +1 -0
  75. package/lib/envilder/infrastructure/aws/AwsSsmSecretProvider.d.ts.map +1 -1
  76. package/lib/envilder/infrastructure/aws/AwsSsmSecretProvider.js +3 -1
  77. package/lib/envilder/infrastructure/aws/AwsSsmSecretProvider.js.map +1 -1
  78. package/lib/envilder/infrastructure/azure/AzureKeyVaultSecretProvider.d.ts +17 -0
  79. package/lib/envilder/infrastructure/azure/AzureKeyVaultSecretProvider.d.ts.map +1 -0
  80. package/lib/envilder/infrastructure/azure/AzureKeyVaultSecretProvider.js +113 -0
  81. package/lib/envilder/infrastructure/azure/AzureKeyVaultSecretProvider.js.map +1 -0
  82. package/lib/envilder/infrastructure/azure/AzureSecretProviderFactory.d.ts +9 -0
  83. package/lib/envilder/infrastructure/azure/AzureSecretProviderFactory.d.ts.map +1 -0
  84. package/lib/envilder/infrastructure/azure/AzureSecretProviderFactory.js +24 -0
  85. package/lib/envilder/infrastructure/azure/AzureSecretProviderFactory.js.map +1 -0
  86. package/lib/envilder/infrastructure/azure/AzureVaultUrlValidator.d.ts +3 -0
  87. package/lib/envilder/infrastructure/azure/AzureVaultUrlValidator.d.ts.map +1 -0
  88. package/lib/envilder/infrastructure/azure/AzureVaultUrlValidator.js +28 -0
  89. package/lib/envilder/infrastructure/azure/AzureVaultUrlValidator.js.map +1 -0
  90. package/lib/envilder/infrastructure/variableStore/FileVariableStore.d.ts +4 -0
  91. package/lib/envilder/infrastructure/variableStore/FileVariableStore.d.ts.map +1 -1
  92. package/lib/envilder/infrastructure/variableStore/FileVariableStore.js +46 -0
  93. package/lib/envilder/infrastructure/variableStore/FileVariableStore.js.map +1 -1
  94. package/lib/envilder/types.d.ts +4 -4
  95. package/lib/envilder/types.js +2 -2
  96. package/lib/envilder/types.js.map +1 -1
  97. package/package.json +26 -8
  98. package/lib/envilder/application/pullSsmToEnv/PullSsmToEnvCommand.d.ts +0 -7
  99. package/lib/envilder/application/pullSsmToEnv/PullSsmToEnvCommand.d.ts.map +0 -1
  100. package/lib/envilder/application/pullSsmToEnv/PullSsmToEnvCommand.js.map +0 -1
  101. package/lib/envilder/application/pullSsmToEnv/PullSsmToEnvCommandHandler.d.ts.map +0 -1
  102. package/lib/envilder/application/pullSsmToEnv/PullSsmToEnvCommandHandler.js.map +0 -1
  103. package/lib/envilder/application/pushEnvToSsm/PushEnvToSsmCommand.d.ts.map +0 -1
  104. package/lib/envilder/application/pushEnvToSsm/PushEnvToSsmCommand.js.map +0 -1
  105. package/lib/envilder/application/pushEnvToSsm/PushEnvToSsmCommandHandler.d.ts +0 -34
  106. package/lib/envilder/application/pushEnvToSsm/PushEnvToSsmCommandHandler.d.ts.map +0 -1
  107. package/lib/envilder/application/pushEnvToSsm/PushEnvToSsmCommandHandler.js.map +0 -1
@@ -7,12 +7,25 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
+ var __rest = (this && this.__rest) || function (s, e) {
11
+ var t = {};
12
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
13
+ t[p] = s[p];
14
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
15
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
16
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
17
+ t[p[i]] = s[p[i]];
18
+ }
19
+ return t;
20
+ };
10
21
  import 'reflect-metadata';
11
22
  import { dirname, join } from 'node:path';
12
23
  import { fileURLToPath } from 'node:url';
13
24
  import { Command } from 'commander';
25
+ import pc from 'picocolors';
14
26
  import { DispatchActionCommand } from '../../envilder/application/dispatch/DispatchActionCommand.js';
15
27
  import { PackageVersionReader } from '../../envilder/infrastructure/package/PackageVersionReader.js';
28
+ import { readMapFileConfig } from '../../envilder/infrastructure/variableStore/FileVariableStore.js';
16
29
  import { TYPES } from '../../envilder/types.js';
17
30
  import { Startup } from './Startup.js';
18
31
  let serviceProvider;
@@ -27,27 +40,71 @@ export function main() {
27
40
  return __awaiter(this, void 0, void 0, function* () {
28
41
  const program = new Command();
29
42
  const version = yield readPackageVersion();
43
+ const banner = `
44
+ ${pc.green('███████╗')}${pc.cyan('███╗ ██╗')}${pc.magenta('██╗ ██╗')}${pc.yellow('██╗')}${pc.red('██╗ ')}${pc.blue('██████╗ ')}${pc.green('███████╗')}${pc.cyan('██████╗ ')}
45
+ ${pc.green('██╔════╝')}${pc.cyan('████╗ ██║')}${pc.magenta('██║ ██║')}${pc.yellow('██║')}${pc.red('██║ ')}${pc.blue('██╔══██╗')}${pc.green('██╔════╝')}${pc.cyan('██╔══██╗')}
46
+ ${pc.green('█████╗ ')}${pc.cyan('██╔██╗ ██║')}${pc.magenta('██║ ██║')}${pc.yellow('██║')}${pc.red('██║ ')}${pc.blue('██║ ██║')}${pc.green('█████╗ ')}${pc.cyan('██████╔╝')}
47
+ ${pc.green('██╔══╝ ')}${pc.cyan('██║╚██╗██║')}${pc.magenta('╚██╗ ██╔╝')}${pc.yellow('██║')}${pc.red('██║ ')}${pc.blue('██║ ██║')}${pc.green('██╔══╝ ')}${pc.cyan('██╔══██╗')}
48
+ ${pc.green('███████╗')}${pc.cyan('██║ ╚████║')}${pc.magenta(' ╚████╔╝ ')}${pc.yellow('██║')}${pc.red('███████╗')}${pc.blue('██████╔╝')}${pc.green('███████╗')}${pc.cyan('██║ ██║')}
49
+ ${pc.green('╚══════╝')}${pc.cyan('╚═╝ ╚═══╝')}${pc.magenta(' ╚═══╝ ')}${pc.yellow('╚═╝')}${pc.red('╚══════╝')}${pc.blue('╚═════╝ ')}${pc.green('╚══════╝')}${pc.cyan('╚═╝ ╚═╝')}
50
+ ${pc.dim('Your secrets, one command away')} ${pc.dim('aws & azure')}
51
+
52
+ ${pc.yellow('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')}
53
+ ${pc.green('WORLD 1-1')} ${pc.dim('— SELECT YOUR MISSION')}
54
+ ${pc.yellow('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')}
55
+
56
+ ${pc.green('>')} ${pc.bold('Generate a .env file')} ${pc.dim('(pull secrets from the cloud)')}
57
+ ${pc.cyan('envilder --map=param-map.json --envfile=.env')}
58
+
59
+ ${pc.magenta('>')} ${pc.bold('Sync .env back to cloud')} ${pc.dim('(push secrets up)')}
60
+ ${pc.cyan('envilder --push --map=param-map.json --envfile=.env')}
61
+
62
+ ${pc.red('>')} ${pc.bold('Push a single secret')}
63
+ ${pc.cyan('envilder --push --key=API_KEY --value=s3cret --secret-path=/my/path')}
64
+
65
+ ${pc.blue('>')} ${pc.bold('Use Azure Key Vault')}
66
+ ${pc.cyan('envilder --provider=azure --map=param-map.json --envfile=.env')}
67
+ `;
30
68
  program
31
69
  .name('envilder')
32
- .description('🌟 A CLI tool to manage environment variables with AWS SSM. What do you want to do today?\n\n' +
33
- '✨ Generate a .env file?\n' +
34
- ' Example: envilder --map=param-map.json --envfile=.env\n\n' +
35
- '🔄 Sync your local .env file back to AWS SSM?\n' +
36
- ' Example: envilder --push --map=param-map.json --envfile=.env\n\n' +
37
- '🎯 Create or update a single secret?\n' +
38
- ' Example: envilder --push --key=API_KEY --value=secret123 --ssm-path=/my/path\n')
70
+ .description(banner)
39
71
  .version(version)
40
72
  .option('--map <path>', 'Path to the JSON file with environment variable mapping (required for most commands)')
41
73
  .option('--envfile <path>', 'Path to the .env file to be generated or imported (required for most commands)')
42
74
  .option('--profile <name>', 'AWS CLI profile to use (optional)')
43
- .option('--push', 'Push local .env file back to AWS SSM')
75
+ .option('--provider <name>', 'Cloud provider to use: aws or azure (default: aws)')
76
+ .option('--vault-url <url>', 'Azure Key Vault URL (overrides $config.vaultUrl in map file)')
77
+ .option('--push', 'Push local .env file back to cloud provider')
44
78
  .option('--key <name>', 'Single environment variable name to push (only with --push)')
45
79
  .option('--value <value>', 'Value of the single environment variable to push (only with --push)')
46
- .option('--ssm-path <path>', 'SSM path for the single environment variable (only with --push)')
47
- .action((options) => __awaiter(this, void 0, void 0, function* () {
80
+ .option('--secret-path <path>', 'Secret path in your cloud provider for the single variable (only with --push)')
81
+ .option('--ssm-path <path>', '[DEPRECATED: use --secret-path] Alias for --secret-path')
82
+ .hook('preAction', (thisCommand) => {
83
+ const opts = thisCommand.opts();
84
+ if (opts.ssmPath) {
85
+ console.warn(pc.yellow('⚠️ --ssm-path is deprecated and will be removed in a future release. Use --secret-path instead.'));
86
+ if (!opts.secretPath) {
87
+ thisCommand.setOptionValue('secretPath', opts.ssmPath);
88
+ }
89
+ }
90
+ })
91
+ .action((_a) => __awaiter(this, void 0, void 0, function* () {
92
+ var { provider, vaultUrl } = _a, options = __rest(_a, ["provider", "vaultUrl"]);
93
+ const fileConfig = options.map
94
+ ? yield readMapFileConfig(options.map)
95
+ : {};
96
+ const config = Object.assign(Object.assign(Object.assign(Object.assign({}, fileConfig), (provider && { provider })), (vaultUrl && { vaultUrl })), (options.profile && { profile: options.profile }));
97
+ const infraOptions = {};
98
+ const extraHosts = process.env.ENVILDER_ALLOWED_VAULT_HOSTS;
99
+ if (extraHosts) {
100
+ infraOptions.allowedVaultHosts = extraHosts
101
+ .split(',')
102
+ .map((h) => h.trim());
103
+ infraOptions.disableChallengeResourceVerification = true;
104
+ }
48
105
  serviceProvider = Startup.build()
49
106
  .configureServices()
50
- .configureInfrastructure(options.profile)
107
+ .configureInfrastructure(config, infraOptions)
51
108
  .create();
52
109
  yield executeCommand(options);
53
110
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"Cli.js","sourceRoot":"","sources":["../../../src/apps/cli/Cli.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAC;AAGrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+DAA+D,CAAC;AACrG,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,IAAI,eAA0B,CAAC;AAE/B,SAAe,cAAc,CAAC,OAAmB;;QAC/C,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CACxC,KAAK,CAAC,4BAA4B,CACnC,CAAC;QAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CAAA;AAED,MAAM,UAAgB,IAAI;;QACxB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE3C,OAAO;aACJ,IAAI,CAAC,UAAU,CAAC;aAChB,WAAW,CACV,+FAA+F;YAC7F,2BAA2B;YAC3B,6DAA6D;YAC7D,iDAAiD;YACjD,oEAAoE;YACpE,wCAAwC;YACxC,kFAAkF,CACrF;aACA,OAAO,CAAC,OAAO,CAAC;aAChB,MAAM,CACL,cAAc,EACd,sFAAsF,CACvF;aACA,MAAM,CACL,kBAAkB,EAClB,gFAAgF,CACjF;aACA,MAAM,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;aAC/D,MAAM,CAAC,QAAQ,EAAE,sCAAsC,CAAC;aACxD,MAAM,CACL,cAAc,EACd,6DAA6D,CAC9D;aACA,MAAM,CACL,iBAAiB,EACjB,qEAAqE,CACtE;aACA,MAAM,CACL,mBAAmB,EACnB,iEAAiE,CAClE;aACA,MAAM,CAAC,CAAO,OAAmB,EAAE,EAAE;YACpC,eAAe,GAAG,OAAO,CAAC,KAAK,EAAE;iBAC9B,iBAAiB,EAAE;iBACnB,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC;iBACxC,MAAM,EAAE,CAAC;YAEZ,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAA,CAAC,CAAC;QAEL,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CAAA;AAED,SAAS,kBAAkB;IACzB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;IAEjE,OAAO,IAAI,oBAAoB,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"Cli.js","sourceRoot":"","sources":["../../../src/apps/cli/Cli.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,13 @@
1
1
  import { Container } from 'inversify';
2
+ import type { MapFileConfig } from '../../envilder/domain/MapFileConfig.js';
3
+ import { type InfrastructureOptions } from '../shared/ContainerConfiguration.js';
2
4
  export declare class Startup {
3
5
  private readonly container;
4
6
  constructor();
5
7
  static build(): Startup;
6
8
  configureServices(): this;
7
- /**
8
- * Configures infrastructure services for the application.
9
- * Optionally accepts an AWS profile to use for service configuration.
10
- * @param awsProfile - The AWS profile to use for configuring infrastructure services.
11
- * @returns The current instance for method chaining.
12
- */
13
- configureInfrastructure(awsProfile?: string): this;
9
+ configureInfrastructure(config?: MapFileConfig, options?: InfrastructureOptions): this;
14
10
  create(): Container;
15
11
  getServiceProvider(): Container;
16
- private configureInfrastructureServices;
17
- private configureApplicationServices;
18
12
  }
19
13
  //# sourceMappingURL=Startup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Startup.d.ts","sourceRoot":"","sources":["../../../src/apps/cli/Startup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAgBtC,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;;IAMtC,MAAM,CAAC,KAAK,IAAI,OAAO;IAIvB,iBAAiB,IAAI,IAAI;IAKzB;;;;;OAKG;IACH,uBAAuB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlD,MAAM,IAAI,SAAS;IAInB,kBAAkB,IAAI,SAAS;IAI/B,OAAO,CAAC,+BAA+B;IAsBvC,OAAO,CAAC,4BAA4B;CAqBrC"}
1
+ {"version":3,"file":"Startup.d.ts","sourceRoot":"","sources":["../../../src/apps/cli/Startup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,qCAAqC,CAAC;AAE7C,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;;IAMtC,MAAM,CAAC,KAAK,IAAI,OAAO;IAIvB,iBAAiB,IAAI,IAAI;IAKzB,uBAAuB,CACrB,MAAM,CAAC,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI;IAKP,MAAM,IAAI,SAAS;IAInB,kBAAkB,IAAI,SAAS;CAGhC"}
@@ -1,14 +1,5 @@
1
- import { SSM } from '@aws-sdk/client-ssm';
2
- import { fromIni } from '@aws-sdk/credential-providers';
3
1
  import { Container } from 'inversify';
4
- import { DispatchActionCommandHandler } from '../../envilder/application/dispatch/DispatchActionCommandHandler.js';
5
- import { PullSsmToEnvCommandHandler } from '../../envilder/application/pullSsmToEnv/PullSsmToEnvCommandHandler.js';
6
- import { PushEnvToSsmCommandHandler } from '../../envilder/application/pushEnvToSsm/PushEnvToSsmCommandHandler.js';
7
- import { PushSingleCommandHandler } from '../../envilder/application/pushSingle/PushSingleCommandHandler.js';
8
- import { AwsSsmSecretProvider } from '../../envilder/infrastructure/aws/AwsSsmSecretProvider.js';
9
- import { ConsoleLogger } from '../../envilder/infrastructure/logger/ConsoleLogger.js';
10
- import { FileVariableStore } from '../../envilder/infrastructure/variableStore/FileVariableStore.js';
11
- import { TYPES } from '../../envilder/types.js';
2
+ import { configureApplicationServices, configureInfrastructureServices, } from '../shared/ContainerConfiguration.js';
12
3
  export class Startup {
13
4
  constructor() {
14
5
  this.container = new Container();
@@ -17,17 +8,11 @@ export class Startup {
17
8
  return new Startup();
18
9
  }
19
10
  configureServices() {
20
- this.configureApplicationServices();
11
+ configureApplicationServices(this.container);
21
12
  return this;
22
13
  }
23
- /**
24
- * Configures infrastructure services for the application.
25
- * Optionally accepts an AWS profile to use for service configuration.
26
- * @param awsProfile - The AWS profile to use for configuring infrastructure services.
27
- * @returns The current instance for method chaining.
28
- */
29
- configureInfrastructure(awsProfile) {
30
- this.configureInfrastructureServices(awsProfile);
14
+ configureInfrastructure(config, options) {
15
+ configureInfrastructureServices(this.container, config, options);
31
16
  return this;
32
17
  }
33
18
  create() {
@@ -36,40 +21,5 @@ export class Startup {
36
21
  getServiceProvider() {
37
22
  return this.container;
38
23
  }
39
- configureInfrastructureServices(awsProfile) {
40
- this.container
41
- .bind(TYPES.ILogger)
42
- .to(ConsoleLogger)
43
- .inSingletonScope();
44
- this.container
45
- .bind(TYPES.IVariableStore)
46
- .to(FileVariableStore)
47
- .inSingletonScope();
48
- const ssm = awsProfile
49
- ? new SSM({ credentials: fromIni({ profile: awsProfile }) })
50
- : new SSM();
51
- const secretProvider = new AwsSsmSecretProvider(ssm);
52
- this.container
53
- .bind(TYPES.ISecretProvider)
54
- .toConstantValue(secretProvider);
55
- }
56
- configureApplicationServices() {
57
- this.container
58
- .bind(TYPES.PullSsmToEnvCommandHandler)
59
- .to(PullSsmToEnvCommandHandler)
60
- .inTransientScope();
61
- this.container
62
- .bind(TYPES.PushEnvToSsmCommandHandler)
63
- .to(PushEnvToSsmCommandHandler)
64
- .inTransientScope();
65
- this.container
66
- .bind(TYPES.PushSingleCommandHandler)
67
- .to(PushSingleCommandHandler)
68
- .inTransientScope();
69
- this.container
70
- .bind(TYPES.DispatchActionCommandHandler)
71
- .to(DispatchActionCommandHandler)
72
- .inTransientScope();
73
- }
74
24
  }
75
25
  //# sourceMappingURL=Startup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Startup.js","sourceRoot":"","sources":["../../../src/apps/cli/Startup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,4BAA4B,EAAE,MAAM,qEAAqE,CAAC;AACnH,OAAO,EAAE,0BAA0B,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,EAAE,0BAA0B,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,EAAE,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAM7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,2DAA2D,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,uDAAuD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;AACrG,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,MAAM,OAAO,OAAO;IAGlB;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,uBAAuB,CAAC,UAAmB;QACzC,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEO,+BAA+B,CAAC,UAAmB;QACzD,IAAI,CAAC,SAAS;aACX,IAAI,CAAU,KAAK,CAAC,OAAO,CAAC;aAC5B,EAAE,CAAC,aAAa,CAAC;aACjB,gBAAgB,EAAE,CAAC;QAEtB,IAAI,CAAC,SAAS;aACX,IAAI,CAAiB,KAAK,CAAC,cAAc,CAAC;aAC1C,EAAE,CAAC,iBAAiB,CAAC;aACrB,gBAAgB,EAAE,CAAC;QAEtB,MAAM,GAAG,GAAG,UAAU;YACpB,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;YAC5D,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAEd,MAAM,cAAc,GAAG,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAErD,IAAI,CAAC,SAAS;aACX,IAAI,CAAkB,KAAK,CAAC,eAAe,CAAC;aAC5C,eAAe,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;IAEO,4BAA4B;QAClC,IAAI,CAAC,SAAS;aACX,IAAI,CAA6B,KAAK,CAAC,0BAA0B,CAAC;aAClE,EAAE,CAAC,0BAA0B,CAAC;aAC9B,gBAAgB,EAAE,CAAC;QAEtB,IAAI,CAAC,SAAS;aACX,IAAI,CAA6B,KAAK,CAAC,0BAA0B,CAAC;aAClE,EAAE,CAAC,0BAA0B,CAAC;aAC9B,gBAAgB,EAAE,CAAC;QAEtB,IAAI,CAAC,SAAS;aACX,IAAI,CAA2B,KAAK,CAAC,wBAAwB,CAAC;aAC9D,EAAE,CAAC,wBAAwB,CAAC;aAC5B,gBAAgB,EAAE,CAAC;QAEtB,IAAI,CAAC,SAAS;aACX,IAAI,CAA+B,KAAK,CAAC,4BAA4B,CAAC;aACtE,EAAE,CAAC,4BAA4B,CAAC;aAChC,gBAAgB,EAAE,CAAC;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"Startup.js","sourceRoot":"","sources":["../../../src/apps/cli/Startup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,GAEhC,MAAM,qCAAqC,CAAC;AAE7C,MAAM,OAAO,OAAO;IAGlB;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,iBAAiB;QACf,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB,CACrB,MAAsB,EACtB,OAA+B;QAE/B,+BAA+B,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"Gha.d.ts","sourceRoot":"","sources":["../../../src/apps/gha/Gha.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAoC1B,wBAAsB,IAAI,kBAyBzB"}
1
+ {"version":3,"file":"Gha.d.ts","sourceRoot":"","sources":["../../../src/apps/gha/Gha.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAkD1B,wBAAsB,IAAI,kBA6CzB"}
@@ -9,9 +9,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import 'reflect-metadata';
11
11
  import { DispatchActionCommand } from '../../envilder/application/dispatch/DispatchActionCommand.js';
12
+ import { ConsoleLogger } from '../../envilder/infrastructure/logger/ConsoleLogger.js';
13
+ import { readMapFileConfig } from '../../envilder/infrastructure/variableStore/FileVariableStore.js';
12
14
  import { TYPES } from '../../envilder/types.js';
13
15
  import { Startup } from './Startup.js';
14
- let serviceProvider;
15
16
  /**
16
17
  * Reads GitHub Actions inputs from environment variables.
17
18
  * GitHub Actions passes inputs as INPUT_<NAME> environment variables.
@@ -19,14 +20,20 @@ let serviceProvider;
19
20
  function readInputs() {
20
21
  const mapFile = process.env.INPUT_MAP_FILE;
21
22
  const envFile = process.env.INPUT_ENV_FILE;
23
+ const provider = process.env.INPUT_PROVIDER;
24
+ const vaultUrl = process.env.INPUT_VAULT_URL;
22
25
  return {
23
- map: mapFile,
24
- envfile: envFile,
25
- // GitHub Action only supports pull mode
26
- push: false,
26
+ options: {
27
+ map: mapFile,
28
+ envfile: envFile,
29
+ // GitHub Action only supports pull mode
30
+ push: false,
31
+ },
32
+ provider: provider || undefined,
33
+ vaultUrl: vaultUrl || undefined,
27
34
  };
28
35
  }
29
- function executeCommand(options) {
36
+ function executeCommand(serviceProvider, options) {
30
37
  return __awaiter(this, void 0, void 0, function* () {
31
38
  const commandHandler = serviceProvider.get(TYPES.DispatchActionCommandHandler);
32
39
  const command = DispatchActionCommand.fromCliOptions(options);
@@ -35,28 +42,38 @@ function executeCommand(options) {
35
42
  }
36
43
  export function main() {
37
44
  return __awaiter(this, void 0, void 0, function* () {
38
- const logger = serviceProvider === null || serviceProvider === void 0 ? void 0 : serviceProvider.get(TYPES.ILogger);
45
+ const { options, provider, vaultUrl } = readInputs();
46
+ let serviceProvider;
47
+ let logger = new ConsoleLogger();
48
+ try {
49
+ const fileConfig = options.map ? yield readMapFileConfig(options.map) : {};
50
+ const config = Object.assign(Object.assign(Object.assign({}, fileConfig), (provider && { provider })), (vaultUrl && { vaultUrl }));
51
+ const startup = Startup.build();
52
+ startup.configureServices().configureInfrastructure(config);
53
+ serviceProvider = startup.create();
54
+ logger = serviceProvider.get(TYPES.ILogger);
55
+ }
56
+ catch (error) {
57
+ const message = error instanceof Error ? error.message : String(error);
58
+ logger.error(`🚨 Failed to initialize: ${message}`);
59
+ throw error;
60
+ }
39
61
  try {
40
- const options = readInputs();
41
62
  // Validate required inputs
42
63
  if (!options.map || !options.envfile) {
43
64
  throw new Error('🚨 Missing required inputs! Please provide map-file and env-file.');
44
65
  }
45
- logger === null || logger === void 0 ? void 0 : logger.info('🔑 Envilder GitHub Action - Starting secret pull...');
46
- logger === null || logger === void 0 ? void 0 : logger.info(`📋 Map file: ${options.map}`);
47
- logger === null || logger === void 0 ? void 0 : logger.info(`📄 Env file: ${options.envfile}`);
48
- yield executeCommand(options);
49
- logger === null || logger === void 0 ? void 0 : logger.info('✅ Secrets pulled successfully!');
66
+ logger.info('🔑 Envilder GitHub Action - Starting secret pull...');
67
+ logger.info(`📋 Map file: ${options.map}`);
68
+ logger.info(`📄 Env file: ${options.envfile}`);
69
+ yield executeCommand(serviceProvider, options);
70
+ logger.info('✅ Secrets pulled successfully!');
50
71
  }
51
72
  catch (error) {
52
- logger === null || logger === void 0 ? void 0 : logger.error('🚨 Uh-oh! Looks like Mario fell into the wrong pipe! 🍄💥');
53
- logger === null || logger === void 0 ? void 0 : logger.error(error instanceof Error ? error.message : String(error));
73
+ logger.error('🚨 Uh-oh! Looks like Mario fell into the wrong pipe! 🍄💥');
74
+ logger.error(error instanceof Error ? error.message : String(error));
54
75
  throw error;
55
76
  }
56
77
  });
57
78
  }
58
- // Initialize the service provider
59
- const startup = Startup.build();
60
- startup.configureServices().configureInfrastructure();
61
- serviceProvider = startup.create();
62
79
  //# sourceMappingURL=Gha.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Gha.js","sourceRoot":"","sources":["../../../src/apps/gha/Gha.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAC;AAIrG,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,IAAI,eAA0B,CAAC;AAE/B;;;GAGG;AACH,SAAS,UAAU;IACjB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAE3C,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,OAAO,EAAE,OAAO;QAChB,wCAAwC;QACxC,IAAI,EAAE,KAAK;KACZ,CAAC;AACJ,CAAC;AAED,SAAe,cAAc,CAAC,OAAmB;;QAC/C,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CACxC,KAAK,CAAC,4BAA4B,CACnC,CAAC;QAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CAAA;AAED,MAAM,UAAgB,IAAI;;QACxB,MAAM,MAAM,GAAG,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,GAAG,CAAU,KAAK,CAAC,OAAO,CAAC,CAAC;QAE5D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAE7B,2BAA2B;YAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;YACJ,CAAC;YAED,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACpE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,gBAAgB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5C,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,gBAAgB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAEhD,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAE9B,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC3E,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CAAA;AAED,kCAAkC;AAClC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AAChC,OAAO,CAAC,iBAAiB,EAAE,CAAC,uBAAuB,EAAE,CAAC;AACtD,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"Gha.js","sourceRoot":"","sources":["../../../src/apps/gha/Gha.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,13 @@
1
1
  import { Container } from 'inversify';
2
+ import type { MapFileConfig } from '../../envilder/domain/MapFileConfig.js';
3
+ import { type InfrastructureOptions } from '../shared/ContainerConfiguration.js';
2
4
  export declare class Startup {
3
5
  private readonly container;
4
6
  constructor();
5
7
  static build(): Startup;
6
8
  configureServices(): this;
7
- /**
8
- * Configures infrastructure services for the application.
9
- * Optionally accepts an AWS profile to use for service configuration.
10
- * @param awsProfile - The AWS profile to use for configuring infrastructure services.
11
- * @returns The current instance for method chaining.
12
- */
13
- configureInfrastructure(awsProfile?: string): this;
9
+ configureInfrastructure(config?: MapFileConfig, options?: InfrastructureOptions): this;
14
10
  create(): Container;
15
11
  getServiceProvider(): Container;
16
- private configureInfrastructureServices;
17
- private configureApplicationServices;
18
12
  }
19
13
  //# sourceMappingURL=Startup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Startup.d.ts","sourceRoot":"","sources":["../../../src/apps/gha/Startup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAgBtC,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;;IAMtC,MAAM,CAAC,KAAK,IAAI,OAAO;IAIvB,iBAAiB,IAAI,IAAI;IAKzB;;;;;OAKG;IACH,uBAAuB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlD,MAAM,IAAI,SAAS;IAInB,kBAAkB,IAAI,SAAS;IAI/B,OAAO,CAAC,+BAA+B;IAsBvC,OAAO,CAAC,4BAA4B;CAqBrC"}
1
+ {"version":3,"file":"Startup.d.ts","sourceRoot":"","sources":["../../../src/apps/gha/Startup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,qCAAqC,CAAC;AAE7C,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;;IAMtC,MAAM,CAAC,KAAK,IAAI,OAAO;IAIvB,iBAAiB,IAAI,IAAI;IAKzB,uBAAuB,CACrB,MAAM,CAAC,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI;IAKP,MAAM,IAAI,SAAS;IAInB,kBAAkB,IAAI,SAAS;CAGhC"}
@@ -1,14 +1,5 @@
1
- import { SSM } from '@aws-sdk/client-ssm';
2
- import { fromIni } from '@aws-sdk/credential-providers';
3
1
  import { Container } from 'inversify';
4
- import { DispatchActionCommandHandler } from '../../envilder/application/dispatch/DispatchActionCommandHandler.js';
5
- import { PullSsmToEnvCommandHandler } from '../../envilder/application/pullSsmToEnv/PullSsmToEnvCommandHandler.js';
6
- import { PushEnvToSsmCommandHandler } from '../../envilder/application/pushEnvToSsm/PushEnvToSsmCommandHandler.js';
7
- import { PushSingleCommandHandler } from '../../envilder/application/pushSingle/PushSingleCommandHandler.js';
8
- import { AwsSsmSecretProvider } from '../../envilder/infrastructure/aws/AwsSsmSecretProvider.js';
9
- import { ConsoleLogger } from '../../envilder/infrastructure/logger/ConsoleLogger.js';
10
- import { FileVariableStore } from '../../envilder/infrastructure/variableStore/FileVariableStore.js';
11
- import { TYPES } from '../../envilder/types.js';
2
+ import { configureApplicationServices, configureInfrastructureServices, } from '../shared/ContainerConfiguration.js';
12
3
  export class Startup {
13
4
  constructor() {
14
5
  this.container = new Container();
@@ -17,17 +8,11 @@ export class Startup {
17
8
  return new Startup();
18
9
  }
19
10
  configureServices() {
20
- this.configureApplicationServices();
11
+ configureApplicationServices(this.container);
21
12
  return this;
22
13
  }
23
- /**
24
- * Configures infrastructure services for the application.
25
- * Optionally accepts an AWS profile to use for service configuration.
26
- * @param awsProfile - The AWS profile to use for configuring infrastructure services.
27
- * @returns The current instance for method chaining.
28
- */
29
- configureInfrastructure(awsProfile) {
30
- this.configureInfrastructureServices(awsProfile);
14
+ configureInfrastructure(config, options) {
15
+ configureInfrastructureServices(this.container, config, options);
31
16
  return this;
32
17
  }
33
18
  create() {
@@ -36,40 +21,5 @@ export class Startup {
36
21
  getServiceProvider() {
37
22
  return this.container;
38
23
  }
39
- configureInfrastructureServices(awsProfile) {
40
- this.container
41
- .bind(TYPES.ILogger)
42
- .to(ConsoleLogger)
43
- .inSingletonScope();
44
- this.container
45
- .bind(TYPES.IVariableStore)
46
- .to(FileVariableStore)
47
- .inSingletonScope();
48
- const ssm = awsProfile
49
- ? new SSM({ credentials: fromIni({ profile: awsProfile }) })
50
- : new SSM();
51
- const secretProvider = new AwsSsmSecretProvider(ssm);
52
- this.container
53
- .bind(TYPES.ISecretProvider)
54
- .toConstantValue(secretProvider);
55
- }
56
- configureApplicationServices() {
57
- this.container
58
- .bind(TYPES.PullSsmToEnvCommandHandler)
59
- .to(PullSsmToEnvCommandHandler)
60
- .inTransientScope();
61
- this.container
62
- .bind(TYPES.PushEnvToSsmCommandHandler)
63
- .to(PushEnvToSsmCommandHandler)
64
- .inTransientScope();
65
- this.container
66
- .bind(TYPES.PushSingleCommandHandler)
67
- .to(PushSingleCommandHandler)
68
- .inTransientScope();
69
- this.container
70
- .bind(TYPES.DispatchActionCommandHandler)
71
- .to(DispatchActionCommandHandler)
72
- .inTransientScope();
73
- }
74
24
  }
75
25
  //# sourceMappingURL=Startup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Startup.js","sourceRoot":"","sources":["../../../src/apps/gha/Startup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,4BAA4B,EAAE,MAAM,qEAAqE,CAAC;AACnH,OAAO,EAAE,0BAA0B,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,EAAE,0BAA0B,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,EAAE,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAM7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,2DAA2D,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,uDAAuD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;AACrG,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,MAAM,OAAO,OAAO;IAGlB;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,uBAAuB,CAAC,UAAmB;QACzC,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEO,+BAA+B,CAAC,UAAmB;QACzD,IAAI,CAAC,SAAS;aACX,IAAI,CAAU,KAAK,CAAC,OAAO,CAAC;aAC5B,EAAE,CAAC,aAAa,CAAC;aACjB,gBAAgB,EAAE,CAAC;QAEtB,IAAI,CAAC,SAAS;aACX,IAAI,CAAiB,KAAK,CAAC,cAAc,CAAC;aAC1C,EAAE,CAAC,iBAAiB,CAAC;aACrB,gBAAgB,EAAE,CAAC;QAEtB,MAAM,GAAG,GAAG,UAAU;YACpB,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;YAC5D,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAEd,MAAM,cAAc,GAAG,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAErD,IAAI,CAAC,SAAS;aACX,IAAI,CAAkB,KAAK,CAAC,eAAe,CAAC;aAC5C,eAAe,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;IAEO,4BAA4B;QAClC,IAAI,CAAC,SAAS;aACX,IAAI,CAA6B,KAAK,CAAC,0BAA0B,CAAC;aAClE,EAAE,CAAC,0BAA0B,CAAC;aAC9B,gBAAgB,EAAE,CAAC;QAEtB,IAAI,CAAC,SAAS;aACX,IAAI,CAA6B,KAAK,CAAC,0BAA0B,CAAC;aAClE,EAAE,CAAC,0BAA0B,CAAC;aAC9B,gBAAgB,EAAE,CAAC;QAEtB,IAAI,CAAC,SAAS;aACX,IAAI,CAA2B,KAAK,CAAC,wBAAwB,CAAC;aAC9D,EAAE,CAAC,wBAAwB,CAAC;aAC5B,gBAAgB,EAAE,CAAC;QAEtB,IAAI,CAAC,SAAS;aACX,IAAI,CAA+B,KAAK,CAAC,4BAA4B,CAAC;aACtE,EAAE,CAAC,4BAA4B,CAAC;aAChC,gBAAgB,EAAE,CAAC;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"Startup.js","sourceRoot":"","sources":["../../../src/apps/gha/Startup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,GAEhC,MAAM,qCAAqC,CAAC;AAE7C,MAAM,OAAO,OAAO;IAGlB;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,iBAAiB;QACf,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB,CACrB,MAAsB,EACtB,OAA+B;QAE/B,+BAA+B,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { Container } from 'inversify';
2
+ import type { MapFileConfig } from '../../envilder/domain/MapFileConfig.js';
3
+ import { type AzureProviderOptions } from '../../envilder/infrastructure/azure/AzureSecretProviderFactory.js';
4
+ export type InfrastructureOptions = AzureProviderOptions;
5
+ export declare function configureInfrastructureServices(container: Container, config?: MapFileConfig, options?: InfrastructureOptions): void;
6
+ export declare function configureApplicationServices(container: Container): void;
7
+ //# sourceMappingURL=ContainerConfiguration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContainerConfiguration.d.ts","sourceRoot":"","sources":["../../../src/apps/shared/ContainerConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAO3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAK5E,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,mEAAmE,CAAC;AAK3E,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAYzD,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,SAAS,EACpB,MAAM,GAAE,aAAkB,EAC1B,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAoCN;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAoBvE"}
@@ -0,0 +1,62 @@
1
+ import { DispatchActionCommandHandler } from '../../envilder/application/dispatch/DispatchActionCommandHandler.js';
2
+ import { PullSecretsToEnvCommandHandler } from '../../envilder/application/pullSecretsToEnv/PullSecretsToEnvCommandHandler.js';
3
+ import { PushEnvToSecretsCommandHandler } from '../../envilder/application/pushEnvToSecrets/PushEnvToSecretsCommandHandler.js';
4
+ import { PushSingleCommandHandler } from '../../envilder/application/pushSingle/PushSingleCommandHandler.js';
5
+ import { InvalidArgumentError } from '../../envilder/domain/errors/DomainErrors.js';
6
+ import { createAwsSecretProvider } from '../../envilder/infrastructure/aws/AwsSecretProviderFactory.js';
7
+ import { createAzureSecretProvider, } from '../../envilder/infrastructure/azure/AzureSecretProviderFactory.js';
8
+ import { ConsoleLogger } from '../../envilder/infrastructure/logger/ConsoleLogger.js';
9
+ import { FileVariableStore } from '../../envilder/infrastructure/variableStore/FileVariableStore.js';
10
+ import { TYPES } from '../../envilder/types.js';
11
+ const providerFactories = {
12
+ aws: (config) => createAwsSecretProvider(config),
13
+ azure: (config, options) => createAzureSecretProvider(config, options),
14
+ };
15
+ export function configureInfrastructureServices(container, config = {}, options = {}) {
16
+ var _a;
17
+ if (!container.isBound(TYPES.ILogger)) {
18
+ container.bind(TYPES.ILogger).to(ConsoleLogger).inSingletonScope();
19
+ }
20
+ if (!container.isBound(TYPES.IVariableStore)) {
21
+ container
22
+ .bind(TYPES.IVariableStore)
23
+ .to(FileVariableStore)
24
+ .inSingletonScope();
25
+ }
26
+ const selectedProvider = ((_a = config.provider) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || 'aws';
27
+ if (config.profile && selectedProvider !== 'aws') {
28
+ const logger = container.get(TYPES.ILogger);
29
+ logger.warn(`--profile is only supported with the aws provider` +
30
+ ` and will be ignored` +
31
+ ` (current provider: ${selectedProvider}).`);
32
+ }
33
+ const factory = providerFactories[selectedProvider];
34
+ if (!factory) {
35
+ throw new InvalidArgumentError(`Unsupported provider: ${config.provider}.` +
36
+ ` Supported providers:` +
37
+ ` ${Object.keys(providerFactories).join(', ')}`);
38
+ }
39
+ const secretProvider = factory(config, options);
40
+ container
41
+ .bind(TYPES.ISecretProvider)
42
+ .toConstantValue(secretProvider);
43
+ }
44
+ export function configureApplicationServices(container) {
45
+ container
46
+ .bind(TYPES.PullSecretsToEnvCommandHandler)
47
+ .to(PullSecretsToEnvCommandHandler)
48
+ .inTransientScope();
49
+ container
50
+ .bind(TYPES.PushEnvToSecretsCommandHandler)
51
+ .to(PushEnvToSecretsCommandHandler)
52
+ .inTransientScope();
53
+ container
54
+ .bind(TYPES.PushSingleCommandHandler)
55
+ .to(PushSingleCommandHandler)
56
+ .inTransientScope();
57
+ container
58
+ .bind(TYPES.DispatchActionCommandHandler)
59
+ .to(DispatchActionCommandHandler)
60
+ .inTransientScope();
61
+ }
62
+ //# sourceMappingURL=ContainerConfiguration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContainerConfiguration.js","sourceRoot":"","sources":["../../../src/apps/shared/ContainerConfiguration.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,10 @@ export declare class DispatchActionCommand {
5
5
  readonly envfile?: string | undefined;
6
6
  readonly key?: string | undefined;
7
7
  readonly value?: string | undefined;
8
- readonly ssmPath?: string | undefined;
8
+ readonly secretPath?: string | undefined;
9
9
  readonly profile?: string | undefined;
10
10
  readonly mode: OperationMode;
11
- constructor(map?: string | undefined, envfile?: string | undefined, key?: string | undefined, value?: string | undefined, ssmPath?: string | undefined, profile?: string | undefined, mode?: OperationMode);
11
+ constructor(map?: string | undefined, envfile?: string | undefined, key?: string | undefined, value?: string | undefined, secretPath?: string | undefined, profile?: string | undefined, mode?: OperationMode);
12
12
  static fromCliOptions(options: CliOptions): DispatchActionCommand;
13
13
  private static determineOperationMode;
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DispatchActionCommand.d.ts","sourceRoot":"","sources":["../../../../src/envilder/application/dispatch/DispatchActionCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,qBAAa,qBAAqB;aAEd,GAAG,CAAC,EAAE,MAAM;aACZ,OAAO,CAAC,EAAE,MAAM;aAChB,GAAG,CAAC,EAAE,MAAM;aACZ,KAAK,CAAC,EAAE,MAAM;aACd,OAAO,CAAC,EAAE,MAAM;aAChB,OAAO,CAAC,EAAE,MAAM;aAChB,IAAI,EAAE,aAAa;gBANnB,GAAG,CAAC,EAAE,MAAM,YAAA,EACZ,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,GAAG,CAAC,EAAE,MAAM,YAAA,EACZ,KAAK,CAAC,EAAE,MAAM,YAAA,EACd,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,IAAI,GAAE,aAA6C;IAGrE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,qBAAqB;IAajE,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAWtC"}
1
+ {"version":3,"file":"DispatchActionCommand.d.ts","sourceRoot":"","sources":["../../../../src/envilder/application/dispatch/DispatchActionCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,qBAAa,qBAAqB;aAEd,GAAG,CAAC,EAAE,MAAM;aACZ,OAAO,CAAC,EAAE,MAAM;aAChB,GAAG,CAAC,EAAE,MAAM;aACZ,KAAK,CAAC,EAAE,MAAM;aACd,UAAU,CAAC,EAAE,MAAM;aACnB,OAAO,CAAC,EAAE,MAAM;aAChB,IAAI,EAAE,aAAa;gBANnB,GAAG,CAAC,EAAE,MAAM,YAAA,EACZ,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,GAAG,CAAC,EAAE,MAAM,YAAA,EACZ,KAAK,CAAC,EAAE,MAAM,YAAA,EACd,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,IAAI,GAAE,aAAiD;IAGzE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,qBAAqB;IAajE,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAWtC"}
@@ -1,26 +1,26 @@
1
1
  import { OperationMode } from '../../domain/OperationMode.js';
2
2
  export class DispatchActionCommand {
3
- constructor(map, envfile, key, value, ssmPath, profile, mode = OperationMode.PULL_SSM_TO_ENV) {
3
+ constructor(map, envfile, key, value, secretPath, profile, mode = OperationMode.PULL_SECRETS_TO_ENV) {
4
4
  this.map = map;
5
5
  this.envfile = envfile;
6
6
  this.key = key;
7
7
  this.value = value;
8
- this.ssmPath = ssmPath;
8
+ this.secretPath = secretPath;
9
9
  this.profile = profile;
10
10
  this.mode = mode;
11
11
  }
12
12
  static fromCliOptions(options) {
13
13
  const mode = DispatchActionCommand.determineOperationMode(options);
14
- return new DispatchActionCommand(options.map, options.envfile, options.key, options.value, options.ssmPath, options.profile, mode);
14
+ return new DispatchActionCommand(options.map, options.envfile, options.key, options.value, options.secretPath, options.profile, mode);
15
15
  }
16
16
  static determineOperationMode(options) {
17
- if (options.key && options.value && options.ssmPath) {
17
+ if (options.key && options.value && options.secretPath) {
18
18
  return OperationMode.PUSH_SINGLE;
19
19
  }
20
20
  if (options.push) {
21
- return OperationMode.PUSH_ENV_TO_SSM;
21
+ return OperationMode.PUSH_ENV_TO_SECRETS;
22
22
  }
23
- return OperationMode.PULL_SSM_TO_ENV;
23
+ return OperationMode.PULL_SECRETS_TO_ENV;
24
24
  }
25
25
  }
26
26
  //# sourceMappingURL=DispatchActionCommand.js.map