envilder 0.7.12 → 0.9.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 (127) hide show
  1. package/README.md +284 -37
  2. package/ROADMAP.md +81 -16
  3. package/docs/CHANGELOG.md +43 -101
  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/lib/iac/bin/main.d.ts +28 -0
  98. package/lib/iac/bin/main.d.ts.map +1 -0
  99. package/lib/iac/bin/main.js +201 -0
  100. package/lib/iac/bin/main.js.map +1 -0
  101. package/lib/iac/lib/core/types.d.ts +5 -0
  102. package/lib/iac/lib/core/types.d.ts.map +1 -0
  103. package/lib/iac/lib/core/types.js +9 -0
  104. package/lib/iac/lib/core/types.js.map +1 -0
  105. package/lib/iac/lib/stacks/customStack.d.ts +23 -0
  106. package/lib/iac/lib/stacks/customStack.d.ts.map +1 -0
  107. package/lib/iac/lib/stacks/customStack.js +34 -0
  108. package/lib/iac/lib/stacks/customStack.js.map +1 -0
  109. package/lib/iac/lib/stacks/staticWebsiteStack.d.ts +10 -0
  110. package/lib/iac/lib/stacks/staticWebsiteStack.d.ts.map +1 -0
  111. package/lib/iac/lib/stacks/staticWebsiteStack.js +163 -0
  112. package/lib/iac/lib/stacks/staticWebsiteStack.js.map +1 -0
  113. package/lib/iac/lib/stacks/utils.d.ts +6 -0
  114. package/lib/iac/lib/stacks/utils.d.ts.map +1 -0
  115. package/lib/iac/lib/stacks/utils.js +18 -0
  116. package/lib/iac/lib/stacks/utils.js.map +1 -0
  117. package/package.json +33 -23
  118. package/lib/envilder/application/pullSsmToEnv/PullSsmToEnvCommand.d.ts +0 -7
  119. package/lib/envilder/application/pullSsmToEnv/PullSsmToEnvCommand.d.ts.map +0 -1
  120. package/lib/envilder/application/pullSsmToEnv/PullSsmToEnvCommand.js.map +0 -1
  121. package/lib/envilder/application/pullSsmToEnv/PullSsmToEnvCommandHandler.d.ts.map +0 -1
  122. package/lib/envilder/application/pullSsmToEnv/PullSsmToEnvCommandHandler.js.map +0 -1
  123. package/lib/envilder/application/pushEnvToSsm/PushEnvToSsmCommand.d.ts.map +0 -1
  124. package/lib/envilder/application/pushEnvToSsm/PushEnvToSsmCommand.js.map +0 -1
  125. package/lib/envilder/application/pushEnvToSsm/PushEnvToSsmCommandHandler.d.ts +0 -34
  126. package/lib/envilder/application/pushEnvToSsm/PushEnvToSsmCommandHandler.d.ts.map +0 -1
  127. package/lib/envilder/application/pushEnvToSsm/PushEnvToSsmCommandHandler.js.map +0 -1
