@marktoflow/core 2.0.0-alpha.15 → 2.0.0-alpha.16

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 (109) hide show
  1. package/README.md +24 -365
  2. package/dist/built-in-operations.d.ts +10 -0
  3. package/dist/built-in-operations.d.ts.map +1 -1
  4. package/dist/built-in-operations.js +386 -1
  5. package/dist/built-in-operations.js.map +1 -1
  6. package/dist/credentials.d.ts +60 -1
  7. package/dist/credentials.d.ts.map +1 -1
  8. package/dist/credentials.js +229 -4
  9. package/dist/credentials.js.map +1 -1
  10. package/dist/engine.d.ts +36 -1
  11. package/dist/engine.d.ts.map +1 -1
  12. package/dist/engine.js +462 -21
  13. package/dist/engine.js.map +1 -1
  14. package/dist/index.d.ts +5 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +9 -3
  17. package/dist/index.js.map +1 -1
  18. package/dist/models.d.ts +399 -6
  19. package/dist/models.d.ts.map +1 -1
  20. package/dist/models.js +60 -1
  21. package/dist/models.js.map +1 -1
  22. package/dist/oauth-manager.d.ts +128 -0
  23. package/dist/oauth-manager.d.ts.map +1 -0
  24. package/dist/oauth-manager.js +291 -0
  25. package/dist/oauth-manager.js.map +1 -0
  26. package/dist/oauth-refresh.d.ts +37 -0
  27. package/dist/oauth-refresh.d.ts.map +1 -0
  28. package/dist/oauth-refresh.js +76 -0
  29. package/dist/oauth-refresh.js.map +1 -0
  30. package/dist/parser.d.ts.map +1 -1
  31. package/dist/parser.js +19 -0
  32. package/dist/parser.js.map +1 -1
  33. package/dist/sdk-registry.d.ts +7 -1
  34. package/dist/sdk-registry.d.ts.map +1 -1
  35. package/dist/sdk-registry.js +38 -9
  36. package/dist/sdk-registry.js.map +1 -1
  37. package/dist/secret-providers/index.d.ts +12 -0
  38. package/dist/secret-providers/index.d.ts.map +1 -0
  39. package/dist/secret-providers/index.js +11 -0
  40. package/dist/secret-providers/index.js.map +1 -0
  41. package/dist/secret-providers/providers/aws.d.ts +32 -0
  42. package/dist/secret-providers/providers/aws.d.ts.map +1 -0
  43. package/dist/secret-providers/providers/aws.js +118 -0
  44. package/dist/secret-providers/providers/aws.js.map +1 -0
  45. package/dist/secret-providers/providers/azure.d.ts +40 -0
  46. package/dist/secret-providers/providers/azure.d.ts.map +1 -0
  47. package/dist/secret-providers/providers/azure.js +170 -0
  48. package/dist/secret-providers/providers/azure.js.map +1 -0
  49. package/dist/secret-providers/providers/env.d.ts +26 -0
  50. package/dist/secret-providers/providers/env.d.ts.map +1 -0
  51. package/dist/secret-providers/providers/env.js +59 -0
  52. package/dist/secret-providers/providers/env.js.map +1 -0
  53. package/dist/secret-providers/providers/vault.d.ts +39 -0
  54. package/dist/secret-providers/providers/vault.d.ts.map +1 -0
  55. package/dist/secret-providers/providers/vault.js +180 -0
  56. package/dist/secret-providers/providers/vault.js.map +1 -0
  57. package/dist/secret-providers/secret-manager.d.ts +72 -0
  58. package/dist/secret-providers/secret-manager.d.ts.map +1 -0
  59. package/dist/secret-providers/secret-manager.js +226 -0
  60. package/dist/secret-providers/secret-manager.js.map +1 -0
  61. package/dist/secret-providers/types.d.ts +105 -0
  62. package/dist/secret-providers/types.d.ts.map +1 -0
  63. package/dist/secret-providers/types.js +8 -0
  64. package/dist/secret-providers/types.js.map +1 -0
  65. package/dist/secrets/index.d.ts +12 -0
  66. package/dist/secrets/index.d.ts.map +1 -0
  67. package/dist/secrets/index.js +11 -0
  68. package/dist/secrets/index.js.map +1 -0
  69. package/dist/secrets/providers/aws.d.ts +32 -0
  70. package/dist/secrets/providers/aws.d.ts.map +1 -0
  71. package/dist/secrets/providers/aws.js +118 -0
  72. package/dist/secrets/providers/aws.js.map +1 -0
  73. package/dist/secrets/providers/azure.d.ts +40 -0
  74. package/dist/secrets/providers/azure.d.ts.map +1 -0
  75. package/dist/secrets/providers/azure.js +170 -0
  76. package/dist/secrets/providers/azure.js.map +1 -0
  77. package/dist/secrets/providers/env.d.ts +26 -0
  78. package/dist/secrets/providers/env.d.ts.map +1 -0
  79. package/dist/secrets/providers/env.js +59 -0
  80. package/dist/secrets/providers/env.js.map +1 -0
  81. package/dist/secrets/providers/vault.d.ts +39 -0
  82. package/dist/secrets/providers/vault.d.ts.map +1 -0
  83. package/dist/secrets/providers/vault.js +180 -0
  84. package/dist/secrets/providers/vault.js.map +1 -0
  85. package/dist/secrets/secret-manager.d.ts +72 -0
  86. package/dist/secrets/secret-manager.d.ts.map +1 -0
  87. package/dist/secrets/secret-manager.js +226 -0
  88. package/dist/secrets/secret-manager.js.map +1 -0
  89. package/dist/secrets/types.d.ts +105 -0
  90. package/dist/secrets/types.d.ts.map +1 -0
  91. package/dist/secrets/types.js +8 -0
  92. package/dist/secrets/types.js.map +1 -0
  93. package/package.json +1 -1
  94. package/dist/expression-helpers.d.ts +0 -309
  95. package/dist/expression-helpers.d.ts.map +0 -1
  96. package/dist/expression-helpers.js +0 -697
  97. package/dist/expression-helpers.js.map +0 -1
  98. package/dist/pipeline-parser.d.ts +0 -38
  99. package/dist/pipeline-parser.d.ts.map +0 -1
  100. package/dist/pipeline-parser.js +0 -219
  101. package/dist/pipeline-parser.js.map +0 -1
  102. package/dist/regex-operators.d.ts +0 -86
  103. package/dist/regex-operators.d.ts.map +0 -1
  104. package/dist/regex-operators.js +0 -383
  105. package/dist/regex-operators.js.map +0 -1
  106. package/dist/version.d.ts +0 -8
  107. package/dist/version.d.ts.map +0 -1
  108. package/dist/version.js +0 -8
  109. package/dist/version.js.map +0 -1
