@dyanet/config-aws 1.0.0 → 1.0.2
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.
- package/README.md +334 -65
- package/dist/cjs/loaders/env-file.loader.js +2 -2
- package/dist/cjs/loaders/env-file.loader.js.map +1 -1
- package/dist/cjs/loaders/s3.loader.js +5 -5
- package/dist/cjs/loaders/s3.loader.js.map +1 -1
- package/dist/cjs/loaders/secrets-manager.loader.js +15 -8
- package/dist/cjs/loaders/secrets-manager.loader.js.map +1 -1
- package/dist/cjs/loaders/ssm-parameter-store.loader.js +5 -5
- package/dist/cjs/loaders/ssm-parameter-store.loader.js.map +1 -1
- package/dist/cjs/utils/validation.util.js +5 -5
- package/dist/cjs/utils/validation.util.js.map +1 -1
- package/dist/esm/loaders/env-file.loader.js +1 -1
- package/dist/esm/loaders/env-file.loader.js.map +1 -1
- package/dist/esm/loaders/s3.loader.js +1 -1
- package/dist/esm/loaders/s3.loader.js.map +1 -1
- package/dist/esm/loaders/secrets-manager.loader.js +11 -4
- package/dist/esm/loaders/secrets-manager.loader.js.map +1 -1
- package/dist/esm/loaders/ssm-parameter-store.loader.js +1 -1
- package/dist/esm/loaders/ssm-parameter-store.loader.js.map +1 -1
- package/dist/esm/utils/validation.util.js +1 -1
- package/dist/esm/utils/validation.util.js.map +1 -1
- package/dist/types/loaders/secrets-manager.loader.d.ts +1 -1
- package/dist/types/loaders/secrets-manager.loader.d.ts.map +1 -1
- package/dist/types/utils/validation.util.d.ts +1 -1
- package/dist/types/utils/validation.util.d.ts.map +1 -1
- package/package.json +7 -10
package/README.md
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
# @dyanet/config-aws
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@dyanet/config-aws)
|
|
4
|
+
[](https://github.com/dyanet/config-aws/actions/workflows/ci.yml)
|
|
5
|
+
[](https://codecov.io/gh/dyanet/config-aws)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
|
|
8
|
+
Framework-agnostic AWS configuration management library for Node.js applications. Load configuration from environment variables, AWS Secrets Manager, SSM Parameter Store, S3, and `.env` files with configurable precedence.
|
|
4
9
|
|
|
5
10
|
## Features
|
|
6
11
|
|
|
7
|
-
- **
|
|
8
|
-
- **
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
12
|
+
- **Framework Agnostic** - Works with any JavaScript/TypeScript application
|
|
13
|
+
- **Multiple Sources** - Environment variables, `.env` files, S3, Secrets Manager, SSM Parameter Store
|
|
14
|
+
- **Configurable Precedence** - Control which sources override others
|
|
15
|
+
- **Schema Validation** - Validate configuration with Zod schemas
|
|
16
|
+
- **TypeScript First** - Full type safety and IntelliSense support
|
|
17
|
+
- **Verbose Logging** - Debug configuration loading with detailed output
|
|
18
|
+
- **Tree-Shakeable** - ESM and CommonJS builds with tree-shaking support
|
|
13
19
|
|
|
14
20
|
## Installation
|
|
15
21
|
|
|
@@ -42,27 +48,27 @@ import { ConfigManager, EnvironmentLoader, SecretsManagerLoader } from '@dyanet/
|
|
|
42
48
|
import { z } from 'zod';
|
|
43
49
|
|
|
44
50
|
// Define your configuration schema
|
|
45
|
-
const
|
|
51
|
+
const schema = z.object({
|
|
46
52
|
DATABASE_URL: z.string(),
|
|
47
53
|
API_KEY: z.string(),
|
|
48
|
-
PORT: z.
|
|
54
|
+
PORT: z.coerce.number().default(3000),
|
|
49
55
|
});
|
|
50
56
|
|
|
51
57
|
// Create and load configuration
|
|
52
|
-
const
|
|
58
|
+
const config = new ConfigManager({
|
|
53
59
|
loaders: [
|
|
54
60
|
new EnvironmentLoader({ prefix: 'APP_' }),
|
|
55
|
-
new SecretsManagerLoader({ secretName: '/
|
|
61
|
+
new SecretsManagerLoader({ secretName: '/my-app/config' }),
|
|
56
62
|
],
|
|
57
|
-
schema
|
|
58
|
-
precedence: 'aws-first', // AWS
|
|
63
|
+
schema,
|
|
64
|
+
precedence: 'aws-first', // AWS sources override local
|
|
59
65
|
});
|
|
60
66
|
|
|
61
|
-
await
|
|
67
|
+
await config.load();
|
|
62
68
|
|
|
63
|
-
// Access configuration
|
|
64
|
-
const dbUrl =
|
|
65
|
-
const allConfig =
|
|
69
|
+
// Access configuration values
|
|
70
|
+
const dbUrl = config.get('DATABASE_URL');
|
|
71
|
+
const allConfig = config.getAll();
|
|
66
72
|
```
|
|
67
73
|
|
|
68
74
|
## Loaders
|
|
@@ -72,123 +78,386 @@ const allConfig = configManager.getAll();
|
|
|
72
78
|
Loads configuration from `process.env` with optional prefix filtering.
|
|
73
79
|
|
|
74
80
|
```typescript
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
81
|
+
import { EnvironmentLoader } from '@dyanet/config-aws';
|
|
82
|
+
|
|
83
|
+
const loader = new EnvironmentLoader({
|
|
84
|
+
prefix: 'APP_', // Only load vars starting with APP_
|
|
85
|
+
exclude: ['APP_SECRET'], // Exclude specific variables
|
|
78
86
|
});
|
|
79
87
|
```
|
|
80
88
|
|
|
89
|
+
| Option | Type | Default | Description |
|
|
90
|
+
|--------|------|---------|-------------|
|
|
91
|
+
| `prefix` | `string` | `undefined` | Only load variables starting with this prefix (prefix is stripped from keys) |
|
|
92
|
+
| `exclude` | `string[]` | `[]` | Variable names to exclude from loading |
|
|
93
|
+
|
|
81
94
|
### EnvFileLoader
|
|
82
95
|
|
|
83
|
-
Loads configuration from `.env` files using AWS ECS format.
|
|
96
|
+
Loads configuration from `.env` files using [AWS ECS environment file format](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/use-environment-file.html).
|
|
84
97
|
|
|
85
98
|
```typescript
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
99
|
+
import { EnvFileLoader } from '@dyanet/config-aws';
|
|
100
|
+
|
|
101
|
+
const loader = new EnvFileLoader({
|
|
102
|
+
paths: ['.env', '.env.local', '.env.production'],
|
|
103
|
+
override: true,
|
|
89
104
|
});
|
|
90
105
|
```
|
|
91
106
|
|
|
107
|
+
| Option | Type | Default | Description |
|
|
108
|
+
|--------|------|---------|-------------|
|
|
109
|
+
| `paths` | `string[]` | `['.env', '.env.local']` | Paths to `.env` files to load |
|
|
110
|
+
| `encoding` | `BufferEncoding` | `'utf-8'` | File encoding |
|
|
111
|
+
| `override` | `boolean` | `true` | Whether later files override earlier ones |
|
|
112
|
+
|
|
113
|
+
**Environment File Format:**
|
|
114
|
+
```bash
|
|
115
|
+
# Lines beginning with # are comments
|
|
116
|
+
DATABASE_URL=postgres://localhost:5432/db
|
|
117
|
+
API_KEY=sk-1234567890
|
|
118
|
+
|
|
119
|
+
# Values can contain = signs
|
|
120
|
+
CONNECTION_STRING=host=localhost;port=5432
|
|
121
|
+
|
|
122
|
+
# No quotes needed - quotes are literal
|
|
123
|
+
MESSAGE=Hello World
|
|
124
|
+
```
|
|
125
|
+
|
|
92
126
|
### S3Loader
|
|
93
127
|
|
|
94
|
-
Loads configuration from S3 buckets
|
|
128
|
+
Loads configuration from S3 buckets. Supports JSON and `.env` formats with auto-detection.
|
|
95
129
|
|
|
96
130
|
```typescript
|
|
97
|
-
|
|
131
|
+
import { S3Loader } from '@dyanet/config-aws';
|
|
132
|
+
|
|
133
|
+
const loader = new S3Loader({
|
|
98
134
|
bucket: 'my-config-bucket',
|
|
99
135
|
key: 'config/production.json',
|
|
100
|
-
|
|
136
|
+
region: 'us-east-1',
|
|
137
|
+
format: 'auto', // or 'json' | 'env'
|
|
101
138
|
});
|
|
102
139
|
```
|
|
103
140
|
|
|
141
|
+
| Option | Type | Default | Description |
|
|
142
|
+
|--------|------|---------|-------------|
|
|
143
|
+
| `bucket` | `string` | **required** | S3 bucket name |
|
|
144
|
+
| `key` | `string` | **required** | S3 object key |
|
|
145
|
+
| `region` | `string` | `undefined` | AWS region (uses default if not specified) |
|
|
146
|
+
| `format` | `'json' \| 'env' \| 'auto'` | `'auto'` | Configuration file format |
|
|
147
|
+
|
|
104
148
|
### SecretsManagerLoader
|
|
105
149
|
|
|
106
150
|
Loads configuration from AWS Secrets Manager.
|
|
107
151
|
|
|
108
152
|
```typescript
|
|
109
|
-
|
|
110
|
-
|
|
153
|
+
import { SecretsManagerLoader } from '@dyanet/config-aws';
|
|
154
|
+
|
|
155
|
+
const loader = new SecretsManagerLoader({
|
|
156
|
+
secretName: '/my-app/database',
|
|
111
157
|
region: 'us-east-1',
|
|
112
158
|
environmentMapping: {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
}
|
|
159
|
+
development: 'dev/',
|
|
160
|
+
production: 'prod/',
|
|
161
|
+
},
|
|
117
162
|
});
|
|
118
163
|
```
|
|
119
164
|
|
|
165
|
+
| Option | Type | Default | Description |
|
|
166
|
+
|--------|------|---------|-------------|
|
|
167
|
+
| `secretName` | `string` | `undefined` | Name or ARN of the secret |
|
|
168
|
+
| `region` | `string` | `undefined` | AWS region |
|
|
169
|
+
| `environmentMapping` | `Record<string, string>` | `undefined` | Map environment names to path prefixes |
|
|
170
|
+
|
|
120
171
|
### SSMParameterStoreLoader
|
|
121
172
|
|
|
122
|
-
Loads configuration from AWS SSM Parameter Store.
|
|
173
|
+
Loads configuration from AWS SSM Parameter Store with pagination support.
|
|
123
174
|
|
|
124
175
|
```typescript
|
|
125
|
-
|
|
126
|
-
|
|
176
|
+
import { SSMParameterStoreLoader } from '@dyanet/config-aws';
|
|
177
|
+
|
|
178
|
+
const loader = new SSMParameterStoreLoader({
|
|
179
|
+
parameterPath: '/my-app/config',
|
|
127
180
|
region: 'us-east-1',
|
|
128
|
-
withDecryption: true
|
|
181
|
+
withDecryption: true,
|
|
182
|
+
environmentMapping: {
|
|
183
|
+
development: '/dev',
|
|
184
|
+
production: '/prod',
|
|
185
|
+
},
|
|
129
186
|
});
|
|
130
187
|
```
|
|
131
188
|
|
|
132
|
-
|
|
189
|
+
| Option | Type | Default | Description |
|
|
190
|
+
|--------|------|---------|-------------|
|
|
191
|
+
| `parameterPath` | `string` | `undefined` | Path prefix for parameters |
|
|
192
|
+
| `region` | `string` | `undefined` | AWS region |
|
|
193
|
+
| `withDecryption` | `boolean` | `true` | Decrypt SecureString parameters |
|
|
194
|
+
| `environmentMapping` | `Record<string, string>` | `undefined` | Map environment names to path prefixes |
|
|
133
195
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
196
|
+
## ConfigManager
|
|
197
|
+
|
|
198
|
+
The `ConfigManager` orchestrates loading from multiple sources with configurable precedence.
|
|
199
|
+
|
|
200
|
+
### Options
|
|
137
201
|
|
|
138
202
|
```typescript
|
|
139
|
-
|
|
140
|
-
|
|
203
|
+
interface ConfigManagerOptions<T> {
|
|
204
|
+
loaders?: ConfigLoader[];
|
|
205
|
+
schema?: ZodType<T>;
|
|
206
|
+
precedence?: 'aws-first' | 'local-first' | LoaderPrecedence[];
|
|
207
|
+
validateOnLoad?: boolean;
|
|
208
|
+
enableLogging?: boolean;
|
|
209
|
+
logger?: Logger;
|
|
210
|
+
verbose?: VerboseOptions | boolean;
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
| Option | Type | Default | Description |
|
|
215
|
+
|--------|------|---------|-------------|
|
|
216
|
+
| `loaders` | `ConfigLoader[]` | `[]` | Array of configuration loaders |
|
|
217
|
+
| `schema` | `ZodType<T>` | `undefined` | Zod schema for validation |
|
|
218
|
+
| `precedence` | `string \| LoaderPrecedence[]` | `'aws-first'` | Precedence strategy |
|
|
219
|
+
| `validateOnLoad` | `boolean` | `true` | Validate configuration after loading |
|
|
220
|
+
| `enableLogging` | `boolean` | `false` | Enable basic logging |
|
|
221
|
+
| `logger` | `Logger` | `console` | Custom logger implementation |
|
|
222
|
+
| `verbose` | `VerboseOptions \| boolean` | `false` | Enable verbose debugging output |
|
|
223
|
+
|
|
224
|
+
### Precedence Strategies
|
|
225
|
+
|
|
226
|
+
**`aws-first`** (default): Local sources load first, AWS sources override
|
|
227
|
+
```
|
|
228
|
+
EnvironmentLoader → EnvFileLoader → S3Loader → SecretsManagerLoader → SSMParameterStoreLoader
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**`local-first`**: AWS sources load first, local sources override
|
|
232
|
+
```
|
|
233
|
+
SSMParameterStoreLoader → SecretsManagerLoader → S3Loader → EnvFileLoader → EnvironmentLoader
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Custom precedence**: Define your own order
|
|
237
|
+
```typescript
|
|
238
|
+
const config = new ConfigManager({
|
|
141
239
|
loaders: [envLoader, secretsLoader, ssmLoader],
|
|
142
240
|
precedence: [
|
|
143
241
|
{ loader: 'EnvironmentLoader', priority: 1 },
|
|
144
|
-
{ loader: '
|
|
145
|
-
{ loader: '
|
|
146
|
-
]
|
|
242
|
+
{ loader: 'SSMParameterStoreLoader', priority: 2 },
|
|
243
|
+
{ loader: 'SecretsManagerLoader', priority: 3 }, // Highest priority wins
|
|
244
|
+
],
|
|
147
245
|
});
|
|
148
246
|
```
|
|
149
247
|
|
|
248
|
+
### Methods
|
|
249
|
+
|
|
250
|
+
```typescript
|
|
251
|
+
// Load configuration from all sources
|
|
252
|
+
await config.load();
|
|
253
|
+
|
|
254
|
+
// Get a specific value
|
|
255
|
+
const value = config.get('DATABASE_URL');
|
|
256
|
+
|
|
257
|
+
// Get all configuration
|
|
258
|
+
const all = config.getAll();
|
|
259
|
+
|
|
260
|
+
// Check if loaded
|
|
261
|
+
const loaded = config.isLoaded();
|
|
262
|
+
|
|
263
|
+
// Get current environment
|
|
264
|
+
const env = config.getAppEnv(); // reads APP_ENV or defaults to 'development'
|
|
265
|
+
|
|
266
|
+
// Get load result with source info
|
|
267
|
+
const result = config.getLoadResult();
|
|
268
|
+
|
|
269
|
+
// Serialize to JSON
|
|
270
|
+
const json = config.serialize();
|
|
271
|
+
|
|
272
|
+
// Deserialize from JSON
|
|
273
|
+
const restored = ConfigManager.deserialize(json, { schema });
|
|
274
|
+
```
|
|
275
|
+
|
|
150
276
|
## Verbose Logging
|
|
151
277
|
|
|
152
278
|
Enable detailed logging to debug configuration loading:
|
|
153
279
|
|
|
154
280
|
```typescript
|
|
155
|
-
const
|
|
281
|
+
const config = new ConfigManager({
|
|
282
|
+
loaders: [...],
|
|
283
|
+
verbose: true, // Enable all verbose options
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
// Or customize verbose options
|
|
287
|
+
const config = new ConfigManager({
|
|
156
288
|
loaders: [...],
|
|
157
289
|
verbose: {
|
|
158
|
-
logKeys: true,
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
290
|
+
logKeys: true, // Log variable names
|
|
291
|
+
logValues: false, // Log values (WARNING: may expose secrets)
|
|
292
|
+
logOverrides: true, // Log when variables are overridden
|
|
293
|
+
logTiming: true, // Log loader timing
|
|
294
|
+
maskValues: true, // Mask sensitive values
|
|
295
|
+
sensitiveKeys: ['password', 'secret', 'key', 'token'],
|
|
296
|
+
},
|
|
163
297
|
});
|
|
164
298
|
```
|
|
165
299
|
|
|
166
|
-
|
|
300
|
+
**Example output:**
|
|
301
|
+
```
|
|
302
|
+
[config-aws] Loading configuration...
|
|
303
|
+
[config-aws] EnvironmentLoader: loaded 15 keys in 2ms
|
|
304
|
+
[config-aws] - DATABASE_URL
|
|
305
|
+
[config-aws] - API_KEY
|
|
306
|
+
[config-aws] - PORT
|
|
307
|
+
[config-aws] SecretsManagerLoader: loaded 3 keys in 145ms
|
|
308
|
+
[config-aws] - DATABASE_URL (overrides EnvironmentLoader)
|
|
309
|
+
[config-aws] - API_SECRET
|
|
310
|
+
[config-aws] - JWT_KEY
|
|
311
|
+
[config-aws] Configuration loaded: 18 total keys, 2 overrides, 236ms total
|
|
312
|
+
```
|
|
167
313
|
|
|
168
|
-
|
|
314
|
+
## Error Handling
|
|
169
315
|
|
|
170
|
-
|
|
171
|
-
- `ValidationError` - Zod schema validation failed
|
|
172
|
-
- `AWSServiceError` - AWS API call failed
|
|
173
|
-
- `ConfigurationLoadError` - Loader failed to load
|
|
174
|
-
- `MissingConfigurationError` - Required keys missing
|
|
316
|
+
The library provides specific error classes for different failure scenarios:
|
|
175
317
|
|
|
176
318
|
```typescript
|
|
319
|
+
import {
|
|
320
|
+
ConfigurationError, // Base error class
|
|
321
|
+
ValidationError, // Schema validation failed
|
|
322
|
+
AWSServiceError, // AWS API call failed
|
|
323
|
+
ConfigurationLoadError, // Loader failed to load
|
|
324
|
+
MissingConfigurationError, // Required keys missing
|
|
325
|
+
} from '@dyanet/config-aws';
|
|
326
|
+
|
|
177
327
|
try {
|
|
178
|
-
await
|
|
328
|
+
await config.load();
|
|
179
329
|
} catch (error) {
|
|
180
330
|
if (error instanceof ValidationError) {
|
|
181
|
-
console.error('
|
|
331
|
+
console.error('Validation failed:', error.validationErrors);
|
|
182
332
|
} else if (error instanceof AWSServiceError) {
|
|
183
|
-
console.error(`AWS ${error.service} failed:`, error.
|
|
333
|
+
console.error(`AWS ${error.service} failed:`, error.operation);
|
|
334
|
+
} else if (error instanceof ConfigurationLoadError) {
|
|
335
|
+
console.error(`Loader ${error.loader} failed:`, error.message);
|
|
184
336
|
}
|
|
185
337
|
}
|
|
186
338
|
```
|
|
187
339
|
|
|
188
|
-
##
|
|
340
|
+
## Schema Validation
|
|
341
|
+
|
|
342
|
+
Use Zod schemas to validate and transform configuration:
|
|
343
|
+
|
|
344
|
+
```typescript
|
|
345
|
+
import { z } from 'zod';
|
|
346
|
+
|
|
347
|
+
const schema = z.object({
|
|
348
|
+
// Required string
|
|
349
|
+
DATABASE_URL: z.string().url(),
|
|
350
|
+
|
|
351
|
+
// Number with coercion and default
|
|
352
|
+
PORT: z.coerce.number().default(3000),
|
|
353
|
+
|
|
354
|
+
// Boolean with coercion
|
|
355
|
+
DEBUG: z.coerce.boolean().default(false),
|
|
356
|
+
|
|
357
|
+
// Enum
|
|
358
|
+
NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
|
|
359
|
+
|
|
360
|
+
// Optional with default
|
|
361
|
+
LOG_LEVEL: z.string().default('info'),
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
type Config = z.infer<typeof schema>;
|
|
365
|
+
|
|
366
|
+
const config = new ConfigManager<Config>({
|
|
367
|
+
loaders: [...],
|
|
368
|
+
schema,
|
|
369
|
+
validateOnLoad: true,
|
|
370
|
+
});
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## Custom Loaders
|
|
374
|
+
|
|
375
|
+
Implement the `ConfigLoader` interface to create custom loaders:
|
|
376
|
+
|
|
377
|
+
```typescript
|
|
378
|
+
import { ConfigLoader } from '@dyanet/config-aws';
|
|
379
|
+
|
|
380
|
+
class CustomLoader implements ConfigLoader {
|
|
381
|
+
getName(): string {
|
|
382
|
+
return 'CustomLoader';
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
async isAvailable(): Promise<boolean> {
|
|
386
|
+
// Return true if this loader can load configuration
|
|
387
|
+
return true;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
async load(): Promise<Record<string, unknown>> {
|
|
391
|
+
// Load and return configuration
|
|
392
|
+
return {
|
|
393
|
+
CUSTOM_KEY: 'custom_value',
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
## Utilities
|
|
400
|
+
|
|
401
|
+
### EnvFileParser
|
|
402
|
+
|
|
403
|
+
Parse `.env` file content directly:
|
|
404
|
+
|
|
405
|
+
```typescript
|
|
406
|
+
import { EnvFileParser } from '@dyanet/config-aws';
|
|
407
|
+
|
|
408
|
+
const content = `
|
|
409
|
+
# Database config
|
|
410
|
+
DATABASE_URL=postgres://localhost:5432/db
|
|
411
|
+
API_KEY=sk-1234567890
|
|
412
|
+
`;
|
|
413
|
+
|
|
414
|
+
const parsed = EnvFileParser.parse(content);
|
|
415
|
+
// { DATABASE_URL: 'postgres://localhost:5432/db', API_KEY: 'sk-1234567890' }
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### ConfigValidationUtil
|
|
419
|
+
|
|
420
|
+
Validate configuration objects:
|
|
421
|
+
|
|
422
|
+
```typescript
|
|
423
|
+
import { ConfigValidationUtil } from '@dyanet/config-aws';
|
|
424
|
+
import { z } from 'zod';
|
|
425
|
+
|
|
426
|
+
const schema = z.object({
|
|
427
|
+
PORT: z.coerce.number(),
|
|
428
|
+
});
|
|
429
|
+
|
|
430
|
+
const result = ConfigValidationUtil.validate({ PORT: '3000' }, schema);
|
|
431
|
+
// { PORT: 3000 }
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
## TypeScript Support
|
|
435
|
+
|
|
436
|
+
Full TypeScript support with type inference from Zod schemas:
|
|
437
|
+
|
|
438
|
+
```typescript
|
|
439
|
+
import { ConfigManager } from '@dyanet/config-aws';
|
|
440
|
+
import { z } from 'zod';
|
|
441
|
+
|
|
442
|
+
const schema = z.object({
|
|
443
|
+
DATABASE_URL: z.string(),
|
|
444
|
+
PORT: z.coerce.number(),
|
|
445
|
+
});
|
|
446
|
+
|
|
447
|
+
type Config = z.infer<typeof schema>;
|
|
448
|
+
|
|
449
|
+
const config = new ConfigManager<Config>({ schema, loaders: [...] });
|
|
450
|
+
await config.load();
|
|
451
|
+
|
|
452
|
+
// Fully typed
|
|
453
|
+
const port: number = config.get('PORT');
|
|
454
|
+
const all: Config = config.getAll();
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
## Related Packages
|
|
189
458
|
|
|
190
|
-
- **
|
|
191
|
-
- **
|
|
459
|
+
- **[@dyanet/nestjs-config-aws](../nestjs-config-aws)** - NestJS adapter for this library
|
|
460
|
+
- **[@dyanet/nextjs-config-aws](../nextjs-config-aws)** - Next.js adapter for this library
|
|
192
461
|
|
|
193
462
|
## License
|
|
194
463
|
|
|
@@ -37,7 +37,7 @@ exports.EnvFileLoader = void 0;
|
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
39
|
const env_file_parser_util_1 = require("../utils/env-file-parser.util");
|
|
40
|
-
const
|
|
40
|
+
const index_js_1 = require("../errors/index.js");
|
|
41
41
|
/**
|
|
42
42
|
* Loader that reads configuration from .env files on the filesystem.
|
|
43
43
|
* Uses AWS ECS-compatible format for parsing.
|
|
@@ -123,7 +123,7 @@ class EnvFileLoader {
|
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
catch (error) {
|
|
126
|
-
throw new
|
|
126
|
+
throw new index_js_1.ConfigurationLoadError(`Failed to read env file: ${resolvedPath}`, this.getName(), error instanceof Error ? error : undefined);
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-file.loader.js","sourceRoot":"","sources":["../../../src/loaders/env-file.loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAG7B,wEAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"env-file.loader.js","sourceRoot":"","sources":["../../../src/loaders/env-file.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ exports.S3Loader = void 0;
|
|
|
4
4
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
5
5
|
const credential_providers_1 = require("@aws-sdk/credential-providers");
|
|
6
6
|
const env_file_parser_util_1 = require("../utils/env-file-parser.util");
|
|
7
|
-
const
|
|
7
|
+
const index_js_1 = require("../errors/index.js");
|
|
8
8
|
/**
|
|
9
9
|
* Loader that reads configuration from S3 buckets.
|
|
10
10
|
* Supports JSON and .env file formats with auto-detection.
|
|
@@ -79,7 +79,7 @@ class S3Loader {
|
|
|
79
79
|
return this.parseContent(content);
|
|
80
80
|
}
|
|
81
81
|
catch (error) {
|
|
82
|
-
if (error instanceof
|
|
82
|
+
if (error instanceof index_js_1.ConfigurationLoadError) {
|
|
83
83
|
throw error;
|
|
84
84
|
}
|
|
85
85
|
if (error instanceof Error) {
|
|
@@ -88,10 +88,10 @@ class S3Loader {
|
|
|
88
88
|
return {};
|
|
89
89
|
}
|
|
90
90
|
if (error.name === 'AccessDenied') {
|
|
91
|
-
throw new
|
|
91
|
+
throw new index_js_1.AWSServiceError(`Access denied when retrieving s3://${this._config.bucket}/${this._config.key}. Check AWS credentials and permissions.`, 'S3', 'GetObject', error);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
throw new
|
|
94
|
+
throw new index_js_1.AWSServiceError(`Failed to retrieve s3://${this._config.bucket}/${this._config.key}: ${error instanceof Error ? error.message : String(error)}`, 'S3', 'GetObject', error instanceof Error ? error : undefined);
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
@@ -133,7 +133,7 @@ class S3Loader {
|
|
|
133
133
|
return { CONFIG_VALUE: parsed };
|
|
134
134
|
}
|
|
135
135
|
catch (error) {
|
|
136
|
-
throw new
|
|
136
|
+
throw new index_js_1.ConfigurationLoadError(`Failed to parse JSON from s3://${this._config.bucket}/${this._config.key}: ${error instanceof Error ? error.message : String(error)}`, this.getName(), error instanceof Error ? error : undefined);
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.loader.js","sourceRoot":"","sources":["../../../src/loaders/s3.loader.ts"],"names":[],"mappings":";;;AAAA,kDAAgE;AAChE,wEAAsE;AAGtE,wEAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"s3.loader.js","sourceRoot":"","sources":["../../../src/loaders/s3.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SecretsManagerLoader = void 0;
|
|
4
4
|
const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
|
|
5
5
|
const credential_providers_1 = require("@aws-sdk/credential-providers");
|
|
6
|
-
const
|
|
6
|
+
const index_js_1 = require("../errors/index.js");
|
|
7
7
|
/**
|
|
8
8
|
* Loader that reads configuration from AWS Secrets Manager.
|
|
9
9
|
* Supports environment-aware path construction.
|
|
@@ -48,11 +48,18 @@ class SecretsManagerLoader {
|
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
50
|
* Get the name of this loader for logging and debugging.
|
|
51
|
-
* @returns The loader name with secret path
|
|
51
|
+
* @returns The loader name with secret path or base secret name if path cannot be built
|
|
52
52
|
*/
|
|
53
53
|
getName() {
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
// Avoid calling buildSecretName() to prevent stack overflow when
|
|
55
|
+
// environment mapping is missing - buildSecretName() throws an error
|
|
56
|
+
// that includes getName() in the message, causing infinite recursion.
|
|
57
|
+
const envPrefix = this._config.environmentMapping[this._appEnv];
|
|
58
|
+
if (envPrefix) {
|
|
59
|
+
return `SecretsManagerLoader(/${envPrefix}${this._config.secretName})`;
|
|
60
|
+
}
|
|
61
|
+
// Fallback to base secret name when environment mapping is unavailable
|
|
62
|
+
return `SecretsManagerLoader(${this._config.secretName})`;
|
|
56
63
|
}
|
|
57
64
|
/**
|
|
58
65
|
* Check if this loader is available in the current environment.
|
|
@@ -115,14 +122,14 @@ class SecretsManagerLoader {
|
|
|
115
122
|
return {};
|
|
116
123
|
}
|
|
117
124
|
if (error.name === 'AccessDeniedException') {
|
|
118
|
-
throw new
|
|
125
|
+
throw new index_js_1.AWSServiceError(`Access denied when retrieving secret '${secretName}'. Check AWS credentials and permissions.`, 'SecretsManager', 'GetSecretValue', error);
|
|
119
126
|
}
|
|
120
127
|
if (error.name === 'InvalidRequestException') {
|
|
121
|
-
throw new
|
|
128
|
+
throw new index_js_1.AWSServiceError(`Invalid request when retrieving secret '${secretName}'. Check secret name format.`, 'SecretsManager', 'GetSecretValue', error);
|
|
122
129
|
}
|
|
123
130
|
}
|
|
124
131
|
// For other errors, wrap in AWSServiceError
|
|
125
|
-
throw new
|
|
132
|
+
throw new index_js_1.AWSServiceError(`Failed to retrieve secret '${secretName}' from AWS Secrets Manager: ${error instanceof Error ? error.message : String(error)}`, 'SecretsManager', 'GetSecretValue', error instanceof Error ? error : undefined);
|
|
126
133
|
}
|
|
127
134
|
}
|
|
128
135
|
/**
|
|
@@ -132,7 +139,7 @@ class SecretsManagerLoader {
|
|
|
132
139
|
buildSecretName() {
|
|
133
140
|
const envPrefix = this._config.environmentMapping[this._appEnv];
|
|
134
141
|
if (!envPrefix) {
|
|
135
|
-
throw new
|
|
142
|
+
throw new index_js_1.ConfigurationLoadError(`No environment mapping found for APP_ENV '${this._appEnv}'. ` +
|
|
136
143
|
`Available environments: ${Object.keys(this._config.environmentMapping).join(', ')}`, this.getName());
|
|
137
144
|
}
|
|
138
145
|
return `/${envPrefix}${this._config.secretName}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets-manager.loader.js","sourceRoot":"","sources":["../../../src/loaders/secrets-manager.loader.ts"],"names":[],"mappings":";;;AAAA,4EAA8F;AAC9F,wEAAsE;AAItE,
|
|
1
|
+
{"version":3,"file":"secrets-manager.loader.js","sourceRoot":"","sources":["../../../src/loaders/secrets-manager.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SSMParameterStoreLoader = void 0;
|
|
4
4
|
const client_ssm_1 = require("@aws-sdk/client-ssm");
|
|
5
5
|
const credential_providers_1 = require("@aws-sdk/credential-providers");
|
|
6
|
-
const
|
|
6
|
+
const index_js_1 = require("../errors/index.js");
|
|
7
7
|
/**
|
|
8
8
|
* Loader that reads configuration from AWS SSM Parameter Store.
|
|
9
9
|
* Supports environment-aware path construction, pagination, and decryption options.
|
|
@@ -126,14 +126,14 @@ class SSMParameterStoreLoader {
|
|
|
126
126
|
return {};
|
|
127
127
|
}
|
|
128
128
|
if (error.name === 'AccessDeniedException') {
|
|
129
|
-
throw new
|
|
129
|
+
throw new index_js_1.AWSServiceError(`Access denied when retrieving parameters from path '${parameterPath}'. Check AWS credentials and permissions.`, 'SSM', 'GetParametersByPath', error);
|
|
130
130
|
}
|
|
131
131
|
if (error.name === 'InvalidFilterKey' || error.name === 'InvalidFilterValue') {
|
|
132
|
-
throw new
|
|
132
|
+
throw new index_js_1.AWSServiceError(`Invalid parameter path '${parameterPath}'. Check path format.`, 'SSM', 'GetParametersByPath', error);
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
// For other errors, wrap in AWSServiceError
|
|
136
|
-
throw new
|
|
136
|
+
throw new index_js_1.AWSServiceError(`Failed to retrieve parameters from path '${parameterPath}' in AWS SSM Parameter Store: ${error instanceof Error ? error.message : String(error)}`, 'SSM', 'GetParametersByPath', error instanceof Error ? error : undefined);
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
/**
|
|
@@ -144,7 +144,7 @@ class SSMParameterStoreLoader {
|
|
|
144
144
|
buildParameterPath() {
|
|
145
145
|
const envPrefix = this._config.environmentMapping[this._appEnv];
|
|
146
146
|
if (!envPrefix) {
|
|
147
|
-
throw new
|
|
147
|
+
throw new index_js_1.ConfigurationLoadError(`No environment mapping found for APP_ENV '${this._appEnv}'. ` +
|
|
148
148
|
`Available environments: ${Object.keys(this._config.environmentMapping).join(', ')}`, this.getName());
|
|
149
149
|
}
|
|
150
150
|
return `/${envPrefix}${this._config.parameterPath}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssm-parameter-store.loader.js","sourceRoot":"","sources":["../../../src/loaders/ssm-parameter-store.loader.ts"],"names":[],"mappings":";;;AAAA,oDAA4E;AAC5E,wEAAsE;AAItE,
|
|
1
|
+
{"version":3,"file":"ssm-parameter-store.loader.js","sourceRoot":"","sources":["../../../src/loaders/ssm-parameter-store.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ConfigValidationUtil = void 0;
|
|
4
|
-
const
|
|
4
|
+
const index_js_1 = require("../errors/index.js");
|
|
5
5
|
/**
|
|
6
6
|
* Framework-agnostic validation utility for configuration values.
|
|
7
7
|
* Provides methods for validating configuration objects against Zod schemas.
|
|
@@ -24,7 +24,7 @@ class ConfigValidationUtil {
|
|
|
24
24
|
const contextMessage = context
|
|
25
25
|
? `Configuration validation failed for ${context}`
|
|
26
26
|
: 'Configuration validation failed';
|
|
27
|
-
throw new
|
|
27
|
+
throw new index_js_1.ValidationError(contextMessage, errors);
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Safely validates a value against a Zod schema without throwing.
|
|
@@ -38,7 +38,7 @@ class ConfigValidationUtil {
|
|
|
38
38
|
return { success: true, data: result.data };
|
|
39
39
|
}
|
|
40
40
|
const errors = this.formatValidationErrors(result.error);
|
|
41
|
-
const validationError = new
|
|
41
|
+
const validationError = new index_js_1.ValidationError('Configuration validation failed', errors);
|
|
42
42
|
return { success: false, error: validationError };
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
@@ -103,10 +103,10 @@ class ConfigValidationUtil {
|
|
|
103
103
|
return this.validate(schema, value, `${source} configuration`);
|
|
104
104
|
}
|
|
105
105
|
catch (error) {
|
|
106
|
-
if (error instanceof
|
|
106
|
+
if (error instanceof index_js_1.ValidationError) {
|
|
107
107
|
// Enhance the error with source information
|
|
108
108
|
const enhancedMessage = `Configuration validation failed for source '${source}': ${error.message}`;
|
|
109
|
-
throw new
|
|
109
|
+
throw new index_js_1.ValidationError(enhancedMessage, error.validationErrors);
|
|
110
110
|
}
|
|
111
111
|
throw error;
|
|
112
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.util.js","sourceRoot":"","sources":["../../../src/utils/validation.util.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"validation.util.js","sourceRoot":"","sources":["../../../src/utils/validation.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { EnvFileParser } from '../utils/env-file-parser.util';
|
|
4
|
-
import { ConfigurationLoadError } from '../errors';
|
|
4
|
+
import { ConfigurationLoadError } from '../errors/index.js';
|
|
5
5
|
/**
|
|
6
6
|
* Loader that reads configuration from .env files on the filesystem.
|
|
7
7
|
* Uses AWS ECS-compatible format for parsing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-file.loader.js","sourceRoot":"","sources":["../../../src/loaders/env-file.loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"env-file.loader.js","sourceRoot":"","sources":["../../../src/loaders/env-file.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { GetObjectCommand, S3Client } from '@aws-sdk/client-s3';
|
|
2
2
|
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
3
3
|
import { EnvFileParser } from '../utils/env-file-parser.util';
|
|
4
|
-
import { AWSServiceError, ConfigurationLoadError } from '../errors';
|
|
4
|
+
import { AWSServiceError, ConfigurationLoadError } from '../errors/index.js';
|
|
5
5
|
/**
|
|
6
6
|
* Loader that reads configuration from S3 buckets.
|
|
7
7
|
* Supports JSON and .env file formats with auto-detection.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.loader.js","sourceRoot":"","sources":["../../../src/loaders/s3.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"s3.loader.js","sourceRoot":"","sources":["../../../src/loaders/s3.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,QAAQ;IAMnB,YAAY,MAAsB;QAChC,IAAI,CAAC,OAAO,GAAG;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,WAAW;YACjE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM;SAChC,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC;YAC1B,WAAW,EAAE,qBAAqB,EAAE;YACpC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,iBAAiB,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;IACrE,CAAC;IAGD;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;aACtB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAElD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAExD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACtC,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;gBAC5C,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBAChE,uDAAuD;oBACvD,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBAClC,MAAM,IAAI,eAAe,CACvB,sCAAsC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,0CAA0C,EACvH,IAAI,EACJ,WAAW,EACX,KAAK,CACN,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,IAAI,eAAe,CACvB,2BAA2B,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC/H,IAAI,EACJ,WAAW,EACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACO,YAAY,CAAC,OAAe;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAEjG,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACO,YAAY,CAAC,OAAe;QACpC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACO,SAAS,CAAC,OAAe;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEnC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5E,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,4BAA4B;YAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,sBAAsB,CAC9B,kCAAkC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACtI,IAAI,CAAC,OAAO,EAAE,EACd,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GetSecretValueCommand, SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
|
|
2
2
|
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
3
|
-
import { AWSServiceError, ConfigurationLoadError } from '../errors';
|
|
3
|
+
import { AWSServiceError, ConfigurationLoadError } from '../errors/index.js';
|
|
4
4
|
/**
|
|
5
5
|
* Loader that reads configuration from AWS Secrets Manager.
|
|
6
6
|
* Supports environment-aware path construction.
|
|
@@ -45,11 +45,18 @@ export class SecretsManagerLoader {
|
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
47
|
* Get the name of this loader for logging and debugging.
|
|
48
|
-
* @returns The loader name with secret path
|
|
48
|
+
* @returns The loader name with secret path or base secret name if path cannot be built
|
|
49
49
|
*/
|
|
50
50
|
getName() {
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
// Avoid calling buildSecretName() to prevent stack overflow when
|
|
52
|
+
// environment mapping is missing - buildSecretName() throws an error
|
|
53
|
+
// that includes getName() in the message, causing infinite recursion.
|
|
54
|
+
const envPrefix = this._config.environmentMapping[this._appEnv];
|
|
55
|
+
if (envPrefix) {
|
|
56
|
+
return `SecretsManagerLoader(/${envPrefix}${this._config.secretName})`;
|
|
57
|
+
}
|
|
58
|
+
// Fallback to base secret name when environment mapping is unavailable
|
|
59
|
+
return `SecretsManagerLoader(${this._config.secretName})`;
|
|
53
60
|
}
|
|
54
61
|
/**
|
|
55
62
|
* Check if this loader is available in the current environment.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets-manager.loader.js","sourceRoot":"","sources":["../../../src/loaders/secrets-manager.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAItE,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"secrets-manager.loader.js","sourceRoot":"","sources":["../../../src/loaders/secrets-manager.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GetParametersByPathCommand, SSMClient } from '@aws-sdk/client-ssm';
|
|
2
2
|
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
3
|
-
import { AWSServiceError, ConfigurationLoadError } from '../errors';
|
|
3
|
+
import { AWSServiceError, ConfigurationLoadError } from '../errors/index.js';
|
|
4
4
|
/**
|
|
5
5
|
* Loader that reads configuration from AWS SSM Parameter Store.
|
|
6
6
|
* Supports environment-aware path construction, pagination, and decryption options.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssm-parameter-store.loader.js","sourceRoot":"","sources":["../../../src/loaders/ssm-parameter-store.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAItE,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ssm-parameter-store.loader.js","sourceRoot":"","sources":["../../../src/loaders/ssm-parameter-store.loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.util.js","sourceRoot":"","sources":["../../../src/utils/validation.util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"validation.util.js","sourceRoot":"","sources":["../../../src/utils/validation.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ export declare class SecretsManagerLoader implements ConfigLoader {
|
|
|
34
34
|
constructor(config?: SecretsManagerLoaderConfig);
|
|
35
35
|
/**
|
|
36
36
|
* Get the name of this loader for logging and debugging.
|
|
37
|
-
* @returns The loader name with secret path
|
|
37
|
+
* @returns The loader name with secret path or base secret name if path cannot be built
|
|
38
38
|
*/
|
|
39
39
|
getName(): string;
|
|
40
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets-manager.loader.d.ts","sourceRoot":"","sources":["../../../src/loaders/secrets-manager.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAG9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAGjG;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACjD,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAC;IACjE,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEvB,MAAM,GAAE,0BAA+B;IAsBnD;;;OAGG;IACH,OAAO,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"secrets-manager.loader.d.ts","sourceRoot":"","sources":["../../../src/loaders/secrets-manager.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAG9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAGjG;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACjD,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAC;IACjE,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEvB,MAAM,GAAE,0BAA+B;IAsBnD;;;OAGG;IACH,OAAO,IAAI,MAAM;IAYjB;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAerC;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAoE9C;;;OAGG;IACH,eAAe,IAAI,MAAM;IAczB;;;OAGG;IACH,SAAS,IAAI,MAAM;IAInB;;;OAGG;IACH,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGhD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ZodType, ZodError, TypeOf } from 'zod';
|
|
2
|
-
import { ValidationError } from '../errors';
|
|
2
|
+
import { ValidationError } from '../errors/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Framework-agnostic validation utility for configuration values.
|
|
5
5
|
* Provides methods for validating configuration objects against Zod schemas.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.util.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"validation.util.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,OAAO,EAC/B,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,CAAC,CAAC;IAeZ;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,OAAO,EACnC,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,OAAO,GACb;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,eAAe,CAAA;KAAE;IAalF;;;;OAIG;IACH,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IA+BvD;;;;;OAKG;IACH,MAAM,CAAC,0BAA0B,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAmB5E;;;;;;;OAOG;IACH,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS,OAAO,EAC5C,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,GACb,MAAM,CAAC,CAAC,CAAC;CAYb"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dyanet/config-aws",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Framework-agnostic AWS configuration management with support for environment variables, AWS Secrets Manager, SSM Parameter Store, S3, and .env files",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"author": "Dyanet",
|
|
46
46
|
"license": "MIT",
|
|
47
47
|
"engines": {
|
|
48
|
-
"node": ">=
|
|
49
|
-
"npm": ">=
|
|
48
|
+
"node": ">=20.0.0",
|
|
49
|
+
"npm": ">=10.0.0"
|
|
50
50
|
},
|
|
51
51
|
"publishConfig": {
|
|
52
52
|
"access": "public",
|
|
@@ -75,23 +75,20 @@
|
|
|
75
75
|
"@aws-sdk/client-s3": "^3.0.0",
|
|
76
76
|
"@types/jest": "^29.5.0",
|
|
77
77
|
"@types/node": "^20.0.0",
|
|
78
|
-
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
79
|
-
"@typescript-eslint/parser": "^6.21.0",
|
|
80
78
|
"aws-sdk-client-mock": "^4.0.0",
|
|
81
|
-
"eslint": "^8.0.0",
|
|
82
79
|
"fast-check": "^3.15.0",
|
|
83
80
|
"jest": "^29.5.0",
|
|
84
|
-
"rimraf": "^
|
|
81
|
+
"rimraf": "^6.0.0",
|
|
85
82
|
"ts-jest": "^29.1.0",
|
|
86
83
|
"typescript": "^5.9.2",
|
|
87
84
|
"zod": "^3.22.0"
|
|
88
85
|
},
|
|
89
86
|
"repository": {
|
|
90
87
|
"type": "git",
|
|
91
|
-
"url": "https://github.com/dyanet/
|
|
88
|
+
"url": "https://github.com/dyanet/config-aws.git"
|
|
92
89
|
},
|
|
93
90
|
"bugs": {
|
|
94
|
-
"url": "https://github.com/dyanet/
|
|
91
|
+
"url": "https://github.com/dyanet/config-aws/issues"
|
|
95
92
|
},
|
|
96
|
-
"homepage": "https://github.com/dyanet/
|
|
93
|
+
"homepage": "https://github.com/dyanet/config-aws/tree/main/packages/config-aws"
|
|
97
94
|
}
|