@@ -0,0 +1,113 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
19
+ import { injectable } from 'inversify';
20
+ import { EnvironmentVariable } from '../../domain/EnvironmentVariable.js';
21
+ import { InvalidArgumentError, SecretOperationError, } from '../../domain/errors/DomainErrors.js';
22
+ let AzureKeyVaultSecretProvider = class AzureKeyVaultSecretProvider {
23
+ constructor(client) {
24
+ this.normalizedNameRegistry = new Map();
25
+ this.client = client;
26
+ }
27
+ getSecret(name) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ var _a;
30
+ const secretName = this.resolveSecretName(name);
31
+ try {
32
+ const secret = yield this.client.getSecret(secretName);
33
+ return (_a = secret === null || secret === void 0 ? void 0 : secret.value) !== null && _a !== void 0 ? _a : undefined;
34
+ }
35
+ catch (error) {
36
+ if (typeof error === 'object' &&
37
+ error !== null &&
38
+ 'statusCode' in error &&
39
+ error.statusCode === 404) {
40
+ return undefined;
41
+ }
42
+ const errorMessage = error instanceof Error ? error.message : String(error);
43
+ throw new SecretOperationError(`Failed to get secret ${EnvironmentVariable.maskSecretPath(name)}: ${errorMessage}`);
44
+ }
45
+ });
46
+ }
47
+ setSecret(name, value) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ const secretName = this.resolveSecretName(name);
50
+ yield this.client.setSecret(secretName, value);
51
+ });
52
+ }
53
+ /**
54
+ * Validates that the secret name meets Azure Key Vault naming constraints.
55
+ * @see https://learn.microsoft.com/en-us/azure/key-vault/general/about-keys-secrets-certificates#objects-identifiers-and-versioning
56
+ */
57
+ validateSecretName(name) {
58
+ if (name.trim().length === 0) {
59
+ throw new InvalidArgumentError('Invalid secret name: name cannot be empty or whitespace-only.');
60
+ }
61
+ if (/[^a-zA-Z0-9\-_/]/.test(name)) {
62
+ throw new InvalidArgumentError(`Invalid secret name '${name}': contains characters not allowed` +
63
+ ' by Azure Key Vault. Only alphanumeric characters,' +
64
+ ' hyphens, slashes, and underscores are accepted.');
65
+ }
66
+ }
67
+ resolveSecretName(originalName) {
68
+ this.validateSecretName(originalName);
69
+ const normalized = this.normalizeSecretName(originalName);
70
+ if (normalized.length > 127) {
71
+ throw new InvalidArgumentError(`Invalid secret name '${originalName}': normalized name '${normalized}' exceeds the 127-character limit for Azure Key Vault.`);
72
+ }
73
+ const existing = this.normalizedNameRegistry.get(normalized);
74
+ if (existing !== undefined && existing !== originalName) {
75
+ throw new SecretOperationError(`Secret name collision: '${originalName}' and '${existing}' ` +
76
+ `both normalize to '${normalized}'. Use distinct ` +
77
+ 'Key Vault-compatible names in your map file ' +
78
+ 'when targeting Azure.');
79
+ }
80
+ this.normalizedNameRegistry.set(normalized, originalName);
81
+ return normalized;
82
+ }
83
+ // Azure Key Vault secret names: 1-127 chars, alphanumeric + hyphens, start with letter
84
+ normalizeSecretName(name) {
85
+ // Remove leading slashes
86
+ let normalized = name.replace(/^\/+/, '');
87
+ // Replace slashes and underscores with hyphens
88
+ normalized = normalized.replace(/[/_]/g, '-');
89
+ // Lowercase to match Azure Key Vault case-insensitivity
90
+ normalized = normalized.toLowerCase();
91
+ // Remove invalid characters
92
+ normalized = normalized.replace(/[^a-zA-Z0-9-]/g, '');
93
+ // Remove consecutive hyphens
94
+ normalized = normalized.replace(/-+/g, '-');
95
+ // Remove leading/trailing hyphens
96
+ normalized = normalized.replace(/^-+|-+$/g, '');
97
+ // Ensure starts with a letter
98
+ if (normalized.length > 0 && !/^[a-zA-Z]/.test(normalized)) {
99
+ normalized = `secret-${normalized}`;
100
+ }
101
+ // Default name if empty
102
+ if (normalized.length === 0) {
103
+ normalized = 'secret';
104
+ }
105
+ return normalized;
106
+ }
107
+ };
108
+ AzureKeyVaultSecretProvider = __decorate([
109
+ injectable(),
110
+ __metadata("design:paramtypes", [Function])
111
+ ], AzureKeyVaultSecretProvider);
112
+ export { AzureKeyVaultSecretProvider };
113
+ //# sourceMappingURL=AzureKeyVaultSecretProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AzureKeyVaultSecretProvider.js","sourceRoot":"","sources":["../../../../src/envilder/infrastructure/azure/AzureKeyVaultSecretProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { MapFileConfig } from '../../domain/MapFileConfig.js';
2
+ import type { ISecretProvider } from '../../domain/ports/ISecretProvider.js';
3
+ export { DEFAULT_VAULT_HOSTS } from './AzureVaultUrlValidator.js';
4
+ export type AzureProviderOptions = {
5
+ allowedVaultHosts?: string[];
6
+ disableChallengeResourceVerification?: boolean;
7
+ };
8
+ export declare function createAzureSecretProvider(config: MapFileConfig, options?: AzureProviderOptions): ISecretProvider;
9
+ //# sourceMappingURL=AzureSecretProviderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AzureSecretProviderFactory.d.ts","sourceRoot":"","sources":["../../../../src/envilder/infrastructure/azure/AzureSecretProviderFactory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAO7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,MAAM,oBAAoB,GAAG;IACjC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oCAAoC,CAAC,EAAE,OAAO,CAAC;CAChD,CAAC;AAEF,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,eAAe,CAkBjB"}
@@ -0,0 +1,24 @@
1
+ import { DefaultAzureCredential } from '@azure/identity';
2
+ import { SecretClient } from '@azure/keyvault-secrets';
3
+ import { DependencyMissingError } from '../../domain/errors/DomainErrors.js';
4
+ import { AzureKeyVaultSecretProvider } from './AzureKeyVaultSecretProvider.js';
5
+ import { DEFAULT_VAULT_HOSTS, validateAzureVaultUrl, } from './AzureVaultUrlValidator.js';
6
+ export { DEFAULT_VAULT_HOSTS } from './AzureVaultUrlValidator.js';
7
+ export function createAzureSecretProvider(config, options) {
8
+ var _a, _b;
9
+ const { vaultUrl } = config;
10
+ if (!vaultUrl) {
11
+ throw new DependencyMissingError('vaultUrl is required when using Azure provider.' +
12
+ ' Set it in $config.vaultUrl in your map file' +
13
+ ' or via --vault-url flag.');
14
+ }
15
+ const allowedVaultHosts = (_a = options === null || options === void 0 ? void 0 : options.allowedVaultHosts) !== null && _a !== void 0 ? _a : DEFAULT_VAULT_HOSTS;
16
+ const disableChallengeResourceVerification = (_b = options === null || options === void 0 ? void 0 : options.disableChallengeResourceVerification) !== null && _b !== void 0 ? _b : false;
17
+ validateAzureVaultUrl(vaultUrl, allowedVaultHosts);
18
+ const credential = new DefaultAzureCredential();
19
+ const client = new SecretClient(vaultUrl, credential, {
20
+ disableChallengeResourceVerification,
21
+ });
22
+ return new AzureKeyVaultSecretProvider(client);
23
+ }
24
+ //# sourceMappingURL=AzureSecretProviderFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AzureSecretProviderFactory.js","sourceRoot":"","sources":["../../../../src/envilder/infrastructure/azure/AzureSecretProviderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAG7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAOlE,MAAM,UAAU,yBAAyB,CACvC,MAAqB,EACrB,OAA8B;;IAE9B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,sBAAsB,CAC9B,iDAAiD;YAC/C,8CAA8C;YAC9C,2BAA2B,CAC9B,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB,mCAAI,mBAAmB,CAAC;IAC5E,MAAM,oCAAoC,GACxC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,oCAAoC,mCAAI,KAAK,CAAC;IACzD,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE;QACpD,oCAAoC;KACrC,CAAC,CAAC;IACH,OAAO,IAAI,2BAA2B,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const DEFAULT_VAULT_HOSTS: string[];
2
+ export declare function validateAzureVaultUrl(vaultUrl: string, allowedHosts: string[]): void;
3
+ //# sourceMappingURL=AzureVaultUrlValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AzureVaultUrlValidator.d.ts","sourceRoot":"","sources":["../../../../src/envilder/infrastructure/azure/AzureVaultUrlValidator.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,UAK/B,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EAAE,GACrB,IAAI,CAwBN"}
@@ -0,0 +1,28 @@
1
+ import { InvalidArgumentError } from '../../domain/errors/DomainErrors.js';
2
+ export const DEFAULT_VAULT_HOSTS = [
3
+ '.vault.azure.net',
4
+ '.vault.azure.cn',
5
+ '.vault.usgovcloudapi.net',
6
+ '.vault.microsoftazure.de',
7
+ ];
8
+ export function validateAzureVaultUrl(vaultUrl, allowedHosts) {
9
+ let url;
10
+ try {
11
+ url = new URL(vaultUrl);
12
+ }
13
+ catch (_a) {
14
+ throw new InvalidArgumentError('vaultUrl must be a valid URL');
15
+ }
16
+ if (url.protocol !== 'https:') {
17
+ throw new InvalidArgumentError('vaultUrl must use https:// protocol');
18
+ }
19
+ const isAllowedHost = allowedHosts.some((suffix) => {
20
+ const normalizedSuffix = suffix.startsWith('.') ? suffix.slice(1) : suffix;
21
+ return (url.hostname === normalizedSuffix ||
22
+ url.hostname.endsWith(`.${normalizedSuffix}`));
23
+ });
24
+ if (!isAllowedHost) {
25
+ throw new InvalidArgumentError(`vaultUrl hostname must end with one of: ${allowedHosts.join(', ')}`);
26
+ }
27
+ }
28
+ //# sourceMappingURL=AzureVaultUrlValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AzureVaultUrlValidator.js","sourceRoot":"","sources":["../../../../src/envilder/infrastructure/azure/AzureVaultUrlValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,kBAAkB;IAClB,iBAAiB;IACjB,0BAA0B;IAC1B,0BAA0B;CAC3B,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,YAAsB;IAEtB,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAAC,WAAM,CAAC;QACP,MAAM,IAAI,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,oBAAoB,CAAC,qCAAqC,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACjD,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3E,OAAO,CACL,GAAG,CAAC,QAAQ,KAAK,gBAAgB;YACjC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAC9C,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,oBAAoB,CAC5B,2CAA2C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrE,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,11 +1,15 @@
1
+ import type { MapFileConfig, ParsedMapFile } from '../../domain/MapFileConfig.js';
1
2
  import type { ILogger } from '../../domain/ports/ILogger.js';