@@ -0,0 +1,226 @@
1
+ /**
2
+ * Secret Manager
3
+ *
4
+ * Coordinates access to external secret managers with caching support.
5
+ */
6
+ export class SecretNotFoundError extends Error {
7
+ constructor(message) {
8
+ super(message);
9
+ this.name = 'SecretNotFoundError';
10
+ }
11
+ }
12
+ export class SecretProviderError extends Error {
13
+ constructor(message) {
14
+ super(message);
15
+ this.name = 'SecretProviderError';
16
+ }
17
+ }
18
+ export class SecretManager {
19
+ providers = new Map();
20
+ cache = new Map();
21
+ options;
22
+ constructor(options) {
23
+ this.options = {
24
+ providers: options.providers,
25
+ defaultCacheTTL: options.defaultCacheTTL ?? 300, // 5 minutes
26
+ referencePrefix: options.referencePrefix ?? 'secret:',
27
+ throwOnNotFound: options.throwOnNotFound ?? true,
28
+ };
29
+ }
30
+ /**
31
+ * Register a secret provider
32
+ */
33
+ registerProvider(type, provider) {
34
+ this.providers.set(type, provider);
35
+ }
36
+ /**
37
+ * Initialize all configured providers
38
+ */
39
+ async initialize() {
40
+ for (const [type, provider] of this.providers.entries()) {
41
+ try {
42
+ await provider.initialize();
43
+ }
44
+ catch (error) {
45
+ throw new SecretProviderError(`Failed to initialize ${type} provider: ${error instanceof Error ? error.message : 'Unknown error'}`);
46
+ }
47
+ }
48
+ }
49
+ /**
50
+ * Get a secret from the appropriate provider
51
+ */
52
+ async getSecret(reference) {
53
+ const parsed = this.parseReference(reference);
54
+ // Check cache first
55
+ if (this.options.providers.find((p) => p.cacheEnabled !== false)) {
56
+ const cached = this.getCached(reference);
57
+ if (cached) {
58
+ return cached;
59
+ }
60
+ }
61
+ // Get provider
62
+ const provider = this.providers.get(parsed.provider);
63
+ if (!provider) {
64
+ throw new SecretProviderError(`Provider '${parsed.provider}' not configured`);
65
+ }
66
+ // Fetch secret
67
+ try {
68
+ const secret = await provider.getSecret(parsed.path);
69
+ // Extract key if specified
70
+ if (parsed.key && typeof secret.value === 'object') {
71
+ const keyValue = this.extractKey(secret.value, parsed.key);
72
+ secret.value = keyValue;
73
+ }
74
+ // Cache the secret
75
+ this.cacheSecret(reference, secret);
76
+ return secret;
77
+ }
78
+ catch (error) {
79
+ if (this.options.throwOnNotFound) {
80
+ throw new SecretNotFoundError(`Secret not found: ${reference} - ${error instanceof Error ? error.message : 'Unknown error'}`);
81
+ }
82
+ // Return empty secret if not throwing
83
+ return { value: '' };
84
+ }
85
+ }
86
+ /**
87
+ * Parse a secret reference
88
+ * Formats:
89
+ * ${secret:vault://path/to/secret}
90
+ * ${secret:aws://secret-name}
91
+ * ${secret:azure://secret-name}
92
+ * ${secret:vault://path/to/secret#key}
93
+ */
94
+ parseReference(reference) {
95
+ // Remove ${secret: and } if present
96
+ let cleaned = reference.trim();
97
+ if (cleaned.startsWith('${')) {
98
+ cleaned = cleaned.slice(2, -1);
99
+ }
100
+ if (cleaned.startsWith(this.options.referencePrefix)) {
101
+ cleaned = cleaned.slice(this.options.referencePrefix.length);
102
+ }
103
+ // Parse provider://path#key format
104
+ const match = cleaned.match(/^([^:]+):\/\/([^#]+)(#(.+))?$/);
105
+ if (!match) {
106
+ throw new SecretProviderError(`Invalid secret reference format: ${reference}`);
107
+ }
108
+ return {
109
+ raw: reference,
110
+ provider: match[1],
111
+ path: match[2],
112
+ key: match[4],
113
+ };
114
+ }
115
+ /**
116
+ * Extract a key from a JSON secret
117
+ */
118
+ extractKey(value, key) {
119
+ const parts = key.split('.');
120
+ let current = value;
121
+ for (const part of parts) {
122
+ if (typeof current === 'object' && current !== null && part in current) {
123
+ current = current[part];
124
+ }
125
+ else {
126
+ throw new SecretNotFoundError(`Key '${key}' not found in secret`);
127
+ }
128
+ }
129
+ if (typeof current === 'string') {
130
+ return current;
131
+ }
132
+ if (typeof current === 'number' || typeof current === 'boolean') {
133
+ return String(current);
134
+ }
135
+ return JSON.stringify(current);
136
+ }
137
+ /**
138
+ * Get secret from cache if not expired
139
+ */
140
+ getCached(reference) {
141
+ const cached = this.cache.get(reference);
142
+ if (!cached)
143
+ return null;
144
+ if (cached.expiresAt < new Date()) {
145
+ this.cache.delete(reference);
146
+ return null;
147
+ }
148
+ return cached.value;
149
+ }
150
+ /**
151
+ * Cache a secret
152
+ */
153
+ cacheSecret(reference, secret) {
154
+ const now = new Date();
155
+ const ttl = this.options.defaultCacheTTL * 1000; // Convert to ms
156
+ const expiresAt = new Date(now.getTime() + ttl);
157
+ this.cache.set(reference, {
158
+ value: secret,
159
+ fetchedAt: now,
160
+ expiresAt,
161
+ });
162
+ }
163
+ /**
164
+ * Clear cache
165
+ */
166
+ clearCache() {
167
+ this.cache.clear();
168
+ }
169
+ /**
170
+ * Clear expired cache entries
171
+ */
172
+ clearExpiredCache() {
173
+ const now = new Date();
174
+ for (const [key, cached] of this.cache.entries()) {
175
+ if (cached.expiresAt < now) {
176
+ this.cache.delete(key);
177
+ }
178
+ }
179
+ }
180
+ /**
181
+ * Check if a reference looks like a secret reference
182
+ */
183
+ static isSecretReference(value) {
184
+ return value.includes('secret:') && value.includes('://');
185
+ }
186
+ /**
187
+ * Replace secret references in a string
188
+ */
189
+ async resolveSecrets(value) {
190
+ // Find all secret references
191
+ const regex = /\$\{secret:[^}]+\}/g;
192
+ const matches = value.match(regex);
193
+ if (!matches) {
194
+ return value;
195
+ }
196
+ let result = value;
197
+ for (const match of matches) {
198
+ try {
199
+ const secret = await this.getSecret(match);
200
+ const secretValue = typeof secret.value === 'string' ? secret.value : JSON.stringify(secret.value);
201
+ result = result.replace(match, secretValue);
202
+ }
203
+ catch (error) {
204
+ if (this.options.throwOnNotFound) {
205
+ throw error;
206
+ }
207
+ // Replace with empty string if not throwing
208
+ result = result.replace(match, '');
209
+ }
210
+ }
211
+ return result;
212
+ }
213
+ /**
214
+ * Clean up resources
215
+ */
216
+ async destroy() {
217
+ for (const provider of this.providers.values()) {
218
+ if (provider.destroy) {
219
+ await provider.destroy();
220
+ }
221
+ }
222
+ this.providers.clear();
223
+ this.cache.clear();
224
+ }
225
+ }
226
+ //# sourceMappingURL=secret-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-manager.js","sourceRoot":"","sources":["../../src/secret-providers/secret-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * External Secrets Management Types
3
+ *
4
+ * Provides integration with external secret managers like HashiCorp Vault,
5
+ * AWS Secrets Manager, Azure Key Vault, etc.
6
+ */
7
+ export interface SecretMetadata {
8
+ version?: string;
9
+ createdAt?: Date;
10
+ updatedAt?: Date;
11
+ expiresAt?: Date;
12
+ tags?: Record<string, string>;
13
+ }
14
+ export interface Secret {
15
+ value: string | Record<string, unknown>;
16
+ metadata?: SecretMetadata;
17
+ }
18
+ export interface SecretProviderConfig {
19
+ type: 'vault' | 'aws' | 'azure' | 'gcp' | 'env';
20
+ cacheEnabled?: boolean;
21
+ cacheTTL?: number;
22
+ config?: Record<string, unknown>;
23
+ }
24
+ export interface VaultConfig {
25
+ address: string;
26
+ token?: string;
27
+ namespace?: string;
28
+ roleId?: string;
29
+ secretId?: string;
30
+ kvVersion?: 1 | 2;
31
+ mountPath?: string;
32
+ }
33
+ export interface AWSSecretsManagerConfig {
34
+ region?: string;
35
+ accessKeyId?: string;
36
+ secretAccessKey?: string;
37
+ sessionToken?: string;
38
+ useIAMRole?: boolean;
39
+ }
40
+ export interface AzureKeyVaultConfig {
41
+ vaultUrl: string;
42
+ tenantId?: string;
43
+ clientId?: string;
44
+ clientSecret?: string;
45
+ useManagedIdentity?: boolean;
46
+ }
47
+ export interface GCPSecretManagerConfig {
48
+ projectId: string;
49
+ credentials?: string | Record<string, unknown>;
50
+ useADC?: boolean;
51
+ }
52
+ /**
53
+ * Secret Provider Interface
54
+ *
55
+ * All secret managers must implement this interface
56
+ */
57
+ export interface SecretProvider {
58
+ /**
59
+ * Get a secret by path/name
60
+ */
61
+ getSecret(path: string): Promise<Secret>;
62
+ /**
63
+ * Check if a secret exists
64
+ */
65
+ exists(path: string): Promise<boolean>;
66
+ /**
67
+ * List secrets at a path (optional)
68
+ */
69
+ listSecrets?(path: string): Promise<string[]>;
70
+ /**
71
+ * Initialize the provider
72
+ */
73
+ initialize(): Promise<void>;
74
+ /**
75
+ * Clean up resources
76
+ */
77
+ destroy?(): Promise<void>;
78
+ }
79
+ /**
80
+ * Secret Cache Entry
81
+ */
82
+ export interface CachedSecret {
83
+ value: Secret;
84
+ fetchedAt: Date;
85
+ expiresAt: Date;
86
+ }
87
+ /**
88
+ * Secret Manager Options
89
+ */
90
+ export interface SecretManagerOptions {
91
+ providers: SecretProviderConfig[];
92
+ defaultCacheTTL?: number;
93
+ referencePrefix?: string;
94
+ throwOnNotFound?: boolean;
95
+ }
96
+ /**
97
+ * Parse result for secret references
98
+ */
99
+ export interface SecretReference {
100
+ raw: string;
101
+ provider: string;
102
+ path: string;
103
+ key?: string;
104
+ }
105
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/secret-providers/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * External Secrets Management Types
3
+ *
4
+ * Provides integration with external secret managers like HashiCorp Vault,
5
+ * AWS Secrets Manager, Azure Key Vault, etc.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/secret-providers/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * External Secrets Management
3
+ *
4
+ * Provides integration with external secret managers.
5
+ */
6
+ export { SecretManager, SecretNotFoundError, SecretProviderError } from './secret-manager.js';
7
+ export { VaultProvider } from './providers/vault.js';
8
+ export { AWSSecretsManagerProvider } from './providers/aws.js';
9
+ export { AzureKeyVaultProvider } from './providers/azure.js';
10
+ export { EnvProvider } from './providers/env.js';
11
+ export type { Secret, SecretMetadata, SecretProvider, SecretProviderConfig, SecretManagerOptions, SecretReference, CachedSecret, VaultConfig, AWSSecretsManagerConfig, AzureKeyVaultConfig, GCPSecretManagerConfig, } from './types.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE9F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,YAAY,EACV,MAAM,EACN,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * External Secrets Management
3
+ *
4
+ * Provides integration with external secret managers.
5
+ */
6
+ export { SecretManager, SecretNotFoundError, SecretProviderError } from './secret-manager.js';
7
+ export { VaultProvider } from './providers/vault.js';
8
+ export { AWSSecretsManagerProvider } from './providers/aws.js';
9
+ export { AzureKeyVaultProvider } from './providers/azure.js';
10
+ export { EnvProvider } from './providers/env.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE9F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * AWS Secrets Manager Provider
3
+ *
4
+ * Supports IAM authentication and explicit credentials.
5
+ */
6
+ import type { SecretProvider, Secret, AWSSecretsManagerConfig } from '../types.js';
7
+ export declare class AWSSecretsManagerProvider implements SecretProvider {
8
+ private config;
9
+ private initialized;
10
+ constructor(config: AWSSecretsManagerConfig);
11
+ initialize(): Promise<void>;
12
+ /**
13
+ * Get a secret from AWS Secrets Manager
14
+ */
15
+ getSecret(secretName: string): Promise<Secret>;
16
+ /**
17
+ * Check if a secret exists
18
+ */
19
+ exists(secretName: string): Promise<boolean>;
20
+ /**
21
+ * List secrets (returns secret ARNs)
22
+ */
23
+ listSecrets(): Promise<string[]>;
24
+ /**
25
+ * Call AWS Secrets Manager API
26
+ *
27
+ * This is a simplified implementation. In production, use @aws-sdk/client-secrets-manager
28
+ */
29
+ private callAWSAPI;
30
+ destroy(): Promise<void>;
31
+ }
32
+ //# sourceMappingURL=aws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws.d.ts","sourceRoot":"","sources":["../../../src/secrets/providers/aws.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEnF,qBAAa,yBAA0B,YAAW,cAAc;IAC9D,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,uBAAuB;IAUrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;OAEG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuCpD;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IActC;;;;OAIG;YACW,UAAU;IAelB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * AWS Secrets Manager Provider
3
+ *
4
+ * Supports IAM authentication and explicit credentials.
5
+ */
6
+ export class AWSSecretsManagerProvider {
7
+ config;
8
+ initialized = false;
9
+ constructor(config) {
10
+ this.config = {
11
+ region: config.region ?? process.env.AWS_REGION ?? 'us-east-1',
12
+ accessKeyId: config.accessKeyId ?? process.env.AWS_ACCESS_KEY_ID ?? '',
13
+ secretAccessKey: config.secretAccessKey ?? process.env.AWS_SECRET_ACCESS_KEY ?? '',
14
+ sessionToken: config.sessionToken ?? process.env.AWS_SESSION_TOKEN ?? '',
15
+ useIAMRole: config.useIAMRole ?? false,
16
+ };
17
+ }
18
+ async initialize() {
19
+ if (this.initialized)
20
+ return;
21
+ // If using IAM role, credentials will be fetched automatically by AWS SDK
22
+ if (!this.config.useIAMRole) {
23
+ if (!this.config.accessKeyId || !this.config.secretAccessKey) {
24
+ throw new Error('AWS Secrets Manager requires accessKeyId and secretAccessKey, or useIAMRole must be true');
25
+ }
26
+ }
27
+ this.initialized = true;
28
+ }
29
+ /**
30
+ * Get a secret from AWS Secrets Manager
31
+ */
32
+ async getSecret(secretName) {
33
+ if (!this.initialized) {
34
+ await this.initialize();
35
+ }
36
+ try {
37
+ // Use AWS SDK v3 style API call via fetch
38
+ const result = await this.callAWSAPI('GetSecretValue', { SecretId: secretName });
39
+ const secretString = String(result.SecretString || '');
40
+ let value;
41
+ // Try to parse as JSON
42
+ try {
43
+ value = JSON.parse(secretString);
44
+ }
45
+ catch {
46
+ value = secretString;
47
+ }
48
+ const metadata = {};
49
+ if (result.VersionId) {
50
+ metadata.version = String(result.VersionId);
51
+ }
52
+ if (result.CreatedDate && typeof result.CreatedDate === 'string') {
53
+ metadata.createdAt = new Date(result.CreatedDate);
54
+ }
55
+ return {
56
+ value,
57
+ metadata,
58
+ };
59
+ }
60
+ catch (error) {
61
+ if (error instanceof Error && error.message.includes('ResourceNotFoundException')) {
62
+ throw new Error(`Secret not found: ${secretName}`);
63
+ }
64
+ throw error;
65
+ }
66
+ }
67
+ /**
68
+ * Check if a secret exists
69
+ */
70
+ async exists(secretName) {
71
+ try {
72
+ await this.callAWSAPI('DescribeSecret', { SecretId: secretName });
73
+ return true;
74
+ }
75
+ catch (error) {
76
+ if (error instanceof Error && error.message.includes('ResourceNotFoundException')) {
77
+ return false;
78
+ }
79
+ throw error;
80
+ }
81
+ }
82
+ /**
83
+ * List secrets (returns secret ARNs)
84
+ */
85
+ async listSecrets() {
86
+ if (!this.initialized) {
87
+ await this.initialize();
88
+ }
89
+ try {
90
+ const result = await this.callAWSAPI('ListSecrets', {});
91
+ const secretList = result.SecretList;
92
+ return secretList?.map((s) => s.Name) || [];
93
+ }
94
+ catch (error) {
95
+ throw new Error(`Failed to list secrets: ${error instanceof Error ? error.message : 'Unknown error'}`);
96
+ }
97
+ }
98
+ /**
99
+ * Call AWS Secrets Manager API
100
+ *
101
+ * This is a simplified implementation. In production, use @aws-sdk/client-secrets-manager
102
+ */
103
+ async callAWSAPI(_action, _params) {
104
+ // This is a placeholder - real implementation would use AWS SDK
105
+ // For now, throw an error indicating AWS SDK is needed
106
+ throw new Error(`AWS Secrets Manager integration requires @aws-sdk/client-secrets-manager package. ` +
107
+ `Install it with: npm install @aws-sdk/client-secrets-manager`);
108
+ // Production implementation would use:
109
+ // import { SecretsManagerClient, GetSecretValueCommand } from '@aws-sdk/client-secrets-manager';
110
+ // const client = new SecretsManagerClient({ region: this.config.region, credentials: this.credentials });
111
+ // const command = new GetSecretValueCommand({ SecretId: secretName });
112
+ // const response = await client.send(command);
113
+ }
114
+ async destroy() {
115
+ this.initialized = false;
116
+ }
117
+ }
118
+ //# sourceMappingURL=aws.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws.js","sourceRoot":"","sources":["../../../src/secrets/providers/aws.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Azure Key Vault Secret Provider
3
+ *
4
+ * Supports service principal and managed identity authentication.
5
+ */
6
+ import type { SecretProvider, Secret, AzureKeyVaultConfig } from '../types.js';
7
+ export declare class AzureKeyVaultProvider implements SecretProvider {
8
+ private config;
9
+ private accessToken?;
10
+ private tokenExpiresAt?;
11
+ private initialized;
12
+ constructor(config: AzureKeyVaultConfig);
13
+ initialize(): Promise<void>;
14
+ /**
15
+ * Get or refresh access token
16
+ */
17
+ private refreshAccessToken;
18
+ /**
19
+ * Authenticate using service principal
20
+ */
21
+ private authenticateWithServicePrincipal;
22
+ /**
23
+ * Authenticate using managed identity
24
+ */
25
+ private authenticateWithManagedIdentity;
26
+ /**
27
+ * Get a secret from Azure Key Vault
28
+ */
29
+ getSecret(secretName: string): Promise<Secret>;
30
+ /**
31
+ * Check if a secret exists
32
+ */
33
+ exists(secretName: string): Promise<boolean>;
34
+ /**
35
+ * List secrets
36
+ */
37
+ listSecrets(): Promise<string[]>;
38
+ destroy(): Promise<void>;
39
+ }
40
+ //# sourceMappingURL=azure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure.d.ts","sourceRoot":"","sources":["../../../src/secrets/providers/azure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE/E,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAC,CAAO;IAC9B,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,mBAAmB;IAUjC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBjC;;OAEG;YACW,kBAAkB;IAahC;;OAEG;YACW,gCAAgC;IA0B9C;;OAEG;YACW,+BAA+B;IAc7C;;OAEG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqDpD;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA2BhC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B"}