@itgorillaz/configify 1.2.5 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -5
- package/dist/src/configify.module.d.ts +2 -2
- package/dist/src/configify.module.js +4 -5
- package/dist/src/configify.module.js.map +1 -1
- package/dist/src/configuration/configuration-options.interface.d.ts +2 -2
- package/dist/src/configuration/configuration-options.interface.js +2 -2
- package/dist/src/configuration/configuration-options.interface.js.map +1 -1
- package/dist/src/decorators/value.decorator.d.ts +2 -1
- package/dist/src/decorators/value.decorator.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/configify.module.ts +14 -12
- package/src/configuration/configuration-options.interface.ts +2 -2
- package/src/decorators/value.decorator.ts +11 -1
package/README.md
CHANGED
|
@@ -83,12 +83,12 @@ export class DatabaseConfiguration {
|
|
|
83
83
|
host: string;
|
|
84
84
|
|
|
85
85
|
@Value('database.port', {
|
|
86
|
-
parse:
|
|
86
|
+
parse: parseInt
|
|
87
87
|
})
|
|
88
88
|
port: number;
|
|
89
89
|
|
|
90
90
|
@Value('database.metadata', {
|
|
91
|
-
parse:
|
|
91
|
+
parse: JSON.parse
|
|
92
92
|
})
|
|
93
93
|
metadata: MetadataType;
|
|
94
94
|
}
|
|
@@ -138,7 +138,7 @@ export class AppService {
|
|
|
138
138
|
|
|
139
139
|
### Variables Expansion
|
|
140
140
|
|
|
141
|
-
You can make use of variable
|
|
141
|
+
You can make use of variable expansion in your configuration files:
|
|
142
142
|
|
|
143
143
|
```
|
|
144
144
|
MY_API_KEY=${MY_SECRET} // --> MY_API_KEY=TEST
|
|
@@ -147,6 +147,24 @@ MY_SECRET=TEST
|
|
|
147
147
|
APP_CLIENT_ID=${NON_EXISTING_ENV:-DEFAULT_ID} // --> APP_CLIENT_ID=DEFAULT_ID
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
+
### Defining Default Configuration Values
|
|
151
|
+
|
|
152
|
+
Other than defining default values with variables expansion, you can also define a default value to an attribute using the `default` option provided by the `@Value()` decorator:
|
|
153
|
+
|
|
154
|
+
```js
|
|
155
|
+
@Configuration()
|
|
156
|
+
export class DatabaseConfiguration {
|
|
157
|
+
@Value('DB_HOST', { default: 'localhost' })
|
|
158
|
+
host: string;
|
|
159
|
+
|
|
160
|
+
@Value('DB_PORT', {
|
|
161
|
+
parse: parseInt,
|
|
162
|
+
default: 3306
|
|
163
|
+
})
|
|
164
|
+
port: number;
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
150
168
|
### Dealing with Secrets
|
|
151
169
|
|
|
152
170
|
Out of the box, this module can resolve AWS Secrets Manager and Parameter Store secrets.
|
|
@@ -212,7 +230,7 @@ export interface MyDBConfig {
|
|
|
212
230
|
@Configuration()
|
|
213
231
|
export class SuperSecretConfiguration {
|
|
214
232
|
@Value('db-json-config', {
|
|
215
|
-
parse:
|
|
233
|
+
parse: JSON.parse
|
|
216
234
|
})
|
|
217
235
|
myDbConfig: MyDBConfig;
|
|
218
236
|
}
|
|
@@ -237,7 +255,7 @@ export class MyConfiguration {
|
|
|
237
255
|
|
|
238
256
|
### Overwrite Default Options
|
|
239
257
|
|
|
240
|
-
You can overwrite default module
|
|
258
|
+
You can overwrite default module options by providing an object as argument to the `forRootAsync()` method:
|
|
241
259
|
|
|
242
260
|
```js
|
|
243
261
|
/**
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { DynamicModule } from '@nestjs/common';
|
|
2
|
-
import {
|
|
2
|
+
import { ConfigifyModuleOptions } from './configuration';
|
|
3
3
|
export declare class ConfigifyModule {
|
|
4
4
|
private static readonly DEFAULT_CONFIG_FILES;
|
|
5
5
|
private static readonly SECRETS_RESOLVER_PIPELINE;
|
|
6
|
-
static forRootAsync(options?:
|
|
6
|
+
static forRootAsync(options?: ConfigifyModuleOptions): Promise<DynamicModule>;
|
|
7
7
|
private static runSecretsResolverPipeline;
|
|
8
8
|
private static buildConfigurationProviders;
|
|
9
9
|
private static flattenObjectKeys;
|
|
@@ -19,7 +19,7 @@ const parameter_store_configuration_resolver_1 = require("./configuration/resolv
|
|
|
19
19
|
const variables_1 = require("./interpolation/variables");
|
|
20
20
|
let ConfigifyModule = ConfigifyModule_1 = class ConfigifyModule {
|
|
21
21
|
static async forRootAsync(options = {}) {
|
|
22
|
-
const settings = Object.assign(Object.assign({}, options), configuration_1.
|
|
22
|
+
const settings = Object.assign(Object.assign({}, options), configuration_1.DefaultConfigifyModuleOptions);
|
|
23
23
|
const files = this.resolveConfigurationFiles(settings.configFilePath);
|
|
24
24
|
const envVars = settings.ignoreEnvVars ? {} : process.env;
|
|
25
25
|
const fromFile = settings.ignoreConfigFile
|
|
@@ -51,7 +51,7 @@ let ConfigifyModule = ConfigifyModule_1 = class ConfigifyModule {
|
|
|
51
51
|
return secrets;
|
|
52
52
|
}
|
|
53
53
|
static buildConfigurationProviders() {
|
|
54
|
-
var _a;
|
|
54
|
+
var _a, _b;
|
|
55
55
|
const exports = [];
|
|
56
56
|
const providers = [];
|
|
57
57
|
const registry = configuration_1.ConfigurationRegistry.getRegistry();
|
|
@@ -61,9 +61,8 @@ let ConfigifyModule = ConfigifyModule_1 = class ConfigifyModule {
|
|
|
61
61
|
for (const attribute of attributes) {
|
|
62
62
|
const metadata = configuration_1.ConfigurationRegistry.getValueDecoratedKey(instance, attribute);
|
|
63
63
|
const parse = (_a = metadata.options) === null || _a === void 0 ? void 0 : _a.parse;
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
: process.env[metadata.key];
|
|
64
|
+
const defaultValue = process.env[metadata.key] || ((_b = metadata.options) === null || _b === void 0 ? void 0 : _b.default);
|
|
65
|
+
const value = parse ? parse(defaultValue) : defaultValue;
|
|
67
66
|
instance[attribute] = value;
|
|
68
67
|
}
|
|
69
68
|
const errors = (0, class_validator_1.validateSync)(instance);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configify.module.js","sourceRoot":"","sources":["../../src/configify.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,4EAAuE;AACvE,oDAAgD;AAChD,2CAAiE;AACjE,qDAA+C;AAC/C,yBAAyB;AACzB,+BAA+B;AAC/B,mDAOyB;AACzB,iIAA8H;AAC9H,yDAAsD;AAmB/C,IAAM,eAAe,uBAArB,MAAM,eAAe;IA0C1B,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,
|
|
1
|
+
{"version":3,"file":"configify.module.js","sourceRoot":"","sources":["../../src/configify.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
|
|
2
2
|
import { SSMClient } from '@aws-sdk/client-ssm';
|
|
3
|
-
export interface
|
|
3
|
+
export interface ConfigifyModuleOptions {
|
|
4
4
|
ignoreConfigFile?: boolean;
|
|
5
5
|
ignoreEnvVars?: boolean;
|
|
6
6
|
configFilePath?: string | string[];
|
|
@@ -8,4 +8,4 @@ export interface ConfigfyModuleOptions {
|
|
|
8
8
|
secretsManagerClient?: SecretsManagerClient;
|
|
9
9
|
ssmClient?: SSMClient;
|
|
10
10
|
}
|
|
11
|
-
export declare const
|
|
11
|
+
export declare const DefaultConfigifyModuleOptions: ConfigifyModuleOptions;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
3
|
+
exports.DefaultConfigifyModuleOptions = void 0;
|
|
4
|
+
exports.DefaultConfigifyModuleOptions = {
|
|
5
5
|
ignoreConfigFile: false,
|
|
6
6
|
ignoreEnvVars: false,
|
|
7
7
|
expandConfig: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-options.interface.js","sourceRoot":"","sources":["../../../src/configuration/configuration-options.interface.ts"],"names":[],"mappings":";;;AA8Ca,QAAA,
|
|
1
|
+
{"version":3,"file":"configuration-options.interface.js","sourceRoot":"","sources":["../../../src/configuration/configuration-options.interface.ts"],"names":[],"mappings":";;;AA8Ca,QAAA,6BAA6B,GAA2B;IACnE,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,KAAK;IACpB,YAAY,EAAE,IAAI;CACnB,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export declare const VALUE_METADATA: unique symbol;
|
|
2
2
|
export declare const VALUE_PROPERTIES_METADATA: unique symbol;
|
|
3
3
|
export interface ValueOptions {
|
|
4
|
-
parse
|
|
4
|
+
parse?: (value: any) => unknown;
|
|
5
|
+
default?: any;
|
|
5
6
|
}
|
|
6
7
|
export interface ValueDecoratedKey {
|
|
7
8
|
key: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value.decorator.js","sourceRoot":"","sources":["../../../src/decorators/value.decorator.ts"],"names":[],"mappings":";;;AAAA,oFAAgF;AAKnE,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAKzC,QAAA,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"value.decorator.js","sourceRoot":"","sources":["../../../src/decorators/value.decorator.ts"],"names":[],"mappings":";;;AAAA,oFAAgF;AAKnE,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAKzC,QAAA,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAsC/D,MAAM,KAAK,GAAG,CACnB,GAAW,EACX,OAAsB,EACH,EAAE;IACrB,OAAO,CAAC,MAAc,EAAE,QAAyB,EAAE,EAAE;QACnD,8CAAqB,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1D,OAAO,CAAC,cAAc,CAAC,sBAAc,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,KAAK,SAQhB"}
|