2
3
  import type { IVariableStore } from '../../domain/ports/IVariableStore.js';
3
4
  export declare class FileVariableStore implements IVariableStore {
4
5
  private logger;
5
6
  constructor(logger: ILogger);
6
7
  getMapping(source: string): Promise<Record<string, string>>;
8
+ getParsedMapping(source: string): Promise<ParsedMapFile>;
9
+ private readJsonFile;
7
10
  getEnvironment(source: string): Promise<Record<string, string>>;
8
11
  saveEnvironment(destination: string, envVariables: Record<string, string>): Promise<void>;
9
12
  private escapeEnvValue;
10
13
  }
14
+ export declare function readMapFileConfig(mapPath: string): Promise<MapFileConfig>;
11
15
  //# sourceMappingURL=FileVariableStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileVariableStore.d.ts","sourceRoot":"","sources":["../../../../src/envilder/infrastructure/variableStore/FileVariableStore.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAG3E,qBACa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,MAAM,CAAU;gBAEW,MAAM,EAAE,OAAO;IAO5C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAmB3D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAc/D,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC;IAiBhB,OAAO,CAAC,cAAc;CASvB"}
1
+ {"version":3,"file":"FileVariableStore.d.ts","sourceRoot":"","sources":["../../../../src/envilder/infrastructure/variableStore/FileVariableStore.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAG3E,qBACa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,MAAM,CAAU;gBAEW,MAAM,EAAE,OAAO;IAO5C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAK3D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;YAQhD,YAAY;IAmBpB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAc/D,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC;IAiBhB,OAAO,CAAC,cAAc;CASvB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,CAkBxB"}
@@ -19,6 +19,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
19
19
  step((generator = generator.apply(thisArg, _arguments || [])).next());
20
20
  });
21
21
  };
22
+ var __rest = (this && this.__rest) || function (s, e) {
23
+ var t = {};
24
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
25
+ t[p] = s[p];
26
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
27
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
28
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
29
+ t[p[i]] = s[p[i]];
30
+ }
31
+ return t;
32
+ };
22
33
  import * as fs from 'node:fs/promises';
23
34
  import * as dotenv from 'dotenv';
24
35
  import { inject, injectable } from 'inversify';
@@ -32,6 +43,20 @@ let FileVariableStore = class FileVariableStore {
32
43
  this.logger = logger;
33
44
  }
34
45
  getMapping(source) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ const { mappings } = yield this.getParsedMapping(source);
48
+ return mappings;
49
+ });
50
+ }
51
+ getParsedMapping(source) {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ const raw = yield this.readJsonFile(source);
54
+ const { $config } = raw, rest = __rest(raw, ["$config"]);
55
+ const config = $config && typeof $config === 'object' ? $config : {};
56
+ return { config, mappings: rest };
57
+ });
58
+ }
59
+ readJsonFile(source) {
35
60
  return __awaiter(this, void 0, void 0, function* () {
36
61
  try {
37
62
  const content = yield fs.readFile(source, 'utf-8');
@@ -97,4 +122,25 @@ FileVariableStore = __decorate([
97
122
  __metadata("design:paramtypes", [Object])
98
123
  ], FileVariableStore);
99
124
  export { FileVariableStore };
125
+ export function readMapFileConfig(mapPath) {
126
+ return __awaiter(this, void 0, void 0, function* () {
127
+ try {
128
+ const content = yield fs.readFile(mapPath, 'utf-8');
129
+ try {
130
+ const raw = JSON.parse(content);
131
+ const config = raw.$config;
132
+ return config && typeof config === 'object' ? config : {};
133
+ }
134
+ catch (_a) {
135
+ throw new EnvironmentFileError(`Invalid JSON in parameter map file: ${mapPath}`);
136
+ }
137
+ }
138
+ catch (error) {
139
+ if (error instanceof EnvironmentFileError) {
140
+ throw error;
141
+ }
142
+ throw new EnvironmentFileError(`Failed to read map file: ${mapPath}`);
143
+ }
144
+ });
145
+ }
100
146
  //# sourceMappingURL=FileVariableStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileVariableStore.js","sourceRoot":"","sources":["../../../../src/envilder/infrastructure/variableStore/FileVariableStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileVariableStore.js","sourceRoot":"","sources":["../../../../src/envilder/infrastructure/variableStore/FileVariableStore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAO7C,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGhC,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAG5B,YAAmC,MAAe;QAChD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,sBAAsB,CAAC,0BAA0B,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEK,UAAU,CAAC,MAAc;;YAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzD,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;IAEK,gBAAgB,CAAC,MAAc;;YACnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,EAAE,OAAO,KAAc,GAAG,EAAZ,IAAI,UAAK,GAAG,EAA1B,WAAoB,CAAM,CAAC;YACjC,MAAM,MAAM,GACV,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAA8B,EAAE,CAAC;QAC9D,CAAC;KAAA;IAEa,YAAY,CAAC,MAAc;;YACvC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,CAAC;oBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,IAAa,EAAE,CAAC;oBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;oBACvD,MAAM,IAAI,oBAAoB,CAC5B,uCAAuC,MAAM,EAAE,CAChD,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;oBAC1C,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,IAAI,oBAAoB,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;KAAA;IAEK,cAAc,CAAC,MAAc;;YACjC,MAAM,YAAY,GAA2B,EAAE,CAAC;YAChD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;YAAC,WAAM,CAAC;gBACP,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,MAAM,kBAAkB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAEvC,OAAO,YAAY,CAAC;QACtB,CAAC;KAAA;IAEK,eAAe,CACnB,WAAmB,EACnB,YAAoC;;YAEpC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;iBAC5C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;iBAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;gBACvE,MAAM,IAAI,oBAAoB,CAC5B,qCAAqC,YAAY,EAAE,CACpD,CAAC;YACJ,CAAC;QACH,CAAC;KAAA;IAEO,cAAc,CAAC,KAAa;QAClC,qCAAqC;QACrC,mFAAmF;QACnF,6EAA6E;QAC7E,wFAAwF;QACxF,4EAA4E;QAC5E,wFAAwF;QACxF,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;CACF,CAAA;AArFY,iBAAiB;IAD7B,UAAU,EAAE;IAIE,WAAA,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;;GAHvB,iBAAiB,CAqF7B;;AAED,MAAM,UAAgB,iBAAiB,CACrC,OAAe;;QAEf,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC3B,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,CAAC;YAAC,WAAM,CAAC;gBACP,MAAM,IAAI,oBAAoB,CAC5B,uCAAuC,OAAO,EAAE,CACjD,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;gBAC1C,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,oBAAoB,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CAAA"}
@@ -4,15 +4,15 @@ export declare const DOMAIN: {
4
4
  IVariableStore: symbol;
5
5
  };
6
6
  export declare const APPLICATION: {
7
- PullSsmToEnvCommandHandler: symbol;
8
- PushEnvToSsmCommandHandler: symbol;
7
+ PullSecretsToEnvCommandHandler: symbol;
8
+ PushEnvToSecretsCommandHandler: symbol;
9
9
  PushSingleCommandHandler: symbol;
10
10
  DispatchActionCommandHandler: symbol;
11
11
  };
12
12
  export declare const INFRASTRUCTURE: {};
13
13
  export declare const TYPES: {
14
- PullSsmToEnvCommandHandler: symbol;
15
- PushEnvToSsmCommandHandler: symbol;
14
+ PullSecretsToEnvCommandHandler: symbol;
15
+ PushEnvToSecretsCommandHandler: symbol;
16
16
  PushSingleCommandHandler: symbol;
17
17
  DispatchActionCommandHandler: symbol;
18
18
  ILogger: symbol;
@@ -4,8 +4,8 @@ export const DOMAIN = {
4
4
  IVariableStore: Symbol.for('IVariableStore'),
5
5
  };
6
6
  export const APPLICATION = {
7
- PullSsmToEnvCommandHandler: Symbol.for('PullSsmToEnvCommandHandler'),
8
- PushEnvToSsmCommandHandler: Symbol.for('PushEnvToSsmCommandHandler'),
7
+ PullSecretsToEnvCommandHandler: Symbol.for('PullSecretsToEnvCommandHandler'),
8
+ PushEnvToSecretsCommandHandler: Symbol.for('PushEnvToSecretsCommandHandler'),
9
9
  PushSingleCommandHandler: Symbol.for('PushSingleCommandHandler'),
10
10
  DispatchActionCommandHandler: Symbol.for('DispatchActionCommandHandler'),
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/envilder/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC9C,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;CAC7C,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,0BAA0B,EAAE,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC;IACpE,0BAA0B,EAAE,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC;IACpE,wBAAwB,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAChE,4BAA4B,EAAE,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC;CACzE,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;AAC5B,2DAA2D;AAC3D,sDAAsD;CACvD,CAAC;AAEF,+FAA+F;AAC/F,MAAM,CAAC,MAAM,KAAK,iDACb,MAAM,GACN,WAAW,GACX,cAAc,CAClB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/envilder/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC9C,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;CAC7C,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,8BAA8B,EAAE,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC;IAC5E,8BAA8B,EAAE,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC;IAC5E,wBAAwB,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAChE,4BAA4B,EAAE,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC;CACzE,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;AAC5B,2DAA2D;AAC3D,sDAAsD;CACvD,CAAC;AAEF,+FAA+F;AAC/F,MAAM,CAAC,MAAM,KAAK,iDACb,MAAM,GACN,WAAW,GACX,cAAc,CAClB,CAAC"}
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ import type { Stack } from "aws-cdk-lib";
3
+ import { AppEnvironment } from "../lib/core/types";
4
+ interface StaticWebsiteConfig {
5
+ name: string;
6
+ projectPath: string;
7
+ subdomain?: string;
8
+ }
9
+ interface DeploymentConfig {
10
+ repoName: string;
11
+ branch: string;
12
+ environment: AppEnvironment;
13
+ domain: {
14
+ name: string;
15
+ certificateId: string;
16
+ hostedZoneId: string;
17
+ };
18
+ stacks: {
19
+ frontend: {
20
+ staticWebsites: readonly StaticWebsiteConfig[];
21
+ };
22
+ };
23
+ rootPath?: string;
24
+ }
25
+ export declare function validateConfig(config: DeploymentConfig): void;
26
+ export declare function deploy(configOverride?: DeploymentConfig): Stack[];
27
+ export {};
28
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/iac/bin/main.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,aAAa,CAAC;AAKtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOnD,UAAU,mBAAmB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,gBAAgB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,cAAc,CAAC;IAC5B,MAAM,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE;QACP,QAAQ,EAAE;YACT,cAAc,EAAE,SAAS,mBAAmB,EAAE,CAAC;SAC/C,CAAC;KACF,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAmFD,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA8D7D;AAMD,wBAAgB,MAAM,CAAC,cAAc,CAAC,EAAE,gBAAgB,GAAG,KAAK,EAAE,CA+EjE"}
@@ -0,0 +1,201 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.validateConfig = validateConfig;
8
+ exports.deploy = deploy;
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ /**
11
+ * CDK Infrastructure Deployment Entry Point
12
+ */
13
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
14
+ const types_1 = require("../lib/core/types");
15
+ const staticWebsiteStack_1 = require("../lib/stacks/staticWebsiteStack");
16
+ // ============================================================================
17
+ // Configuration
18
+ // ============================================================================
19
+ const config = {
20
+ repoName: "envilder",
21
+ branch: "main",
22
+ environment: types_1.AppEnvironment.Production,
23
+ domain: {
24
+ name: "envilder.com",
25
+ certificateId: "e04983fe-1561-4ebe-9166-83f77789964a",
26
+ hostedZoneId: "Z0718467FEEOZ35UNCTO",
27
+ },
28
+ stacks: {
29
+ frontend: {
30
+ staticWebsites: [
31
+ {
32
+ name: "Website",
33
+ projectPath: "envilder/src/apps/website/dist",
34
+ },
35
+ ],
36
+ },
37
+ },
38
+ };
39
+ // ============================================================================
40
+ // Utils
41
+ // ============================================================================
42
+ function getRootPath(rootPath) {
43
+ return rootPath !== null && rootPath !== void 0 ? rootPath : node_path_1.default.join(process.cwd(), "../../../");
44
+ }
45
+ function resolveFullPath(rootPath, relativePath) {
46
+ return node_path_1.default.join(rootPath, relativePath);
47
+ }
48
+ function logInfo(message) {
49
+ process.stderr.write(`${message}\x1b[E\n`);
50
+ }
51
+ function logError(error) {
52
+ process.stderr.write(`\x1b[31m❌ Error: ${error.message}\x1b[0m\x1b[E\n`);
53
+ if (error.stack) {
54
+ process.stderr.write(`${error.stack}\x1b[E\n`);
55
+ }
56
+ }
57
+ function logTable(entries) {
58
+ const MAX_VALUE_WIDTH = 40;
59
+ const truncate = (s) => s.length > MAX_VALUE_WIDTH ? `…${s.slice(-(MAX_VALUE_WIDTH - 1))}` : s;
60
+ const rows = entries.map(({ label, value }) => ({
61
+ label,
62
+ value: truncate(value),
63
+ }));
64
+ const maxLabel = Math.max(...rows.map((e) => e.label.length));
65
+ const maxValue = Math.max(...rows.map((e) => e.value.length));
66
+ const header = " 📁 Deployment Info ";
67
+ const innerWidth = maxLabel + maxValue + 4;
68
+ const padding = Math.max(0, innerWidth - header.length);
69
+ const nl = "\x1b[E\n";
70
+ process.stderr.write(nl);
71
+ process.stderr.write(`╭─${header}${"─".repeat(padding)}╮${nl}`);
72
+ for (const { label, value } of rows) {
73
+ process.stderr.write(`│ ${label.padEnd(maxLabel)} │ ${value.padEnd(maxValue)} │${nl}`);
74
+ }
75
+ process.stderr.write(`╰${"─".repeat(maxLabel + 2)}┴${"─".repeat(maxValue + 2)}╯${nl}`);
76
+ process.stderr.write(nl);
77
+ }
78
+ function validateConfig(config) {
79
+ const errors = [];
80
+ if (!config.repoName || config.repoName.trim() === "") {
81
+ errors.push("repoName is required and cannot be empty");
82
+ }
83
+ if (!config.branch || config.branch.trim() === "") {
84
+ errors.push("branch is required and cannot be empty");
85
+ }
86
+ if (config.environment === undefined || config.environment === null) {
87
+ errors.push("environment is required and cannot be empty");
88
+ }
89
+ if (!config.domain) {
90
+ errors.push("domain configuration is required");
91
+ }
92
+ else {
93
+ if (!config.domain.name || config.domain.name.trim() === "") {
94
+ errors.push("domain.name is required and cannot be empty");
95
+ }
96
+ if (!config.domain.certificateId ||
97
+ config.domain.certificateId.trim() === "") {
98
+ errors.push("domain.certificateId is required and cannot be empty");
99
+ }
100
+ if (!config.domain.hostedZoneId ||
101
+ config.domain.hostedZoneId.trim() === "") {
102
+ errors.push("domain.hostedZoneId is required and cannot be empty");
103
+ }
104
+ }
105
+ if (!config.stacks) {
106
+ errors.push("stacks configuration is required");
107
+ }
108
+ else {
109
+ if (!config.stacks.frontend) {
110
+ errors.push("stacks.frontend is required");
111
+ }
112
+ else {
113
+ const { staticWebsites } = config.stacks.frontend;
114
+ if (staticWebsites) {
115
+ for (const [index, website] of staticWebsites.entries()) {
116
+ if (!website.name || website.name.trim() === "") {
117
+ errors.push(`frontend.staticWebsites[${index}].name is required`);
118
+ }
119
+ if (!website.projectPath || website.projectPath.trim() === "") {
120
+ errors.push(`frontend.staticWebsites[${index}].projectPath is required`);
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+ if (errors.length > 0) {
127
+ throw new Error(`Configuration validation failed with ${errors.length} error(s):\n${errors.join("\n")}`);
128
+ }
129
+ }
130
+ // ============================================================================
131
+ // Deployment
132
+ // ============================================================================
133
+ function deploy(configOverride) {
134
+ const effectiveConfig = configOverride !== null && configOverride !== void 0 ? configOverride : config;
135
+ const rootPath = getRootPath(effectiveConfig.rootPath);
136
+ try {
137
+ validateConfig(effectiveConfig);
138
+ // Log deployment info
139
+ const entries = [
140
+ { label: "Repository", value: effectiveConfig.repoName },
141
+ { label: "Branch", value: effectiveConfig.branch },
142
+ { label: "Environment", value: String(effectiveConfig.environment) },
143
+ ];
144
+ if (process.env.CDK_DEFAULT_REGION) {
145
+ entries.push({ label: "Region", value: process.env.CDK_DEFAULT_REGION });
146
+ }
147
+ if (process.env.CDK_DEFAULT_ACCOUNT) {
148
+ entries.push({
149
+ label: "Account",
150
+ value: `***${process.env.CDK_DEFAULT_ACCOUNT.slice(-4)}`,
151
+ });
152
+ }
153
+ entries.push({ label: "Root Path", value: rootPath });
154
+ for (const ws of effectiveConfig.stacks.frontend.staticWebsites) {
155
+ entries.push({
156
+ label: ws.name,
157
+ value: resolveFullPath(rootPath, ws.projectPath),
158
+ });
159
+ }
160
+ logTable(entries);
161
+ logInfo("🎯 Requested stacks:");
162
+ const app = new aws_cdk_lib_1.App();
163
+ const envFromCli = {
164
+ account: process.env.CDK_DEFAULT_ACCOUNT,
165
+ region: process.env.CDK_DEFAULT_REGION,
166
+ };
167
+ const stacks = [];
168
+ for (const websiteConfig of effectiveConfig.stacks.frontend
169
+ .staticWebsites) {
170
+ const distFolderPath = resolveFullPath(rootPath, websiteConfig.projectPath);
171
+ const stack = new staticWebsiteStack_1.StaticWebsiteStack(app, {
172
+ env: envFromCli,
173
+ name: websiteConfig.name,
174
+ domains: [
175
+ {
176
+ subdomain: websiteConfig.subdomain,
177
+ domainName: effectiveConfig.domain.name,
178
+ certificateId: effectiveConfig.domain.certificateId,
179
+ hostedZoneId: effectiveConfig.domain.hostedZoneId,
180
+ },
181
+ ],
182
+ distFolderPath,
183
+ envName: effectiveConfig.environment,
184
+ githubRepo: effectiveConfig.repoName,
185
+ stackName: `${effectiveConfig.repoName}-${websiteConfig.name}`,
186
+ });
187
+ stacks.push(stack);
188
+ }
189
+ return stacks;
190
+ }
191
+ catch (error) {
192
+ if (error instanceof Error) {
193
+ logError(error);
194
+ }
195
+ throw error;
196
+ }
197
+ }
198
+ if (!process.env.VITEST) {
199
+ deploy();
200
+ }
201
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/iac/bin/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare enum AppEnvironment {
2
+ Production = "Production",
3
+ Development = "Development"
4
+ }
5
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/iac/lib/core/types.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc;IACzB,UAAU,eAAe;IACzB,WAAW,gBAAgB;CAC3B"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppEnvironment = void 0;
4
+ var AppEnvironment;
5
+ (function (AppEnvironment) {
6
+ AppEnvironment["Production"] = "Production";
7
+ AppEnvironment["Development"] = "Development";
8
+ })(AppEnvironment || (exports.AppEnvironment = AppEnvironment = {}));
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/iac/lib/core/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAGX;AAHD,WAAY,cAAc;IACzB,2CAAyB,CAAA;IACzB,6CAA2B,CAAA;AAC5B,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB"}